diff --git a/backend/apps/tools_lib/tools_lib.py b/backend/apps/tools_lib/tools_lib.py index aac206ec..d43a8eab 100644 --- a/backend/apps/tools_lib/tools_lib.py +++ b/backend/apps/tools_lib/tools_lib.py @@ -517,13 +517,37 @@ def derive_mcp_config(tool: ToolDefinition) -> Optional[dict]: if pkg_name: _backend = os.path.dirname(os.path.dirname(os.path.dirname(os.path.abspath(__file__)))) electron_path = os.environ.get("OPENSWARM_ELECTRON_PATH") - # Check for single-file bundle first (e.g. reddit-mcp-buddy) - bundle_path = os.path.join(_backend, "mcp-bundles", f"{pkg_name}.js") - if os.path.isfile(bundle_path) and electron_path: + # Two bundle layouts in mcp-bundles/, checked in priority order: + # + # 1. Multi-file bundle dir: mcp-bundles//dist/index.js + # Used when the SDK reads sibling files at runtime. + # Examples: @softeria/ms-365-mcp-server reads + # ../package.json for --version and dist/endpoints.json + # for Graph API definitions; @notionhq/notion-mcp-server + # reads ../scripts/notion-openapi.json. The build script + # ships a stripped package.json (no "type":"module") next + # to dist/ so __dirname/../package.json resolves correctly. + # See scripts/build-app.sh `build_mcp_bundle_dir`. + # + # 2. Single-file bundle: mcp-bundles/.js + # Used when the SDK is fully self-contained + # (reddit-mcp-buddy). + # + # Scoped names get flattened ("@softeria/ms-365-mcp-server" + # -> "softeria-ms-365-mcp-server") for filesystem safety. + safe_bundle = pkg_name.replace("/", "-").replace("@", "") + bundle_dir_path = os.path.join(_backend, "mcp-bundles", safe_bundle, "dist", "index.js") + bundle_file_path = os.path.join(_backend, "mcp-bundles", f"{safe_bundle}.js") + bundle_path = None + if os.path.isfile(bundle_dir_path): + bundle_path = bundle_dir_path + elif os.path.isfile(bundle_file_path): + bundle_path = bundle_file_path + if bundle_path and electron_path: config["command"] = electron_path config["args"] = [bundle_path] config.setdefault("env", {})["ELECTRON_RUN_AS_NODE"] = "1" - logger.info(f"Using bundled MCP server for {pkg_name}") + logger.info(f"Using bundled MCP server for {pkg_name} ({bundle_path})") else: # Check for pre-installed npm package (works in both dev and packaged modes) safe_dir = pkg_name.replace("/", "-").replace("@", "") diff --git a/backend/mcp-bundles/notionhq-notion-mcp-server/dist/index.js b/backend/mcp-bundles/notionhq-notion-mcp-server/dist/index.js new file mode 100755 index 00000000..bf038a44 --- /dev/null +++ b/backend/mcp-bundles/notionhq-notion-mcp-server/dist/index.js @@ -0,0 +1,21056 @@ +#!/usr/bin/env node +const __OPENSWARM_IMPORT_META_URL__ = require("url").pathToFileURL(__filename).href; +var __create = Object.create; +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __getProtoOf = Object.getPrototypeOf; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps( + // If the importer is in node compatibility mode or this is not an ESM + // file that has been converted to a CommonJS file using a Babel- + // compatible transform (i.e. "__esModule" has not been set), then set + // "default" to the CommonJS "module.exports" for node compatibility. + isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target, + mod +)); +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); + +// node_modules/@notionhq/notion-mcp-server/bin/cli.mjs +var cli_exports = {}; +__export(cli_exports, { + startServer: () => ese +}); +module.exports = __toCommonJS(cli_exports); +var import_module = require("module"); +var import_node_path = __toESM(require("node:path"), 1); +var import_url = require("url"); +var import_node_process = __toESM(require("node:process"), 1); +var import_http2 = require("http2"); +var import_http22 = require("http2"); +var import_stream = require("stream"); +var import_crypto = __toESM(require("crypto"), 1); +var import_node_crypto = require("node:crypto"); +var import_node_fs = __toESM(require("node:fs"), 1); +var import_node_os = __toESM(require("node:os"), 1); +var import_node_fs2 = __toESM(require("node:fs"), 1); +var import_node_path2 = __toESM(require("node:path"), 1); +var import_fs = __toESM(require("fs"), 1); +var require2 = (0, import_module.createRequire)(__OPENSWARM_IMPORT_META_URL__); +var pN = Object.create; +var Om = Object.defineProperty; +var dN = Object.getOwnPropertyDescriptor; +var fN = Object.getOwnPropertyNames; +var mN = Object.getPrototypeOf; +var hN = Object.prototype.hasOwnProperty; +var O = ((e21) => typeof require2 < "u" ? require2 : typeof Proxy < "u" ? new Proxy(e21, { get: (t, r) => (typeof require2 < "u" ? require2 : t)[r] }) : e21)(function(e21) { + if (typeof require2 < "u") return require2.apply(this, arguments); + throw Error('Dynamic require of "' + e21 + '" is not supported'); +}); +var g = (e21, t) => () => (t || e21((t = { exports: {} }).exports, t), t.exports); +var ns = (e21, t) => { + for (var r in t) Om(e21, r, { get: t[r], enumerable: true }); +}; +var vN = (e21, t, r, n) => { + if (t && typeof t == "object" || typeof t == "function") for (let i of fN(t)) !hN.call(e21, i) && i !== r && Om(e21, i, { get: () => t[i], enumerable: !(n = dN(t, i)) || n.enumerable }); + return e21; +}; +var is = (e21, t, r) => (r = e21 != null ? pN(mN(e21)) : {}, vN(t || !e21 || !e21.__esModule ? Om(r, "default", { value: e21, enumerable: true }) : r, e21)); +var Ar = g((_pe, Xk) => { + var C3 = O("path").relative; + Xk.exports = L3; + var N3 = process.cwd(); + function Wk(e21, t) { + for (var r = e21.split(/[ ,]+/), n = String(t).toLowerCase(), i = 0; i < r.length; i++) { + var o = r[i]; + if (o && (o === "*" || o.toLowerCase() === n)) return true; + } + return false; + } + function D3(e21, t, r) { + var n = Object.getOwnPropertyDescriptor(e21, t), i = n.value; + return n.get = function() { + return i; + }, n.writable && (n.set = function(a) { + return i = a; + }), delete n.value, delete n.writable, Object.defineProperty(e21, t, n), n; + } + function q3(e21) { + for (var t = "", r = 0; r < e21; r++) t += ", arg" + r; + return t.substr(2); + } + function U3(e21) { + var t = this.name + ": " + this.namespace; + this.message && (t += " deprecated " + this.message); + for (var r = 0; r < e21.length; r++) t += ` + at ` + e21[r].toString(); + return t; + } + function L3(e21) { + if (!e21) throw new TypeError("argument namespace is required"); + var t = Lp(), r = zo(t[1]), n = r[0]; + function i(o) { + Up.call(i, o); + } + return i._file = n, i._ignored = F3(e21), i._namespace = e21, i._traced = Z3(e21), i._warned = /* @__PURE__ */ Object.create(null), i.function = J3, i.property = G3, i; + } + function M3(e21, t) { + var r = typeof e21.listenerCount != "function" ? e21.listeners(t).length : e21.listenerCount(t); + return r > 0; + } + function F3(e21) { + if (process.noDeprecation) return true; + var t = process.env.NO_DEPRECATION || ""; + return Wk(t, e21); + } + function Z3(e21) { + if (process.traceDeprecation) return true; + var t = process.env.TRACE_DEPRECATION || ""; + return Wk(t, e21); + } + function Up(e21, t) { + var r = M3(process, "deprecation"); + if (!(!r && this._ignored)) { + var n, i, o, a, s = 0, c = false, u = Lp(), l = this._file; + for (t ? (a = t, o = zo(u[1]), o.name = a.name, l = o[0]) : (s = 2, a = zo(u[s]), o = a); s < u.length; s++) if (n = zo(u[s]), i = n[0], i === l) c = true; + else if (i === this._file) l = this._file; + else if (c) break; + var p = n ? a.join(":") + "__" + n.join(":") : void 0; + if (!(p !== void 0 && p in this._warned)) { + this._warned[p] = true; + var d = e21; + if (d || (d = o === a || !o.name ? Gk(a) : Gk(o)), r) { + var f = Kk(this._namespace, d, u.slice(s)); + process.emit("deprecation", f); + return; + } + var m = process.stderr.isTTY ? V3 : B3, h = m.call(this, d, n, u.slice(s)); + process.stderr.write(h + ` +`, "utf8"); + } + } + } + function zo(e21) { + var t = e21.getFileName() || "", r = e21.getLineNumber(), n = e21.getColumnNumber(); + e21.isEval() && (t = e21.getEvalOrigin() + ", " + t); + var i = [t, r, n]; + return i.callSite = e21, i.name = e21.getFunctionName(), i; + } + function Gk(e21) { + var t = e21.callSite, r = e21.name; + r || (r = ""); + var n = t.getThis(), i = n && t.getTypeName(); + return i === "Object" && (i = void 0), i === "Function" && (i = n.name || i), i && t.getMethodName() ? i + "." + r : r; + } + function B3(e21, t, r) { + var n = (/* @__PURE__ */ new Date()).toUTCString(), i = n + " " + this._namespace + " deprecated " + e21; + if (this._traced) { + for (var o = 0; o < r.length; o++) i += ` + at ` + r[o].toString(); + return i; + } + return t && (i += " at " + gy(t)), i; + } + function V3(e21, t, r) { + var n = "\x1B[36;1m" + this._namespace + "\x1B[22;39m \x1B[33;1mdeprecated\x1B[22;39m \x1B[0m" + e21 + "\x1B[39m"; + if (this._traced) { + for (var i = 0; i < r.length; i++) n += ` + \x1B[36mat ` + r[i].toString() + "\x1B[39m"; + return n; + } + return t && (n += " \x1B[36m" + gy(t) + "\x1B[39m"), n; + } + function gy(e21) { + return C3(N3, e21[0]) + ":" + e21[1] + ":" + e21[2]; + } + function Lp() { + var e21 = Error.stackTraceLimit, t = {}, r = Error.prepareStackTrace; + Error.prepareStackTrace = H3, Error.stackTraceLimit = Math.max(10, e21), Error.captureStackTrace(t); + var n = t.stack.slice(1); + return Error.prepareStackTrace = r, Error.stackTraceLimit = e21, n; + } + function H3(e21, t) { + return t; + } + function J3(e21, t) { + if (typeof e21 != "function") throw new TypeError("argument fn must be a function"); + var r = q3(e21.length), n = Lp(), i = zo(n[1]); + i.name = e21.name; + var o = new Function("fn", "log", "deprecate", "message", "site", `"use strict" +return function (` + r + `) {log.call(deprecate, message, site) +return fn.apply(this, arguments) +}`)(e21, Up, this, t, i); + return o; + } + function G3(e21, t, r) { + if (!e21 || typeof e21 != "object" && typeof e21 != "function") throw new TypeError("argument obj must be object"); + var n = Object.getOwnPropertyDescriptor(e21, t); + if (!n) throw new TypeError("must call property on owner object"); + if (!n.configurable) throw new TypeError("property must be configurable"); + var i = this, o = Lp(), a = zo(o[1]); + a.name = t, "value" in n && (n = D3(e21, t, r)); + var s = n.get, c = n.set; + typeof s == "function" && (n.get = function() { + return Up.call(i, r, a), s.apply(this, arguments); + }), typeof c == "function" && (n.set = function() { + return Up.call(i, r, a), c.apply(this, arguments); + }), Object.defineProperty(e21, t, n); + } + function Kk(e21, t, r) { + var n = new Error(), i; + return Object.defineProperty(n, "constructor", { value: Kk }), Object.defineProperty(n, "message", { configurable: true, enumerable: false, value: t, writable: true }), Object.defineProperty(n, "name", { enumerable: false, configurable: true, value: "DeprecationError", writable: true }), Object.defineProperty(n, "namespace", { configurable: true, enumerable: false, value: e21, writable: true }), Object.defineProperty(n, "stack", { configurable: true, enumerable: false, get: function() { + return i !== void 0 ? i : i = U3.call(this, r); + }, set: function(a) { + i = a; + } }), n; + } +}); +var Po = g((wpe, Mp) => { + "use strict"; + Mp.exports = Y3; + Mp.exports.format = Yk; + Mp.exports.parse = Qk; + var W3 = /\B(?=(\d{3})+(?!\d))/g, K3 = /(?:\.0*|(\.[^0]+)0+)$/, Zn = { b: 1, kb: 1024, mb: 1 << 20, gb: 1 << 30, tb: Math.pow(1024, 4), pb: Math.pow(1024, 5) }, X3 = /^((-|\+)?(\d+(?:\.\d+)?)) *(kb|mb|gb|tb|pb)$/i; + function Y3(e21, t) { + return typeof e21 == "string" ? Qk(e21) : typeof e21 == "number" ? Yk(e21, t) : null; + } + function Yk(e21, t) { + if (!Number.isFinite(e21)) return null; + var r = Math.abs(e21), n = t && t.thousandsSeparator || "", i = t && t.unitSeparator || "", o = t && t.decimalPlaces !== void 0 ? t.decimalPlaces : 2, a = !!(t && t.fixedDecimals), s = t && t.unit || ""; + (!s || !Zn[s.toLowerCase()]) && (r >= Zn.pb ? s = "PB" : r >= Zn.tb ? s = "TB" : r >= Zn.gb ? s = "GB" : r >= Zn.mb ? s = "MB" : r >= Zn.kb ? s = "KB" : s = "B"); + var c = e21 / Zn[s.toLowerCase()], u = c.toFixed(o); + return a || (u = u.replace(K3, "$1")), n && (u = u.split(".").map(function(l, p) { + return p === 0 ? l.replace(W3, n) : l; + }).join(".")), u + i + s; + } + function Qk(e21) { + if (typeof e21 == "number" && !isNaN(e21)) return e21; + if (typeof e21 != "string") return null; + var t = X3.exec(e21), r, n = "b"; + return t ? (r = parseFloat(t[1]), n = t[4].toLowerCase()) : (r = parseInt(e21, 10), n = "b"), isNaN(r) ? null : Math.floor(Zn[n] * r); + } +}); +var ic = g((yy) => { + "use strict"; + var eE = /; *([!#$%&'*+.^_`|~0-9A-Za-z-]+) *= *("(?:[\u000b\u0020\u0021\u0023-\u005b\u005d-\u007e\u0080-\u00ff]|\\[\u000b\u0020-\u00ff])*"|[!#$%&'*+.^_`|~0-9A-Za-z-]+) */g, Q3 = /^[\u000b\u0020-\u007e\u0080-\u00ff]+$/, tE = /^[!#$%&'*+.^_`|~0-9A-Za-z-]+$/, e52 = /\\([\u000b\u0020-\u00ff])/g, t5 = /([\\"])/g, rE = /^[!#$%&'*+.^_`|~0-9A-Za-z-]+\/[!#$%&'*+.^_`|~0-9A-Za-z-]+$/; + yy.format = r5; + yy.parse = n5; + function r5(e21) { + if (!e21 || typeof e21 != "object") throw new TypeError("argument obj is required"); + var t = e21.parameters, r = e21.type; + if (!r || !rE.test(r)) throw new TypeError("invalid type"); + var n = r; + if (t && typeof t == "object") for (var i, o = Object.keys(t).sort(), a = 0; a < o.length; a++) { + if (i = o[a], !tE.test(i)) throw new TypeError("invalid parameter name"); + n += "; " + i + "=" + o5(t[i]); + } + return n; + } + function n5(e21) { + if (!e21) throw new TypeError("argument string is required"); + var t = typeof e21 == "object" ? i5(e21) : e21; + if (typeof t != "string") throw new TypeError("argument string is required to be a string"); + var r = t.indexOf(";"), n = r !== -1 ? t.slice(0, r).trim() : t.trim(); + if (!rE.test(n)) throw new TypeError("invalid media type"); + var i = new a5(n.toLowerCase()); + if (r !== -1) { + var o, a, s; + for (eE.lastIndex = r; a = eE.exec(t); ) { + if (a.index !== r) throw new TypeError("invalid parameter format"); + r += a[0].length, o = a[1].toLowerCase(), s = a[2], s.charCodeAt(0) === 34 && (s = s.slice(1, -1), s.indexOf("\\") !== -1 && (s = s.replace(e52, "$1"))), i.parameters[o] = s; + } + if (r !== t.length) throw new TypeError("invalid parameter format"); + } + return i; + } + function i5(e21) { + var t; + if (typeof e21.getHeader == "function" ? t = e21.getHeader("content-type") : typeof e21.headers == "object" && (t = e21.headers && e21.headers["content-type"]), typeof t != "string") throw new TypeError("content-type header is missing from object"); + return t; + } + function o5(e21) { + var t = String(e21); + if (tE.test(t)) return t; + if (t.length > 0 && !Q3.test(t)) throw new TypeError("invalid parameter value"); + return '"' + t.replace(t5, "\\$1") + '"'; + } + function a5(e21) { + this.parameters = /* @__PURE__ */ Object.create(null), this.type = e21; + } +}); +var jo = g((Spe, nE) => { + "use strict"; + nE.exports = Object.setPrototypeOf || ({ __proto__: [] } instanceof Array ? s5 : c5); + function s5(e21, t) { + return e21.__proto__ = t, e21; + } + function c5(e21, t) { + for (var r in t) Object.prototype.hasOwnProperty.call(e21, r) || (e21[r] = t[r]); + return e21; + } +}); +var iE = g((kpe, u5) => { + u5.exports = { "100": "Continue", "101": "Switching Protocols", "102": "Processing", "103": "Early Hints", "200": "OK", "201": "Created", "202": "Accepted", "203": "Non-Authoritative Information", "204": "No Content", "205": "Reset Content", "206": "Partial Content", "207": "Multi-Status", "208": "Already Reported", "226": "IM Used", "300": "Multiple Choices", "301": "Moved Permanently", "302": "Found", "303": "See Other", "304": "Not Modified", "305": "Use Proxy", "307": "Temporary Redirect", "308": "Permanent Redirect", "400": "Bad Request", "401": "Unauthorized", "402": "Payment Required", "403": "Forbidden", "404": "Not Found", "405": "Method Not Allowed", "406": "Not Acceptable", "407": "Proxy Authentication Required", "408": "Request Timeout", "409": "Conflict", "410": "Gone", "411": "Length Required", "412": "Precondition Failed", "413": "Payload Too Large", "414": "URI Too Long", "415": "Unsupported Media Type", "416": "Range Not Satisfiable", "417": "Expectation Failed", "418": "I'm a Teapot", "421": "Misdirected Request", "422": "Unprocessable Entity", "423": "Locked", "424": "Failed Dependency", "425": "Too Early", "426": "Upgrade Required", "428": "Precondition Required", "429": "Too Many Requests", "431": "Request Header Fields Too Large", "451": "Unavailable For Legal Reasons", "500": "Internal Server Error", "501": "Not Implemented", "502": "Bad Gateway", "503": "Service Unavailable", "504": "Gateway Timeout", "505": "HTTP Version Not Supported", "506": "Variant Also Negotiates", "507": "Insufficient Storage", "508": "Loop Detected", "509": "Bandwidth Limit Exceeded", "510": "Not Extended", "511": "Network Authentication Required" }; +}); +var sE = g((Epe, aE) => { + "use strict"; + var xy = iE(); + aE.exports = Rr; + Rr.message = xy; + Rr.code = l5(xy); + Rr.codes = p5(xy); + Rr.redirect = { 300: true, 301: true, 302: true, 303: true, 305: true, 307: true, 308: true }; + Rr.empty = { 204: true, 205: true, 304: true }; + Rr.retry = { 502: true, 503: true, 504: true }; + function l5(e21) { + var t = {}; + return Object.keys(e21).forEach(function(n) { + var i = e21[n], o = Number(n); + t[i.toLowerCase()] = o; + }), t; + } + function p5(e21) { + return Object.keys(e21).map(function(r) { + return Number(r); + }); + } + function d5(e21) { + var t = e21.toLowerCase(); + if (!Object.prototype.hasOwnProperty.call(Rr.code, t)) throw new Error('invalid status message: "' + e21 + '"'); + return Rr.code[t]; + } + function oE(e21) { + if (!Object.prototype.hasOwnProperty.call(Rr.message, e21)) throw new Error("invalid status code: " + e21); + return Rr.message[e21]; + } + function Rr(e21) { + if (typeof e21 == "number") return oE(e21); + if (typeof e21 != "string") throw new TypeError("code must be a number or string"); + var t = parseInt(e21, 10); + return isNaN(t) ? d5(e21) : oE(t); + } +}); +var cE = g((Ope, by) => { + typeof Object.create == "function" ? by.exports = function(t, r) { + r && (t.super_ = r, t.prototype = Object.create(r.prototype, { constructor: { value: t, enumerable: false, writable: true, configurable: true } })); + } : by.exports = function(t, r) { + if (r) { + t.super_ = r; + var n = function() { + }; + n.prototype = r.prototype, t.prototype = new n(), t.prototype.constructor = t; + } + }; +}); +var $y = g((Tpe, wy) => { + try { + if (_y = O("util"), typeof _y.inherits != "function") throw ""; + wy.exports = _y.inherits; + } catch { + wy.exports = cE(); + } + var _y; +}); +var Sy = g((Ipe, uE) => { + "use strict"; + uE.exports = f5; + function f5(e21) { + return e21.split(" ").map(function(t) { + return t.slice(0, 1).toUpperCase() + t.slice(1); + }).join("").replace(/[^ _0-9a-z]/gi, ""); + } +}); +var oc = g((zpe, Ti) => { + "use strict"; + var m5 = Ar()("http-errors"), lE = jo(), Ao = sE(), ky = $y(), h5 = Sy(); + Ti.exports = Fp; + Ti.exports.HttpError = v5(); + Ti.exports.isHttpError = y5(Ti.exports.HttpError); + b5(Ti.exports, Ao.codes, Ti.exports.HttpError); + function pE(e21) { + return +(String(e21).charAt(0) + "00"); + } + function Fp() { + for (var e21, t, r = 500, n = {}, i = 0; i < arguments.length; i++) { + var o = arguments[i], a = typeof o; + if (a === "object" && o instanceof Error) e21 = o, r = e21.status || e21.statusCode || r; + else if (a === "number" && i === 0) r = o; + else if (a === "string") t = o; + else if (a === "object") n = o; + else throw new TypeError("argument #" + (i + 1) + " unsupported type " + a); + } + typeof r == "number" && (r < 400 || r >= 600) && m5("non-error status code; use only 4xx or 5xx status codes"), (typeof r != "number" || !Ao.message[r] && (r < 400 || r >= 600)) && (r = 500); + var s = Fp[r] || Fp[pE(r)]; + e21 || (e21 = s ? new s(t) : new Error(t || Ao.message[r]), Error.captureStackTrace(e21, Fp)), (!s || !(e21 instanceof s) || e21.status !== r) && (e21.expose = r < 500, e21.status = e21.statusCode = r); + for (var c in n) c !== "status" && c !== "statusCode" && (e21[c] = n[c]); + return e21; + } + function v5() { + function e21() { + throw new TypeError("cannot construct abstract class"); + } + return ky(e21, Error), e21; + } + function g5(e21, t, r) { + var n = fE(t); + function i(o) { + var a = o ?? Ao.message[r], s = new Error(a); + return Error.captureStackTrace(s, i), lE(s, i.prototype), Object.defineProperty(s, "message", { enumerable: true, configurable: true, value: a, writable: true }), Object.defineProperty(s, "name", { enumerable: false, configurable: true, value: n, writable: true }), s; + } + return ky(i, e21), dE(i, n), i.prototype.status = r, i.prototype.statusCode = r, i.prototype.expose = true, i; + } + function y5(e21) { + return function(r) { + return !r || typeof r != "object" ? false : r instanceof e21 ? true : r instanceof Error && typeof r.expose == "boolean" && typeof r.statusCode == "number" && r.status === r.statusCode; + }; + } + function x5(e21, t, r) { + var n = fE(t); + function i(o) { + var a = o ?? Ao.message[r], s = new Error(a); + return Error.captureStackTrace(s, i), lE(s, i.prototype), Object.defineProperty(s, "message", { enumerable: true, configurable: true, value: a, writable: true }), Object.defineProperty(s, "name", { enumerable: false, configurable: true, value: n, writable: true }), s; + } + return ky(i, e21), dE(i, n), i.prototype.status = r, i.prototype.statusCode = r, i.prototype.expose = false, i; + } + function dE(e21, t) { + var r = Object.getOwnPropertyDescriptor(e21, "name"); + r && r.configurable && (r.value = t, Object.defineProperty(e21, "name", r)); + } + function b5(e21, t, r) { + t.forEach(function(i) { + var o, a = h5(Ao.message[i]); + switch (pE(i)) { + case 400: + o = g5(r, a, i); + break; + case 500: + o = x5(r, a, i); + break; + } + o && (e21[i] = o, e21[a] = o); + }); + } + function fE(e21) { + return e21.slice(-5) === "Error" ? e21 : e21 + "Error"; + } +}); +var hE = g((Ppe, mE) => { + var ac = 1e3, sc = ac * 60, cc = sc * 60, uc = cc * 24, _5 = uc * 365.25; + mE.exports = function(e21, t) { + t = t || {}; + var r = typeof e21; + if (r === "string" && e21.length > 0) return w5(e21); + if (r === "number" && isNaN(e21) === false) return t.long ? S5(e21) : $5(e21); + throw new Error("val is not a non-empty string or a valid number. val=" + JSON.stringify(e21)); + }; + function w5(e21) { + if (e21 = String(e21), !(e21.length > 100)) { + var t = /^((?:\d+)?\.?\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|years?|yrs?|y)?$/i.exec(e21); + if (t) { + var r = parseFloat(t[1]), n = (t[2] || "ms").toLowerCase(); + switch (n) { + case "years": + case "year": + case "yrs": + case "yr": + case "y": + return r * _5; + case "days": + case "day": + case "d": + return r * uc; + case "hours": + case "hour": + case "hrs": + case "hr": + case "h": + return r * cc; + case "minutes": + case "minute": + case "mins": + case "min": + case "m": + return r * sc; + case "seconds": + case "second": + case "secs": + case "sec": + case "s": + return r * ac; + case "milliseconds": + case "millisecond": + case "msecs": + case "msec": + case "ms": + return r; + default: + return; + } + } + } + } + function $5(e21) { + return e21 >= uc ? Math.round(e21 / uc) + "d" : e21 >= cc ? Math.round(e21 / cc) + "h" : e21 >= sc ? Math.round(e21 / sc) + "m" : e21 >= ac ? Math.round(e21 / ac) + "s" : e21 + "ms"; + } + function S5(e21) { + return Zp(e21, uc, "day") || Zp(e21, cc, "hour") || Zp(e21, sc, "minute") || Zp(e21, ac, "second") || e21 + " ms"; + } + function Zp(e21, t, r) { + if (!(e21 < t)) return e21 < t * 1.5 ? Math.floor(e21 / t) + " " + r : Math.ceil(e21 / t) + " " + r + "s"; + } +}); +var Ty = g((ye, vE) => { + ye = vE.exports = Oy.debug = Oy.default = Oy; + ye.coerce = I5; + ye.disable = O5; + ye.enable = E5; + ye.enabled = T5; + ye.humanize = hE(); + ye.names = []; + ye.skips = []; + ye.formatters = {}; + var Ey; + function k5(e21) { + var t = 0, r; + for (r in e21) t = (t << 5) - t + e21.charCodeAt(r), t |= 0; + return ye.colors[Math.abs(t) % ye.colors.length]; + } + function Oy(e21) { + function t() { + if (t.enabled) { + var r = t, n = +/* @__PURE__ */ new Date(), i = n - (Ey || n); + r.diff = i, r.prev = Ey, r.curr = n, Ey = n; + for (var o = new Array(arguments.length), a = 0; a < o.length; a++) o[a] = arguments[a]; + o[0] = ye.coerce(o[0]), typeof o[0] != "string" && o.unshift("%O"); + var s = 0; + o[0] = o[0].replace(/%([a-zA-Z%])/g, function(u, l) { + if (u === "%%") return u; + s++; + var p = ye.formatters[l]; + if (typeof p == "function") { + var d = o[s]; + u = p.call(r, d), o.splice(s, 1), s--; + } + return u; + }), ye.formatArgs.call(r, o); + var c = t.log || ye.log || console.log.bind(console); + c.apply(r, o); + } + } + return t.namespace = e21, t.enabled = ye.enabled(e21), t.useColors = ye.useColors(), t.color = k5(e21), typeof ye.init == "function" && ye.init(t), t; + } + function E5(e21) { + ye.save(e21), ye.names = [], ye.skips = []; + for (var t = (typeof e21 == "string" ? e21 : "").split(/[\s,]+/), r = t.length, n = 0; n < r; n++) t[n] && (e21 = t[n].replace(/\*/g, ".*?"), e21[0] === "-" ? ye.skips.push(new RegExp("^" + e21.substr(1) + "$")) : ye.names.push(new RegExp("^" + e21 + "$"))); + } + function O5() { + ye.enable(""); + } + function T5(e21) { + var t, r; + for (t = 0, r = ye.skips.length; t < r; t++) if (ye.skips[t].test(e21)) return false; + for (t = 0, r = ye.names.length; t < r; t++) if (ye.names[t].test(e21)) return true; + return false; + } + function I5(e21) { + return e21 instanceof Error ? e21.stack || e21.message : e21; + } +}); +var xE = g((Nt, yE) => { + Nt = yE.exports = Ty(); + Nt.log = j5; + Nt.formatArgs = P5; + Nt.save = A5; + Nt.load = gE; + Nt.useColors = z5; + Nt.storage = typeof chrome < "u" && typeof chrome.storage < "u" ? chrome.storage.local : R5(); + Nt.colors = ["lightseagreen", "forestgreen", "goldenrod", "dodgerblue", "darkorchid", "crimson"]; + function z5() { + return typeof window < "u" && window.process && window.process.type === "renderer" ? true : typeof document < "u" && document.documentElement && document.documentElement.style && document.documentElement.style.WebkitAppearance || typeof window < "u" && window.console && (window.console.firebug || window.console.exception && window.console.table) || typeof navigator < "u" && navigator.userAgent && navigator.userAgent.toLowerCase().match(/firefox\/(\d+)/) && parseInt(RegExp.$1, 10) >= 31 || typeof navigator < "u" && navigator.userAgent && navigator.userAgent.toLowerCase().match(/applewebkit\/(\d+)/); + } + Nt.formatters.j = function(e21) { + try { + return JSON.stringify(e21); + } catch (t) { + return "[UnexpectedJSONParseError]: " + t.message; + } + }; + function P5(e21) { + var t = this.useColors; + if (e21[0] = (t ? "%c" : "") + this.namespace + (t ? " %c" : " ") + e21[0] + (t ? "%c " : " ") + "+" + Nt.humanize(this.diff), !!t) { + var r = "color: " + this.color; + e21.splice(1, 0, r, "color: inherit"); + var n = 0, i = 0; + e21[0].replace(/%[a-zA-Z%]/g, function(o) { + o !== "%%" && (n++, o === "%c" && (i = n)); + }), e21.splice(i, 0, r); + } + } + function j5() { + return typeof console == "object" && console.log && Function.prototype.apply.call(console.log, console, arguments); + } + function A5(e21) { + try { + e21 == null ? Nt.storage.removeItem("debug") : Nt.storage.debug = e21; + } catch { + } + } + function gE() { + var e21; + try { + e21 = Nt.storage.debug; + } catch { + } + return !e21 && typeof process < "u" && "env" in process && (e21 = process.env.DEBUG), e21; + } + Nt.enable(gE()); + function R5() { + try { + return window.localStorage; + } catch { + } + } +}); +var $E = g((lt, wE) => { + var bE = O("tty"), lc = O("util"); + lt = wE.exports = Ty(); + lt.init = M5; + lt.log = q5; + lt.formatArgs = D5; + lt.save = U5; + lt.load = _E; + lt.useColors = N5; + lt.colors = [6, 2, 3, 4, 5, 1]; + lt.inspectOpts = Object.keys(process.env).filter(function(e21) { + return /^debug_/i.test(e21); + }).reduce(function(e21, t) { + var r = t.substring(6).toLowerCase().replace(/_([a-z])/g, function(i, o) { + return o.toUpperCase(); + }), n = process.env[t]; + return /^(yes|on|true|enabled)$/i.test(n) ? n = true : /^(no|off|false|disabled)$/i.test(n) ? n = false : n === "null" ? n = null : n = Number(n), e21[r] = n, e21; + }, {}); + var Ro = parseInt(process.env.DEBUG_FD, 10) || 2; + Ro !== 1 && Ro !== 2 && lc.deprecate(function() { + }, "except for stderr(2) and stdout(1), any other usage of DEBUG_FD is deprecated. Override debug.log if you want to use a different log function (https://git.io/debug_fd)")(); + var C5 = Ro === 1 ? process.stdout : Ro === 2 ? process.stderr : L5(Ro); + function N5() { + return "colors" in lt.inspectOpts ? !!lt.inspectOpts.colors : bE.isatty(Ro); + } + lt.formatters.o = function(e21) { + return this.inspectOpts.colors = this.useColors, lc.inspect(e21, this.inspectOpts).split(` +`).map(function(t) { + return t.trim(); + }).join(" "); + }; + lt.formatters.O = function(e21) { + return this.inspectOpts.colors = this.useColors, lc.inspect(e21, this.inspectOpts); + }; + function D5(e21) { + var t = this.namespace, r = this.useColors; + if (r) { + var n = this.color, i = " \x1B[3" + n + ";1m" + t + " \x1B[0m"; + e21[0] = i + e21[0].split(` +`).join(` +` + i), e21.push("\x1B[3" + n + "m+" + lt.humanize(this.diff) + "\x1B[0m"); + } else e21[0] = (/* @__PURE__ */ new Date()).toUTCString() + " " + t + " " + e21[0]; + } + function q5() { + return C5.write(lc.format.apply(lc, arguments) + ` +`); + } + function U5(e21) { + e21 == null ? delete process.env.DEBUG : process.env.DEBUG = e21; + } + function _E() { + return process.env.DEBUG; + } + function L5(e21) { + var t, r = process.binding("tty_wrap"); + switch (r.guessHandleType(e21)) { + case "TTY": + t = new bE.WriteStream(e21), t._type = "tty", t._handle && t._handle.unref && t._handle.unref(); + break; + case "FILE": + var n = O("fs"); + t = new n.SyncWriteStream(e21, { autoClose: false }), t._type = "fs"; + break; + case "PIPE": + case "TCP": + var i = O("net"); + t = new i.Socket({ fd: e21, readable: false, writable: true }), t.readable = false, t.read = null, t._type = "pipe", t._handle && t._handle.unref && t._handle.unref(); + break; + default: + throw new Error("Implement me. Unknown stream file type!"); + } + return t.fd = e21, t._isStdio = true, t; + } + function M5(e21) { + e21.inspectOpts = {}; + for (var t = Object.keys(lt.inspectOpts), r = 0; r < t.length; r++) e21.inspectOpts[t[r]] = lt.inspectOpts[t[r]]; + } + lt.enable(_E()); +}); +var pc = g((jpe, Iy) => { + typeof process < "u" && process.type === "renderer" ? Iy.exports = xE() : Iy.exports = $E(); +}); +var zy = g((Ape, kE) => { + "use strict"; + var F5 = O("events").EventEmitter, Z5 = O("fs").ReadStream, SE = O("stream"), Ii = O("zlib"); + kE.exports = B5; + function B5(e21, t) { + return K5(e21) ? V5(e21) : X5(e21) ? J5(e21) : G5(e21) && e21.destroy(), W5(e21) && t && (e21.removeAllListeners("error"), e21.addListener("error", Y5)), e21; + } + function V5(e21) { + e21.destroy(), typeof e21.close == "function" && e21.on("open", eU); + } + function H5(e21) { + if (e21._hadError === true) { + var t = e21._binding === null ? "_binding" : "_handle"; + e21[t] = { close: function() { + this[t] = null; + } }; + } + e21.close(); + } + function J5(e21) { + typeof e21.destroy == "function" ? e21._binding ? (e21.destroy(), e21._processing ? (e21._needDrain = true, e21.once("drain", Q5)) : e21._binding.clear()) : e21._destroy && e21._destroy !== SE.Transform.prototype._destroy ? e21.destroy() : e21._destroy && typeof e21.close == "function" ? (e21.destroyed = true, e21.close()) : e21.destroy() : typeof e21.close == "function" && H5(e21); + } + function G5(e21) { + return e21 instanceof SE && typeof e21.destroy == "function"; + } + function W5(e21) { + return e21 instanceof F5; + } + function K5(e21) { + return e21 instanceof Z5; + } + function X5(e21) { + return e21 instanceof Ii.Gzip || e21 instanceof Ii.Gunzip || e21 instanceof Ii.Deflate || e21 instanceof Ii.DeflateRaw || e21 instanceof Ii.Inflate || e21 instanceof Ii.InflateRaw || e21 instanceof Ii.Unzip; + } + function Y5() { + } + function Q5() { + this._binding.clear(); + } + function eU() { + typeof this.fd == "number" && this.close(); + } +}); +var zi = g((Rpe, EE) => { + "use strict"; + var Bp = O("buffer"), Co = Bp.Buffer, _r = {}, wr; + for (wr in Bp) Bp.hasOwnProperty(wr) && (wr === "SlowBuffer" || wr === "Buffer" || (_r[wr] = Bp[wr])); + var No = _r.Buffer = {}; + for (wr in Co) Co.hasOwnProperty(wr) && (wr === "allocUnsafe" || wr === "allocUnsafeSlow" || (No[wr] = Co[wr])); + _r.Buffer.prototype = Co.prototype; + (!No.from || No.from === Uint8Array.from) && (No.from = function(e21, t, r) { + if (typeof e21 == "number") throw new TypeError('The "value" argument must not be of type number. Received type ' + typeof e21); + if (e21 && typeof e21.length > "u") throw new TypeError("The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type " + typeof e21); + return Co(e21, t, r); + }); + No.alloc || (No.alloc = function(e21, t, r) { + if (typeof e21 != "number") throw new TypeError('The "size" argument must be of type number. Received type ' + typeof e21); + if (e21 < 0 || e21 >= 2 * (1 << 30)) throw new RangeError('The value "' + e21 + '" is invalid for option "size"'); + var n = Co(e21); + return !t || t.length === 0 ? n.fill(0) : typeof r == "string" ? n.fill(t, r) : n.fill(t), n; + }); + if (!_r.kStringMaxLength) try { + _r.kStringMaxLength = process.binding("buffer").kStringMaxLength; + } catch { + } + _r.constants || (_r.constants = { MAX_LENGTH: _r.kMaxLength }, _r.kStringMaxLength && (_r.constants.MAX_STRING_LENGTH = _r.kStringMaxLength)); + EE.exports = _r; +}); +var TE = g((Ay) => { + "use strict"; + var OE = "\uFEFF"; + Ay.PrependBOM = Py; + function Py(e21, t) { + this.encoder = e21, this.addBOM = true; + } + Py.prototype.write = function(e21) { + return this.addBOM && (e21 = OE + e21, this.addBOM = false), this.encoder.write(e21); + }; + Py.prototype.end = function() { + return this.encoder.end(); + }; + Ay.StripBOM = jy; + function jy(e21, t) { + this.decoder = e21, this.pass = false, this.options = t || {}; + } + jy.prototype.write = function(e21) { + var t = this.decoder.write(e21); + return this.pass || !t || (t[0] === OE && (t = t.slice(1), typeof this.options.stripBOM == "function" && this.options.stripBOM()), this.pass = true), t; + }; + jy.prototype.end = function() { + return this.decoder.end(); + }; +}); +var PE = g((Npe, zE) => { + "use strict"; + var dc = zi().Buffer; + zE.exports = { utf8: { type: "_internal", bomAware: true }, cesu8: { type: "_internal", bomAware: true }, unicode11utf8: "utf8", ucs2: { type: "_internal", bomAware: true }, utf16le: "ucs2", binary: { type: "_internal" }, base64: { type: "_internal" }, hex: { type: "_internal" }, _internal: Ry }; + function Ry(e21, t) { + this.enc = e21.encodingName, this.bomAware = e21.bomAware, this.enc === "base64" ? this.encoder = Ny : this.enc === "cesu8" && (this.enc = "utf8", this.encoder = Dy, dc.from("eda0bdedb2a9", "hex").toString() !== "\u{1F4A9}" && (this.decoder = qy, this.defaultCharUnicode = t.defaultCharUnicode)); + } + Ry.prototype.encoder = Cy; + Ry.prototype.decoder = IE; + var Vp = O("string_decoder").StringDecoder; + Vp.prototype.end || (Vp.prototype.end = function() { + }); + function IE(e21, t) { + Vp.call(this, t.enc); + } + IE.prototype = Vp.prototype; + function Cy(e21, t) { + this.enc = t.enc; + } + Cy.prototype.write = function(e21) { + return dc.from(e21, this.enc); + }; + Cy.prototype.end = function() { + }; + function Ny(e21, t) { + this.prevStr = ""; + } + Ny.prototype.write = function(e21) { + e21 = this.prevStr + e21; + var t = e21.length - e21.length % 4; + return this.prevStr = e21.slice(t), e21 = e21.slice(0, t), dc.from(e21, "base64"); + }; + Ny.prototype.end = function() { + return dc.from(this.prevStr, "base64"); + }; + function Dy(e21, t) { + } + Dy.prototype.write = function(e21) { + for (var t = dc.alloc(e21.length * 3), r = 0, n = 0; n < e21.length; n++) { + var i = e21.charCodeAt(n); + i < 128 ? t[r++] = i : i < 2048 ? (t[r++] = 192 + (i >>> 6), t[r++] = 128 + (i & 63)) : (t[r++] = 224 + (i >>> 12), t[r++] = 128 + (i >>> 6 & 63), t[r++] = 128 + (i & 63)); + } + return t.slice(0, r); + }; + Dy.prototype.end = function() { + }; + function qy(e21, t) { + this.acc = 0, this.contBytes = 0, this.accBytes = 0, this.defaultCharUnicode = t.defaultCharUnicode; + } + qy.prototype.write = function(e21) { + for (var t = this.acc, r = this.contBytes, n = this.accBytes, i = "", o = 0; o < e21.length; o++) { + var a = e21[o]; + (a & 192) !== 128 ? (r > 0 && (i += this.defaultCharUnicode, r = 0), a < 128 ? i += String.fromCharCode(a) : a < 224 ? (t = a & 31, r = 1, n = 1) : a < 240 ? (t = a & 15, r = 2, n = 1) : i += this.defaultCharUnicode) : r > 0 ? (t = t << 6 | a & 63, r--, n++, r === 0 && (n === 2 && t < 128 && t > 0 ? i += this.defaultCharUnicode : n === 3 && t < 2048 ? i += this.defaultCharUnicode : i += String.fromCharCode(t))) : i += this.defaultCharUnicode; + } + return this.acc = t, this.contBytes = r, this.accBytes = n, i; + }; + qy.prototype.end = function() { + var e21 = 0; + return this.contBytes > 0 && (e21 += this.defaultCharUnicode), e21; + }; +}); +var AE = g((By) => { + "use strict"; + var Hp = zi().Buffer; + By.utf16be = Jp; + function Jp() { + } + Jp.prototype.encoder = Uy; + Jp.prototype.decoder = Ly; + Jp.prototype.bomAware = true; + function Uy() { + } + Uy.prototype.write = function(e21) { + for (var t = Hp.from(e21, "ucs2"), r = 0; r < t.length; r += 2) { + var n = t[r]; + t[r] = t[r + 1], t[r + 1] = n; + } + return t; + }; + Uy.prototype.end = function() { + }; + function Ly() { + this.overflowByte = -1; + } + Ly.prototype.write = function(e21) { + if (e21.length == 0) return ""; + var t = Hp.alloc(e21.length + 1), r = 0, n = 0; + for (this.overflowByte !== -1 && (t[0] = e21[0], t[1] = this.overflowByte, r = 1, n = 2); r < e21.length - 1; r += 2, n += 2) t[n] = e21[r + 1], t[n + 1] = e21[r]; + return this.overflowByte = r == e21.length - 1 ? e21[e21.length - 1] : -1, t.slice(0, n).toString("ucs2"); + }; + Ly.prototype.end = function() { + }; + By.utf16 = My; + function My(e21, t) { + this.iconv = t; + } + My.prototype.encoder = Fy; + My.prototype.decoder = Zy; + function Fy(e21, t) { + e21 = e21 || {}, e21.addBOM === void 0 && (e21.addBOM = true), this.encoder = t.iconv.getEncoder("utf-16le", e21); + } + Fy.prototype.write = function(e21) { + return this.encoder.write(e21); + }; + Fy.prototype.end = function() { + return this.encoder.end(); + }; + function Zy(e21, t) { + this.decoder = null, this.initialBytes = [], this.initialBytesLen = 0, this.options = e21 || {}, this.iconv = t.iconv; + } + Zy.prototype.write = function(e21) { + if (!this.decoder) { + if (this.initialBytes.push(e21), this.initialBytesLen += e21.length, this.initialBytesLen < 16) return ""; + var e21 = Hp.concat(this.initialBytes), t = jE(e21, this.options.defaultEncoding); + this.decoder = this.iconv.getDecoder(t, this.options), this.initialBytes.length = this.initialBytesLen = 0; + } + return this.decoder.write(e21); + }; + Zy.prototype.end = function() { + if (!this.decoder) { + var e21 = Hp.concat(this.initialBytes), t = jE(e21, this.options.defaultEncoding); + this.decoder = this.iconv.getDecoder(t, this.options); + var r = this.decoder.write(e21), n = this.decoder.end(); + return n ? r + n : r; + } + return this.decoder.end(); + }; + function jE(e21, t) { + var r = t || "utf-16le"; + if (e21.length >= 2) if (e21[0] == 254 && e21[1] == 255) r = "utf-16be"; + else if (e21[0] == 255 && e21[1] == 254) r = "utf-16le"; + else { + for (var n = 0, i = 0, o = Math.min(e21.length - e21.length % 2, 64), a = 0; a < o; a += 2) e21[a] === 0 && e21[a + 1] !== 0 && i++, e21[a] !== 0 && e21[a + 1] === 0 && n++; + i > n ? r = "utf-16be" : i < n && (r = "utf-16le"); + } + return r; + } +}); +var CE = g((Kp) => { + "use strict"; + var Xr = zi().Buffer; + Kp.utf7 = Gp; + Kp.unicode11utf7 = "utf7"; + function Gp(e21, t) { + this.iconv = t; + } + Gp.prototype.encoder = Hy; + Gp.prototype.decoder = Jy; + Gp.prototype.bomAware = true; + var tU = /[^A-Za-z0-9'\(\),-\.\/:\? \n\r\t]+/g; + function Hy(e21, t) { + this.iconv = t.iconv; + } + Hy.prototype.write = function(e21) { + return Xr.from(e21.replace(tU, function(t) { + return "+" + (t === "+" ? "" : this.iconv.encode(t, "utf16-be").toString("base64").replace(/=+$/, "")) + "-"; + }.bind(this))); + }; + Hy.prototype.end = function() { + }; + function Jy(e21, t) { + this.iconv = t.iconv, this.inBase64 = false, this.base64Accum = ""; + } + var rU = /[A-Za-z0-9\/+]/, Gy = []; + for (fc = 0; fc < 256; fc++) Gy[fc] = rU.test(String.fromCharCode(fc)); + var fc, nU = 43, Pi = 45, Vy = 38; + Jy.prototype.write = function(e21) { + for (var t = "", r = 0, n = this.inBase64, i = this.base64Accum, o = 0; o < e21.length; o++) if (!n) e21[o] == nU && (t += this.iconv.decode(e21.slice(r, o), "ascii"), r = o + 1, n = true); + else if (!Gy[e21[o]]) { + if (o == r && e21[o] == Pi) t += "+"; + else { + var a = i + e21.slice(r, o).toString(); + t += this.iconv.decode(Xr.from(a, "base64"), "utf16-be"); + } + e21[o] != Pi && o--, r = o + 1, n = false, i = ""; + } + if (!n) t += this.iconv.decode(e21.slice(r), "ascii"); + else { + var a = i + e21.slice(r).toString(), s = a.length - a.length % 8; + i = a.slice(s), a = a.slice(0, s), t += this.iconv.decode(Xr.from(a, "base64"), "utf16-be"); + } + return this.inBase64 = n, this.base64Accum = i, t; + }; + Jy.prototype.end = function() { + var e21 = ""; + return this.inBase64 && this.base64Accum.length > 0 && (e21 = this.iconv.decode(Xr.from(this.base64Accum, "base64"), "utf16-be")), this.inBase64 = false, this.base64Accum = "", e21; + }; + Kp.utf7imap = Wp; + function Wp(e21, t) { + this.iconv = t; + } + Wp.prototype.encoder = Wy; + Wp.prototype.decoder = Ky; + Wp.prototype.bomAware = true; + function Wy(e21, t) { + this.iconv = t.iconv, this.inBase64 = false, this.base64Accum = Xr.alloc(6), this.base64AccumIdx = 0; + } + Wy.prototype.write = function(e21) { + for (var t = this.inBase64, r = this.base64Accum, n = this.base64AccumIdx, i = Xr.alloc(e21.length * 5 + 10), o = 0, a = 0; a < e21.length; a++) { + var s = e21.charCodeAt(a); + 32 <= s && s <= 126 ? (t && (n > 0 && (o += i.write(r.slice(0, n).toString("base64").replace(/\//g, ",").replace(/=+$/, ""), o), n = 0), i[o++] = Pi, t = false), t || (i[o++] = s, s === Vy && (i[o++] = Pi))) : (t || (i[o++] = Vy, t = true), t && (r[n++] = s >> 8, r[n++] = s & 255, n == r.length && (o += i.write(r.toString("base64").replace(/\//g, ","), o), n = 0))); + } + return this.inBase64 = t, this.base64AccumIdx = n, i.slice(0, o); + }; + Wy.prototype.end = function() { + var e21 = Xr.alloc(10), t = 0; + return this.inBase64 && (this.base64AccumIdx > 0 && (t += e21.write(this.base64Accum.slice(0, this.base64AccumIdx).toString("base64").replace(/\//g, ",").replace(/=+$/, ""), t), this.base64AccumIdx = 0), e21[t++] = Pi, this.inBase64 = false), e21.slice(0, t); + }; + function Ky(e21, t) { + this.iconv = t.iconv, this.inBase64 = false, this.base64Accum = ""; + } + var RE = Gy.slice(); + RE[44] = true; + Ky.prototype.write = function(e21) { + for (var t = "", r = 0, n = this.inBase64, i = this.base64Accum, o = 0; o < e21.length; o++) if (!n) e21[o] == Vy && (t += this.iconv.decode(e21.slice(r, o), "ascii"), r = o + 1, n = true); + else if (!RE[e21[o]]) { + if (o == r && e21[o] == Pi) t += "&"; + else { + var a = i + e21.slice(r, o).toString().replace(/,/g, "/"); + t += this.iconv.decode(Xr.from(a, "base64"), "utf16-be"); + } + e21[o] != Pi && o--, r = o + 1, n = false, i = ""; + } + if (!n) t += this.iconv.decode(e21.slice(r), "ascii"); + else { + var a = i + e21.slice(r).toString().replace(/,/g, "/"), s = a.length - a.length % 8; + i = a.slice(s), a = a.slice(0, s), t += this.iconv.decode(Xr.from(a, "base64"), "utf16-be"); + } + return this.inBase64 = n, this.base64Accum = i, t; + }; + Ky.prototype.end = function() { + var e21 = ""; + return this.inBase64 && this.base64Accum.length > 0 && (e21 = this.iconv.decode(Xr.from(this.base64Accum, "base64"), "utf16-be")), this.inBase64 = false, this.base64Accum = "", e21; + }; +}); +var DE = g((NE) => { + "use strict"; + var Xp = zi().Buffer; + NE._sbcs = Xy; + function Xy(e21, t) { + if (!e21) throw new Error("SBCS codec is called without the data."); + if (!e21.chars || e21.chars.length !== 128 && e21.chars.length !== 256) throw new Error("Encoding '" + e21.type + "' has incorrect 'chars' (must be of len 128 or 256)"); + if (e21.chars.length === 128) { + for (var r = "", n = 0; n < 128; n++) r += String.fromCharCode(n); + e21.chars = r + e21.chars; + } + this.decodeBuf = Xp.from(e21.chars, "ucs2"); + for (var i = Xp.alloc(65536, t.defaultCharSingleByte.charCodeAt(0)), n = 0; n < e21.chars.length; n++) i[e21.chars.charCodeAt(n)] = n; + this.encodeBuf = i; + } + Xy.prototype.encoder = Yy; + Xy.prototype.decoder = Qy; + function Yy(e21, t) { + this.encodeBuf = t.encodeBuf; + } + Yy.prototype.write = function(e21) { + for (var t = Xp.alloc(e21.length), r = 0; r < e21.length; r++) t[r] = this.encodeBuf[e21.charCodeAt(r)]; + return t; + }; + Yy.prototype.end = function() { + }; + function Qy(e21, t) { + this.decodeBuf = t.decodeBuf; + } + Qy.prototype.write = function(e21) { + for (var t = this.decodeBuf, r = Xp.alloc(e21.length * 2), n = 0, i = 0, o = 0; o < e21.length; o++) n = e21[o] * 2, i = o * 2, r[i] = t[n], r[i + 1] = t[n + 1]; + return r.toString("ucs2"); + }; + Qy.prototype.end = function() { + }; +}); +var UE = g((Lpe, qE) => { + "use strict"; + qE.exports = { 10029: "maccenteuro", maccenteuro: { type: "_sbcs", chars: "\xC4\u0100\u0101\xC9\u0104\xD6\xDC\xE1\u0105\u010C\xE4\u010D\u0106\u0107\xE9\u0179\u017A\u010E\xED\u010F\u0112\u0113\u0116\xF3\u0117\xF4\xF6\xF5\xFA\u011A\u011B\xFC\u2020\xB0\u0118\xA3\xA7\u2022\xB6\xDF\xAE\xA9\u2122\u0119\xA8\u2260\u0123\u012E\u012F\u012A\u2264\u2265\u012B\u0136\u2202\u2211\u0142\u013B\u013C\u013D\u013E\u0139\u013A\u0145\u0146\u0143\xAC\u221A\u0144\u0147\u2206\xAB\xBB\u2026\xA0\u0148\u0150\xD5\u0151\u014C\u2013\u2014\u201C\u201D\u2018\u2019\xF7\u25CA\u014D\u0154\u0155\u0158\u2039\u203A\u0159\u0156\u0157\u0160\u201A\u201E\u0161\u015A\u015B\xC1\u0164\u0165\xCD\u017D\u017E\u016A\xD3\xD4\u016B\u016E\xDA\u016F\u0170\u0171\u0172\u0173\xDD\xFD\u0137\u017B\u0141\u017C\u0122\u02C7" }, 808: "cp808", ibm808: "cp808", cp808: { type: "_sbcs", chars: "\u0410\u0411\u0412\u0413\u0414\u0415\u0416\u0417\u0418\u0419\u041A\u041B\u041C\u041D\u041E\u041F\u0420\u0421\u0422\u0423\u0424\u0425\u0426\u0427\u0428\u0429\u042A\u042B\u042C\u042D\u042E\u042F\u0430\u0431\u0432\u0433\u0434\u0435\u0436\u0437\u0438\u0439\u043A\u043B\u043C\u043D\u043E\u043F\u2591\u2592\u2593\u2502\u2524\u2561\u2562\u2556\u2555\u2563\u2551\u2557\u255D\u255C\u255B\u2510\u2514\u2534\u252C\u251C\u2500\u253C\u255E\u255F\u255A\u2554\u2569\u2566\u2560\u2550\u256C\u2567\u2568\u2564\u2565\u2559\u2558\u2552\u2553\u256B\u256A\u2518\u250C\u2588\u2584\u258C\u2590\u2580\u0440\u0441\u0442\u0443\u0444\u0445\u0446\u0447\u0448\u0449\u044A\u044B\u044C\u044D\u044E\u044F\u0401\u0451\u0404\u0454\u0407\u0457\u040E\u045E\xB0\u2219\xB7\u221A\u2116\u20AC\u25A0\xA0" }, mik: { type: "_sbcs", chars: "\u0410\u0411\u0412\u0413\u0414\u0415\u0416\u0417\u0418\u0419\u041A\u041B\u041C\u041D\u041E\u041F\u0420\u0421\u0422\u0423\u0424\u0425\u0426\u0427\u0428\u0429\u042A\u042B\u042C\u042D\u042E\u042F\u0430\u0431\u0432\u0433\u0434\u0435\u0436\u0437\u0438\u0439\u043A\u043B\u043C\u043D\u043E\u043F\u0440\u0441\u0442\u0443\u0444\u0445\u0446\u0447\u0448\u0449\u044A\u044B\u044C\u044D\u044E\u044F\u2514\u2534\u252C\u251C\u2500\u253C\u2563\u2551\u255A\u2554\u2569\u2566\u2560\u2550\u256C\u2510\u2591\u2592\u2593\u2502\u2524\u2116\xA7\u2557\u255D\u2518\u250C\u2588\u2584\u258C\u2590\u2580\u03B1\xDF\u0393\u03C0\u03A3\u03C3\xB5\u03C4\u03A6\u0398\u03A9\u03B4\u221E\u03C6\u03B5\u2229\u2261\xB1\u2265\u2264\u2320\u2321\xF7\u2248\xB0\u2219\xB7\u221A\u207F\xB2\u25A0\xA0" }, ascii8bit: "ascii", usascii: "ascii", ansix34: "ascii", ansix341968: "ascii", ansix341986: "ascii", csascii: "ascii", cp367: "ascii", ibm367: "ascii", isoir6: "ascii", iso646us: "ascii", iso646irv: "ascii", us: "ascii", latin1: "iso88591", latin2: "iso88592", latin3: "iso88593", latin4: "iso88594", latin5: "iso88599", latin6: "iso885910", latin7: "iso885913", latin8: "iso885914", latin9: "iso885915", latin10: "iso885916", csisolatin1: "iso88591", csisolatin2: "iso88592", csisolatin3: "iso88593", csisolatin4: "iso88594", csisolatincyrillic: "iso88595", csisolatinarabic: "iso88596", csisolatingreek: "iso88597", csisolatinhebrew: "iso88598", csisolatin5: "iso88599", csisolatin6: "iso885910", l1: "iso88591", l2: "iso88592", l3: "iso88593", l4: "iso88594", l5: "iso88599", l6: "iso885910", l7: "iso885913", l8: "iso885914", l9: "iso885915", l10: "iso885916", isoir14: "iso646jp", isoir57: "iso646cn", isoir100: "iso88591", isoir101: "iso88592", isoir109: "iso88593", isoir110: "iso88594", isoir144: "iso88595", isoir127: "iso88596", isoir126: "iso88597", isoir138: "iso88598", isoir148: "iso88599", isoir157: "iso885910", isoir166: "tis620", isoir179: "iso885913", isoir199: "iso885914", isoir203: "iso885915", isoir226: "iso885916", cp819: "iso88591", ibm819: "iso88591", cyrillic: "iso88595", arabic: "iso88596", arabic8: "iso88596", ecma114: "iso88596", asmo708: "iso88596", greek: "iso88597", greek8: "iso88597", ecma118: "iso88597", elot928: "iso88597", hebrew: "iso88598", hebrew8: "iso88598", turkish: "iso88599", turkish8: "iso88599", thai: "iso885911", thai8: "iso885911", celtic: "iso885914", celtic8: "iso885914", isoceltic: "iso885914", tis6200: "tis620", tis62025291: "tis620", tis62025330: "tis620", 1e4: "macroman", 10006: "macgreek", 10007: "maccyrillic", 10079: "maciceland", 10081: "macturkish", cspc8codepage437: "cp437", cspc775baltic: "cp775", cspc850multilingual: "cp850", cspcp852: "cp852", cspc862latinhebrew: "cp862", cpgr: "cp869", msee: "cp1250", mscyrl: "cp1251", msansi: "cp1252", msgreek: "cp1253", msturk: "cp1254", mshebr: "cp1255", msarab: "cp1256", winbaltrim: "cp1257", cp20866: "koi8r", 20866: "koi8r", ibm878: "koi8r", cskoi8r: "koi8r", cp21866: "koi8u", 21866: "koi8u", ibm1168: "koi8u", strk10482002: "rk1048", tcvn5712: "tcvn", tcvn57121: "tcvn", gb198880: "iso646cn", cn: "iso646cn", csiso14jisc6220ro: "iso646jp", jisc62201969ro: "iso646jp", jp: "iso646jp", cshproman8: "hproman8", r8: "hproman8", roman8: "hproman8", xroman8: "hproman8", ibm1051: "hproman8", mac: "macintosh", csmacintosh: "macintosh" }; +}); +var ME = g((Mpe, LE) => { + "use strict"; + LE.exports = { 437: "cp437", 737: "cp737", 775: "cp775", 850: "cp850", 852: "cp852", 855: "cp855", 856: "cp856", 857: "cp857", 858: "cp858", 860: "cp860", 861: "cp861", 862: "cp862", 863: "cp863", 864: "cp864", 865: "cp865", 866: "cp866", 869: "cp869", 874: "windows874", 922: "cp922", 1046: "cp1046", 1124: "cp1124", 1125: "cp1125", 1129: "cp1129", 1133: "cp1133", 1161: "cp1161", 1162: "cp1162", 1163: "cp1163", 1250: "windows1250", 1251: "windows1251", 1252: "windows1252", 1253: "windows1253", 1254: "windows1254", 1255: "windows1255", 1256: "windows1256", 1257: "windows1257", 1258: "windows1258", 28591: "iso88591", 28592: "iso88592", 28593: "iso88593", 28594: "iso88594", 28595: "iso88595", 28596: "iso88596", 28597: "iso88597", 28598: "iso88598", 28599: "iso88599", 28600: "iso885910", 28601: "iso885911", 28603: "iso885913", 28604: "iso885914", 28605: "iso885915", 28606: "iso885916", windows874: { type: "_sbcs", chars: "\u20AC\uFFFD\uFFFD\uFFFD\uFFFD\u2026\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u2018\u2019\u201C\u201D\u2022\u2013\u2014\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\xA0\u0E01\u0E02\u0E03\u0E04\u0E05\u0E06\u0E07\u0E08\u0E09\u0E0A\u0E0B\u0E0C\u0E0D\u0E0E\u0E0F\u0E10\u0E11\u0E12\u0E13\u0E14\u0E15\u0E16\u0E17\u0E18\u0E19\u0E1A\u0E1B\u0E1C\u0E1D\u0E1E\u0E1F\u0E20\u0E21\u0E22\u0E23\u0E24\u0E25\u0E26\u0E27\u0E28\u0E29\u0E2A\u0E2B\u0E2C\u0E2D\u0E2E\u0E2F\u0E30\u0E31\u0E32\u0E33\u0E34\u0E35\u0E36\u0E37\u0E38\u0E39\u0E3A\uFFFD\uFFFD\uFFFD\uFFFD\u0E3F\u0E40\u0E41\u0E42\u0E43\u0E44\u0E45\u0E46\u0E47\u0E48\u0E49\u0E4A\u0E4B\u0E4C\u0E4D\u0E4E\u0E4F\u0E50\u0E51\u0E52\u0E53\u0E54\u0E55\u0E56\u0E57\u0E58\u0E59\u0E5A\u0E5B\uFFFD\uFFFD\uFFFD\uFFFD" }, win874: "windows874", cp874: "windows874", windows1250: { type: "_sbcs", chars: "\u20AC\uFFFD\u201A\uFFFD\u201E\u2026\u2020\u2021\uFFFD\u2030\u0160\u2039\u015A\u0164\u017D\u0179\uFFFD\u2018\u2019\u201C\u201D\u2022\u2013\u2014\uFFFD\u2122\u0161\u203A\u015B\u0165\u017E\u017A\xA0\u02C7\u02D8\u0141\xA4\u0104\xA6\xA7\xA8\xA9\u015E\xAB\xAC\xAD\xAE\u017B\xB0\xB1\u02DB\u0142\xB4\xB5\xB6\xB7\xB8\u0105\u015F\xBB\u013D\u02DD\u013E\u017C\u0154\xC1\xC2\u0102\xC4\u0139\u0106\xC7\u010C\xC9\u0118\xCB\u011A\xCD\xCE\u010E\u0110\u0143\u0147\xD3\xD4\u0150\xD6\xD7\u0158\u016E\xDA\u0170\xDC\xDD\u0162\xDF\u0155\xE1\xE2\u0103\xE4\u013A\u0107\xE7\u010D\xE9\u0119\xEB\u011B\xED\xEE\u010F\u0111\u0144\u0148\xF3\xF4\u0151\xF6\xF7\u0159\u016F\xFA\u0171\xFC\xFD\u0163\u02D9" }, win1250: "windows1250", cp1250: "windows1250", windows1251: { type: "_sbcs", chars: "\u0402\u0403\u201A\u0453\u201E\u2026\u2020\u2021\u20AC\u2030\u0409\u2039\u040A\u040C\u040B\u040F\u0452\u2018\u2019\u201C\u201D\u2022\u2013\u2014\uFFFD\u2122\u0459\u203A\u045A\u045C\u045B\u045F\xA0\u040E\u045E\u0408\xA4\u0490\xA6\xA7\u0401\xA9\u0404\xAB\xAC\xAD\xAE\u0407\xB0\xB1\u0406\u0456\u0491\xB5\xB6\xB7\u0451\u2116\u0454\xBB\u0458\u0405\u0455\u0457\u0410\u0411\u0412\u0413\u0414\u0415\u0416\u0417\u0418\u0419\u041A\u041B\u041C\u041D\u041E\u041F\u0420\u0421\u0422\u0423\u0424\u0425\u0426\u0427\u0428\u0429\u042A\u042B\u042C\u042D\u042E\u042F\u0430\u0431\u0432\u0433\u0434\u0435\u0436\u0437\u0438\u0439\u043A\u043B\u043C\u043D\u043E\u043F\u0440\u0441\u0442\u0443\u0444\u0445\u0446\u0447\u0448\u0449\u044A\u044B\u044C\u044D\u044E\u044F" }, win1251: "windows1251", cp1251: "windows1251", windows1252: { type: "_sbcs", chars: "\u20AC\uFFFD\u201A\u0192\u201E\u2026\u2020\u2021\u02C6\u2030\u0160\u2039\u0152\uFFFD\u017D\uFFFD\uFFFD\u2018\u2019\u201C\u201D\u2022\u2013\u2014\u02DC\u2122\u0161\u203A\u0153\uFFFD\u017E\u0178\xA0\xA1\xA2\xA3\xA4\xA5\xA6\xA7\xA8\xA9\xAA\xAB\xAC\xAD\xAE\xAF\xB0\xB1\xB2\xB3\xB4\xB5\xB6\xB7\xB8\xB9\xBA\xBB\xBC\xBD\xBE\xBF\xC0\xC1\xC2\xC3\xC4\xC5\xC6\xC7\xC8\xC9\xCA\xCB\xCC\xCD\xCE\xCF\xD0\xD1\xD2\xD3\xD4\xD5\xD6\xD7\xD8\xD9\xDA\xDB\xDC\xDD\xDE\xDF\xE0\xE1\xE2\xE3\xE4\xE5\xE6\xE7\xE8\xE9\xEA\xEB\xEC\xED\xEE\xEF\xF0\xF1\xF2\xF3\xF4\xF5\xF6\xF7\xF8\xF9\xFA\xFB\xFC\xFD\xFE\xFF" }, win1252: "windows1252", cp1252: "windows1252", windows1253: { type: "_sbcs", chars: "\u20AC\uFFFD\u201A\u0192\u201E\u2026\u2020\u2021\uFFFD\u2030\uFFFD\u2039\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u2018\u2019\u201C\u201D\u2022\u2013\u2014\uFFFD\u2122\uFFFD\u203A\uFFFD\uFFFD\uFFFD\uFFFD\xA0\u0385\u0386\xA3\xA4\xA5\xA6\xA7\xA8\xA9\uFFFD\xAB\xAC\xAD\xAE\u2015\xB0\xB1\xB2\xB3\u0384\xB5\xB6\xB7\u0388\u0389\u038A\xBB\u038C\xBD\u038E\u038F\u0390\u0391\u0392\u0393\u0394\u0395\u0396\u0397\u0398\u0399\u039A\u039B\u039C\u039D\u039E\u039F\u03A0\u03A1\uFFFD\u03A3\u03A4\u03A5\u03A6\u03A7\u03A8\u03A9\u03AA\u03AB\u03AC\u03AD\u03AE\u03AF\u03B0\u03B1\u03B2\u03B3\u03B4\u03B5\u03B6\u03B7\u03B8\u03B9\u03BA\u03BB\u03BC\u03BD\u03BE\u03BF\u03C0\u03C1\u03C2\u03C3\u03C4\u03C5\u03C6\u03C7\u03C8\u03C9\u03CA\u03CB\u03CC\u03CD\u03CE\uFFFD" }, win1253: "windows1253", cp1253: "windows1253", windows1254: { type: "_sbcs", chars: "\u20AC\uFFFD\u201A\u0192\u201E\u2026\u2020\u2021\u02C6\u2030\u0160\u2039\u0152\uFFFD\uFFFD\uFFFD\uFFFD\u2018\u2019\u201C\u201D\u2022\u2013\u2014\u02DC\u2122\u0161\u203A\u0153\uFFFD\uFFFD\u0178\xA0\xA1\xA2\xA3\xA4\xA5\xA6\xA7\xA8\xA9\xAA\xAB\xAC\xAD\xAE\xAF\xB0\xB1\xB2\xB3\xB4\xB5\xB6\xB7\xB8\xB9\xBA\xBB\xBC\xBD\xBE\xBF\xC0\xC1\xC2\xC3\xC4\xC5\xC6\xC7\xC8\xC9\xCA\xCB\xCC\xCD\xCE\xCF\u011E\xD1\xD2\xD3\xD4\xD5\xD6\xD7\xD8\xD9\xDA\xDB\xDC\u0130\u015E\xDF\xE0\xE1\xE2\xE3\xE4\xE5\xE6\xE7\xE8\xE9\xEA\xEB\xEC\xED\xEE\xEF\u011F\xF1\xF2\xF3\xF4\xF5\xF6\xF7\xF8\xF9\xFA\xFB\xFC\u0131\u015F\xFF" }, win1254: "windows1254", cp1254: "windows1254", windows1255: { type: "_sbcs", chars: "\u20AC\uFFFD\u201A\u0192\u201E\u2026\u2020\u2021\u02C6\u2030\uFFFD\u2039\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u2018\u2019\u201C\u201D\u2022\u2013\u2014\u02DC\u2122\uFFFD\u203A\uFFFD\uFFFD\uFFFD\uFFFD\xA0\xA1\xA2\xA3\u20AA\xA5\xA6\xA7\xA8\xA9\xD7\xAB\xAC\xAD\xAE\xAF\xB0\xB1\xB2\xB3\xB4\xB5\xB6\xB7\xB8\xB9\xF7\xBB\xBC\xBD\xBE\xBF\u05B0\u05B1\u05B2\u05B3\u05B4\u05B5\u05B6\u05B7\u05B8\u05B9\u05BA\u05BB\u05BC\u05BD\u05BE\u05BF\u05C0\u05C1\u05C2\u05C3\u05F0\u05F1\u05F2\u05F3\u05F4\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u05D0\u05D1\u05D2\u05D3\u05D4\u05D5\u05D6\u05D7\u05D8\u05D9\u05DA\u05DB\u05DC\u05DD\u05DE\u05DF\u05E0\u05E1\u05E2\u05E3\u05E4\u05E5\u05E6\u05E7\u05E8\u05E9\u05EA\uFFFD\uFFFD\u200E\u200F\uFFFD" }, win1255: "windows1255", cp1255: "windows1255", windows1256: { type: "_sbcs", chars: "\u20AC\u067E\u201A\u0192\u201E\u2026\u2020\u2021\u02C6\u2030\u0679\u2039\u0152\u0686\u0698\u0688\u06AF\u2018\u2019\u201C\u201D\u2022\u2013\u2014\u06A9\u2122\u0691\u203A\u0153\u200C\u200D\u06BA\xA0\u060C\xA2\xA3\xA4\xA5\xA6\xA7\xA8\xA9\u06BE\xAB\xAC\xAD\xAE\xAF\xB0\xB1\xB2\xB3\xB4\xB5\xB6\xB7\xB8\xB9\u061B\xBB\xBC\xBD\xBE\u061F\u06C1\u0621\u0622\u0623\u0624\u0625\u0626\u0627\u0628\u0629\u062A\u062B\u062C\u062D\u062E\u062F\u0630\u0631\u0632\u0633\u0634\u0635\u0636\xD7\u0637\u0638\u0639\u063A\u0640\u0641\u0642\u0643\xE0\u0644\xE2\u0645\u0646\u0647\u0648\xE7\xE8\xE9\xEA\xEB\u0649\u064A\xEE\xEF\u064B\u064C\u064D\u064E\xF4\u064F\u0650\xF7\u0651\xF9\u0652\xFB\xFC\u200E\u200F\u06D2" }, win1256: "windows1256", cp1256: "windows1256", windows1257: { type: "_sbcs", chars: "\u20AC\uFFFD\u201A\uFFFD\u201E\u2026\u2020\u2021\uFFFD\u2030\uFFFD\u2039\uFFFD\xA8\u02C7\xB8\uFFFD\u2018\u2019\u201C\u201D\u2022\u2013\u2014\uFFFD\u2122\uFFFD\u203A\uFFFD\xAF\u02DB\uFFFD\xA0\uFFFD\xA2\xA3\xA4\uFFFD\xA6\xA7\xD8\xA9\u0156\xAB\xAC\xAD\xAE\xC6\xB0\xB1\xB2\xB3\xB4\xB5\xB6\xB7\xF8\xB9\u0157\xBB\xBC\xBD\xBE\xE6\u0104\u012E\u0100\u0106\xC4\xC5\u0118\u0112\u010C\xC9\u0179\u0116\u0122\u0136\u012A\u013B\u0160\u0143\u0145\xD3\u014C\xD5\xD6\xD7\u0172\u0141\u015A\u016A\xDC\u017B\u017D\xDF\u0105\u012F\u0101\u0107\xE4\xE5\u0119\u0113\u010D\xE9\u017A\u0117\u0123\u0137\u012B\u013C\u0161\u0144\u0146\xF3\u014D\xF5\xF6\xF7\u0173\u0142\u015B\u016B\xFC\u017C\u017E\u02D9" }, win1257: "windows1257", cp1257: "windows1257", windows1258: { type: "_sbcs", chars: "\u20AC\uFFFD\u201A\u0192\u201E\u2026\u2020\u2021\u02C6\u2030\uFFFD\u2039\u0152\uFFFD\uFFFD\uFFFD\uFFFD\u2018\u2019\u201C\u201D\u2022\u2013\u2014\u02DC\u2122\uFFFD\u203A\u0153\uFFFD\uFFFD\u0178\xA0\xA1\xA2\xA3\xA4\xA5\xA6\xA7\xA8\xA9\xAA\xAB\xAC\xAD\xAE\xAF\xB0\xB1\xB2\xB3\xB4\xB5\xB6\xB7\xB8\xB9\xBA\xBB\xBC\xBD\xBE\xBF\xC0\xC1\xC2\u0102\xC4\xC5\xC6\xC7\xC8\xC9\xCA\xCB\u0300\xCD\xCE\xCF\u0110\xD1\u0309\xD3\xD4\u01A0\xD6\xD7\xD8\xD9\xDA\xDB\xDC\u01AF\u0303\xDF\xE0\xE1\xE2\u0103\xE4\xE5\xE6\xE7\xE8\xE9\xEA\xEB\u0301\xED\xEE\xEF\u0111\xF1\u0323\xF3\xF4\u01A1\xF6\xF7\xF8\xF9\xFA\xFB\xFC\u01B0\u20AB\xFF" }, win1258: "windows1258", cp1258: "windows1258", iso88591: { type: "_sbcs", chars: "\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8A\x8B\x8C\x8D\x8E\x8F\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9A\x9B\x9C\x9D\x9E\x9F\xA0\xA1\xA2\xA3\xA4\xA5\xA6\xA7\xA8\xA9\xAA\xAB\xAC\xAD\xAE\xAF\xB0\xB1\xB2\xB3\xB4\xB5\xB6\xB7\xB8\xB9\xBA\xBB\xBC\xBD\xBE\xBF\xC0\xC1\xC2\xC3\xC4\xC5\xC6\xC7\xC8\xC9\xCA\xCB\xCC\xCD\xCE\xCF\xD0\xD1\xD2\xD3\xD4\xD5\xD6\xD7\xD8\xD9\xDA\xDB\xDC\xDD\xDE\xDF\xE0\xE1\xE2\xE3\xE4\xE5\xE6\xE7\xE8\xE9\xEA\xEB\xEC\xED\xEE\xEF\xF0\xF1\xF2\xF3\xF4\xF5\xF6\xF7\xF8\xF9\xFA\xFB\xFC\xFD\xFE\xFF" }, cp28591: "iso88591", iso88592: { type: "_sbcs", chars: "\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8A\x8B\x8C\x8D\x8E\x8F\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9A\x9B\x9C\x9D\x9E\x9F\xA0\u0104\u02D8\u0141\xA4\u013D\u015A\xA7\xA8\u0160\u015E\u0164\u0179\xAD\u017D\u017B\xB0\u0105\u02DB\u0142\xB4\u013E\u015B\u02C7\xB8\u0161\u015F\u0165\u017A\u02DD\u017E\u017C\u0154\xC1\xC2\u0102\xC4\u0139\u0106\xC7\u010C\xC9\u0118\xCB\u011A\xCD\xCE\u010E\u0110\u0143\u0147\xD3\xD4\u0150\xD6\xD7\u0158\u016E\xDA\u0170\xDC\xDD\u0162\xDF\u0155\xE1\xE2\u0103\xE4\u013A\u0107\xE7\u010D\xE9\u0119\xEB\u011B\xED\xEE\u010F\u0111\u0144\u0148\xF3\xF4\u0151\xF6\xF7\u0159\u016F\xFA\u0171\xFC\xFD\u0163\u02D9" }, cp28592: "iso88592", iso88593: { type: "_sbcs", chars: "\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8A\x8B\x8C\x8D\x8E\x8F\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9A\x9B\x9C\x9D\x9E\x9F\xA0\u0126\u02D8\xA3\xA4\uFFFD\u0124\xA7\xA8\u0130\u015E\u011E\u0134\xAD\uFFFD\u017B\xB0\u0127\xB2\xB3\xB4\xB5\u0125\xB7\xB8\u0131\u015F\u011F\u0135\xBD\uFFFD\u017C\xC0\xC1\xC2\uFFFD\xC4\u010A\u0108\xC7\xC8\xC9\xCA\xCB\xCC\xCD\xCE\xCF\uFFFD\xD1\xD2\xD3\xD4\u0120\xD6\xD7\u011C\xD9\xDA\xDB\xDC\u016C\u015C\xDF\xE0\xE1\xE2\uFFFD\xE4\u010B\u0109\xE7\xE8\xE9\xEA\xEB\xEC\xED\xEE\xEF\uFFFD\xF1\xF2\xF3\xF4\u0121\xF6\xF7\u011D\xF9\xFA\xFB\xFC\u016D\u015D\u02D9" }, cp28593: "iso88593", iso88594: { type: "_sbcs", chars: "\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8A\x8B\x8C\x8D\x8E\x8F\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9A\x9B\x9C\x9D\x9E\x9F\xA0\u0104\u0138\u0156\xA4\u0128\u013B\xA7\xA8\u0160\u0112\u0122\u0166\xAD\u017D\xAF\xB0\u0105\u02DB\u0157\xB4\u0129\u013C\u02C7\xB8\u0161\u0113\u0123\u0167\u014A\u017E\u014B\u0100\xC1\xC2\xC3\xC4\xC5\xC6\u012E\u010C\xC9\u0118\xCB\u0116\xCD\xCE\u012A\u0110\u0145\u014C\u0136\xD4\xD5\xD6\xD7\xD8\u0172\xDA\xDB\xDC\u0168\u016A\xDF\u0101\xE1\xE2\xE3\xE4\xE5\xE6\u012F\u010D\xE9\u0119\xEB\u0117\xED\xEE\u012B\u0111\u0146\u014D\u0137\xF4\xF5\xF6\xF7\xF8\u0173\xFA\xFB\xFC\u0169\u016B\u02D9" }, cp28594: "iso88594", iso88595: { type: "_sbcs", chars: "\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8A\x8B\x8C\x8D\x8E\x8F\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9A\x9B\x9C\x9D\x9E\x9F\xA0\u0401\u0402\u0403\u0404\u0405\u0406\u0407\u0408\u0409\u040A\u040B\u040C\xAD\u040E\u040F\u0410\u0411\u0412\u0413\u0414\u0415\u0416\u0417\u0418\u0419\u041A\u041B\u041C\u041D\u041E\u041F\u0420\u0421\u0422\u0423\u0424\u0425\u0426\u0427\u0428\u0429\u042A\u042B\u042C\u042D\u042E\u042F\u0430\u0431\u0432\u0433\u0434\u0435\u0436\u0437\u0438\u0439\u043A\u043B\u043C\u043D\u043E\u043F\u0440\u0441\u0442\u0443\u0444\u0445\u0446\u0447\u0448\u0449\u044A\u044B\u044C\u044D\u044E\u044F\u2116\u0451\u0452\u0453\u0454\u0455\u0456\u0457\u0458\u0459\u045A\u045B\u045C\xA7\u045E\u045F" }, cp28595: "iso88595", iso88596: { type: "_sbcs", chars: "\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8A\x8B\x8C\x8D\x8E\x8F\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9A\x9B\x9C\x9D\x9E\x9F\xA0\uFFFD\uFFFD\uFFFD\xA4\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u060C\xAD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u061B\uFFFD\uFFFD\uFFFD\u061F\uFFFD\u0621\u0622\u0623\u0624\u0625\u0626\u0627\u0628\u0629\u062A\u062B\u062C\u062D\u062E\u062F\u0630\u0631\u0632\u0633\u0634\u0635\u0636\u0637\u0638\u0639\u063A\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u0640\u0641\u0642\u0643\u0644\u0645\u0646\u0647\u0648\u0649\u064A\u064B\u064C\u064D\u064E\u064F\u0650\u0651\u0652\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" }, cp28596: "iso88596", iso88597: { type: "_sbcs", chars: "\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8A\x8B\x8C\x8D\x8E\x8F\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9A\x9B\x9C\x9D\x9E\x9F\xA0\u2018\u2019\xA3\u20AC\u20AF\xA6\xA7\xA8\xA9\u037A\xAB\xAC\xAD\uFFFD\u2015\xB0\xB1\xB2\xB3\u0384\u0385\u0386\xB7\u0388\u0389\u038A\xBB\u038C\xBD\u038E\u038F\u0390\u0391\u0392\u0393\u0394\u0395\u0396\u0397\u0398\u0399\u039A\u039B\u039C\u039D\u039E\u039F\u03A0\u03A1\uFFFD\u03A3\u03A4\u03A5\u03A6\u03A7\u03A8\u03A9\u03AA\u03AB\u03AC\u03AD\u03AE\u03AF\u03B0\u03B1\u03B2\u03B3\u03B4\u03B5\u03B6\u03B7\u03B8\u03B9\u03BA\u03BB\u03BC\u03BD\u03BE\u03BF\u03C0\u03C1\u03C2\u03C3\u03C4\u03C5\u03C6\u03C7\u03C8\u03C9\u03CA\u03CB\u03CC\u03CD\u03CE\uFFFD" }, cp28597: "iso88597", iso88598: { type: "_sbcs", chars: "\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8A\x8B\x8C\x8D\x8E\x8F\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9A\x9B\x9C\x9D\x9E\x9F\xA0\uFFFD\xA2\xA3\xA4\xA5\xA6\xA7\xA8\xA9\xD7\xAB\xAC\xAD\xAE\xAF\xB0\xB1\xB2\xB3\xB4\xB5\xB6\xB7\xB8\xB9\xF7\xBB\xBC\xBD\xBE\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u2017\u05D0\u05D1\u05D2\u05D3\u05D4\u05D5\u05D6\u05D7\u05D8\u05D9\u05DA\u05DB\u05DC\u05DD\u05DE\u05DF\u05E0\u05E1\u05E2\u05E3\u05E4\u05E5\u05E6\u05E7\u05E8\u05E9\u05EA\uFFFD\uFFFD\u200E\u200F\uFFFD" }, cp28598: "iso88598", iso88599: { type: "_sbcs", chars: "\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8A\x8B\x8C\x8D\x8E\x8F\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9A\x9B\x9C\x9D\x9E\x9F\xA0\xA1\xA2\xA3\xA4\xA5\xA6\xA7\xA8\xA9\xAA\xAB\xAC\xAD\xAE\xAF\xB0\xB1\xB2\xB3\xB4\xB5\xB6\xB7\xB8\xB9\xBA\xBB\xBC\xBD\xBE\xBF\xC0\xC1\xC2\xC3\xC4\xC5\xC6\xC7\xC8\xC9\xCA\xCB\xCC\xCD\xCE\xCF\u011E\xD1\xD2\xD3\xD4\xD5\xD6\xD7\xD8\xD9\xDA\xDB\xDC\u0130\u015E\xDF\xE0\xE1\xE2\xE3\xE4\xE5\xE6\xE7\xE8\xE9\xEA\xEB\xEC\xED\xEE\xEF\u011F\xF1\xF2\xF3\xF4\xF5\xF6\xF7\xF8\xF9\xFA\xFB\xFC\u0131\u015F\xFF" }, cp28599: "iso88599", iso885910: { type: "_sbcs", chars: "\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8A\x8B\x8C\x8D\x8E\x8F\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9A\x9B\x9C\x9D\x9E\x9F\xA0\u0104\u0112\u0122\u012A\u0128\u0136\xA7\u013B\u0110\u0160\u0166\u017D\xAD\u016A\u014A\xB0\u0105\u0113\u0123\u012B\u0129\u0137\xB7\u013C\u0111\u0161\u0167\u017E\u2015\u016B\u014B\u0100\xC1\xC2\xC3\xC4\xC5\xC6\u012E\u010C\xC9\u0118\xCB\u0116\xCD\xCE\xCF\xD0\u0145\u014C\xD3\xD4\xD5\xD6\u0168\xD8\u0172\xDA\xDB\xDC\xDD\xDE\xDF\u0101\xE1\xE2\xE3\xE4\xE5\xE6\u012F\u010D\xE9\u0119\xEB\u0117\xED\xEE\xEF\xF0\u0146\u014D\xF3\xF4\xF5\xF6\u0169\xF8\u0173\xFA\xFB\xFC\xFD\xFE\u0138" }, cp28600: "iso885910", iso885911: { type: "_sbcs", chars: "\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8A\x8B\x8C\x8D\x8E\x8F\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9A\x9B\x9C\x9D\x9E\x9F\xA0\u0E01\u0E02\u0E03\u0E04\u0E05\u0E06\u0E07\u0E08\u0E09\u0E0A\u0E0B\u0E0C\u0E0D\u0E0E\u0E0F\u0E10\u0E11\u0E12\u0E13\u0E14\u0E15\u0E16\u0E17\u0E18\u0E19\u0E1A\u0E1B\u0E1C\u0E1D\u0E1E\u0E1F\u0E20\u0E21\u0E22\u0E23\u0E24\u0E25\u0E26\u0E27\u0E28\u0E29\u0E2A\u0E2B\u0E2C\u0E2D\u0E2E\u0E2F\u0E30\u0E31\u0E32\u0E33\u0E34\u0E35\u0E36\u0E37\u0E38\u0E39\u0E3A\uFFFD\uFFFD\uFFFD\uFFFD\u0E3F\u0E40\u0E41\u0E42\u0E43\u0E44\u0E45\u0E46\u0E47\u0E48\u0E49\u0E4A\u0E4B\u0E4C\u0E4D\u0E4E\u0E4F\u0E50\u0E51\u0E52\u0E53\u0E54\u0E55\u0E56\u0E57\u0E58\u0E59\u0E5A\u0E5B\uFFFD\uFFFD\uFFFD\uFFFD" }, cp28601: "iso885911", iso885913: { type: "_sbcs", chars: "\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8A\x8B\x8C\x8D\x8E\x8F\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9A\x9B\x9C\x9D\x9E\x9F\xA0\u201D\xA2\xA3\xA4\u201E\xA6\xA7\xD8\xA9\u0156\xAB\xAC\xAD\xAE\xC6\xB0\xB1\xB2\xB3\u201C\xB5\xB6\xB7\xF8\xB9\u0157\xBB\xBC\xBD\xBE\xE6\u0104\u012E\u0100\u0106\xC4\xC5\u0118\u0112\u010C\xC9\u0179\u0116\u0122\u0136\u012A\u013B\u0160\u0143\u0145\xD3\u014C\xD5\xD6\xD7\u0172\u0141\u015A\u016A\xDC\u017B\u017D\xDF\u0105\u012F\u0101\u0107\xE4\xE5\u0119\u0113\u010D\xE9\u017A\u0117\u0123\u0137\u012B\u013C\u0161\u0144\u0146\xF3\u014D\xF5\xF6\xF7\u0173\u0142\u015B\u016B\xFC\u017C\u017E\u2019" }, cp28603: "iso885913", iso885914: { type: "_sbcs", chars: "\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8A\x8B\x8C\x8D\x8E\x8F\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9A\x9B\x9C\x9D\x9E\x9F\xA0\u1E02\u1E03\xA3\u010A\u010B\u1E0A\xA7\u1E80\xA9\u1E82\u1E0B\u1EF2\xAD\xAE\u0178\u1E1E\u1E1F\u0120\u0121\u1E40\u1E41\xB6\u1E56\u1E81\u1E57\u1E83\u1E60\u1EF3\u1E84\u1E85\u1E61\xC0\xC1\xC2\xC3\xC4\xC5\xC6\xC7\xC8\xC9\xCA\xCB\xCC\xCD\xCE\xCF\u0174\xD1\xD2\xD3\xD4\xD5\xD6\u1E6A\xD8\xD9\xDA\xDB\xDC\xDD\u0176\xDF\xE0\xE1\xE2\xE3\xE4\xE5\xE6\xE7\xE8\xE9\xEA\xEB\xEC\xED\xEE\xEF\u0175\xF1\xF2\xF3\xF4\xF5\xF6\u1E6B\xF8\xF9\xFA\xFB\xFC\xFD\u0177\xFF" }, cp28604: "iso885914", iso885915: { type: "_sbcs", chars: "\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8A\x8B\x8C\x8D\x8E\x8F\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9A\x9B\x9C\x9D\x9E\x9F\xA0\xA1\xA2\xA3\u20AC\xA5\u0160\xA7\u0161\xA9\xAA\xAB\xAC\xAD\xAE\xAF\xB0\xB1\xB2\xB3\u017D\xB5\xB6\xB7\u017E\xB9\xBA\xBB\u0152\u0153\u0178\xBF\xC0\xC1\xC2\xC3\xC4\xC5\xC6\xC7\xC8\xC9\xCA\xCB\xCC\xCD\xCE\xCF\xD0\xD1\xD2\xD3\xD4\xD5\xD6\xD7\xD8\xD9\xDA\xDB\xDC\xDD\xDE\xDF\xE0\xE1\xE2\xE3\xE4\xE5\xE6\xE7\xE8\xE9\xEA\xEB\xEC\xED\xEE\xEF\xF0\xF1\xF2\xF3\xF4\xF5\xF6\xF7\xF8\xF9\xFA\xFB\xFC\xFD\xFE\xFF" }, cp28605: "iso885915", iso885916: { type: "_sbcs", chars: "\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8A\x8B\x8C\x8D\x8E\x8F\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9A\x9B\x9C\x9D\x9E\x9F\xA0\u0104\u0105\u0141\u20AC\u201E\u0160\xA7\u0161\xA9\u0218\xAB\u0179\xAD\u017A\u017B\xB0\xB1\u010C\u0142\u017D\u201D\xB6\xB7\u017E\u010D\u0219\xBB\u0152\u0153\u0178\u017C\xC0\xC1\xC2\u0102\xC4\u0106\xC6\xC7\xC8\xC9\xCA\xCB\xCC\xCD\xCE\xCF\u0110\u0143\xD2\xD3\xD4\u0150\xD6\u015A\u0170\xD9\xDA\xDB\xDC\u0118\u021A\xDF\xE0\xE1\xE2\u0103\xE4\u0107\xE6\xE7\xE8\xE9\xEA\xEB\xEC\xED\xEE\xEF\u0111\u0144\xF2\xF3\xF4\u0151\xF6\u015B\u0171\xF9\xFA\xFB\xFC\u0119\u021B\xFF" }, cp28606: "iso885916", cp437: { type: "_sbcs", chars: "\xC7\xFC\xE9\xE2\xE4\xE0\xE5\xE7\xEA\xEB\xE8\xEF\xEE\xEC\xC4\xC5\xC9\xE6\xC6\xF4\xF6\xF2\xFB\xF9\xFF\xD6\xDC\xA2\xA3\xA5\u20A7\u0192\xE1\xED\xF3\xFA\xF1\xD1\xAA\xBA\xBF\u2310\xAC\xBD\xBC\xA1\xAB\xBB\u2591\u2592\u2593\u2502\u2524\u2561\u2562\u2556\u2555\u2563\u2551\u2557\u255D\u255C\u255B\u2510\u2514\u2534\u252C\u251C\u2500\u253C\u255E\u255F\u255A\u2554\u2569\u2566\u2560\u2550\u256C\u2567\u2568\u2564\u2565\u2559\u2558\u2552\u2553\u256B\u256A\u2518\u250C\u2588\u2584\u258C\u2590\u2580\u03B1\xDF\u0393\u03C0\u03A3\u03C3\xB5\u03C4\u03A6\u0398\u03A9\u03B4\u221E\u03C6\u03B5\u2229\u2261\xB1\u2265\u2264\u2320\u2321\xF7\u2248\xB0\u2219\xB7\u221A\u207F\xB2\u25A0\xA0" }, ibm437: "cp437", csibm437: "cp437", cp737: { type: "_sbcs", chars: "\u0391\u0392\u0393\u0394\u0395\u0396\u0397\u0398\u0399\u039A\u039B\u039C\u039D\u039E\u039F\u03A0\u03A1\u03A3\u03A4\u03A5\u03A6\u03A7\u03A8\u03A9\u03B1\u03B2\u03B3\u03B4\u03B5\u03B6\u03B7\u03B8\u03B9\u03BA\u03BB\u03BC\u03BD\u03BE\u03BF\u03C0\u03C1\u03C3\u03C2\u03C4\u03C5\u03C6\u03C7\u03C8\u2591\u2592\u2593\u2502\u2524\u2561\u2562\u2556\u2555\u2563\u2551\u2557\u255D\u255C\u255B\u2510\u2514\u2534\u252C\u251C\u2500\u253C\u255E\u255F\u255A\u2554\u2569\u2566\u2560\u2550\u256C\u2567\u2568\u2564\u2565\u2559\u2558\u2552\u2553\u256B\u256A\u2518\u250C\u2588\u2584\u258C\u2590\u2580\u03C9\u03AC\u03AD\u03AE\u03CA\u03AF\u03CC\u03CD\u03CB\u03CE\u0386\u0388\u0389\u038A\u038C\u038E\u038F\xB1\u2265\u2264\u03AA\u03AB\xF7\u2248\xB0\u2219\xB7\u221A\u207F\xB2\u25A0\xA0" }, ibm737: "cp737", csibm737: "cp737", cp775: { type: "_sbcs", chars: "\u0106\xFC\xE9\u0101\xE4\u0123\xE5\u0107\u0142\u0113\u0156\u0157\u012B\u0179\xC4\xC5\xC9\xE6\xC6\u014D\xF6\u0122\xA2\u015A\u015B\xD6\xDC\xF8\xA3\xD8\xD7\xA4\u0100\u012A\xF3\u017B\u017C\u017A\u201D\xA6\xA9\xAE\xAC\xBD\xBC\u0141\xAB\xBB\u2591\u2592\u2593\u2502\u2524\u0104\u010C\u0118\u0116\u2563\u2551\u2557\u255D\u012E\u0160\u2510\u2514\u2534\u252C\u251C\u2500\u253C\u0172\u016A\u255A\u2554\u2569\u2566\u2560\u2550\u256C\u017D\u0105\u010D\u0119\u0117\u012F\u0161\u0173\u016B\u017E\u2518\u250C\u2588\u2584\u258C\u2590\u2580\xD3\xDF\u014C\u0143\xF5\xD5\xB5\u0144\u0136\u0137\u013B\u013C\u0146\u0112\u0145\u2019\xAD\xB1\u201C\xBE\xB6\xA7\xF7\u201E\xB0\u2219\xB7\xB9\xB3\xB2\u25A0\xA0" }, ibm775: "cp775", csibm775: "cp775", cp850: { type: "_sbcs", chars: "\xC7\xFC\xE9\xE2\xE4\xE0\xE5\xE7\xEA\xEB\xE8\xEF\xEE\xEC\xC4\xC5\xC9\xE6\xC6\xF4\xF6\xF2\xFB\xF9\xFF\xD6\xDC\xF8\xA3\xD8\xD7\u0192\xE1\xED\xF3\xFA\xF1\xD1\xAA\xBA\xBF\xAE\xAC\xBD\xBC\xA1\xAB\xBB\u2591\u2592\u2593\u2502\u2524\xC1\xC2\xC0\xA9\u2563\u2551\u2557\u255D\xA2\xA5\u2510\u2514\u2534\u252C\u251C\u2500\u253C\xE3\xC3\u255A\u2554\u2569\u2566\u2560\u2550\u256C\xA4\xF0\xD0\xCA\xCB\xC8\u0131\xCD\xCE\xCF\u2518\u250C\u2588\u2584\xA6\xCC\u2580\xD3\xDF\xD4\xD2\xF5\xD5\xB5\xFE\xDE\xDA\xDB\xD9\xFD\xDD\xAF\xB4\xAD\xB1\u2017\xBE\xB6\xA7\xF7\xB8\xB0\xA8\xB7\xB9\xB3\xB2\u25A0\xA0" }, ibm850: "cp850", csibm850: "cp850", cp852: { type: "_sbcs", chars: "\xC7\xFC\xE9\xE2\xE4\u016F\u0107\xE7\u0142\xEB\u0150\u0151\xEE\u0179\xC4\u0106\xC9\u0139\u013A\xF4\xF6\u013D\u013E\u015A\u015B\xD6\xDC\u0164\u0165\u0141\xD7\u010D\xE1\xED\xF3\xFA\u0104\u0105\u017D\u017E\u0118\u0119\xAC\u017A\u010C\u015F\xAB\xBB\u2591\u2592\u2593\u2502\u2524\xC1\xC2\u011A\u015E\u2563\u2551\u2557\u255D\u017B\u017C\u2510\u2514\u2534\u252C\u251C\u2500\u253C\u0102\u0103\u255A\u2554\u2569\u2566\u2560\u2550\u256C\xA4\u0111\u0110\u010E\xCB\u010F\u0147\xCD\xCE\u011B\u2518\u250C\u2588\u2584\u0162\u016E\u2580\xD3\xDF\xD4\u0143\u0144\u0148\u0160\u0161\u0154\xDA\u0155\u0170\xFD\xDD\u0163\xB4\xAD\u02DD\u02DB\u02C7\u02D8\xA7\xF7\xB8\xB0\xA8\u02D9\u0171\u0158\u0159\u25A0\xA0" }, ibm852: "cp852", csibm852: "cp852", cp855: { type: "_sbcs", chars: "\u0452\u0402\u0453\u0403\u0451\u0401\u0454\u0404\u0455\u0405\u0456\u0406\u0457\u0407\u0458\u0408\u0459\u0409\u045A\u040A\u045B\u040B\u045C\u040C\u045E\u040E\u045F\u040F\u044E\u042E\u044A\u042A\u0430\u0410\u0431\u0411\u0446\u0426\u0434\u0414\u0435\u0415\u0444\u0424\u0433\u0413\xAB\xBB\u2591\u2592\u2593\u2502\u2524\u0445\u0425\u0438\u0418\u2563\u2551\u2557\u255D\u0439\u0419\u2510\u2514\u2534\u252C\u251C\u2500\u253C\u043A\u041A\u255A\u2554\u2569\u2566\u2560\u2550\u256C\xA4\u043B\u041B\u043C\u041C\u043D\u041D\u043E\u041E\u043F\u2518\u250C\u2588\u2584\u041F\u044F\u2580\u042F\u0440\u0420\u0441\u0421\u0442\u0422\u0443\u0423\u0436\u0416\u0432\u0412\u044C\u042C\u2116\xAD\u044B\u042B\u0437\u0417\u0448\u0428\u044D\u042D\u0449\u0429\u0447\u0427\xA7\u25A0\xA0" }, ibm855: "cp855", csibm855: "cp855", cp856: { type: "_sbcs", chars: "\u05D0\u05D1\u05D2\u05D3\u05D4\u05D5\u05D6\u05D7\u05D8\u05D9\u05DA\u05DB\u05DC\u05DD\u05DE\u05DF\u05E0\u05E1\u05E2\u05E3\u05E4\u05E5\u05E6\u05E7\u05E8\u05E9\u05EA\uFFFD\xA3\uFFFD\xD7\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\xAE\xAC\xBD\xBC\uFFFD\xAB\xBB\u2591\u2592\u2593\u2502\u2524\uFFFD\uFFFD\uFFFD\xA9\u2563\u2551\u2557\u255D\xA2\xA5\u2510\u2514\u2534\u252C\u251C\u2500\u253C\uFFFD\uFFFD\u255A\u2554\u2569\u2566\u2560\u2550\u256C\xA4\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u2518\u250C\u2588\u2584\xA6\uFFFD\u2580\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\xB5\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\xAF\xB4\xAD\xB1\u2017\xBE\xB6\xA7\xF7\xB8\xB0\xA8\xB7\xB9\xB3\xB2\u25A0\xA0" }, ibm856: "cp856", csibm856: "cp856", cp857: { type: "_sbcs", chars: "\xC7\xFC\xE9\xE2\xE4\xE0\xE5\xE7\xEA\xEB\xE8\xEF\xEE\u0131\xC4\xC5\xC9\xE6\xC6\xF4\xF6\xF2\xFB\xF9\u0130\xD6\xDC\xF8\xA3\xD8\u015E\u015F\xE1\xED\xF3\xFA\xF1\xD1\u011E\u011F\xBF\xAE\xAC\xBD\xBC\xA1\xAB\xBB\u2591\u2592\u2593\u2502\u2524\xC1\xC2\xC0\xA9\u2563\u2551\u2557\u255D\xA2\xA5\u2510\u2514\u2534\u252C\u251C\u2500\u253C\xE3\xC3\u255A\u2554\u2569\u2566\u2560\u2550\u256C\xA4\xBA\xAA\xCA\xCB\xC8\uFFFD\xCD\xCE\xCF\u2518\u250C\u2588\u2584\xA6\xCC\u2580\xD3\xDF\xD4\xD2\xF5\xD5\xB5\uFFFD\xD7\xDA\xDB\xD9\xEC\xFF\xAF\xB4\xAD\xB1\uFFFD\xBE\xB6\xA7\xF7\xB8\xB0\xA8\xB7\xB9\xB3\xB2\u25A0\xA0" }, ibm857: "cp857", csibm857: "cp857", cp858: { type: "_sbcs", chars: "\xC7\xFC\xE9\xE2\xE4\xE0\xE5\xE7\xEA\xEB\xE8\xEF\xEE\xEC\xC4\xC5\xC9\xE6\xC6\xF4\xF6\xF2\xFB\xF9\xFF\xD6\xDC\xF8\xA3\xD8\xD7\u0192\xE1\xED\xF3\xFA\xF1\xD1\xAA\xBA\xBF\xAE\xAC\xBD\xBC\xA1\xAB\xBB\u2591\u2592\u2593\u2502\u2524\xC1\xC2\xC0\xA9\u2563\u2551\u2557\u255D\xA2\xA5\u2510\u2514\u2534\u252C\u251C\u2500\u253C\xE3\xC3\u255A\u2554\u2569\u2566\u2560\u2550\u256C\xA4\xF0\xD0\xCA\xCB\xC8\u20AC\xCD\xCE\xCF\u2518\u250C\u2588\u2584\xA6\xCC\u2580\xD3\xDF\xD4\xD2\xF5\xD5\xB5\xFE\xDE\xDA\xDB\xD9\xFD\xDD\xAF\xB4\xAD\xB1\u2017\xBE\xB6\xA7\xF7\xB8\xB0\xA8\xB7\xB9\xB3\xB2\u25A0\xA0" }, ibm858: "cp858", csibm858: "cp858", cp860: { type: "_sbcs", chars: "\xC7\xFC\xE9\xE2\xE3\xE0\xC1\xE7\xEA\xCA\xE8\xCD\xD4\xEC\xC3\xC2\xC9\xC0\xC8\xF4\xF5\xF2\xDA\xF9\xCC\xD5\xDC\xA2\xA3\xD9\u20A7\xD3\xE1\xED\xF3\xFA\xF1\xD1\xAA\xBA\xBF\xD2\xAC\xBD\xBC\xA1\xAB\xBB\u2591\u2592\u2593\u2502\u2524\u2561\u2562\u2556\u2555\u2563\u2551\u2557\u255D\u255C\u255B\u2510\u2514\u2534\u252C\u251C\u2500\u253C\u255E\u255F\u255A\u2554\u2569\u2566\u2560\u2550\u256C\u2567\u2568\u2564\u2565\u2559\u2558\u2552\u2553\u256B\u256A\u2518\u250C\u2588\u2584\u258C\u2590\u2580\u03B1\xDF\u0393\u03C0\u03A3\u03C3\xB5\u03C4\u03A6\u0398\u03A9\u03B4\u221E\u03C6\u03B5\u2229\u2261\xB1\u2265\u2264\u2320\u2321\xF7\u2248\xB0\u2219\xB7\u221A\u207F\xB2\u25A0\xA0" }, ibm860: "cp860", csibm860: "cp860", cp861: { type: "_sbcs", chars: "\xC7\xFC\xE9\xE2\xE4\xE0\xE5\xE7\xEA\xEB\xE8\xD0\xF0\xDE\xC4\xC5\xC9\xE6\xC6\xF4\xF6\xFE\xFB\xDD\xFD\xD6\xDC\xF8\xA3\xD8\u20A7\u0192\xE1\xED\xF3\xFA\xC1\xCD\xD3\xDA\xBF\u2310\xAC\xBD\xBC\xA1\xAB\xBB\u2591\u2592\u2593\u2502\u2524\u2561\u2562\u2556\u2555\u2563\u2551\u2557\u255D\u255C\u255B\u2510\u2514\u2534\u252C\u251C\u2500\u253C\u255E\u255F\u255A\u2554\u2569\u2566\u2560\u2550\u256C\u2567\u2568\u2564\u2565\u2559\u2558\u2552\u2553\u256B\u256A\u2518\u250C\u2588\u2584\u258C\u2590\u2580\u03B1\xDF\u0393\u03C0\u03A3\u03C3\xB5\u03C4\u03A6\u0398\u03A9\u03B4\u221E\u03C6\u03B5\u2229\u2261\xB1\u2265\u2264\u2320\u2321\xF7\u2248\xB0\u2219\xB7\u221A\u207F\xB2\u25A0\xA0" }, ibm861: "cp861", csibm861: "cp861", cp862: { type: "_sbcs", chars: "\u05D0\u05D1\u05D2\u05D3\u05D4\u05D5\u05D6\u05D7\u05D8\u05D9\u05DA\u05DB\u05DC\u05DD\u05DE\u05DF\u05E0\u05E1\u05E2\u05E3\u05E4\u05E5\u05E6\u05E7\u05E8\u05E9\u05EA\xA2\xA3\xA5\u20A7\u0192\xE1\xED\xF3\xFA\xF1\xD1\xAA\xBA\xBF\u2310\xAC\xBD\xBC\xA1\xAB\xBB\u2591\u2592\u2593\u2502\u2524\u2561\u2562\u2556\u2555\u2563\u2551\u2557\u255D\u255C\u255B\u2510\u2514\u2534\u252C\u251C\u2500\u253C\u255E\u255F\u255A\u2554\u2569\u2566\u2560\u2550\u256C\u2567\u2568\u2564\u2565\u2559\u2558\u2552\u2553\u256B\u256A\u2518\u250C\u2588\u2584\u258C\u2590\u2580\u03B1\xDF\u0393\u03C0\u03A3\u03C3\xB5\u03C4\u03A6\u0398\u03A9\u03B4\u221E\u03C6\u03B5\u2229\u2261\xB1\u2265\u2264\u2320\u2321\xF7\u2248\xB0\u2219\xB7\u221A\u207F\xB2\u25A0\xA0" }, ibm862: "cp862", csibm862: "cp862", cp863: { type: "_sbcs", chars: "\xC7\xFC\xE9\xE2\xC2\xE0\xB6\xE7\xEA\xEB\xE8\xEF\xEE\u2017\xC0\xA7\xC9\xC8\xCA\xF4\xCB\xCF\xFB\xF9\xA4\xD4\xDC\xA2\xA3\xD9\xDB\u0192\xA6\xB4\xF3\xFA\xA8\xB8\xB3\xAF\xCE\u2310\xAC\xBD\xBC\xBE\xAB\xBB\u2591\u2592\u2593\u2502\u2524\u2561\u2562\u2556\u2555\u2563\u2551\u2557\u255D\u255C\u255B\u2510\u2514\u2534\u252C\u251C\u2500\u253C\u255E\u255F\u255A\u2554\u2569\u2566\u2560\u2550\u256C\u2567\u2568\u2564\u2565\u2559\u2558\u2552\u2553\u256B\u256A\u2518\u250C\u2588\u2584\u258C\u2590\u2580\u03B1\xDF\u0393\u03C0\u03A3\u03C3\xB5\u03C4\u03A6\u0398\u03A9\u03B4\u221E\u03C6\u03B5\u2229\u2261\xB1\u2265\u2264\u2320\u2321\xF7\u2248\xB0\u2219\xB7\u221A\u207F\xB2\u25A0\xA0" }, ibm863: "cp863", csibm863: "cp863", cp864: { type: "_sbcs", chars: `\0\x07\b +\v\f\r\x1B !"#$\u066A&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_\`abcdefghijklmnopqrstuvwxyz{|}~\x7F\xB0\xB7\u2219\u221A\u2592\u2500\u2502\u253C\u2524\u252C\u251C\u2534\u2510\u250C\u2514\u2518\u03B2\u221E\u03C6\xB1\xBD\xBC\u2248\xAB\xBB\uFEF7\uFEF8\uFFFD\uFFFD\uFEFB\uFEFC\uFFFD\xA0\xAD\uFE82\xA3\xA4\uFE84\uFFFD\uFFFD\uFE8E\uFE8F\uFE95\uFE99\u060C\uFE9D\uFEA1\uFEA5\u0660\u0661\u0662\u0663\u0664\u0665\u0666\u0667\u0668\u0669\uFED1\u061B\uFEB1\uFEB5\uFEB9\u061F\xA2\uFE80\uFE81\uFE83\uFE85\uFECA\uFE8B\uFE8D\uFE91\uFE93\uFE97\uFE9B\uFE9F\uFEA3\uFEA7\uFEA9\uFEAB\uFEAD\uFEAF\uFEB3\uFEB7\uFEBB\uFEBF\uFEC1\uFEC5\uFECB\uFECF\xA6\xAC\xF7\xD7\uFEC9\u0640\uFED3\uFED7\uFEDB\uFEDF\uFEE3\uFEE7\uFEEB\uFEED\uFEEF\uFEF3\uFEBD\uFECC\uFECE\uFECD\uFEE1\uFE7D\u0651\uFEE5\uFEE9\uFEEC\uFEF0\uFEF2\uFED0\uFED5\uFEF5\uFEF6\uFEDD\uFED9\uFEF1\u25A0\uFFFD` }, ibm864: "cp864", csibm864: "cp864", cp865: { type: "_sbcs", chars: "\xC7\xFC\xE9\xE2\xE4\xE0\xE5\xE7\xEA\xEB\xE8\xEF\xEE\xEC\xC4\xC5\xC9\xE6\xC6\xF4\xF6\xF2\xFB\xF9\xFF\xD6\xDC\xF8\xA3\xD8\u20A7\u0192\xE1\xED\xF3\xFA\xF1\xD1\xAA\xBA\xBF\u2310\xAC\xBD\xBC\xA1\xAB\xA4\u2591\u2592\u2593\u2502\u2524\u2561\u2562\u2556\u2555\u2563\u2551\u2557\u255D\u255C\u255B\u2510\u2514\u2534\u252C\u251C\u2500\u253C\u255E\u255F\u255A\u2554\u2569\u2566\u2560\u2550\u256C\u2567\u2568\u2564\u2565\u2559\u2558\u2552\u2553\u256B\u256A\u2518\u250C\u2588\u2584\u258C\u2590\u2580\u03B1\xDF\u0393\u03C0\u03A3\u03C3\xB5\u03C4\u03A6\u0398\u03A9\u03B4\u221E\u03C6\u03B5\u2229\u2261\xB1\u2265\u2264\u2320\u2321\xF7\u2248\xB0\u2219\xB7\u221A\u207F\xB2\u25A0\xA0" }, ibm865: "cp865", csibm865: "cp865", cp866: { type: "_sbcs", chars: "\u0410\u0411\u0412\u0413\u0414\u0415\u0416\u0417\u0418\u0419\u041A\u041B\u041C\u041D\u041E\u041F\u0420\u0421\u0422\u0423\u0424\u0425\u0426\u0427\u0428\u0429\u042A\u042B\u042C\u042D\u042E\u042F\u0430\u0431\u0432\u0433\u0434\u0435\u0436\u0437\u0438\u0439\u043A\u043B\u043C\u043D\u043E\u043F\u2591\u2592\u2593\u2502\u2524\u2561\u2562\u2556\u2555\u2563\u2551\u2557\u255D\u255C\u255B\u2510\u2514\u2534\u252C\u251C\u2500\u253C\u255E\u255F\u255A\u2554\u2569\u2566\u2560\u2550\u256C\u2567\u2568\u2564\u2565\u2559\u2558\u2552\u2553\u256B\u256A\u2518\u250C\u2588\u2584\u258C\u2590\u2580\u0440\u0441\u0442\u0443\u0444\u0445\u0446\u0447\u0448\u0449\u044A\u044B\u044C\u044D\u044E\u044F\u0401\u0451\u0404\u0454\u0407\u0457\u040E\u045E\xB0\u2219\xB7\u221A\u2116\xA4\u25A0\xA0" }, ibm866: "cp866", csibm866: "cp866", cp869: { type: "_sbcs", chars: "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u0386\uFFFD\xB7\xAC\xA6\u2018\u2019\u0388\u2015\u0389\u038A\u03AA\u038C\uFFFD\uFFFD\u038E\u03AB\xA9\u038F\xB2\xB3\u03AC\xA3\u03AD\u03AE\u03AF\u03CA\u0390\u03CC\u03CD\u0391\u0392\u0393\u0394\u0395\u0396\u0397\xBD\u0398\u0399\xAB\xBB\u2591\u2592\u2593\u2502\u2524\u039A\u039B\u039C\u039D\u2563\u2551\u2557\u255D\u039E\u039F\u2510\u2514\u2534\u252C\u251C\u2500\u253C\u03A0\u03A1\u255A\u2554\u2569\u2566\u2560\u2550\u256C\u03A3\u03A4\u03A5\u03A6\u03A7\u03A8\u03A9\u03B1\u03B2\u03B3\u2518\u250C\u2588\u2584\u03B4\u03B5\u2580\u03B6\u03B7\u03B8\u03B9\u03BA\u03BB\u03BC\u03BD\u03BE\u03BF\u03C0\u03C1\u03C3\u03C2\u03C4\u0384\xAD\xB1\u03C5\u03C6\u03C7\xA7\u03C8\u0385\xB0\xA8\u03C9\u03CB\u03B0\u03CE\u25A0\xA0" }, ibm869: "cp869", csibm869: "cp869", cp922: { type: "_sbcs", chars: "\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8A\x8B\x8C\x8D\x8E\x8F\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9A\x9B\x9C\x9D\x9E\x9F\xA0\xA1\xA2\xA3\xA4\xA5\xA6\xA7\xA8\xA9\xAA\xAB\xAC\xAD\xAE\u203E\xB0\xB1\xB2\xB3\xB4\xB5\xB6\xB7\xB8\xB9\xBA\xBB\xBC\xBD\xBE\xBF\xC0\xC1\xC2\xC3\xC4\xC5\xC6\xC7\xC8\xC9\xCA\xCB\xCC\xCD\xCE\xCF\u0160\xD1\xD2\xD3\xD4\xD5\xD6\xD7\xD8\xD9\xDA\xDB\xDC\xDD\u017D\xDF\xE0\xE1\xE2\xE3\xE4\xE5\xE6\xE7\xE8\xE9\xEA\xEB\xEC\xED\xEE\xEF\u0161\xF1\xF2\xF3\xF4\xF5\xF6\xF7\xF8\xF9\xFA\xFB\xFC\xFD\u017E\xFF" }, ibm922: "cp922", csibm922: "cp922", cp1046: { type: "_sbcs", chars: "\uFE88\xD7\xF7\uF8F6\uF8F5\uF8F4\uF8F7\uFE71\x88\u25A0\u2502\u2500\u2510\u250C\u2514\u2518\uFE79\uFE7B\uFE7D\uFE7F\uFE77\uFE8A\uFEF0\uFEF3\uFEF2\uFECE\uFECF\uFED0\uFEF6\uFEF8\uFEFA\uFEFC\xA0\uF8FA\uF8F9\uF8F8\xA4\uF8FB\uFE8B\uFE91\uFE97\uFE9B\uFE9F\uFEA3\u060C\xAD\uFEA7\uFEB3\u0660\u0661\u0662\u0663\u0664\u0665\u0666\u0667\u0668\u0669\uFEB7\u061B\uFEBB\uFEBF\uFECA\u061F\uFECB\u0621\u0622\u0623\u0624\u0625\u0626\u0627\u0628\u0629\u062A\u062B\u062C\u062D\u062E\u062F\u0630\u0631\u0632\u0633\u0634\u0635\u0636\u0637\uFEC7\u0639\u063A\uFECC\uFE82\uFE84\uFE8E\uFED3\u0640\u0641\u0642\u0643\u0644\u0645\u0646\u0647\u0648\u0649\u064A\u064B\u064C\u064D\u064E\u064F\u0650\u0651\u0652\uFED7\uFEDB\uFEDF\uF8FC\uFEF5\uFEF7\uFEF9\uFEFB\uFEE3\uFEE7\uFEEC\uFEE9\uFFFD" }, ibm1046: "cp1046", csibm1046: "cp1046", cp1124: { type: "_sbcs", chars: "\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8A\x8B\x8C\x8D\x8E\x8F\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9A\x9B\x9C\x9D\x9E\x9F\xA0\u0401\u0402\u0490\u0404\u0405\u0406\u0407\u0408\u0409\u040A\u040B\u040C\xAD\u040E\u040F\u0410\u0411\u0412\u0413\u0414\u0415\u0416\u0417\u0418\u0419\u041A\u041B\u041C\u041D\u041E\u041F\u0420\u0421\u0422\u0423\u0424\u0425\u0426\u0427\u0428\u0429\u042A\u042B\u042C\u042D\u042E\u042F\u0430\u0431\u0432\u0433\u0434\u0435\u0436\u0437\u0438\u0439\u043A\u043B\u043C\u043D\u043E\u043F\u0440\u0441\u0442\u0443\u0444\u0445\u0446\u0447\u0448\u0449\u044A\u044B\u044C\u044D\u044E\u044F\u2116\u0451\u0452\u0491\u0454\u0455\u0456\u0457\u0458\u0459\u045A\u045B\u045C\xA7\u045E\u045F" }, ibm1124: "cp1124", csibm1124: "cp1124", cp1125: { type: "_sbcs", chars: "\u0410\u0411\u0412\u0413\u0414\u0415\u0416\u0417\u0418\u0419\u041A\u041B\u041C\u041D\u041E\u041F\u0420\u0421\u0422\u0423\u0424\u0425\u0426\u0427\u0428\u0429\u042A\u042B\u042C\u042D\u042E\u042F\u0430\u0431\u0432\u0433\u0434\u0435\u0436\u0437\u0438\u0439\u043A\u043B\u043C\u043D\u043E\u043F\u2591\u2592\u2593\u2502\u2524\u2561\u2562\u2556\u2555\u2563\u2551\u2557\u255D\u255C\u255B\u2510\u2514\u2534\u252C\u251C\u2500\u253C\u255E\u255F\u255A\u2554\u2569\u2566\u2560\u2550\u256C\u2567\u2568\u2564\u2565\u2559\u2558\u2552\u2553\u256B\u256A\u2518\u250C\u2588\u2584\u258C\u2590\u2580\u0440\u0441\u0442\u0443\u0444\u0445\u0446\u0447\u0448\u0449\u044A\u044B\u044C\u044D\u044E\u044F\u0401\u0451\u0490\u0491\u0404\u0454\u0406\u0456\u0407\u0457\xB7\u221A\u2116\xA4\u25A0\xA0" }, ibm1125: "cp1125", csibm1125: "cp1125", cp1129: { type: "_sbcs", chars: "\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8A\x8B\x8C\x8D\x8E\x8F\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9A\x9B\x9C\x9D\x9E\x9F\xA0\xA1\xA2\xA3\xA4\xA5\xA6\xA7\u0153\xA9\xAA\xAB\xAC\xAD\xAE\xAF\xB0\xB1\xB2\xB3\u0178\xB5\xB6\xB7\u0152\xB9\xBA\xBB\xBC\xBD\xBE\xBF\xC0\xC1\xC2\u0102\xC4\xC5\xC6\xC7\xC8\xC9\xCA\xCB\u0300\xCD\xCE\xCF\u0110\xD1\u0309\xD3\xD4\u01A0\xD6\xD7\xD8\xD9\xDA\xDB\xDC\u01AF\u0303\xDF\xE0\xE1\xE2\u0103\xE4\xE5\xE6\xE7\xE8\xE9\xEA\xEB\u0301\xED\xEE\xEF\u0111\xF1\u0323\xF3\xF4\u01A1\xF6\xF7\xF8\xF9\xFA\xFB\xFC\u01B0\u20AB\xFF" }, ibm1129: "cp1129", csibm1129: "cp1129", cp1133: { type: "_sbcs", chars: "\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8A\x8B\x8C\x8D\x8E\x8F\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9A\x9B\x9C\x9D\x9E\x9F\xA0\u0E81\u0E82\u0E84\u0E87\u0E88\u0EAA\u0E8A\u0E8D\u0E94\u0E95\u0E96\u0E97\u0E99\u0E9A\u0E9B\u0E9C\u0E9D\u0E9E\u0E9F\u0EA1\u0EA2\u0EA3\u0EA5\u0EA7\u0EAB\u0EAD\u0EAE\uFFFD\uFFFD\uFFFD\u0EAF\u0EB0\u0EB2\u0EB3\u0EB4\u0EB5\u0EB6\u0EB7\u0EB8\u0EB9\u0EBC\u0EB1\u0EBB\u0EBD\uFFFD\uFFFD\uFFFD\u0EC0\u0EC1\u0EC2\u0EC3\u0EC4\u0EC8\u0EC9\u0ECA\u0ECB\u0ECC\u0ECD\u0EC6\uFFFD\u0EDC\u0EDD\u20AD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u0ED0\u0ED1\u0ED2\u0ED3\u0ED4\u0ED5\u0ED6\u0ED7\u0ED8\u0ED9\uFFFD\uFFFD\xA2\xAC\xA6\uFFFD" }, ibm1133: "cp1133", csibm1133: "cp1133", cp1161: { type: "_sbcs", chars: "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u0E48\u0E01\u0E02\u0E03\u0E04\u0E05\u0E06\u0E07\u0E08\u0E09\u0E0A\u0E0B\u0E0C\u0E0D\u0E0E\u0E0F\u0E10\u0E11\u0E12\u0E13\u0E14\u0E15\u0E16\u0E17\u0E18\u0E19\u0E1A\u0E1B\u0E1C\u0E1D\u0E1E\u0E1F\u0E20\u0E21\u0E22\u0E23\u0E24\u0E25\u0E26\u0E27\u0E28\u0E29\u0E2A\u0E2B\u0E2C\u0E2D\u0E2E\u0E2F\u0E30\u0E31\u0E32\u0E33\u0E34\u0E35\u0E36\u0E37\u0E38\u0E39\u0E3A\u0E49\u0E4A\u0E4B\u20AC\u0E3F\u0E40\u0E41\u0E42\u0E43\u0E44\u0E45\u0E46\u0E47\u0E48\u0E49\u0E4A\u0E4B\u0E4C\u0E4D\u0E4E\u0E4F\u0E50\u0E51\u0E52\u0E53\u0E54\u0E55\u0E56\u0E57\u0E58\u0E59\u0E5A\u0E5B\xA2\xAC\xA6\xA0" }, ibm1161: "cp1161", csibm1161: "cp1161", cp1162: { type: "_sbcs", chars: "\u20AC\x81\x82\x83\x84\u2026\x86\x87\x88\x89\x8A\x8B\x8C\x8D\x8E\x8F\x90\u2018\u2019\u201C\u201D\u2022\u2013\u2014\x98\x99\x9A\x9B\x9C\x9D\x9E\x9F\xA0\u0E01\u0E02\u0E03\u0E04\u0E05\u0E06\u0E07\u0E08\u0E09\u0E0A\u0E0B\u0E0C\u0E0D\u0E0E\u0E0F\u0E10\u0E11\u0E12\u0E13\u0E14\u0E15\u0E16\u0E17\u0E18\u0E19\u0E1A\u0E1B\u0E1C\u0E1D\u0E1E\u0E1F\u0E20\u0E21\u0E22\u0E23\u0E24\u0E25\u0E26\u0E27\u0E28\u0E29\u0E2A\u0E2B\u0E2C\u0E2D\u0E2E\u0E2F\u0E30\u0E31\u0E32\u0E33\u0E34\u0E35\u0E36\u0E37\u0E38\u0E39\u0E3A\uFFFD\uFFFD\uFFFD\uFFFD\u0E3F\u0E40\u0E41\u0E42\u0E43\u0E44\u0E45\u0E46\u0E47\u0E48\u0E49\u0E4A\u0E4B\u0E4C\u0E4D\u0E4E\u0E4F\u0E50\u0E51\u0E52\u0E53\u0E54\u0E55\u0E56\u0E57\u0E58\u0E59\u0E5A\u0E5B\uFFFD\uFFFD\uFFFD\uFFFD" }, ibm1162: "cp1162", csibm1162: "cp1162", cp1163: { type: "_sbcs", chars: "\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8A\x8B\x8C\x8D\x8E\x8F\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9A\x9B\x9C\x9D\x9E\x9F\xA0\xA1\xA2\xA3\u20AC\xA5\xA6\xA7\u0153\xA9\xAA\xAB\xAC\xAD\xAE\xAF\xB0\xB1\xB2\xB3\u0178\xB5\xB6\xB7\u0152\xB9\xBA\xBB\xBC\xBD\xBE\xBF\xC0\xC1\xC2\u0102\xC4\xC5\xC6\xC7\xC8\xC9\xCA\xCB\u0300\xCD\xCE\xCF\u0110\xD1\u0309\xD3\xD4\u01A0\xD6\xD7\xD8\xD9\xDA\xDB\xDC\u01AF\u0303\xDF\xE0\xE1\xE2\u0103\xE4\xE5\xE6\xE7\xE8\xE9\xEA\xEB\u0301\xED\xEE\xEF\u0111\xF1\u0323\xF3\xF4\u01A1\xF6\xF7\xF8\xF9\xFA\xFB\xFC\u01B0\u20AB\xFF" }, ibm1163: "cp1163", csibm1163: "cp1163", maccroatian: { type: "_sbcs", chars: "\xC4\xC5\xC7\xC9\xD1\xD6\xDC\xE1\xE0\xE2\xE4\xE3\xE5\xE7\xE9\xE8\xEA\xEB\xED\xEC\xEE\xEF\xF1\xF3\xF2\xF4\xF6\xF5\xFA\xF9\xFB\xFC\u2020\xB0\xA2\xA3\xA7\u2022\xB6\xDF\xAE\u0160\u2122\xB4\xA8\u2260\u017D\xD8\u221E\xB1\u2264\u2265\u2206\xB5\u2202\u2211\u220F\u0161\u222B\xAA\xBA\u2126\u017E\xF8\xBF\xA1\xAC\u221A\u0192\u2248\u0106\xAB\u010C\u2026\xA0\xC0\xC3\xD5\u0152\u0153\u0110\u2014\u201C\u201D\u2018\u2019\xF7\u25CA\uFFFD\xA9\u2044\xA4\u2039\u203A\xC6\xBB\u2013\xB7\u201A\u201E\u2030\xC2\u0107\xC1\u010D\xC8\xCD\xCE\xCF\xCC\xD3\xD4\u0111\xD2\xDA\xDB\xD9\u0131\u02C6\u02DC\xAF\u03C0\xCB\u02DA\xB8\xCA\xE6\u02C7" }, maccyrillic: { type: "_sbcs", chars: "\u0410\u0411\u0412\u0413\u0414\u0415\u0416\u0417\u0418\u0419\u041A\u041B\u041C\u041D\u041E\u041F\u0420\u0421\u0422\u0423\u0424\u0425\u0426\u0427\u0428\u0429\u042A\u042B\u042C\u042D\u042E\u042F\u2020\xB0\xA2\xA3\xA7\u2022\xB6\u0406\xAE\xA9\u2122\u0402\u0452\u2260\u0403\u0453\u221E\xB1\u2264\u2265\u0456\xB5\u2202\u0408\u0404\u0454\u0407\u0457\u0409\u0459\u040A\u045A\u0458\u0405\xAC\u221A\u0192\u2248\u2206\xAB\xBB\u2026\xA0\u040B\u045B\u040C\u045C\u0455\u2013\u2014\u201C\u201D\u2018\u2019\xF7\u201E\u040E\u045E\u040F\u045F\u2116\u0401\u0451\u044F\u0430\u0431\u0432\u0433\u0434\u0435\u0436\u0437\u0438\u0439\u043A\u043B\u043C\u043D\u043E\u043F\u0440\u0441\u0442\u0443\u0444\u0445\u0446\u0447\u0448\u0449\u044A\u044B\u044C\u044D\u044E\xA4" }, macgreek: { type: "_sbcs", chars: "\xC4\xB9\xB2\xC9\xB3\xD6\xDC\u0385\xE0\xE2\xE4\u0384\xA8\xE7\xE9\xE8\xEA\xEB\xA3\u2122\xEE\xEF\u2022\xBD\u2030\xF4\xF6\xA6\xAD\xF9\xFB\xFC\u2020\u0393\u0394\u0398\u039B\u039E\u03A0\xDF\xAE\xA9\u03A3\u03AA\xA7\u2260\xB0\u0387\u0391\xB1\u2264\u2265\xA5\u0392\u0395\u0396\u0397\u0399\u039A\u039C\u03A6\u03AB\u03A8\u03A9\u03AC\u039D\xAC\u039F\u03A1\u2248\u03A4\xAB\xBB\u2026\xA0\u03A5\u03A7\u0386\u0388\u0153\u2013\u2015\u201C\u201D\u2018\u2019\xF7\u0389\u038A\u038C\u038E\u03AD\u03AE\u03AF\u03CC\u038F\u03CD\u03B1\u03B2\u03C8\u03B4\u03B5\u03C6\u03B3\u03B7\u03B9\u03BE\u03BA\u03BB\u03BC\u03BD\u03BF\u03C0\u03CE\u03C1\u03C3\u03C4\u03B8\u03C9\u03C2\u03C7\u03C5\u03B6\u03CA\u03CB\u0390\u03B0\uFFFD" }, maciceland: { type: "_sbcs", chars: "\xC4\xC5\xC7\xC9\xD1\xD6\xDC\xE1\xE0\xE2\xE4\xE3\xE5\xE7\xE9\xE8\xEA\xEB\xED\xEC\xEE\xEF\xF1\xF3\xF2\xF4\xF6\xF5\xFA\xF9\xFB\xFC\xDD\xB0\xA2\xA3\xA7\u2022\xB6\xDF\xAE\xA9\u2122\xB4\xA8\u2260\xC6\xD8\u221E\xB1\u2264\u2265\xA5\xB5\u2202\u2211\u220F\u03C0\u222B\xAA\xBA\u2126\xE6\xF8\xBF\xA1\xAC\u221A\u0192\u2248\u2206\xAB\xBB\u2026\xA0\xC0\xC3\xD5\u0152\u0153\u2013\u2014\u201C\u201D\u2018\u2019\xF7\u25CA\xFF\u0178\u2044\xA4\xD0\xF0\xDE\xFE\xFD\xB7\u201A\u201E\u2030\xC2\xCA\xC1\xCB\xC8\xCD\xCE\xCF\xCC\xD3\xD4\uFFFD\xD2\xDA\xDB\xD9\u0131\u02C6\u02DC\xAF\u02D8\u02D9\u02DA\xB8\u02DD\u02DB\u02C7" }, macroman: { type: "_sbcs", chars: "\xC4\xC5\xC7\xC9\xD1\xD6\xDC\xE1\xE0\xE2\xE4\xE3\xE5\xE7\xE9\xE8\xEA\xEB\xED\xEC\xEE\xEF\xF1\xF3\xF2\xF4\xF6\xF5\xFA\xF9\xFB\xFC\u2020\xB0\xA2\xA3\xA7\u2022\xB6\xDF\xAE\xA9\u2122\xB4\xA8\u2260\xC6\xD8\u221E\xB1\u2264\u2265\xA5\xB5\u2202\u2211\u220F\u03C0\u222B\xAA\xBA\u2126\xE6\xF8\xBF\xA1\xAC\u221A\u0192\u2248\u2206\xAB\xBB\u2026\xA0\xC0\xC3\xD5\u0152\u0153\u2013\u2014\u201C\u201D\u2018\u2019\xF7\u25CA\xFF\u0178\u2044\xA4\u2039\u203A\uFB01\uFB02\u2021\xB7\u201A\u201E\u2030\xC2\xCA\xC1\xCB\xC8\xCD\xCE\xCF\xCC\xD3\xD4\uFFFD\xD2\xDA\xDB\xD9\u0131\u02C6\u02DC\xAF\u02D8\u02D9\u02DA\xB8\u02DD\u02DB\u02C7" }, macromania: { type: "_sbcs", chars: "\xC4\xC5\xC7\xC9\xD1\xD6\xDC\xE1\xE0\xE2\xE4\xE3\xE5\xE7\xE9\xE8\xEA\xEB\xED\xEC\xEE\xEF\xF1\xF3\xF2\xF4\xF6\xF5\xFA\xF9\xFB\xFC\u2020\xB0\xA2\xA3\xA7\u2022\xB6\xDF\xAE\xA9\u2122\xB4\xA8\u2260\u0102\u015E\u221E\xB1\u2264\u2265\xA5\xB5\u2202\u2211\u220F\u03C0\u222B\xAA\xBA\u2126\u0103\u015F\xBF\xA1\xAC\u221A\u0192\u2248\u2206\xAB\xBB\u2026\xA0\xC0\xC3\xD5\u0152\u0153\u2013\u2014\u201C\u201D\u2018\u2019\xF7\u25CA\xFF\u0178\u2044\xA4\u2039\u203A\u0162\u0163\u2021\xB7\u201A\u201E\u2030\xC2\xCA\xC1\xCB\xC8\xCD\xCE\xCF\xCC\xD3\xD4\uFFFD\xD2\xDA\xDB\xD9\u0131\u02C6\u02DC\xAF\u02D8\u02D9\u02DA\xB8\u02DD\u02DB\u02C7" }, macthai: { type: "_sbcs", chars: "\xAB\xBB\u2026\uF88C\uF88F\uF892\uF895\uF898\uF88B\uF88E\uF891\uF894\uF897\u201C\u201D\uF899\uFFFD\u2022\uF884\uF889\uF885\uF886\uF887\uF888\uF88A\uF88D\uF890\uF893\uF896\u2018\u2019\uFFFD\xA0\u0E01\u0E02\u0E03\u0E04\u0E05\u0E06\u0E07\u0E08\u0E09\u0E0A\u0E0B\u0E0C\u0E0D\u0E0E\u0E0F\u0E10\u0E11\u0E12\u0E13\u0E14\u0E15\u0E16\u0E17\u0E18\u0E19\u0E1A\u0E1B\u0E1C\u0E1D\u0E1E\u0E1F\u0E20\u0E21\u0E22\u0E23\u0E24\u0E25\u0E26\u0E27\u0E28\u0E29\u0E2A\u0E2B\u0E2C\u0E2D\u0E2E\u0E2F\u0E30\u0E31\u0E32\u0E33\u0E34\u0E35\u0E36\u0E37\u0E38\u0E39\u0E3A\uFEFF\u200B\u2013\u2014\u0E3F\u0E40\u0E41\u0E42\u0E43\u0E44\u0E45\u0E46\u0E47\u0E48\u0E49\u0E4A\u0E4B\u0E4C\u0E4D\u2122\u0E4F\u0E50\u0E51\u0E52\u0E53\u0E54\u0E55\u0E56\u0E57\u0E58\u0E59\xAE\xA9\uFFFD\uFFFD\uFFFD\uFFFD" }, macturkish: { type: "_sbcs", chars: "\xC4\xC5\xC7\xC9\xD1\xD6\xDC\xE1\xE0\xE2\xE4\xE3\xE5\xE7\xE9\xE8\xEA\xEB\xED\xEC\xEE\xEF\xF1\xF3\xF2\xF4\xF6\xF5\xFA\xF9\xFB\xFC\u2020\xB0\xA2\xA3\xA7\u2022\xB6\xDF\xAE\xA9\u2122\xB4\xA8\u2260\xC6\xD8\u221E\xB1\u2264\u2265\xA5\xB5\u2202\u2211\u220F\u03C0\u222B\xAA\xBA\u2126\xE6\xF8\xBF\xA1\xAC\u221A\u0192\u2248\u2206\xAB\xBB\u2026\xA0\xC0\xC3\xD5\u0152\u0153\u2013\u2014\u201C\u201D\u2018\u2019\xF7\u25CA\xFF\u0178\u011E\u011F\u0130\u0131\u015E\u015F\u2021\xB7\u201A\u201E\u2030\xC2\xCA\xC1\xCB\xC8\xCD\xCE\xCF\xCC\xD3\xD4\uFFFD\xD2\xDA\xDB\xD9\uFFFD\u02C6\u02DC\xAF\u02D8\u02D9\u02DA\xB8\u02DD\u02DB\u02C7" }, macukraine: { type: "_sbcs", chars: "\u0410\u0411\u0412\u0413\u0414\u0415\u0416\u0417\u0418\u0419\u041A\u041B\u041C\u041D\u041E\u041F\u0420\u0421\u0422\u0423\u0424\u0425\u0426\u0427\u0428\u0429\u042A\u042B\u042C\u042D\u042E\u042F\u2020\xB0\u0490\xA3\xA7\u2022\xB6\u0406\xAE\xA9\u2122\u0402\u0452\u2260\u0403\u0453\u221E\xB1\u2264\u2265\u0456\xB5\u0491\u0408\u0404\u0454\u0407\u0457\u0409\u0459\u040A\u045A\u0458\u0405\xAC\u221A\u0192\u2248\u2206\xAB\xBB\u2026\xA0\u040B\u045B\u040C\u045C\u0455\u2013\u2014\u201C\u201D\u2018\u2019\xF7\u201E\u040E\u045E\u040F\u045F\u2116\u0401\u0451\u044F\u0430\u0431\u0432\u0433\u0434\u0435\u0436\u0437\u0438\u0439\u043A\u043B\u043C\u043D\u043E\u043F\u0440\u0441\u0442\u0443\u0444\u0445\u0446\u0447\u0448\u0449\u044A\u044B\u044C\u044D\u044E\xA4" }, koi8r: { type: "_sbcs", chars: "\u2500\u2502\u250C\u2510\u2514\u2518\u251C\u2524\u252C\u2534\u253C\u2580\u2584\u2588\u258C\u2590\u2591\u2592\u2593\u2320\u25A0\u2219\u221A\u2248\u2264\u2265\xA0\u2321\xB0\xB2\xB7\xF7\u2550\u2551\u2552\u0451\u2553\u2554\u2555\u2556\u2557\u2558\u2559\u255A\u255B\u255C\u255D\u255E\u255F\u2560\u2561\u0401\u2562\u2563\u2564\u2565\u2566\u2567\u2568\u2569\u256A\u256B\u256C\xA9\u044E\u0430\u0431\u0446\u0434\u0435\u0444\u0433\u0445\u0438\u0439\u043A\u043B\u043C\u043D\u043E\u043F\u044F\u0440\u0441\u0442\u0443\u0436\u0432\u044C\u044B\u0437\u0448\u044D\u0449\u0447\u044A\u042E\u0410\u0411\u0426\u0414\u0415\u0424\u0413\u0425\u0418\u0419\u041A\u041B\u041C\u041D\u041E\u041F\u042F\u0420\u0421\u0422\u0423\u0416\u0412\u042C\u042B\u0417\u0428\u042D\u0429\u0427\u042A" }, koi8u: { type: "_sbcs", chars: "\u2500\u2502\u250C\u2510\u2514\u2518\u251C\u2524\u252C\u2534\u253C\u2580\u2584\u2588\u258C\u2590\u2591\u2592\u2593\u2320\u25A0\u2219\u221A\u2248\u2264\u2265\xA0\u2321\xB0\xB2\xB7\xF7\u2550\u2551\u2552\u0451\u0454\u2554\u0456\u0457\u2557\u2558\u2559\u255A\u255B\u0491\u255D\u255E\u255F\u2560\u2561\u0401\u0404\u2563\u0406\u0407\u2566\u2567\u2568\u2569\u256A\u0490\u256C\xA9\u044E\u0430\u0431\u0446\u0434\u0435\u0444\u0433\u0445\u0438\u0439\u043A\u043B\u043C\u043D\u043E\u043F\u044F\u0440\u0441\u0442\u0443\u0436\u0432\u044C\u044B\u0437\u0448\u044D\u0449\u0447\u044A\u042E\u0410\u0411\u0426\u0414\u0415\u0424\u0413\u0425\u0418\u0419\u041A\u041B\u041C\u041D\u041E\u041F\u042F\u0420\u0421\u0422\u0423\u0416\u0412\u042C\u042B\u0417\u0428\u042D\u0429\u0427\u042A" }, koi8ru: { type: "_sbcs", chars: "\u2500\u2502\u250C\u2510\u2514\u2518\u251C\u2524\u252C\u2534\u253C\u2580\u2584\u2588\u258C\u2590\u2591\u2592\u2593\u2320\u25A0\u2219\u221A\u2248\u2264\u2265\xA0\u2321\xB0\xB2\xB7\xF7\u2550\u2551\u2552\u0451\u0454\u2554\u0456\u0457\u2557\u2558\u2559\u255A\u255B\u0491\u045E\u255E\u255F\u2560\u2561\u0401\u0404\u2563\u0406\u0407\u2566\u2567\u2568\u2569\u256A\u0490\u040E\xA9\u044E\u0430\u0431\u0446\u0434\u0435\u0444\u0433\u0445\u0438\u0439\u043A\u043B\u043C\u043D\u043E\u043F\u044F\u0440\u0441\u0442\u0443\u0436\u0432\u044C\u044B\u0437\u0448\u044D\u0449\u0447\u044A\u042E\u0410\u0411\u0426\u0414\u0415\u0424\u0413\u0425\u0418\u0419\u041A\u041B\u041C\u041D\u041E\u041F\u042F\u0420\u0421\u0422\u0423\u0416\u0412\u042C\u042B\u0417\u0428\u042D\u0429\u0427\u042A" }, koi8t: { type: "_sbcs", chars: "\u049B\u0493\u201A\u0492\u201E\u2026\u2020\u2021\uFFFD\u2030\u04B3\u2039\u04B2\u04B7\u04B6\uFFFD\u049A\u2018\u2019\u201C\u201D\u2022\u2013\u2014\uFFFD\u2122\uFFFD\u203A\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u04EF\u04EE\u0451\xA4\u04E3\xA6\xA7\uFFFD\uFFFD\uFFFD\xAB\xAC\xAD\xAE\uFFFD\xB0\xB1\xB2\u0401\uFFFD\u04E2\xB6\xB7\uFFFD\u2116\uFFFD\xBB\uFFFD\uFFFD\uFFFD\xA9\u044E\u0430\u0431\u0446\u0434\u0435\u0444\u0433\u0445\u0438\u0439\u043A\u043B\u043C\u043D\u043E\u043F\u044F\u0440\u0441\u0442\u0443\u0436\u0432\u044C\u044B\u0437\u0448\u044D\u0449\u0447\u044A\u042E\u0410\u0411\u0426\u0414\u0415\u0424\u0413\u0425\u0418\u0419\u041A\u041B\u041C\u041D\u041E\u041F\u042F\u0420\u0421\u0422\u0423\u0416\u0412\u042C\u042B\u0417\u0428\u042D\u0429\u0427\u042A" }, armscii8: { type: "_sbcs", chars: "\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8A\x8B\x8C\x8D\x8E\x8F\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9A\x9B\x9C\x9D\x9E\x9F\xA0\uFFFD\u0587\u0589)(\xBB\xAB\u2014.\u055D,-\u058A\u2026\u055C\u055B\u055E\u0531\u0561\u0532\u0562\u0533\u0563\u0534\u0564\u0535\u0565\u0536\u0566\u0537\u0567\u0538\u0568\u0539\u0569\u053A\u056A\u053B\u056B\u053C\u056C\u053D\u056D\u053E\u056E\u053F\u056F\u0540\u0570\u0541\u0571\u0542\u0572\u0543\u0573\u0544\u0574\u0545\u0575\u0546\u0576\u0547\u0577\u0548\u0578\u0549\u0579\u054A\u057A\u054B\u057B\u054C\u057C\u054D\u057D\u054E\u057E\u054F\u057F\u0550\u0580\u0551\u0581\u0552\u0582\u0553\u0583\u0554\u0584\u0555\u0585\u0556\u0586\u055A\uFFFD" }, rk1048: { type: "_sbcs", chars: "\u0402\u0403\u201A\u0453\u201E\u2026\u2020\u2021\u20AC\u2030\u0409\u2039\u040A\u049A\u04BA\u040F\u0452\u2018\u2019\u201C\u201D\u2022\u2013\u2014\uFFFD\u2122\u0459\u203A\u045A\u049B\u04BB\u045F\xA0\u04B0\u04B1\u04D8\xA4\u04E8\xA6\xA7\u0401\xA9\u0492\xAB\xAC\xAD\xAE\u04AE\xB0\xB1\u0406\u0456\u04E9\xB5\xB6\xB7\u0451\u2116\u0493\xBB\u04D9\u04A2\u04A3\u04AF\u0410\u0411\u0412\u0413\u0414\u0415\u0416\u0417\u0418\u0419\u041A\u041B\u041C\u041D\u041E\u041F\u0420\u0421\u0422\u0423\u0424\u0425\u0426\u0427\u0428\u0429\u042A\u042B\u042C\u042D\u042E\u042F\u0430\u0431\u0432\u0433\u0434\u0435\u0436\u0437\u0438\u0439\u043A\u043B\u043C\u043D\u043E\u043F\u0440\u0441\u0442\u0443\u0444\u0445\u0446\u0447\u0448\u0449\u044A\u044B\u044C\u044D\u044E\u044F" }, tcvn: { type: "_sbcs", chars: `\0\xDA\u1EE4\u1EEA\u1EEC\u1EEE\x07\b +\v\f\r\u1EE8\u1EF0\u1EF2\u1EF6\u1EF8\xDD\u1EF4\x1B !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_\`abcdefghijklmnopqrstuvwxyz{|}~\x7F\xC0\u1EA2\xC3\xC1\u1EA0\u1EB6\u1EAC\xC8\u1EBA\u1EBC\xC9\u1EB8\u1EC6\xCC\u1EC8\u0128\xCD\u1ECA\xD2\u1ECE\xD5\xD3\u1ECC\u1ED8\u1EDC\u1EDE\u1EE0\u1EDA\u1EE2\xD9\u1EE6\u0168\xA0\u0102\xC2\xCA\xD4\u01A0\u01AF\u0110\u0103\xE2\xEA\xF4\u01A1\u01B0\u0111\u1EB0\u0300\u0309\u0303\u0301\u0323\xE0\u1EA3\xE3\xE1\u1EA1\u1EB2\u1EB1\u1EB3\u1EB5\u1EAF\u1EB4\u1EAE\u1EA6\u1EA8\u1EAA\u1EA4\u1EC0\u1EB7\u1EA7\u1EA9\u1EAB\u1EA5\u1EAD\xE8\u1EC2\u1EBB\u1EBD\xE9\u1EB9\u1EC1\u1EC3\u1EC5\u1EBF\u1EC7\xEC\u1EC9\u1EC4\u1EBE\u1ED2\u0129\xED\u1ECB\xF2\u1ED4\u1ECF\xF5\xF3\u1ECD\u1ED3\u1ED5\u1ED7\u1ED1\u1ED9\u1EDD\u1EDF\u1EE1\u1EDB\u1EE3\xF9\u1ED6\u1EE7\u0169\xFA\u1EE5\u1EEB\u1EED\u1EEF\u1EE9\u1EF1\u1EF3\u1EF7\u1EF9\xFD\u1EF5\u1ED0` }, georgianacademy: { type: "_sbcs", chars: "\x80\x81\u201A\u0192\u201E\u2026\u2020\u2021\u02C6\u2030\u0160\u2039\u0152\x8D\x8E\x8F\x90\u2018\u2019\u201C\u201D\u2022\u2013\u2014\u02DC\u2122\u0161\u203A\u0153\x9D\x9E\u0178\xA0\xA1\xA2\xA3\xA4\xA5\xA6\xA7\xA8\xA9\xAA\xAB\xAC\xAD\xAE\xAF\xB0\xB1\xB2\xB3\xB4\xB5\xB6\xB7\xB8\xB9\xBA\xBB\xBC\xBD\xBE\xBF\u10D0\u10D1\u10D2\u10D3\u10D4\u10D5\u10D6\u10D7\u10D8\u10D9\u10DA\u10DB\u10DC\u10DD\u10DE\u10DF\u10E0\u10E1\u10E2\u10E3\u10E4\u10E5\u10E6\u10E7\u10E8\u10E9\u10EA\u10EB\u10EC\u10ED\u10EE\u10EF\u10F0\u10F1\u10F2\u10F3\u10F4\u10F5\u10F6\xE7\xE8\xE9\xEA\xEB\xEC\xED\xEE\xEF\xF0\xF1\xF2\xF3\xF4\xF5\xF6\xF7\xF8\xF9\xFA\xFB\xFC\xFD\xFE\xFF" }, georgianps: { type: "_sbcs", chars: "\x80\x81\u201A\u0192\u201E\u2026\u2020\u2021\u02C6\u2030\u0160\u2039\u0152\x8D\x8E\x8F\x90\u2018\u2019\u201C\u201D\u2022\u2013\u2014\u02DC\u2122\u0161\u203A\u0153\x9D\x9E\u0178\xA0\xA1\xA2\xA3\xA4\xA5\xA6\xA7\xA8\xA9\xAA\xAB\xAC\xAD\xAE\xAF\xB0\xB1\xB2\xB3\xB4\xB5\xB6\xB7\xB8\xB9\xBA\xBB\xBC\xBD\xBE\xBF\u10D0\u10D1\u10D2\u10D3\u10D4\u10D5\u10D6\u10F1\u10D7\u10D8\u10D9\u10DA\u10DB\u10DC\u10F2\u10DD\u10DE\u10DF\u10E0\u10E1\u10E2\u10F3\u10E3\u10E4\u10E5\u10E6\u10E7\u10E8\u10E9\u10EA\u10EB\u10EC\u10ED\u10EE\u10F4\u10EF\u10F0\u10F5\xE6\xE7\xE8\xE9\xEA\xEB\xEC\xED\xEE\xEF\xF0\xF1\xF2\xF3\xF4\xF5\xF6\xF7\xF8\xF9\xFA\xFB\xFC\xFD\xFE\xFF" }, pt154: { type: "_sbcs", chars: "\u0496\u0492\u04EE\u0493\u201E\u2026\u04B6\u04AE\u04B2\u04AF\u04A0\u04E2\u04A2\u049A\u04BA\u04B8\u0497\u2018\u2019\u201C\u201D\u2022\u2013\u2014\u04B3\u04B7\u04A1\u04E3\u04A3\u049B\u04BB\u04B9\xA0\u040E\u045E\u0408\u04E8\u0498\u04B0\xA7\u0401\xA9\u04D8\xAB\xAC\u04EF\xAE\u049C\xB0\u04B1\u0406\u0456\u0499\u04E9\xB6\xB7\u0451\u2116\u04D9\xBB\u0458\u04AA\u04AB\u049D\u0410\u0411\u0412\u0413\u0414\u0415\u0416\u0417\u0418\u0419\u041A\u041B\u041C\u041D\u041E\u041F\u0420\u0421\u0422\u0423\u0424\u0425\u0426\u0427\u0428\u0429\u042A\u042B\u042C\u042D\u042E\u042F\u0430\u0431\u0432\u0433\u0434\u0435\u0436\u0437\u0438\u0439\u043A\u043B\u043C\u043D\u043E\u043F\u0440\u0441\u0442\u0443\u0444\u0445\u0446\u0447\u0448\u0449\u044A\u044B\u044C\u044D\u044E\u044F" }, viscii: { type: "_sbcs", chars: `\0\u1EB2\u1EB4\u1EAA\x07\b +\v\f\r\u1EF6\u1EF8\x1B\u1EF4 !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_\`abcdefghijklmnopqrstuvwxyz{|}~\x7F\u1EA0\u1EAE\u1EB0\u1EB6\u1EA4\u1EA6\u1EA8\u1EAC\u1EBC\u1EB8\u1EBE\u1EC0\u1EC2\u1EC4\u1EC6\u1ED0\u1ED2\u1ED4\u1ED6\u1ED8\u1EE2\u1EDA\u1EDC\u1EDE\u1ECA\u1ECE\u1ECC\u1EC8\u1EE6\u0168\u1EE4\u1EF2\xD5\u1EAF\u1EB1\u1EB7\u1EA5\u1EA7\u1EA9\u1EAD\u1EBD\u1EB9\u1EBF\u1EC1\u1EC3\u1EC5\u1EC7\u1ED1\u1ED3\u1ED5\u1ED7\u1EE0\u01A0\u1ED9\u1EDD\u1EDF\u1ECB\u1EF0\u1EE8\u1EEA\u1EEC\u01A1\u1EDB\u01AF\xC0\xC1\xC2\xC3\u1EA2\u0102\u1EB3\u1EB5\xC8\xC9\xCA\u1EBA\xCC\xCD\u0128\u1EF3\u0110\u1EE9\xD2\xD3\xD4\u1EA1\u1EF7\u1EEB\u1EED\xD9\xDA\u1EF9\u1EF5\xDD\u1EE1\u01B0\xE0\xE1\xE2\xE3\u1EA3\u0103\u1EEF\u1EAB\xE8\xE9\xEA\u1EBB\xEC\xED\u0129\u1EC9\u0111\u1EF1\xF2\xF3\xF4\xF5\u1ECF\u1ECD\u1EE5\xF9\xFA\u0169\u1EE7\xFD\u1EE3\u1EEE` }, iso646cn: { type: "_sbcs", chars: `\0\x07\b +\v\f\r\x1B !"#\xA5%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_\`abcdefghijklmnopqrstuvwxyz{|}\u203E\x7F\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD` }, iso646jp: { type: "_sbcs", chars: `\0\x07\b +\v\f\r\x1B !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\xA5]^_\`abcdefghijklmnopqrstuvwxyz{|}\u203E\x7F\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD` }, hproman8: { type: "_sbcs", chars: "\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8A\x8B\x8C\x8D\x8E\x8F\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9A\x9B\x9C\x9D\x9E\x9F\xA0\xC0\xC2\xC8\xCA\xCB\xCE\xCF\xB4\u02CB\u02C6\xA8\u02DC\xD9\xDB\u20A4\xAF\xDD\xFD\xB0\xC7\xE7\xD1\xF1\xA1\xBF\xA4\xA3\xA5\xA7\u0192\xA2\xE2\xEA\xF4\xFB\xE1\xE9\xF3\xFA\xE0\xE8\xF2\xF9\xE4\xEB\xF6\xFC\xC5\xEE\xD8\xC6\xE5\xED\xF8\xE6\xC4\xEC\xD6\xDC\xC9\xEF\xDF\xD4\xC1\xC3\xE3\xD0\xF0\xCD\xCC\xD3\xD2\xD5\xF5\u0160\u0161\xDA\u0178\xFF\xDE\xFE\xB7\xB5\xB6\xBE\u2014\xBC\xBD\xAA\xBA\xAB\u25A0\xBB\xB1\uFFFD" }, macintosh: { type: "_sbcs", chars: "\xC4\xC5\xC7\xC9\xD1\xD6\xDC\xE1\xE0\xE2\xE4\xE3\xE5\xE7\xE9\xE8\xEA\xEB\xED\xEC\xEE\xEF\xF1\xF3\xF2\xF4\xF6\xF5\xFA\xF9\xFB\xFC\u2020\xB0\xA2\xA3\xA7\u2022\xB6\xDF\xAE\xA9\u2122\xB4\xA8\u2260\xC6\xD8\u221E\xB1\u2264\u2265\xA5\xB5\u2202\u2211\u220F\u03C0\u222B\xAA\xBA\u2126\xE6\xF8\xBF\xA1\xAC\u221A\u0192\u2248\u2206\xAB\xBB\u2026\xA0\xC0\xC3\xD5\u0152\u0153\u2013\u2014\u201C\u201D\u2018\u2019\xF7\u25CA\xFF\u0178\u2044\xA4\u2039\u203A\uFB01\uFB02\u2021\xB7\u201A\u201E\u2030\xC2\xCA\xC1\xCB\xC8\xCD\xCE\xCF\xCC\xD3\xD4\uFFFD\xD2\xDA\xDB\xD9\u0131\u02C6\u02DC\xAF\u02D8\u02D9\u02DA\xB8\u02DD\u02DB\u02C7" }, ascii: { type: "_sbcs", chars: "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" }, tis620: { type: "_sbcs", chars: "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u0E01\u0E02\u0E03\u0E04\u0E05\u0E06\u0E07\u0E08\u0E09\u0E0A\u0E0B\u0E0C\u0E0D\u0E0E\u0E0F\u0E10\u0E11\u0E12\u0E13\u0E14\u0E15\u0E16\u0E17\u0E18\u0E19\u0E1A\u0E1B\u0E1C\u0E1D\u0E1E\u0E1F\u0E20\u0E21\u0E22\u0E23\u0E24\u0E25\u0E26\u0E27\u0E28\u0E29\u0E2A\u0E2B\u0E2C\u0E2D\u0E2E\u0E2F\u0E30\u0E31\u0E32\u0E33\u0E34\u0E35\u0E36\u0E37\u0E38\u0E39\u0E3A\uFFFD\uFFFD\uFFFD\uFFFD\u0E3F\u0E40\u0E41\u0E42\u0E43\u0E44\u0E45\u0E46\u0E47\u0E48\u0E49\u0E4A\u0E4B\u0E4C\u0E4D\u0E4E\u0E4F\u0E50\u0E51\u0E52\u0E53\u0E54\u0E55\u0E56\u0E57\u0E58\u0E59\u0E5A\u0E5B\uFFFD\uFFFD\uFFFD\uFFFD" } }; +}); +var BE = g((ZE) => { + "use strict"; + var qo = zi().Buffer; + ZE._dbcs = bn; + var Gt = -1, FE = -2, $r = -10, Yr = -1e3, Do = new Array(256), mc = -1; + for (Yp = 0; Yp < 256; Yp++) Do[Yp] = Gt; + var Yp; + function bn(e21, t) { + if (this.encodingName = e21.encodingName, !e21) throw new Error("DBCS codec is called without the data."); + if (!e21.table) throw new Error("Encoding '" + this.encodingName + "' has no data."); + var r = e21.table(); + this.decodeTables = [], this.decodeTables[0] = Do.slice(0), this.decodeTableSeq = []; + for (var n = 0; n < r.length; n++) this._addDecodeChunk(r[n]); + this.defaultCharUnicode = t.defaultCharUnicode, this.encodeTable = [], this.encodeTableSeq = []; + var i = {}; + if (e21.encodeSkipVals) for (var n = 0; n < e21.encodeSkipVals.length; n++) { + var o = e21.encodeSkipVals[n]; + if (typeof o == "number") i[o] = true; + else for (var a = o.from; a <= o.to; a++) i[a] = true; + } + if (this._fillEncodeTable(0, 0, i), e21.encodeAdd) for (var s in e21.encodeAdd) Object.prototype.hasOwnProperty.call(e21.encodeAdd, s) && this._setEncodeChar(s.charCodeAt(0), e21.encodeAdd[s]); + if (this.defCharSB = this.encodeTable[0][t.defaultCharSingleByte.charCodeAt(0)], this.defCharSB === Gt && (this.defCharSB = this.encodeTable[0]["?"]), this.defCharSB === Gt && (this.defCharSB = 63), typeof e21.gb18030 == "function") { + this.gb18030 = e21.gb18030(); + for (var c = this.decodeTables.length, u = this.decodeTables[c] = Do.slice(0), l = this.decodeTables.length, p = this.decodeTables[l] = Do.slice(0), n = 129; n <= 254; n++) for (var d = Yr - this.decodeTables[0][n], f = this.decodeTables[d], a = 48; a <= 57; a++) f[a] = Yr - c; + for (var n = 129; n <= 254; n++) u[n] = Yr - l; + for (var n = 48; n <= 57; n++) p[n] = FE; + } + } + bn.prototype.encoder = Qp; + bn.prototype.decoder = ex; + bn.prototype._getDecodeTrieNode = function(e21) { + for (var t = []; e21 > 0; e21 >>= 8) t.push(e21 & 255); + t.length == 0 && t.push(0); + for (var r = this.decodeTables[0], n = t.length - 1; n > 0; n--) { + var i = r[t[n]]; + if (i == Gt) r[t[n]] = Yr - this.decodeTables.length, this.decodeTables.push(r = Do.slice(0)); + else if (i <= Yr) r = this.decodeTables[Yr - i]; + else throw new Error("Overwrite byte in " + this.encodingName + ", addr: " + e21.toString(16)); + } + return r; + }; + bn.prototype._addDecodeChunk = function(e21) { + var t = parseInt(e21[0], 16), r = this._getDecodeTrieNode(t); + t = t & 255; + for (var n = 1; n < e21.length; n++) { + var i = e21[n]; + if (typeof i == "string") for (var o = 0; o < i.length; ) { + var a = i.charCodeAt(o++); + if (55296 <= a && a < 56320) { + var s = i.charCodeAt(o++); + if (56320 <= s && s < 57344) r[t++] = 65536 + (a - 55296) * 1024 + (s - 56320); + else throw new Error("Incorrect surrogate pair in " + this.encodingName + " at chunk " + e21[0]); + } else if (4080 < a && a <= 4095) { + for (var c = 4095 - a + 2, u = [], l = 0; l < c; l++) u.push(i.charCodeAt(o++)); + r[t++] = $r - this.decodeTableSeq.length, this.decodeTableSeq.push(u); + } else r[t++] = a; + } + else if (typeof i == "number") for (var p = r[t - 1] + 1, o = 0; o < i; o++) r[t++] = p++; + else throw new Error("Incorrect type '" + typeof i + "' given in " + this.encodingName + " at chunk " + e21[0]); + } + if (t > 255) throw new Error("Incorrect chunk in " + this.encodingName + " at addr " + e21[0] + ": too long" + t); + }; + bn.prototype._getEncodeBucket = function(e21) { + var t = e21 >> 8; + return this.encodeTable[t] === void 0 && (this.encodeTable[t] = Do.slice(0)), this.encodeTable[t]; + }; + bn.prototype._setEncodeChar = function(e21, t) { + var r = this._getEncodeBucket(e21), n = e21 & 255; + r[n] <= $r ? this.encodeTableSeq[$r - r[n]][mc] = t : r[n] == Gt && (r[n] = t); + }; + bn.prototype._setEncodeSequence = function(e21, t) { + var r = e21[0], n = this._getEncodeBucket(r), i = r & 255, o; + n[i] <= $r ? o = this.encodeTableSeq[$r - n[i]] : (o = {}, n[i] !== Gt && (o[mc] = n[i]), n[i] = $r - this.encodeTableSeq.length, this.encodeTableSeq.push(o)); + for (var a = 1; a < e21.length - 1; a++) { + var s = o[r]; + typeof s == "object" ? o = s : (o = o[r] = {}, s !== void 0 && (o[mc] = s)); + } + r = e21[e21.length - 1], o[r] = t; + }; + bn.prototype._fillEncodeTable = function(e21, t, r) { + for (var n = this.decodeTables[e21], i = 0; i < 256; i++) { + var o = n[i], a = t + i; + r[a] || (o >= 0 ? this._setEncodeChar(o, a) : o <= Yr ? this._fillEncodeTable(Yr - o, a << 8, r) : o <= $r && this._setEncodeSequence(this.decodeTableSeq[$r - o], a)); + } + }; + function Qp(e21, t) { + this.leadSurrogate = -1, this.seqObj = void 0, this.encodeTable = t.encodeTable, this.encodeTableSeq = t.encodeTableSeq, this.defaultCharSingleByte = t.defCharSB, this.gb18030 = t.gb18030; + } + Qp.prototype.write = function(e21) { + for (var t = qo.alloc(e21.length * (this.gb18030 ? 4 : 3)), r = this.leadSurrogate, n = this.seqObj, i = -1, o = 0, a = 0; ; ) { + if (i === -1) { + if (o == e21.length) break; + var s = e21.charCodeAt(o++); + } else { + var s = i; + i = -1; + } + if (55296 <= s && s < 57344) if (s < 56320) if (r === -1) { + r = s; + continue; + } else r = s, s = Gt; + else r !== -1 ? (s = 65536 + (r - 55296) * 1024 + (s - 56320), r = -1) : s = Gt; + else r !== -1 && (i = s, s = Gt, r = -1); + var c = Gt; + if (n !== void 0 && s != Gt) { + var u = n[s]; + if (typeof u == "object") { + n = u; + continue; + } else typeof u == "number" ? c = u : u == null && (u = n[mc], u !== void 0 && (c = u, i = s)); + n = void 0; + } else if (s >= 0) { + var l = this.encodeTable[s >> 8]; + if (l !== void 0 && (c = l[s & 255]), c <= $r) { + n = this.encodeTableSeq[$r - c]; + continue; + } + if (c == Gt && this.gb18030) { + var p = tx(this.gb18030.uChars, s); + if (p != -1) { + var c = this.gb18030.gbChars[p] + (s - this.gb18030.uChars[p]); + t[a++] = 129 + Math.floor(c / 12600), c = c % 12600, t[a++] = 48 + Math.floor(c / 1260), c = c % 1260, t[a++] = 129 + Math.floor(c / 10), c = c % 10, t[a++] = 48 + c; + continue; + } + } + } + c === Gt && (c = this.defaultCharSingleByte), c < 256 ? t[a++] = c : c < 65536 ? (t[a++] = c >> 8, t[a++] = c & 255) : (t[a++] = c >> 16, t[a++] = c >> 8 & 255, t[a++] = c & 255); + } + return this.seqObj = n, this.leadSurrogate = r, t.slice(0, a); + }; + Qp.prototype.end = function() { + if (!(this.leadSurrogate === -1 && this.seqObj === void 0)) { + var e21 = qo.alloc(10), t = 0; + if (this.seqObj) { + var r = this.seqObj[mc]; + r !== void 0 && (r < 256 ? e21[t++] = r : (e21[t++] = r >> 8, e21[t++] = r & 255)), this.seqObj = void 0; + } + return this.leadSurrogate !== -1 && (e21[t++] = this.defaultCharSingleByte, this.leadSurrogate = -1), e21.slice(0, t); + } + }; + Qp.prototype.findIdx = tx; + function ex(e21, t) { + this.nodeIdx = 0, this.prevBuf = qo.alloc(0), this.decodeTables = t.decodeTables, this.decodeTableSeq = t.decodeTableSeq, this.defaultCharUnicode = t.defaultCharUnicode, this.gb18030 = t.gb18030; + } + ex.prototype.write = function(e21) { + var t = qo.alloc(e21.length * 2), r = this.nodeIdx, n = this.prevBuf, i = this.prevBuf.length, o = -this.prevBuf.length, a; + i > 0 && (n = qo.concat([n, e21.slice(0, 10)])); + for (var s = 0, c = 0; s < e21.length; s++) { + var u = s >= 0 ? e21[s] : n[s + i], a = this.decodeTables[r][u]; + if (!(a >= 0)) if (a === Gt) s = o, a = this.defaultCharUnicode.charCodeAt(0); + else if (a === FE) { + var l = o >= 0 ? e21.slice(o, s + 1) : n.slice(o + i, s + 1 + i), p = (l[0] - 129) * 12600 + (l[1] - 48) * 1260 + (l[2] - 129) * 10 + (l[3] - 48), d = tx(this.gb18030.gbChars, p); + a = this.gb18030.uChars[d] + p - this.gb18030.gbChars[d]; + } else if (a <= Yr) { + r = Yr - a; + continue; + } else if (a <= $r) { + for (var f = this.decodeTableSeq[$r - a], m = 0; m < f.length - 1; m++) a = f[m], t[c++] = a & 255, t[c++] = a >> 8; + a = f[f.length - 1]; + } else throw new Error("iconv-lite internal error: invalid decoding table value " + a + " at " + r + "/" + u); + if (a > 65535) { + a -= 65536; + var h = 55296 + Math.floor(a / 1024); + t[c++] = h & 255, t[c++] = h >> 8, a = 56320 + a % 1024; + } + t[c++] = a & 255, t[c++] = a >> 8, r = 0, o = s + 1; + } + return this.nodeIdx = r, this.prevBuf = o >= 0 ? e21.slice(o) : n.slice(o + i), t.slice(0, c).toString("ucs2"); + }; + ex.prototype.end = function() { + for (var e21 = ""; this.prevBuf.length > 0; ) { + e21 += this.defaultCharUnicode; + var t = this.prevBuf.slice(1); + this.prevBuf = qo.alloc(0), this.nodeIdx = 0, t.length > 0 && (e21 += this.write(t)); + } + return this.nodeIdx = 0, e21; + }; + function tx(e21, t) { + if (e21[0] > t) return -1; + for (var r = 0, n = e21.length; r < n - 1; ) { + var i = r + Math.floor((n - r + 1) / 2); + e21[i] <= t ? r = i : n = i; + } + return r; + } +}); +var VE = g((Zpe, iU) => { + iU.exports = [["0", "\0", 128], ["a1", "\uFF61", 62], ["8140", "\u3000\u3001\u3002\uFF0C\uFF0E\u30FB\uFF1A\uFF1B\uFF1F\uFF01\u309B\u309C\xB4\uFF40\xA8\uFF3E\uFFE3\uFF3F\u30FD\u30FE\u309D\u309E\u3003\u4EDD\u3005\u3006\u3007\u30FC\u2015\u2010\uFF0F\uFF3C\uFF5E\u2225\uFF5C\u2026\u2025\u2018\u2019\u201C\u201D\uFF08\uFF09\u3014\u3015\uFF3B\uFF3D\uFF5B\uFF5D\u3008", 9, "\uFF0B\uFF0D\xB1\xD7"], ["8180", "\xF7\uFF1D\u2260\uFF1C\uFF1E\u2266\u2267\u221E\u2234\u2642\u2640\xB0\u2032\u2033\u2103\uFFE5\uFF04\uFFE0\uFFE1\uFF05\uFF03\uFF06\uFF0A\uFF20\xA7\u2606\u2605\u25CB\u25CF\u25CE\u25C7\u25C6\u25A1\u25A0\u25B3\u25B2\u25BD\u25BC\u203B\u3012\u2192\u2190\u2191\u2193\u3013"], ["81b8", "\u2208\u220B\u2286\u2287\u2282\u2283\u222A\u2229"], ["81c8", "\u2227\u2228\uFFE2\u21D2\u21D4\u2200\u2203"], ["81da", "\u2220\u22A5\u2312\u2202\u2207\u2261\u2252\u226A\u226B\u221A\u223D\u221D\u2235\u222B\u222C"], ["81f0", "\u212B\u2030\u266F\u266D\u266A\u2020\u2021\xB6"], ["81fc", "\u25EF"], ["824f", "\uFF10", 9], ["8260", "\uFF21", 25], ["8281", "\uFF41", 25], ["829f", "\u3041", 82], ["8340", "\u30A1", 62], ["8380", "\u30E0", 22], ["839f", "\u0391", 16, "\u03A3", 6], ["83bf", "\u03B1", 16, "\u03C3", 6], ["8440", "\u0410", 5, "\u0401\u0416", 25], ["8470", "\u0430", 5, "\u0451\u0436", 7], ["8480", "\u043E", 17], ["849f", "\u2500\u2502\u250C\u2510\u2518\u2514\u251C\u252C\u2524\u2534\u253C\u2501\u2503\u250F\u2513\u251B\u2517\u2523\u2533\u252B\u253B\u254B\u2520\u252F\u2528\u2537\u253F\u251D\u2530\u2525\u2538\u2542"], ["8740", "\u2460", 19, "\u2160", 9], ["875f", "\u3349\u3314\u3322\u334D\u3318\u3327\u3303\u3336\u3351\u3357\u330D\u3326\u3323\u332B\u334A\u333B\u339C\u339D\u339E\u338E\u338F\u33C4\u33A1"], ["877e", "\u337B"], ["8780", "\u301D\u301F\u2116\u33CD\u2121\u32A4", 4, "\u3231\u3232\u3239\u337E\u337D\u337C\u2252\u2261\u222B\u222E\u2211\u221A\u22A5\u2220\u221F\u22BF\u2235\u2229\u222A"], ["889f", "\u4E9C\u5516\u5A03\u963F\u54C0\u611B\u6328\u59F6\u9022\u8475\u831C\u7A50\u60AA\u63E1\u6E25\u65ED\u8466\u82A6\u9BF5\u6893\u5727\u65A1\u6271\u5B9B\u59D0\u867B\u98F4\u7D62\u7DBE\u9B8E\u6216\u7C9F\u88B7\u5B89\u5EB5\u6309\u6697\u6848\u95C7\u978D\u674F\u4EE5\u4F0A\u4F4D\u4F9D\u5049\u56F2\u5937\u59D4\u5A01\u5C09\u60DF\u610F\u6170\u6613\u6905\u70BA\u754F\u7570\u79FB\u7DAD\u7DEF\u80C3\u840E\u8863\u8B02\u9055\u907A\u533B\u4E95\u4EA5\u57DF\u80B2\u90C1\u78EF\u4E00\u58F1\u6EA2\u9038\u7A32\u8328\u828B\u9C2F\u5141\u5370\u54BD\u54E1\u56E0\u59FB\u5F15\u98F2\u6DEB\u80E4\u852D"], ["8940", "\u9662\u9670\u96A0\u97FB\u540B\u53F3\u5B87\u70CF\u7FBD\u8FC2\u96E8\u536F\u9D5C\u7ABA\u4E11\u7893\u81FC\u6E26\u5618\u5504\u6B1D\u851A\u9C3B\u59E5\u53A9\u6D66\u74DC\u958F\u5642\u4E91\u904B\u96F2\u834F\u990C\u53E1\u55B6\u5B30\u5F71\u6620\u66F3\u6804\u6C38\u6CF3\u6D29\u745B\u76C8\u7A4E\u9834\u82F1\u885B\u8A60\u92ED\u6DB2\u75AB\u76CA\u99C5\u60A6\u8B01\u8D8A\u95B2\u698E\u53AD\u5186"], ["8980", "\u5712\u5830\u5944\u5BB4\u5EF6\u6028\u63A9\u63F4\u6CBF\u6F14\u708E\u7114\u7159\u71D5\u733F\u7E01\u8276\u82D1\u8597\u9060\u925B\u9D1B\u5869\u65BC\u6C5A\u7525\u51F9\u592E\u5965\u5F80\u5FDC\u62BC\u65FA\u6A2A\u6B27\u6BB4\u738B\u7FC1\u8956\u9D2C\u9D0E\u9EC4\u5CA1\u6C96\u837B\u5104\u5C4B\u61B6\u81C6\u6876\u7261\u4E59\u4FFA\u5378\u6069\u6E29\u7A4F\u97F3\u4E0B\u5316\u4EEE\u4F55\u4F3D\u4FA1\u4F73\u52A0\u53EF\u5609\u590F\u5AC1\u5BB6\u5BE1\u79D1\u6687\u679C\u67B6\u6B4C\u6CB3\u706B\u73C2\u798D\u79BE\u7A3C\u7B87\u82B1\u82DB\u8304\u8377\u83EF\u83D3\u8766\u8AB2\u5629\u8CA8\u8FE6\u904E\u971E\u868A\u4FC4\u5CE8\u6211\u7259\u753B\u81E5\u82BD\u86FE\u8CC0\u96C5\u9913\u99D5\u4ECB\u4F1A\u89E3\u56DE\u584A\u58CA\u5EFB\u5FEB\u602A\u6094\u6062\u61D0\u6212\u62D0\u6539"], ["8a40", "\u9B41\u6666\u68B0\u6D77\u7070\u754C\u7686\u7D75\u82A5\u87F9\u958B\u968E\u8C9D\u51F1\u52BE\u5916\u54B3\u5BB3\u5D16\u6168\u6982\u6DAF\u788D\u84CB\u8857\u8A72\u93A7\u9AB8\u6D6C\u99A8\u86D9\u57A3\u67FF\u86CE\u920E\u5283\u5687\u5404\u5ED3\u62E1\u64B9\u683C\u6838\u6BBB\u7372\u78BA\u7A6B\u899A\u89D2\u8D6B\u8F03\u90ED\u95A3\u9694\u9769\u5B66\u5CB3\u697D\u984D\u984E\u639B\u7B20\u6A2B"], ["8a80", "\u6A7F\u68B6\u9C0D\u6F5F\u5272\u559D\u6070\u62EC\u6D3B\u6E07\u6ED1\u845B\u8910\u8F44\u4E14\u9C39\u53F6\u691B\u6A3A\u9784\u682A\u515C\u7AC3\u84B2\u91DC\u938C\u565B\u9D28\u6822\u8305\u8431\u7CA5\u5208\u82C5\u74E6\u4E7E\u4F83\u51A0\u5BD2\u520A\u52D8\u52E7\u5DFB\u559A\u582A\u59E6\u5B8C\u5B98\u5BDB\u5E72\u5E79\u60A3\u611F\u6163\u61BE\u63DB\u6562\u67D1\u6853\u68FA\u6B3E\u6B53\u6C57\u6F22\u6F97\u6F45\u74B0\u7518\u76E3\u770B\u7AFF\u7BA1\u7C21\u7DE9\u7F36\u7FF0\u809D\u8266\u839E\u89B3\u8ACC\u8CAB\u9084\u9451\u9593\u9591\u95A2\u9665\u97D3\u9928\u8218\u4E38\u542B\u5CB8\u5DCC\u73A9\u764C\u773C\u5CA9\u7FEB\u8D0B\u96C1\u9811\u9854\u9858\u4F01\u4F0E\u5371\u559C\u5668\u57FA\u5947\u5B09\u5BC4\u5C90\u5E0C\u5E7E\u5FCC\u63EE\u673A\u65D7\u65E2\u671F\u68CB\u68C4"], ["8b40", "\u6A5F\u5E30\u6BC5\u6C17\u6C7D\u757F\u7948\u5B63\u7A00\u7D00\u5FBD\u898F\u8A18\u8CB4\u8D77\u8ECC\u8F1D\u98E2\u9A0E\u9B3C\u4E80\u507D\u5100\u5993\u5B9C\u622F\u6280\u64EC\u6B3A\u72A0\u7591\u7947\u7FA9\u87FB\u8ABC\u8B70\u63AC\u83CA\u97A0\u5409\u5403\u55AB\u6854\u6A58\u8A70\u7827\u6775\u9ECD\u5374\u5BA2\u811A\u8650\u9006\u4E18\u4E45\u4EC7\u4F11\u53CA\u5438\u5BAE\u5F13\u6025\u6551"], ["8b80", "\u673D\u6C42\u6C72\u6CE3\u7078\u7403\u7A76\u7AAE\u7B08\u7D1A\u7CFE\u7D66\u65E7\u725B\u53BB\u5C45\u5DE8\u62D2\u62E0\u6319\u6E20\u865A\u8A31\u8DDD\u92F8\u6F01\u79A6\u9B5A\u4EA8\u4EAB\u4EAC\u4F9B\u4FA0\u50D1\u5147\u7AF6\u5171\u51F6\u5354\u5321\u537F\u53EB\u55AC\u5883\u5CE1\u5F37\u5F4A\u602F\u6050\u606D\u631F\u6559\u6A4B\u6CC1\u72C2\u72ED\u77EF\u80F8\u8105\u8208\u854E\u90F7\u93E1\u97FF\u9957\u9A5A\u4EF0\u51DD\u5C2D\u6681\u696D\u5C40\u66F2\u6975\u7389\u6850\u7C81\u50C5\u52E4\u5747\u5DFE\u9326\u65A4\u6B23\u6B3D\u7434\u7981\u79BD\u7B4B\u7DCA\u82B9\u83CC\u887F\u895F\u8B39\u8FD1\u91D1\u541F\u9280\u4E5D\u5036\u53E5\u533A\u72D7\u7396\u77E9\u82E6\u8EAF\u99C6\u99C8\u99D2\u5177\u611A\u865E\u55B0\u7A7A\u5076\u5BD3\u9047\u9685\u4E32\u6ADB\u91E7\u5C51\u5C48"], ["8c40", "\u6398\u7A9F\u6C93\u9774\u8F61\u7AAA\u718A\u9688\u7C82\u6817\u7E70\u6851\u936C\u52F2\u541B\u85AB\u8A13\u7FA4\u8ECD\u90E1\u5366\u8888\u7941\u4FC2\u50BE\u5211\u5144\u5553\u572D\u73EA\u578B\u5951\u5F62\u5F84\u6075\u6176\u6167\u61A9\u63B2\u643A\u656C\u666F\u6842\u6E13\u7566\u7A3D\u7CFB\u7D4C\u7D99\u7E4B\u7F6B\u830E\u834A\u86CD\u8A08\u8A63\u8B66\u8EFD\u981A\u9D8F\u82B8\u8FCE\u9BE8"], ["8c80", "\u5287\u621F\u6483\u6FC0\u9699\u6841\u5091\u6B20\u6C7A\u6F54\u7A74\u7D50\u8840\u8A23\u6708\u4EF6\u5039\u5026\u5065\u517C\u5238\u5263\u55A7\u570F\u5805\u5ACC\u5EFA\u61B2\u61F8\u62F3\u6372\u691C\u6A29\u727D\u72AC\u732E\u7814\u786F\u7D79\u770C\u80A9\u898B\u8B19\u8CE2\u8ED2\u9063\u9375\u967A\u9855\u9A13\u9E78\u5143\u539F\u53B3\u5E7B\u5F26\u6E1B\u6E90\u7384\u73FE\u7D43\u8237\u8A00\u8AFA\u9650\u4E4E\u500B\u53E4\u547C\u56FA\u59D1\u5B64\u5DF1\u5EAB\u5F27\u6238\u6545\u67AF\u6E56\u72D0\u7CCA\u88B4\u80A1\u80E1\u83F0\u864E\u8A87\u8DE8\u9237\u96C7\u9867\u9F13\u4E94\u4E92\u4F0D\u5348\u5449\u543E\u5A2F\u5F8C\u5FA1\u609F\u68A7\u6A8E\u745A\u7881\u8A9E\u8AA4\u8B77\u9190\u4E5E\u9BC9\u4EA4\u4F7C\u4FAF\u5019\u5016\u5149\u516C\u529F\u52B9\u52FE\u539A\u53E3\u5411"], ["8d40", "\u540E\u5589\u5751\u57A2\u597D\u5B54\u5B5D\u5B8F\u5DE5\u5DE7\u5DF7\u5E78\u5E83\u5E9A\u5EB7\u5F18\u6052\u614C\u6297\u62D8\u63A7\u653B\u6602\u6643\u66F4\u676D\u6821\u6897\u69CB\u6C5F\u6D2A\u6D69\u6E2F\u6E9D\u7532\u7687\u786C\u7A3F\u7CE0\u7D05\u7D18\u7D5E\u7DB1\u8015\u8003\u80AF\u80B1\u8154\u818F\u822A\u8352\u884C\u8861\u8B1B\u8CA2\u8CFC\u90CA\u9175\u9271\u783F\u92FC\u95A4\u964D"], ["8d80", "\u9805\u9999\u9AD8\u9D3B\u525B\u52AB\u53F7\u5408\u58D5\u62F7\u6FE0\u8C6A\u8F5F\u9EB9\u514B\u523B\u544A\u56FD\u7A40\u9177\u9D60\u9ED2\u7344\u6F09\u8170\u7511\u5FFD\u60DA\u9AA8\u72DB\u8FBC\u6B64\u9803\u4ECA\u56F0\u5764\u58BE\u5A5A\u6068\u61C7\u660F\u6606\u6839\u68B1\u6DF7\u75D5\u7D3A\u826E\u9B42\u4E9B\u4F50\u53C9\u5506\u5D6F\u5DE6\u5DEE\u67FB\u6C99\u7473\u7802\u8A50\u9396\u88DF\u5750\u5EA7\u632B\u50B5\u50AC\u518D\u6700\u54C9\u585E\u59BB\u5BB0\u5F69\u624D\u63A1\u683D\u6B73\u6E08\u707D\u91C7\u7280\u7815\u7826\u796D\u658E\u7D30\u83DC\u88C1\u8F09\u969B\u5264\u5728\u6750\u7F6A\u8CA1\u51B4\u5742\u962A\u583A\u698A\u80B4\u54B2\u5D0E\u57FC\u7895\u9DFA\u4F5C\u524A\u548B\u643E\u6628\u6714\u67F5\u7A84\u7B56\u7D22\u932F\u685C\u9BAD\u7B39\u5319\u518A\u5237"], ["8e40", "\u5BDF\u62F6\u64AE\u64E6\u672D\u6BBA\u85A9\u96D1\u7690\u9BD6\u634C\u9306\u9BAB\u76BF\u6652\u4E09\u5098\u53C2\u5C71\u60E8\u6492\u6563\u685F\u71E6\u73CA\u7523\u7B97\u7E82\u8695\u8B83\u8CDB\u9178\u9910\u65AC\u66AB\u6B8B\u4ED5\u4ED4\u4F3A\u4F7F\u523A\u53F8\u53F2\u55E3\u56DB\u58EB\u59CB\u59C9\u59FF\u5B50\u5C4D\u5E02\u5E2B\u5FD7\u601D\u6307\u652F\u5B5C\u65AF\u65BD\u65E8\u679D\u6B62"], ["8e80", "\u6B7B\u6C0F\u7345\u7949\u79C1\u7CF8\u7D19\u7D2B\u80A2\u8102\u81F3\u8996\u8A5E\u8A69\u8A66\u8A8C\u8AEE\u8CC7\u8CDC\u96CC\u98FC\u6B6F\u4E8B\u4F3C\u4F8D\u5150\u5B57\u5BFA\u6148\u6301\u6642\u6B21\u6ECB\u6CBB\u723E\u74BD\u75D4\u78C1\u793A\u800C\u8033\u81EA\u8494\u8F9E\u6C50\u9E7F\u5F0F\u8B58\u9D2B\u7AFA\u8EF8\u5B8D\u96EB\u4E03\u53F1\u57F7\u5931\u5AC9\u5BA4\u6089\u6E7F\u6F06\u75BE\u8CEA\u5B9F\u8500\u7BE0\u5072\u67F4\u829D\u5C61\u854A\u7E1E\u820E\u5199\u5C04\u6368\u8D66\u659C\u716E\u793E\u7D17\u8005\u8B1D\u8ECA\u906E\u86C7\u90AA\u501F\u52FA\u5C3A\u6753\u707C\u7235\u914C\u91C8\u932B\u82E5\u5BC2\u5F31\u60F9\u4E3B\u53D6\u5B88\u624B\u6731\u6B8A\u72E9\u73E0\u7A2E\u816B\u8DA3\u9152\u9996\u5112\u53D7\u546A\u5BFF\u6388\u6A39\u7DAC\u9700\u56DA\u53CE\u5468"], ["8f40", "\u5B97\u5C31\u5DDE\u4FEE\u6101\u62FE\u6D32\u79C0\u79CB\u7D42\u7E4D\u7FD2\u81ED\u821F\u8490\u8846\u8972\u8B90\u8E74\u8F2F\u9031\u914B\u916C\u96C6\u919C\u4EC0\u4F4F\u5145\u5341\u5F93\u620E\u67D4\u6C41\u6E0B\u7363\u7E26\u91CD\u9283\u53D4\u5919\u5BBF\u6DD1\u795D\u7E2E\u7C9B\u587E\u719F\u51FA\u8853\u8FF0\u4FCA\u5CFB\u6625\u77AC\u7AE3\u821C\u99FF\u51C6\u5FAA\u65EC\u696F\u6B89\u6DF3"], ["8f80", "\u6E96\u6F64\u76FE\u7D14\u5DE1\u9075\u9187\u9806\u51E6\u521D\u6240\u6691\u66D9\u6E1A\u5EB6\u7DD2\u7F72\u66F8\u85AF\u85F7\u8AF8\u52A9\u53D9\u5973\u5E8F\u5F90\u6055\u92E4\u9664\u50B7\u511F\u52DD\u5320\u5347\u53EC\u54E8\u5546\u5531\u5617\u5968\u59BE\u5A3C\u5BB5\u5C06\u5C0F\u5C11\u5C1A\u5E84\u5E8A\u5EE0\u5F70\u627F\u6284\u62DB\u638C\u6377\u6607\u660C\u662D\u6676\u677E\u68A2\u6A1F\u6A35\u6CBC\u6D88\u6E09\u6E58\u713C\u7126\u7167\u75C7\u7701\u785D\u7901\u7965\u79F0\u7AE0\u7B11\u7CA7\u7D39\u8096\u83D6\u848B\u8549\u885D\u88F3\u8A1F\u8A3C\u8A54\u8A73\u8C61\u8CDE\u91A4\u9266\u937E\u9418\u969C\u9798\u4E0A\u4E08\u4E1E\u4E57\u5197\u5270\u57CE\u5834\u58CC\u5B22\u5E38\u60C5\u64FE\u6761\u6756\u6D44\u72B6\u7573\u7A63\u84B8\u8B72\u91B8\u9320\u5631\u57F4\u98FE"], ["9040", "\u62ED\u690D\u6B96\u71ED\u7E54\u8077\u8272\u89E6\u98DF\u8755\u8FB1\u5C3B\u4F38\u4FE1\u4FB5\u5507\u5A20\u5BDD\u5BE9\u5FC3\u614E\u632F\u65B0\u664B\u68EE\u699B\u6D78\u6DF1\u7533\u75B9\u771F\u795E\u79E6\u7D33\u81E3\u82AF\u85AA\u89AA\u8A3A\u8EAB\u8F9B\u9032\u91DD\u9707\u4EBA\u4EC1\u5203\u5875\u58EC\u5C0B\u751A\u5C3D\u814E\u8A0A\u8FC5\u9663\u976D\u7B25\u8ACF\u9808\u9162\u56F3\u53A8"], ["9080", "\u9017\u5439\u5782\u5E25\u63A8\u6C34\u708A\u7761\u7C8B\u7FE0\u8870\u9042\u9154\u9310\u9318\u968F\u745E\u9AC4\u5D07\u5D69\u6570\u67A2\u8DA8\u96DB\u636E\u6749\u6919\u83C5\u9817\u96C0\u88FE\u6F84\u647A\u5BF8\u4E16\u702C\u755D\u662F\u51C4\u5236\u52E2\u59D3\u5F81\u6027\u6210\u653F\u6574\u661F\u6674\u68F2\u6816\u6B63\u6E05\u7272\u751F\u76DB\u7CBE\u8056\u58F0\u88FD\u897F\u8AA0\u8A93\u8ACB\u901D\u9192\u9752\u9759\u6589\u7A0E\u8106\u96BB\u5E2D\u60DC\u621A\u65A5\u6614\u6790\u77F3\u7A4D\u7C4D\u7E3E\u810A\u8CAC\u8D64\u8DE1\u8E5F\u78A9\u5207\u62D9\u63A5\u6442\u6298\u8A2D\u7A83\u7BC0\u8AAC\u96EA\u7D76\u820C\u8749\u4ED9\u5148\u5343\u5360\u5BA3\u5C02\u5C16\u5DDD\u6226\u6247\u64B0\u6813\u6834\u6CC9\u6D45\u6D17\u67D3\u6F5C\u714E\u717D\u65CB\u7A7F\u7BAD\u7DDA"], ["9140", "\u7E4A\u7FA8\u817A\u821B\u8239\u85A6\u8A6E\u8CCE\u8DF5\u9078\u9077\u92AD\u9291\u9583\u9BAE\u524D\u5584\u6F38\u7136\u5168\u7985\u7E55\u81B3\u7CCE\u564C\u5851\u5CA8\u63AA\u66FE\u66FD\u695A\u72D9\u758F\u758E\u790E\u7956\u79DF\u7C97\u7D20\u7D44\u8607\u8A34\u963B\u9061\u9F20\u50E7\u5275\u53CC\u53E2\u5009\u55AA\u58EE\u594F\u723D\u5B8B\u5C64\u531D\u60E3\u60F3\u635C\u6383\u633F\u63BB"], ["9180", "\u64CD\u65E9\u66F9\u5DE3\u69CD\u69FD\u6F15\u71E5\u4E89\u75E9\u76F8\u7A93\u7CDF\u7DCF\u7D9C\u8061\u8349\u8358\u846C\u84BC\u85FB\u88C5\u8D70\u9001\u906D\u9397\u971C\u9A12\u50CF\u5897\u618E\u81D3\u8535\u8D08\u9020\u4FC3\u5074\u5247\u5373\u606F\u6349\u675F\u6E2C\u8DB3\u901F\u4FD7\u5C5E\u8CCA\u65CF\u7D9A\u5352\u8896\u5176\u63C3\u5B58\u5B6B\u5C0A\u640D\u6751\u905C\u4ED6\u591A\u592A\u6C70\u8A51\u553E\u5815\u59A5\u60F0\u6253\u67C1\u8235\u6955\u9640\u99C4\u9A28\u4F53\u5806\u5BFE\u8010\u5CB1\u5E2F\u5F85\u6020\u614B\u6234\u66FF\u6CF0\u6EDE\u80CE\u817F\u82D4\u888B\u8CB8\u9000\u902E\u968A\u9EDB\u9BDB\u4EE3\u53F0\u5927\u7B2C\u918D\u984C\u9DF9\u6EDD\u7027\u5353\u5544\u5B85\u6258\u629E\u62D3\u6CA2\u6FEF\u7422\u8A17\u9438\u6FC1\u8AFE\u8338\u51E7\u86F8\u53EA"], ["9240", "\u53E9\u4F46\u9054\u8FB0\u596A\u8131\u5DFD\u7AEA\u8FBF\u68DA\u8C37\u72F8\u9C48\u6A3D\u8AB0\u4E39\u5358\u5606\u5766\u62C5\u63A2\u65E6\u6B4E\u6DE1\u6E5B\u70AD\u77ED\u7AEF\u7BAA\u7DBB\u803D\u80C6\u86CB\u8A95\u935B\u56E3\u58C7\u5F3E\u65AD\u6696\u6A80\u6BB5\u7537\u8AC7\u5024\u77E5\u5730\u5F1B\u6065\u667A\u6C60\u75F4\u7A1A\u7F6E\u81F4\u8718\u9045\u99B3\u7BC9\u755C\u7AF9\u7B51\u84C4"], ["9280", "\u9010\u79E9\u7A92\u8336\u5AE1\u7740\u4E2D\u4EF2\u5B99\u5FE0\u62BD\u663C\u67F1\u6CE8\u866B\u8877\u8A3B\u914E\u92F3\u99D0\u6A17\u7026\u732A\u82E7\u8457\u8CAF\u4E01\u5146\u51CB\u558B\u5BF5\u5E16\u5E33\u5E81\u5F14\u5F35\u5F6B\u5FB4\u61F2\u6311\u66A2\u671D\u6F6E\u7252\u753A\u773A\u8074\u8139\u8178\u8776\u8ABF\u8ADC\u8D85\u8DF3\u929A\u9577\u9802\u9CE5\u52C5\u6357\u76F4\u6715\u6C88\u73CD\u8CC3\u93AE\u9673\u6D25\u589C\u690E\u69CC\u8FFD\u939A\u75DB\u901A\u585A\u6802\u63B4\u69FB\u4F43\u6F2C\u67D8\u8FBB\u8526\u7DB4\u9354\u693F\u6F70\u576A\u58F7\u5B2C\u7D2C\u722A\u540A\u91E3\u9DB4\u4EAD\u4F4E\u505C\u5075\u5243\u8C9E\u5448\u5824\u5B9A\u5E1D\u5E95\u5EAD\u5EF7\u5F1F\u608C\u62B5\u633A\u63D0\u68AF\u6C40\u7887\u798E\u7A0B\u7DE0\u8247\u8A02\u8AE6\u8E44\u9013"], ["9340", "\u90B8\u912D\u91D8\u9F0E\u6CE5\u6458\u64E2\u6575\u6EF4\u7684\u7B1B\u9069\u93D1\u6EBA\u54F2\u5FB9\u64A4\u8F4D\u8FED\u9244\u5178\u586B\u5929\u5C55\u5E97\u6DFB\u7E8F\u751C\u8CBC\u8EE2\u985B\u70B9\u4F1D\u6BBF\u6FB1\u7530\u96FB\u514E\u5410\u5835\u5857\u59AC\u5C60\u5F92\u6597\u675C\u6E21\u767B\u83DF\u8CED\u9014\u90FD\u934D\u7825\u783A\u52AA\u5EA6\u571F\u5974\u6012\u5012\u515A\u51AC"], ["9380", "\u51CD\u5200\u5510\u5854\u5858\u5957\u5B95\u5CF6\u5D8B\u60BC\u6295\u642D\u6771\u6843\u68BC\u68DF\u76D7\u6DD8\u6E6F\u6D9B\u706F\u71C8\u5F53\u75D8\u7977\u7B49\u7B54\u7B52\u7CD6\u7D71\u5230\u8463\u8569\u85E4\u8A0E\u8B04\u8C46\u8E0F\u9003\u900F\u9419\u9676\u982D\u9A30\u95D8\u50CD\u52D5\u540C\u5802\u5C0E\u61A7\u649E\u6D1E\u77B3\u7AE5\u80F4\u8404\u9053\u9285\u5CE0\u9D07\u533F\u5F97\u5FB3\u6D9C\u7279\u7763\u79BF\u7BE4\u6BD2\u72EC\u8AAD\u6803\u6A61\u51F8\u7A81\u6934\u5C4A\u9CF6\u82EB\u5BC5\u9149\u701E\u5678\u5C6F\u60C7\u6566\u6C8C\u8C5A\u9041\u9813\u5451\u66C7\u920D\u5948\u90A3\u5185\u4E4D\u51EA\u8599\u8B0E\u7058\u637A\u934B\u6962\u99B4\u7E04\u7577\u5357\u6960\u8EDF\u96E3\u6C5D\u4E8C\u5C3C\u5F10\u8FE9\u5302\u8CD1\u8089\u8679\u5EFF\u65E5\u4E73\u5165"], ["9440", "\u5982\u5C3F\u97EE\u4EFB\u598A\u5FCD\u8A8D\u6FE1\u79B0\u7962\u5BE7\u8471\u732B\u71B1\u5E74\u5FF5\u637B\u649A\u71C3\u7C98\u4E43\u5EFC\u4E4B\u57DC\u56A2\u60A9\u6FC3\u7D0D\u80FD\u8133\u81BF\u8FB2\u8997\u86A4\u5DF4\u628A\u64AD\u8987\u6777\u6CE2\u6D3E\u7436\u7834\u5A46\u7F75\u82AD\u99AC\u4FF3\u5EC3\u62DD\u6392\u6557\u676F\u76C3\u724C\u80CC\u80BA\u8F29\u914D\u500D\u57F9\u5A92\u6885"], ["9480", "\u6973\u7164\u72FD\u8CB7\u58F2\u8CE0\u966A\u9019\u877F\u79E4\u77E7\u8429\u4F2F\u5265\u535A\u62CD\u67CF\u6CCA\u767D\u7B94\u7C95\u8236\u8584\u8FEB\u66DD\u6F20\u7206\u7E1B\u83AB\u99C1\u9EA6\u51FD\u7BB1\u7872\u7BB8\u8087\u7B48\u6AE8\u5E61\u808C\u7551\u7560\u516B\u9262\u6E8C\u767A\u9197\u9AEA\u4F10\u7F70\u629C\u7B4F\u95A5\u9CE9\u567A\u5859\u86E4\u96BC\u4F34\u5224\u534A\u53CD\u53DB\u5E06\u642C\u6591\u677F\u6C3E\u6C4E\u7248\u72AF\u73ED\u7554\u7E41\u822C\u85E9\u8CA9\u7BC4\u91C6\u7169\u9812\u98EF\u633D\u6669\u756A\u76E4\u78D0\u8543\u86EE\u532A\u5351\u5426\u5983\u5E87\u5F7C\u60B2\u6249\u6279\u62AB\u6590\u6BD4\u6CCC\u75B2\u76AE\u7891\u79D8\u7DCB\u7F77\u80A5\u88AB\u8AB9\u8CBB\u907F\u975E\u98DB\u6A0B\u7C38\u5099\u5C3E\u5FAE\u6787\u6BD8\u7435\u7709\u7F8E"], ["9540", "\u9F3B\u67CA\u7A17\u5339\u758B\u9AED\u5F66\u819D\u83F1\u8098\u5F3C\u5FC5\u7562\u7B46\u903C\u6867\u59EB\u5A9B\u7D10\u767E\u8B2C\u4FF5\u5F6A\u6A19\u6C37\u6F02\u74E2\u7968\u8868\u8A55\u8C79\u5EDF\u63CF\u75C5\u79D2\u82D7\u9328\u92F2\u849C\u86ED\u9C2D\u54C1\u5F6C\u658C\u6D5C\u7015\u8CA7\u8CD3\u983B\u654F\u74F6\u4E0D\u4ED8\u57E0\u592B\u5A66\u5BCC\u51A8\u5E03\u5E9C\u6016\u6276\u6577"], ["9580", "\u65A7\u666E\u6D6E\u7236\u7B26\u8150\u819A\u8299\u8B5C\u8CA0\u8CE6\u8D74\u961C\u9644\u4FAE\u64AB\u6B66\u821E\u8461\u856A\u90E8\u5C01\u6953\u98A8\u847A\u8557\u4F0F\u526F\u5FA9\u5E45\u670D\u798F\u8179\u8907\u8986\u6DF5\u5F17\u6255\u6CB8\u4ECF\u7269\u9B92\u5206\u543B\u5674\u58B3\u61A4\u626E\u711A\u596E\u7C89\u7CDE\u7D1B\u96F0\u6587\u805E\u4E19\u4F75\u5175\u5840\u5E63\u5E73\u5F0A\u67C4\u4E26\u853D\u9589\u965B\u7C73\u9801\u50FB\u58C1\u7656\u78A7\u5225\u77A5\u8511\u7B86\u504F\u5909\u7247\u7BC7\u7DE8\u8FBA\u8FD4\u904D\u4FBF\u52C9\u5A29\u5F01\u97AD\u4FDD\u8217\u92EA\u5703\u6355\u6B69\u752B\u88DC\u8F14\u7A42\u52DF\u5893\u6155\u620A\u66AE\u6BCD\u7C3F\u83E9\u5023\u4FF8\u5305\u5446\u5831\u5949\u5B9D\u5CF0\u5CEF\u5D29\u5E96\u62B1\u6367\u653E\u65B9\u670B"], ["9640", "\u6CD5\u6CE1\u70F9\u7832\u7E2B\u80DE\u82B3\u840C\u84EC\u8702\u8912\u8A2A\u8C4A\u90A6\u92D2\u98FD\u9CF3\u9D6C\u4E4F\u4EA1\u508D\u5256\u574A\u59A8\u5E3D\u5FD8\u5FD9\u623F\u66B4\u671B\u67D0\u68D2\u5192\u7D21\u80AA\u81A8\u8B00\u8C8C\u8CBF\u927E\u9632\u5420\u982C\u5317\u50D5\u535C\u58A8\u64B2\u6734\u7267\u7766\u7A46\u91E6\u52C3\u6CA1\u6B86\u5800\u5E4C\u5954\u672C\u7FFB\u51E1\u76C6"], ["9680", "\u6469\u78E8\u9B54\u9EBB\u57CB\u59B9\u6627\u679A\u6BCE\u54E9\u69D9\u5E55\u819C\u6795\u9BAA\u67FE\u9C52\u685D\u4EA6\u4FE3\u53C8\u62B9\u672B\u6CAB\u8FC4\u4FAD\u7E6D\u9EBF\u4E07\u6162\u6E80\u6F2B\u8513\u5473\u672A\u9B45\u5DF3\u7B95\u5CAC\u5BC6\u871C\u6E4A\u84D1\u7A14\u8108\u5999\u7C8D\u6C11\u7720\u52D9\u5922\u7121\u725F\u77DB\u9727\u9D61\u690B\u5A7F\u5A18\u51A5\u540D\u547D\u660E\u76DF\u8FF7\u9298\u9CF4\u59EA\u725D\u6EC5\u514D\u68C9\u7DBF\u7DEC\u9762\u9EBA\u6478\u6A21\u8302\u5984\u5B5F\u6BDB\u731B\u76F2\u7DB2\u8017\u8499\u5132\u6728\u9ED9\u76EE\u6762\u52FF\u9905\u5C24\u623B\u7C7E\u8CB0\u554F\u60B6\u7D0B\u9580\u5301\u4E5F\u51B6\u591C\u723A\u8036\u91CE\u5F25\u77E2\u5384\u5F79\u7D04\u85AC\u8A33\u8E8D\u9756\u67F3\u85AE\u9453\u6109\u6108\u6CB9\u7652"], ["9740", "\u8AED\u8F38\u552F\u4F51\u512A\u52C7\u53CB\u5BA5\u5E7D\u60A0\u6182\u63D6\u6709\u67DA\u6E67\u6D8C\u7336\u7337\u7531\u7950\u88D5\u8A98\u904A\u9091\u90F5\u96C4\u878D\u5915\u4E88\u4F59\u4E0E\u8A89\u8F3F\u9810\u50AD\u5E7C\u5996\u5BB9\u5EB8\u63DA\u63FA\u64C1\u66DC\u694A\u69D8\u6D0B\u6EB6\u7194\u7528\u7AAF\u7F8A\u8000\u8449\u84C9\u8981\u8B21\u8E0A\u9065\u967D\u990A\u617E\u6291\u6B32"], ["9780", "\u6C83\u6D74\u7FCC\u7FFC\u6DC0\u7F85\u87BA\u88F8\u6765\u83B1\u983C\u96F7\u6D1B\u7D61\u843D\u916A\u4E71\u5375\u5D50\u6B04\u6FEB\u85CD\u862D\u89A7\u5229\u540F\u5C65\u674E\u68A8\u7406\u7483\u75E2\u88CF\u88E1\u91CC\u96E2\u9678\u5F8B\u7387\u7ACB\u844E\u63A0\u7565\u5289\u6D41\u6E9C\u7409\u7559\u786B\u7C92\u9686\u7ADC\u9F8D\u4FB6\u616E\u65C5\u865C\u4E86\u4EAE\u50DA\u4E21\u51CC\u5BEE\u6599\u6881\u6DBC\u731F\u7642\u77AD\u7A1C\u7CE7\u826F\u8AD2\u907C\u91CF\u9675\u9818\u529B\u7DD1\u502B\u5398\u6797\u6DCB\u71D0\u7433\u81E8\u8F2A\u96A3\u9C57\u9E9F\u7460\u5841\u6D99\u7D2F\u985E\u4EE4\u4F36\u4F8B\u51B7\u52B1\u5DBA\u601C\u73B2\u793C\u82D3\u9234\u96B7\u96F6\u970A\u9E97\u9F62\u66A6\u6B74\u5217\u52A3\u70C8\u88C2\u5EC9\u604B\u6190\u6F23\u7149\u7C3E\u7DF4\u806F"], ["9840", "\u84EE\u9023\u932C\u5442\u9B6F\u6AD3\u7089\u8CC2\u8DEF\u9732\u52B4\u5A41\u5ECA\u5F04\u6717\u697C\u6994\u6D6A\u6F0F\u7262\u72FC\u7BED\u8001\u807E\u874B\u90CE\u516D\u9E93\u7984\u808B\u9332\u8AD6\u502D\u548C\u8A71\u6B6A\u8CC4\u8107\u60D1\u67A0\u9DF2\u4E99\u4E98\u9C10\u8A6B\u85C1\u8568\u6900\u6E7E\u7897\u8155"], ["989f", "\u5F0C\u4E10\u4E15\u4E2A\u4E31\u4E36\u4E3C\u4E3F\u4E42\u4E56\u4E58\u4E82\u4E85\u8C6B\u4E8A\u8212\u5F0D\u4E8E\u4E9E\u4E9F\u4EA0\u4EA2\u4EB0\u4EB3\u4EB6\u4ECE\u4ECD\u4EC4\u4EC6\u4EC2\u4ED7\u4EDE\u4EED\u4EDF\u4EF7\u4F09\u4F5A\u4F30\u4F5B\u4F5D\u4F57\u4F47\u4F76\u4F88\u4F8F\u4F98\u4F7B\u4F69\u4F70\u4F91\u4F6F\u4F86\u4F96\u5118\u4FD4\u4FDF\u4FCE\u4FD8\u4FDB\u4FD1\u4FDA\u4FD0\u4FE4\u4FE5\u501A\u5028\u5014\u502A\u5025\u5005\u4F1C\u4FF6\u5021\u5029\u502C\u4FFE\u4FEF\u5011\u5006\u5043\u5047\u6703\u5055\u5050\u5048\u505A\u5056\u506C\u5078\u5080\u509A\u5085\u50B4\u50B2"], ["9940", "\u50C9\u50CA\u50B3\u50C2\u50D6\u50DE\u50E5\u50ED\u50E3\u50EE\u50F9\u50F5\u5109\u5101\u5102\u5116\u5115\u5114\u511A\u5121\u513A\u5137\u513C\u513B\u513F\u5140\u5152\u514C\u5154\u5162\u7AF8\u5169\u516A\u516E\u5180\u5182\u56D8\u518C\u5189\u518F\u5191\u5193\u5195\u5196\u51A4\u51A6\u51A2\u51A9\u51AA\u51AB\u51B3\u51B1\u51B2\u51B0\u51B5\u51BD\u51C5\u51C9\u51DB\u51E0\u8655\u51E9\u51ED"], ["9980", "\u51F0\u51F5\u51FE\u5204\u520B\u5214\u520E\u5227\u522A\u522E\u5233\u5239\u524F\u5244\u524B\u524C\u525E\u5254\u526A\u5274\u5269\u5273\u527F\u527D\u528D\u5294\u5292\u5271\u5288\u5291\u8FA8\u8FA7\u52AC\u52AD\u52BC\u52B5\u52C1\u52CD\u52D7\u52DE\u52E3\u52E6\u98ED\u52E0\u52F3\u52F5\u52F8\u52F9\u5306\u5308\u7538\u530D\u5310\u530F\u5315\u531A\u5323\u532F\u5331\u5333\u5338\u5340\u5346\u5345\u4E17\u5349\u534D\u51D6\u535E\u5369\u536E\u5918\u537B\u5377\u5382\u5396\u53A0\u53A6\u53A5\u53AE\u53B0\u53B6\u53C3\u7C12\u96D9\u53DF\u66FC\u71EE\u53EE\u53E8\u53ED\u53FA\u5401\u543D\u5440\u542C\u542D\u543C\u542E\u5436\u5429\u541D\u544E\u548F\u5475\u548E\u545F\u5471\u5477\u5470\u5492\u547B\u5480\u5476\u5484\u5490\u5486\u54C7\u54A2\u54B8\u54A5\u54AC\u54C4\u54C8\u54A8"], ["9a40", "\u54AB\u54C2\u54A4\u54BE\u54BC\u54D8\u54E5\u54E6\u550F\u5514\u54FD\u54EE\u54ED\u54FA\u54E2\u5539\u5540\u5563\u554C\u552E\u555C\u5545\u5556\u5557\u5538\u5533\u555D\u5599\u5580\u54AF\u558A\u559F\u557B\u557E\u5598\u559E\u55AE\u557C\u5583\u55A9\u5587\u55A8\u55DA\u55C5\u55DF\u55C4\u55DC\u55E4\u55D4\u5614\u55F7\u5616\u55FE\u55FD\u561B\u55F9\u564E\u5650\u71DF\u5634\u5636\u5632\u5638"], ["9a80", "\u566B\u5664\u562F\u566C\u566A\u5686\u5680\u568A\u56A0\u5694\u568F\u56A5\u56AE\u56B6\u56B4\u56C2\u56BC\u56C1\u56C3\u56C0\u56C8\u56CE\u56D1\u56D3\u56D7\u56EE\u56F9\u5700\u56FF\u5704\u5709\u5708\u570B\u570D\u5713\u5718\u5716\u55C7\u571C\u5726\u5737\u5738\u574E\u573B\u5740\u574F\u5769\u57C0\u5788\u5761\u577F\u5789\u5793\u57A0\u57B3\u57A4\u57AA\u57B0\u57C3\u57C6\u57D4\u57D2\u57D3\u580A\u57D6\u57E3\u580B\u5819\u581D\u5872\u5821\u5862\u584B\u5870\u6BC0\u5852\u583D\u5879\u5885\u58B9\u589F\u58AB\u58BA\u58DE\u58BB\u58B8\u58AE\u58C5\u58D3\u58D1\u58D7\u58D9\u58D8\u58E5\u58DC\u58E4\u58DF\u58EF\u58FA\u58F9\u58FB\u58FC\u58FD\u5902\u590A\u5910\u591B\u68A6\u5925\u592C\u592D\u5932\u5938\u593E\u7AD2\u5955\u5950\u594E\u595A\u5958\u5962\u5960\u5967\u596C\u5969"], ["9b40", "\u5978\u5981\u599D\u4F5E\u4FAB\u59A3\u59B2\u59C6\u59E8\u59DC\u598D\u59D9\u59DA\u5A25\u5A1F\u5A11\u5A1C\u5A09\u5A1A\u5A40\u5A6C\u5A49\u5A35\u5A36\u5A62\u5A6A\u5A9A\u5ABC\u5ABE\u5ACB\u5AC2\u5ABD\u5AE3\u5AD7\u5AE6\u5AE9\u5AD6\u5AFA\u5AFB\u5B0C\u5B0B\u5B16\u5B32\u5AD0\u5B2A\u5B36\u5B3E\u5B43\u5B45\u5B40\u5B51\u5B55\u5B5A\u5B5B\u5B65\u5B69\u5B70\u5B73\u5B75\u5B78\u6588\u5B7A\u5B80"], ["9b80", "\u5B83\u5BA6\u5BB8\u5BC3\u5BC7\u5BC9\u5BD4\u5BD0\u5BE4\u5BE6\u5BE2\u5BDE\u5BE5\u5BEB\u5BF0\u5BF6\u5BF3\u5C05\u5C07\u5C08\u5C0D\u5C13\u5C20\u5C22\u5C28\u5C38\u5C39\u5C41\u5C46\u5C4E\u5C53\u5C50\u5C4F\u5B71\u5C6C\u5C6E\u4E62\u5C76\u5C79\u5C8C\u5C91\u5C94\u599B\u5CAB\u5CBB\u5CB6\u5CBC\u5CB7\u5CC5\u5CBE\u5CC7\u5CD9\u5CE9\u5CFD\u5CFA\u5CED\u5D8C\u5CEA\u5D0B\u5D15\u5D17\u5D5C\u5D1F\u5D1B\u5D11\u5D14\u5D22\u5D1A\u5D19\u5D18\u5D4C\u5D52\u5D4E\u5D4B\u5D6C\u5D73\u5D76\u5D87\u5D84\u5D82\u5DA2\u5D9D\u5DAC\u5DAE\u5DBD\u5D90\u5DB7\u5DBC\u5DC9\u5DCD\u5DD3\u5DD2\u5DD6\u5DDB\u5DEB\u5DF2\u5DF5\u5E0B\u5E1A\u5E19\u5E11\u5E1B\u5E36\u5E37\u5E44\u5E43\u5E40\u5E4E\u5E57\u5E54\u5E5F\u5E62\u5E64\u5E47\u5E75\u5E76\u5E7A\u9EBC\u5E7F\u5EA0\u5EC1\u5EC2\u5EC8\u5ED0\u5ECF"], ["9c40", "\u5ED6\u5EE3\u5EDD\u5EDA\u5EDB\u5EE2\u5EE1\u5EE8\u5EE9\u5EEC\u5EF1\u5EF3\u5EF0\u5EF4\u5EF8\u5EFE\u5F03\u5F09\u5F5D\u5F5C\u5F0B\u5F11\u5F16\u5F29\u5F2D\u5F38\u5F41\u5F48\u5F4C\u5F4E\u5F2F\u5F51\u5F56\u5F57\u5F59\u5F61\u5F6D\u5F73\u5F77\u5F83\u5F82\u5F7F\u5F8A\u5F88\u5F91\u5F87\u5F9E\u5F99\u5F98\u5FA0\u5FA8\u5FAD\u5FBC\u5FD6\u5FFB\u5FE4\u5FF8\u5FF1\u5FDD\u60B3\u5FFF\u6021\u6060"], ["9c80", "\u6019\u6010\u6029\u600E\u6031\u601B\u6015\u602B\u6026\u600F\u603A\u605A\u6041\u606A\u6077\u605F\u604A\u6046\u604D\u6063\u6043\u6064\u6042\u606C\u606B\u6059\u6081\u608D\u60E7\u6083\u609A\u6084\u609B\u6096\u6097\u6092\u60A7\u608B\u60E1\u60B8\u60E0\u60D3\u60B4\u5FF0\u60BD\u60C6\u60B5\u60D8\u614D\u6115\u6106\u60F6\u60F7\u6100\u60F4\u60FA\u6103\u6121\u60FB\u60F1\u610D\u610E\u6147\u613E\u6128\u6127\u614A\u613F\u613C\u612C\u6134\u613D\u6142\u6144\u6173\u6177\u6158\u6159\u615A\u616B\u6174\u616F\u6165\u6171\u615F\u615D\u6153\u6175\u6199\u6196\u6187\u61AC\u6194\u619A\u618A\u6191\u61AB\u61AE\u61CC\u61CA\u61C9\u61F7\u61C8\u61C3\u61C6\u61BA\u61CB\u7F79\u61CD\u61E6\u61E3\u61F6\u61FA\u61F4\u61FF\u61FD\u61FC\u61FE\u6200\u6208\u6209\u620D\u620C\u6214\u621B"], ["9d40", "\u621E\u6221\u622A\u622E\u6230\u6232\u6233\u6241\u624E\u625E\u6263\u625B\u6260\u6268\u627C\u6282\u6289\u627E\u6292\u6293\u6296\u62D4\u6283\u6294\u62D7\u62D1\u62BB\u62CF\u62FF\u62C6\u64D4\u62C8\u62DC\u62CC\u62CA\u62C2\u62C7\u629B\u62C9\u630C\u62EE\u62F1\u6327\u6302\u6308\u62EF\u62F5\u6350\u633E\u634D\u641C\u634F\u6396\u638E\u6380\u63AB\u6376\u63A3\u638F\u6389\u639F\u63B5\u636B"], ["9d80", "\u6369\u63BE\u63E9\u63C0\u63C6\u63E3\u63C9\u63D2\u63F6\u63C4\u6416\u6434\u6406\u6413\u6426\u6436\u651D\u6417\u6428\u640F\u6467\u646F\u6476\u644E\u652A\u6495\u6493\u64A5\u64A9\u6488\u64BC\u64DA\u64D2\u64C5\u64C7\u64BB\u64D8\u64C2\u64F1\u64E7\u8209\u64E0\u64E1\u62AC\u64E3\u64EF\u652C\u64F6\u64F4\u64F2\u64FA\u6500\u64FD\u6518\u651C\u6505\u6524\u6523\u652B\u6534\u6535\u6537\u6536\u6538\u754B\u6548\u6556\u6555\u654D\u6558\u655E\u655D\u6572\u6578\u6582\u6583\u8B8A\u659B\u659F\u65AB\u65B7\u65C3\u65C6\u65C1\u65C4\u65CC\u65D2\u65DB\u65D9\u65E0\u65E1\u65F1\u6772\u660A\u6603\u65FB\u6773\u6635\u6636\u6634\u661C\u664F\u6644\u6649\u6641\u665E\u665D\u6664\u6667\u6668\u665F\u6662\u6670\u6683\u6688\u668E\u6689\u6684\u6698\u669D\u66C1\u66B9\u66C9\u66BE\u66BC"], ["9e40", "\u66C4\u66B8\u66D6\u66DA\u66E0\u663F\u66E6\u66E9\u66F0\u66F5\u66F7\u670F\u6716\u671E\u6726\u6727\u9738\u672E\u673F\u6736\u6741\u6738\u6737\u6746\u675E\u6760\u6759\u6763\u6764\u6789\u6770\u67A9\u677C\u676A\u678C\u678B\u67A6\u67A1\u6785\u67B7\u67EF\u67B4\u67EC\u67B3\u67E9\u67B8\u67E4\u67DE\u67DD\u67E2\u67EE\u67B9\u67CE\u67C6\u67E7\u6A9C\u681E\u6846\u6829\u6840\u684D\u6832\u684E"], ["9e80", "\u68B3\u682B\u6859\u6863\u6877\u687F\u689F\u688F\u68AD\u6894\u689D\u689B\u6883\u6AAE\u68B9\u6874\u68B5\u68A0\u68BA\u690F\u688D\u687E\u6901\u68CA\u6908\u68D8\u6922\u6926\u68E1\u690C\u68CD\u68D4\u68E7\u68D5\u6936\u6912\u6904\u68D7\u68E3\u6925\u68F9\u68E0\u68EF\u6928\u692A\u691A\u6923\u6921\u68C6\u6979\u6977\u695C\u6978\u696B\u6954\u697E\u696E\u6939\u6974\u693D\u6959\u6930\u6961\u695E\u695D\u6981\u696A\u69B2\u69AE\u69D0\u69BF\u69C1\u69D3\u69BE\u69CE\u5BE8\u69CA\u69DD\u69BB\u69C3\u69A7\u6A2E\u6991\u69A0\u699C\u6995\u69B4\u69DE\u69E8\u6A02\u6A1B\u69FF\u6B0A\u69F9\u69F2\u69E7\u6A05\u69B1\u6A1E\u69ED\u6A14\u69EB\u6A0A\u6A12\u6AC1\u6A23\u6A13\u6A44\u6A0C\u6A72\u6A36\u6A78\u6A47\u6A62\u6A59\u6A66\u6A48\u6A38\u6A22\u6A90\u6A8D\u6AA0\u6A84\u6AA2\u6AA3"], ["9f40", "\u6A97\u8617\u6ABB\u6AC3\u6AC2\u6AB8\u6AB3\u6AAC\u6ADE\u6AD1\u6ADF\u6AAA\u6ADA\u6AEA\u6AFB\u6B05\u8616\u6AFA\u6B12\u6B16\u9B31\u6B1F\u6B38\u6B37\u76DC\u6B39\u98EE\u6B47\u6B43\u6B49\u6B50\u6B59\u6B54\u6B5B\u6B5F\u6B61\u6B78\u6B79\u6B7F\u6B80\u6B84\u6B83\u6B8D\u6B98\u6B95\u6B9E\u6BA4\u6BAA\u6BAB\u6BAF\u6BB2\u6BB1\u6BB3\u6BB7\u6BBC\u6BC6\u6BCB\u6BD3\u6BDF\u6BEC\u6BEB\u6BF3\u6BEF"], ["9f80", "\u9EBE\u6C08\u6C13\u6C14\u6C1B\u6C24\u6C23\u6C5E\u6C55\u6C62\u6C6A\u6C82\u6C8D\u6C9A\u6C81\u6C9B\u6C7E\u6C68\u6C73\u6C92\u6C90\u6CC4\u6CF1\u6CD3\u6CBD\u6CD7\u6CC5\u6CDD\u6CAE\u6CB1\u6CBE\u6CBA\u6CDB\u6CEF\u6CD9\u6CEA\u6D1F\u884D\u6D36\u6D2B\u6D3D\u6D38\u6D19\u6D35\u6D33\u6D12\u6D0C\u6D63\u6D93\u6D64\u6D5A\u6D79\u6D59\u6D8E\u6D95\u6FE4\u6D85\u6DF9\u6E15\u6E0A\u6DB5\u6DC7\u6DE6\u6DB8\u6DC6\u6DEC\u6DDE\u6DCC\u6DE8\u6DD2\u6DC5\u6DFA\u6DD9\u6DE4\u6DD5\u6DEA\u6DEE\u6E2D\u6E6E\u6E2E\u6E19\u6E72\u6E5F\u6E3E\u6E23\u6E6B\u6E2B\u6E76\u6E4D\u6E1F\u6E43\u6E3A\u6E4E\u6E24\u6EFF\u6E1D\u6E38\u6E82\u6EAA\u6E98\u6EC9\u6EB7\u6ED3\u6EBD\u6EAF\u6EC4\u6EB2\u6ED4\u6ED5\u6E8F\u6EA5\u6EC2\u6E9F\u6F41\u6F11\u704C\u6EEC\u6EF8\u6EFE\u6F3F\u6EF2\u6F31\u6EEF\u6F32\u6ECC"], ["e040", "\u6F3E\u6F13\u6EF7\u6F86\u6F7A\u6F78\u6F81\u6F80\u6F6F\u6F5B\u6FF3\u6F6D\u6F82\u6F7C\u6F58\u6F8E\u6F91\u6FC2\u6F66\u6FB3\u6FA3\u6FA1\u6FA4\u6FB9\u6FC6\u6FAA\u6FDF\u6FD5\u6FEC\u6FD4\u6FD8\u6FF1\u6FEE\u6FDB\u7009\u700B\u6FFA\u7011\u7001\u700F\u6FFE\u701B\u701A\u6F74\u701D\u7018\u701F\u7030\u703E\u7032\u7051\u7063\u7099\u7092\u70AF\u70F1\u70AC\u70B8\u70B3\u70AE\u70DF\u70CB\u70DD"], ["e080", "\u70D9\u7109\u70FD\u711C\u7119\u7165\u7155\u7188\u7166\u7162\u714C\u7156\u716C\u718F\u71FB\u7184\u7195\u71A8\u71AC\u71D7\u71B9\u71BE\u71D2\u71C9\u71D4\u71CE\u71E0\u71EC\u71E7\u71F5\u71FC\u71F9\u71FF\u720D\u7210\u721B\u7228\u722D\u722C\u7230\u7232\u723B\u723C\u723F\u7240\u7246\u724B\u7258\u7274\u727E\u7282\u7281\u7287\u7292\u7296\u72A2\u72A7\u72B9\u72B2\u72C3\u72C6\u72C4\u72CE\u72D2\u72E2\u72E0\u72E1\u72F9\u72F7\u500F\u7317\u730A\u731C\u7316\u731D\u7334\u732F\u7329\u7325\u733E\u734E\u734F\u9ED8\u7357\u736A\u7368\u7370\u7378\u7375\u737B\u737A\u73C8\u73B3\u73CE\u73BB\u73C0\u73E5\u73EE\u73DE\u74A2\u7405\u746F\u7425\u73F8\u7432\u743A\u7455\u743F\u745F\u7459\u7441\u745C\u7469\u7470\u7463\u746A\u7476\u747E\u748B\u749E\u74A7\u74CA\u74CF\u74D4\u73F1"], ["e140", "\u74E0\u74E3\u74E7\u74E9\u74EE\u74F2\u74F0\u74F1\u74F8\u74F7\u7504\u7503\u7505\u750C\u750E\u750D\u7515\u7513\u751E\u7526\u752C\u753C\u7544\u754D\u754A\u7549\u755B\u7546\u755A\u7569\u7564\u7567\u756B\u756D\u7578\u7576\u7586\u7587\u7574\u758A\u7589\u7582\u7594\u759A\u759D\u75A5\u75A3\u75C2\u75B3\u75C3\u75B5\u75BD\u75B8\u75BC\u75B1\u75CD\u75CA\u75D2\u75D9\u75E3\u75DE\u75FE\u75FF"], ["e180", "\u75FC\u7601\u75F0\u75FA\u75F2\u75F3\u760B\u760D\u7609\u761F\u7627\u7620\u7621\u7622\u7624\u7634\u7630\u763B\u7647\u7648\u7646\u765C\u7658\u7661\u7662\u7668\u7669\u766A\u7667\u766C\u7670\u7672\u7676\u7678\u767C\u7680\u7683\u7688\u768B\u768E\u7696\u7693\u7699\u769A\u76B0\u76B4\u76B8\u76B9\u76BA\u76C2\u76CD\u76D6\u76D2\u76DE\u76E1\u76E5\u76E7\u76EA\u862F\u76FB\u7708\u7707\u7704\u7729\u7724\u771E\u7725\u7726\u771B\u7737\u7738\u7747\u775A\u7768\u776B\u775B\u7765\u777F\u777E\u7779\u778E\u778B\u7791\u77A0\u779E\u77B0\u77B6\u77B9\u77BF\u77BC\u77BD\u77BB\u77C7\u77CD\u77D7\u77DA\u77DC\u77E3\u77EE\u77FC\u780C\u7812\u7926\u7820\u792A\u7845\u788E\u7874\u7886\u787C\u789A\u788C\u78A3\u78B5\u78AA\u78AF\u78D1\u78C6\u78CB\u78D4\u78BE\u78BC\u78C5\u78CA\u78EC"], ["e240", "\u78E7\u78DA\u78FD\u78F4\u7907\u7912\u7911\u7919\u792C\u792B\u7940\u7960\u7957\u795F\u795A\u7955\u7953\u797A\u797F\u798A\u799D\u79A7\u9F4B\u79AA\u79AE\u79B3\u79B9\u79BA\u79C9\u79D5\u79E7\u79EC\u79E1\u79E3\u7A08\u7A0D\u7A18\u7A19\u7A20\u7A1F\u7980\u7A31\u7A3B\u7A3E\u7A37\u7A43\u7A57\u7A49\u7A61\u7A62\u7A69\u9F9D\u7A70\u7A79\u7A7D\u7A88\u7A97\u7A95\u7A98\u7A96\u7AA9\u7AC8\u7AB0"], ["e280", "\u7AB6\u7AC5\u7AC4\u7ABF\u9083\u7AC7\u7ACA\u7ACD\u7ACF\u7AD5\u7AD3\u7AD9\u7ADA\u7ADD\u7AE1\u7AE2\u7AE6\u7AED\u7AF0\u7B02\u7B0F\u7B0A\u7B06\u7B33\u7B18\u7B19\u7B1E\u7B35\u7B28\u7B36\u7B50\u7B7A\u7B04\u7B4D\u7B0B\u7B4C\u7B45\u7B75\u7B65\u7B74\u7B67\u7B70\u7B71\u7B6C\u7B6E\u7B9D\u7B98\u7B9F\u7B8D\u7B9C\u7B9A\u7B8B\u7B92\u7B8F\u7B5D\u7B99\u7BCB\u7BC1\u7BCC\u7BCF\u7BB4\u7BC6\u7BDD\u7BE9\u7C11\u7C14\u7BE6\u7BE5\u7C60\u7C00\u7C07\u7C13\u7BF3\u7BF7\u7C17\u7C0D\u7BF6\u7C23\u7C27\u7C2A\u7C1F\u7C37\u7C2B\u7C3D\u7C4C\u7C43\u7C54\u7C4F\u7C40\u7C50\u7C58\u7C5F\u7C64\u7C56\u7C65\u7C6C\u7C75\u7C83\u7C90\u7CA4\u7CAD\u7CA2\u7CAB\u7CA1\u7CA8\u7CB3\u7CB2\u7CB1\u7CAE\u7CB9\u7CBD\u7CC0\u7CC5\u7CC2\u7CD8\u7CD2\u7CDC\u7CE2\u9B3B\u7CEF\u7CF2\u7CF4\u7CF6\u7CFA\u7D06"], ["e340", "\u7D02\u7D1C\u7D15\u7D0A\u7D45\u7D4B\u7D2E\u7D32\u7D3F\u7D35\u7D46\u7D73\u7D56\u7D4E\u7D72\u7D68\u7D6E\u7D4F\u7D63\u7D93\u7D89\u7D5B\u7D8F\u7D7D\u7D9B\u7DBA\u7DAE\u7DA3\u7DB5\u7DC7\u7DBD\u7DAB\u7E3D\u7DA2\u7DAF\u7DDC\u7DB8\u7D9F\u7DB0\u7DD8\u7DDD\u7DE4\u7DDE\u7DFB\u7DF2\u7DE1\u7E05\u7E0A\u7E23\u7E21\u7E12\u7E31\u7E1F\u7E09\u7E0B\u7E22\u7E46\u7E66\u7E3B\u7E35\u7E39\u7E43\u7E37"], ["e380", "\u7E32\u7E3A\u7E67\u7E5D\u7E56\u7E5E\u7E59\u7E5A\u7E79\u7E6A\u7E69\u7E7C\u7E7B\u7E83\u7DD5\u7E7D\u8FAE\u7E7F\u7E88\u7E89\u7E8C\u7E92\u7E90\u7E93\u7E94\u7E96\u7E8E\u7E9B\u7E9C\u7F38\u7F3A\u7F45\u7F4C\u7F4D\u7F4E\u7F50\u7F51\u7F55\u7F54\u7F58\u7F5F\u7F60\u7F68\u7F69\u7F67\u7F78\u7F82\u7F86\u7F83\u7F88\u7F87\u7F8C\u7F94\u7F9E\u7F9D\u7F9A\u7FA3\u7FAF\u7FB2\u7FB9\u7FAE\u7FB6\u7FB8\u8B71\u7FC5\u7FC6\u7FCA\u7FD5\u7FD4\u7FE1\u7FE6\u7FE9\u7FF3\u7FF9\u98DC\u8006\u8004\u800B\u8012\u8018\u8019\u801C\u8021\u8028\u803F\u803B\u804A\u8046\u8052\u8058\u805A\u805F\u8062\u8068\u8073\u8072\u8070\u8076\u8079\u807D\u807F\u8084\u8086\u8085\u809B\u8093\u809A\u80AD\u5190\u80AC\u80DB\u80E5\u80D9\u80DD\u80C4\u80DA\u80D6\u8109\u80EF\u80F1\u811B\u8129\u8123\u812F\u814B"], ["e440", "\u968B\u8146\u813E\u8153\u8151\u80FC\u8171\u816E\u8165\u8166\u8174\u8183\u8188\u818A\u8180\u8182\u81A0\u8195\u81A4\u81A3\u815F\u8193\u81A9\u81B0\u81B5\u81BE\u81B8\u81BD\u81C0\u81C2\u81BA\u81C9\u81CD\u81D1\u81D9\u81D8\u81C8\u81DA\u81DF\u81E0\u81E7\u81FA\u81FB\u81FE\u8201\u8202\u8205\u8207\u820A\u820D\u8210\u8216\u8229\u822B\u8238\u8233\u8240\u8259\u8258\u825D\u825A\u825F\u8264"], ["e480", "\u8262\u8268\u826A\u826B\u822E\u8271\u8277\u8278\u827E\u828D\u8292\u82AB\u829F\u82BB\u82AC\u82E1\u82E3\u82DF\u82D2\u82F4\u82F3\u82FA\u8393\u8303\u82FB\u82F9\u82DE\u8306\u82DC\u8309\u82D9\u8335\u8334\u8316\u8332\u8331\u8340\u8339\u8350\u8345\u832F\u832B\u8317\u8318\u8385\u839A\u83AA\u839F\u83A2\u8396\u8323\u838E\u8387\u838A\u837C\u83B5\u8373\u8375\u83A0\u8389\u83A8\u83F4\u8413\u83EB\u83CE\u83FD\u8403\u83D8\u840B\u83C1\u83F7\u8407\u83E0\u83F2\u840D\u8422\u8420\u83BD\u8438\u8506\u83FB\u846D\u842A\u843C\u855A\u8484\u8477\u846B\u84AD\u846E\u8482\u8469\u8446\u842C\u846F\u8479\u8435\u84CA\u8462\u84B9\u84BF\u849F\u84D9\u84CD\u84BB\u84DA\u84D0\u84C1\u84C6\u84D6\u84A1\u8521\u84FF\u84F4\u8517\u8518\u852C\u851F\u8515\u8514\u84FC\u8540\u8563\u8558\u8548"], ["e540", "\u8541\u8602\u854B\u8555\u8580\u85A4\u8588\u8591\u858A\u85A8\u856D\u8594\u859B\u85EA\u8587\u859C\u8577\u857E\u8590\u85C9\u85BA\u85CF\u85B9\u85D0\u85D5\u85DD\u85E5\u85DC\u85F9\u860A\u8613\u860B\u85FE\u85FA\u8606\u8622\u861A\u8630\u863F\u864D\u4E55\u8654\u865F\u8667\u8671\u8693\u86A3\u86A9\u86AA\u868B\u868C\u86B6\u86AF\u86C4\u86C6\u86B0\u86C9\u8823\u86AB\u86D4\u86DE\u86E9\u86EC"], ["e580", "\u86DF\u86DB\u86EF\u8712\u8706\u8708\u8700\u8703\u86FB\u8711\u8709\u870D\u86F9\u870A\u8734\u873F\u8737\u873B\u8725\u8729\u871A\u8760\u875F\u8778\u874C\u874E\u8774\u8757\u8768\u876E\u8759\u8753\u8763\u876A\u8805\u87A2\u879F\u8782\u87AF\u87CB\u87BD\u87C0\u87D0\u96D6\u87AB\u87C4\u87B3\u87C7\u87C6\u87BB\u87EF\u87F2\u87E0\u880F\u880D\u87FE\u87F6\u87F7\u880E\u87D2\u8811\u8816\u8815\u8822\u8821\u8831\u8836\u8839\u8827\u883B\u8844\u8842\u8852\u8859\u885E\u8862\u886B\u8881\u887E\u889E\u8875\u887D\u88B5\u8872\u8882\u8897\u8892\u88AE\u8899\u88A2\u888D\u88A4\u88B0\u88BF\u88B1\u88C3\u88C4\u88D4\u88D8\u88D9\u88DD\u88F9\u8902\u88FC\u88F4\u88E8\u88F2\u8904\u890C\u890A\u8913\u8943\u891E\u8925\u892A\u892B\u8941\u8944\u893B\u8936\u8938\u894C\u891D\u8960\u895E"], ["e640", "\u8966\u8964\u896D\u896A\u896F\u8974\u8977\u897E\u8983\u8988\u898A\u8993\u8998\u89A1\u89A9\u89A6\u89AC\u89AF\u89B2\u89BA\u89BD\u89BF\u89C0\u89DA\u89DC\u89DD\u89E7\u89F4\u89F8\u8A03\u8A16\u8A10\u8A0C\u8A1B\u8A1D\u8A25\u8A36\u8A41\u8A5B\u8A52\u8A46\u8A48\u8A7C\u8A6D\u8A6C\u8A62\u8A85\u8A82\u8A84\u8AA8\u8AA1\u8A91\u8AA5\u8AA6\u8A9A\u8AA3\u8AC4\u8ACD\u8AC2\u8ADA\u8AEB\u8AF3\u8AE7"], ["e680", "\u8AE4\u8AF1\u8B14\u8AE0\u8AE2\u8AF7\u8ADE\u8ADB\u8B0C\u8B07\u8B1A\u8AE1\u8B16\u8B10\u8B17\u8B20\u8B33\u97AB\u8B26\u8B2B\u8B3E\u8B28\u8B41\u8B4C\u8B4F\u8B4E\u8B49\u8B56\u8B5B\u8B5A\u8B6B\u8B5F\u8B6C\u8B6F\u8B74\u8B7D\u8B80\u8B8C\u8B8E\u8B92\u8B93\u8B96\u8B99\u8B9A\u8C3A\u8C41\u8C3F\u8C48\u8C4C\u8C4E\u8C50\u8C55\u8C62\u8C6C\u8C78\u8C7A\u8C82\u8C89\u8C85\u8C8A\u8C8D\u8C8E\u8C94\u8C7C\u8C98\u621D\u8CAD\u8CAA\u8CBD\u8CB2\u8CB3\u8CAE\u8CB6\u8CC8\u8CC1\u8CE4\u8CE3\u8CDA\u8CFD\u8CFA\u8CFB\u8D04\u8D05\u8D0A\u8D07\u8D0F\u8D0D\u8D10\u9F4E\u8D13\u8CCD\u8D14\u8D16\u8D67\u8D6D\u8D71\u8D73\u8D81\u8D99\u8DC2\u8DBE\u8DBA\u8DCF\u8DDA\u8DD6\u8DCC\u8DDB\u8DCB\u8DEA\u8DEB\u8DDF\u8DE3\u8DFC\u8E08\u8E09\u8DFF\u8E1D\u8E1E\u8E10\u8E1F\u8E42\u8E35\u8E30\u8E34\u8E4A"], ["e740", "\u8E47\u8E49\u8E4C\u8E50\u8E48\u8E59\u8E64\u8E60\u8E2A\u8E63\u8E55\u8E76\u8E72\u8E7C\u8E81\u8E87\u8E85\u8E84\u8E8B\u8E8A\u8E93\u8E91\u8E94\u8E99\u8EAA\u8EA1\u8EAC\u8EB0\u8EC6\u8EB1\u8EBE\u8EC5\u8EC8\u8ECB\u8EDB\u8EE3\u8EFC\u8EFB\u8EEB\u8EFE\u8F0A\u8F05\u8F15\u8F12\u8F19\u8F13\u8F1C\u8F1F\u8F1B\u8F0C\u8F26\u8F33\u8F3B\u8F39\u8F45\u8F42\u8F3E\u8F4C\u8F49\u8F46\u8F4E\u8F57\u8F5C"], ["e780", "\u8F62\u8F63\u8F64\u8F9C\u8F9F\u8FA3\u8FAD\u8FAF\u8FB7\u8FDA\u8FE5\u8FE2\u8FEA\u8FEF\u9087\u8FF4\u9005\u8FF9\u8FFA\u9011\u9015\u9021\u900D\u901E\u9016\u900B\u9027\u9036\u9035\u9039\u8FF8\u904F\u9050\u9051\u9052\u900E\u9049\u903E\u9056\u9058\u905E\u9068\u906F\u9076\u96A8\u9072\u9082\u907D\u9081\u9080\u908A\u9089\u908F\u90A8\u90AF\u90B1\u90B5\u90E2\u90E4\u6248\u90DB\u9102\u9112\u9119\u9132\u9130\u914A\u9156\u9158\u9163\u9165\u9169\u9173\u9172\u918B\u9189\u9182\u91A2\u91AB\u91AF\u91AA\u91B5\u91B4\u91BA\u91C0\u91C1\u91C9\u91CB\u91D0\u91D6\u91DF\u91E1\u91DB\u91FC\u91F5\u91F6\u921E\u91FF\u9214\u922C\u9215\u9211\u925E\u9257\u9245\u9249\u9264\u9248\u9295\u923F\u924B\u9250\u929C\u9296\u9293\u929B\u925A\u92CF\u92B9\u92B7\u92E9\u930F\u92FA\u9344\u932E"], ["e840", "\u9319\u9322\u931A\u9323\u933A\u9335\u933B\u935C\u9360\u937C\u936E\u9356\u93B0\u93AC\u93AD\u9394\u93B9\u93D6\u93D7\u93E8\u93E5\u93D8\u93C3\u93DD\u93D0\u93C8\u93E4\u941A\u9414\u9413\u9403\u9407\u9410\u9436\u942B\u9435\u9421\u943A\u9441\u9452\u9444\u945B\u9460\u9462\u945E\u946A\u9229\u9470\u9475\u9477\u947D\u945A\u947C\u947E\u9481\u947F\u9582\u9587\u958A\u9594\u9596\u9598\u9599"], ["e880", "\u95A0\u95A8\u95A7\u95AD\u95BC\u95BB\u95B9\u95BE\u95CA\u6FF6\u95C3\u95CD\u95CC\u95D5\u95D4\u95D6\u95DC\u95E1\u95E5\u95E2\u9621\u9628\u962E\u962F\u9642\u964C\u964F\u964B\u9677\u965C\u965E\u965D\u965F\u9666\u9672\u966C\u968D\u9698\u9695\u9697\u96AA\u96A7\u96B1\u96B2\u96B0\u96B4\u96B6\u96B8\u96B9\u96CE\u96CB\u96C9\u96CD\u894D\u96DC\u970D\u96D5\u96F9\u9704\u9706\u9708\u9713\u970E\u9711\u970F\u9716\u9719\u9724\u972A\u9730\u9739\u973D\u973E\u9744\u9746\u9748\u9742\u9749\u975C\u9760\u9764\u9766\u9768\u52D2\u976B\u9771\u9779\u9785\u977C\u9781\u977A\u9786\u978B\u978F\u9790\u979C\u97A8\u97A6\u97A3\u97B3\u97B4\u97C3\u97C6\u97C8\u97CB\u97DC\u97ED\u9F4F\u97F2\u7ADF\u97F6\u97F5\u980F\u980C\u9838\u9824\u9821\u9837\u983D\u9846\u984F\u984B\u986B\u986F\u9870"], ["e940", "\u9871\u9874\u9873\u98AA\u98AF\u98B1\u98B6\u98C4\u98C3\u98C6\u98E9\u98EB\u9903\u9909\u9912\u9914\u9918\u9921\u991D\u991E\u9924\u9920\u992C\u992E\u993D\u993E\u9942\u9949\u9945\u9950\u994B\u9951\u9952\u994C\u9955\u9997\u9998\u99A5\u99AD\u99AE\u99BC\u99DF\u99DB\u99DD\u99D8\u99D1\u99ED\u99EE\u99F1\u99F2\u99FB\u99F8\u9A01\u9A0F\u9A05\u99E2\u9A19\u9A2B\u9A37\u9A45\u9A42\u9A40\u9A43"], ["e980", "\u9A3E\u9A55\u9A4D\u9A5B\u9A57\u9A5F\u9A62\u9A65\u9A64\u9A69\u9A6B\u9A6A\u9AAD\u9AB0\u9ABC\u9AC0\u9ACF\u9AD1\u9AD3\u9AD4\u9ADE\u9ADF\u9AE2\u9AE3\u9AE6\u9AEF\u9AEB\u9AEE\u9AF4\u9AF1\u9AF7\u9AFB\u9B06\u9B18\u9B1A\u9B1F\u9B22\u9B23\u9B25\u9B27\u9B28\u9B29\u9B2A\u9B2E\u9B2F\u9B32\u9B44\u9B43\u9B4F\u9B4D\u9B4E\u9B51\u9B58\u9B74\u9B93\u9B83\u9B91\u9B96\u9B97\u9B9F\u9BA0\u9BA8\u9BB4\u9BC0\u9BCA\u9BB9\u9BC6\u9BCF\u9BD1\u9BD2\u9BE3\u9BE2\u9BE4\u9BD4\u9BE1\u9C3A\u9BF2\u9BF1\u9BF0\u9C15\u9C14\u9C09\u9C13\u9C0C\u9C06\u9C08\u9C12\u9C0A\u9C04\u9C2E\u9C1B\u9C25\u9C24\u9C21\u9C30\u9C47\u9C32\u9C46\u9C3E\u9C5A\u9C60\u9C67\u9C76\u9C78\u9CE7\u9CEC\u9CF0\u9D09\u9D08\u9CEB\u9D03\u9D06\u9D2A\u9D26\u9DAF\u9D23\u9D1F\u9D44\u9D15\u9D12\u9D41\u9D3F\u9D3E\u9D46\u9D48"], ["ea40", "\u9D5D\u9D5E\u9D64\u9D51\u9D50\u9D59\u9D72\u9D89\u9D87\u9DAB\u9D6F\u9D7A\u9D9A\u9DA4\u9DA9\u9DB2\u9DC4\u9DC1\u9DBB\u9DB8\u9DBA\u9DC6\u9DCF\u9DC2\u9DD9\u9DD3\u9DF8\u9DE6\u9DED\u9DEF\u9DFD\u9E1A\u9E1B\u9E1E\u9E75\u9E79\u9E7D\u9E81\u9E88\u9E8B\u9E8C\u9E92\u9E95\u9E91\u9E9D\u9EA5\u9EA9\u9EB8\u9EAA\u9EAD\u9761\u9ECC\u9ECE\u9ECF\u9ED0\u9ED4\u9EDC\u9EDE\u9EDD\u9EE0\u9EE5\u9EE8\u9EEF"], ["ea80", "\u9EF4\u9EF6\u9EF7\u9EF9\u9EFB\u9EFC\u9EFD\u9F07\u9F08\u76B7\u9F15\u9F21\u9F2C\u9F3E\u9F4A\u9F52\u9F54\u9F63\u9F5F\u9F60\u9F61\u9F66\u9F67\u9F6C\u9F6A\u9F77\u9F72\u9F76\u9F95\u9F9C\u9FA0\u582F\u69C7\u9059\u7464\u51DC\u7199"], ["ed40", "\u7E8A\u891C\u9348\u9288\u84DC\u4FC9\u70BB\u6631\u68C8\u92F9\u66FB\u5F45\u4E28\u4EE1\u4EFC\u4F00\u4F03\u4F39\u4F56\u4F92\u4F8A\u4F9A\u4F94\u4FCD\u5040\u5022\u4FFF\u501E\u5046\u5070\u5042\u5094\u50F4\u50D8\u514A\u5164\u519D\u51BE\u51EC\u5215\u529C\u52A6\u52C0\u52DB\u5300\u5307\u5324\u5372\u5393\u53B2\u53DD\uFA0E\u549C\u548A\u54A9\u54FF\u5586\u5759\u5765\u57AC\u57C8\u57C7\uFA0F"], ["ed80", "\uFA10\u589E\u58B2\u590B\u5953\u595B\u595D\u5963\u59A4\u59BA\u5B56\u5BC0\u752F\u5BD8\u5BEC\u5C1E\u5CA6\u5CBA\u5CF5\u5D27\u5D53\uFA11\u5D42\u5D6D\u5DB8\u5DB9\u5DD0\u5F21\u5F34\u5F67\u5FB7\u5FDE\u605D\u6085\u608A\u60DE\u60D5\u6120\u60F2\u6111\u6137\u6130\u6198\u6213\u62A6\u63F5\u6460\u649D\u64CE\u654E\u6600\u6615\u663B\u6609\u662E\u661E\u6624\u6665\u6657\u6659\uFA12\u6673\u6699\u66A0\u66B2\u66BF\u66FA\u670E\uF929\u6766\u67BB\u6852\u67C0\u6801\u6844\u68CF\uFA13\u6968\uFA14\u6998\u69E2\u6A30\u6A6B\u6A46\u6A73\u6A7E\u6AE2\u6AE4\u6BD6\u6C3F\u6C5C\u6C86\u6C6F\u6CDA\u6D04\u6D87\u6D6F\u6D96\u6DAC\u6DCF\u6DF8\u6DF2\u6DFC\u6E39\u6E5C\u6E27\u6E3C\u6EBF\u6F88\u6FB5\u6FF5\u7005\u7007\u7028\u7085\u70AB\u710F\u7104\u715C\u7146\u7147\uFA15\u71C1\u71FE\u72B1"], ["ee40", "\u72BE\u7324\uFA16\u7377\u73BD\u73C9\u73D6\u73E3\u73D2\u7407\u73F5\u7426\u742A\u7429\u742E\u7462\u7489\u749F\u7501\u756F\u7682\u769C\u769E\u769B\u76A6\uFA17\u7746\u52AF\u7821\u784E\u7864\u787A\u7930\uFA18\uFA19\uFA1A\u7994\uFA1B\u799B\u7AD1\u7AE7\uFA1C\u7AEB\u7B9E\uFA1D\u7D48\u7D5C\u7DB7\u7DA0\u7DD6\u7E52\u7F47\u7FA1\uFA1E\u8301\u8362\u837F\u83C7\u83F6\u8448\u84B4\u8553\u8559"], ["ee80", "\u856B\uFA1F\u85B0\uFA20\uFA21\u8807\u88F5\u8A12\u8A37\u8A79\u8AA7\u8ABE\u8ADF\uFA22\u8AF6\u8B53\u8B7F\u8CF0\u8CF4\u8D12\u8D76\uFA23\u8ECF\uFA24\uFA25\u9067\u90DE\uFA26\u9115\u9127\u91DA\u91D7\u91DE\u91ED\u91EE\u91E4\u91E5\u9206\u9210\u920A\u923A\u9240\u923C\u924E\u9259\u9251\u9239\u9267\u92A7\u9277\u9278\u92E7\u92D7\u92D9\u92D0\uFA27\u92D5\u92E0\u92D3\u9325\u9321\u92FB\uFA28\u931E\u92FF\u931D\u9302\u9370\u9357\u93A4\u93C6\u93DE\u93F8\u9431\u9445\u9448\u9592\uF9DC\uFA29\u969D\u96AF\u9733\u973B\u9743\u974D\u974F\u9751\u9755\u9857\u9865\uFA2A\uFA2B\u9927\uFA2C\u999E\u9A4E\u9AD9\u9ADC\u9B75\u9B72\u9B8F\u9BB1\u9BBB\u9C00\u9D70\u9D6B\uFA2D\u9E19\u9ED1"], ["eeef", "\u2170", 9, "\uFFE2\uFFE4\uFF07\uFF02"], ["f040", "\uE000", 62], ["f080", "\uE03F", 124], ["f140", "\uE0BC", 62], ["f180", "\uE0FB", 124], ["f240", "\uE178", 62], ["f280", "\uE1B7", 124], ["f340", "\uE234", 62], ["f380", "\uE273", 124], ["f440", "\uE2F0", 62], ["f480", "\uE32F", 124], ["f540", "\uE3AC", 62], ["f580", "\uE3EB", 124], ["f640", "\uE468", 62], ["f680", "\uE4A7", 124], ["f740", "\uE524", 62], ["f780", "\uE563", 124], ["f840", "\uE5E0", 62], ["f880", "\uE61F", 124], ["f940", "\uE69C"], ["fa40", "\u2170", 9, "\u2160", 9, "\uFFE2\uFFE4\uFF07\uFF02\u3231\u2116\u2121\u2235\u7E8A\u891C\u9348\u9288\u84DC\u4FC9\u70BB\u6631\u68C8\u92F9\u66FB\u5F45\u4E28\u4EE1\u4EFC\u4F00\u4F03\u4F39\u4F56\u4F92\u4F8A\u4F9A\u4F94\u4FCD\u5040\u5022\u4FFF\u501E\u5046\u5070\u5042\u5094\u50F4\u50D8\u514A"], ["fa80", "\u5164\u519D\u51BE\u51EC\u5215\u529C\u52A6\u52C0\u52DB\u5300\u5307\u5324\u5372\u5393\u53B2\u53DD\uFA0E\u549C\u548A\u54A9\u54FF\u5586\u5759\u5765\u57AC\u57C8\u57C7\uFA0F\uFA10\u589E\u58B2\u590B\u5953\u595B\u595D\u5963\u59A4\u59BA\u5B56\u5BC0\u752F\u5BD8\u5BEC\u5C1E\u5CA6\u5CBA\u5CF5\u5D27\u5D53\uFA11\u5D42\u5D6D\u5DB8\u5DB9\u5DD0\u5F21\u5F34\u5F67\u5FB7\u5FDE\u605D\u6085\u608A\u60DE\u60D5\u6120\u60F2\u6111\u6137\u6130\u6198\u6213\u62A6\u63F5\u6460\u649D\u64CE\u654E\u6600\u6615\u663B\u6609\u662E\u661E\u6624\u6665\u6657\u6659\uFA12\u6673\u6699\u66A0\u66B2\u66BF\u66FA\u670E\uF929\u6766\u67BB\u6852\u67C0\u6801\u6844\u68CF\uFA13\u6968\uFA14\u6998\u69E2\u6A30\u6A6B\u6A46\u6A73\u6A7E\u6AE2\u6AE4\u6BD6\u6C3F\u6C5C\u6C86\u6C6F\u6CDA\u6D04\u6D87\u6D6F"], ["fb40", "\u6D96\u6DAC\u6DCF\u6DF8\u6DF2\u6DFC\u6E39\u6E5C\u6E27\u6E3C\u6EBF\u6F88\u6FB5\u6FF5\u7005\u7007\u7028\u7085\u70AB\u710F\u7104\u715C\u7146\u7147\uFA15\u71C1\u71FE\u72B1\u72BE\u7324\uFA16\u7377\u73BD\u73C9\u73D6\u73E3\u73D2\u7407\u73F5\u7426\u742A\u7429\u742E\u7462\u7489\u749F\u7501\u756F\u7682\u769C\u769E\u769B\u76A6\uFA17\u7746\u52AF\u7821\u784E\u7864\u787A\u7930\uFA18\uFA19"], ["fb80", "\uFA1A\u7994\uFA1B\u799B\u7AD1\u7AE7\uFA1C\u7AEB\u7B9E\uFA1D\u7D48\u7D5C\u7DB7\u7DA0\u7DD6\u7E52\u7F47\u7FA1\uFA1E\u8301\u8362\u837F\u83C7\u83F6\u8448\u84B4\u8553\u8559\u856B\uFA1F\u85B0\uFA20\uFA21\u8807\u88F5\u8A12\u8A37\u8A79\u8AA7\u8ABE\u8ADF\uFA22\u8AF6\u8B53\u8B7F\u8CF0\u8CF4\u8D12\u8D76\uFA23\u8ECF\uFA24\uFA25\u9067\u90DE\uFA26\u9115\u9127\u91DA\u91D7\u91DE\u91ED\u91EE\u91E4\u91E5\u9206\u9210\u920A\u923A\u9240\u923C\u924E\u9259\u9251\u9239\u9267\u92A7\u9277\u9278\u92E7\u92D7\u92D9\u92D0\uFA27\u92D5\u92E0\u92D3\u9325\u9321\u92FB\uFA28\u931E\u92FF\u931D\u9302\u9370\u9357\u93A4\u93C6\u93DE\u93F8\u9431\u9445\u9448\u9592\uF9DC\uFA29\u969D\u96AF\u9733\u973B\u9743\u974D\u974F\u9751\u9755\u9857\u9865\uFA2A\uFA2B\u9927\uFA2C\u999E\u9A4E\u9AD9"], ["fc40", "\u9ADC\u9B75\u9B72\u9B8F\u9BB1\u9BBB\u9C00\u9D70\u9D6B\uFA2D\u9E19\u9ED1"]]; +}); +var HE = g((Bpe, oU) => { + oU.exports = [["0", "\0", 127], ["8ea1", "\uFF61", 62], ["a1a1", "\u3000\u3001\u3002\uFF0C\uFF0E\u30FB\uFF1A\uFF1B\uFF1F\uFF01\u309B\u309C\xB4\uFF40\xA8\uFF3E\uFFE3\uFF3F\u30FD\u30FE\u309D\u309E\u3003\u4EDD\u3005\u3006\u3007\u30FC\u2015\u2010\uFF0F\uFF3C\uFF5E\u2225\uFF5C\u2026\u2025\u2018\u2019\u201C\u201D\uFF08\uFF09\u3014\u3015\uFF3B\uFF3D\uFF5B\uFF5D\u3008", 9, "\uFF0B\uFF0D\xB1\xD7\xF7\uFF1D\u2260\uFF1C\uFF1E\u2266\u2267\u221E\u2234\u2642\u2640\xB0\u2032\u2033\u2103\uFFE5\uFF04\uFFE0\uFFE1\uFF05\uFF03\uFF06\uFF0A\uFF20\xA7\u2606\u2605\u25CB\u25CF\u25CE\u25C7"], ["a2a1", "\u25C6\u25A1\u25A0\u25B3\u25B2\u25BD\u25BC\u203B\u3012\u2192\u2190\u2191\u2193\u3013"], ["a2ba", "\u2208\u220B\u2286\u2287\u2282\u2283\u222A\u2229"], ["a2ca", "\u2227\u2228\uFFE2\u21D2\u21D4\u2200\u2203"], ["a2dc", "\u2220\u22A5\u2312\u2202\u2207\u2261\u2252\u226A\u226B\u221A\u223D\u221D\u2235\u222B\u222C"], ["a2f2", "\u212B\u2030\u266F\u266D\u266A\u2020\u2021\xB6"], ["a2fe", "\u25EF"], ["a3b0", "\uFF10", 9], ["a3c1", "\uFF21", 25], ["a3e1", "\uFF41", 25], ["a4a1", "\u3041", 82], ["a5a1", "\u30A1", 85], ["a6a1", "\u0391", 16, "\u03A3", 6], ["a6c1", "\u03B1", 16, "\u03C3", 6], ["a7a1", "\u0410", 5, "\u0401\u0416", 25], ["a7d1", "\u0430", 5, "\u0451\u0436", 25], ["a8a1", "\u2500\u2502\u250C\u2510\u2518\u2514\u251C\u252C\u2524\u2534\u253C\u2501\u2503\u250F\u2513\u251B\u2517\u2523\u2533\u252B\u253B\u254B\u2520\u252F\u2528\u2537\u253F\u251D\u2530\u2525\u2538\u2542"], ["ada1", "\u2460", 19, "\u2160", 9], ["adc0", "\u3349\u3314\u3322\u334D\u3318\u3327\u3303\u3336\u3351\u3357\u330D\u3326\u3323\u332B\u334A\u333B\u339C\u339D\u339E\u338E\u338F\u33C4\u33A1"], ["addf", "\u337B\u301D\u301F\u2116\u33CD\u2121\u32A4", 4, "\u3231\u3232\u3239\u337E\u337D\u337C\u2252\u2261\u222B\u222E\u2211\u221A\u22A5\u2220\u221F\u22BF\u2235\u2229\u222A"], ["b0a1", "\u4E9C\u5516\u5A03\u963F\u54C0\u611B\u6328\u59F6\u9022\u8475\u831C\u7A50\u60AA\u63E1\u6E25\u65ED\u8466\u82A6\u9BF5\u6893\u5727\u65A1\u6271\u5B9B\u59D0\u867B\u98F4\u7D62\u7DBE\u9B8E\u6216\u7C9F\u88B7\u5B89\u5EB5\u6309\u6697\u6848\u95C7\u978D\u674F\u4EE5\u4F0A\u4F4D\u4F9D\u5049\u56F2\u5937\u59D4\u5A01\u5C09\u60DF\u610F\u6170\u6613\u6905\u70BA\u754F\u7570\u79FB\u7DAD\u7DEF\u80C3\u840E\u8863\u8B02\u9055\u907A\u533B\u4E95\u4EA5\u57DF\u80B2\u90C1\u78EF\u4E00\u58F1\u6EA2\u9038\u7A32\u8328\u828B\u9C2F\u5141\u5370\u54BD\u54E1\u56E0\u59FB\u5F15\u98F2\u6DEB\u80E4\u852D"], ["b1a1", "\u9662\u9670\u96A0\u97FB\u540B\u53F3\u5B87\u70CF\u7FBD\u8FC2\u96E8\u536F\u9D5C\u7ABA\u4E11\u7893\u81FC\u6E26\u5618\u5504\u6B1D\u851A\u9C3B\u59E5\u53A9\u6D66\u74DC\u958F\u5642\u4E91\u904B\u96F2\u834F\u990C\u53E1\u55B6\u5B30\u5F71\u6620\u66F3\u6804\u6C38\u6CF3\u6D29\u745B\u76C8\u7A4E\u9834\u82F1\u885B\u8A60\u92ED\u6DB2\u75AB\u76CA\u99C5\u60A6\u8B01\u8D8A\u95B2\u698E\u53AD\u5186\u5712\u5830\u5944\u5BB4\u5EF6\u6028\u63A9\u63F4\u6CBF\u6F14\u708E\u7114\u7159\u71D5\u733F\u7E01\u8276\u82D1\u8597\u9060\u925B\u9D1B\u5869\u65BC\u6C5A\u7525\u51F9\u592E\u5965\u5F80\u5FDC"], ["b2a1", "\u62BC\u65FA\u6A2A\u6B27\u6BB4\u738B\u7FC1\u8956\u9D2C\u9D0E\u9EC4\u5CA1\u6C96\u837B\u5104\u5C4B\u61B6\u81C6\u6876\u7261\u4E59\u4FFA\u5378\u6069\u6E29\u7A4F\u97F3\u4E0B\u5316\u4EEE\u4F55\u4F3D\u4FA1\u4F73\u52A0\u53EF\u5609\u590F\u5AC1\u5BB6\u5BE1\u79D1\u6687\u679C\u67B6\u6B4C\u6CB3\u706B\u73C2\u798D\u79BE\u7A3C\u7B87\u82B1\u82DB\u8304\u8377\u83EF\u83D3\u8766\u8AB2\u5629\u8CA8\u8FE6\u904E\u971E\u868A\u4FC4\u5CE8\u6211\u7259\u753B\u81E5\u82BD\u86FE\u8CC0\u96C5\u9913\u99D5\u4ECB\u4F1A\u89E3\u56DE\u584A\u58CA\u5EFB\u5FEB\u602A\u6094\u6062\u61D0\u6212\u62D0\u6539"], ["b3a1", "\u9B41\u6666\u68B0\u6D77\u7070\u754C\u7686\u7D75\u82A5\u87F9\u958B\u968E\u8C9D\u51F1\u52BE\u5916\u54B3\u5BB3\u5D16\u6168\u6982\u6DAF\u788D\u84CB\u8857\u8A72\u93A7\u9AB8\u6D6C\u99A8\u86D9\u57A3\u67FF\u86CE\u920E\u5283\u5687\u5404\u5ED3\u62E1\u64B9\u683C\u6838\u6BBB\u7372\u78BA\u7A6B\u899A\u89D2\u8D6B\u8F03\u90ED\u95A3\u9694\u9769\u5B66\u5CB3\u697D\u984D\u984E\u639B\u7B20\u6A2B\u6A7F\u68B6\u9C0D\u6F5F\u5272\u559D\u6070\u62EC\u6D3B\u6E07\u6ED1\u845B\u8910\u8F44\u4E14\u9C39\u53F6\u691B\u6A3A\u9784\u682A\u515C\u7AC3\u84B2\u91DC\u938C\u565B\u9D28\u6822\u8305\u8431"], ["b4a1", "\u7CA5\u5208\u82C5\u74E6\u4E7E\u4F83\u51A0\u5BD2\u520A\u52D8\u52E7\u5DFB\u559A\u582A\u59E6\u5B8C\u5B98\u5BDB\u5E72\u5E79\u60A3\u611F\u6163\u61BE\u63DB\u6562\u67D1\u6853\u68FA\u6B3E\u6B53\u6C57\u6F22\u6F97\u6F45\u74B0\u7518\u76E3\u770B\u7AFF\u7BA1\u7C21\u7DE9\u7F36\u7FF0\u809D\u8266\u839E\u89B3\u8ACC\u8CAB\u9084\u9451\u9593\u9591\u95A2\u9665\u97D3\u9928\u8218\u4E38\u542B\u5CB8\u5DCC\u73A9\u764C\u773C\u5CA9\u7FEB\u8D0B\u96C1\u9811\u9854\u9858\u4F01\u4F0E\u5371\u559C\u5668\u57FA\u5947\u5B09\u5BC4\u5C90\u5E0C\u5E7E\u5FCC\u63EE\u673A\u65D7\u65E2\u671F\u68CB\u68C4"], ["b5a1", "\u6A5F\u5E30\u6BC5\u6C17\u6C7D\u757F\u7948\u5B63\u7A00\u7D00\u5FBD\u898F\u8A18\u8CB4\u8D77\u8ECC\u8F1D\u98E2\u9A0E\u9B3C\u4E80\u507D\u5100\u5993\u5B9C\u622F\u6280\u64EC\u6B3A\u72A0\u7591\u7947\u7FA9\u87FB\u8ABC\u8B70\u63AC\u83CA\u97A0\u5409\u5403\u55AB\u6854\u6A58\u8A70\u7827\u6775\u9ECD\u5374\u5BA2\u811A\u8650\u9006\u4E18\u4E45\u4EC7\u4F11\u53CA\u5438\u5BAE\u5F13\u6025\u6551\u673D\u6C42\u6C72\u6CE3\u7078\u7403\u7A76\u7AAE\u7B08\u7D1A\u7CFE\u7D66\u65E7\u725B\u53BB\u5C45\u5DE8\u62D2\u62E0\u6319\u6E20\u865A\u8A31\u8DDD\u92F8\u6F01\u79A6\u9B5A\u4EA8\u4EAB\u4EAC"], ["b6a1", "\u4F9B\u4FA0\u50D1\u5147\u7AF6\u5171\u51F6\u5354\u5321\u537F\u53EB\u55AC\u5883\u5CE1\u5F37\u5F4A\u602F\u6050\u606D\u631F\u6559\u6A4B\u6CC1\u72C2\u72ED\u77EF\u80F8\u8105\u8208\u854E\u90F7\u93E1\u97FF\u9957\u9A5A\u4EF0\u51DD\u5C2D\u6681\u696D\u5C40\u66F2\u6975\u7389\u6850\u7C81\u50C5\u52E4\u5747\u5DFE\u9326\u65A4\u6B23\u6B3D\u7434\u7981\u79BD\u7B4B\u7DCA\u82B9\u83CC\u887F\u895F\u8B39\u8FD1\u91D1\u541F\u9280\u4E5D\u5036\u53E5\u533A\u72D7\u7396\u77E9\u82E6\u8EAF\u99C6\u99C8\u99D2\u5177\u611A\u865E\u55B0\u7A7A\u5076\u5BD3\u9047\u9685\u4E32\u6ADB\u91E7\u5C51\u5C48"], ["b7a1", "\u6398\u7A9F\u6C93\u9774\u8F61\u7AAA\u718A\u9688\u7C82\u6817\u7E70\u6851\u936C\u52F2\u541B\u85AB\u8A13\u7FA4\u8ECD\u90E1\u5366\u8888\u7941\u4FC2\u50BE\u5211\u5144\u5553\u572D\u73EA\u578B\u5951\u5F62\u5F84\u6075\u6176\u6167\u61A9\u63B2\u643A\u656C\u666F\u6842\u6E13\u7566\u7A3D\u7CFB\u7D4C\u7D99\u7E4B\u7F6B\u830E\u834A\u86CD\u8A08\u8A63\u8B66\u8EFD\u981A\u9D8F\u82B8\u8FCE\u9BE8\u5287\u621F\u6483\u6FC0\u9699\u6841\u5091\u6B20\u6C7A\u6F54\u7A74\u7D50\u8840\u8A23\u6708\u4EF6\u5039\u5026\u5065\u517C\u5238\u5263\u55A7\u570F\u5805\u5ACC\u5EFA\u61B2\u61F8\u62F3\u6372"], ["b8a1", "\u691C\u6A29\u727D\u72AC\u732E\u7814\u786F\u7D79\u770C\u80A9\u898B\u8B19\u8CE2\u8ED2\u9063\u9375\u967A\u9855\u9A13\u9E78\u5143\u539F\u53B3\u5E7B\u5F26\u6E1B\u6E90\u7384\u73FE\u7D43\u8237\u8A00\u8AFA\u9650\u4E4E\u500B\u53E4\u547C\u56FA\u59D1\u5B64\u5DF1\u5EAB\u5F27\u6238\u6545\u67AF\u6E56\u72D0\u7CCA\u88B4\u80A1\u80E1\u83F0\u864E\u8A87\u8DE8\u9237\u96C7\u9867\u9F13\u4E94\u4E92\u4F0D\u5348\u5449\u543E\u5A2F\u5F8C\u5FA1\u609F\u68A7\u6A8E\u745A\u7881\u8A9E\u8AA4\u8B77\u9190\u4E5E\u9BC9\u4EA4\u4F7C\u4FAF\u5019\u5016\u5149\u516C\u529F\u52B9\u52FE\u539A\u53E3\u5411"], ["b9a1", "\u540E\u5589\u5751\u57A2\u597D\u5B54\u5B5D\u5B8F\u5DE5\u5DE7\u5DF7\u5E78\u5E83\u5E9A\u5EB7\u5F18\u6052\u614C\u6297\u62D8\u63A7\u653B\u6602\u6643\u66F4\u676D\u6821\u6897\u69CB\u6C5F\u6D2A\u6D69\u6E2F\u6E9D\u7532\u7687\u786C\u7A3F\u7CE0\u7D05\u7D18\u7D5E\u7DB1\u8015\u8003\u80AF\u80B1\u8154\u818F\u822A\u8352\u884C\u8861\u8B1B\u8CA2\u8CFC\u90CA\u9175\u9271\u783F\u92FC\u95A4\u964D\u9805\u9999\u9AD8\u9D3B\u525B\u52AB\u53F7\u5408\u58D5\u62F7\u6FE0\u8C6A\u8F5F\u9EB9\u514B\u523B\u544A\u56FD\u7A40\u9177\u9D60\u9ED2\u7344\u6F09\u8170\u7511\u5FFD\u60DA\u9AA8\u72DB\u8FBC"], ["baa1", "\u6B64\u9803\u4ECA\u56F0\u5764\u58BE\u5A5A\u6068\u61C7\u660F\u6606\u6839\u68B1\u6DF7\u75D5\u7D3A\u826E\u9B42\u4E9B\u4F50\u53C9\u5506\u5D6F\u5DE6\u5DEE\u67FB\u6C99\u7473\u7802\u8A50\u9396\u88DF\u5750\u5EA7\u632B\u50B5\u50AC\u518D\u6700\u54C9\u585E\u59BB\u5BB0\u5F69\u624D\u63A1\u683D\u6B73\u6E08\u707D\u91C7\u7280\u7815\u7826\u796D\u658E\u7D30\u83DC\u88C1\u8F09\u969B\u5264\u5728\u6750\u7F6A\u8CA1\u51B4\u5742\u962A\u583A\u698A\u80B4\u54B2\u5D0E\u57FC\u7895\u9DFA\u4F5C\u524A\u548B\u643E\u6628\u6714\u67F5\u7A84\u7B56\u7D22\u932F\u685C\u9BAD\u7B39\u5319\u518A\u5237"], ["bba1", "\u5BDF\u62F6\u64AE\u64E6\u672D\u6BBA\u85A9\u96D1\u7690\u9BD6\u634C\u9306\u9BAB\u76BF\u6652\u4E09\u5098\u53C2\u5C71\u60E8\u6492\u6563\u685F\u71E6\u73CA\u7523\u7B97\u7E82\u8695\u8B83\u8CDB\u9178\u9910\u65AC\u66AB\u6B8B\u4ED5\u4ED4\u4F3A\u4F7F\u523A\u53F8\u53F2\u55E3\u56DB\u58EB\u59CB\u59C9\u59FF\u5B50\u5C4D\u5E02\u5E2B\u5FD7\u601D\u6307\u652F\u5B5C\u65AF\u65BD\u65E8\u679D\u6B62\u6B7B\u6C0F\u7345\u7949\u79C1\u7CF8\u7D19\u7D2B\u80A2\u8102\u81F3\u8996\u8A5E\u8A69\u8A66\u8A8C\u8AEE\u8CC7\u8CDC\u96CC\u98FC\u6B6F\u4E8B\u4F3C\u4F8D\u5150\u5B57\u5BFA\u6148\u6301\u6642"], ["bca1", "\u6B21\u6ECB\u6CBB\u723E\u74BD\u75D4\u78C1\u793A\u800C\u8033\u81EA\u8494\u8F9E\u6C50\u9E7F\u5F0F\u8B58\u9D2B\u7AFA\u8EF8\u5B8D\u96EB\u4E03\u53F1\u57F7\u5931\u5AC9\u5BA4\u6089\u6E7F\u6F06\u75BE\u8CEA\u5B9F\u8500\u7BE0\u5072\u67F4\u829D\u5C61\u854A\u7E1E\u820E\u5199\u5C04\u6368\u8D66\u659C\u716E\u793E\u7D17\u8005\u8B1D\u8ECA\u906E\u86C7\u90AA\u501F\u52FA\u5C3A\u6753\u707C\u7235\u914C\u91C8\u932B\u82E5\u5BC2\u5F31\u60F9\u4E3B\u53D6\u5B88\u624B\u6731\u6B8A\u72E9\u73E0\u7A2E\u816B\u8DA3\u9152\u9996\u5112\u53D7\u546A\u5BFF\u6388\u6A39\u7DAC\u9700\u56DA\u53CE\u5468"], ["bda1", "\u5B97\u5C31\u5DDE\u4FEE\u6101\u62FE\u6D32\u79C0\u79CB\u7D42\u7E4D\u7FD2\u81ED\u821F\u8490\u8846\u8972\u8B90\u8E74\u8F2F\u9031\u914B\u916C\u96C6\u919C\u4EC0\u4F4F\u5145\u5341\u5F93\u620E\u67D4\u6C41\u6E0B\u7363\u7E26\u91CD\u9283\u53D4\u5919\u5BBF\u6DD1\u795D\u7E2E\u7C9B\u587E\u719F\u51FA\u8853\u8FF0\u4FCA\u5CFB\u6625\u77AC\u7AE3\u821C\u99FF\u51C6\u5FAA\u65EC\u696F\u6B89\u6DF3\u6E96\u6F64\u76FE\u7D14\u5DE1\u9075\u9187\u9806\u51E6\u521D\u6240\u6691\u66D9\u6E1A\u5EB6\u7DD2\u7F72\u66F8\u85AF\u85F7\u8AF8\u52A9\u53D9\u5973\u5E8F\u5F90\u6055\u92E4\u9664\u50B7\u511F"], ["bea1", "\u52DD\u5320\u5347\u53EC\u54E8\u5546\u5531\u5617\u5968\u59BE\u5A3C\u5BB5\u5C06\u5C0F\u5C11\u5C1A\u5E84\u5E8A\u5EE0\u5F70\u627F\u6284\u62DB\u638C\u6377\u6607\u660C\u662D\u6676\u677E\u68A2\u6A1F\u6A35\u6CBC\u6D88\u6E09\u6E58\u713C\u7126\u7167\u75C7\u7701\u785D\u7901\u7965\u79F0\u7AE0\u7B11\u7CA7\u7D39\u8096\u83D6\u848B\u8549\u885D\u88F3\u8A1F\u8A3C\u8A54\u8A73\u8C61\u8CDE\u91A4\u9266\u937E\u9418\u969C\u9798\u4E0A\u4E08\u4E1E\u4E57\u5197\u5270\u57CE\u5834\u58CC\u5B22\u5E38\u60C5\u64FE\u6761\u6756\u6D44\u72B6\u7573\u7A63\u84B8\u8B72\u91B8\u9320\u5631\u57F4\u98FE"], ["bfa1", "\u62ED\u690D\u6B96\u71ED\u7E54\u8077\u8272\u89E6\u98DF\u8755\u8FB1\u5C3B\u4F38\u4FE1\u4FB5\u5507\u5A20\u5BDD\u5BE9\u5FC3\u614E\u632F\u65B0\u664B\u68EE\u699B\u6D78\u6DF1\u7533\u75B9\u771F\u795E\u79E6\u7D33\u81E3\u82AF\u85AA\u89AA\u8A3A\u8EAB\u8F9B\u9032\u91DD\u9707\u4EBA\u4EC1\u5203\u5875\u58EC\u5C0B\u751A\u5C3D\u814E\u8A0A\u8FC5\u9663\u976D\u7B25\u8ACF\u9808\u9162\u56F3\u53A8\u9017\u5439\u5782\u5E25\u63A8\u6C34\u708A\u7761\u7C8B\u7FE0\u8870\u9042\u9154\u9310\u9318\u968F\u745E\u9AC4\u5D07\u5D69\u6570\u67A2\u8DA8\u96DB\u636E\u6749\u6919\u83C5\u9817\u96C0\u88FE"], ["c0a1", "\u6F84\u647A\u5BF8\u4E16\u702C\u755D\u662F\u51C4\u5236\u52E2\u59D3\u5F81\u6027\u6210\u653F\u6574\u661F\u6674\u68F2\u6816\u6B63\u6E05\u7272\u751F\u76DB\u7CBE\u8056\u58F0\u88FD\u897F\u8AA0\u8A93\u8ACB\u901D\u9192\u9752\u9759\u6589\u7A0E\u8106\u96BB\u5E2D\u60DC\u621A\u65A5\u6614\u6790\u77F3\u7A4D\u7C4D\u7E3E\u810A\u8CAC\u8D64\u8DE1\u8E5F\u78A9\u5207\u62D9\u63A5\u6442\u6298\u8A2D\u7A83\u7BC0\u8AAC\u96EA\u7D76\u820C\u8749\u4ED9\u5148\u5343\u5360\u5BA3\u5C02\u5C16\u5DDD\u6226\u6247\u64B0\u6813\u6834\u6CC9\u6D45\u6D17\u67D3\u6F5C\u714E\u717D\u65CB\u7A7F\u7BAD\u7DDA"], ["c1a1", "\u7E4A\u7FA8\u817A\u821B\u8239\u85A6\u8A6E\u8CCE\u8DF5\u9078\u9077\u92AD\u9291\u9583\u9BAE\u524D\u5584\u6F38\u7136\u5168\u7985\u7E55\u81B3\u7CCE\u564C\u5851\u5CA8\u63AA\u66FE\u66FD\u695A\u72D9\u758F\u758E\u790E\u7956\u79DF\u7C97\u7D20\u7D44\u8607\u8A34\u963B\u9061\u9F20\u50E7\u5275\u53CC\u53E2\u5009\u55AA\u58EE\u594F\u723D\u5B8B\u5C64\u531D\u60E3\u60F3\u635C\u6383\u633F\u63BB\u64CD\u65E9\u66F9\u5DE3\u69CD\u69FD\u6F15\u71E5\u4E89\u75E9\u76F8\u7A93\u7CDF\u7DCF\u7D9C\u8061\u8349\u8358\u846C\u84BC\u85FB\u88C5\u8D70\u9001\u906D\u9397\u971C\u9A12\u50CF\u5897\u618E"], ["c2a1", "\u81D3\u8535\u8D08\u9020\u4FC3\u5074\u5247\u5373\u606F\u6349\u675F\u6E2C\u8DB3\u901F\u4FD7\u5C5E\u8CCA\u65CF\u7D9A\u5352\u8896\u5176\u63C3\u5B58\u5B6B\u5C0A\u640D\u6751\u905C\u4ED6\u591A\u592A\u6C70\u8A51\u553E\u5815\u59A5\u60F0\u6253\u67C1\u8235\u6955\u9640\u99C4\u9A28\u4F53\u5806\u5BFE\u8010\u5CB1\u5E2F\u5F85\u6020\u614B\u6234\u66FF\u6CF0\u6EDE\u80CE\u817F\u82D4\u888B\u8CB8\u9000\u902E\u968A\u9EDB\u9BDB\u4EE3\u53F0\u5927\u7B2C\u918D\u984C\u9DF9\u6EDD\u7027\u5353\u5544\u5B85\u6258\u629E\u62D3\u6CA2\u6FEF\u7422\u8A17\u9438\u6FC1\u8AFE\u8338\u51E7\u86F8\u53EA"], ["c3a1", "\u53E9\u4F46\u9054\u8FB0\u596A\u8131\u5DFD\u7AEA\u8FBF\u68DA\u8C37\u72F8\u9C48\u6A3D\u8AB0\u4E39\u5358\u5606\u5766\u62C5\u63A2\u65E6\u6B4E\u6DE1\u6E5B\u70AD\u77ED\u7AEF\u7BAA\u7DBB\u803D\u80C6\u86CB\u8A95\u935B\u56E3\u58C7\u5F3E\u65AD\u6696\u6A80\u6BB5\u7537\u8AC7\u5024\u77E5\u5730\u5F1B\u6065\u667A\u6C60\u75F4\u7A1A\u7F6E\u81F4\u8718\u9045\u99B3\u7BC9\u755C\u7AF9\u7B51\u84C4\u9010\u79E9\u7A92\u8336\u5AE1\u7740\u4E2D\u4EF2\u5B99\u5FE0\u62BD\u663C\u67F1\u6CE8\u866B\u8877\u8A3B\u914E\u92F3\u99D0\u6A17\u7026\u732A\u82E7\u8457\u8CAF\u4E01\u5146\u51CB\u558B\u5BF5"], ["c4a1", "\u5E16\u5E33\u5E81\u5F14\u5F35\u5F6B\u5FB4\u61F2\u6311\u66A2\u671D\u6F6E\u7252\u753A\u773A\u8074\u8139\u8178\u8776\u8ABF\u8ADC\u8D85\u8DF3\u929A\u9577\u9802\u9CE5\u52C5\u6357\u76F4\u6715\u6C88\u73CD\u8CC3\u93AE\u9673\u6D25\u589C\u690E\u69CC\u8FFD\u939A\u75DB\u901A\u585A\u6802\u63B4\u69FB\u4F43\u6F2C\u67D8\u8FBB\u8526\u7DB4\u9354\u693F\u6F70\u576A\u58F7\u5B2C\u7D2C\u722A\u540A\u91E3\u9DB4\u4EAD\u4F4E\u505C\u5075\u5243\u8C9E\u5448\u5824\u5B9A\u5E1D\u5E95\u5EAD\u5EF7\u5F1F\u608C\u62B5\u633A\u63D0\u68AF\u6C40\u7887\u798E\u7A0B\u7DE0\u8247\u8A02\u8AE6\u8E44\u9013"], ["c5a1", "\u90B8\u912D\u91D8\u9F0E\u6CE5\u6458\u64E2\u6575\u6EF4\u7684\u7B1B\u9069\u93D1\u6EBA\u54F2\u5FB9\u64A4\u8F4D\u8FED\u9244\u5178\u586B\u5929\u5C55\u5E97\u6DFB\u7E8F\u751C\u8CBC\u8EE2\u985B\u70B9\u4F1D\u6BBF\u6FB1\u7530\u96FB\u514E\u5410\u5835\u5857\u59AC\u5C60\u5F92\u6597\u675C\u6E21\u767B\u83DF\u8CED\u9014\u90FD\u934D\u7825\u783A\u52AA\u5EA6\u571F\u5974\u6012\u5012\u515A\u51AC\u51CD\u5200\u5510\u5854\u5858\u5957\u5B95\u5CF6\u5D8B\u60BC\u6295\u642D\u6771\u6843\u68BC\u68DF\u76D7\u6DD8\u6E6F\u6D9B\u706F\u71C8\u5F53\u75D8\u7977\u7B49\u7B54\u7B52\u7CD6\u7D71\u5230"], ["c6a1", "\u8463\u8569\u85E4\u8A0E\u8B04\u8C46\u8E0F\u9003\u900F\u9419\u9676\u982D\u9A30\u95D8\u50CD\u52D5\u540C\u5802\u5C0E\u61A7\u649E\u6D1E\u77B3\u7AE5\u80F4\u8404\u9053\u9285\u5CE0\u9D07\u533F\u5F97\u5FB3\u6D9C\u7279\u7763\u79BF\u7BE4\u6BD2\u72EC\u8AAD\u6803\u6A61\u51F8\u7A81\u6934\u5C4A\u9CF6\u82EB\u5BC5\u9149\u701E\u5678\u5C6F\u60C7\u6566\u6C8C\u8C5A\u9041\u9813\u5451\u66C7\u920D\u5948\u90A3\u5185\u4E4D\u51EA\u8599\u8B0E\u7058\u637A\u934B\u6962\u99B4\u7E04\u7577\u5357\u6960\u8EDF\u96E3\u6C5D\u4E8C\u5C3C\u5F10\u8FE9\u5302\u8CD1\u8089\u8679\u5EFF\u65E5\u4E73\u5165"], ["c7a1", "\u5982\u5C3F\u97EE\u4EFB\u598A\u5FCD\u8A8D\u6FE1\u79B0\u7962\u5BE7\u8471\u732B\u71B1\u5E74\u5FF5\u637B\u649A\u71C3\u7C98\u4E43\u5EFC\u4E4B\u57DC\u56A2\u60A9\u6FC3\u7D0D\u80FD\u8133\u81BF\u8FB2\u8997\u86A4\u5DF4\u628A\u64AD\u8987\u6777\u6CE2\u6D3E\u7436\u7834\u5A46\u7F75\u82AD\u99AC\u4FF3\u5EC3\u62DD\u6392\u6557\u676F\u76C3\u724C\u80CC\u80BA\u8F29\u914D\u500D\u57F9\u5A92\u6885\u6973\u7164\u72FD\u8CB7\u58F2\u8CE0\u966A\u9019\u877F\u79E4\u77E7\u8429\u4F2F\u5265\u535A\u62CD\u67CF\u6CCA\u767D\u7B94\u7C95\u8236\u8584\u8FEB\u66DD\u6F20\u7206\u7E1B\u83AB\u99C1\u9EA6"], ["c8a1", "\u51FD\u7BB1\u7872\u7BB8\u8087\u7B48\u6AE8\u5E61\u808C\u7551\u7560\u516B\u9262\u6E8C\u767A\u9197\u9AEA\u4F10\u7F70\u629C\u7B4F\u95A5\u9CE9\u567A\u5859\u86E4\u96BC\u4F34\u5224\u534A\u53CD\u53DB\u5E06\u642C\u6591\u677F\u6C3E\u6C4E\u7248\u72AF\u73ED\u7554\u7E41\u822C\u85E9\u8CA9\u7BC4\u91C6\u7169\u9812\u98EF\u633D\u6669\u756A\u76E4\u78D0\u8543\u86EE\u532A\u5351\u5426\u5983\u5E87\u5F7C\u60B2\u6249\u6279\u62AB\u6590\u6BD4\u6CCC\u75B2\u76AE\u7891\u79D8\u7DCB\u7F77\u80A5\u88AB\u8AB9\u8CBB\u907F\u975E\u98DB\u6A0B\u7C38\u5099\u5C3E\u5FAE\u6787\u6BD8\u7435\u7709\u7F8E"], ["c9a1", "\u9F3B\u67CA\u7A17\u5339\u758B\u9AED\u5F66\u819D\u83F1\u8098\u5F3C\u5FC5\u7562\u7B46\u903C\u6867\u59EB\u5A9B\u7D10\u767E\u8B2C\u4FF5\u5F6A\u6A19\u6C37\u6F02\u74E2\u7968\u8868\u8A55\u8C79\u5EDF\u63CF\u75C5\u79D2\u82D7\u9328\u92F2\u849C\u86ED\u9C2D\u54C1\u5F6C\u658C\u6D5C\u7015\u8CA7\u8CD3\u983B\u654F\u74F6\u4E0D\u4ED8\u57E0\u592B\u5A66\u5BCC\u51A8\u5E03\u5E9C\u6016\u6276\u6577\u65A7\u666E\u6D6E\u7236\u7B26\u8150\u819A\u8299\u8B5C\u8CA0\u8CE6\u8D74\u961C\u9644\u4FAE\u64AB\u6B66\u821E\u8461\u856A\u90E8\u5C01\u6953\u98A8\u847A\u8557\u4F0F\u526F\u5FA9\u5E45\u670D"], ["caa1", "\u798F\u8179\u8907\u8986\u6DF5\u5F17\u6255\u6CB8\u4ECF\u7269\u9B92\u5206\u543B\u5674\u58B3\u61A4\u626E\u711A\u596E\u7C89\u7CDE\u7D1B\u96F0\u6587\u805E\u4E19\u4F75\u5175\u5840\u5E63\u5E73\u5F0A\u67C4\u4E26\u853D\u9589\u965B\u7C73\u9801\u50FB\u58C1\u7656\u78A7\u5225\u77A5\u8511\u7B86\u504F\u5909\u7247\u7BC7\u7DE8\u8FBA\u8FD4\u904D\u4FBF\u52C9\u5A29\u5F01\u97AD\u4FDD\u8217\u92EA\u5703\u6355\u6B69\u752B\u88DC\u8F14\u7A42\u52DF\u5893\u6155\u620A\u66AE\u6BCD\u7C3F\u83E9\u5023\u4FF8\u5305\u5446\u5831\u5949\u5B9D\u5CF0\u5CEF\u5D29\u5E96\u62B1\u6367\u653E\u65B9\u670B"], ["cba1", "\u6CD5\u6CE1\u70F9\u7832\u7E2B\u80DE\u82B3\u840C\u84EC\u8702\u8912\u8A2A\u8C4A\u90A6\u92D2\u98FD\u9CF3\u9D6C\u4E4F\u4EA1\u508D\u5256\u574A\u59A8\u5E3D\u5FD8\u5FD9\u623F\u66B4\u671B\u67D0\u68D2\u5192\u7D21\u80AA\u81A8\u8B00\u8C8C\u8CBF\u927E\u9632\u5420\u982C\u5317\u50D5\u535C\u58A8\u64B2\u6734\u7267\u7766\u7A46\u91E6\u52C3\u6CA1\u6B86\u5800\u5E4C\u5954\u672C\u7FFB\u51E1\u76C6\u6469\u78E8\u9B54\u9EBB\u57CB\u59B9\u6627\u679A\u6BCE\u54E9\u69D9\u5E55\u819C\u6795\u9BAA\u67FE\u9C52\u685D\u4EA6\u4FE3\u53C8\u62B9\u672B\u6CAB\u8FC4\u4FAD\u7E6D\u9EBF\u4E07\u6162\u6E80"], ["cca1", "\u6F2B\u8513\u5473\u672A\u9B45\u5DF3\u7B95\u5CAC\u5BC6\u871C\u6E4A\u84D1\u7A14\u8108\u5999\u7C8D\u6C11\u7720\u52D9\u5922\u7121\u725F\u77DB\u9727\u9D61\u690B\u5A7F\u5A18\u51A5\u540D\u547D\u660E\u76DF\u8FF7\u9298\u9CF4\u59EA\u725D\u6EC5\u514D\u68C9\u7DBF\u7DEC\u9762\u9EBA\u6478\u6A21\u8302\u5984\u5B5F\u6BDB\u731B\u76F2\u7DB2\u8017\u8499\u5132\u6728\u9ED9\u76EE\u6762\u52FF\u9905\u5C24\u623B\u7C7E\u8CB0\u554F\u60B6\u7D0B\u9580\u5301\u4E5F\u51B6\u591C\u723A\u8036\u91CE\u5F25\u77E2\u5384\u5F79\u7D04\u85AC\u8A33\u8E8D\u9756\u67F3\u85AE\u9453\u6109\u6108\u6CB9\u7652"], ["cda1", "\u8AED\u8F38\u552F\u4F51\u512A\u52C7\u53CB\u5BA5\u5E7D\u60A0\u6182\u63D6\u6709\u67DA\u6E67\u6D8C\u7336\u7337\u7531\u7950\u88D5\u8A98\u904A\u9091\u90F5\u96C4\u878D\u5915\u4E88\u4F59\u4E0E\u8A89\u8F3F\u9810\u50AD\u5E7C\u5996\u5BB9\u5EB8\u63DA\u63FA\u64C1\u66DC\u694A\u69D8\u6D0B\u6EB6\u7194\u7528\u7AAF\u7F8A\u8000\u8449\u84C9\u8981\u8B21\u8E0A\u9065\u967D\u990A\u617E\u6291\u6B32\u6C83\u6D74\u7FCC\u7FFC\u6DC0\u7F85\u87BA\u88F8\u6765\u83B1\u983C\u96F7\u6D1B\u7D61\u843D\u916A\u4E71\u5375\u5D50\u6B04\u6FEB\u85CD\u862D\u89A7\u5229\u540F\u5C65\u674E\u68A8\u7406\u7483"], ["cea1", "\u75E2\u88CF\u88E1\u91CC\u96E2\u9678\u5F8B\u7387\u7ACB\u844E\u63A0\u7565\u5289\u6D41\u6E9C\u7409\u7559\u786B\u7C92\u9686\u7ADC\u9F8D\u4FB6\u616E\u65C5\u865C\u4E86\u4EAE\u50DA\u4E21\u51CC\u5BEE\u6599\u6881\u6DBC\u731F\u7642\u77AD\u7A1C\u7CE7\u826F\u8AD2\u907C\u91CF\u9675\u9818\u529B\u7DD1\u502B\u5398\u6797\u6DCB\u71D0\u7433\u81E8\u8F2A\u96A3\u9C57\u9E9F\u7460\u5841\u6D99\u7D2F\u985E\u4EE4\u4F36\u4F8B\u51B7\u52B1\u5DBA\u601C\u73B2\u793C\u82D3\u9234\u96B7\u96F6\u970A\u9E97\u9F62\u66A6\u6B74\u5217\u52A3\u70C8\u88C2\u5EC9\u604B\u6190\u6F23\u7149\u7C3E\u7DF4\u806F"], ["cfa1", "\u84EE\u9023\u932C\u5442\u9B6F\u6AD3\u7089\u8CC2\u8DEF\u9732\u52B4\u5A41\u5ECA\u5F04\u6717\u697C\u6994\u6D6A\u6F0F\u7262\u72FC\u7BED\u8001\u807E\u874B\u90CE\u516D\u9E93\u7984\u808B\u9332\u8AD6\u502D\u548C\u8A71\u6B6A\u8CC4\u8107\u60D1\u67A0\u9DF2\u4E99\u4E98\u9C10\u8A6B\u85C1\u8568\u6900\u6E7E\u7897\u8155"], ["d0a1", "\u5F0C\u4E10\u4E15\u4E2A\u4E31\u4E36\u4E3C\u4E3F\u4E42\u4E56\u4E58\u4E82\u4E85\u8C6B\u4E8A\u8212\u5F0D\u4E8E\u4E9E\u4E9F\u4EA0\u4EA2\u4EB0\u4EB3\u4EB6\u4ECE\u4ECD\u4EC4\u4EC6\u4EC2\u4ED7\u4EDE\u4EED\u4EDF\u4EF7\u4F09\u4F5A\u4F30\u4F5B\u4F5D\u4F57\u4F47\u4F76\u4F88\u4F8F\u4F98\u4F7B\u4F69\u4F70\u4F91\u4F6F\u4F86\u4F96\u5118\u4FD4\u4FDF\u4FCE\u4FD8\u4FDB\u4FD1\u4FDA\u4FD0\u4FE4\u4FE5\u501A\u5028\u5014\u502A\u5025\u5005\u4F1C\u4FF6\u5021\u5029\u502C\u4FFE\u4FEF\u5011\u5006\u5043\u5047\u6703\u5055\u5050\u5048\u505A\u5056\u506C\u5078\u5080\u509A\u5085\u50B4\u50B2"], ["d1a1", "\u50C9\u50CA\u50B3\u50C2\u50D6\u50DE\u50E5\u50ED\u50E3\u50EE\u50F9\u50F5\u5109\u5101\u5102\u5116\u5115\u5114\u511A\u5121\u513A\u5137\u513C\u513B\u513F\u5140\u5152\u514C\u5154\u5162\u7AF8\u5169\u516A\u516E\u5180\u5182\u56D8\u518C\u5189\u518F\u5191\u5193\u5195\u5196\u51A4\u51A6\u51A2\u51A9\u51AA\u51AB\u51B3\u51B1\u51B2\u51B0\u51B5\u51BD\u51C5\u51C9\u51DB\u51E0\u8655\u51E9\u51ED\u51F0\u51F5\u51FE\u5204\u520B\u5214\u520E\u5227\u522A\u522E\u5233\u5239\u524F\u5244\u524B\u524C\u525E\u5254\u526A\u5274\u5269\u5273\u527F\u527D\u528D\u5294\u5292\u5271\u5288\u5291\u8FA8"], ["d2a1", "\u8FA7\u52AC\u52AD\u52BC\u52B5\u52C1\u52CD\u52D7\u52DE\u52E3\u52E6\u98ED\u52E0\u52F3\u52F5\u52F8\u52F9\u5306\u5308\u7538\u530D\u5310\u530F\u5315\u531A\u5323\u532F\u5331\u5333\u5338\u5340\u5346\u5345\u4E17\u5349\u534D\u51D6\u535E\u5369\u536E\u5918\u537B\u5377\u5382\u5396\u53A0\u53A6\u53A5\u53AE\u53B0\u53B6\u53C3\u7C12\u96D9\u53DF\u66FC\u71EE\u53EE\u53E8\u53ED\u53FA\u5401\u543D\u5440\u542C\u542D\u543C\u542E\u5436\u5429\u541D\u544E\u548F\u5475\u548E\u545F\u5471\u5477\u5470\u5492\u547B\u5480\u5476\u5484\u5490\u5486\u54C7\u54A2\u54B8\u54A5\u54AC\u54C4\u54C8\u54A8"], ["d3a1", "\u54AB\u54C2\u54A4\u54BE\u54BC\u54D8\u54E5\u54E6\u550F\u5514\u54FD\u54EE\u54ED\u54FA\u54E2\u5539\u5540\u5563\u554C\u552E\u555C\u5545\u5556\u5557\u5538\u5533\u555D\u5599\u5580\u54AF\u558A\u559F\u557B\u557E\u5598\u559E\u55AE\u557C\u5583\u55A9\u5587\u55A8\u55DA\u55C5\u55DF\u55C4\u55DC\u55E4\u55D4\u5614\u55F7\u5616\u55FE\u55FD\u561B\u55F9\u564E\u5650\u71DF\u5634\u5636\u5632\u5638\u566B\u5664\u562F\u566C\u566A\u5686\u5680\u568A\u56A0\u5694\u568F\u56A5\u56AE\u56B6\u56B4\u56C2\u56BC\u56C1\u56C3\u56C0\u56C8\u56CE\u56D1\u56D3\u56D7\u56EE\u56F9\u5700\u56FF\u5704\u5709"], ["d4a1", "\u5708\u570B\u570D\u5713\u5718\u5716\u55C7\u571C\u5726\u5737\u5738\u574E\u573B\u5740\u574F\u5769\u57C0\u5788\u5761\u577F\u5789\u5793\u57A0\u57B3\u57A4\u57AA\u57B0\u57C3\u57C6\u57D4\u57D2\u57D3\u580A\u57D6\u57E3\u580B\u5819\u581D\u5872\u5821\u5862\u584B\u5870\u6BC0\u5852\u583D\u5879\u5885\u58B9\u589F\u58AB\u58BA\u58DE\u58BB\u58B8\u58AE\u58C5\u58D3\u58D1\u58D7\u58D9\u58D8\u58E5\u58DC\u58E4\u58DF\u58EF\u58FA\u58F9\u58FB\u58FC\u58FD\u5902\u590A\u5910\u591B\u68A6\u5925\u592C\u592D\u5932\u5938\u593E\u7AD2\u5955\u5950\u594E\u595A\u5958\u5962\u5960\u5967\u596C\u5969"], ["d5a1", "\u5978\u5981\u599D\u4F5E\u4FAB\u59A3\u59B2\u59C6\u59E8\u59DC\u598D\u59D9\u59DA\u5A25\u5A1F\u5A11\u5A1C\u5A09\u5A1A\u5A40\u5A6C\u5A49\u5A35\u5A36\u5A62\u5A6A\u5A9A\u5ABC\u5ABE\u5ACB\u5AC2\u5ABD\u5AE3\u5AD7\u5AE6\u5AE9\u5AD6\u5AFA\u5AFB\u5B0C\u5B0B\u5B16\u5B32\u5AD0\u5B2A\u5B36\u5B3E\u5B43\u5B45\u5B40\u5B51\u5B55\u5B5A\u5B5B\u5B65\u5B69\u5B70\u5B73\u5B75\u5B78\u6588\u5B7A\u5B80\u5B83\u5BA6\u5BB8\u5BC3\u5BC7\u5BC9\u5BD4\u5BD0\u5BE4\u5BE6\u5BE2\u5BDE\u5BE5\u5BEB\u5BF0\u5BF6\u5BF3\u5C05\u5C07\u5C08\u5C0D\u5C13\u5C20\u5C22\u5C28\u5C38\u5C39\u5C41\u5C46\u5C4E\u5C53"], ["d6a1", "\u5C50\u5C4F\u5B71\u5C6C\u5C6E\u4E62\u5C76\u5C79\u5C8C\u5C91\u5C94\u599B\u5CAB\u5CBB\u5CB6\u5CBC\u5CB7\u5CC5\u5CBE\u5CC7\u5CD9\u5CE9\u5CFD\u5CFA\u5CED\u5D8C\u5CEA\u5D0B\u5D15\u5D17\u5D5C\u5D1F\u5D1B\u5D11\u5D14\u5D22\u5D1A\u5D19\u5D18\u5D4C\u5D52\u5D4E\u5D4B\u5D6C\u5D73\u5D76\u5D87\u5D84\u5D82\u5DA2\u5D9D\u5DAC\u5DAE\u5DBD\u5D90\u5DB7\u5DBC\u5DC9\u5DCD\u5DD3\u5DD2\u5DD6\u5DDB\u5DEB\u5DF2\u5DF5\u5E0B\u5E1A\u5E19\u5E11\u5E1B\u5E36\u5E37\u5E44\u5E43\u5E40\u5E4E\u5E57\u5E54\u5E5F\u5E62\u5E64\u5E47\u5E75\u5E76\u5E7A\u9EBC\u5E7F\u5EA0\u5EC1\u5EC2\u5EC8\u5ED0\u5ECF"], ["d7a1", "\u5ED6\u5EE3\u5EDD\u5EDA\u5EDB\u5EE2\u5EE1\u5EE8\u5EE9\u5EEC\u5EF1\u5EF3\u5EF0\u5EF4\u5EF8\u5EFE\u5F03\u5F09\u5F5D\u5F5C\u5F0B\u5F11\u5F16\u5F29\u5F2D\u5F38\u5F41\u5F48\u5F4C\u5F4E\u5F2F\u5F51\u5F56\u5F57\u5F59\u5F61\u5F6D\u5F73\u5F77\u5F83\u5F82\u5F7F\u5F8A\u5F88\u5F91\u5F87\u5F9E\u5F99\u5F98\u5FA0\u5FA8\u5FAD\u5FBC\u5FD6\u5FFB\u5FE4\u5FF8\u5FF1\u5FDD\u60B3\u5FFF\u6021\u6060\u6019\u6010\u6029\u600E\u6031\u601B\u6015\u602B\u6026\u600F\u603A\u605A\u6041\u606A\u6077\u605F\u604A\u6046\u604D\u6063\u6043\u6064\u6042\u606C\u606B\u6059\u6081\u608D\u60E7\u6083\u609A"], ["d8a1", "\u6084\u609B\u6096\u6097\u6092\u60A7\u608B\u60E1\u60B8\u60E0\u60D3\u60B4\u5FF0\u60BD\u60C6\u60B5\u60D8\u614D\u6115\u6106\u60F6\u60F7\u6100\u60F4\u60FA\u6103\u6121\u60FB\u60F1\u610D\u610E\u6147\u613E\u6128\u6127\u614A\u613F\u613C\u612C\u6134\u613D\u6142\u6144\u6173\u6177\u6158\u6159\u615A\u616B\u6174\u616F\u6165\u6171\u615F\u615D\u6153\u6175\u6199\u6196\u6187\u61AC\u6194\u619A\u618A\u6191\u61AB\u61AE\u61CC\u61CA\u61C9\u61F7\u61C8\u61C3\u61C6\u61BA\u61CB\u7F79\u61CD\u61E6\u61E3\u61F6\u61FA\u61F4\u61FF\u61FD\u61FC\u61FE\u6200\u6208\u6209\u620D\u620C\u6214\u621B"], ["d9a1", "\u621E\u6221\u622A\u622E\u6230\u6232\u6233\u6241\u624E\u625E\u6263\u625B\u6260\u6268\u627C\u6282\u6289\u627E\u6292\u6293\u6296\u62D4\u6283\u6294\u62D7\u62D1\u62BB\u62CF\u62FF\u62C6\u64D4\u62C8\u62DC\u62CC\u62CA\u62C2\u62C7\u629B\u62C9\u630C\u62EE\u62F1\u6327\u6302\u6308\u62EF\u62F5\u6350\u633E\u634D\u641C\u634F\u6396\u638E\u6380\u63AB\u6376\u63A3\u638F\u6389\u639F\u63B5\u636B\u6369\u63BE\u63E9\u63C0\u63C6\u63E3\u63C9\u63D2\u63F6\u63C4\u6416\u6434\u6406\u6413\u6426\u6436\u651D\u6417\u6428\u640F\u6467\u646F\u6476\u644E\u652A\u6495\u6493\u64A5\u64A9\u6488\u64BC"], ["daa1", "\u64DA\u64D2\u64C5\u64C7\u64BB\u64D8\u64C2\u64F1\u64E7\u8209\u64E0\u64E1\u62AC\u64E3\u64EF\u652C\u64F6\u64F4\u64F2\u64FA\u6500\u64FD\u6518\u651C\u6505\u6524\u6523\u652B\u6534\u6535\u6537\u6536\u6538\u754B\u6548\u6556\u6555\u654D\u6558\u655E\u655D\u6572\u6578\u6582\u6583\u8B8A\u659B\u659F\u65AB\u65B7\u65C3\u65C6\u65C1\u65C4\u65CC\u65D2\u65DB\u65D9\u65E0\u65E1\u65F1\u6772\u660A\u6603\u65FB\u6773\u6635\u6636\u6634\u661C\u664F\u6644\u6649\u6641\u665E\u665D\u6664\u6667\u6668\u665F\u6662\u6670\u6683\u6688\u668E\u6689\u6684\u6698\u669D\u66C1\u66B9\u66C9\u66BE\u66BC"], ["dba1", "\u66C4\u66B8\u66D6\u66DA\u66E0\u663F\u66E6\u66E9\u66F0\u66F5\u66F7\u670F\u6716\u671E\u6726\u6727\u9738\u672E\u673F\u6736\u6741\u6738\u6737\u6746\u675E\u6760\u6759\u6763\u6764\u6789\u6770\u67A9\u677C\u676A\u678C\u678B\u67A6\u67A1\u6785\u67B7\u67EF\u67B4\u67EC\u67B3\u67E9\u67B8\u67E4\u67DE\u67DD\u67E2\u67EE\u67B9\u67CE\u67C6\u67E7\u6A9C\u681E\u6846\u6829\u6840\u684D\u6832\u684E\u68B3\u682B\u6859\u6863\u6877\u687F\u689F\u688F\u68AD\u6894\u689D\u689B\u6883\u6AAE\u68B9\u6874\u68B5\u68A0\u68BA\u690F\u688D\u687E\u6901\u68CA\u6908\u68D8\u6922\u6926\u68E1\u690C\u68CD"], ["dca1", "\u68D4\u68E7\u68D5\u6936\u6912\u6904\u68D7\u68E3\u6925\u68F9\u68E0\u68EF\u6928\u692A\u691A\u6923\u6921\u68C6\u6979\u6977\u695C\u6978\u696B\u6954\u697E\u696E\u6939\u6974\u693D\u6959\u6930\u6961\u695E\u695D\u6981\u696A\u69B2\u69AE\u69D0\u69BF\u69C1\u69D3\u69BE\u69CE\u5BE8\u69CA\u69DD\u69BB\u69C3\u69A7\u6A2E\u6991\u69A0\u699C\u6995\u69B4\u69DE\u69E8\u6A02\u6A1B\u69FF\u6B0A\u69F9\u69F2\u69E7\u6A05\u69B1\u6A1E\u69ED\u6A14\u69EB\u6A0A\u6A12\u6AC1\u6A23\u6A13\u6A44\u6A0C\u6A72\u6A36\u6A78\u6A47\u6A62\u6A59\u6A66\u6A48\u6A38\u6A22\u6A90\u6A8D\u6AA0\u6A84\u6AA2\u6AA3"], ["dda1", "\u6A97\u8617\u6ABB\u6AC3\u6AC2\u6AB8\u6AB3\u6AAC\u6ADE\u6AD1\u6ADF\u6AAA\u6ADA\u6AEA\u6AFB\u6B05\u8616\u6AFA\u6B12\u6B16\u9B31\u6B1F\u6B38\u6B37\u76DC\u6B39\u98EE\u6B47\u6B43\u6B49\u6B50\u6B59\u6B54\u6B5B\u6B5F\u6B61\u6B78\u6B79\u6B7F\u6B80\u6B84\u6B83\u6B8D\u6B98\u6B95\u6B9E\u6BA4\u6BAA\u6BAB\u6BAF\u6BB2\u6BB1\u6BB3\u6BB7\u6BBC\u6BC6\u6BCB\u6BD3\u6BDF\u6BEC\u6BEB\u6BF3\u6BEF\u9EBE\u6C08\u6C13\u6C14\u6C1B\u6C24\u6C23\u6C5E\u6C55\u6C62\u6C6A\u6C82\u6C8D\u6C9A\u6C81\u6C9B\u6C7E\u6C68\u6C73\u6C92\u6C90\u6CC4\u6CF1\u6CD3\u6CBD\u6CD7\u6CC5\u6CDD\u6CAE\u6CB1\u6CBE"], ["dea1", "\u6CBA\u6CDB\u6CEF\u6CD9\u6CEA\u6D1F\u884D\u6D36\u6D2B\u6D3D\u6D38\u6D19\u6D35\u6D33\u6D12\u6D0C\u6D63\u6D93\u6D64\u6D5A\u6D79\u6D59\u6D8E\u6D95\u6FE4\u6D85\u6DF9\u6E15\u6E0A\u6DB5\u6DC7\u6DE6\u6DB8\u6DC6\u6DEC\u6DDE\u6DCC\u6DE8\u6DD2\u6DC5\u6DFA\u6DD9\u6DE4\u6DD5\u6DEA\u6DEE\u6E2D\u6E6E\u6E2E\u6E19\u6E72\u6E5F\u6E3E\u6E23\u6E6B\u6E2B\u6E76\u6E4D\u6E1F\u6E43\u6E3A\u6E4E\u6E24\u6EFF\u6E1D\u6E38\u6E82\u6EAA\u6E98\u6EC9\u6EB7\u6ED3\u6EBD\u6EAF\u6EC4\u6EB2\u6ED4\u6ED5\u6E8F\u6EA5\u6EC2\u6E9F\u6F41\u6F11\u704C\u6EEC\u6EF8\u6EFE\u6F3F\u6EF2\u6F31\u6EEF\u6F32\u6ECC"], ["dfa1", "\u6F3E\u6F13\u6EF7\u6F86\u6F7A\u6F78\u6F81\u6F80\u6F6F\u6F5B\u6FF3\u6F6D\u6F82\u6F7C\u6F58\u6F8E\u6F91\u6FC2\u6F66\u6FB3\u6FA3\u6FA1\u6FA4\u6FB9\u6FC6\u6FAA\u6FDF\u6FD5\u6FEC\u6FD4\u6FD8\u6FF1\u6FEE\u6FDB\u7009\u700B\u6FFA\u7011\u7001\u700F\u6FFE\u701B\u701A\u6F74\u701D\u7018\u701F\u7030\u703E\u7032\u7051\u7063\u7099\u7092\u70AF\u70F1\u70AC\u70B8\u70B3\u70AE\u70DF\u70CB\u70DD\u70D9\u7109\u70FD\u711C\u7119\u7165\u7155\u7188\u7166\u7162\u714C\u7156\u716C\u718F\u71FB\u7184\u7195\u71A8\u71AC\u71D7\u71B9\u71BE\u71D2\u71C9\u71D4\u71CE\u71E0\u71EC\u71E7\u71F5\u71FC"], ["e0a1", "\u71F9\u71FF\u720D\u7210\u721B\u7228\u722D\u722C\u7230\u7232\u723B\u723C\u723F\u7240\u7246\u724B\u7258\u7274\u727E\u7282\u7281\u7287\u7292\u7296\u72A2\u72A7\u72B9\u72B2\u72C3\u72C6\u72C4\u72CE\u72D2\u72E2\u72E0\u72E1\u72F9\u72F7\u500F\u7317\u730A\u731C\u7316\u731D\u7334\u732F\u7329\u7325\u733E\u734E\u734F\u9ED8\u7357\u736A\u7368\u7370\u7378\u7375\u737B\u737A\u73C8\u73B3\u73CE\u73BB\u73C0\u73E5\u73EE\u73DE\u74A2\u7405\u746F\u7425\u73F8\u7432\u743A\u7455\u743F\u745F\u7459\u7441\u745C\u7469\u7470\u7463\u746A\u7476\u747E\u748B\u749E\u74A7\u74CA\u74CF\u74D4\u73F1"], ["e1a1", "\u74E0\u74E3\u74E7\u74E9\u74EE\u74F2\u74F0\u74F1\u74F8\u74F7\u7504\u7503\u7505\u750C\u750E\u750D\u7515\u7513\u751E\u7526\u752C\u753C\u7544\u754D\u754A\u7549\u755B\u7546\u755A\u7569\u7564\u7567\u756B\u756D\u7578\u7576\u7586\u7587\u7574\u758A\u7589\u7582\u7594\u759A\u759D\u75A5\u75A3\u75C2\u75B3\u75C3\u75B5\u75BD\u75B8\u75BC\u75B1\u75CD\u75CA\u75D2\u75D9\u75E3\u75DE\u75FE\u75FF\u75FC\u7601\u75F0\u75FA\u75F2\u75F3\u760B\u760D\u7609\u761F\u7627\u7620\u7621\u7622\u7624\u7634\u7630\u763B\u7647\u7648\u7646\u765C\u7658\u7661\u7662\u7668\u7669\u766A\u7667\u766C\u7670"], ["e2a1", "\u7672\u7676\u7678\u767C\u7680\u7683\u7688\u768B\u768E\u7696\u7693\u7699\u769A\u76B0\u76B4\u76B8\u76B9\u76BA\u76C2\u76CD\u76D6\u76D2\u76DE\u76E1\u76E5\u76E7\u76EA\u862F\u76FB\u7708\u7707\u7704\u7729\u7724\u771E\u7725\u7726\u771B\u7737\u7738\u7747\u775A\u7768\u776B\u775B\u7765\u777F\u777E\u7779\u778E\u778B\u7791\u77A0\u779E\u77B0\u77B6\u77B9\u77BF\u77BC\u77BD\u77BB\u77C7\u77CD\u77D7\u77DA\u77DC\u77E3\u77EE\u77FC\u780C\u7812\u7926\u7820\u792A\u7845\u788E\u7874\u7886\u787C\u789A\u788C\u78A3\u78B5\u78AA\u78AF\u78D1\u78C6\u78CB\u78D4\u78BE\u78BC\u78C5\u78CA\u78EC"], ["e3a1", "\u78E7\u78DA\u78FD\u78F4\u7907\u7912\u7911\u7919\u792C\u792B\u7940\u7960\u7957\u795F\u795A\u7955\u7953\u797A\u797F\u798A\u799D\u79A7\u9F4B\u79AA\u79AE\u79B3\u79B9\u79BA\u79C9\u79D5\u79E7\u79EC\u79E1\u79E3\u7A08\u7A0D\u7A18\u7A19\u7A20\u7A1F\u7980\u7A31\u7A3B\u7A3E\u7A37\u7A43\u7A57\u7A49\u7A61\u7A62\u7A69\u9F9D\u7A70\u7A79\u7A7D\u7A88\u7A97\u7A95\u7A98\u7A96\u7AA9\u7AC8\u7AB0\u7AB6\u7AC5\u7AC4\u7ABF\u9083\u7AC7\u7ACA\u7ACD\u7ACF\u7AD5\u7AD3\u7AD9\u7ADA\u7ADD\u7AE1\u7AE2\u7AE6\u7AED\u7AF0\u7B02\u7B0F\u7B0A\u7B06\u7B33\u7B18\u7B19\u7B1E\u7B35\u7B28\u7B36\u7B50"], ["e4a1", "\u7B7A\u7B04\u7B4D\u7B0B\u7B4C\u7B45\u7B75\u7B65\u7B74\u7B67\u7B70\u7B71\u7B6C\u7B6E\u7B9D\u7B98\u7B9F\u7B8D\u7B9C\u7B9A\u7B8B\u7B92\u7B8F\u7B5D\u7B99\u7BCB\u7BC1\u7BCC\u7BCF\u7BB4\u7BC6\u7BDD\u7BE9\u7C11\u7C14\u7BE6\u7BE5\u7C60\u7C00\u7C07\u7C13\u7BF3\u7BF7\u7C17\u7C0D\u7BF6\u7C23\u7C27\u7C2A\u7C1F\u7C37\u7C2B\u7C3D\u7C4C\u7C43\u7C54\u7C4F\u7C40\u7C50\u7C58\u7C5F\u7C64\u7C56\u7C65\u7C6C\u7C75\u7C83\u7C90\u7CA4\u7CAD\u7CA2\u7CAB\u7CA1\u7CA8\u7CB3\u7CB2\u7CB1\u7CAE\u7CB9\u7CBD\u7CC0\u7CC5\u7CC2\u7CD8\u7CD2\u7CDC\u7CE2\u9B3B\u7CEF\u7CF2\u7CF4\u7CF6\u7CFA\u7D06"], ["e5a1", "\u7D02\u7D1C\u7D15\u7D0A\u7D45\u7D4B\u7D2E\u7D32\u7D3F\u7D35\u7D46\u7D73\u7D56\u7D4E\u7D72\u7D68\u7D6E\u7D4F\u7D63\u7D93\u7D89\u7D5B\u7D8F\u7D7D\u7D9B\u7DBA\u7DAE\u7DA3\u7DB5\u7DC7\u7DBD\u7DAB\u7E3D\u7DA2\u7DAF\u7DDC\u7DB8\u7D9F\u7DB0\u7DD8\u7DDD\u7DE4\u7DDE\u7DFB\u7DF2\u7DE1\u7E05\u7E0A\u7E23\u7E21\u7E12\u7E31\u7E1F\u7E09\u7E0B\u7E22\u7E46\u7E66\u7E3B\u7E35\u7E39\u7E43\u7E37\u7E32\u7E3A\u7E67\u7E5D\u7E56\u7E5E\u7E59\u7E5A\u7E79\u7E6A\u7E69\u7E7C\u7E7B\u7E83\u7DD5\u7E7D\u8FAE\u7E7F\u7E88\u7E89\u7E8C\u7E92\u7E90\u7E93\u7E94\u7E96\u7E8E\u7E9B\u7E9C\u7F38\u7F3A"], ["e6a1", "\u7F45\u7F4C\u7F4D\u7F4E\u7F50\u7F51\u7F55\u7F54\u7F58\u7F5F\u7F60\u7F68\u7F69\u7F67\u7F78\u7F82\u7F86\u7F83\u7F88\u7F87\u7F8C\u7F94\u7F9E\u7F9D\u7F9A\u7FA3\u7FAF\u7FB2\u7FB9\u7FAE\u7FB6\u7FB8\u8B71\u7FC5\u7FC6\u7FCA\u7FD5\u7FD4\u7FE1\u7FE6\u7FE9\u7FF3\u7FF9\u98DC\u8006\u8004\u800B\u8012\u8018\u8019\u801C\u8021\u8028\u803F\u803B\u804A\u8046\u8052\u8058\u805A\u805F\u8062\u8068\u8073\u8072\u8070\u8076\u8079\u807D\u807F\u8084\u8086\u8085\u809B\u8093\u809A\u80AD\u5190\u80AC\u80DB\u80E5\u80D9\u80DD\u80C4\u80DA\u80D6\u8109\u80EF\u80F1\u811B\u8129\u8123\u812F\u814B"], ["e7a1", "\u968B\u8146\u813E\u8153\u8151\u80FC\u8171\u816E\u8165\u8166\u8174\u8183\u8188\u818A\u8180\u8182\u81A0\u8195\u81A4\u81A3\u815F\u8193\u81A9\u81B0\u81B5\u81BE\u81B8\u81BD\u81C0\u81C2\u81BA\u81C9\u81CD\u81D1\u81D9\u81D8\u81C8\u81DA\u81DF\u81E0\u81E7\u81FA\u81FB\u81FE\u8201\u8202\u8205\u8207\u820A\u820D\u8210\u8216\u8229\u822B\u8238\u8233\u8240\u8259\u8258\u825D\u825A\u825F\u8264\u8262\u8268\u826A\u826B\u822E\u8271\u8277\u8278\u827E\u828D\u8292\u82AB\u829F\u82BB\u82AC\u82E1\u82E3\u82DF\u82D2\u82F4\u82F3\u82FA\u8393\u8303\u82FB\u82F9\u82DE\u8306\u82DC\u8309\u82D9"], ["e8a1", "\u8335\u8334\u8316\u8332\u8331\u8340\u8339\u8350\u8345\u832F\u832B\u8317\u8318\u8385\u839A\u83AA\u839F\u83A2\u8396\u8323\u838E\u8387\u838A\u837C\u83B5\u8373\u8375\u83A0\u8389\u83A8\u83F4\u8413\u83EB\u83CE\u83FD\u8403\u83D8\u840B\u83C1\u83F7\u8407\u83E0\u83F2\u840D\u8422\u8420\u83BD\u8438\u8506\u83FB\u846D\u842A\u843C\u855A\u8484\u8477\u846B\u84AD\u846E\u8482\u8469\u8446\u842C\u846F\u8479\u8435\u84CA\u8462\u84B9\u84BF\u849F\u84D9\u84CD\u84BB\u84DA\u84D0\u84C1\u84C6\u84D6\u84A1\u8521\u84FF\u84F4\u8517\u8518\u852C\u851F\u8515\u8514\u84FC\u8540\u8563\u8558\u8548"], ["e9a1", "\u8541\u8602\u854B\u8555\u8580\u85A4\u8588\u8591\u858A\u85A8\u856D\u8594\u859B\u85EA\u8587\u859C\u8577\u857E\u8590\u85C9\u85BA\u85CF\u85B9\u85D0\u85D5\u85DD\u85E5\u85DC\u85F9\u860A\u8613\u860B\u85FE\u85FA\u8606\u8622\u861A\u8630\u863F\u864D\u4E55\u8654\u865F\u8667\u8671\u8693\u86A3\u86A9\u86AA\u868B\u868C\u86B6\u86AF\u86C4\u86C6\u86B0\u86C9\u8823\u86AB\u86D4\u86DE\u86E9\u86EC\u86DF\u86DB\u86EF\u8712\u8706\u8708\u8700\u8703\u86FB\u8711\u8709\u870D\u86F9\u870A\u8734\u873F\u8737\u873B\u8725\u8729\u871A\u8760\u875F\u8778\u874C\u874E\u8774\u8757\u8768\u876E\u8759"], ["eaa1", "\u8753\u8763\u876A\u8805\u87A2\u879F\u8782\u87AF\u87CB\u87BD\u87C0\u87D0\u96D6\u87AB\u87C4\u87B3\u87C7\u87C6\u87BB\u87EF\u87F2\u87E0\u880F\u880D\u87FE\u87F6\u87F7\u880E\u87D2\u8811\u8816\u8815\u8822\u8821\u8831\u8836\u8839\u8827\u883B\u8844\u8842\u8852\u8859\u885E\u8862\u886B\u8881\u887E\u889E\u8875\u887D\u88B5\u8872\u8882\u8897\u8892\u88AE\u8899\u88A2\u888D\u88A4\u88B0\u88BF\u88B1\u88C3\u88C4\u88D4\u88D8\u88D9\u88DD\u88F9\u8902\u88FC\u88F4\u88E8\u88F2\u8904\u890C\u890A\u8913\u8943\u891E\u8925\u892A\u892B\u8941\u8944\u893B\u8936\u8938\u894C\u891D\u8960\u895E"], ["eba1", "\u8966\u8964\u896D\u896A\u896F\u8974\u8977\u897E\u8983\u8988\u898A\u8993\u8998\u89A1\u89A9\u89A6\u89AC\u89AF\u89B2\u89BA\u89BD\u89BF\u89C0\u89DA\u89DC\u89DD\u89E7\u89F4\u89F8\u8A03\u8A16\u8A10\u8A0C\u8A1B\u8A1D\u8A25\u8A36\u8A41\u8A5B\u8A52\u8A46\u8A48\u8A7C\u8A6D\u8A6C\u8A62\u8A85\u8A82\u8A84\u8AA8\u8AA1\u8A91\u8AA5\u8AA6\u8A9A\u8AA3\u8AC4\u8ACD\u8AC2\u8ADA\u8AEB\u8AF3\u8AE7\u8AE4\u8AF1\u8B14\u8AE0\u8AE2\u8AF7\u8ADE\u8ADB\u8B0C\u8B07\u8B1A\u8AE1\u8B16\u8B10\u8B17\u8B20\u8B33\u97AB\u8B26\u8B2B\u8B3E\u8B28\u8B41\u8B4C\u8B4F\u8B4E\u8B49\u8B56\u8B5B\u8B5A\u8B6B"], ["eca1", "\u8B5F\u8B6C\u8B6F\u8B74\u8B7D\u8B80\u8B8C\u8B8E\u8B92\u8B93\u8B96\u8B99\u8B9A\u8C3A\u8C41\u8C3F\u8C48\u8C4C\u8C4E\u8C50\u8C55\u8C62\u8C6C\u8C78\u8C7A\u8C82\u8C89\u8C85\u8C8A\u8C8D\u8C8E\u8C94\u8C7C\u8C98\u621D\u8CAD\u8CAA\u8CBD\u8CB2\u8CB3\u8CAE\u8CB6\u8CC8\u8CC1\u8CE4\u8CE3\u8CDA\u8CFD\u8CFA\u8CFB\u8D04\u8D05\u8D0A\u8D07\u8D0F\u8D0D\u8D10\u9F4E\u8D13\u8CCD\u8D14\u8D16\u8D67\u8D6D\u8D71\u8D73\u8D81\u8D99\u8DC2\u8DBE\u8DBA\u8DCF\u8DDA\u8DD6\u8DCC\u8DDB\u8DCB\u8DEA\u8DEB\u8DDF\u8DE3\u8DFC\u8E08\u8E09\u8DFF\u8E1D\u8E1E\u8E10\u8E1F\u8E42\u8E35\u8E30\u8E34\u8E4A"], ["eda1", "\u8E47\u8E49\u8E4C\u8E50\u8E48\u8E59\u8E64\u8E60\u8E2A\u8E63\u8E55\u8E76\u8E72\u8E7C\u8E81\u8E87\u8E85\u8E84\u8E8B\u8E8A\u8E93\u8E91\u8E94\u8E99\u8EAA\u8EA1\u8EAC\u8EB0\u8EC6\u8EB1\u8EBE\u8EC5\u8EC8\u8ECB\u8EDB\u8EE3\u8EFC\u8EFB\u8EEB\u8EFE\u8F0A\u8F05\u8F15\u8F12\u8F19\u8F13\u8F1C\u8F1F\u8F1B\u8F0C\u8F26\u8F33\u8F3B\u8F39\u8F45\u8F42\u8F3E\u8F4C\u8F49\u8F46\u8F4E\u8F57\u8F5C\u8F62\u8F63\u8F64\u8F9C\u8F9F\u8FA3\u8FAD\u8FAF\u8FB7\u8FDA\u8FE5\u8FE2\u8FEA\u8FEF\u9087\u8FF4\u9005\u8FF9\u8FFA\u9011\u9015\u9021\u900D\u901E\u9016\u900B\u9027\u9036\u9035\u9039\u8FF8"], ["eea1", "\u904F\u9050\u9051\u9052\u900E\u9049\u903E\u9056\u9058\u905E\u9068\u906F\u9076\u96A8\u9072\u9082\u907D\u9081\u9080\u908A\u9089\u908F\u90A8\u90AF\u90B1\u90B5\u90E2\u90E4\u6248\u90DB\u9102\u9112\u9119\u9132\u9130\u914A\u9156\u9158\u9163\u9165\u9169\u9173\u9172\u918B\u9189\u9182\u91A2\u91AB\u91AF\u91AA\u91B5\u91B4\u91BA\u91C0\u91C1\u91C9\u91CB\u91D0\u91D6\u91DF\u91E1\u91DB\u91FC\u91F5\u91F6\u921E\u91FF\u9214\u922C\u9215\u9211\u925E\u9257\u9245\u9249\u9264\u9248\u9295\u923F\u924B\u9250\u929C\u9296\u9293\u929B\u925A\u92CF\u92B9\u92B7\u92E9\u930F\u92FA\u9344\u932E"], ["efa1", "\u9319\u9322\u931A\u9323\u933A\u9335\u933B\u935C\u9360\u937C\u936E\u9356\u93B0\u93AC\u93AD\u9394\u93B9\u93D6\u93D7\u93E8\u93E5\u93D8\u93C3\u93DD\u93D0\u93C8\u93E4\u941A\u9414\u9413\u9403\u9407\u9410\u9436\u942B\u9435\u9421\u943A\u9441\u9452\u9444\u945B\u9460\u9462\u945E\u946A\u9229\u9470\u9475\u9477\u947D\u945A\u947C\u947E\u9481\u947F\u9582\u9587\u958A\u9594\u9596\u9598\u9599\u95A0\u95A8\u95A7\u95AD\u95BC\u95BB\u95B9\u95BE\u95CA\u6FF6\u95C3\u95CD\u95CC\u95D5\u95D4\u95D6\u95DC\u95E1\u95E5\u95E2\u9621\u9628\u962E\u962F\u9642\u964C\u964F\u964B\u9677\u965C\u965E"], ["f0a1", "\u965D\u965F\u9666\u9672\u966C\u968D\u9698\u9695\u9697\u96AA\u96A7\u96B1\u96B2\u96B0\u96B4\u96B6\u96B8\u96B9\u96CE\u96CB\u96C9\u96CD\u894D\u96DC\u970D\u96D5\u96F9\u9704\u9706\u9708\u9713\u970E\u9711\u970F\u9716\u9719\u9724\u972A\u9730\u9739\u973D\u973E\u9744\u9746\u9748\u9742\u9749\u975C\u9760\u9764\u9766\u9768\u52D2\u976B\u9771\u9779\u9785\u977C\u9781\u977A\u9786\u978B\u978F\u9790\u979C\u97A8\u97A6\u97A3\u97B3\u97B4\u97C3\u97C6\u97C8\u97CB\u97DC\u97ED\u9F4F\u97F2\u7ADF\u97F6\u97F5\u980F\u980C\u9838\u9824\u9821\u9837\u983D\u9846\u984F\u984B\u986B\u986F\u9870"], ["f1a1", "\u9871\u9874\u9873\u98AA\u98AF\u98B1\u98B6\u98C4\u98C3\u98C6\u98E9\u98EB\u9903\u9909\u9912\u9914\u9918\u9921\u991D\u991E\u9924\u9920\u992C\u992E\u993D\u993E\u9942\u9949\u9945\u9950\u994B\u9951\u9952\u994C\u9955\u9997\u9998\u99A5\u99AD\u99AE\u99BC\u99DF\u99DB\u99DD\u99D8\u99D1\u99ED\u99EE\u99F1\u99F2\u99FB\u99F8\u9A01\u9A0F\u9A05\u99E2\u9A19\u9A2B\u9A37\u9A45\u9A42\u9A40\u9A43\u9A3E\u9A55\u9A4D\u9A5B\u9A57\u9A5F\u9A62\u9A65\u9A64\u9A69\u9A6B\u9A6A\u9AAD\u9AB0\u9ABC\u9AC0\u9ACF\u9AD1\u9AD3\u9AD4\u9ADE\u9ADF\u9AE2\u9AE3\u9AE6\u9AEF\u9AEB\u9AEE\u9AF4\u9AF1\u9AF7"], ["f2a1", "\u9AFB\u9B06\u9B18\u9B1A\u9B1F\u9B22\u9B23\u9B25\u9B27\u9B28\u9B29\u9B2A\u9B2E\u9B2F\u9B32\u9B44\u9B43\u9B4F\u9B4D\u9B4E\u9B51\u9B58\u9B74\u9B93\u9B83\u9B91\u9B96\u9B97\u9B9F\u9BA0\u9BA8\u9BB4\u9BC0\u9BCA\u9BB9\u9BC6\u9BCF\u9BD1\u9BD2\u9BE3\u9BE2\u9BE4\u9BD4\u9BE1\u9C3A\u9BF2\u9BF1\u9BF0\u9C15\u9C14\u9C09\u9C13\u9C0C\u9C06\u9C08\u9C12\u9C0A\u9C04\u9C2E\u9C1B\u9C25\u9C24\u9C21\u9C30\u9C47\u9C32\u9C46\u9C3E\u9C5A\u9C60\u9C67\u9C76\u9C78\u9CE7\u9CEC\u9CF0\u9D09\u9D08\u9CEB\u9D03\u9D06\u9D2A\u9D26\u9DAF\u9D23\u9D1F\u9D44\u9D15\u9D12\u9D41\u9D3F\u9D3E\u9D46\u9D48"], ["f3a1", "\u9D5D\u9D5E\u9D64\u9D51\u9D50\u9D59\u9D72\u9D89\u9D87\u9DAB\u9D6F\u9D7A\u9D9A\u9DA4\u9DA9\u9DB2\u9DC4\u9DC1\u9DBB\u9DB8\u9DBA\u9DC6\u9DCF\u9DC2\u9DD9\u9DD3\u9DF8\u9DE6\u9DED\u9DEF\u9DFD\u9E1A\u9E1B\u9E1E\u9E75\u9E79\u9E7D\u9E81\u9E88\u9E8B\u9E8C\u9E92\u9E95\u9E91\u9E9D\u9EA5\u9EA9\u9EB8\u9EAA\u9EAD\u9761\u9ECC\u9ECE\u9ECF\u9ED0\u9ED4\u9EDC\u9EDE\u9EDD\u9EE0\u9EE5\u9EE8\u9EEF\u9EF4\u9EF6\u9EF7\u9EF9\u9EFB\u9EFC\u9EFD\u9F07\u9F08\u76B7\u9F15\u9F21\u9F2C\u9F3E\u9F4A\u9F52\u9F54\u9F63\u9F5F\u9F60\u9F61\u9F66\u9F67\u9F6C\u9F6A\u9F77\u9F72\u9F76\u9F95\u9F9C\u9FA0"], ["f4a1", "\u582F\u69C7\u9059\u7464\u51DC\u7199"], ["f9a1", "\u7E8A\u891C\u9348\u9288\u84DC\u4FC9\u70BB\u6631\u68C8\u92F9\u66FB\u5F45\u4E28\u4EE1\u4EFC\u4F00\u4F03\u4F39\u4F56\u4F92\u4F8A\u4F9A\u4F94\u4FCD\u5040\u5022\u4FFF\u501E\u5046\u5070\u5042\u5094\u50F4\u50D8\u514A\u5164\u519D\u51BE\u51EC\u5215\u529C\u52A6\u52C0\u52DB\u5300\u5307\u5324\u5372\u5393\u53B2\u53DD\uFA0E\u549C\u548A\u54A9\u54FF\u5586\u5759\u5765\u57AC\u57C8\u57C7\uFA0F\uFA10\u589E\u58B2\u590B\u5953\u595B\u595D\u5963\u59A4\u59BA\u5B56\u5BC0\u752F\u5BD8\u5BEC\u5C1E\u5CA6\u5CBA\u5CF5\u5D27\u5D53\uFA11\u5D42\u5D6D\u5DB8\u5DB9\u5DD0\u5F21\u5F34\u5F67\u5FB7"], ["faa1", "\u5FDE\u605D\u6085\u608A\u60DE\u60D5\u6120\u60F2\u6111\u6137\u6130\u6198\u6213\u62A6\u63F5\u6460\u649D\u64CE\u654E\u6600\u6615\u663B\u6609\u662E\u661E\u6624\u6665\u6657\u6659\uFA12\u6673\u6699\u66A0\u66B2\u66BF\u66FA\u670E\uF929\u6766\u67BB\u6852\u67C0\u6801\u6844\u68CF\uFA13\u6968\uFA14\u6998\u69E2\u6A30\u6A6B\u6A46\u6A73\u6A7E\u6AE2\u6AE4\u6BD6\u6C3F\u6C5C\u6C86\u6C6F\u6CDA\u6D04\u6D87\u6D6F\u6D96\u6DAC\u6DCF\u6DF8\u6DF2\u6DFC\u6E39\u6E5C\u6E27\u6E3C\u6EBF\u6F88\u6FB5\u6FF5\u7005\u7007\u7028\u7085\u70AB\u710F\u7104\u715C\u7146\u7147\uFA15\u71C1\u71FE\u72B1"], ["fba1", "\u72BE\u7324\uFA16\u7377\u73BD\u73C9\u73D6\u73E3\u73D2\u7407\u73F5\u7426\u742A\u7429\u742E\u7462\u7489\u749F\u7501\u756F\u7682\u769C\u769E\u769B\u76A6\uFA17\u7746\u52AF\u7821\u784E\u7864\u787A\u7930\uFA18\uFA19\uFA1A\u7994\uFA1B\u799B\u7AD1\u7AE7\uFA1C\u7AEB\u7B9E\uFA1D\u7D48\u7D5C\u7DB7\u7DA0\u7DD6\u7E52\u7F47\u7FA1\uFA1E\u8301\u8362\u837F\u83C7\u83F6\u8448\u84B4\u8553\u8559\u856B\uFA1F\u85B0\uFA20\uFA21\u8807\u88F5\u8A12\u8A37\u8A79\u8AA7\u8ABE\u8ADF\uFA22\u8AF6\u8B53\u8B7F\u8CF0\u8CF4\u8D12\u8D76\uFA23\u8ECF\uFA24\uFA25\u9067\u90DE\uFA26\u9115\u9127\u91DA"], ["fca1", "\u91D7\u91DE\u91ED\u91EE\u91E4\u91E5\u9206\u9210\u920A\u923A\u9240\u923C\u924E\u9259\u9251\u9239\u9267\u92A7\u9277\u9278\u92E7\u92D7\u92D9\u92D0\uFA27\u92D5\u92E0\u92D3\u9325\u9321\u92FB\uFA28\u931E\u92FF\u931D\u9302\u9370\u9357\u93A4\u93C6\u93DE\u93F8\u9431\u9445\u9448\u9592\uF9DC\uFA29\u969D\u96AF\u9733\u973B\u9743\u974D\u974F\u9751\u9755\u9857\u9865\uFA2A\uFA2B\u9927\uFA2C\u999E\u9A4E\u9AD9\u9ADC\u9B75\u9B72\u9B8F\u9BB1\u9BBB\u9C00\u9D70\u9D6B\uFA2D\u9E19\u9ED1"], ["fcf1", "\u2170", 9, "\uFFE2\uFFE4\uFF07\uFF02"], ["8fa2af", "\u02D8\u02C7\xB8\u02D9\u02DD\xAF\u02DB\u02DA\uFF5E\u0384\u0385"], ["8fa2c2", "\xA1\xA6\xBF"], ["8fa2eb", "\xBA\xAA\xA9\xAE\u2122\xA4\u2116"], ["8fa6e1", "\u0386\u0388\u0389\u038A\u03AA"], ["8fa6e7", "\u038C"], ["8fa6e9", "\u038E\u03AB"], ["8fa6ec", "\u038F"], ["8fa6f1", "\u03AC\u03AD\u03AE\u03AF\u03CA\u0390\u03CC\u03C2\u03CD\u03CB\u03B0\u03CE"], ["8fa7c2", "\u0402", 10, "\u040E\u040F"], ["8fa7f2", "\u0452", 10, "\u045E\u045F"], ["8fa9a1", "\xC6\u0110"], ["8fa9a4", "\u0126"], ["8fa9a6", "\u0132"], ["8fa9a8", "\u0141\u013F"], ["8fa9ab", "\u014A\xD8\u0152"], ["8fa9af", "\u0166\xDE"], ["8fa9c1", "\xE6\u0111\xF0\u0127\u0131\u0133\u0138\u0142\u0140\u0149\u014B\xF8\u0153\xDF\u0167\xFE"], ["8faaa1", "\xC1\xC0\xC4\xC2\u0102\u01CD\u0100\u0104\xC5\xC3\u0106\u0108\u010C\xC7\u010A\u010E\xC9\xC8\xCB\xCA\u011A\u0116\u0112\u0118"], ["8faaba", "\u011C\u011E\u0122\u0120\u0124\xCD\xCC\xCF\xCE\u01CF\u0130\u012A\u012E\u0128\u0134\u0136\u0139\u013D\u013B\u0143\u0147\u0145\xD1\xD3\xD2\xD6\xD4\u01D1\u0150\u014C\xD5\u0154\u0158\u0156\u015A\u015C\u0160\u015E\u0164\u0162\xDA\xD9\xDC\xDB\u016C\u01D3\u0170\u016A\u0172\u016E\u0168\u01D7\u01DB\u01D9\u01D5\u0174\xDD\u0178\u0176\u0179\u017D\u017B"], ["8faba1", "\xE1\xE0\xE4\xE2\u0103\u01CE\u0101\u0105\xE5\xE3\u0107\u0109\u010D\xE7\u010B\u010F\xE9\xE8\xEB\xEA\u011B\u0117\u0113\u0119\u01F5\u011D\u011F"], ["8fabbd", "\u0121\u0125\xED\xEC\xEF\xEE\u01D0"], ["8fabc5", "\u012B\u012F\u0129\u0135\u0137\u013A\u013E\u013C\u0144\u0148\u0146\xF1\xF3\xF2\xF6\xF4\u01D2\u0151\u014D\xF5\u0155\u0159\u0157\u015B\u015D\u0161\u015F\u0165\u0163\xFA\xF9\xFC\xFB\u016D\u01D4\u0171\u016B\u0173\u016F\u0169\u01D8\u01DC\u01DA\u01D6\u0175\xFD\xFF\u0177\u017A\u017E\u017C"], ["8fb0a1", "\u4E02\u4E04\u4E05\u4E0C\u4E12\u4E1F\u4E23\u4E24\u4E28\u4E2B\u4E2E\u4E2F\u4E30\u4E35\u4E40\u4E41\u4E44\u4E47\u4E51\u4E5A\u4E5C\u4E63\u4E68\u4E69\u4E74\u4E75\u4E79\u4E7F\u4E8D\u4E96\u4E97\u4E9D\u4EAF\u4EB9\u4EC3\u4ED0\u4EDA\u4EDB\u4EE0\u4EE1\u4EE2\u4EE8\u4EEF\u4EF1\u4EF3\u4EF5\u4EFD\u4EFE\u4EFF\u4F00\u4F02\u4F03\u4F08\u4F0B\u4F0C\u4F12\u4F15\u4F16\u4F17\u4F19\u4F2E\u4F31\u4F60\u4F33\u4F35\u4F37\u4F39\u4F3B\u4F3E\u4F40\u4F42\u4F48\u4F49\u4F4B\u4F4C\u4F52\u4F54\u4F56\u4F58\u4F5F\u4F63\u4F6A\u4F6C\u4F6E\u4F71\u4F77\u4F78\u4F79\u4F7A\u4F7D\u4F7E\u4F81\u4F82\u4F84"], ["8fb1a1", "\u4F85\u4F89\u4F8A\u4F8C\u4F8E\u4F90\u4F92\u4F93\u4F94\u4F97\u4F99\u4F9A\u4F9E\u4F9F\u4FB2\u4FB7\u4FB9\u4FBB\u4FBC\u4FBD\u4FBE\u4FC0\u4FC1\u4FC5\u4FC6\u4FC8\u4FC9\u4FCB\u4FCC\u4FCD\u4FCF\u4FD2\u4FDC\u4FE0\u4FE2\u4FF0\u4FF2\u4FFC\u4FFD\u4FFF\u5000\u5001\u5004\u5007\u500A\u500C\u500E\u5010\u5013\u5017\u5018\u501B\u501C\u501D\u501E\u5022\u5027\u502E\u5030\u5032\u5033\u5035\u5040\u5041\u5042\u5045\u5046\u504A\u504C\u504E\u5051\u5052\u5053\u5057\u5059\u505F\u5060\u5062\u5063\u5066\u5067\u506A\u506D\u5070\u5071\u503B\u5081\u5083\u5084\u5086\u508A\u508E\u508F\u5090"], ["8fb2a1", "\u5092\u5093\u5094\u5096\u509B\u509C\u509E", 4, "\u50AA\u50AF\u50B0\u50B9\u50BA\u50BD\u50C0\u50C3\u50C4\u50C7\u50CC\u50CE\u50D0\u50D3\u50D4\u50D8\u50DC\u50DD\u50DF\u50E2\u50E4\u50E6\u50E8\u50E9\u50EF\u50F1\u50F6\u50FA\u50FE\u5103\u5106\u5107\u5108\u510B\u510C\u510D\u510E\u50F2\u5110\u5117\u5119\u511B\u511C\u511D\u511E\u5123\u5127\u5128\u512C\u512D\u512F\u5131\u5133\u5134\u5135\u5138\u5139\u5142\u514A\u514F\u5153\u5155\u5157\u5158\u515F\u5164\u5166\u517E\u5183\u5184\u518B\u518E\u5198\u519D\u51A1\u51A3\u51AD\u51B8\u51BA\u51BC\u51BE\u51BF\u51C2"], ["8fb3a1", "\u51C8\u51CF\u51D1\u51D2\u51D3\u51D5\u51D8\u51DE\u51E2\u51E5\u51EE\u51F2\u51F3\u51F4\u51F7\u5201\u5202\u5205\u5212\u5213\u5215\u5216\u5218\u5222\u5228\u5231\u5232\u5235\u523C\u5245\u5249\u5255\u5257\u5258\u525A\u525C\u525F\u5260\u5261\u5266\u526E\u5277\u5278\u5279\u5280\u5282\u5285\u528A\u528C\u5293\u5295\u5296\u5297\u5298\u529A\u529C\u52A4\u52A5\u52A6\u52A7\u52AF\u52B0\u52B6\u52B7\u52B8\u52BA\u52BB\u52BD\u52C0\u52C4\u52C6\u52C8\u52CC\u52CF\u52D1\u52D4\u52D6\u52DB\u52DC\u52E1\u52E5\u52E8\u52E9\u52EA\u52EC\u52F0\u52F1\u52F4\u52F6\u52F7\u5300\u5303\u530A\u530B"], ["8fb4a1", "\u530C\u5311\u5313\u5318\u531B\u531C\u531E\u531F\u5325\u5327\u5328\u5329\u532B\u532C\u532D\u5330\u5332\u5335\u533C\u533D\u533E\u5342\u534C\u534B\u5359\u535B\u5361\u5363\u5365\u536C\u536D\u5372\u5379\u537E\u5383\u5387\u5388\u538E\u5393\u5394\u5399\u539D\u53A1\u53A4\u53AA\u53AB\u53AF\u53B2\u53B4\u53B5\u53B7\u53B8\u53BA\u53BD\u53C0\u53C5\u53CF\u53D2\u53D3\u53D5\u53DA\u53DD\u53DE\u53E0\u53E6\u53E7\u53F5\u5402\u5413\u541A\u5421\u5427\u5428\u542A\u542F\u5431\u5434\u5435\u5443\u5444\u5447\u544D\u544F\u545E\u5462\u5464\u5466\u5467\u5469\u546B\u546D\u546E\u5474\u547F"], ["8fb5a1", "\u5481\u5483\u5485\u5488\u5489\u548D\u5491\u5495\u5496\u549C\u549F\u54A1\u54A6\u54A7\u54A9\u54AA\u54AD\u54AE\u54B1\u54B7\u54B9\u54BA\u54BB\u54BF\u54C6\u54CA\u54CD\u54CE\u54E0\u54EA\u54EC\u54EF\u54F6\u54FC\u54FE\u54FF\u5500\u5501\u5505\u5508\u5509\u550C\u550D\u550E\u5515\u552A\u552B\u5532\u5535\u5536\u553B\u553C\u553D\u5541\u5547\u5549\u554A\u554D\u5550\u5551\u5558\u555A\u555B\u555E\u5560\u5561\u5564\u5566\u557F\u5581\u5582\u5586\u5588\u558E\u558F\u5591\u5592\u5593\u5594\u5597\u55A3\u55A4\u55AD\u55B2\u55BF\u55C1\u55C3\u55C6\u55C9\u55CB\u55CC\u55CE\u55D1\u55D2"], ["8fb6a1", "\u55D3\u55D7\u55D8\u55DB\u55DE\u55E2\u55E9\u55F6\u55FF\u5605\u5608\u560A\u560D", 5, "\u5619\u562C\u5630\u5633\u5635\u5637\u5639\u563B\u563C\u563D\u563F\u5640\u5641\u5643\u5644\u5646\u5649\u564B\u564D\u564F\u5654\u565E\u5660\u5661\u5662\u5663\u5666\u5669\u566D\u566F\u5671\u5672\u5675\u5684\u5685\u5688\u568B\u568C\u5695\u5699\u569A\u569D\u569E\u569F\u56A6\u56A7\u56A8\u56A9\u56AB\u56AC\u56AD\u56B1\u56B3\u56B7\u56BE\u56C5\u56C9\u56CA\u56CB\u56CF\u56D0\u56CC\u56CD\u56D9\u56DC\u56DD\u56DF\u56E1\u56E4", 4, "\u56F1\u56EB\u56ED"], ["8fb7a1", "\u56F6\u56F7\u5701\u5702\u5707\u570A\u570C\u5711\u5715\u571A\u571B\u571D\u5720\u5722\u5723\u5724\u5725\u5729\u572A\u572C\u572E\u572F\u5733\u5734\u573D\u573E\u573F\u5745\u5746\u574C\u574D\u5752\u5762\u5765\u5767\u5768\u576B\u576D", 4, "\u5773\u5774\u5775\u5777\u5779\u577A\u577B\u577C\u577E\u5781\u5783\u578C\u5794\u5797\u5799\u579A\u579C\u579D\u579E\u579F\u57A1\u5795\u57A7\u57A8\u57A9\u57AC\u57B8\u57BD\u57C7\u57C8\u57CC\u57CF\u57D5\u57DD\u57DE\u57E4\u57E6\u57E7\u57E9\u57ED\u57F0\u57F5\u57F6\u57F8\u57FD\u57FE\u57FF\u5803\u5804\u5808\u5809\u57E1"], ["8fb8a1", "\u580C\u580D\u581B\u581E\u581F\u5820\u5826\u5827\u582D\u5832\u5839\u583F\u5849\u584C\u584D\u584F\u5850\u5855\u585F\u5861\u5864\u5867\u5868\u5878\u587C\u587F\u5880\u5881\u5887\u5888\u5889\u588A\u588C\u588D\u588F\u5890\u5894\u5896\u589D\u58A0\u58A1\u58A2\u58A6\u58A9\u58B1\u58B2\u58C4\u58BC\u58C2\u58C8\u58CD\u58CE\u58D0\u58D2\u58D4\u58D6\u58DA\u58DD\u58E1\u58E2\u58E9\u58F3\u5905\u5906\u590B\u590C\u5912\u5913\u5914\u8641\u591D\u5921\u5923\u5924\u5928\u592F\u5930\u5933\u5935\u5936\u593F\u5943\u5946\u5952\u5953\u5959\u595B\u595D\u595E\u595F\u5961\u5963\u596B\u596D"], ["8fb9a1", "\u596F\u5972\u5975\u5976\u5979\u597B\u597C\u598B\u598C\u598E\u5992\u5995\u5997\u599F\u59A4\u59A7\u59AD\u59AE\u59AF\u59B0\u59B3\u59B7\u59BA\u59BC\u59C1\u59C3\u59C4\u59C8\u59CA\u59CD\u59D2\u59DD\u59DE\u59DF\u59E3\u59E4\u59E7\u59EE\u59EF\u59F1\u59F2\u59F4\u59F7\u5A00\u5A04\u5A0C\u5A0D\u5A0E\u5A12\u5A13\u5A1E\u5A23\u5A24\u5A27\u5A28\u5A2A\u5A2D\u5A30\u5A44\u5A45\u5A47\u5A48\u5A4C\u5A50\u5A55\u5A5E\u5A63\u5A65\u5A67\u5A6D\u5A77\u5A7A\u5A7B\u5A7E\u5A8B\u5A90\u5A93\u5A96\u5A99\u5A9C\u5A9E\u5A9F\u5AA0\u5AA2\u5AA7\u5AAC\u5AB1\u5AB2\u5AB3\u5AB5\u5AB8\u5ABA\u5ABB\u5ABF"], ["8fbaa1", "\u5AC4\u5AC6\u5AC8\u5ACF\u5ADA\u5ADC\u5AE0\u5AE5\u5AEA\u5AEE\u5AF5\u5AF6\u5AFD\u5B00\u5B01\u5B08\u5B17\u5B34\u5B19\u5B1B\u5B1D\u5B21\u5B25\u5B2D\u5B38\u5B41\u5B4B\u5B4C\u5B52\u5B56\u5B5E\u5B68\u5B6E\u5B6F\u5B7C\u5B7D\u5B7E\u5B7F\u5B81\u5B84\u5B86\u5B8A\u5B8E\u5B90\u5B91\u5B93\u5B94\u5B96\u5BA8\u5BA9\u5BAC\u5BAD\u5BAF\u5BB1\u5BB2\u5BB7\u5BBA\u5BBC\u5BC0\u5BC1\u5BCD\u5BCF\u5BD6", 4, "\u5BE0\u5BEF\u5BF1\u5BF4\u5BFD\u5C0C\u5C17\u5C1E\u5C1F\u5C23\u5C26\u5C29\u5C2B\u5C2C\u5C2E\u5C30\u5C32\u5C35\u5C36\u5C59\u5C5A\u5C5C\u5C62\u5C63\u5C67\u5C68\u5C69"], ["8fbba1", "\u5C6D\u5C70\u5C74\u5C75\u5C7A\u5C7B\u5C7C\u5C7D\u5C87\u5C88\u5C8A\u5C8F\u5C92\u5C9D\u5C9F\u5CA0\u5CA2\u5CA3\u5CA6\u5CAA\u5CB2\u5CB4\u5CB5\u5CBA\u5CC9\u5CCB\u5CD2\u5CDD\u5CD7\u5CEE\u5CF1\u5CF2\u5CF4\u5D01\u5D06\u5D0D\u5D12\u5D2B\u5D23\u5D24\u5D26\u5D27\u5D31\u5D34\u5D39\u5D3D\u5D3F\u5D42\u5D43\u5D46\u5D48\u5D55\u5D51\u5D59\u5D4A\u5D5F\u5D60\u5D61\u5D62\u5D64\u5D6A\u5D6D\u5D70\u5D79\u5D7A\u5D7E\u5D7F\u5D81\u5D83\u5D88\u5D8A\u5D92\u5D93\u5D94\u5D95\u5D99\u5D9B\u5D9F\u5DA0\u5DA7\u5DAB\u5DB0\u5DB4\u5DB8\u5DB9\u5DC3\u5DC7\u5DCB\u5DD0\u5DCE\u5DD8\u5DD9\u5DE0\u5DE4"], ["8fbca1", "\u5DE9\u5DF8\u5DF9\u5E00\u5E07\u5E0D\u5E12\u5E14\u5E15\u5E18\u5E1F\u5E20\u5E2E\u5E28\u5E32\u5E35\u5E3E\u5E4B\u5E50\u5E49\u5E51\u5E56\u5E58\u5E5B\u5E5C\u5E5E\u5E68\u5E6A", 4, "\u5E70\u5E80\u5E8B\u5E8E\u5EA2\u5EA4\u5EA5\u5EA8\u5EAA\u5EAC\u5EB1\u5EB3\u5EBD\u5EBE\u5EBF\u5EC6\u5ECC\u5ECB\u5ECE\u5ED1\u5ED2\u5ED4\u5ED5\u5EDC\u5EDE\u5EE5\u5EEB\u5F02\u5F06\u5F07\u5F08\u5F0E\u5F19\u5F1C\u5F1D\u5F21\u5F22\u5F23\u5F24\u5F28\u5F2B\u5F2C\u5F2E\u5F30\u5F34\u5F36\u5F3B\u5F3D\u5F3F\u5F40\u5F44\u5F45\u5F47\u5F4D\u5F50\u5F54\u5F58\u5F5B\u5F60\u5F63\u5F64\u5F67"], ["8fbda1", "\u5F6F\u5F72\u5F74\u5F75\u5F78\u5F7A\u5F7D\u5F7E\u5F89\u5F8D\u5F8F\u5F96\u5F9C\u5F9D\u5FA2\u5FA7\u5FAB\u5FA4\u5FAC\u5FAF\u5FB0\u5FB1\u5FB8\u5FC4\u5FC7\u5FC8\u5FC9\u5FCB\u5FD0", 4, "\u5FDE\u5FE1\u5FE2\u5FE8\u5FE9\u5FEA\u5FEC\u5FED\u5FEE\u5FEF\u5FF2\u5FF3\u5FF6\u5FFA\u5FFC\u6007\u600A\u600D\u6013\u6014\u6017\u6018\u601A\u601F\u6024\u602D\u6033\u6035\u6040\u6047\u6048\u6049\u604C\u6051\u6054\u6056\u6057\u605D\u6061\u6067\u6071\u607E\u607F\u6082\u6086\u6088\u608A\u608E\u6091\u6093\u6095\u6098\u609D\u609E\u60A2\u60A4\u60A5\u60A8\u60B0\u60B1\u60B7"], ["8fbea1", "\u60BB\u60BE\u60C2\u60C4\u60C8\u60C9\u60CA\u60CB\u60CE\u60CF\u60D4\u60D5\u60D9\u60DB\u60DD\u60DE\u60E2\u60E5\u60F2\u60F5\u60F8\u60FC\u60FD\u6102\u6107\u610A\u610C\u6110", 4, "\u6116\u6117\u6119\u611C\u611E\u6122\u612A\u612B\u6130\u6131\u6135\u6136\u6137\u6139\u6141\u6145\u6146\u6149\u615E\u6160\u616C\u6172\u6178\u617B\u617C\u617F\u6180\u6181\u6183\u6184\u618B\u618D\u6192\u6193\u6197\u6198\u619C\u619D\u619F\u61A0\u61A5\u61A8\u61AA\u61AD\u61B8\u61B9\u61BC\u61C0\u61C1\u61C2\u61CE\u61CF\u61D5\u61DC\u61DD\u61DE\u61DF\u61E1\u61E2\u61E7\u61E9\u61E5"], ["8fbfa1", "\u61EC\u61ED\u61EF\u6201\u6203\u6204\u6207\u6213\u6215\u621C\u6220\u6222\u6223\u6227\u6229\u622B\u6239\u623D\u6242\u6243\u6244\u6246\u624C\u6250\u6251\u6252\u6254\u6256\u625A\u625C\u6264\u626D\u626F\u6273\u627A\u627D\u628D\u628E\u628F\u6290\u62A6\u62A8\u62B3\u62B6\u62B7\u62BA\u62BE\u62BF\u62C4\u62CE\u62D5\u62D6\u62DA\u62EA\u62F2\u62F4\u62FC\u62FD\u6303\u6304\u630A\u630B\u630D\u6310\u6313\u6316\u6318\u6329\u632A\u632D\u6335\u6336\u6339\u633C\u6341\u6342\u6343\u6344\u6346\u634A\u634B\u634E\u6352\u6353\u6354\u6358\u635B\u6365\u6366\u636C\u636D\u6371\u6374\u6375"], ["8fc0a1", "\u6378\u637C\u637D\u637F\u6382\u6384\u6387\u638A\u6390\u6394\u6395\u6399\u639A\u639E\u63A4\u63A6\u63AD\u63AE\u63AF\u63BD\u63C1\u63C5\u63C8\u63CE\u63D1\u63D3\u63D4\u63D5\u63DC\u63E0\u63E5\u63EA\u63EC\u63F2\u63F3\u63F5\u63F8\u63F9\u6409\u640A\u6410\u6412\u6414\u6418\u641E\u6420\u6422\u6424\u6425\u6429\u642A\u642F\u6430\u6435\u643D\u643F\u644B\u644F\u6451\u6452\u6453\u6454\u645A\u645B\u645C\u645D\u645F\u6460\u6461\u6463\u646D\u6473\u6474\u647B\u647D\u6485\u6487\u648F\u6490\u6491\u6498\u6499\u649B\u649D\u649F\u64A1\u64A3\u64A6\u64A8\u64AC\u64B3\u64BD\u64BE\u64BF"], ["8fc1a1", "\u64C4\u64C9\u64CA\u64CB\u64CC\u64CE\u64D0\u64D1\u64D5\u64D7\u64E4\u64E5\u64E9\u64EA\u64ED\u64F0\u64F5\u64F7\u64FB\u64FF\u6501\u6504\u6508\u6509\u650A\u650F\u6513\u6514\u6516\u6519\u651B\u651E\u651F\u6522\u6526\u6529\u652E\u6531\u653A\u653C\u653D\u6543\u6547\u6549\u6550\u6552\u6554\u655F\u6560\u6567\u656B\u657A\u657D\u6581\u6585\u658A\u6592\u6595\u6598\u659D\u65A0\u65A3\u65A6\u65AE\u65B2\u65B3\u65B4\u65BF\u65C2\u65C8\u65C9\u65CE\u65D0\u65D4\u65D6\u65D8\u65DF\u65F0\u65F2\u65F4\u65F5\u65F9\u65FE\u65FF\u6600\u6604\u6608\u6609\u660D\u6611\u6612\u6615\u6616\u661D"], ["8fc2a1", "\u661E\u6621\u6622\u6623\u6624\u6626\u6629\u662A\u662B\u662C\u662E\u6630\u6631\u6633\u6639\u6637\u6640\u6645\u6646\u664A\u664C\u6651\u664E\u6657\u6658\u6659\u665B\u665C\u6660\u6661\u66FB\u666A\u666B\u666C\u667E\u6673\u6675\u667F\u6677\u6678\u6679\u667B\u6680\u667C\u668B\u668C\u668D\u6690\u6692\u6699\u669A\u669B\u669C\u669F\u66A0\u66A4\u66AD\u66B1\u66B2\u66B5\u66BB\u66BF\u66C0\u66C2\u66C3\u66C8\u66CC\u66CE\u66CF\u66D4\u66DB\u66DF\u66E8\u66EB\u66EC\u66EE\u66FA\u6705\u6707\u670E\u6713\u6719\u671C\u6720\u6722\u6733\u673E\u6745\u6747\u6748\u674C\u6754\u6755\u675D"], ["8fc3a1", "\u6766\u676C\u676E\u6774\u6776\u677B\u6781\u6784\u678E\u678F\u6791\u6793\u6796\u6798\u6799\u679B\u67B0\u67B1\u67B2\u67B5\u67BB\u67BC\u67BD\u67F9\u67C0\u67C2\u67C3\u67C5\u67C8\u67C9\u67D2\u67D7\u67D9\u67DC\u67E1\u67E6\u67F0\u67F2\u67F6\u67F7\u6852\u6814\u6819\u681D\u681F\u6828\u6827\u682C\u682D\u682F\u6830\u6831\u6833\u683B\u683F\u6844\u6845\u684A\u684C\u6855\u6857\u6858\u685B\u686B\u686E", 4, "\u6875\u6879\u687A\u687B\u687C\u6882\u6884\u6886\u6888\u6896\u6898\u689A\u689C\u68A1\u68A3\u68A5\u68A9\u68AA\u68AE\u68B2\u68BB\u68C5\u68C8\u68CC\u68CF"], ["8fc4a1", "\u68D0\u68D1\u68D3\u68D6\u68D9\u68DC\u68DD\u68E5\u68E8\u68EA\u68EB\u68EC\u68ED\u68F0\u68F1\u68F5\u68F6\u68FB\u68FC\u68FD\u6906\u6909\u690A\u6910\u6911\u6913\u6916\u6917\u6931\u6933\u6935\u6938\u693B\u6942\u6945\u6949\u694E\u6957\u695B\u6963\u6964\u6965\u6966\u6968\u6969\u696C\u6970\u6971\u6972\u697A\u697B\u697F\u6980\u698D\u6992\u6996\u6998\u69A1\u69A5\u69A6\u69A8\u69AB\u69AD\u69AF\u69B7\u69B8\u69BA\u69BC\u69C5\u69C8\u69D1\u69D6\u69D7\u69E2\u69E5\u69EE\u69EF\u69F1\u69F3\u69F5\u69FE\u6A00\u6A01\u6A03\u6A0F\u6A11\u6A15\u6A1A\u6A1D\u6A20\u6A24\u6A28\u6A30\u6A32"], ["8fc5a1", "\u6A34\u6A37\u6A3B\u6A3E\u6A3F\u6A45\u6A46\u6A49\u6A4A\u6A4E\u6A50\u6A51\u6A52\u6A55\u6A56\u6A5B\u6A64\u6A67\u6A6A\u6A71\u6A73\u6A7E\u6A81\u6A83\u6A86\u6A87\u6A89\u6A8B\u6A91\u6A9B\u6A9D\u6A9E\u6A9F\u6AA5\u6AAB\u6AAF\u6AB0\u6AB1\u6AB4\u6ABD\u6ABE\u6ABF\u6AC6\u6AC9\u6AC8\u6ACC\u6AD0\u6AD4\u6AD5\u6AD6\u6ADC\u6ADD\u6AE4\u6AE7\u6AEC\u6AF0\u6AF1\u6AF2\u6AFC\u6AFD\u6B02\u6B03\u6B06\u6B07\u6B09\u6B0F\u6B10\u6B11\u6B17\u6B1B\u6B1E\u6B24\u6B28\u6B2B\u6B2C\u6B2F\u6B35\u6B36\u6B3B\u6B3F\u6B46\u6B4A\u6B4D\u6B52\u6B56\u6B58\u6B5D\u6B60\u6B67\u6B6B\u6B6E\u6B70\u6B75\u6B7D"], ["8fc6a1", "\u6B7E\u6B82\u6B85\u6B97\u6B9B\u6B9F\u6BA0\u6BA2\u6BA3\u6BA8\u6BA9\u6BAC\u6BAD\u6BAE\u6BB0\u6BB8\u6BB9\u6BBD\u6BBE\u6BC3\u6BC4\u6BC9\u6BCC\u6BD6\u6BDA\u6BE1\u6BE3\u6BE6\u6BE7\u6BEE\u6BF1\u6BF7\u6BF9\u6BFF\u6C02\u6C04\u6C05\u6C09\u6C0D\u6C0E\u6C10\u6C12\u6C19\u6C1F\u6C26\u6C27\u6C28\u6C2C\u6C2E\u6C33\u6C35\u6C36\u6C3A\u6C3B\u6C3F\u6C4A\u6C4B\u6C4D\u6C4F\u6C52\u6C54\u6C59\u6C5B\u6C5C\u6C6B\u6C6D\u6C6F\u6C74\u6C76\u6C78\u6C79\u6C7B\u6C85\u6C86\u6C87\u6C89\u6C94\u6C95\u6C97\u6C98\u6C9C\u6C9F\u6CB0\u6CB2\u6CB4\u6CC2\u6CC6\u6CCD\u6CCF\u6CD0\u6CD1\u6CD2\u6CD4\u6CD6"], ["8fc7a1", "\u6CDA\u6CDC\u6CE0\u6CE7\u6CE9\u6CEB\u6CEC\u6CEE\u6CF2\u6CF4\u6D04\u6D07\u6D0A\u6D0E\u6D0F\u6D11\u6D13\u6D1A\u6D26\u6D27\u6D28\u6C67\u6D2E\u6D2F\u6D31\u6D39\u6D3C\u6D3F\u6D57\u6D5E\u6D5F\u6D61\u6D65\u6D67\u6D6F\u6D70\u6D7C\u6D82\u6D87\u6D91\u6D92\u6D94\u6D96\u6D97\u6D98\u6DAA\u6DAC\u6DB4\u6DB7\u6DB9\u6DBD\u6DBF\u6DC4\u6DC8\u6DCA\u6DCE\u6DCF\u6DD6\u6DDB\u6DDD\u6DDF\u6DE0\u6DE2\u6DE5\u6DE9\u6DEF\u6DF0\u6DF4\u6DF6\u6DFC\u6E00\u6E04\u6E1E\u6E22\u6E27\u6E32\u6E36\u6E39\u6E3B\u6E3C\u6E44\u6E45\u6E48\u6E49\u6E4B\u6E4F\u6E51\u6E52\u6E53\u6E54\u6E57\u6E5C\u6E5D\u6E5E"], ["8fc8a1", "\u6E62\u6E63\u6E68\u6E73\u6E7B\u6E7D\u6E8D\u6E93\u6E99\u6EA0\u6EA7\u6EAD\u6EAE\u6EB1\u6EB3\u6EBB\u6EBF\u6EC0\u6EC1\u6EC3\u6EC7\u6EC8\u6ECA\u6ECD\u6ECE\u6ECF\u6EEB\u6EED\u6EEE\u6EF9\u6EFB\u6EFD\u6F04\u6F08\u6F0A\u6F0C\u6F0D\u6F16\u6F18\u6F1A\u6F1B\u6F26\u6F29\u6F2A\u6F2F\u6F30\u6F33\u6F36\u6F3B\u6F3C\u6F2D\u6F4F\u6F51\u6F52\u6F53\u6F57\u6F59\u6F5A\u6F5D\u6F5E\u6F61\u6F62\u6F68\u6F6C\u6F7D\u6F7E\u6F83\u6F87\u6F88\u6F8B\u6F8C\u6F8D\u6F90\u6F92\u6F93\u6F94\u6F96\u6F9A\u6F9F\u6FA0\u6FA5\u6FA6\u6FA7\u6FA8\u6FAE\u6FAF\u6FB0\u6FB5\u6FB6\u6FBC\u6FC5\u6FC7\u6FC8\u6FCA"], ["8fc9a1", "\u6FDA\u6FDE\u6FE8\u6FE9\u6FF0\u6FF5\u6FF9\u6FFC\u6FFD\u7000\u7005\u7006\u7007\u700D\u7017\u7020\u7023\u702F\u7034\u7037\u7039\u703C\u7043\u7044\u7048\u7049\u704A\u704B\u7054\u7055\u705D\u705E\u704E\u7064\u7065\u706C\u706E\u7075\u7076\u707E\u7081\u7085\u7086\u7094", 4, "\u709B\u70A4\u70AB\u70B0\u70B1\u70B4\u70B7\u70CA\u70D1\u70D3\u70D4\u70D5\u70D6\u70D8\u70DC\u70E4\u70FA\u7103", 4, "\u710B\u710C\u710F\u711E\u7120\u712B\u712D\u712F\u7130\u7131\u7138\u7141\u7145\u7146\u7147\u714A\u714B\u7150\u7152\u7157\u715A\u715C\u715E\u7160"], ["8fcaa1", "\u7168\u7179\u7180\u7185\u7187\u718C\u7192\u719A\u719B\u71A0\u71A2\u71AF\u71B0\u71B2\u71B3\u71BA\u71BF\u71C0\u71C1\u71C4\u71CB\u71CC\u71D3\u71D6\u71D9\u71DA\u71DC\u71F8\u71FE\u7200\u7207\u7208\u7209\u7213\u7217\u721A\u721D\u721F\u7224\u722B\u722F\u7234\u7238\u7239\u7241\u7242\u7243\u7245\u724E\u724F\u7250\u7253\u7255\u7256\u725A\u725C\u725E\u7260\u7263\u7268\u726B\u726E\u726F\u7271\u7277\u7278\u727B\u727C\u727F\u7284\u7289\u728D\u728E\u7293\u729B\u72A8\u72AD\u72AE\u72B1\u72B4\u72BE\u72C1\u72C7\u72C9\u72CC\u72D5\u72D6\u72D8\u72DF\u72E5\u72F3\u72F4\u72FA\u72FB"], ["8fcba1", "\u72FE\u7302\u7304\u7305\u7307\u730B\u730D\u7312\u7313\u7318\u7319\u731E\u7322\u7324\u7327\u7328\u732C\u7331\u7332\u7335\u733A\u733B\u733D\u7343\u734D\u7350\u7352\u7356\u7358\u735D\u735E\u735F\u7360\u7366\u7367\u7369\u736B\u736C\u736E\u736F\u7371\u7377\u7379\u737C\u7380\u7381\u7383\u7385\u7386\u738E\u7390\u7393\u7395\u7397\u7398\u739C\u739E\u739F\u73A0\u73A2\u73A5\u73A6\u73AA\u73AB\u73AD\u73B5\u73B7\u73B9\u73BC\u73BD\u73BF\u73C5\u73C6\u73C9\u73CB\u73CC\u73CF\u73D2\u73D3\u73D6\u73D9\u73DD\u73E1\u73E3\u73E6\u73E7\u73E9\u73F4\u73F5\u73F7\u73F9\u73FA\u73FB\u73FD"], ["8fcca1", "\u73FF\u7400\u7401\u7404\u7407\u740A\u7411\u741A\u741B\u7424\u7426\u7428", 9, "\u7439\u7440\u7443\u7444\u7446\u7447\u744B\u744D\u7451\u7452\u7457\u745D\u7462\u7466\u7467\u7468\u746B\u746D\u746E\u7471\u7472\u7480\u7481\u7485\u7486\u7487\u7489\u748F\u7490\u7491\u7492\u7498\u7499\u749A\u749C\u749F\u74A0\u74A1\u74A3\u74A6\u74A8\u74A9\u74AA\u74AB\u74AE\u74AF\u74B1\u74B2\u74B5\u74B9\u74BB\u74BF\u74C8\u74C9\u74CC\u74D0\u74D3\u74D8\u74DA\u74DB\u74DE\u74DF\u74E4\u74E8\u74EA\u74EB\u74EF\u74F4\u74FA\u74FB\u74FC\u74FF\u7506"], ["8fcda1", "\u7512\u7516\u7517\u7520\u7521\u7524\u7527\u7529\u752A\u752F\u7536\u7539\u753D\u753E\u753F\u7540\u7543\u7547\u7548\u754E\u7550\u7552\u7557\u755E\u755F\u7561\u756F\u7571\u7579", 5, "\u7581\u7585\u7590\u7592\u7593\u7595\u7599\u759C\u75A2\u75A4\u75B4\u75BA\u75BF\u75C0\u75C1\u75C4\u75C6\u75CC\u75CE\u75CF\u75D7\u75DC\u75DF\u75E0\u75E1\u75E4\u75E7\u75EC\u75EE\u75EF\u75F1\u75F9\u7600\u7602\u7603\u7604\u7607\u7608\u760A\u760C\u760F\u7612\u7613\u7615\u7616\u7619\u761B\u761C\u761D\u761E\u7623\u7625\u7626\u7629\u762D\u7632\u7633\u7635\u7638\u7639"], ["8fcea1", "\u763A\u763C\u764A\u7640\u7641\u7643\u7644\u7645\u7649\u764B\u7655\u7659\u765F\u7664\u7665\u766D\u766E\u766F\u7671\u7674\u7681\u7685\u768C\u768D\u7695\u769B\u769C\u769D\u769F\u76A0\u76A2", 6, "\u76AA\u76AD\u76BD\u76C1\u76C5\u76C9\u76CB\u76CC\u76CE\u76D4\u76D9\u76E0\u76E6\u76E8\u76EC\u76F0\u76F1\u76F6\u76F9\u76FC\u7700\u7706\u770A\u770E\u7712\u7714\u7715\u7717\u7719\u771A\u771C\u7722\u7728\u772D\u772E\u772F\u7734\u7735\u7736\u7739\u773D\u773E\u7742\u7745\u7746\u774A\u774D\u774E\u774F\u7752\u7756\u7757\u775C\u775E\u775F\u7760\u7762"], ["8fcfa1", "\u7764\u7767\u776A\u776C\u7770\u7772\u7773\u7774\u777A\u777D\u7780\u7784\u778C\u778D\u7794\u7795\u7796\u779A\u779F\u77A2\u77A7\u77AA\u77AE\u77AF\u77B1\u77B5\u77BE\u77C3\u77C9\u77D1\u77D2\u77D5\u77D9\u77DE\u77DF\u77E0\u77E4\u77E6\u77EA\u77EC\u77F0\u77F1\u77F4\u77F8\u77FB\u7805\u7806\u7809\u780D\u780E\u7811\u781D\u7821\u7822\u7823\u782D\u782E\u7830\u7835\u7837\u7843\u7844\u7847\u7848\u784C\u784E\u7852\u785C\u785E\u7860\u7861\u7863\u7864\u7868\u786A\u786E\u787A\u787E\u788A\u788F\u7894\u7898\u78A1\u789D\u789E\u789F\u78A4\u78A8\u78AC\u78AD\u78B0\u78B1\u78B2\u78B3"], ["8fd0a1", "\u78BB\u78BD\u78BF\u78C7\u78C8\u78C9\u78CC\u78CE\u78D2\u78D3\u78D5\u78D6\u78E4\u78DB\u78DF\u78E0\u78E1\u78E6\u78EA\u78F2\u78F3\u7900\u78F6\u78F7\u78FA\u78FB\u78FF\u7906\u790C\u7910\u791A\u791C\u791E\u791F\u7920\u7925\u7927\u7929\u792D\u7931\u7934\u7935\u793B\u793D\u793F\u7944\u7945\u7946\u794A\u794B\u794F\u7951\u7954\u7958\u795B\u795C\u7967\u7969\u796B\u7972\u7979\u797B\u797C\u797E\u798B\u798C\u7991\u7993\u7994\u7995\u7996\u7998\u799B\u799C\u79A1\u79A8\u79A9\u79AB\u79AF\u79B1\u79B4\u79B8\u79BB\u79C2\u79C4\u79C7\u79C8\u79CA\u79CF\u79D4\u79D6\u79DA\u79DD\u79DE"], ["8fd1a1", "\u79E0\u79E2\u79E5\u79EA\u79EB\u79ED\u79F1\u79F8\u79FC\u7A02\u7A03\u7A07\u7A09\u7A0A\u7A0C\u7A11\u7A15\u7A1B\u7A1E\u7A21\u7A27\u7A2B\u7A2D\u7A2F\u7A30\u7A34\u7A35\u7A38\u7A39\u7A3A\u7A44\u7A45\u7A47\u7A48\u7A4C\u7A55\u7A56\u7A59\u7A5C\u7A5D\u7A5F\u7A60\u7A65\u7A67\u7A6A\u7A6D\u7A75\u7A78\u7A7E\u7A80\u7A82\u7A85\u7A86\u7A8A\u7A8B\u7A90\u7A91\u7A94\u7A9E\u7AA0\u7AA3\u7AAC\u7AB3\u7AB5\u7AB9\u7ABB\u7ABC\u7AC6\u7AC9\u7ACC\u7ACE\u7AD1\u7ADB\u7AE8\u7AE9\u7AEB\u7AEC\u7AF1\u7AF4\u7AFB\u7AFD\u7AFE\u7B07\u7B14\u7B1F\u7B23\u7B27\u7B29\u7B2A\u7B2B\u7B2D\u7B2E\u7B2F\u7B30"], ["8fd2a1", "\u7B31\u7B34\u7B3D\u7B3F\u7B40\u7B41\u7B47\u7B4E\u7B55\u7B60\u7B64\u7B66\u7B69\u7B6A\u7B6D\u7B6F\u7B72\u7B73\u7B77\u7B84\u7B89\u7B8E\u7B90\u7B91\u7B96\u7B9B\u7B9E\u7BA0\u7BA5\u7BAC\u7BAF\u7BB0\u7BB2\u7BB5\u7BB6\u7BBA\u7BBB\u7BBC\u7BBD\u7BC2\u7BC5\u7BC8\u7BCA\u7BD4\u7BD6\u7BD7\u7BD9\u7BDA\u7BDB\u7BE8\u7BEA\u7BF2\u7BF4\u7BF5\u7BF8\u7BF9\u7BFA\u7BFC\u7BFE\u7C01\u7C02\u7C03\u7C04\u7C06\u7C09\u7C0B\u7C0C\u7C0E\u7C0F\u7C19\u7C1B\u7C20\u7C25\u7C26\u7C28\u7C2C\u7C31\u7C33\u7C34\u7C36\u7C39\u7C3A\u7C46\u7C4A\u7C55\u7C51\u7C52\u7C53\u7C59", 5], ["8fd3a1", "\u7C61\u7C63\u7C67\u7C69\u7C6D\u7C6E\u7C70\u7C72\u7C79\u7C7C\u7C7D\u7C86\u7C87\u7C8F\u7C94\u7C9E\u7CA0\u7CA6\u7CB0\u7CB6\u7CB7\u7CBA\u7CBB\u7CBC\u7CBF\u7CC4\u7CC7\u7CC8\u7CC9\u7CCD\u7CCF\u7CD3\u7CD4\u7CD5\u7CD7\u7CD9\u7CDA\u7CDD\u7CE6\u7CE9\u7CEB\u7CF5\u7D03\u7D07\u7D08\u7D09\u7D0F\u7D11\u7D12\u7D13\u7D16\u7D1D\u7D1E\u7D23\u7D26\u7D2A\u7D2D\u7D31\u7D3C\u7D3D\u7D3E\u7D40\u7D41\u7D47\u7D48\u7D4D\u7D51\u7D53\u7D57\u7D59\u7D5A\u7D5C\u7D5D\u7D65\u7D67\u7D6A\u7D70\u7D78\u7D7A\u7D7B\u7D7F\u7D81\u7D82\u7D83\u7D85\u7D86\u7D88\u7D8B\u7D8C\u7D8D\u7D91\u7D96\u7D97\u7D9D"], ["8fd4a1", "\u7D9E\u7DA6\u7DA7\u7DAA\u7DB3\u7DB6\u7DB7\u7DB9\u7DC2", 4, "\u7DCC\u7DCD\u7DCE\u7DD7\u7DD9\u7E00\u7DE2\u7DE5\u7DE6\u7DEA\u7DEB\u7DED\u7DF1\u7DF5\u7DF6\u7DF9\u7DFA\u7E08\u7E10\u7E11\u7E15\u7E17\u7E1C\u7E1D\u7E20\u7E27\u7E28\u7E2C\u7E2D\u7E2F\u7E33\u7E36\u7E3F\u7E44\u7E45\u7E47\u7E4E\u7E50\u7E52\u7E58\u7E5F\u7E61\u7E62\u7E65\u7E6B\u7E6E\u7E6F\u7E73\u7E78\u7E7E\u7E81\u7E86\u7E87\u7E8A\u7E8D\u7E91\u7E95\u7E98\u7E9A\u7E9D\u7E9E\u7F3C\u7F3B\u7F3D\u7F3E\u7F3F\u7F43\u7F44\u7F47\u7F4F\u7F52\u7F53\u7F5B\u7F5C\u7F5D\u7F61\u7F63\u7F64\u7F65\u7F66\u7F6D"], ["8fd5a1", "\u7F71\u7F7D\u7F7E\u7F7F\u7F80\u7F8B\u7F8D\u7F8F\u7F90\u7F91\u7F96\u7F97\u7F9C\u7FA1\u7FA2\u7FA6\u7FAA\u7FAD\u7FB4\u7FBC\u7FBF\u7FC0\u7FC3\u7FC8\u7FCE\u7FCF\u7FDB\u7FDF\u7FE3\u7FE5\u7FE8\u7FEC\u7FEE\u7FEF\u7FF2\u7FFA\u7FFD\u7FFE\u7FFF\u8007\u8008\u800A\u800D\u800E\u800F\u8011\u8013\u8014\u8016\u801D\u801E\u801F\u8020\u8024\u8026\u802C\u802E\u8030\u8034\u8035\u8037\u8039\u803A\u803C\u803E\u8040\u8044\u8060\u8064\u8066\u806D\u8071\u8075\u8081\u8088\u808E\u809C\u809E\u80A6\u80A7\u80AB\u80B8\u80B9\u80C8\u80CD\u80CF\u80D2\u80D4\u80D5\u80D7\u80D8\u80E0\u80ED\u80EE"], ["8fd6a1", "\u80F0\u80F2\u80F3\u80F6\u80F9\u80FA\u80FE\u8103\u810B\u8116\u8117\u8118\u811C\u811E\u8120\u8124\u8127\u812C\u8130\u8135\u813A\u813C\u8145\u8147\u814A\u814C\u8152\u8157\u8160\u8161\u8167\u8168\u8169\u816D\u816F\u8177\u8181\u8190\u8184\u8185\u8186\u818B\u818E\u8196\u8198\u819B\u819E\u81A2\u81AE\u81B2\u81B4\u81BB\u81CB\u81C3\u81C5\u81CA\u81CE\u81CF\u81D5\u81D7\u81DB\u81DD\u81DE\u81E1\u81E4\u81EB\u81EC\u81F0\u81F1\u81F2\u81F5\u81F6\u81F8\u81F9\u81FD\u81FF\u8200\u8203\u820F\u8213\u8214\u8219\u821A\u821D\u8221\u8222\u8228\u8232\u8234\u823A\u8243\u8244\u8245\u8246"], ["8fd7a1", "\u824B\u824E\u824F\u8251\u8256\u825C\u8260\u8263\u8267\u826D\u8274\u827B\u827D\u827F\u8280\u8281\u8283\u8284\u8287\u8289\u828A\u828E\u8291\u8294\u8296\u8298\u829A\u829B\u82A0\u82A1\u82A3\u82A4\u82A7\u82A8\u82A9\u82AA\u82AE\u82B0\u82B2\u82B4\u82B7\u82BA\u82BC\u82BE\u82BF\u82C6\u82D0\u82D5\u82DA\u82E0\u82E2\u82E4\u82E8\u82EA\u82ED\u82EF\u82F6\u82F7\u82FD\u82FE\u8300\u8301\u8307\u8308\u830A\u830B\u8354\u831B\u831D\u831E\u831F\u8321\u8322\u832C\u832D\u832E\u8330\u8333\u8337\u833A\u833C\u833D\u8342\u8343\u8344\u8347\u834D\u834E\u8351\u8355\u8356\u8357\u8370\u8378"], ["8fd8a1", "\u837D\u837F\u8380\u8382\u8384\u8386\u838D\u8392\u8394\u8395\u8398\u8399\u839B\u839C\u839D\u83A6\u83A7\u83A9\u83AC\u83BE\u83BF\u83C0\u83C7\u83C9\u83CF\u83D0\u83D1\u83D4\u83DD\u8353\u83E8\u83EA\u83F6\u83F8\u83F9\u83FC\u8401\u8406\u840A\u840F\u8411\u8415\u8419\u83AD\u842F\u8439\u8445\u8447\u8448\u844A\u844D\u844F\u8451\u8452\u8456\u8458\u8459\u845A\u845C\u8460\u8464\u8465\u8467\u846A\u8470\u8473\u8474\u8476\u8478\u847C\u847D\u8481\u8485\u8492\u8493\u8495\u849E\u84A6\u84A8\u84A9\u84AA\u84AF\u84B1\u84B4\u84BA\u84BD\u84BE\u84C0\u84C2\u84C7\u84C8\u84CC\u84CF\u84D3"], ["8fd9a1", "\u84DC\u84E7\u84EA\u84EF\u84F0\u84F1\u84F2\u84F7\u8532\u84FA\u84FB\u84FD\u8502\u8503\u8507\u850C\u850E\u8510\u851C\u851E\u8522\u8523\u8524\u8525\u8527\u852A\u852B\u852F\u8533\u8534\u8536\u853F\u8546\u854F", 4, "\u8556\u8559\u855C", 6, "\u8564\u856B\u856F\u8579\u857A\u857B\u857D\u857F\u8581\u8585\u8586\u8589\u858B\u858C\u858F\u8593\u8598\u859D\u859F\u85A0\u85A2\u85A5\u85A7\u85B4\u85B6\u85B7\u85B8\u85BC\u85BD\u85BE\u85BF\u85C2\u85C7\u85CA\u85CB\u85CE\u85AD\u85D8\u85DA\u85DF\u85E0\u85E6\u85E8\u85ED\u85F3\u85F6\u85FC"], ["8fdaa1", "\u85FF\u8600\u8604\u8605\u860D\u860E\u8610\u8611\u8612\u8618\u8619\u861B\u861E\u8621\u8627\u8629\u8636\u8638\u863A\u863C\u863D\u8640\u8642\u8646\u8652\u8653\u8656\u8657\u8658\u8659\u865D\u8660", 4, "\u8669\u866C\u866F\u8675\u8676\u8677\u867A\u868D\u8691\u8696\u8698\u869A\u869C\u86A1\u86A6\u86A7\u86A8\u86AD\u86B1\u86B3\u86B4\u86B5\u86B7\u86B8\u86B9\u86BF\u86C0\u86C1\u86C3\u86C5\u86D1\u86D2\u86D5\u86D7\u86DA\u86DC\u86E0\u86E3\u86E5\u86E7\u8688\u86FA\u86FC\u86FD\u8704\u8705\u8707\u870B\u870E\u870F\u8710\u8713\u8714\u8719\u871E\u871F\u8721\u8723"], ["8fdba1", "\u8728\u872E\u872F\u8731\u8732\u8739\u873A\u873C\u873D\u873E\u8740\u8743\u8745\u874D\u8758\u875D\u8761\u8764\u8765\u876F\u8771\u8772\u877B\u8783", 6, "\u878B\u878C\u8790\u8793\u8795\u8797\u8798\u8799\u879E\u87A0\u87A3\u87A7\u87AC\u87AD\u87AE\u87B1\u87B5\u87BE\u87BF\u87C1\u87C8\u87C9\u87CA\u87CE\u87D5\u87D6\u87D9\u87DA\u87DC\u87DF\u87E2\u87E3\u87E4\u87EA\u87EB\u87ED\u87F1\u87F3\u87F8\u87FA\u87FF\u8801\u8803\u8806\u8809\u880A\u880B\u8810\u8819\u8812\u8813\u8814\u8818\u881A\u881B\u881C\u881E\u881F\u8828\u882D\u882E\u8830\u8832\u8835"], ["8fdca1", "\u883A\u883C\u8841\u8843\u8845\u8848\u8849\u884A\u884B\u884E\u8851\u8855\u8856\u8858\u885A\u885C\u885F\u8860\u8864\u8869\u8871\u8879\u887B\u8880\u8898\u889A\u889B\u889C\u889F\u88A0\u88A8\u88AA\u88BA\u88BD\u88BE\u88C0\u88CA", 4, "\u88D1\u88D2\u88D3\u88DB\u88DE\u88E7\u88EF\u88F0\u88F1\u88F5\u88F7\u8901\u8906\u890D\u890E\u890F\u8915\u8916\u8918\u8919\u891A\u891C\u8920\u8926\u8927\u8928\u8930\u8931\u8932\u8935\u8939\u893A\u893E\u8940\u8942\u8945\u8946\u8949\u894F\u8952\u8957\u895A\u895B\u895C\u8961\u8962\u8963\u896B\u896E\u8970\u8973\u8975\u897A"], ["8fdda1", "\u897B\u897C\u897D\u8989\u898D\u8990\u8994\u8995\u899B\u899C\u899F\u89A0\u89A5\u89B0\u89B4\u89B5\u89B6\u89B7\u89BC\u89D4", 4, "\u89E5\u89E9\u89EB\u89ED\u89F1\u89F3\u89F6\u89F9\u89FD\u89FF\u8A04\u8A05\u8A07\u8A0F\u8A11\u8A12\u8A14\u8A15\u8A1E\u8A20\u8A22\u8A24\u8A26\u8A2B\u8A2C\u8A2F\u8A35\u8A37\u8A3D\u8A3E\u8A40\u8A43\u8A45\u8A47\u8A49\u8A4D\u8A4E\u8A53\u8A56\u8A57\u8A58\u8A5C\u8A5D\u8A61\u8A65\u8A67\u8A75\u8A76\u8A77\u8A79\u8A7A\u8A7B\u8A7E\u8A7F\u8A80\u8A83\u8A86\u8A8B\u8A8F\u8A90\u8A92\u8A96\u8A97\u8A99\u8A9F\u8AA7\u8AA9\u8AAE\u8AAF\u8AB3"], ["8fdea1", "\u8AB6\u8AB7\u8ABB\u8ABE\u8AC3\u8AC6\u8AC8\u8AC9\u8ACA\u8AD1\u8AD3\u8AD4\u8AD5\u8AD7\u8ADD\u8ADF\u8AEC\u8AF0\u8AF4\u8AF5\u8AF6\u8AFC\u8AFF\u8B05\u8B06\u8B0B\u8B11\u8B1C\u8B1E\u8B1F\u8B0A\u8B2D\u8B30\u8B37\u8B3C\u8B42", 4, "\u8B48\u8B52\u8B53\u8B54\u8B59\u8B4D\u8B5E\u8B63\u8B6D\u8B76\u8B78\u8B79\u8B7C\u8B7E\u8B81\u8B84\u8B85\u8B8B\u8B8D\u8B8F\u8B94\u8B95\u8B9C\u8B9E\u8B9F\u8C38\u8C39\u8C3D\u8C3E\u8C45\u8C47\u8C49\u8C4B\u8C4F\u8C51\u8C53\u8C54\u8C57\u8C58\u8C5B\u8C5D\u8C59\u8C63\u8C64\u8C66\u8C68\u8C69\u8C6D\u8C73\u8C75\u8C76\u8C7B\u8C7E\u8C86"], ["8fdfa1", "\u8C87\u8C8B\u8C90\u8C92\u8C93\u8C99\u8C9B\u8C9C\u8CA4\u8CB9\u8CBA\u8CC5\u8CC6\u8CC9\u8CCB\u8CCF\u8CD6\u8CD5\u8CD9\u8CDD\u8CE1\u8CE8\u8CEC\u8CEF\u8CF0\u8CF2\u8CF5\u8CF7\u8CF8\u8CFE\u8CFF\u8D01\u8D03\u8D09\u8D12\u8D17\u8D1B\u8D65\u8D69\u8D6C\u8D6E\u8D7F\u8D82\u8D84\u8D88\u8D8D\u8D90\u8D91\u8D95\u8D9E\u8D9F\u8DA0\u8DA6\u8DAB\u8DAC\u8DAF\u8DB2\u8DB5\u8DB7\u8DB9\u8DBB\u8DC0\u8DC5\u8DC6\u8DC7\u8DC8\u8DCA\u8DCE\u8DD1\u8DD4\u8DD5\u8DD7\u8DD9\u8DE4\u8DE5\u8DE7\u8DEC\u8DF0\u8DBC\u8DF1\u8DF2\u8DF4\u8DFD\u8E01\u8E04\u8E05\u8E06\u8E0B\u8E11\u8E14\u8E16\u8E20\u8E21\u8E22"], ["8fe0a1", "\u8E23\u8E26\u8E27\u8E31\u8E33\u8E36\u8E37\u8E38\u8E39\u8E3D\u8E40\u8E41\u8E4B\u8E4D\u8E4E\u8E4F\u8E54\u8E5B\u8E5C\u8E5D\u8E5E\u8E61\u8E62\u8E69\u8E6C\u8E6D\u8E6F\u8E70\u8E71\u8E79\u8E7A\u8E7B\u8E82\u8E83\u8E89\u8E90\u8E92\u8E95\u8E9A\u8E9B\u8E9D\u8E9E\u8EA2\u8EA7\u8EA9\u8EAD\u8EAE\u8EB3\u8EB5\u8EBA\u8EBB\u8EC0\u8EC1\u8EC3\u8EC4\u8EC7\u8ECF\u8ED1\u8ED4\u8EDC\u8EE8\u8EEE\u8EF0\u8EF1\u8EF7\u8EF9\u8EFA\u8EED\u8F00\u8F02\u8F07\u8F08\u8F0F\u8F10\u8F16\u8F17\u8F18\u8F1E\u8F20\u8F21\u8F23\u8F25\u8F27\u8F28\u8F2C\u8F2D\u8F2E\u8F34\u8F35\u8F36\u8F37\u8F3A\u8F40\u8F41"], ["8fe1a1", "\u8F43\u8F47\u8F4F\u8F51", 4, "\u8F58\u8F5D\u8F5E\u8F65\u8F9D\u8FA0\u8FA1\u8FA4\u8FA5\u8FA6\u8FB5\u8FB6\u8FB8\u8FBE\u8FC0\u8FC1\u8FC6\u8FCA\u8FCB\u8FCD\u8FD0\u8FD2\u8FD3\u8FD5\u8FE0\u8FE3\u8FE4\u8FE8\u8FEE\u8FF1\u8FF5\u8FF6\u8FFB\u8FFE\u9002\u9004\u9008\u900C\u9018\u901B\u9028\u9029\u902F\u902A\u902C\u902D\u9033\u9034\u9037\u903F\u9043\u9044\u904C\u905B\u905D\u9062\u9066\u9067\u906C\u9070\u9074\u9079\u9085\u9088\u908B\u908C\u908E\u9090\u9095\u9097\u9098\u9099\u909B\u90A0\u90A1\u90A2\u90A5\u90B0\u90B2\u90B3\u90B4\u90B6\u90BD\u90CC\u90BE\u90C3"], ["8fe2a1", "\u90C4\u90C5\u90C7\u90C8\u90D5\u90D7\u90D8\u90D9\u90DC\u90DD\u90DF\u90E5\u90D2\u90F6\u90EB\u90EF\u90F0\u90F4\u90FE\u90FF\u9100\u9104\u9105\u9106\u9108\u910D\u9110\u9114\u9116\u9117\u9118\u911A\u911C\u911E\u9120\u9125\u9122\u9123\u9127\u9129\u912E\u912F\u9131\u9134\u9136\u9137\u9139\u913A\u913C\u913D\u9143\u9147\u9148\u914F\u9153\u9157\u9159\u915A\u915B\u9161\u9164\u9167\u916D\u9174\u9179\u917A\u917B\u9181\u9183\u9185\u9186\u918A\u918E\u9191\u9193\u9194\u9195\u9198\u919E\u91A1\u91A6\u91A8\u91AC\u91AD\u91AE\u91B0\u91B1\u91B2\u91B3\u91B6\u91BB\u91BC\u91BD\u91BF"], ["8fe3a1", "\u91C2\u91C3\u91C5\u91D3\u91D4\u91D7\u91D9\u91DA\u91DE\u91E4\u91E5\u91E9\u91EA\u91EC", 5, "\u91F7\u91F9\u91FB\u91FD\u9200\u9201\u9204\u9205\u9206\u9207\u9209\u920A\u920C\u9210\u9212\u9213\u9216\u9218\u921C\u921D\u9223\u9224\u9225\u9226\u9228\u922E\u922F\u9230\u9233\u9235\u9236\u9238\u9239\u923A\u923C\u923E\u9240\u9242\u9243\u9246\u9247\u924A\u924D\u924E\u924F\u9251\u9258\u9259\u925C\u925D\u9260\u9261\u9265\u9267\u9268\u9269\u926E\u926F\u9270\u9275", 4, "\u927B\u927C\u927D\u927F\u9288\u9289\u928A\u928D\u928E\u9292\u9297"], ["8fe4a1", "\u9299\u929F\u92A0\u92A4\u92A5\u92A7\u92A8\u92AB\u92AF\u92B2\u92B6\u92B8\u92BA\u92BB\u92BC\u92BD\u92BF", 4, "\u92C5\u92C6\u92C7\u92C8\u92CB\u92CC\u92CD\u92CE\u92D0\u92D3\u92D5\u92D7\u92D8\u92D9\u92DC\u92DD\u92DF\u92E0\u92E1\u92E3\u92E5\u92E7\u92E8\u92EC\u92EE\u92F0\u92F9\u92FB\u92FF\u9300\u9302\u9308\u930D\u9311\u9314\u9315\u931C\u931D\u931E\u931F\u9321\u9324\u9325\u9327\u9329\u932A\u9333\u9334\u9336\u9337\u9347\u9348\u9349\u9350\u9351\u9352\u9355\u9357\u9358\u935A\u935E\u9364\u9365\u9367\u9369\u936A\u936D\u936F\u9370\u9371\u9373\u9374\u9376"], ["8fe5a1", "\u937A\u937D\u937F\u9380\u9381\u9382\u9388\u938A\u938B\u938D\u938F\u9392\u9395\u9398\u939B\u939E\u93A1\u93A3\u93A4\u93A6\u93A8\u93AB\u93B4\u93B5\u93B6\u93BA\u93A9\u93C1\u93C4\u93C5\u93C6\u93C7\u93C9", 4, "\u93D3\u93D9\u93DC\u93DE\u93DF\u93E2\u93E6\u93E7\u93F9\u93F7\u93F8\u93FA\u93FB\u93FD\u9401\u9402\u9404\u9408\u9409\u940D\u940E\u940F\u9415\u9416\u9417\u941F\u942E\u942F\u9431\u9432\u9433\u9434\u943B\u943F\u943D\u9443\u9445\u9448\u944A\u944C\u9455\u9459\u945C\u945F\u9461\u9463\u9468\u946B\u946D\u946E\u946F\u9471\u9472\u9484\u9483\u9578\u9579"], ["8fe6a1", "\u957E\u9584\u9588\u958C\u958D\u958E\u959D\u959E\u959F\u95A1\u95A6\u95A9\u95AB\u95AC\u95B4\u95B6\u95BA\u95BD\u95BF\u95C6\u95C8\u95C9\u95CB\u95D0\u95D1\u95D2\u95D3\u95D9\u95DA\u95DD\u95DE\u95DF\u95E0\u95E4\u95E6\u961D\u961E\u9622\u9624\u9625\u9626\u962C\u9631\u9633\u9637\u9638\u9639\u963A\u963C\u963D\u9641\u9652\u9654\u9656\u9657\u9658\u9661\u966E\u9674\u967B\u967C\u967E\u967F\u9681\u9682\u9683\u9684\u9689\u9691\u9696\u969A\u969D\u969F\u96A4\u96A5\u96A6\u96A9\u96AE\u96AF\u96B3\u96BA\u96CA\u96D2\u5DB2\u96D8\u96DA\u96DD\u96DE\u96DF\u96E9\u96EF\u96F1\u96FA\u9702"], ["8fe7a1", "\u9703\u9705\u9709\u971A\u971B\u971D\u9721\u9722\u9723\u9728\u9731\u9733\u9741\u9743\u974A\u974E\u974F\u9755\u9757\u9758\u975A\u975B\u9763\u9767\u976A\u976E\u9773\u9776\u9777\u9778\u977B\u977D\u977F\u9780\u9789\u9795\u9796\u9797\u9799\u979A\u979E\u979F\u97A2\u97AC\u97AE\u97B1\u97B2\u97B5\u97B6\u97B8\u97B9\u97BA\u97BC\u97BE\u97BF\u97C1\u97C4\u97C5\u97C7\u97C9\u97CA\u97CC\u97CD\u97CE\u97D0\u97D1\u97D4\u97D7\u97D8\u97D9\u97DD\u97DE\u97E0\u97DB\u97E1\u97E4\u97EF\u97F1\u97F4\u97F7\u97F8\u97FA\u9807\u980A\u9819\u980D\u980E\u9814\u9816\u981C\u981E\u9820\u9823\u9826"], ["8fe8a1", "\u982B\u982E\u982F\u9830\u9832\u9833\u9835\u9825\u983E\u9844\u9847\u984A\u9851\u9852\u9853\u9856\u9857\u9859\u985A\u9862\u9863\u9865\u9866\u986A\u986C\u98AB\u98AD\u98AE\u98B0\u98B4\u98B7\u98B8\u98BA\u98BB\u98BF\u98C2\u98C5\u98C8\u98CC\u98E1\u98E3\u98E5\u98E6\u98E7\u98EA\u98F3\u98F6\u9902\u9907\u9908\u9911\u9915\u9916\u9917\u991A\u991B\u991C\u991F\u9922\u9926\u9927\u992B\u9931", 4, "\u9939\u993A\u993B\u993C\u9940\u9941\u9946\u9947\u9948\u994D\u994E\u9954\u9958\u9959\u995B\u995C\u995E\u995F\u9960\u999B\u999D\u999F\u99A6\u99B0\u99B1\u99B2\u99B5"], ["8fe9a1", "\u99B9\u99BA\u99BD\u99BF\u99C3\u99C9\u99D3\u99D4\u99D9\u99DA\u99DC\u99DE\u99E7\u99EA\u99EB\u99EC\u99F0\u99F4\u99F5\u99F9\u99FD\u99FE\u9A02\u9A03\u9A04\u9A0B\u9A0C\u9A10\u9A11\u9A16\u9A1E\u9A20\u9A22\u9A23\u9A24\u9A27\u9A2D\u9A2E\u9A33\u9A35\u9A36\u9A38\u9A47\u9A41\u9A44\u9A4A\u9A4B\u9A4C\u9A4E\u9A51\u9A54\u9A56\u9A5D\u9AAA\u9AAC\u9AAE\u9AAF\u9AB2\u9AB4\u9AB5\u9AB6\u9AB9\u9ABB\u9ABE\u9ABF\u9AC1\u9AC3\u9AC6\u9AC8\u9ACE\u9AD0\u9AD2\u9AD5\u9AD6\u9AD7\u9ADB\u9ADC\u9AE0\u9AE4\u9AE5\u9AE7\u9AE9\u9AEC\u9AF2\u9AF3\u9AF5\u9AF9\u9AFA\u9AFD\u9AFF", 4], ["8feaa1", "\u9B04\u9B05\u9B08\u9B09\u9B0B\u9B0C\u9B0D\u9B0E\u9B10\u9B12\u9B16\u9B19\u9B1B\u9B1C\u9B20\u9B26\u9B2B\u9B2D\u9B33\u9B34\u9B35\u9B37\u9B39\u9B3A\u9B3D\u9B48\u9B4B\u9B4C\u9B55\u9B56\u9B57\u9B5B\u9B5E\u9B61\u9B63\u9B65\u9B66\u9B68\u9B6A", 4, "\u9B73\u9B75\u9B77\u9B78\u9B79\u9B7F\u9B80\u9B84\u9B85\u9B86\u9B87\u9B89\u9B8A\u9B8B\u9B8D\u9B8F\u9B90\u9B94\u9B9A\u9B9D\u9B9E\u9BA6\u9BA7\u9BA9\u9BAC\u9BB0\u9BB1\u9BB2\u9BB7\u9BB8\u9BBB\u9BBC\u9BBE\u9BBF\u9BC1\u9BC7\u9BC8\u9BCE\u9BD0\u9BD7\u9BD8\u9BDD\u9BDF\u9BE5\u9BE7\u9BEA\u9BEB\u9BEF\u9BF3\u9BF7\u9BF8"], ["8feba1", "\u9BF9\u9BFA\u9BFD\u9BFF\u9C00\u9C02\u9C0B\u9C0F\u9C11\u9C16\u9C18\u9C19\u9C1A\u9C1C\u9C1E\u9C22\u9C23\u9C26", 4, "\u9C31\u9C35\u9C36\u9C37\u9C3D\u9C41\u9C43\u9C44\u9C45\u9C49\u9C4A\u9C4E\u9C4F\u9C50\u9C53\u9C54\u9C56\u9C58\u9C5B\u9C5D\u9C5E\u9C5F\u9C63\u9C69\u9C6A\u9C5C\u9C6B\u9C68\u9C6E\u9C70\u9C72\u9C75\u9C77\u9C7B\u9CE6\u9CF2\u9CF7\u9CF9\u9D0B\u9D02\u9D11\u9D17\u9D18\u9D1C\u9D1D\u9D1E\u9D2F\u9D30\u9D32\u9D33\u9D34\u9D3A\u9D3C\u9D45\u9D3D\u9D42\u9D43\u9D47\u9D4A\u9D53\u9D54\u9D5F\u9D63\u9D62\u9D65\u9D69\u9D6A\u9D6B\u9D70\u9D76\u9D77\u9D7B"], ["8feca1", "\u9D7C\u9D7E\u9D83\u9D84\u9D86\u9D8A\u9D8D\u9D8E\u9D92\u9D93\u9D95\u9D96\u9D97\u9D98\u9DA1\u9DAA\u9DAC\u9DAE\u9DB1\u9DB5\u9DB9\u9DBC\u9DBF\u9DC3\u9DC7\u9DC9\u9DCA\u9DD4\u9DD5\u9DD6\u9DD7\u9DDA\u9DDE\u9DDF\u9DE0\u9DE5\u9DE7\u9DE9\u9DEB\u9DEE\u9DF0\u9DF3\u9DF4\u9DFE\u9E0A\u9E02\u9E07\u9E0E\u9E10\u9E11\u9E12\u9E15\u9E16\u9E19\u9E1C\u9E1D\u9E7A\u9E7B\u9E7C\u9E80\u9E82\u9E83\u9E84\u9E85\u9E87\u9E8E\u9E8F\u9E96\u9E98\u9E9B\u9E9E\u9EA4\u9EA8\u9EAC\u9EAE\u9EAF\u9EB0\u9EB3\u9EB4\u9EB5\u9EC6\u9EC8\u9ECB\u9ED5\u9EDF\u9EE4\u9EE7\u9EEC\u9EED\u9EEE\u9EF0\u9EF1\u9EF2\u9EF5"], ["8feda1", "\u9EF8\u9EFF\u9F02\u9F03\u9F09\u9F0F\u9F10\u9F11\u9F12\u9F14\u9F16\u9F17\u9F19\u9F1A\u9F1B\u9F1F\u9F22\u9F26\u9F2A\u9F2B\u9F2F\u9F31\u9F32\u9F34\u9F37\u9F39\u9F3A\u9F3C\u9F3D\u9F3F\u9F41\u9F43", 4, "\u9F53\u9F55\u9F56\u9F57\u9F58\u9F5A\u9F5D\u9F5E\u9F68\u9F69\u9F6D", 4, "\u9F73\u9F75\u9F7A\u9F7D\u9F8F\u9F90\u9F91\u9F92\u9F94\u9F96\u9F97\u9F9E\u9FA1\u9FA2\u9FA3\u9FA5"]]; +}); +var ed = g((Vpe, aU) => { + aU.exports = [["0", "\0", 127, "\u20AC"], ["8140", "\u4E02\u4E04\u4E05\u4E06\u4E0F\u4E12\u4E17\u4E1F\u4E20\u4E21\u4E23\u4E26\u4E29\u4E2E\u4E2F\u4E31\u4E33\u4E35\u4E37\u4E3C\u4E40\u4E41\u4E42\u4E44\u4E46\u4E4A\u4E51\u4E55\u4E57\u4E5A\u4E5B\u4E62\u4E63\u4E64\u4E65\u4E67\u4E68\u4E6A", 5, "\u4E72\u4E74", 9, "\u4E7F", 6, "\u4E87\u4E8A"], ["8180", "\u4E90\u4E96\u4E97\u4E99\u4E9C\u4E9D\u4E9E\u4EA3\u4EAA\u4EAF\u4EB0\u4EB1\u4EB4\u4EB6\u4EB7\u4EB8\u4EB9\u4EBC\u4EBD\u4EBE\u4EC8\u4ECC\u4ECF\u4ED0\u4ED2\u4EDA\u4EDB\u4EDC\u4EE0\u4EE2\u4EE6\u4EE7\u4EE9\u4EED\u4EEE\u4EEF\u4EF1\u4EF4\u4EF8\u4EF9\u4EFA\u4EFC\u4EFE\u4F00\u4F02", 6, "\u4F0B\u4F0C\u4F12", 4, "\u4F1C\u4F1D\u4F21\u4F23\u4F28\u4F29\u4F2C\u4F2D\u4F2E\u4F31\u4F33\u4F35\u4F37\u4F39\u4F3B\u4F3E", 4, "\u4F44\u4F45\u4F47", 5, "\u4F52\u4F54\u4F56\u4F61\u4F62\u4F66\u4F68\u4F6A\u4F6B\u4F6D\u4F6E\u4F71\u4F72\u4F75\u4F77\u4F78\u4F79\u4F7A\u4F7D\u4F80\u4F81\u4F82\u4F85\u4F86\u4F87\u4F8A\u4F8C\u4F8E\u4F90\u4F92\u4F93\u4F95\u4F96\u4F98\u4F99\u4F9A\u4F9C\u4F9E\u4F9F\u4FA1\u4FA2"], ["8240", "\u4FA4\u4FAB\u4FAD\u4FB0", 4, "\u4FB6", 8, "\u4FC0\u4FC1\u4FC2\u4FC6\u4FC7\u4FC8\u4FC9\u4FCB\u4FCC\u4FCD\u4FD2", 4, "\u4FD9\u4FDB\u4FE0\u4FE2\u4FE4\u4FE5\u4FE7\u4FEB\u4FEC\u4FF0\u4FF2\u4FF4\u4FF5\u4FF6\u4FF7\u4FF9\u4FFB\u4FFC\u4FFD\u4FFF", 11], ["8280", "\u500B\u500E\u5010\u5011\u5013\u5015\u5016\u5017\u501B\u501D\u501E\u5020\u5022\u5023\u5024\u5027\u502B\u502F", 10, "\u503B\u503D\u503F\u5040\u5041\u5042\u5044\u5045\u5046\u5049\u504A\u504B\u504D\u5050", 4, "\u5056\u5057\u5058\u5059\u505B\u505D", 7, "\u5066", 5, "\u506D", 8, "\u5078\u5079\u507A\u507C\u507D\u5081\u5082\u5083\u5084\u5086\u5087\u5089\u508A\u508B\u508C\u508E", 20, "\u50A4\u50A6\u50AA\u50AB\u50AD", 4, "\u50B3", 6, "\u50BC"], ["8340", "\u50BD", 17, "\u50D0", 5, "\u50D7\u50D8\u50D9\u50DB", 10, "\u50E8\u50E9\u50EA\u50EB\u50EF\u50F0\u50F1\u50F2\u50F4\u50F6", 4, "\u50FC", 9, "\u5108"], ["8380", "\u5109\u510A\u510C", 5, "\u5113", 13, "\u5122", 28, "\u5142\u5147\u514A\u514C\u514E\u514F\u5150\u5152\u5153\u5157\u5158\u5159\u515B\u515D", 4, "\u5163\u5164\u5166\u5167\u5169\u516A\u516F\u5172\u517A\u517E\u517F\u5183\u5184\u5186\u5187\u518A\u518B\u518E\u518F\u5190\u5191\u5193\u5194\u5198\u519A\u519D\u519E\u519F\u51A1\u51A3\u51A6", 4, "\u51AD\u51AE\u51B4\u51B8\u51B9\u51BA\u51BE\u51BF\u51C1\u51C2\u51C3\u51C5\u51C8\u51CA\u51CD\u51CE\u51D0\u51D2", 5], ["8440", "\u51D8\u51D9\u51DA\u51DC\u51DE\u51DF\u51E2\u51E3\u51E5", 5, "\u51EC\u51EE\u51F1\u51F2\u51F4\u51F7\u51FE\u5204\u5205\u5209\u520B\u520C\u520F\u5210\u5213\u5214\u5215\u521C\u521E\u521F\u5221\u5222\u5223\u5225\u5226\u5227\u522A\u522C\u522F\u5231\u5232\u5234\u5235\u523C\u523E\u5244", 5, "\u524B\u524E\u524F\u5252\u5253\u5255\u5257\u5258"], ["8480", "\u5259\u525A\u525B\u525D\u525F\u5260\u5262\u5263\u5264\u5266\u5268\u526B\u526C\u526D\u526E\u5270\u5271\u5273", 9, "\u527E\u5280\u5283", 4, "\u5289", 6, "\u5291\u5292\u5294", 6, "\u529C\u52A4\u52A5\u52A6\u52A7\u52AE\u52AF\u52B0\u52B4", 9, "\u52C0\u52C1\u52C2\u52C4\u52C5\u52C6\u52C8\u52CA\u52CC\u52CD\u52CE\u52CF\u52D1\u52D3\u52D4\u52D5\u52D7\u52D9", 5, "\u52E0\u52E1\u52E2\u52E3\u52E5", 10, "\u52F1", 7, "\u52FB\u52FC\u52FD\u5301\u5302\u5303\u5304\u5307\u5309\u530A\u530B\u530C\u530E"], ["8540", "\u5311\u5312\u5313\u5314\u5318\u531B\u531C\u531E\u531F\u5322\u5324\u5325\u5327\u5328\u5329\u532B\u532C\u532D\u532F", 9, "\u533C\u533D\u5340\u5342\u5344\u5346\u534B\u534C\u534D\u5350\u5354\u5358\u5359\u535B\u535D\u5365\u5368\u536A\u536C\u536D\u5372\u5376\u5379\u537B\u537C\u537D\u537E\u5380\u5381\u5383\u5387\u5388\u538A\u538E\u538F"], ["8580", "\u5390", 4, "\u5396\u5397\u5399\u539B\u539C\u539E\u53A0\u53A1\u53A4\u53A7\u53AA\u53AB\u53AC\u53AD\u53AF", 6, "\u53B7\u53B8\u53B9\u53BA\u53BC\u53BD\u53BE\u53C0\u53C3", 4, "\u53CE\u53CF\u53D0\u53D2\u53D3\u53D5\u53DA\u53DC\u53DD\u53DE\u53E1\u53E2\u53E7\u53F4\u53FA\u53FE\u53FF\u5400\u5402\u5405\u5407\u540B\u5414\u5418\u5419\u541A\u541C\u5422\u5424\u5425\u542A\u5430\u5433\u5436\u5437\u543A\u543D\u543F\u5441\u5442\u5444\u5445\u5447\u5449\u544C\u544D\u544E\u544F\u5451\u545A\u545D", 4, "\u5463\u5465\u5467\u5469", 7, "\u5474\u5479\u547A\u547E\u547F\u5481\u5483\u5485\u5487\u5488\u5489\u548A\u548D\u5491\u5493\u5497\u5498\u549C\u549E\u549F\u54A0\u54A1"], ["8640", "\u54A2\u54A5\u54AE\u54B0\u54B2\u54B5\u54B6\u54B7\u54B9\u54BA\u54BC\u54BE\u54C3\u54C5\u54CA\u54CB\u54D6\u54D8\u54DB\u54E0", 4, "\u54EB\u54EC\u54EF\u54F0\u54F1\u54F4", 5, "\u54FB\u54FE\u5500\u5502\u5503\u5504\u5505\u5508\u550A", 4, "\u5512\u5513\u5515", 5, "\u551C\u551D\u551E\u551F\u5521\u5525\u5526"], ["8680", "\u5528\u5529\u552B\u552D\u5532\u5534\u5535\u5536\u5538\u5539\u553A\u553B\u553D\u5540\u5542\u5545\u5547\u5548\u554B", 4, "\u5551\u5552\u5553\u5554\u5557", 4, "\u555D\u555E\u555F\u5560\u5562\u5563\u5568\u5569\u556B\u556F", 5, "\u5579\u557A\u557D\u557F\u5585\u5586\u558C\u558D\u558E\u5590\u5592\u5593\u5595\u5596\u5597\u559A\u559B\u559E\u55A0", 6, "\u55A8", 8, "\u55B2\u55B4\u55B6\u55B8\u55BA\u55BC\u55BF", 4, "\u55C6\u55C7\u55C8\u55CA\u55CB\u55CE\u55CF\u55D0\u55D5\u55D7", 4, "\u55DE\u55E0\u55E2\u55E7\u55E9\u55ED\u55EE\u55F0\u55F1\u55F4\u55F6\u55F8", 4, "\u55FF\u5602\u5603\u5604\u5605"], ["8740", "\u5606\u5607\u560A\u560B\u560D\u5610", 7, "\u5619\u561A\u561C\u561D\u5620\u5621\u5622\u5625\u5626\u5628\u5629\u562A\u562B\u562E\u562F\u5630\u5633\u5635\u5637\u5638\u563A\u563C\u563D\u563E\u5640", 11, "\u564F", 4, "\u5655\u5656\u565A\u565B\u565D", 4], ["8780", "\u5663\u5665\u5666\u5667\u566D\u566E\u566F\u5670\u5672\u5673\u5674\u5675\u5677\u5678\u5679\u567A\u567D", 7, "\u5687", 6, "\u5690\u5691\u5692\u5694", 14, "\u56A4", 10, "\u56B0", 6, "\u56B8\u56B9\u56BA\u56BB\u56BD", 12, "\u56CB", 8, "\u56D5\u56D6\u56D8\u56D9\u56DC\u56E3\u56E5", 5, "\u56EC\u56EE\u56EF\u56F2\u56F3\u56F6\u56F7\u56F8\u56FB\u56FC\u5700\u5701\u5702\u5705\u5707\u570B", 6], ["8840", "\u5712", 9, "\u571D\u571E\u5720\u5721\u5722\u5724\u5725\u5726\u5727\u572B\u5731\u5732\u5734", 4, "\u573C\u573D\u573F\u5741\u5743\u5744\u5745\u5746\u5748\u5749\u574B\u5752", 4, "\u5758\u5759\u5762\u5763\u5765\u5767\u576C\u576E\u5770\u5771\u5772\u5774\u5775\u5778\u5779\u577A\u577D\u577E\u577F\u5780"], ["8880", "\u5781\u5787\u5788\u5789\u578A\u578D", 4, "\u5794", 6, "\u579C\u579D\u579E\u579F\u57A5\u57A8\u57AA\u57AC\u57AF\u57B0\u57B1\u57B3\u57B5\u57B6\u57B7\u57B9", 8, "\u57C4", 6, "\u57CC\u57CD\u57D0\u57D1\u57D3\u57D6\u57D7\u57DB\u57DC\u57DE\u57E1\u57E2\u57E3\u57E5", 7, "\u57EE\u57F0\u57F1\u57F2\u57F3\u57F5\u57F6\u57F7\u57FB\u57FC\u57FE\u57FF\u5801\u5803\u5804\u5805\u5808\u5809\u580A\u580C\u580E\u580F\u5810\u5812\u5813\u5814\u5816\u5817\u5818\u581A\u581B\u581C\u581D\u581F\u5822\u5823\u5825", 4, "\u582B", 4, "\u5831\u5832\u5833\u5834\u5836", 7], ["8940", "\u583E", 5, "\u5845", 6, "\u584E\u584F\u5850\u5852\u5853\u5855\u5856\u5857\u5859", 4, "\u585F", 5, "\u5866", 4, "\u586D", 16, "\u587F\u5882\u5884\u5886\u5887\u5888\u588A\u588B\u588C"], ["8980", "\u588D", 4, "\u5894", 4, "\u589B\u589C\u589D\u58A0", 7, "\u58AA", 17, "\u58BD\u58BE\u58BF\u58C0\u58C2\u58C3\u58C4\u58C6", 10, "\u58D2\u58D3\u58D4\u58D6", 13, "\u58E5", 5, "\u58ED\u58EF\u58F1\u58F2\u58F4\u58F5\u58F7\u58F8\u58FA", 7, "\u5903\u5905\u5906\u5908", 4, "\u590E\u5910\u5911\u5912\u5913\u5917\u5918\u591B\u591D\u591E\u5920\u5921\u5922\u5923\u5926\u5928\u592C\u5930\u5932\u5933\u5935\u5936\u593B"], ["8a40", "\u593D\u593E\u593F\u5940\u5943\u5945\u5946\u594A\u594C\u594D\u5950\u5952\u5953\u5959\u595B", 4, "\u5961\u5963\u5964\u5966", 12, "\u5975\u5977\u597A\u597B\u597C\u597E\u597F\u5980\u5985\u5989\u598B\u598C\u598E\u598F\u5990\u5991\u5994\u5995\u5998\u599A\u599B\u599C\u599D\u599F\u59A0\u59A1\u59A2\u59A6"], ["8a80", "\u59A7\u59AC\u59AD\u59B0\u59B1\u59B3", 5, "\u59BA\u59BC\u59BD\u59BF", 6, "\u59C7\u59C8\u59C9\u59CC\u59CD\u59CE\u59CF\u59D5\u59D6\u59D9\u59DB\u59DE", 4, "\u59E4\u59E6\u59E7\u59E9\u59EA\u59EB\u59ED", 11, "\u59FA\u59FC\u59FD\u59FE\u5A00\u5A02\u5A0A\u5A0B\u5A0D\u5A0E\u5A0F\u5A10\u5A12\u5A14\u5A15\u5A16\u5A17\u5A19\u5A1A\u5A1B\u5A1D\u5A1E\u5A21\u5A22\u5A24\u5A26\u5A27\u5A28\u5A2A", 6, "\u5A33\u5A35\u5A37", 4, "\u5A3D\u5A3E\u5A3F\u5A41", 4, "\u5A47\u5A48\u5A4B", 9, "\u5A56\u5A57\u5A58\u5A59\u5A5B", 5], ["8b40", "\u5A61\u5A63\u5A64\u5A65\u5A66\u5A68\u5A69\u5A6B", 8, "\u5A78\u5A79\u5A7B\u5A7C\u5A7D\u5A7E\u5A80", 17, "\u5A93", 6, "\u5A9C", 13, "\u5AAB\u5AAC"], ["8b80", "\u5AAD", 4, "\u5AB4\u5AB6\u5AB7\u5AB9", 4, "\u5ABF\u5AC0\u5AC3", 5, "\u5ACA\u5ACB\u5ACD", 4, "\u5AD3\u5AD5\u5AD7\u5AD9\u5ADA\u5ADB\u5ADD\u5ADE\u5ADF\u5AE2\u5AE4\u5AE5\u5AE7\u5AE8\u5AEA\u5AEC", 4, "\u5AF2", 22, "\u5B0A", 11, "\u5B18", 25, "\u5B33\u5B35\u5B36\u5B38", 7, "\u5B41", 6], ["8c40", "\u5B48", 7, "\u5B52\u5B56\u5B5E\u5B60\u5B61\u5B67\u5B68\u5B6B\u5B6D\u5B6E\u5B6F\u5B72\u5B74\u5B76\u5B77\u5B78\u5B79\u5B7B\u5B7C\u5B7E\u5B7F\u5B82\u5B86\u5B8A\u5B8D\u5B8E\u5B90\u5B91\u5B92\u5B94\u5B96\u5B9F\u5BA7\u5BA8\u5BA9\u5BAC\u5BAD\u5BAE\u5BAF\u5BB1\u5BB2\u5BB7\u5BBA\u5BBB\u5BBC\u5BC0\u5BC1\u5BC3\u5BC8\u5BC9\u5BCA\u5BCB\u5BCD\u5BCE\u5BCF"], ["8c80", "\u5BD1\u5BD4", 8, "\u5BE0\u5BE2\u5BE3\u5BE6\u5BE7\u5BE9", 4, "\u5BEF\u5BF1", 6, "\u5BFD\u5BFE\u5C00\u5C02\u5C03\u5C05\u5C07\u5C08\u5C0B\u5C0C\u5C0D\u5C0E\u5C10\u5C12\u5C13\u5C17\u5C19\u5C1B\u5C1E\u5C1F\u5C20\u5C21\u5C23\u5C26\u5C28\u5C29\u5C2A\u5C2B\u5C2D\u5C2E\u5C2F\u5C30\u5C32\u5C33\u5C35\u5C36\u5C37\u5C43\u5C44\u5C46\u5C47\u5C4C\u5C4D\u5C52\u5C53\u5C54\u5C56\u5C57\u5C58\u5C5A\u5C5B\u5C5C\u5C5D\u5C5F\u5C62\u5C64\u5C67", 6, "\u5C70\u5C72", 6, "\u5C7B\u5C7C\u5C7D\u5C7E\u5C80\u5C83", 4, "\u5C89\u5C8A\u5C8B\u5C8E\u5C8F\u5C92\u5C93\u5C95\u5C9D", 4, "\u5CA4", 4], ["8d40", "\u5CAA\u5CAE\u5CAF\u5CB0\u5CB2\u5CB4\u5CB6\u5CB9\u5CBA\u5CBB\u5CBC\u5CBE\u5CC0\u5CC2\u5CC3\u5CC5", 5, "\u5CCC", 5, "\u5CD3", 5, "\u5CDA", 6, "\u5CE2\u5CE3\u5CE7\u5CE9\u5CEB\u5CEC\u5CEE\u5CEF\u5CF1", 9, "\u5CFC", 4], ["8d80", "\u5D01\u5D04\u5D05\u5D08", 5, "\u5D0F", 4, "\u5D15\u5D17\u5D18\u5D19\u5D1A\u5D1C\u5D1D\u5D1F", 4, "\u5D25\u5D28\u5D2A\u5D2B\u5D2C\u5D2F", 4, "\u5D35", 7, "\u5D3F", 7, "\u5D48\u5D49\u5D4D", 10, "\u5D59\u5D5A\u5D5C\u5D5E", 10, "\u5D6A\u5D6D\u5D6E\u5D70\u5D71\u5D72\u5D73\u5D75", 12, "\u5D83", 21, "\u5D9A\u5D9B\u5D9C\u5D9E\u5D9F\u5DA0"], ["8e40", "\u5DA1", 21, "\u5DB8", 12, "\u5DC6", 6, "\u5DCE", 12, "\u5DDC\u5DDF\u5DE0\u5DE3\u5DE4\u5DEA\u5DEC\u5DED"], ["8e80", "\u5DF0\u5DF5\u5DF6\u5DF8", 4, "\u5DFF\u5E00\u5E04\u5E07\u5E09\u5E0A\u5E0B\u5E0D\u5E0E\u5E12\u5E13\u5E17\u5E1E", 7, "\u5E28", 4, "\u5E2F\u5E30\u5E32", 4, "\u5E39\u5E3A\u5E3E\u5E3F\u5E40\u5E41\u5E43\u5E46", 5, "\u5E4D", 6, "\u5E56", 4, "\u5E5C\u5E5D\u5E5F\u5E60\u5E63", 14, "\u5E75\u5E77\u5E79\u5E7E\u5E81\u5E82\u5E83\u5E85\u5E88\u5E89\u5E8C\u5E8D\u5E8E\u5E92\u5E98\u5E9B\u5E9D\u5EA1\u5EA2\u5EA3\u5EA4\u5EA8", 4, "\u5EAE", 4, "\u5EB4\u5EBA\u5EBB\u5EBC\u5EBD\u5EBF", 6], ["8f40", "\u5EC6\u5EC7\u5EC8\u5ECB", 5, "\u5ED4\u5ED5\u5ED7\u5ED8\u5ED9\u5EDA\u5EDC", 11, "\u5EE9\u5EEB", 8, "\u5EF5\u5EF8\u5EF9\u5EFB\u5EFC\u5EFD\u5F05\u5F06\u5F07\u5F09\u5F0C\u5F0D\u5F0E\u5F10\u5F12\u5F14\u5F16\u5F19\u5F1A\u5F1C\u5F1D\u5F1E\u5F21\u5F22\u5F23\u5F24"], ["8f80", "\u5F28\u5F2B\u5F2C\u5F2E\u5F30\u5F32", 6, "\u5F3B\u5F3D\u5F3E\u5F3F\u5F41", 14, "\u5F51\u5F54\u5F59\u5F5A\u5F5B\u5F5C\u5F5E\u5F5F\u5F60\u5F63\u5F65\u5F67\u5F68\u5F6B\u5F6E\u5F6F\u5F72\u5F74\u5F75\u5F76\u5F78\u5F7A\u5F7D\u5F7E\u5F7F\u5F83\u5F86\u5F8D\u5F8E\u5F8F\u5F91\u5F93\u5F94\u5F96\u5F9A\u5F9B\u5F9D\u5F9E\u5F9F\u5FA0\u5FA2", 5, "\u5FA9\u5FAB\u5FAC\u5FAF", 5, "\u5FB6\u5FB8\u5FB9\u5FBA\u5FBB\u5FBE", 4, "\u5FC7\u5FC8\u5FCA\u5FCB\u5FCE\u5FD3\u5FD4\u5FD5\u5FDA\u5FDB\u5FDC\u5FDE\u5FDF\u5FE2\u5FE3\u5FE5\u5FE6\u5FE8\u5FE9\u5FEC\u5FEF\u5FF0\u5FF2\u5FF3\u5FF4\u5FF6\u5FF7\u5FF9\u5FFA\u5FFC\u6007"], ["9040", "\u6008\u6009\u600B\u600C\u6010\u6011\u6013\u6017\u6018\u601A\u601E\u601F\u6022\u6023\u6024\u602C\u602D\u602E\u6030", 4, "\u6036", 4, "\u603D\u603E\u6040\u6044", 6, "\u604C\u604E\u604F\u6051\u6053\u6054\u6056\u6057\u6058\u605B\u605C\u605E\u605F\u6060\u6061\u6065\u6066\u606E\u6071\u6072\u6074\u6075\u6077\u607E\u6080"], ["9080", "\u6081\u6082\u6085\u6086\u6087\u6088\u608A\u608B\u608E\u608F\u6090\u6091\u6093\u6095\u6097\u6098\u6099\u609C\u609E\u60A1\u60A2\u60A4\u60A5\u60A7\u60A9\u60AA\u60AE\u60B0\u60B3\u60B5\u60B6\u60B7\u60B9\u60BA\u60BD", 7, "\u60C7\u60C8\u60C9\u60CC", 4, "\u60D2\u60D3\u60D4\u60D6\u60D7\u60D9\u60DB\u60DE\u60E1", 4, "\u60EA\u60F1\u60F2\u60F5\u60F7\u60F8\u60FB", 4, "\u6102\u6103\u6104\u6105\u6107\u610A\u610B\u610C\u6110", 4, "\u6116\u6117\u6118\u6119\u611B\u611C\u611D\u611E\u6121\u6122\u6125\u6128\u6129\u612A\u612C", 18, "\u6140", 6], ["9140", "\u6147\u6149\u614B\u614D\u614F\u6150\u6152\u6153\u6154\u6156", 6, "\u615E\u615F\u6160\u6161\u6163\u6164\u6165\u6166\u6169", 6, "\u6171\u6172\u6173\u6174\u6176\u6178", 18, "\u618C\u618D\u618F", 4, "\u6195"], ["9180", "\u6196", 6, "\u619E", 8, "\u61AA\u61AB\u61AD", 9, "\u61B8", 5, "\u61BF\u61C0\u61C1\u61C3", 4, "\u61C9\u61CC", 4, "\u61D3\u61D5", 16, "\u61E7", 13, "\u61F6", 8, "\u6200", 5, "\u6207\u6209\u6213\u6214\u6219\u621C\u621D\u621E\u6220\u6223\u6226\u6227\u6228\u6229\u622B\u622D\u622F\u6230\u6231\u6232\u6235\u6236\u6238", 4, "\u6242\u6244\u6245\u6246\u624A"], ["9240", "\u624F\u6250\u6255\u6256\u6257\u6259\u625A\u625C", 6, "\u6264\u6265\u6268\u6271\u6272\u6274\u6275\u6277\u6278\u627A\u627B\u627D\u6281\u6282\u6283\u6285\u6286\u6287\u6288\u628B", 5, "\u6294\u6299\u629C\u629D\u629E\u62A3\u62A6\u62A7\u62A9\u62AA\u62AD\u62AE\u62AF\u62B0\u62B2\u62B3\u62B4\u62B6\u62B7\u62B8\u62BA\u62BE\u62C0\u62C1"], ["9280", "\u62C3\u62CB\u62CF\u62D1\u62D5\u62DD\u62DE\u62E0\u62E1\u62E4\u62EA\u62EB\u62F0\u62F2\u62F5\u62F8\u62F9\u62FA\u62FB\u6300\u6303\u6304\u6305\u6306\u630A\u630B\u630C\u630D\u630F\u6310\u6312\u6313\u6314\u6315\u6317\u6318\u6319\u631C\u6326\u6327\u6329\u632C\u632D\u632E\u6330\u6331\u6333", 5, "\u633B\u633C\u633E\u633F\u6340\u6341\u6344\u6347\u6348\u634A\u6351\u6352\u6353\u6354\u6356", 7, "\u6360\u6364\u6365\u6366\u6368\u636A\u636B\u636C\u636F\u6370\u6372\u6373\u6374\u6375\u6378\u6379\u637C\u637D\u637E\u637F\u6381\u6383\u6384\u6385\u6386\u638B\u638D\u6391\u6393\u6394\u6395\u6397\u6399", 6, "\u63A1\u63A4\u63A6\u63AB\u63AF\u63B1\u63B2\u63B5\u63B6\u63B9\u63BB\u63BD\u63BF\u63C0"], ["9340", "\u63C1\u63C2\u63C3\u63C5\u63C7\u63C8\u63CA\u63CB\u63CC\u63D1\u63D3\u63D4\u63D5\u63D7", 6, "\u63DF\u63E2\u63E4", 4, "\u63EB\u63EC\u63EE\u63EF\u63F0\u63F1\u63F3\u63F5\u63F7\u63F9\u63FA\u63FB\u63FC\u63FE\u6403\u6404\u6406", 4, "\u640D\u640E\u6411\u6412\u6415", 5, "\u641D\u641F\u6422\u6423\u6424"], ["9380", "\u6425\u6427\u6428\u6429\u642B\u642E", 5, "\u6435", 4, "\u643B\u643C\u643E\u6440\u6442\u6443\u6449\u644B", 6, "\u6453\u6455\u6456\u6457\u6459", 4, "\u645F", 7, "\u6468\u646A\u646B\u646C\u646E", 9, "\u647B", 6, "\u6483\u6486\u6488", 8, "\u6493\u6494\u6497\u6498\u649A\u649B\u649C\u649D\u649F", 4, "\u64A5\u64A6\u64A7\u64A8\u64AA\u64AB\u64AF\u64B1\u64B2\u64B3\u64B4\u64B6\u64B9\u64BB\u64BD\u64BE\u64BF\u64C1\u64C3\u64C4\u64C6", 6, "\u64CF\u64D1\u64D3\u64D4\u64D5\u64D6\u64D9\u64DA"], ["9440", "\u64DB\u64DC\u64DD\u64DF\u64E0\u64E1\u64E3\u64E5\u64E7", 24, "\u6501", 7, "\u650A", 7, "\u6513", 4, "\u6519", 8], ["9480", "\u6522\u6523\u6524\u6526", 4, "\u652C\u652D\u6530\u6531\u6532\u6533\u6537\u653A\u653C\u653D\u6540", 4, "\u6546\u6547\u654A\u654B\u654D\u654E\u6550\u6552\u6553\u6554\u6557\u6558\u655A\u655C\u655F\u6560\u6561\u6564\u6565\u6567\u6568\u6569\u656A\u656D\u656E\u656F\u6571\u6573\u6575\u6576\u6578", 14, "\u6588\u6589\u658A\u658D\u658E\u658F\u6592\u6594\u6595\u6596\u6598\u659A\u659D\u659E\u65A0\u65A2\u65A3\u65A6\u65A8\u65AA\u65AC\u65AE\u65B1", 7, "\u65BA\u65BB\u65BE\u65BF\u65C0\u65C2\u65C7\u65C8\u65C9\u65CA\u65CD\u65D0\u65D1\u65D3\u65D4\u65D5\u65D8", 7, "\u65E1\u65E3\u65E4\u65EA\u65EB"], ["9540", "\u65F2\u65F3\u65F4\u65F5\u65F8\u65F9\u65FB", 4, "\u6601\u6604\u6605\u6607\u6608\u6609\u660B\u660D\u6610\u6611\u6612\u6616\u6617\u6618\u661A\u661B\u661C\u661E\u6621\u6622\u6623\u6624\u6626\u6629\u662A\u662B\u662C\u662E\u6630\u6632\u6633\u6637", 4, "\u663D\u663F\u6640\u6642\u6644", 6, "\u664D\u664E\u6650\u6651\u6658"], ["9580", "\u6659\u665B\u665C\u665D\u665E\u6660\u6662\u6663\u6665\u6667\u6669", 4, "\u6671\u6672\u6673\u6675\u6678\u6679\u667B\u667C\u667D\u667F\u6680\u6681\u6683\u6685\u6686\u6688\u6689\u668A\u668B\u668D\u668E\u668F\u6690\u6692\u6693\u6694\u6695\u6698", 4, "\u669E", 8, "\u66A9", 4, "\u66AF", 4, "\u66B5\u66B6\u66B7\u66B8\u66BA\u66BB\u66BC\u66BD\u66BF", 25, "\u66DA\u66DE", 7, "\u66E7\u66E8\u66EA", 5, "\u66F1\u66F5\u66F6\u66F8\u66FA\u66FB\u66FD\u6701\u6702\u6703"], ["9640", "\u6704\u6705\u6706\u6707\u670C\u670E\u670F\u6711\u6712\u6713\u6716\u6718\u6719\u671A\u671C\u671E\u6720", 5, "\u6727\u6729\u672E\u6730\u6732\u6733\u6736\u6737\u6738\u6739\u673B\u673C\u673E\u673F\u6741\u6744\u6745\u6747\u674A\u674B\u674D\u6752\u6754\u6755\u6757", 4, "\u675D\u6762\u6763\u6764\u6766\u6767\u676B\u676C\u676E\u6771\u6774\u6776"], ["9680", "\u6778\u6779\u677A\u677B\u677D\u6780\u6782\u6783\u6785\u6786\u6788\u678A\u678C\u678D\u678E\u678F\u6791\u6792\u6793\u6794\u6796\u6799\u679B\u679F\u67A0\u67A1\u67A4\u67A6\u67A9\u67AC\u67AE\u67B1\u67B2\u67B4\u67B9", 7, "\u67C2\u67C5", 9, "\u67D5\u67D6\u67D7\u67DB\u67DF\u67E1\u67E3\u67E4\u67E6\u67E7\u67E8\u67EA\u67EB\u67ED\u67EE\u67F2\u67F5", 7, "\u67FE\u6801\u6802\u6803\u6804\u6806\u680D\u6810\u6812\u6814\u6815\u6818", 4, "\u681E\u681F\u6820\u6822", 6, "\u682B", 6, "\u6834\u6835\u6836\u683A\u683B\u683F\u6847\u684B\u684D\u684F\u6852\u6856", 5], ["9740", "\u685C\u685D\u685E\u685F\u686A\u686C", 7, "\u6875\u6878", 8, "\u6882\u6884\u6887", 7, "\u6890\u6891\u6892\u6894\u6895\u6896\u6898", 9, "\u68A3\u68A4\u68A5\u68A9\u68AA\u68AB\u68AC\u68AE\u68B1\u68B2\u68B4\u68B6\u68B7\u68B8"], ["9780", "\u68B9", 6, "\u68C1\u68C3", 5, "\u68CA\u68CC\u68CE\u68CF\u68D0\u68D1\u68D3\u68D4\u68D6\u68D7\u68D9\u68DB", 4, "\u68E1\u68E2\u68E4", 9, "\u68EF\u68F2\u68F3\u68F4\u68F6\u68F7\u68F8\u68FB\u68FD\u68FE\u68FF\u6900\u6902\u6903\u6904\u6906", 4, "\u690C\u690F\u6911\u6913", 11, "\u6921\u6922\u6923\u6925", 7, "\u692E\u692F\u6931\u6932\u6933\u6935\u6936\u6937\u6938\u693A\u693B\u693C\u693E\u6940\u6941\u6943", 16, "\u6955\u6956\u6958\u6959\u695B\u695C\u695F"], ["9840", "\u6961\u6962\u6964\u6965\u6967\u6968\u6969\u696A\u696C\u696D\u696F\u6970\u6972", 4, "\u697A\u697B\u697D\u697E\u697F\u6981\u6983\u6985\u698A\u698B\u698C\u698E", 5, "\u6996\u6997\u6999\u699A\u699D", 9, "\u69A9\u69AA\u69AC\u69AE\u69AF\u69B0\u69B2\u69B3\u69B5\u69B6\u69B8\u69B9\u69BA\u69BC\u69BD"], ["9880", "\u69BE\u69BF\u69C0\u69C2", 7, "\u69CB\u69CD\u69CF\u69D1\u69D2\u69D3\u69D5", 5, "\u69DC\u69DD\u69DE\u69E1", 11, "\u69EE\u69EF\u69F0\u69F1\u69F3", 9, "\u69FE\u6A00", 9, "\u6A0B", 11, "\u6A19", 5, "\u6A20\u6A22", 5, "\u6A29\u6A2B\u6A2C\u6A2D\u6A2E\u6A30\u6A32\u6A33\u6A34\u6A36", 6, "\u6A3F", 4, "\u6A45\u6A46\u6A48", 7, "\u6A51", 6, "\u6A5A"], ["9940", "\u6A5C", 4, "\u6A62\u6A63\u6A64\u6A66", 10, "\u6A72", 6, "\u6A7A\u6A7B\u6A7D\u6A7E\u6A7F\u6A81\u6A82\u6A83\u6A85", 8, "\u6A8F\u6A92", 4, "\u6A98", 7, "\u6AA1", 5], ["9980", "\u6AA7\u6AA8\u6AAA\u6AAD", 114, "\u6B25\u6B26\u6B28", 6], ["9a40", "\u6B2F\u6B30\u6B31\u6B33\u6B34\u6B35\u6B36\u6B38\u6B3B\u6B3C\u6B3D\u6B3F\u6B40\u6B41\u6B42\u6B44\u6B45\u6B48\u6B4A\u6B4B\u6B4D", 11, "\u6B5A", 7, "\u6B68\u6B69\u6B6B", 13, "\u6B7A\u6B7D\u6B7E\u6B7F\u6B80\u6B85\u6B88"], ["9a80", "\u6B8C\u6B8E\u6B8F\u6B90\u6B91\u6B94\u6B95\u6B97\u6B98\u6B99\u6B9C", 4, "\u6BA2", 7, "\u6BAB", 7, "\u6BB6\u6BB8", 6, "\u6BC0\u6BC3\u6BC4\u6BC6", 4, "\u6BCC\u6BCE\u6BD0\u6BD1\u6BD8\u6BDA\u6BDC", 4, "\u6BE2", 7, "\u6BEC\u6BED\u6BEE\u6BF0\u6BF1\u6BF2\u6BF4\u6BF6\u6BF7\u6BF8\u6BFA\u6BFB\u6BFC\u6BFE", 6, "\u6C08", 4, "\u6C0E\u6C12\u6C17\u6C1C\u6C1D\u6C1E\u6C20\u6C23\u6C25\u6C2B\u6C2C\u6C2D\u6C31\u6C33\u6C36\u6C37\u6C39\u6C3A\u6C3B\u6C3C\u6C3E\u6C3F\u6C43\u6C44\u6C45\u6C48\u6C4B", 4, "\u6C51\u6C52\u6C53\u6C56\u6C58"], ["9b40", "\u6C59\u6C5A\u6C62\u6C63\u6C65\u6C66\u6C67\u6C6B", 4, "\u6C71\u6C73\u6C75\u6C77\u6C78\u6C7A\u6C7B\u6C7C\u6C7F\u6C80\u6C84\u6C87\u6C8A\u6C8B\u6C8D\u6C8E\u6C91\u6C92\u6C95\u6C96\u6C97\u6C98\u6C9A\u6C9C\u6C9D\u6C9E\u6CA0\u6CA2\u6CA8\u6CAC\u6CAF\u6CB0\u6CB4\u6CB5\u6CB6\u6CB7\u6CBA\u6CC0\u6CC1\u6CC2\u6CC3\u6CC6\u6CC7\u6CC8\u6CCB\u6CCD\u6CCE\u6CCF\u6CD1\u6CD2\u6CD8"], ["9b80", "\u6CD9\u6CDA\u6CDC\u6CDD\u6CDF\u6CE4\u6CE6\u6CE7\u6CE9\u6CEC\u6CED\u6CF2\u6CF4\u6CF9\u6CFF\u6D00\u6D02\u6D03\u6D05\u6D06\u6D08\u6D09\u6D0A\u6D0D\u6D0F\u6D10\u6D11\u6D13\u6D14\u6D15\u6D16\u6D18\u6D1C\u6D1D\u6D1F", 5, "\u6D26\u6D28\u6D29\u6D2C\u6D2D\u6D2F\u6D30\u6D34\u6D36\u6D37\u6D38\u6D3A\u6D3F\u6D40\u6D42\u6D44\u6D49\u6D4C\u6D50\u6D55\u6D56\u6D57\u6D58\u6D5B\u6D5D\u6D5F\u6D61\u6D62\u6D64\u6D65\u6D67\u6D68\u6D6B\u6D6C\u6D6D\u6D70\u6D71\u6D72\u6D73\u6D75\u6D76\u6D79\u6D7A\u6D7B\u6D7D", 4, "\u6D83\u6D84\u6D86\u6D87\u6D8A\u6D8B\u6D8D\u6D8F\u6D90\u6D92\u6D96", 4, "\u6D9C\u6DA2\u6DA5\u6DAC\u6DAD\u6DB0\u6DB1\u6DB3\u6DB4\u6DB6\u6DB7\u6DB9", 5, "\u6DC1\u6DC2\u6DC3\u6DC8\u6DC9\u6DCA"], ["9c40", "\u6DCD\u6DCE\u6DCF\u6DD0\u6DD2\u6DD3\u6DD4\u6DD5\u6DD7\u6DDA\u6DDB\u6DDC\u6DDF\u6DE2\u6DE3\u6DE5\u6DE7\u6DE8\u6DE9\u6DEA\u6DED\u6DEF\u6DF0\u6DF2\u6DF4\u6DF5\u6DF6\u6DF8\u6DFA\u6DFD", 7, "\u6E06\u6E07\u6E08\u6E09\u6E0B\u6E0F\u6E12\u6E13\u6E15\u6E18\u6E19\u6E1B\u6E1C\u6E1E\u6E1F\u6E22\u6E26\u6E27\u6E28\u6E2A\u6E2C\u6E2E\u6E30\u6E31\u6E33\u6E35"], ["9c80", "\u6E36\u6E37\u6E39\u6E3B", 7, "\u6E45", 7, "\u6E4F\u6E50\u6E51\u6E52\u6E55\u6E57\u6E59\u6E5A\u6E5C\u6E5D\u6E5E\u6E60", 10, "\u6E6C\u6E6D\u6E6F", 14, "\u6E80\u6E81\u6E82\u6E84\u6E87\u6E88\u6E8A", 4, "\u6E91", 6, "\u6E99\u6E9A\u6E9B\u6E9D\u6E9E\u6EA0\u6EA1\u6EA3\u6EA4\u6EA6\u6EA8\u6EA9\u6EAB\u6EAC\u6EAD\u6EAE\u6EB0\u6EB3\u6EB5\u6EB8\u6EB9\u6EBC\u6EBE\u6EBF\u6EC0\u6EC3\u6EC4\u6EC5\u6EC6\u6EC8\u6EC9\u6ECA\u6ECC\u6ECD\u6ECE\u6ED0\u6ED2\u6ED6\u6ED8\u6ED9\u6EDB\u6EDC\u6EDD\u6EE3\u6EE7\u6EEA", 5], ["9d40", "\u6EF0\u6EF1\u6EF2\u6EF3\u6EF5\u6EF6\u6EF7\u6EF8\u6EFA", 7, "\u6F03\u6F04\u6F05\u6F07\u6F08\u6F0A", 4, "\u6F10\u6F11\u6F12\u6F16", 9, "\u6F21\u6F22\u6F23\u6F25\u6F26\u6F27\u6F28\u6F2C\u6F2E\u6F30\u6F32\u6F34\u6F35\u6F37", 6, "\u6F3F\u6F40\u6F41\u6F42"], ["9d80", "\u6F43\u6F44\u6F45\u6F48\u6F49\u6F4A\u6F4C\u6F4E", 9, "\u6F59\u6F5A\u6F5B\u6F5D\u6F5F\u6F60\u6F61\u6F63\u6F64\u6F65\u6F67", 5, "\u6F6F\u6F70\u6F71\u6F73\u6F75\u6F76\u6F77\u6F79\u6F7B\u6F7D", 6, "\u6F85\u6F86\u6F87\u6F8A\u6F8B\u6F8F", 12, "\u6F9D\u6F9E\u6F9F\u6FA0\u6FA2", 4, "\u6FA8", 10, "\u6FB4\u6FB5\u6FB7\u6FB8\u6FBA", 5, "\u6FC1\u6FC3", 5, "\u6FCA", 6, "\u6FD3", 10, "\u6FDF\u6FE2\u6FE3\u6FE4\u6FE5"], ["9e40", "\u6FE6", 7, "\u6FF0", 32, "\u7012", 7, "\u701C", 6, "\u7024", 6], ["9e80", "\u702B", 9, "\u7036\u7037\u7038\u703A", 17, "\u704D\u704E\u7050", 13, "\u705F", 11, "\u706E\u7071\u7072\u7073\u7074\u7077\u7079\u707A\u707B\u707D\u7081\u7082\u7083\u7084\u7086\u7087\u7088\u708B\u708C\u708D\u708F\u7090\u7091\u7093\u7097\u7098\u709A\u709B\u709E", 12, "\u70B0\u70B2\u70B4\u70B5\u70B6\u70BA\u70BE\u70BF\u70C4\u70C5\u70C6\u70C7\u70C9\u70CB", 12, "\u70DA"], ["9f40", "\u70DC\u70DD\u70DE\u70E0\u70E1\u70E2\u70E3\u70E5\u70EA\u70EE\u70F0", 6, "\u70F8\u70FA\u70FB\u70FC\u70FE", 10, "\u710B", 4, "\u7111\u7112\u7114\u7117\u711B", 10, "\u7127", 7, "\u7132\u7133\u7134"], ["9f80", "\u7135\u7137", 13, "\u7146\u7147\u7148\u7149\u714B\u714D\u714F", 12, "\u715D\u715F", 4, "\u7165\u7169", 4, "\u716F\u7170\u7171\u7174\u7175\u7176\u7177\u7179\u717B\u717C\u717E", 5, "\u7185", 4, "\u718B\u718C\u718D\u718E\u7190\u7191\u7192\u7193\u7195\u7196\u7197\u719A", 4, "\u71A1", 6, "\u71A9\u71AA\u71AB\u71AD", 5, "\u71B4\u71B6\u71B7\u71B8\u71BA", 8, "\u71C4", 9, "\u71CF", 4], ["a040", "\u71D6", 9, "\u71E1\u71E2\u71E3\u71E4\u71E6\u71E8", 5, "\u71EF", 9, "\u71FA", 11, "\u7207", 19], ["a080", "\u721B\u721C\u721E", 9, "\u7229\u722B\u722D\u722E\u722F\u7232\u7233\u7234\u723A\u723C\u723E\u7240", 6, "\u7249\u724A\u724B\u724E\u724F\u7250\u7251\u7253\u7254\u7255\u7257\u7258\u725A\u725C\u725E\u7260\u7263\u7264\u7265\u7268\u726A\u726B\u726C\u726D\u7270\u7271\u7273\u7274\u7276\u7277\u7278\u727B\u727C\u727D\u7282\u7283\u7285", 4, "\u728C\u728E\u7290\u7291\u7293", 11, "\u72A0", 11, "\u72AE\u72B1\u72B2\u72B3\u72B5\u72BA", 6, "\u72C5\u72C6\u72C7\u72C9\u72CA\u72CB\u72CC\u72CF\u72D1\u72D3\u72D4\u72D5\u72D6\u72D8\u72DA\u72DB"], ["a1a1", "\u3000\u3001\u3002\xB7\u02C9\u02C7\xA8\u3003\u3005\u2014\uFF5E\u2016\u2026\u2018\u2019\u201C\u201D\u3014\u3015\u3008", 7, "\u3016\u3017\u3010\u3011\xB1\xD7\xF7\u2236\u2227\u2228\u2211\u220F\u222A\u2229\u2208\u2237\u221A\u22A5\u2225\u2220\u2312\u2299\u222B\u222E\u2261\u224C\u2248\u223D\u221D\u2260\u226E\u226F\u2264\u2265\u221E\u2235\u2234\u2642\u2640\xB0\u2032\u2033\u2103\uFF04\xA4\uFFE0\uFFE1\u2030\xA7\u2116\u2606\u2605\u25CB\u25CF\u25CE\u25C7\u25C6\u25A1\u25A0\u25B3\u25B2\u203B\u2192\u2190\u2191\u2193\u3013"], ["a2a1", "\u2170", 9], ["a2b1", "\u2488", 19, "\u2474", 19, "\u2460", 9], ["a2e5", "\u3220", 9], ["a2f1", "\u2160", 11], ["a3a1", "\uFF01\uFF02\uFF03\uFFE5\uFF05", 88, "\uFFE3"], ["a4a1", "\u3041", 82], ["a5a1", "\u30A1", 85], ["a6a1", "\u0391", 16, "\u03A3", 6], ["a6c1", "\u03B1", 16, "\u03C3", 6], ["a6e0", "\uFE35\uFE36\uFE39\uFE3A\uFE3F\uFE40\uFE3D\uFE3E\uFE41\uFE42\uFE43\uFE44"], ["a6ee", "\uFE3B\uFE3C\uFE37\uFE38\uFE31"], ["a6f4", "\uFE33\uFE34"], ["a7a1", "\u0410", 5, "\u0401\u0416", 25], ["a7d1", "\u0430", 5, "\u0451\u0436", 25], ["a840", "\u02CA\u02CB\u02D9\u2013\u2015\u2025\u2035\u2105\u2109\u2196\u2197\u2198\u2199\u2215\u221F\u2223\u2252\u2266\u2267\u22BF\u2550", 35, "\u2581", 6], ["a880", "\u2588", 7, "\u2593\u2594\u2595\u25BC\u25BD\u25E2\u25E3\u25E4\u25E5\u2609\u2295\u3012\u301D\u301E"], ["a8a1", "\u0101\xE1\u01CE\xE0\u0113\xE9\u011B\xE8\u012B\xED\u01D0\xEC\u014D\xF3\u01D2\xF2\u016B\xFA\u01D4\xF9\u01D6\u01D8\u01DA\u01DC\xFC\xEA\u0251"], ["a8bd", "\u0144\u0148"], ["a8c0", "\u0261"], ["a8c5", "\u3105", 36], ["a940", "\u3021", 8, "\u32A3\u338E\u338F\u339C\u339D\u339E\u33A1\u33C4\u33CE\u33D1\u33D2\u33D5\uFE30\uFFE2\uFFE4"], ["a959", "\u2121\u3231"], ["a95c", "\u2010"], ["a960", "\u30FC\u309B\u309C\u30FD\u30FE\u3006\u309D\u309E\uFE49", 9, "\uFE54\uFE55\uFE56\uFE57\uFE59", 8], ["a980", "\uFE62", 4, "\uFE68\uFE69\uFE6A\uFE6B"], ["a996", "\u3007"], ["a9a4", "\u2500", 75], ["aa40", "\u72DC\u72DD\u72DF\u72E2", 5, "\u72EA\u72EB\u72F5\u72F6\u72F9\u72FD\u72FE\u72FF\u7300\u7302\u7304", 5, "\u730B\u730C\u730D\u730F\u7310\u7311\u7312\u7314\u7318\u7319\u731A\u731F\u7320\u7323\u7324\u7326\u7327\u7328\u732D\u732F\u7330\u7332\u7333\u7335\u7336\u733A\u733B\u733C\u733D\u7340", 8], ["aa80", "\u7349\u734A\u734B\u734C\u734E\u734F\u7351\u7353\u7354\u7355\u7356\u7358", 7, "\u7361", 10, "\u736E\u7370\u7371"], ["ab40", "\u7372", 11, "\u737F", 4, "\u7385\u7386\u7388\u738A\u738C\u738D\u738F\u7390\u7392\u7393\u7394\u7395\u7397\u7398\u7399\u739A\u739C\u739D\u739E\u73A0\u73A1\u73A3", 5, "\u73AA\u73AC\u73AD\u73B1\u73B4\u73B5\u73B6\u73B8\u73B9\u73BC\u73BD\u73BE\u73BF\u73C1\u73C3", 4], ["ab80", "\u73CB\u73CC\u73CE\u73D2", 6, "\u73DA\u73DB\u73DC\u73DD\u73DF\u73E1\u73E2\u73E3\u73E4\u73E6\u73E8\u73EA\u73EB\u73EC\u73EE\u73EF\u73F0\u73F1\u73F3", 4], ["ac40", "\u73F8", 10, "\u7404\u7407\u7408\u740B\u740C\u740D\u740E\u7411", 8, "\u741C", 5, "\u7423\u7424\u7427\u7429\u742B\u742D\u742F\u7431\u7432\u7437", 4, "\u743D\u743E\u743F\u7440\u7442", 11], ["ac80", "\u744E", 6, "\u7456\u7458\u745D\u7460", 12, "\u746E\u746F\u7471", 4, "\u7478\u7479\u747A"], ["ad40", "\u747B\u747C\u747D\u747F\u7482\u7484\u7485\u7486\u7488\u7489\u748A\u748C\u748D\u748F\u7491", 10, "\u749D\u749F", 7, "\u74AA", 15, "\u74BB", 12], ["ad80", "\u74C8", 9, "\u74D3", 8, "\u74DD\u74DF\u74E1\u74E5\u74E7", 6, "\u74F0\u74F1\u74F2"], ["ae40", "\u74F3\u74F5\u74F8", 6, "\u7500\u7501\u7502\u7503\u7505", 7, "\u750E\u7510\u7512\u7514\u7515\u7516\u7517\u751B\u751D\u751E\u7520", 4, "\u7526\u7527\u752A\u752E\u7534\u7536\u7539\u753C\u753D\u753F\u7541\u7542\u7543\u7544\u7546\u7547\u7549\u754A\u754D\u7550\u7551\u7552\u7553\u7555\u7556\u7557\u7558"], ["ae80", "\u755D", 7, "\u7567\u7568\u7569\u756B", 6, "\u7573\u7575\u7576\u7577\u757A", 4, "\u7580\u7581\u7582\u7584\u7585\u7587"], ["af40", "\u7588\u7589\u758A\u758C\u758D\u758E\u7590\u7593\u7595\u7598\u759B\u759C\u759E\u75A2\u75A6", 4, "\u75AD\u75B6\u75B7\u75BA\u75BB\u75BF\u75C0\u75C1\u75C6\u75CB\u75CC\u75CE\u75CF\u75D0\u75D1\u75D3\u75D7\u75D9\u75DA\u75DC\u75DD\u75DF\u75E0\u75E1\u75E5\u75E9\u75EC\u75ED\u75EE\u75EF\u75F2\u75F3\u75F5\u75F6\u75F7\u75F8\u75FA\u75FB\u75FD\u75FE\u7602\u7604\u7606\u7607"], ["af80", "\u7608\u7609\u760B\u760D\u760E\u760F\u7611\u7612\u7613\u7614\u7616\u761A\u761C\u761D\u761E\u7621\u7623\u7627\u7628\u762C\u762E\u762F\u7631\u7632\u7636\u7637\u7639\u763A\u763B\u763D\u7641\u7642\u7644"], ["b040", "\u7645", 6, "\u764E", 5, "\u7655\u7657", 4, "\u765D\u765F\u7660\u7661\u7662\u7664", 6, "\u766C\u766D\u766E\u7670", 7, "\u7679\u767A\u767C\u767F\u7680\u7681\u7683\u7685\u7689\u768A\u768C\u768D\u768F\u7690\u7692\u7694\u7695\u7697\u7698\u769A\u769B"], ["b080", "\u769C", 7, "\u76A5", 8, "\u76AF\u76B0\u76B3\u76B5", 9, "\u76C0\u76C1\u76C3\u554A\u963F\u57C3\u6328\u54CE\u5509\u54C0\u7691\u764C\u853C\u77EE\u827E\u788D\u7231\u9698\u978D\u6C28\u5B89\u4FFA\u6309\u6697\u5CB8\u80FA\u6848\u80AE\u6602\u76CE\u51F9\u6556\u71AC\u7FF1\u8884\u50B2\u5965\u61CA\u6FB3\u82AD\u634C\u6252\u53ED\u5427\u7B06\u516B\u75A4\u5DF4\u62D4\u8DCB\u9776\u628A\u8019\u575D\u9738\u7F62\u7238\u767D\u67CF\u767E\u6446\u4F70\u8D25\u62DC\u7A17\u6591\u73ED\u642C\u6273\u822C\u9881\u677F\u7248\u626E\u62CC\u4F34\u74E3\u534A\u529E\u7ECA\u90A6\u5E2E\u6886\u699C\u8180\u7ED1\u68D2\u78C5\u868C\u9551\u508D\u8C24\u82DE\u80DE\u5305\u8912\u5265"], ["b140", "\u76C4\u76C7\u76C9\u76CB\u76CC\u76D3\u76D5\u76D9\u76DA\u76DC\u76DD\u76DE\u76E0", 4, "\u76E6", 7, "\u76F0\u76F3\u76F5\u76F6\u76F7\u76FA\u76FB\u76FD\u76FF\u7700\u7702\u7703\u7705\u7706\u770A\u770C\u770E", 10, "\u771B\u771C\u771D\u771E\u7721\u7723\u7724\u7725\u7727\u772A\u772B"], ["b180", "\u772C\u772E\u7730", 4, "\u7739\u773B\u773D\u773E\u773F\u7742\u7744\u7745\u7746\u7748", 7, "\u7752", 7, "\u775C\u8584\u96F9\u4FDD\u5821\u9971\u5B9D\u62B1\u62A5\u66B4\u8C79\u9C8D\u7206\u676F\u7891\u60B2\u5351\u5317\u8F88\u80CC\u8D1D\u94A1\u500D\u72C8\u5907\u60EB\u7119\u88AB\u5954\u82EF\u672C\u7B28\u5D29\u7EF7\u752D\u6CF5\u8E66\u8FF8\u903C\u9F3B\u6BD4\u9119\u7B14\u5F7C\u78A7\u84D6\u853D\u6BD5\u6BD9\u6BD6\u5E01\u5E87\u75F9\u95ED\u655D\u5F0A\u5FC5\u8F9F\u58C1\u81C2\u907F\u965B\u97AD\u8FB9\u7F16\u8D2C\u6241\u4FBF\u53D8\u535E\u8FA8\u8FA9\u8FAB\u904D\u6807\u5F6A\u8198\u8868\u9CD6\u618B\u522B\u762A\u5F6C\u658C\u6FD2\u6EE8\u5BBE\u6448\u5175\u51B0\u67C4\u4E19\u79C9\u997C\u70B3"], ["b240", "\u775D\u775E\u775F\u7760\u7764\u7767\u7769\u776A\u776D", 11, "\u777A\u777B\u777C\u7781\u7782\u7783\u7786", 5, "\u778F\u7790\u7793", 11, "\u77A1\u77A3\u77A4\u77A6\u77A8\u77AB\u77AD\u77AE\u77AF\u77B1\u77B2\u77B4\u77B6", 4], ["b280", "\u77BC\u77BE\u77C0", 12, "\u77CE", 8, "\u77D8\u77D9\u77DA\u77DD", 4, "\u77E4\u75C5\u5E76\u73BB\u83E0\u64AD\u62E8\u94B5\u6CE2\u535A\u52C3\u640F\u94C2\u7B94\u4F2F\u5E1B\u8236\u8116\u818A\u6E24\u6CCA\u9A73\u6355\u535C\u54FA\u8865\u57E0\u4E0D\u5E03\u6B65\u7C3F\u90E8\u6016\u64E6\u731C\u88C1\u6750\u624D\u8D22\u776C\u8E29\u91C7\u5F69\u83DC\u8521\u9910\u53C2\u8695\u6B8B\u60ED\u60E8\u707F\u82CD\u8231\u4ED3\u6CA7\u85CF\u64CD\u7CD9\u69FD\u66F9\u8349\u5395\u7B56\u4FA7\u518C\u6D4B\u5C42\u8E6D\u63D2\u53C9\u832C\u8336\u67E5\u78B4\u643D\u5BDF\u5C94\u5DEE\u8BE7\u62C6\u67F4\u8C7A\u6400\u63BA\u8749\u998B\u8C17\u7F20\u94F2\u4EA7\u9610\u98A4\u660C\u7316"], ["b340", "\u77E6\u77E8\u77EA\u77EF\u77F0\u77F1\u77F2\u77F4\u77F5\u77F7\u77F9\u77FA\u77FB\u77FC\u7803", 5, "\u780A\u780B\u780E\u780F\u7810\u7813\u7815\u7819\u781B\u781E\u7820\u7821\u7822\u7824\u7828\u782A\u782B\u782E\u782F\u7831\u7832\u7833\u7835\u7836\u783D\u783F\u7841\u7842\u7843\u7844\u7846\u7848\u7849\u784A\u784B\u784D\u784F\u7851\u7853\u7854\u7858\u7859\u785A"], ["b380", "\u785B\u785C\u785E", 11, "\u786F", 7, "\u7878\u7879\u787A\u787B\u787D", 6, "\u573A\u5C1D\u5E38\u957F\u507F\u80A0\u5382\u655E\u7545\u5531\u5021\u8D85\u6284\u949E\u671D\u5632\u6F6E\u5DE2\u5435\u7092\u8F66\u626F\u64A4\u63A3\u5F7B\u6F88\u90F4\u81E3\u8FB0\u5C18\u6668\u5FF1\u6C89\u9648\u8D81\u886C\u6491\u79F0\u57CE\u6A59\u6210\u5448\u4E58\u7A0B\u60E9\u6F84\u8BDA\u627F\u901E\u9A8B\u79E4\u5403\u75F4\u6301\u5319\u6C60\u8FDF\u5F1B\u9A70\u803B\u9F7F\u4F88\u5C3A\u8D64\u7FC5\u65A5\u70BD\u5145\u51B2\u866B\u5D07\u5BA0\u62BD\u916C\u7574\u8E0C\u7A20\u6101\u7B79\u4EC7\u7EF8\u7785\u4E11\u81ED\u521D\u51FA\u6A71\u53A8\u8E87\u9504\u96CF\u6EC1\u9664\u695A"], ["b440", "\u7884\u7885\u7886\u7888\u788A\u788B\u788F\u7890\u7892\u7894\u7895\u7896\u7899\u789D\u789E\u78A0\u78A2\u78A4\u78A6\u78A8", 7, "\u78B5\u78B6\u78B7\u78B8\u78BA\u78BB\u78BC\u78BD\u78BF\u78C0\u78C2\u78C3\u78C4\u78C6\u78C7\u78C8\u78CC\u78CD\u78CE\u78CF\u78D1\u78D2\u78D3\u78D6\u78D7\u78D8\u78DA", 9], ["b480", "\u78E4\u78E5\u78E6\u78E7\u78E9\u78EA\u78EB\u78ED", 4, "\u78F3\u78F5\u78F6\u78F8\u78F9\u78FB", 5, "\u7902\u7903\u7904\u7906", 6, "\u7840\u50A8\u77D7\u6410\u89E6\u5904\u63E3\u5DDD\u7A7F\u693D\u4F20\u8239\u5598\u4E32\u75AE\u7A97\u5E62\u5E8A\u95EF\u521B\u5439\u708A\u6376\u9524\u5782\u6625\u693F\u9187\u5507\u6DF3\u7EAF\u8822\u6233\u7EF0\u75B5\u8328\u78C1\u96CC\u8F9E\u6148\u74F7\u8BCD\u6B64\u523A\u8D50\u6B21\u806A\u8471\u56F1\u5306\u4ECE\u4E1B\u51D1\u7C97\u918B\u7C07\u4FC3\u8E7F\u7BE1\u7A9C\u6467\u5D14\u50AC\u8106\u7601\u7CB9\u6DEC\u7FE0\u6751\u5B58\u5BF8\u78CB\u64AE\u6413\u63AA\u632B\u9519\u642D\u8FBE\u7B54\u7629\u6253\u5927\u5446\u6B79\u50A3\u6234\u5E26\u6B86\u4EE3\u8D37\u888B\u5F85\u902E"], ["b540", "\u790D", 5, "\u7914", 9, "\u791F", 4, "\u7925", 14, "\u7935", 4, "\u793D\u793F\u7942\u7943\u7944\u7945\u7947\u794A", 8, "\u7954\u7955\u7958\u7959\u7961\u7963"], ["b580", "\u7964\u7966\u7969\u796A\u796B\u796C\u796E\u7970", 6, "\u7979\u797B", 4, "\u7982\u7983\u7986\u7987\u7988\u7989\u798B\u798C\u798D\u798E\u7990\u7991\u7992\u6020\u803D\u62C5\u4E39\u5355\u90F8\u63B8\u80C6\u65E6\u6C2E\u4F46\u60EE\u6DE1\u8BDE\u5F39\u86CB\u5F53\u6321\u515A\u8361\u6863\u5200\u6363\u8E48\u5012\u5C9B\u7977\u5BFC\u5230\u7A3B\u60BC\u9053\u76D7\u5FB7\u5F97\u7684\u8E6C\u706F\u767B\u7B49\u77AA\u51F3\u9093\u5824\u4F4E\u6EF4\u8FEA\u654C\u7B1B\u72C4\u6DA4\u7FDF\u5AE1\u62B5\u5E95\u5730\u8482\u7B2C\u5E1D\u5F1F\u9012\u7F14\u98A0\u6382\u6EC7\u7898\u70B9\u5178\u975B\u57AB\u7535\u4F43\u7538\u5E97\u60E6\u5960\u6DC0\u6BBF\u7889\u53FC\u96D5\u51CB\u5201\u6389\u540A\u9493\u8C03\u8DCC\u7239\u789F\u8776\u8FED\u8C0D\u53E0"], ["b640", "\u7993", 6, "\u799B", 11, "\u79A8", 10, "\u79B4", 4, "\u79BC\u79BF\u79C2\u79C4\u79C5\u79C7\u79C8\u79CA\u79CC\u79CE\u79CF\u79D0\u79D3\u79D4\u79D6\u79D7\u79D9", 5, "\u79E0\u79E1\u79E2\u79E5\u79E8\u79EA"], ["b680", "\u79EC\u79EE\u79F1", 6, "\u79F9\u79FA\u79FC\u79FE\u79FF\u7A01\u7A04\u7A05\u7A07\u7A08\u7A09\u7A0A\u7A0C\u7A0F", 4, "\u7A15\u7A16\u7A18\u7A19\u7A1B\u7A1C\u4E01\u76EF\u53EE\u9489\u9876\u9F0E\u952D\u5B9A\u8BA2\u4E22\u4E1C\u51AC\u8463\u61C2\u52A8\u680B\u4F97\u606B\u51BB\u6D1E\u515C\u6296\u6597\u9661\u8C46\u9017\u75D8\u90FD\u7763\u6BD2\u728A\u72EC\u8BFB\u5835\u7779\u8D4C\u675C\u9540\u809A\u5EA6\u6E21\u5992\u7AEF\u77ED\u953B\u6BB5\u65AD\u7F0E\u5806\u5151\u961F\u5BF9\u58A9\u5428\u8E72\u6566\u987F\u56E4\u949D\u76FE\u9041\u6387\u54C6\u591A\u593A\u579B\u8EB2\u6735\u8DFA\u8235\u5241\u60F0\u5815\u86FE\u5CE8\u9E45\u4FC4\u989D\u8BB9\u5A25\u6076\u5384\u627C\u904F\u9102\u997F\u6069\u800C\u513F\u8033\u5C14\u9975\u6D31\u4E8C"], ["b740", "\u7A1D\u7A1F\u7A21\u7A22\u7A24", 14, "\u7A34\u7A35\u7A36\u7A38\u7A3A\u7A3E\u7A40", 5, "\u7A47", 9, "\u7A52", 4, "\u7A58", 16], ["b780", "\u7A69", 6, "\u7A71\u7A72\u7A73\u7A75\u7A7B\u7A7C\u7A7D\u7A7E\u7A82\u7A85\u7A87\u7A89\u7A8A\u7A8B\u7A8C\u7A8E\u7A8F\u7A90\u7A93\u7A94\u7A99\u7A9A\u7A9B\u7A9E\u7AA1\u7AA2\u8D30\u53D1\u7F5A\u7B4F\u4F10\u4E4F\u9600\u6CD5\u73D0\u85E9\u5E06\u756A\u7FFB\u6A0A\u77FE\u9492\u7E41\u51E1\u70E6\u53CD\u8FD4\u8303\u8D29\u72AF\u996D\u6CDB\u574A\u82B3\u65B9\u80AA\u623F\u9632\u59A8\u4EFF\u8BBF\u7EBA\u653E\u83F2\u975E\u5561\u98DE\u80A5\u532A\u8BFD\u5420\u80BA\u5E9F\u6CB8\u8D39\u82AC\u915A\u5429\u6C1B\u5206\u7EB7\u575F\u711A\u6C7E\u7C89\u594B\u4EFD\u5FFF\u6124\u7CAA\u4E30\u5C01\u67AB\u8702\u5CF0\u950B\u98CE\u75AF\u70FD\u9022\u51AF\u7F1D\u8BBD\u5949\u51E4\u4F5B\u5426\u592B\u6577\u80A4\u5B75\u6276\u62C2\u8F90\u5E45\u6C1F\u7B26\u4F0F\u4FD8\u670D"], ["b840", "\u7AA3\u7AA4\u7AA7\u7AA9\u7AAA\u7AAB\u7AAE", 4, "\u7AB4", 10, "\u7AC0", 10, "\u7ACC", 9, "\u7AD7\u7AD8\u7ADA\u7ADB\u7ADC\u7ADD\u7AE1\u7AE2\u7AE4\u7AE7", 5, "\u7AEE\u7AF0\u7AF1\u7AF2\u7AF3"], ["b880", "\u7AF4", 4, "\u7AFB\u7AFC\u7AFE\u7B00\u7B01\u7B02\u7B05\u7B07\u7B09\u7B0C\u7B0D\u7B0E\u7B10\u7B12\u7B13\u7B16\u7B17\u7B18\u7B1A\u7B1C\u7B1D\u7B1F\u7B21\u7B22\u7B23\u7B27\u7B29\u7B2D\u6D6E\u6DAA\u798F\u88B1\u5F17\u752B\u629A\u8F85\u4FEF\u91DC\u65A7\u812F\u8151\u5E9C\u8150\u8D74\u526F\u8986\u8D4B\u590D\u5085\u4ED8\u961C\u7236\u8179\u8D1F\u5BCC\u8BA3\u9644\u5987\u7F1A\u5490\u5676\u560E\u8BE5\u6539\u6982\u9499\u76D6\u6E89\u5E72\u7518\u6746\u67D1\u7AFF\u809D\u8D76\u611F\u79C6\u6562\u8D63\u5188\u521A\u94A2\u7F38\u809B\u7EB2\u5C97\u6E2F\u6760\u7BD9\u768B\u9AD8\u818F\u7F94\u7CD5\u641E\u9550\u7A3F\u544A\u54E5\u6B4C\u6401\u6208\u9E3D\u80F3\u7599\u5272\u9769\u845B\u683C\u86E4\u9601\u9694\u94EC\u4E2A\u5404\u7ED9\u6839\u8DDF\u8015\u66F4\u5E9A\u7FB9"], ["b940", "\u7B2F\u7B30\u7B32\u7B34\u7B35\u7B36\u7B37\u7B39\u7B3B\u7B3D\u7B3F", 5, "\u7B46\u7B48\u7B4A\u7B4D\u7B4E\u7B53\u7B55\u7B57\u7B59\u7B5C\u7B5E\u7B5F\u7B61\u7B63", 10, "\u7B6F\u7B70\u7B73\u7B74\u7B76\u7B78\u7B7A\u7B7C\u7B7D\u7B7F\u7B81\u7B82\u7B83\u7B84\u7B86", 6, "\u7B8E\u7B8F"], ["b980", "\u7B91\u7B92\u7B93\u7B96\u7B98\u7B99\u7B9A\u7B9B\u7B9E\u7B9F\u7BA0\u7BA3\u7BA4\u7BA5\u7BAE\u7BAF\u7BB0\u7BB2\u7BB3\u7BB5\u7BB6\u7BB7\u7BB9", 7, "\u7BC2\u7BC3\u7BC4\u57C2\u803F\u6897\u5DE5\u653B\u529F\u606D\u9F9A\u4F9B\u8EAC\u516C\u5BAB\u5F13\u5DE9\u6C5E\u62F1\u8D21\u5171\u94A9\u52FE\u6C9F\u82DF\u72D7\u57A2\u6784\u8D2D\u591F\u8F9C\u83C7\u5495\u7B8D\u4F30\u6CBD\u5B64\u59D1\u9F13\u53E4\u86CA\u9AA8\u8C37\u80A1\u6545\u987E\u56FA\u96C7\u522E\u74DC\u5250\u5BE1\u6302\u8902\u4E56\u62D0\u602A\u68FA\u5173\u5B98\u51A0\u89C2\u7BA1\u9986\u7F50\u60EF\u704C\u8D2F\u5149\u5E7F\u901B\u7470\u89C4\u572D\u7845\u5F52\u9F9F\u95FA\u8F68\u9B3C\u8BE1\u7678\u6842\u67DC\u8DEA\u8D35\u523D\u8F8A\u6EDA\u68CD\u9505\u90ED\u56FD\u679C\u88F9\u8FC7\u54C8"], ["ba40", "\u7BC5\u7BC8\u7BC9\u7BCA\u7BCB\u7BCD\u7BCE\u7BCF\u7BD0\u7BD2\u7BD4", 4, "\u7BDB\u7BDC\u7BDE\u7BDF\u7BE0\u7BE2\u7BE3\u7BE4\u7BE7\u7BE8\u7BE9\u7BEB\u7BEC\u7BED\u7BEF\u7BF0\u7BF2", 4, "\u7BF8\u7BF9\u7BFA\u7BFB\u7BFD\u7BFF", 7, "\u7C08\u7C09\u7C0A\u7C0D\u7C0E\u7C10", 5, "\u7C17\u7C18\u7C19"], ["ba80", "\u7C1A", 4, "\u7C20", 5, "\u7C28\u7C29\u7C2B", 12, "\u7C39", 5, "\u7C42\u9AB8\u5B69\u6D77\u6C26\u4EA5\u5BB3\u9A87\u9163\u61A8\u90AF\u97E9\u542B\u6DB5\u5BD2\u51FD\u558A\u7F55\u7FF0\u64BC\u634D\u65F1\u61BE\u608D\u710A\u6C57\u6C49\u592F\u676D\u822A\u58D5\u568E\u8C6A\u6BEB\u90DD\u597D\u8017\u53F7\u6D69\u5475\u559D\u8377\u83CF\u6838\u79BE\u548C\u4F55\u5408\u76D2\u8C89\u9602\u6CB3\u6DB8\u8D6B\u8910\u9E64\u8D3A\u563F\u9ED1\u75D5\u5F88\u72E0\u6068\u54FC\u4EA8\u6A2A\u8861\u6052\u8F70\u54C4\u70D8\u8679\u9E3F\u6D2A\u5B8F\u5F18\u7EA2\u5589\u4FAF\u7334\u543C\u539A\u5019\u540E\u547C\u4E4E\u5FFD\u745A\u58F6\u846B\u80E1\u8774\u72D0\u7CCA\u6E56"], ["bb40", "\u7C43", 9, "\u7C4E", 36, "\u7C75", 5, "\u7C7E", 9], ["bb80", "\u7C88\u7C8A", 6, "\u7C93\u7C94\u7C96\u7C99\u7C9A\u7C9B\u7CA0\u7CA1\u7CA3\u7CA6\u7CA7\u7CA8\u7CA9\u7CAB\u7CAC\u7CAD\u7CAF\u7CB0\u7CB4", 4, "\u7CBA\u7CBB\u5F27\u864E\u552C\u62A4\u4E92\u6CAA\u6237\u82B1\u54D7\u534E\u733E\u6ED1\u753B\u5212\u5316\u8BDD\u69D0\u5F8A\u6000\u6DEE\u574F\u6B22\u73AF\u6853\u8FD8\u7F13\u6362\u60A3\u5524\u75EA\u8C62\u7115\u6DA3\u5BA6\u5E7B\u8352\u614C\u9EC4\u78FA\u8757\u7C27\u7687\u51F0\u60F6\u714C\u6643\u5E4C\u604D\u8C0E\u7070\u6325\u8F89\u5FBD\u6062\u86D4\u56DE\u6BC1\u6094\u6167\u5349\u60E0\u6666\u8D3F\u79FD\u4F1A\u70E9\u6C47\u8BB3\u8BF2\u7ED8\u8364\u660F\u5A5A\u9B42\u6D51\u6DF7\u8C41\u6D3B\u4F19\u706B\u83B7\u6216\u60D1\u970D\u8D27\u7978\u51FB\u573E\u57FA\u673A\u7578\u7A3D\u79EF\u7B95"], ["bc40", "\u7CBF\u7CC0\u7CC2\u7CC3\u7CC4\u7CC6\u7CC9\u7CCB\u7CCE", 6, "\u7CD8\u7CDA\u7CDB\u7CDD\u7CDE\u7CE1", 6, "\u7CE9", 5, "\u7CF0", 7, "\u7CF9\u7CFA\u7CFC", 13, "\u7D0B", 5], ["bc80", "\u7D11", 14, "\u7D21\u7D23\u7D24\u7D25\u7D26\u7D28\u7D29\u7D2A\u7D2C\u7D2D\u7D2E\u7D30", 6, "\u808C\u9965\u8FF9\u6FC0\u8BA5\u9E21\u59EC\u7EE9\u7F09\u5409\u6781\u68D8\u8F91\u7C4D\u96C6\u53CA\u6025\u75BE\u6C72\u5373\u5AC9\u7EA7\u6324\u51E0\u810A\u5DF1\u84DF\u6280\u5180\u5B63\u4F0E\u796D\u5242\u60B8\u6D4E\u5BC4\u5BC2\u8BA1\u8BB0\u65E2\u5FCC\u9645\u5993\u7EE7\u7EAA\u5609\u67B7\u5939\u4F73\u5BB6\u52A0\u835A\u988A\u8D3E\u7532\u94BE\u5047\u7A3C\u4EF7\u67B6\u9A7E\u5AC1\u6B7C\u76D1\u575A\u5C16\u7B3A\u95F4\u714E\u517C\u80A9\u8270\u5978\u7F04\u8327\u68C0\u67EC\u78B1\u7877\u62E3\u6361\u7B80\u4FED\u526A\u51CF\u8350\u69DB\u9274\u8DF5\u8D31\u89C1\u952E\u7BAD\u4EF6"], ["bd40", "\u7D37", 54, "\u7D6F", 7], ["bd80", "\u7D78", 32, "\u5065\u8230\u5251\u996F\u6E10\u6E85\u6DA7\u5EFA\u50F5\u59DC\u5C06\u6D46\u6C5F\u7586\u848B\u6868\u5956\u8BB2\u5320\u9171\u964D\u8549\u6912\u7901\u7126\u80F6\u4EA4\u90CA\u6D47\u9A84\u5A07\u56BC\u6405\u94F0\u77EB\u4FA5\u811A\u72E1\u89D2\u997A\u7F34\u7EDE\u527F\u6559\u9175\u8F7F\u8F83\u53EB\u7A96\u63ED\u63A5\u7686\u79F8\u8857\u9636\u622A\u52AB\u8282\u6854\u6770\u6377\u776B\u7AED\u6D01\u7ED3\u89E3\u59D0\u6212\u85C9\u82A5\u754C\u501F\u4ECB\u75A5\u8BEB\u5C4A\u5DFE\u7B4B\u65A4\u91D1\u4ECA\u6D25\u895F\u7D27\u9526\u4EC5\u8C28\u8FDB\u9773\u664B\u7981\u8FD1\u70EC\u6D78"], ["be40", "\u7D99", 12, "\u7DA7", 6, "\u7DAF", 42], ["be80", "\u7DDA", 32, "\u5C3D\u52B2\u8346\u5162\u830E\u775B\u6676\u9CB8\u4EAC\u60CA\u7CBE\u7CB3\u7ECF\u4E95\u8B66\u666F\u9888\u9759\u5883\u656C\u955C\u5F84\u75C9\u9756\u7ADF\u7ADE\u51C0\u70AF\u7A98\u63EA\u7A76\u7EA0\u7396\u97ED\u4E45\u7078\u4E5D\u9152\u53A9\u6551\u65E7\u81FC\u8205\u548E\u5C31\u759A\u97A0\u62D8\u72D9\u75BD\u5C45\u9A79\u83CA\u5C40\u5480\u77E9\u4E3E\u6CAE\u805A\u62D2\u636E\u5DE8\u5177\u8DDD\u8E1E\u952F\u4FF1\u53E5\u60E7\u70AC\u5267\u6350\u9E43\u5A1F\u5026\u7737\u5377\u7EE2\u6485\u652B\u6289\u6398\u5014\u7235\u89C9\u51B3\u8BC0\u7EDD\u5747\u83CC\u94A7\u519B\u541B\u5CFB"], ["bf40", "\u7DFB", 62], ["bf80", "\u7E3A\u7E3C", 4, "\u7E42", 4, "\u7E48", 21, "\u4FCA\u7AE3\u6D5A\u90E1\u9A8F\u5580\u5496\u5361\u54AF\u5F00\u63E9\u6977\u51EF\u6168\u520A\u582A\u52D8\u574E\u780D\u770B\u5EB7\u6177\u7CE0\u625B\u6297\u4EA2\u7095\u8003\u62F7\u70E4\u9760\u5777\u82DB\u67EF\u68F5\u78D5\u9897\u79D1\u58F3\u54B3\u53EF\u6E34\u514B\u523B\u5BA2\u8BFE\u80AF\u5543\u57A6\u6073\u5751\u542D\u7A7A\u6050\u5B54\u63A7\u62A0\u53E3\u6263\u5BC7\u67AF\u54ED\u7A9F\u82E6\u9177\u5E93\u88E4\u5938\u57AE\u630E\u8DE8\u80EF\u5757\u7B77\u4FA9\u5FEB\u5BBD\u6B3E\u5321\u7B50\u72C2\u6846\u77FF\u7736\u65F7\u51B5\u4E8F\u76D4\u5CBF\u7AA5\u8475\u594E\u9B41\u5080"], ["c040", "\u7E5E", 35, "\u7E83", 23, "\u7E9C\u7E9D\u7E9E"], ["c080", "\u7EAE\u7EB4\u7EBB\u7EBC\u7ED6\u7EE4\u7EEC\u7EF9\u7F0A\u7F10\u7F1E\u7F37\u7F39\u7F3B", 6, "\u7F43\u7F46", 9, "\u7F52\u7F53\u9988\u6127\u6E83\u5764\u6606\u6346\u56F0\u62EC\u6269\u5ED3\u9614\u5783\u62C9\u5587\u8721\u814A\u8FA3\u5566\u83B1\u6765\u8D56\u84DD\u5A6A\u680F\u62E6\u7BEE\u9611\u5170\u6F9C\u8C30\u63FD\u89C8\u61D2\u7F06\u70C2\u6EE5\u7405\u6994\u72FC\u5ECA\u90CE\u6717\u6D6A\u635E\u52B3\u7262\u8001\u4F6C\u59E5\u916A\u70D9\u6D9D\u52D2\u4E50\u96F7\u956D\u857E\u78CA\u7D2F\u5121\u5792\u64C2\u808B\u7C7B\u6CEA\u68F1\u695E\u51B7\u5398\u68A8\u7281\u9ECE\u7BF1\u72F8\u79BB\u6F13\u7406\u674E\u91CC\u9CA4\u793C\u8389\u8354\u540F\u6817\u4E3D\u5389\u52B1\u783E\u5386\u5229\u5088\u4F8B\u4FD0"], ["c140", "\u7F56\u7F59\u7F5B\u7F5C\u7F5D\u7F5E\u7F60\u7F63", 4, "\u7F6B\u7F6C\u7F6D\u7F6F\u7F70\u7F73\u7F75\u7F76\u7F77\u7F78\u7F7A\u7F7B\u7F7C\u7F7D\u7F7F\u7F80\u7F82", 7, "\u7F8B\u7F8D\u7F8F", 4, "\u7F95", 4, "\u7F9B\u7F9C\u7FA0\u7FA2\u7FA3\u7FA5\u7FA6\u7FA8", 6, "\u7FB1"], ["c180", "\u7FB3", 4, "\u7FBA\u7FBB\u7FBE\u7FC0\u7FC2\u7FC3\u7FC4\u7FC6\u7FC7\u7FC8\u7FC9\u7FCB\u7FCD\u7FCF", 4, "\u7FD6\u7FD7\u7FD9", 5, "\u7FE2\u7FE3\u75E2\u7ACB\u7C92\u6CA5\u96B6\u529B\u7483\u54E9\u4FE9\u8054\u83B2\u8FDE\u9570\u5EC9\u601C\u6D9F\u5E18\u655B\u8138\u94FE\u604B\u70BC\u7EC3\u7CAE\u51C9\u6881\u7CB1\u826F\u4E24\u8F86\u91CF\u667E\u4EAE\u8C05\u64A9\u804A\u50DA\u7597\u71CE\u5BE5\u8FBD\u6F66\u4E86\u6482\u9563\u5ED6\u6599\u5217\u88C2\u70C8\u52A3\u730E\u7433\u6797\u78F7\u9716\u4E34\u90BB\u9CDE\u6DCB\u51DB\u8D41\u541D\u62CE\u73B2\u83F1\u96F6\u9F84\u94C3\u4F36\u7F9A\u51CC\u7075\u9675\u5CAD\u9886\u53E6\u4EE4\u6E9C\u7409\u69B4\u786B\u998F\u7559\u5218\u7624\u6D41\u67F3\u516D\u9F99\u804B\u5499\u7B3C\u7ABF"], ["c240", "\u7FE4\u7FE7\u7FE8\u7FEA\u7FEB\u7FEC\u7FED\u7FEF\u7FF2\u7FF4", 6, "\u7FFD\u7FFE\u7FFF\u8002\u8007\u8008\u8009\u800A\u800E\u800F\u8011\u8013\u801A\u801B\u801D\u801E\u801F\u8021\u8023\u8024\u802B", 5, "\u8032\u8034\u8039\u803A\u803C\u803E\u8040\u8041\u8044\u8045\u8047\u8048\u8049\u804E\u804F\u8050\u8051\u8053\u8055\u8056\u8057"], ["c280", "\u8059\u805B", 13, "\u806B", 5, "\u8072", 11, "\u9686\u5784\u62E2\u9647\u697C\u5A04\u6402\u7BD3\u6F0F\u964B\u82A6\u5362\u9885\u5E90\u7089\u63B3\u5364\u864F\u9C81\u9E93\u788C\u9732\u8DEF\u8D42\u9E7F\u6F5E\u7984\u5F55\u9646\u622E\u9A74\u5415\u94DD\u4FA3\u65C5\u5C65\u5C61\u7F15\u8651\u6C2F\u5F8B\u7387\u6EE4\u7EFF\u5CE6\u631B\u5B6A\u6EE6\u5375\u4E71\u63A0\u7565\u62A1\u8F6E\u4F26\u4ED1\u6CA6\u7EB6\u8BBA\u841D\u87BA\u7F57\u903B\u9523\u7BA9\u9AA1\u88F8\u843D\u6D1B\u9A86\u7EDC\u5988\u9EBB\u739B\u7801\u8682\u9A6C\u9A82\u561B\u5417\u57CB\u4E70\u9EA6\u5356\u8FC8\u8109\u7792\u9992\u86EE\u6EE1\u8513\u66FC\u6162\u6F2B"], ["c340", "\u807E\u8081\u8082\u8085\u8088\u808A\u808D", 5, "\u8094\u8095\u8097\u8099\u809E\u80A3\u80A6\u80A7\u80A8\u80AC\u80B0\u80B3\u80B5\u80B6\u80B8\u80B9\u80BB\u80C5\u80C7", 4, "\u80CF", 6, "\u80D8\u80DF\u80E0\u80E2\u80E3\u80E6\u80EE\u80F5\u80F7\u80F9\u80FB\u80FE\u80FF\u8100\u8101\u8103\u8104\u8105\u8107\u8108\u810B"], ["c380", "\u810C\u8115\u8117\u8119\u811B\u811C\u811D\u811F", 12, "\u812D\u812E\u8130\u8133\u8134\u8135\u8137\u8139", 4, "\u813F\u8C29\u8292\u832B\u76F2\u6C13\u5FD9\u83BD\u732B\u8305\u951A\u6BDB\u77DB\u94C6\u536F\u8302\u5192\u5E3D\u8C8C\u8D38\u4E48\u73AB\u679A\u6885\u9176\u9709\u7164\u6CA1\u7709\u5A92\u9541\u6BCF\u7F8E\u6627\u5BD0\u59B9\u5A9A\u95E8\u95F7\u4EEC\u840C\u8499\u6AAC\u76DF\u9530\u731B\u68A6\u5B5F\u772F\u919A\u9761\u7CDC\u8FF7\u8C1C\u5F25\u7C73\u79D8\u89C5\u6CCC\u871C\u5BC6\u5E42\u68C9\u7720\u7EF5\u5195\u514D\u52C9\u5A29\u7F05\u9762\u82D7\u63CF\u7784\u85D0\u79D2\u6E3A\u5E99\u5999\u8511\u706D\u6C11\u62BF\u76BF\u654F\u60AF\u95FD\u660E\u879F\u9E23\u94ED\u540D\u547D\u8C2C\u6478"], ["c440", "\u8140", 5, "\u8147\u8149\u814D\u814E\u814F\u8152\u8156\u8157\u8158\u815B", 4, "\u8161\u8162\u8163\u8164\u8166\u8168\u816A\u816B\u816C\u816F\u8172\u8173\u8175\u8176\u8177\u8178\u8181\u8183", 4, "\u8189\u818B\u818C\u818D\u818E\u8190\u8192", 5, "\u8199\u819A\u819E", 4, "\u81A4\u81A5"], ["c480", "\u81A7\u81A9\u81AB", 7, "\u81B4", 5, "\u81BC\u81BD\u81BE\u81BF\u81C4\u81C5\u81C7\u81C8\u81C9\u81CB\u81CD", 6, "\u6479\u8611\u6A21\u819C\u78E8\u6469\u9B54\u62B9\u672B\u83AB\u58A8\u9ED8\u6CAB\u6F20\u5BDE\u964C\u8C0B\u725F\u67D0\u62C7\u7261\u4EA9\u59C6\u6BCD\u5893\u66AE\u5E55\u52DF\u6155\u6728\u76EE\u7766\u7267\u7A46\u62FF\u54EA\u5450\u94A0\u90A3\u5A1C\u7EB3\u6C16\u4E43\u5976\u8010\u5948\u5357\u7537\u96BE\u56CA\u6320\u8111\u607C\u95F9\u6DD6\u5462\u9981\u5185\u5AE9\u80FD\u59AE\u9713\u502A\u6CE5\u5C3C\u62DF\u4F60\u533F\u817B\u9006\u6EBA\u852B\u62C8\u5E74\u78BE\u64B5\u637B\u5FF5\u5A18\u917F\u9E1F\u5C3F\u634F\u8042\u5B7D\u556E\u954A\u954D\u6D85\u60A8\u67E0\u72DE\u51DD\u5B81"], ["c540", "\u81D4", 14, "\u81E4\u81E5\u81E6\u81E8\u81E9\u81EB\u81EE", 4, "\u81F5", 5, "\u81FD\u81FF\u8203\u8207", 4, "\u820E\u820F\u8211\u8213\u8215", 5, "\u821D\u8220\u8224\u8225\u8226\u8227\u8229\u822E\u8232\u823A\u823C\u823D\u823F"], ["c580", "\u8240\u8241\u8242\u8243\u8245\u8246\u8248\u824A\u824C\u824D\u824E\u8250", 7, "\u8259\u825B\u825C\u825D\u825E\u8260", 7, "\u8269\u62E7\u6CDE\u725B\u626D\u94AE\u7EBD\u8113\u6D53\u519C\u5F04\u5974\u52AA\u6012\u5973\u6696\u8650\u759F\u632A\u61E6\u7CEF\u8BFA\u54E6\u6B27\u9E25\u6BB4\u85D5\u5455\u5076\u6CA4\u556A\u8DB4\u722C\u5E15\u6015\u7436\u62CD\u6392\u724C\u5F98\u6E43\u6D3E\u6500\u6F58\u76D8\u78D0\u76FC\u7554\u5224\u53DB\u4E53\u5E9E\u65C1\u802A\u80D6\u629B\u5486\u5228\u70AE\u888D\u8DD1\u6CE1\u5478\u80DA\u57F9\u88F4\u8D54\u966A\u914D\u4F69\u6C9B\u55B7\u76C6\u7830\u62A8\u70F9\u6F8E\u5F6D\u84EC\u68DA\u787C\u7BF7\u81A8\u670B\u9E4F\u6367\u78B0\u576F\u7812\u9739\u6279\u62AB\u5288\u7435\u6BD7"], ["c640", "\u826A\u826B\u826C\u826D\u8271\u8275\u8276\u8277\u8278\u827B\u827C\u8280\u8281\u8283\u8285\u8286\u8287\u8289\u828C\u8290\u8293\u8294\u8295\u8296\u829A\u829B\u829E\u82A0\u82A2\u82A3\u82A7\u82B2\u82B5\u82B6\u82BA\u82BB\u82BC\u82BF\u82C0\u82C2\u82C3\u82C5\u82C6\u82C9\u82D0\u82D6\u82D9\u82DA\u82DD\u82E2\u82E7\u82E8\u82E9\u82EA\u82EC\u82ED\u82EE\u82F0\u82F2\u82F3\u82F5\u82F6\u82F8"], ["c680", "\u82FA\u82FC", 4, "\u830A\u830B\u830D\u8310\u8312\u8313\u8316\u8318\u8319\u831D", 9, "\u8329\u832A\u832E\u8330\u8332\u8337\u833B\u833D\u5564\u813E\u75B2\u76AE\u5339\u75DE\u50FB\u5C41\u8B6C\u7BC7\u504F\u7247\u9A97\u98D8\u6F02\u74E2\u7968\u6487\u77A5\u62FC\u9891\u8D2B\u54C1\u8058\u4E52\u576A\u82F9\u840D\u5E73\u51ED\u74F6\u8BC4\u5C4F\u5761\u6CFC\u9887\u5A46\u7834\u9B44\u8FEB\u7C95\u5256\u6251\u94FA\u4EC6\u8386\u8461\u83E9\u84B2\u57D4\u6734\u5703\u666E\u6D66\u8C31\u66DD\u7011\u671F\u6B3A\u6816\u621A\u59BB\u4E03\u51C4\u6F06\u67D2\u6C8F\u5176\u68CB\u5947\u6B67\u7566\u5D0E\u8110\u9F50\u65D7\u7948\u7941\u9A91\u8D77\u5C82\u4E5E\u4F01\u542F\u5951\u780C\u5668\u6C14\u8FC4\u5F03\u6C7D\u6CE3\u8BAB\u6390"], ["c740", "\u833E\u833F\u8341\u8342\u8344\u8345\u8348\u834A", 4, "\u8353\u8355", 4, "\u835D\u8362\u8370", 6, "\u8379\u837A\u837E", 6, "\u8387\u8388\u838A\u838B\u838C\u838D\u838F\u8390\u8391\u8394\u8395\u8396\u8397\u8399\u839A\u839D\u839F\u83A1", 6, "\u83AC\u83AD\u83AE"], ["c780", "\u83AF\u83B5\u83BB\u83BE\u83BF\u83C2\u83C3\u83C4\u83C6\u83C8\u83C9\u83CB\u83CD\u83CE\u83D0\u83D1\u83D2\u83D3\u83D5\u83D7\u83D9\u83DA\u83DB\u83DE\u83E2\u83E3\u83E4\u83E6\u83E7\u83E8\u83EB\u83EC\u83ED\u6070\u6D3D\u7275\u6266\u948E\u94C5\u5343\u8FC1\u7B7E\u4EDF\u8C26\u4E7E\u9ED4\u94B1\u94B3\u524D\u6F5C\u9063\u6D45\u8C34\u5811\u5D4C\u6B20\u6B49\u67AA\u545B\u8154\u7F8C\u5899\u8537\u5F3A\u62A2\u6A47\u9539\u6572\u6084\u6865\u77A7\u4E54\u4FA8\u5DE7\u9798\u64AC\u7FD8\u5CED\u4FCF\u7A8D\u5207\u8304\u4E14\u602F\u7A83\u94A6\u4FB5\u4EB2\u79E6\u7434\u52E4\u82B9\u64D2\u79BD\u5BDD\u6C81\u9752\u8F7B\u6C22\u503E\u537F\u6E05\u64CE\u6674\u6C30\u60C5\u9877\u8BF7\u5E86\u743C\u7A77\u79CB\u4E18\u90B1\u7403\u6C42\u56DA\u914B\u6CC5\u8D8B\u533A\u86C6\u66F2\u8EAF\u5C48\u9A71\u6E20"], ["c840", "\u83EE\u83EF\u83F3", 4, "\u83FA\u83FB\u83FC\u83FE\u83FF\u8400\u8402\u8405\u8407\u8408\u8409\u840A\u8410\u8412", 5, "\u8419\u841A\u841B\u841E", 5, "\u8429", 7, "\u8432", 5, "\u8439\u843A\u843B\u843E", 7, "\u8447\u8448\u8449"], ["c880", "\u844A", 6, "\u8452", 4, "\u8458\u845D\u845E\u845F\u8460\u8462\u8464", 4, "\u846A\u846E\u846F\u8470\u8472\u8474\u8477\u8479\u847B\u847C\u53D6\u5A36\u9F8B\u8DA3\u53BB\u5708\u98A7\u6743\u919B\u6CC9\u5168\u75CA\u62F3\u72AC\u5238\u529D\u7F3A\u7094\u7638\u5374\u9E4A\u69B7\u786E\u96C0\u88D9\u7FA4\u7136\u71C3\u5189\u67D3\u74E4\u58E4\u6518\u56B7\u8BA9\u9976\u6270\u7ED5\u60F9\u70ED\u58EC\u4EC1\u4EBA\u5FCD\u97E7\u4EFB\u8BA4\u5203\u598A\u7EAB\u6254\u4ECD\u65E5\u620E\u8338\u84C9\u8363\u878D\u7194\u6EB6\u5BB9\u7ED2\u5197\u63C9\u67D4\u8089\u8339\u8815\u5112\u5B7A\u5982\u8FB1\u4E73\u6C5D\u5165\u8925\u8F6F\u962E\u854A\u745E\u9510\u95F0\u6DA6\u82E5\u5F31\u6492\u6D12\u8428\u816E\u9CC3\u585E\u8D5B\u4E09\u53C1"], ["c940", "\u847D", 4, "\u8483\u8484\u8485\u8486\u848A\u848D\u848F", 7, "\u8498\u849A\u849B\u849D\u849E\u849F\u84A0\u84A2", 12, "\u84B0\u84B1\u84B3\u84B5\u84B6\u84B7\u84BB\u84BC\u84BE\u84C0\u84C2\u84C3\u84C5\u84C6\u84C7\u84C8\u84CB\u84CC\u84CE\u84CF\u84D2\u84D4\u84D5\u84D7"], ["c980", "\u84D8", 4, "\u84DE\u84E1\u84E2\u84E4\u84E7", 4, "\u84ED\u84EE\u84EF\u84F1", 10, "\u84FD\u84FE\u8500\u8501\u8502\u4F1E\u6563\u6851\u55D3\u4E27\u6414\u9A9A\u626B\u5AC2\u745F\u8272\u6DA9\u68EE\u50E7\u838E\u7802\u6740\u5239\u6C99\u7EB1\u50BB\u5565\u715E\u7B5B\u6652\u73CA\u82EB\u6749\u5C71\u5220\u717D\u886B\u95EA\u9655\u64C5\u8D61\u81B3\u5584\u6C55\u6247\u7F2E\u5892\u4F24\u5546\u8D4F\u664C\u4E0A\u5C1A\u88F3\u68A2\u634E\u7A0D\u70E7\u828D\u52FA\u97F6\u5C11\u54E8\u90B5\u7ECD\u5962\u8D4A\u86C7\u820C\u820D\u8D66\u6444\u5C04\u6151\u6D89\u793E\u8BBE\u7837\u7533\u547B\u4F38\u8EAB\u6DF1\u5A20\u7EC5\u795E\u6C88\u5BA1\u5A76\u751A\u80BE\u614E\u6E17\u58F0\u751F\u7525\u7272\u5347\u7EF3"], ["ca40", "\u8503", 8, "\u850D\u850E\u850F\u8510\u8512\u8514\u8515\u8516\u8518\u8519\u851B\u851C\u851D\u851E\u8520\u8522", 8, "\u852D", 9, "\u853E", 4, "\u8544\u8545\u8546\u8547\u854B", 10], ["ca80", "\u8557\u8558\u855A\u855B\u855C\u855D\u855F", 4, "\u8565\u8566\u8567\u8569", 8, "\u8573\u8575\u8576\u8577\u8578\u857C\u857D\u857F\u8580\u8581\u7701\u76DB\u5269\u80DC\u5723\u5E08\u5931\u72EE\u65BD\u6E7F\u8BD7\u5C38\u8671\u5341\u77F3\u62FE\u65F6\u4EC0\u98DF\u8680\u5B9E\u8BC6\u53F2\u77E2\u4F7F\u5C4E\u9A76\u59CB\u5F0F\u793A\u58EB\u4E16\u67FF\u4E8B\u62ED\u8A93\u901D\u52BF\u662F\u55DC\u566C\u9002\u4ED5\u4F8D\u91CA\u9970\u6C0F\u5E02\u6043\u5BA4\u89C6\u8BD5\u6536\u624B\u9996\u5B88\u5BFF\u6388\u552E\u53D7\u7626\u517D\u852C\u67A2\u68B3\u6B8A\u6292\u8F93\u53D4\u8212\u6DD1\u758F\u4E66\u8D4E\u5B70\u719F\u85AF\u6691\u66D9\u7F72\u8700\u9ECD\u9F20\u5C5E\u672F\u8FF0\u6811\u675F\u620D\u7AD6\u5885\u5EB6\u6570\u6F31"], ["cb40", "\u8582\u8583\u8586\u8588", 6, "\u8590", 10, "\u859D", 6, "\u85A5\u85A6\u85A7\u85A9\u85AB\u85AC\u85AD\u85B1", 5, "\u85B8\u85BA", 6, "\u85C2", 6, "\u85CA", 4, "\u85D1\u85D2"], ["cb80", "\u85D4\u85D6", 5, "\u85DD", 6, "\u85E5\u85E6\u85E7\u85E8\u85EA", 14, "\u6055\u5237\u800D\u6454\u8870\u7529\u5E05\u6813\u62F4\u971C\u53CC\u723D\u8C01\u6C34\u7761\u7A0E\u542E\u77AC\u987A\u821C\u8BF4\u7855\u6714\u70C1\u65AF\u6495\u5636\u601D\u79C1\u53F8\u4E1D\u6B7B\u8086\u5BFA\u55E3\u56DB\u4F3A\u4F3C\u9972\u5DF3\u677E\u8038\u6002\u9882\u9001\u5B8B\u8BBC\u8BF5\u641C\u8258\u64DE\u55FD\u82CF\u9165\u4FD7\u7D20\u901F\u7C9F\u50F3\u5851\u6EAF\u5BBF\u8BC9\u8083\u9178\u849C\u7B97\u867D\u968B\u968F\u7EE5\u9AD3\u788E\u5C81\u7A57\u9042\u96A7\u795F\u5B59\u635F\u7B0B\u84D1\u68AD\u5506\u7F29\u7410\u7D22\u9501\u6240\u584C\u4ED6\u5B83\u5979\u5854"], ["cc40", "\u85F9\u85FA\u85FC\u85FD\u85FE\u8600", 4, "\u8606", 10, "\u8612\u8613\u8614\u8615\u8617", 15, "\u8628\u862A", 13, "\u8639\u863A\u863B\u863D\u863E\u863F\u8640"], ["cc80", "\u8641", 11, "\u8652\u8653\u8655", 4, "\u865B\u865C\u865D\u865F\u8660\u8661\u8663", 7, "\u736D\u631E\u8E4B\u8E0F\u80CE\u82D4\u62AC\u53F0\u6CF0\u915E\u592A\u6001\u6C70\u574D\u644A\u8D2A\u762B\u6EE9\u575B\u6A80\u75F0\u6F6D\u8C2D\u8C08\u5766\u6BEF\u8892\u78B3\u63A2\u53F9\u70AD\u6C64\u5858\u642A\u5802\u68E0\u819B\u5510\u7CD6\u5018\u8EBA\u6DCC\u8D9F\u70EB\u638F\u6D9B\u6ED4\u7EE6\u8404\u6843\u9003\u6DD8\u9676\u8BA8\u5957\u7279\u85E4\u817E\u75BC\u8A8A\u68AF\u5254\u8E22\u9511\u63D0\u9898\u8E44\u557C\u4F53\u66FF\u568F\u60D5\u6D95\u5243\u5C49\u5929\u6DFB\u586B\u7530\u751C\u606C\u8214\u8146\u6311\u6761\u8FE2\u773A\u8DF3\u8D34\u94C1\u5E16\u5385\u542C\u70C3"], ["cd40", "\u866D\u866F\u8670\u8672", 6, "\u8683", 6, "\u868E", 4, "\u8694\u8696", 5, "\u869E", 4, "\u86A5\u86A6\u86AB\u86AD\u86AE\u86B2\u86B3\u86B7\u86B8\u86B9\u86BB", 4, "\u86C1\u86C2\u86C3\u86C5\u86C8\u86CC\u86CD\u86D2\u86D3\u86D5\u86D6\u86D7\u86DA\u86DC"], ["cd80", "\u86DD\u86E0\u86E1\u86E2\u86E3\u86E5\u86E6\u86E7\u86E8\u86EA\u86EB\u86EC\u86EF\u86F5\u86F6\u86F7\u86FA\u86FB\u86FC\u86FD\u86FF\u8701\u8704\u8705\u8706\u870B\u870C\u870E\u870F\u8710\u8711\u8714\u8716\u6C40\u5EF7\u505C\u4EAD\u5EAD\u633A\u8247\u901A\u6850\u916E\u77B3\u540C\u94DC\u5F64\u7AE5\u6876\u6345\u7B52\u7EDF\u75DB\u5077\u6295\u5934\u900F\u51F8\u79C3\u7A81\u56FE\u5F92\u9014\u6D82\u5C60\u571F\u5410\u5154\u6E4D\u56E2\u63A8\u9893\u817F\u8715\u892A\u9000\u541E\u5C6F\u81C0\u62D6\u6258\u8131\u9E35\u9640\u9A6E\u9A7C\u692D\u59A5\u62D3\u553E\u6316\u54C7\u86D9\u6D3C\u5A03\u74E6\u889C\u6B6A\u5916\u8C4C\u5F2F\u6E7E\u73A9\u987D\u4E38\u70F7\u5B8C\u7897\u633D\u665A\u7696\u60CB\u5B9B\u5A49\u4E07\u8155\u6C6A\u738B\u4EA1\u6789\u7F51\u5F80\u65FA\u671B\u5FD8\u5984\u5A01"], ["ce40", "\u8719\u871B\u871D\u871F\u8720\u8724\u8726\u8727\u8728\u872A\u872B\u872C\u872D\u872F\u8730\u8732\u8733\u8735\u8736\u8738\u8739\u873A\u873C\u873D\u8740", 6, "\u874A\u874B\u874D\u874F\u8750\u8751\u8752\u8754\u8755\u8756\u8758\u875A", 5, "\u8761\u8762\u8766", 7, "\u876F\u8771\u8772\u8773\u8775"], ["ce80", "\u8777\u8778\u8779\u877A\u877F\u8780\u8781\u8784\u8786\u8787\u8789\u878A\u878C\u878E", 4, "\u8794\u8795\u8796\u8798", 6, "\u87A0", 4, "\u5DCD\u5FAE\u5371\u97E6\u8FDD\u6845\u56F4\u552F\u60DF\u4E3A\u6F4D\u7EF4\u82C7\u840E\u59D4\u4F1F\u4F2A\u5C3E\u7EAC\u672A\u851A\u5473\u754F\u80C3\u5582\u9B4F\u4F4D\u6E2D\u8C13\u5C09\u6170\u536B\u761F\u6E29\u868A\u6587\u95FB\u7EB9\u543B\u7A33\u7D0A\u95EE\u55E1\u7FC1\u74EE\u631D\u8717\u6DA1\u7A9D\u6211\u65A1\u5367\u63E1\u6C83\u5DEB\u545C\u94A8\u4E4C\u6C61\u8BEC\u5C4B\u65E0\u829C\u68A7\u543E\u5434\u6BCB\u6B66\u4E94\u6342\u5348\u821E\u4F0D\u4FAE\u575E\u620A\u96FE\u6664\u7269\u52FF\u52A1\u609F\u8BEF\u6614\u7199\u6790\u897F\u7852\u77FD\u6670\u563B\u5438\u9521\u727A"], ["cf40", "\u87A5\u87A6\u87A7\u87A9\u87AA\u87AE\u87B0\u87B1\u87B2\u87B4\u87B6\u87B7\u87B8\u87B9\u87BB\u87BC\u87BE\u87BF\u87C1", 4, "\u87C7\u87C8\u87C9\u87CC", 4, "\u87D4", 6, "\u87DC\u87DD\u87DE\u87DF\u87E1\u87E2\u87E3\u87E4\u87E6\u87E7\u87E8\u87E9\u87EB\u87EC\u87ED\u87EF", 9], ["cf80", "\u87FA\u87FB\u87FC\u87FD\u87FF\u8800\u8801\u8802\u8804", 5, "\u880B", 7, "\u8814\u8817\u8818\u8819\u881A\u881C", 4, "\u8823\u7A00\u606F\u5E0C\u6089\u819D\u5915\u60DC\u7184\u70EF\u6EAA\u6C50\u7280\u6A84\u88AD\u5E2D\u4E60\u5AB3\u559C\u94E3\u6D17\u7CFB\u9699\u620F\u7EC6\u778E\u867E\u5323\u971E\u8F96\u6687\u5CE1\u4FA0\u72ED\u4E0B\u53A6\u590F\u5413\u6380\u9528\u5148\u4ED9\u9C9C\u7EA4\u54B8\u8D24\u8854\u8237\u95F2\u6D8E\u5F26\u5ACC\u663E\u9669\u73B0\u732E\u53BF\u817A\u9985\u7FA1\u5BAA\u9677\u9650\u7EBF\u76F8\u53A2\u9576\u9999\u7BB1\u8944\u6E58\u4E61\u7FD4\u7965\u8BE6\u60F3\u54CD\u4EAB\u9879\u5DF7\u6A61\u50CF\u5411\u8C61\u8427\u785D\u9704\u524A\u54EE\u56A3\u9500\u6D88\u5BB5\u6DC6\u6653"], ["d040", "\u8824", 13, "\u8833", 5, "\u883A\u883B\u883D\u883E\u883F\u8841\u8842\u8843\u8846", 5, "\u884E", 5, "\u8855\u8856\u8858\u885A", 6, "\u8866\u8867\u886A\u886D\u886F\u8871\u8873\u8874\u8875\u8876\u8878\u8879\u887A"], ["d080", "\u887B\u887C\u8880\u8883\u8886\u8887\u8889\u888A\u888C\u888E\u888F\u8890\u8891\u8893\u8894\u8895\u8897", 4, "\u889D", 4, "\u88A3\u88A5", 5, "\u5C0F\u5B5D\u6821\u8096\u5578\u7B11\u6548\u6954\u4E9B\u6B47\u874E\u978B\u534F\u631F\u643A\u90AA\u659C\u80C1\u8C10\u5199\u68B0\u5378\u87F9\u61C8\u6CC4\u6CFB\u8C22\u5C51\u85AA\u82AF\u950C\u6B23\u8F9B\u65B0\u5FFB\u5FC3\u4FE1\u8845\u661F\u8165\u7329\u60FA\u5174\u5211\u578B\u5F62\u90A2\u884C\u9192\u5E78\u674F\u6027\u59D3\u5144\u51F6\u80F8\u5308\u6C79\u96C4\u718A\u4F11\u4FEE\u7F9E\u673D\u55C5\u9508\u79C0\u8896\u7EE3\u589F\u620C\u9700\u865A\u5618\u987B\u5F90\u8BB8\u84C4\u9157\u53D9\u65ED\u5E8F\u755C\u6064\u7D6E\u5A7F\u7EEA\u7EED\u8F69\u55A7\u5BA3\u60AC\u65CB\u7384"], ["d140", "\u88AC\u88AE\u88AF\u88B0\u88B2", 4, "\u88B8\u88B9\u88BA\u88BB\u88BD\u88BE\u88BF\u88C0\u88C3\u88C4\u88C7\u88C8\u88CA\u88CB\u88CC\u88CD\u88CF\u88D0\u88D1\u88D3\u88D6\u88D7\u88DA", 4, "\u88E0\u88E1\u88E6\u88E7\u88E9", 6, "\u88F2\u88F5\u88F6\u88F7\u88FA\u88FB\u88FD\u88FF\u8900\u8901\u8903", 5], ["d180", "\u8909\u890B", 4, "\u8911\u8914", 4, "\u891C", 4, "\u8922\u8923\u8924\u8926\u8927\u8928\u8929\u892C\u892D\u892E\u892F\u8931\u8932\u8933\u8935\u8937\u9009\u7663\u7729\u7EDA\u9774\u859B\u5B66\u7A74\u96EA\u8840\u52CB\u718F\u5FAA\u65EC\u8BE2\u5BFB\u9A6F\u5DE1\u6B89\u6C5B\u8BAD\u8BAF\u900A\u8FC5\u538B\u62BC\u9E26\u9E2D\u5440\u4E2B\u82BD\u7259\u869C\u5D16\u8859\u6DAF\u96C5\u54D1\u4E9A\u8BB6\u7109\u54BD\u9609\u70DF\u6DF9\u76D0\u4E25\u7814\u8712\u5CA9\u5EF6\u8A00\u989C\u960E\u708E\u6CBF\u5944\u63A9\u773C\u884D\u6F14\u8273\u5830\u71D5\u538C\u781A\u96C1\u5501\u5F66\u7130\u5BB4\u8C1A\u9A8C\u6B83\u592E\u9E2F\u79E7\u6768\u626C\u4F6F\u75A1\u7F8A\u6D0B\u9633\u6C27\u4EF0\u75D2\u517B\u6837\u6F3E\u9080\u8170\u5996\u7476"], ["d240", "\u8938", 8, "\u8942\u8943\u8945", 24, "\u8960", 5, "\u8967", 19, "\u897C"], ["d280", "\u897D\u897E\u8980\u8982\u8984\u8985\u8987", 26, "\u6447\u5C27\u9065\u7A91\u8C23\u59DA\u54AC\u8200\u836F\u8981\u8000\u6930\u564E\u8036\u7237\u91CE\u51B6\u4E5F\u9875\u6396\u4E1A\u53F6\u66F3\u814B\u591C\u6DB2\u4E00\u58F9\u533B\u63D6\u94F1\u4F9D\u4F0A\u8863\u9890\u5937\u9057\u79FB\u4EEA\u80F0\u7591\u6C82\u5B9C\u59E8\u5F5D\u6905\u8681\u501A\u5DF2\u4E59\u77E3\u4EE5\u827A\u6291\u6613\u9091\u5C79\u4EBF\u5F79\u81C6\u9038\u8084\u75AB\u4EA6\u88D4\u610F\u6BC5\u5FC6\u4E49\u76CA\u6EA2\u8BE3\u8BAE\u8C0A\u8BD1\u5F02\u7FFC\u7FCC\u7ECE\u8335\u836B\u56E0\u6BB7\u97F3\u9634\u59FB\u541F\u94F6\u6DEB\u5BC5\u996E\u5C39\u5F15\u9690"], ["d340", "\u89A2", 30, "\u89C3\u89CD\u89D3\u89D4\u89D5\u89D7\u89D8\u89D9\u89DB\u89DD\u89DF\u89E0\u89E1\u89E2\u89E4\u89E7\u89E8\u89E9\u89EA\u89EC\u89ED\u89EE\u89F0\u89F1\u89F2\u89F4", 6], ["d380", "\u89FB", 4, "\u8A01", 5, "\u8A08", 21, "\u5370\u82F1\u6A31\u5A74\u9E70\u5E94\u7F28\u83B9\u8424\u8425\u8367\u8747\u8FCE\u8D62\u76C8\u5F71\u9896\u786C\u6620\u54DF\u62E5\u4F63\u81C3\u75C8\u5EB8\u96CD\u8E0A\u86F9\u548F\u6CF3\u6D8C\u6C38\u607F\u52C7\u7528\u5E7D\u4F18\u60A0\u5FE7\u5C24\u7531\u90AE\u94C0\u72B9\u6CB9\u6E38\u9149\u6709\u53CB\u53F3\u4F51\u91C9\u8BF1\u53C8\u5E7C\u8FC2\u6DE4\u4E8E\u76C2\u6986\u865E\u611A\u8206\u4F59\u4FDE\u903E\u9C7C\u6109\u6E1D\u6E14\u9685\u4E88\u5A31\u96E8\u4E0E\u5C7F\u79B9\u5B87\u8BED\u7FBD\u7389\u57DF\u828B\u90C1\u5401\u9047\u55BB\u5CEA\u5FA1\u6108\u6B32\u72F1\u80B2\u8A89"], ["d440", "\u8A1E", 31, "\u8A3F", 8, "\u8A49", 21], ["d480", "\u8A5F", 25, "\u8A7A", 6, "\u6D74\u5BD3\u88D5\u9884\u8C6B\u9A6D\u9E33\u6E0A\u51A4\u5143\u57A3\u8881\u539F\u63F4\u8F95\u56ED\u5458\u5706\u733F\u6E90\u7F18\u8FDC\u82D1\u613F\u6028\u9662\u66F0\u7EA6\u8D8A\u8DC3\u94A5\u5CB3\u7CA4\u6708\u60A6\u9605\u8018\u4E91\u90E7\u5300\u9668\u5141\u8FD0\u8574\u915D\u6655\u97F5\u5B55\u531D\u7838\u6742\u683D\u54C9\u707E\u5BB0\u8F7D\u518D\u5728\u54B1\u6512\u6682\u8D5E\u8D43\u810F\u846C\u906D\u7CDF\u51FF\u85FB\u67A3\u65E9\u6FA1\u86A4\u8E81\u566A\u9020\u7682\u7076\u71E5\u8D23\u62E9\u5219\u6CFD\u8D3C\u600E\u589E\u618E\u66FE\u8D60\u624E\u55B3\u6E23\u672D\u8F67"], ["d540", "\u8A81", 7, "\u8A8B", 7, "\u8A94", 46], ["d580", "\u8AC3", 32, "\u94E1\u95F8\u7728\u6805\u69A8\u548B\u4E4D\u70B8\u8BC8\u6458\u658B\u5B85\u7A84\u503A\u5BE8\u77BB\u6BE1\u8A79\u7C98\u6CBE\u76CF\u65A9\u8F97\u5D2D\u5C55\u8638\u6808\u5360\u6218\u7AD9\u6E5B\u7EFD\u6A1F\u7AE0\u5F70\u6F33\u5F20\u638C\u6DA8\u6756\u4E08\u5E10\u8D26\u4ED7\u80C0\u7634\u969C\u62DB\u662D\u627E\u6CBC\u8D75\u7167\u7F69\u5146\u8087\u53EC\u906E\u6298\u54F2\u86F0\u8F99\u8005\u9517\u8517\u8FD9\u6D59\u73CD\u659F\u771F\u7504\u7827\u81FB\u8D1E\u9488\u4FA6\u6795\u75B9\u8BCA\u9707\u632F\u9547\u9635\u84B8\u6323\u7741\u5F81\u72F0\u4E89\u6014\u6574\u62EF\u6B63\u653F"], ["d640", "\u8AE4", 34, "\u8B08", 27], ["d680", "\u8B24\u8B25\u8B27", 30, "\u5E27\u75C7\u90D1\u8BC1\u829D\u679D\u652F\u5431\u8718\u77E5\u80A2\u8102\u6C41\u4E4B\u7EC7\u804C\u76F4\u690D\u6B96\u6267\u503C\u4F84\u5740\u6307\u6B62\u8DBE\u53EA\u65E8\u7EB8\u5FD7\u631A\u63B7\u81F3\u81F4\u7F6E\u5E1C\u5CD9\u5236\u667A\u79E9\u7A1A\u8D28\u7099\u75D4\u6EDE\u6CBB\u7A92\u4E2D\u76C5\u5FE0\u949F\u8877\u7EC8\u79CD\u80BF\u91CD\u4EF2\u4F17\u821F\u5468\u5DDE\u6D32\u8BCC\u7CA5\u8F74\u8098\u5E1A\u5492\u76B1\u5B99\u663C\u9AA4\u73E0\u682A\u86DB\u6731\u732A\u8BF8\u8BDB\u9010\u7AF9\u70DB\u716E\u62C4\u77A9\u5631\u4E3B\u8457\u67F1\u52A9\u86C0\u8D2E\u94F8\u7B51"], ["d740", "\u8B46", 31, "\u8B67", 4, "\u8B6D", 25], ["d780", "\u8B87", 24, "\u8BAC\u8BB1\u8BBB\u8BC7\u8BD0\u8BEA\u8C09\u8C1E\u4F4F\u6CE8\u795D\u9A7B\u6293\u722A\u62FD\u4E13\u7816\u8F6C\u64B0\u8D5A\u7BC6\u6869\u5E84\u88C5\u5986\u649E\u58EE\u72B6\u690E\u9525\u8FFD\u8D58\u5760\u7F00\u8C06\u51C6\u6349\u62D9\u5353\u684C\u7422\u8301\u914C\u5544\u7740\u707C\u6D4A\u5179\u54A8\u8D44\u59FF\u6ECB\u6DC4\u5B5C\u7D2B\u4ED4\u7C7D\u6ED3\u5B50\u81EA\u6E0D\u5B57\u9B03\u68D5\u8E2A\u5B97\u7EFC\u603B\u7EB5\u90B9\u8D70\u594F\u63CD\u79DF\u8DB3\u5352\u65CF\u7956\u8BC5\u963B\u7EC4\u94BB\u7E82\u5634\u9189\u6700\u7F6A\u5C0A\u9075\u6628\u5DE6\u4F50\u67DE\u505A\u4F5C\u5750\u5EA7"], ["d840", "\u8C38", 8, "\u8C42\u8C43\u8C44\u8C45\u8C48\u8C4A\u8C4B\u8C4D", 7, "\u8C56\u8C57\u8C58\u8C59\u8C5B", 5, "\u8C63", 6, "\u8C6C", 6, "\u8C74\u8C75\u8C76\u8C77\u8C7B", 6, "\u8C83\u8C84\u8C86\u8C87"], ["d880", "\u8C88\u8C8B\u8C8D", 6, "\u8C95\u8C96\u8C97\u8C99", 20, "\u4E8D\u4E0C\u5140\u4E10\u5EFF\u5345\u4E15\u4E98\u4E1E\u9B32\u5B6C\u5669\u4E28\u79BA\u4E3F\u5315\u4E47\u592D\u723B\u536E\u6C10\u56DF\u80E4\u9997\u6BD3\u777E\u9F17\u4E36\u4E9F\u9F10\u4E5C\u4E69\u4E93\u8288\u5B5B\u556C\u560F\u4EC4\u538D\u539D\u53A3\u53A5\u53AE\u9765\u8D5D\u531A\u53F5\u5326\u532E\u533E\u8D5C\u5366\u5363\u5202\u5208\u520E\u522D\u5233\u523F\u5240\u524C\u525E\u5261\u525C\u84AF\u527D\u5282\u5281\u5290\u5293\u5182\u7F54\u4EBB\u4EC3\u4EC9\u4EC2\u4EE8\u4EE1\u4EEB\u4EDE\u4F1B\u4EF3\u4F22\u4F64\u4EF5\u4F25\u4F27\u4F09\u4F2B\u4F5E\u4F67\u6538\u4F5A\u4F5D"], ["d940", "\u8CAE", 62], ["d980", "\u8CED", 32, "\u4F5F\u4F57\u4F32\u4F3D\u4F76\u4F74\u4F91\u4F89\u4F83\u4F8F\u4F7E\u4F7B\u4FAA\u4F7C\u4FAC\u4F94\u4FE6\u4FE8\u4FEA\u4FC5\u4FDA\u4FE3\u4FDC\u4FD1\u4FDF\u4FF8\u5029\u504C\u4FF3\u502C\u500F\u502E\u502D\u4FFE\u501C\u500C\u5025\u5028\u507E\u5043\u5055\u5048\u504E\u506C\u507B\u50A5\u50A7\u50A9\u50BA\u50D6\u5106\u50ED\u50EC\u50E6\u50EE\u5107\u510B\u4EDD\u6C3D\u4F58\u4F65\u4FCE\u9FA0\u6C46\u7C74\u516E\u5DFD\u9EC9\u9998\u5181\u5914\u52F9\u530D\u8A07\u5310\u51EB\u5919\u5155\u4EA0\u5156\u4EB3\u886E\u88A4\u4EB5\u8114\u88D2\u7980\u5B34\u8803\u7FB8\u51AB\u51B1\u51BD\u51BC"], ["da40", "\u8D0E", 14, "\u8D20\u8D51\u8D52\u8D57\u8D5F\u8D65\u8D68\u8D69\u8D6A\u8D6C\u8D6E\u8D6F\u8D71\u8D72\u8D78", 8, "\u8D82\u8D83\u8D86\u8D87\u8D88\u8D89\u8D8C", 4, "\u8D92\u8D93\u8D95", 9, "\u8DA0\u8DA1"], ["da80", "\u8DA2\u8DA4", 12, "\u8DB2\u8DB6\u8DB7\u8DB9\u8DBB\u8DBD\u8DC0\u8DC1\u8DC2\u8DC5\u8DC7\u8DC8\u8DC9\u8DCA\u8DCD\u8DD0\u8DD2\u8DD3\u8DD4\u51C7\u5196\u51A2\u51A5\u8BA0\u8BA6\u8BA7\u8BAA\u8BB4\u8BB5\u8BB7\u8BC2\u8BC3\u8BCB\u8BCF\u8BCE\u8BD2\u8BD3\u8BD4\u8BD6\u8BD8\u8BD9\u8BDC\u8BDF\u8BE0\u8BE4\u8BE8\u8BE9\u8BEE\u8BF0\u8BF3\u8BF6\u8BF9\u8BFC\u8BFF\u8C00\u8C02\u8C04\u8C07\u8C0C\u8C0F\u8C11\u8C12\u8C14\u8C15\u8C16\u8C19\u8C1B\u8C18\u8C1D\u8C1F\u8C20\u8C21\u8C25\u8C27\u8C2A\u8C2B\u8C2E\u8C2F\u8C32\u8C33\u8C35\u8C36\u5369\u537A\u961D\u9622\u9621\u9631\u962A\u963D\u963C\u9642\u9649\u9654\u965F\u9667\u966C\u9672\u9674\u9688\u968D\u9697\u96B0\u9097\u909B\u909D\u9099\u90AC\u90A1\u90B4\u90B3\u90B6\u90BA"], ["db40", "\u8DD5\u8DD8\u8DD9\u8DDC\u8DE0\u8DE1\u8DE2\u8DE5\u8DE6\u8DE7\u8DE9\u8DED\u8DEE\u8DF0\u8DF1\u8DF2\u8DF4\u8DF6\u8DFC\u8DFE", 6, "\u8E06\u8E07\u8E08\u8E0B\u8E0D\u8E0E\u8E10\u8E11\u8E12\u8E13\u8E15", 7, "\u8E20\u8E21\u8E24", 4, "\u8E2B\u8E2D\u8E30\u8E32\u8E33\u8E34\u8E36\u8E37\u8E38\u8E3B\u8E3C\u8E3E"], ["db80", "\u8E3F\u8E43\u8E45\u8E46\u8E4C", 4, "\u8E53", 5, "\u8E5A", 11, "\u8E67\u8E68\u8E6A\u8E6B\u8E6E\u8E71\u90B8\u90B0\u90CF\u90C5\u90BE\u90D0\u90C4\u90C7\u90D3\u90E6\u90E2\u90DC\u90D7\u90DB\u90EB\u90EF\u90FE\u9104\u9122\u911E\u9123\u9131\u912F\u9139\u9143\u9146\u520D\u5942\u52A2\u52AC\u52AD\u52BE\u54FF\u52D0\u52D6\u52F0\u53DF\u71EE\u77CD\u5EF4\u51F5\u51FC\u9B2F\u53B6\u5F01\u755A\u5DEF\u574C\u57A9\u57A1\u587E\u58BC\u58C5\u58D1\u5729\u572C\u572A\u5733\u5739\u572E\u572F\u575C\u573B\u5742\u5769\u5785\u576B\u5786\u577C\u577B\u5768\u576D\u5776\u5773\u57AD\u57A4\u578C\u57B2\u57CF\u57A7\u57B4\u5793\u57A0\u57D5\u57D8\u57DA\u57D9\u57D2\u57B8\u57F4\u57EF\u57F8\u57E4\u57DD"], ["dc40", "\u8E73\u8E75\u8E77", 4, "\u8E7D\u8E7E\u8E80\u8E82\u8E83\u8E84\u8E86\u8E88", 6, "\u8E91\u8E92\u8E93\u8E95", 6, "\u8E9D\u8E9F", 11, "\u8EAD\u8EAE\u8EB0\u8EB1\u8EB3", 6, "\u8EBB", 7], ["dc80", "\u8EC3", 10, "\u8ECF", 21, "\u580B\u580D\u57FD\u57ED\u5800\u581E\u5819\u5844\u5820\u5865\u586C\u5881\u5889\u589A\u5880\u99A8\u9F19\u61FF\u8279\u827D\u827F\u828F\u828A\u82A8\u8284\u828E\u8291\u8297\u8299\u82AB\u82B8\u82BE\u82B0\u82C8\u82CA\u82E3\u8298\u82B7\u82AE\u82CB\u82CC\u82C1\u82A9\u82B4\u82A1\u82AA\u829F\u82C4\u82CE\u82A4\u82E1\u8309\u82F7\u82E4\u830F\u8307\u82DC\u82F4\u82D2\u82D8\u830C\u82FB\u82D3\u8311\u831A\u8306\u8314\u8315\u82E0\u82D5\u831C\u8351\u835B\u835C\u8308\u8392\u833C\u8334\u8331\u839B\u835E\u832F\u834F\u8347\u8343\u835F\u8340\u8317\u8360\u832D\u833A\u8333\u8366\u8365"], ["dd40", "\u8EE5", 62], ["dd80", "\u8F24", 32, "\u8368\u831B\u8369\u836C\u836A\u836D\u836E\u83B0\u8378\u83B3\u83B4\u83A0\u83AA\u8393\u839C\u8385\u837C\u83B6\u83A9\u837D\u83B8\u837B\u8398\u839E\u83A8\u83BA\u83BC\u83C1\u8401\u83E5\u83D8\u5807\u8418\u840B\u83DD\u83FD\u83D6\u841C\u8438\u8411\u8406\u83D4\u83DF\u840F\u8403\u83F8\u83F9\u83EA\u83C5\u83C0\u8426\u83F0\u83E1\u845C\u8451\u845A\u8459\u8473\u8487\u8488\u847A\u8489\u8478\u843C\u8446\u8469\u8476\u848C\u848E\u8431\u846D\u84C1\u84CD\u84D0\u84E6\u84BD\u84D3\u84CA\u84BF\u84BA\u84E0\u84A1\u84B9\u84B4\u8497\u84E5\u84E3\u850C\u750D\u8538\u84F0\u8539\u851F\u853A"], ["de40", "\u8F45", 32, "\u8F6A\u8F80\u8F8C\u8F92\u8F9D\u8FA0\u8FA1\u8FA2\u8FA4\u8FA5\u8FA6\u8FA7\u8FAA\u8FAC\u8FAD\u8FAE\u8FAF\u8FB2\u8FB3\u8FB4\u8FB5\u8FB7\u8FB8\u8FBA\u8FBB\u8FBC\u8FBF\u8FC0\u8FC3\u8FC6"], ["de80", "\u8FC9", 4, "\u8FCF\u8FD2\u8FD6\u8FD7\u8FDA\u8FE0\u8FE1\u8FE3\u8FE7\u8FEC\u8FEF\u8FF1\u8FF2\u8FF4\u8FF5\u8FF6\u8FFA\u8FFB\u8FFC\u8FFE\u8FFF\u9007\u9008\u900C\u900E\u9013\u9015\u9018\u8556\u853B\u84FF\u84FC\u8559\u8548\u8568\u8564\u855E\u857A\u77A2\u8543\u8572\u857B\u85A4\u85A8\u8587\u858F\u8579\u85AE\u859C\u8585\u85B9\u85B7\u85B0\u85D3\u85C1\u85DC\u85FF\u8627\u8605\u8629\u8616\u863C\u5EFE\u5F08\u593C\u5941\u8037\u5955\u595A\u5958\u530F\u5C22\u5C25\u5C2C\u5C34\u624C\u626A\u629F\u62BB\u62CA\u62DA\u62D7\u62EE\u6322\u62F6\u6339\u634B\u6343\u63AD\u63F6\u6371\u637A\u638E\u63B4\u636D\u63AC\u638A\u6369\u63AE\u63BC\u63F2\u63F8\u63E0\u63FF\u63C4\u63DE\u63CE\u6452\u63C6\u63BE\u6445\u6441\u640B\u641B\u6420\u640C\u6426\u6421\u645E\u6484\u646D\u6496"], ["df40", "\u9019\u901C\u9023\u9024\u9025\u9027", 5, "\u9030", 4, "\u9037\u9039\u903A\u903D\u903F\u9040\u9043\u9045\u9046\u9048", 4, "\u904E\u9054\u9055\u9056\u9059\u905A\u905C", 5, "\u9064\u9066\u9067\u9069\u906A\u906B\u906C\u906F", 4, "\u9076", 6, "\u907E\u9081"], ["df80", "\u9084\u9085\u9086\u9087\u9089\u908A\u908C", 4, "\u9092\u9094\u9096\u9098\u909A\u909C\u909E\u909F\u90A0\u90A4\u90A5\u90A7\u90A8\u90A9\u90AB\u90AD\u90B2\u90B7\u90BC\u90BD\u90BF\u90C0\u647A\u64B7\u64B8\u6499\u64BA\u64C0\u64D0\u64D7\u64E4\u64E2\u6509\u6525\u652E\u5F0B\u5FD2\u7519\u5F11\u535F\u53F1\u53FD\u53E9\u53E8\u53FB\u5412\u5416\u5406\u544B\u5452\u5453\u5454\u5456\u5443\u5421\u5457\u5459\u5423\u5432\u5482\u5494\u5477\u5471\u5464\u549A\u549B\u5484\u5476\u5466\u549D\u54D0\u54AD\u54C2\u54B4\u54D2\u54A7\u54A6\u54D3\u54D4\u5472\u54A3\u54D5\u54BB\u54BF\u54CC\u54D9\u54DA\u54DC\u54A9\u54AA\u54A4\u54DD\u54CF\u54DE\u551B\u54E7\u5520\u54FD\u5514\u54F3\u5522\u5523\u550F\u5511\u5527\u552A\u5567\u558F\u55B5\u5549\u556D\u5541\u5555\u553F\u5550\u553C"], ["e040", "\u90C2\u90C3\u90C6\u90C8\u90C9\u90CB\u90CC\u90CD\u90D2\u90D4\u90D5\u90D6\u90D8\u90D9\u90DA\u90DE\u90DF\u90E0\u90E3\u90E4\u90E5\u90E9\u90EA\u90EC\u90EE\u90F0\u90F1\u90F2\u90F3\u90F5\u90F6\u90F7\u90F9\u90FA\u90FB\u90FC\u90FF\u9100\u9101\u9103\u9105", 19, "\u911A\u911B\u911C"], ["e080", "\u911D\u911F\u9120\u9121\u9124", 10, "\u9130\u9132", 6, "\u913A", 8, "\u9144\u5537\u5556\u5575\u5576\u5577\u5533\u5530\u555C\u558B\u55D2\u5583\u55B1\u55B9\u5588\u5581\u559F\u557E\u55D6\u5591\u557B\u55DF\u55BD\u55BE\u5594\u5599\u55EA\u55F7\u55C9\u561F\u55D1\u55EB\u55EC\u55D4\u55E6\u55DD\u55C4\u55EF\u55E5\u55F2\u55F3\u55CC\u55CD\u55E8\u55F5\u55E4\u8F94\u561E\u5608\u560C\u5601\u5624\u5623\u55FE\u5600\u5627\u562D\u5658\u5639\u5657\u562C\u564D\u5662\u5659\u565C\u564C\u5654\u5686\u5664\u5671\u566B\u567B\u567C\u5685\u5693\u56AF\u56D4\u56D7\u56DD\u56E1\u56F5\u56EB\u56F9\u56FF\u5704\u570A\u5709\u571C\u5E0F\u5E19\u5E14\u5E11\u5E31\u5E3B\u5E3C"], ["e140", "\u9145\u9147\u9148\u9151\u9153\u9154\u9155\u9156\u9158\u9159\u915B\u915C\u915F\u9160\u9166\u9167\u9168\u916B\u916D\u9173\u917A\u917B\u917C\u9180", 4, "\u9186\u9188\u918A\u918E\u918F\u9193", 6, "\u919C", 5, "\u91A4", 5, "\u91AB\u91AC\u91B0\u91B1\u91B2\u91B3\u91B6\u91B7\u91B8\u91B9\u91BB"], ["e180", "\u91BC", 10, "\u91C8\u91CB\u91D0\u91D2", 9, "\u91DD", 8, "\u5E37\u5E44\u5E54\u5E5B\u5E5E\u5E61\u5C8C\u5C7A\u5C8D\u5C90\u5C96\u5C88\u5C98\u5C99\u5C91\u5C9A\u5C9C\u5CB5\u5CA2\u5CBD\u5CAC\u5CAB\u5CB1\u5CA3\u5CC1\u5CB7\u5CC4\u5CD2\u5CE4\u5CCB\u5CE5\u5D02\u5D03\u5D27\u5D26\u5D2E\u5D24\u5D1E\u5D06\u5D1B\u5D58\u5D3E\u5D34\u5D3D\u5D6C\u5D5B\u5D6F\u5D5D\u5D6B\u5D4B\u5D4A\u5D69\u5D74\u5D82\u5D99\u5D9D\u8C73\u5DB7\u5DC5\u5F73\u5F77\u5F82\u5F87\u5F89\u5F8C\u5F95\u5F99\u5F9C\u5FA8\u5FAD\u5FB5\u5FBC\u8862\u5F61\u72AD\u72B0\u72B4\u72B7\u72B8\u72C3\u72C1\u72CE\u72CD\u72D2\u72E8\u72EF\u72E9\u72F2\u72F4\u72F7\u7301\u72F3\u7303\u72FA"], ["e240", "\u91E6", 62], ["e280", "\u9225", 32, "\u72FB\u7317\u7313\u7321\u730A\u731E\u731D\u7315\u7322\u7339\u7325\u732C\u7338\u7331\u7350\u734D\u7357\u7360\u736C\u736F\u737E\u821B\u5925\u98E7\u5924\u5902\u9963\u9967", 5, "\u9974\u9977\u997D\u9980\u9984\u9987\u998A\u998D\u9990\u9991\u9993\u9994\u9995\u5E80\u5E91\u5E8B\u5E96\u5EA5\u5EA0\u5EB9\u5EB5\u5EBE\u5EB3\u8D53\u5ED2\u5ED1\u5EDB\u5EE8\u5EEA\u81BA\u5FC4\u5FC9\u5FD6\u5FCF\u6003\u5FEE\u6004\u5FE1\u5FE4\u5FFE\u6005\u6006\u5FEA\u5FED\u5FF8\u6019\u6035\u6026\u601B\u600F\u600D\u6029\u602B\u600A\u603F\u6021\u6078\u6079\u607B\u607A\u6042"], ["e340", "\u9246", 45, "\u9275", 16], ["e380", "\u9286", 7, "\u928F", 24, "\u606A\u607D\u6096\u609A\u60AD\u609D\u6083\u6092\u608C\u609B\u60EC\u60BB\u60B1\u60DD\u60D8\u60C6\u60DA\u60B4\u6120\u6126\u6115\u6123\u60F4\u6100\u610E\u612B\u614A\u6175\u61AC\u6194\u61A7\u61B7\u61D4\u61F5\u5FDD\u96B3\u95E9\u95EB\u95F1\u95F3\u95F5\u95F6\u95FC\u95FE\u9603\u9604\u9606\u9608\u960A\u960B\u960C\u960D\u960F\u9612\u9615\u9616\u9617\u9619\u961A\u4E2C\u723F\u6215\u6C35\u6C54\u6C5C\u6C4A\u6CA3\u6C85\u6C90\u6C94\u6C8C\u6C68\u6C69\u6C74\u6C76\u6C86\u6CA9\u6CD0\u6CD4\u6CAD\u6CF7\u6CF8\u6CF1\u6CD7\u6CB2\u6CE0\u6CD6\u6CFA\u6CEB\u6CEE\u6CB1\u6CD3\u6CEF\u6CFE"], ["e440", "\u92A8", 5, "\u92AF", 24, "\u92C9", 31], ["e480", "\u92E9", 32, "\u6D39\u6D27\u6D0C\u6D43\u6D48\u6D07\u6D04\u6D19\u6D0E\u6D2B\u6D4D\u6D2E\u6D35\u6D1A\u6D4F\u6D52\u6D54\u6D33\u6D91\u6D6F\u6D9E\u6DA0\u6D5E\u6D93\u6D94\u6D5C\u6D60\u6D7C\u6D63\u6E1A\u6DC7\u6DC5\u6DDE\u6E0E\u6DBF\u6DE0\u6E11\u6DE6\u6DDD\u6DD9\u6E16\u6DAB\u6E0C\u6DAE\u6E2B\u6E6E\u6E4E\u6E6B\u6EB2\u6E5F\u6E86\u6E53\u6E54\u6E32\u6E25\u6E44\u6EDF\u6EB1\u6E98\u6EE0\u6F2D\u6EE2\u6EA5\u6EA7\u6EBD\u6EBB\u6EB7\u6ED7\u6EB4\u6ECF\u6E8F\u6EC2\u6E9F\u6F62\u6F46\u6F47\u6F24\u6F15\u6EF9\u6F2F\u6F36\u6F4B\u6F74\u6F2A\u6F09\u6F29\u6F89\u6F8D\u6F8C\u6F78\u6F72\u6F7C\u6F7A\u6FD1"], ["e540", "\u930A", 51, "\u933F", 10], ["e580", "\u934A", 31, "\u936B\u6FC9\u6FA7\u6FB9\u6FB6\u6FC2\u6FE1\u6FEE\u6FDE\u6FE0\u6FEF\u701A\u7023\u701B\u7039\u7035\u704F\u705E\u5B80\u5B84\u5B95\u5B93\u5BA5\u5BB8\u752F\u9A9E\u6434\u5BE4\u5BEE\u8930\u5BF0\u8E47\u8B07\u8FB6\u8FD3\u8FD5\u8FE5\u8FEE\u8FE4\u8FE9\u8FE6\u8FF3\u8FE8\u9005\u9004\u900B\u9026\u9011\u900D\u9016\u9021\u9035\u9036\u902D\u902F\u9044\u9051\u9052\u9050\u9068\u9058\u9062\u905B\u66B9\u9074\u907D\u9082\u9088\u9083\u908B\u5F50\u5F57\u5F56\u5F58\u5C3B\u54AB\u5C50\u5C59\u5B71\u5C63\u5C66\u7FBC\u5F2A\u5F29\u5F2D\u8274\u5F3C\u9B3B\u5C6E\u5981\u5983\u598D\u59A9\u59AA\u59A3"], ["e640", "\u936C", 34, "\u9390", 27], ["e680", "\u93AC", 29, "\u93CB\u93CC\u93CD\u5997\u59CA\u59AB\u599E\u59A4\u59D2\u59B2\u59AF\u59D7\u59BE\u5A05\u5A06\u59DD\u5A08\u59E3\u59D8\u59F9\u5A0C\u5A09\u5A32\u5A34\u5A11\u5A23\u5A13\u5A40\u5A67\u5A4A\u5A55\u5A3C\u5A62\u5A75\u80EC\u5AAA\u5A9B\u5A77\u5A7A\u5ABE\u5AEB\u5AB2\u5AD2\u5AD4\u5AB8\u5AE0\u5AE3\u5AF1\u5AD6\u5AE6\u5AD8\u5ADC\u5B09\u5B17\u5B16\u5B32\u5B37\u5B40\u5C15\u5C1C\u5B5A\u5B65\u5B73\u5B51\u5B53\u5B62\u9A75\u9A77\u9A78\u9A7A\u9A7F\u9A7D\u9A80\u9A81\u9A85\u9A88\u9A8A\u9A90\u9A92\u9A93\u9A96\u9A98\u9A9B\u9A9C\u9A9D\u9A9F\u9AA0\u9AA2\u9AA3\u9AA5\u9AA7\u7E9F\u7EA1\u7EA3\u7EA5\u7EA8\u7EA9"], ["e740", "\u93CE", 7, "\u93D7", 54], ["e780", "\u940E", 32, "\u7EAD\u7EB0\u7EBE\u7EC0\u7EC1\u7EC2\u7EC9\u7ECB\u7ECC\u7ED0\u7ED4\u7ED7\u7EDB\u7EE0\u7EE1\u7EE8\u7EEB\u7EEE\u7EEF\u7EF1\u7EF2\u7F0D\u7EF6\u7EFA\u7EFB\u7EFE\u7F01\u7F02\u7F03\u7F07\u7F08\u7F0B\u7F0C\u7F0F\u7F11\u7F12\u7F17\u7F19\u7F1C\u7F1B\u7F1F\u7F21", 6, "\u7F2A\u7F2B\u7F2C\u7F2D\u7F2F", 4, "\u7F35\u5E7A\u757F\u5DDB\u753E\u9095\u738E\u7391\u73AE\u73A2\u739F\u73CF\u73C2\u73D1\u73B7\u73B3\u73C0\u73C9\u73C8\u73E5\u73D9\u987C\u740A\u73E9\u73E7\u73DE\u73BA\u73F2\u740F\u742A\u745B\u7426\u7425\u7428\u7430\u742E\u742C"], ["e840", "\u942F", 14, "\u943F", 43, "\u946C\u946D\u946E\u946F"], ["e880", "\u9470", 20, "\u9491\u9496\u9498\u94C7\u94CF\u94D3\u94D4\u94DA\u94E6\u94FB\u951C\u9520\u741B\u741A\u7441\u745C\u7457\u7455\u7459\u7477\u746D\u747E\u749C\u748E\u7480\u7481\u7487\u748B\u749E\u74A8\u74A9\u7490\u74A7\u74D2\u74BA\u97EA\u97EB\u97EC\u674C\u6753\u675E\u6748\u6769\u67A5\u6787\u676A\u6773\u6798\u67A7\u6775\u67A8\u679E\u67AD\u678B\u6777\u677C\u67F0\u6809\u67D8\u680A\u67E9\u67B0\u680C\u67D9\u67B5\u67DA\u67B3\u67DD\u6800\u67C3\u67B8\u67E2\u680E\u67C1\u67FD\u6832\u6833\u6860\u6861\u684E\u6862\u6844\u6864\u6883\u681D\u6855\u6866\u6841\u6867\u6840\u683E\u684A\u6849\u6829\u68B5\u688F\u6874\u6877\u6893\u686B\u68C2\u696E\u68FC\u691F\u6920\u68F9"], ["e940", "\u9527\u9533\u953D\u9543\u9548\u954B\u9555\u955A\u9560\u956E\u9574\u9575\u9577", 7, "\u9580", 42], ["e980", "\u95AB", 32, "\u6924\u68F0\u690B\u6901\u6957\u68E3\u6910\u6971\u6939\u6960\u6942\u695D\u6984\u696B\u6980\u6998\u6978\u6934\u69CC\u6987\u6988\u69CE\u6989\u6966\u6963\u6979\u699B\u69A7\u69BB\u69AB\u69AD\u69D4\u69B1\u69C1\u69CA\u69DF\u6995\u69E0\u698D\u69FF\u6A2F\u69ED\u6A17\u6A18\u6A65\u69F2\u6A44\u6A3E\u6AA0\u6A50\u6A5B\u6A35\u6A8E\u6A79\u6A3D\u6A28\u6A58\u6A7C\u6A91\u6A90\u6AA9\u6A97\u6AAB\u7337\u7352\u6B81\u6B82\u6B87\u6B84\u6B92\u6B93\u6B8D\u6B9A\u6B9B\u6BA1\u6BAA\u8F6B\u8F6D\u8F71\u8F72\u8F73\u8F75\u8F76\u8F78\u8F77\u8F79\u8F7A\u8F7C\u8F7E\u8F81\u8F82\u8F84\u8F87\u8F8B"], ["ea40", "\u95CC", 27, "\u95EC\u95FF\u9607\u9613\u9618\u961B\u961E\u9620\u9623", 6, "\u962B\u962C\u962D\u962F\u9630\u9637\u9638\u9639\u963A\u963E\u9641\u9643\u964A\u964E\u964F\u9651\u9652\u9653\u9656\u9657"], ["ea80", "\u9658\u9659\u965A\u965C\u965D\u965E\u9660\u9663\u9665\u9666\u966B\u966D", 4, "\u9673\u9678", 12, "\u9687\u9689\u968A\u8F8D\u8F8E\u8F8F\u8F98\u8F9A\u8ECE\u620B\u6217\u621B\u621F\u6222\u6221\u6225\u6224\u622C\u81E7\u74EF\u74F4\u74FF\u750F\u7511\u7513\u6534\u65EE\u65EF\u65F0\u660A\u6619\u6772\u6603\u6615\u6600\u7085\u66F7\u661D\u6634\u6631\u6636\u6635\u8006\u665F\u6654\u6641\u664F\u6656\u6661\u6657\u6677\u6684\u668C\u66A7\u669D\u66BE\u66DB\u66DC\u66E6\u66E9\u8D32\u8D33\u8D36\u8D3B\u8D3D\u8D40\u8D45\u8D46\u8D48\u8D49\u8D47\u8D4D\u8D55\u8D59\u89C7\u89CA\u89CB\u89CC\u89CE\u89CF\u89D0\u89D1\u726E\u729F\u725D\u7266\u726F\u727E\u727F\u7284\u728B\u728D\u728F\u7292\u6308\u6332\u63B0"], ["eb40", "\u968C\u968E\u9691\u9692\u9693\u9695\u9696\u969A\u969B\u969D", 9, "\u96A8", 7, "\u96B1\u96B2\u96B4\u96B5\u96B7\u96B8\u96BA\u96BB\u96BF\u96C2\u96C3\u96C8\u96CA\u96CB\u96D0\u96D1\u96D3\u96D4\u96D6", 9, "\u96E1", 6, "\u96EB"], ["eb80", "\u96EC\u96ED\u96EE\u96F0\u96F1\u96F2\u96F4\u96F5\u96F8\u96FA\u96FB\u96FC\u96FD\u96FF\u9702\u9703\u9705\u970A\u970B\u970C\u9710\u9711\u9712\u9714\u9715\u9717", 4, "\u971D\u971F\u9720\u643F\u64D8\u8004\u6BEA\u6BF3\u6BFD\u6BF5\u6BF9\u6C05\u6C07\u6C06\u6C0D\u6C15\u6C18\u6C19\u6C1A\u6C21\u6C29\u6C24\u6C2A\u6C32\u6535\u6555\u656B\u724D\u7252\u7256\u7230\u8662\u5216\u809F\u809C\u8093\u80BC\u670A\u80BD\u80B1\u80AB\u80AD\u80B4\u80B7\u80E7\u80E8\u80E9\u80EA\u80DB\u80C2\u80C4\u80D9\u80CD\u80D7\u6710\u80DD\u80EB\u80F1\u80F4\u80ED\u810D\u810E\u80F2\u80FC\u6715\u8112\u8C5A\u8136\u811E\u812C\u8118\u8132\u8148\u814C\u8153\u8174\u8159\u815A\u8171\u8160\u8169\u817C\u817D\u816D\u8167\u584D\u5AB5\u8188\u8182\u8191\u6ED5\u81A3\u81AA\u81CC\u6726\u81CA\u81BB"], ["ec40", "\u9721", 8, "\u972B\u972C\u972E\u972F\u9731\u9733", 4, "\u973A\u973B\u973C\u973D\u973F", 18, "\u9754\u9755\u9757\u9758\u975A\u975C\u975D\u975F\u9763\u9764\u9766\u9767\u9768\u976A", 7], ["ec80", "\u9772\u9775\u9777", 4, "\u977D", 7, "\u9786", 4, "\u978C\u978E\u978F\u9790\u9793\u9795\u9796\u9797\u9799", 4, "\u81C1\u81A6\u6B24\u6B37\u6B39\u6B43\u6B46\u6B59\u98D1\u98D2\u98D3\u98D5\u98D9\u98DA\u6BB3\u5F40\u6BC2\u89F3\u6590\u9F51\u6593\u65BC\u65C6\u65C4\u65C3\u65CC\u65CE\u65D2\u65D6\u7080\u709C\u7096\u709D\u70BB\u70C0\u70B7\u70AB\u70B1\u70E8\u70CA\u7110\u7113\u7116\u712F\u7131\u7173\u715C\u7168\u7145\u7172\u714A\u7178\u717A\u7198\u71B3\u71B5\u71A8\u71A0\u71E0\u71D4\u71E7\u71F9\u721D\u7228\u706C\u7118\u7166\u71B9\u623E\u623D\u6243\u6248\u6249\u793B\u7940\u7946\u7949\u795B\u795C\u7953\u795A\u7962\u7957\u7960\u796F\u7967\u797A\u7985\u798A\u799A\u79A7\u79B3\u5FD1\u5FD0"], ["ed40", "\u979E\u979F\u97A1\u97A2\u97A4", 6, "\u97AC\u97AE\u97B0\u97B1\u97B3\u97B5", 46], ["ed80", "\u97E4\u97E5\u97E8\u97EE", 4, "\u97F4\u97F7", 23, "\u603C\u605D\u605A\u6067\u6041\u6059\u6063\u60AB\u6106\u610D\u615D\u61A9\u619D\u61CB\u61D1\u6206\u8080\u807F\u6C93\u6CF6\u6DFC\u77F6\u77F8\u7800\u7809\u7817\u7818\u7811\u65AB\u782D\u781C\u781D\u7839\u783A\u783B\u781F\u783C\u7825\u782C\u7823\u7829\u784E\u786D\u7856\u7857\u7826\u7850\u7847\u784C\u786A\u789B\u7893\u789A\u7887\u789C\u78A1\u78A3\u78B2\u78B9\u78A5\u78D4\u78D9\u78C9\u78EC\u78F2\u7905\u78F4\u7913\u7924\u791E\u7934\u9F9B\u9EF9\u9EFB\u9EFC\u76F1\u7704\u770D\u76F9\u7707\u7708\u771A\u7722\u7719\u772D\u7726\u7735\u7738\u7750\u7751\u7747\u7743\u775A\u7768"], ["ee40", "\u980F", 62], ["ee80", "\u984E", 32, "\u7762\u7765\u777F\u778D\u777D\u7780\u778C\u7791\u779F\u77A0\u77B0\u77B5\u77BD\u753A\u7540\u754E\u754B\u7548\u755B\u7572\u7579\u7583\u7F58\u7F61\u7F5F\u8A48\u7F68\u7F74\u7F71\u7F79\u7F81\u7F7E\u76CD\u76E5\u8832\u9485\u9486\u9487\u948B\u948A\u948C\u948D\u948F\u9490\u9494\u9497\u9495\u949A\u949B\u949C\u94A3\u94A4\u94AB\u94AA\u94AD\u94AC\u94AF\u94B0\u94B2\u94B4\u94B6", 4, "\u94BC\u94BD\u94BF\u94C4\u94C8", 6, "\u94D0\u94D1\u94D2\u94D5\u94D6\u94D7\u94D9\u94D8\u94DB\u94DE\u94DF\u94E0\u94E2\u94E4\u94E5\u94E7\u94E8\u94EA"], ["ef40", "\u986F", 5, "\u988B\u988E\u9892\u9895\u9899\u98A3\u98A8", 37, "\u98CF\u98D0\u98D4\u98D6\u98D7\u98DB\u98DC\u98DD\u98E0", 4], ["ef80", "\u98E5\u98E6\u98E9", 30, "\u94E9\u94EB\u94EE\u94EF\u94F3\u94F4\u94F5\u94F7\u94F9\u94FC\u94FD\u94FF\u9503\u9502\u9506\u9507\u9509\u950A\u950D\u950E\u950F\u9512", 4, "\u9518\u951B\u951D\u951E\u951F\u9522\u952A\u952B\u9529\u952C\u9531\u9532\u9534\u9536\u9537\u9538\u953C\u953E\u953F\u9542\u9535\u9544\u9545\u9546\u9549\u954C\u954E\u954F\u9552\u9553\u9554\u9556\u9557\u9558\u9559\u955B\u955E\u955F\u955D\u9561\u9562\u9564", 8, "\u956F\u9571\u9572\u9573\u953A\u77E7\u77EC\u96C9\u79D5\u79ED\u79E3\u79EB\u7A06\u5D47\u7A03\u7A02\u7A1E\u7A14"], ["f040", "\u9908", 4, "\u990E\u990F\u9911", 28, "\u992F", 26], ["f080", "\u994A", 9, "\u9956", 12, "\u9964\u9966\u9973\u9978\u9979\u997B\u997E\u9982\u9983\u9989\u7A39\u7A37\u7A51\u9ECF\u99A5\u7A70\u7688\u768E\u7693\u7699\u76A4\u74DE\u74E0\u752C\u9E20\u9E22\u9E28", 4, "\u9E32\u9E31\u9E36\u9E38\u9E37\u9E39\u9E3A\u9E3E\u9E41\u9E42\u9E44\u9E46\u9E47\u9E48\u9E49\u9E4B\u9E4C\u9E4E\u9E51\u9E55\u9E57\u9E5A\u9E5B\u9E5C\u9E5E\u9E63\u9E66", 6, "\u9E71\u9E6D\u9E73\u7592\u7594\u7596\u75A0\u759D\u75AC\u75A3\u75B3\u75B4\u75B8\u75C4\u75B1\u75B0\u75C3\u75C2\u75D6\u75CD\u75E3\u75E8\u75E6\u75E4\u75EB\u75E7\u7603\u75F1\u75FC\u75FF\u7610\u7600\u7605\u760C\u7617\u760A\u7625\u7618\u7615\u7619"], ["f140", "\u998C\u998E\u999A", 10, "\u99A6\u99A7\u99A9", 47], ["f180", "\u99D9", 32, "\u761B\u763C\u7622\u7620\u7640\u762D\u7630\u763F\u7635\u7643\u763E\u7633\u764D\u765E\u7654\u765C\u7656\u766B\u766F\u7FCA\u7AE6\u7A78\u7A79\u7A80\u7A86\u7A88\u7A95\u7AA6\u7AA0\u7AAC\u7AA8\u7AAD\u7AB3\u8864\u8869\u8872\u887D\u887F\u8882\u88A2\u88C6\u88B7\u88BC\u88C9\u88E2\u88CE\u88E3\u88E5\u88F1\u891A\u88FC\u88E8\u88FE\u88F0\u8921\u8919\u8913\u891B\u890A\u8934\u892B\u8936\u8941\u8966\u897B\u758B\u80E5\u76B2\u76B4\u77DC\u8012\u8014\u8016\u801C\u8020\u8022\u8025\u8026\u8027\u8029\u8028\u8031\u800B\u8035\u8043\u8046\u804D\u8052\u8069\u8071\u8983\u9878\u9880\u9883"], ["f240", "\u99FA", 62], ["f280", "\u9A39", 32, "\u9889\u988C\u988D\u988F\u9894\u989A\u989B\u989E\u989F\u98A1\u98A2\u98A5\u98A6\u864D\u8654\u866C\u866E\u867F\u867A\u867C\u867B\u86A8\u868D\u868B\u86AC\u869D\u86A7\u86A3\u86AA\u8693\u86A9\u86B6\u86C4\u86B5\u86CE\u86B0\u86BA\u86B1\u86AF\u86C9\u86CF\u86B4\u86E9\u86F1\u86F2\u86ED\u86F3\u86D0\u8713\u86DE\u86F4\u86DF\u86D8\u86D1\u8703\u8707\u86F8\u8708\u870A\u870D\u8709\u8723\u873B\u871E\u8725\u872E\u871A\u873E\u8748\u8734\u8731\u8729\u8737\u873F\u8782\u8722\u877D\u877E\u877B\u8760\u8770\u874C\u876E\u878B\u8753\u8763\u877C\u8764\u8759\u8765\u8793\u87AF\u87A8\u87D2"], ["f340", "\u9A5A", 17, "\u9A72\u9A83\u9A89\u9A8D\u9A8E\u9A94\u9A95\u9A99\u9AA6\u9AA9", 6, "\u9AB2\u9AB3\u9AB4\u9AB5\u9AB9\u9ABB\u9ABD\u9ABE\u9ABF\u9AC3\u9AC4\u9AC6", 4, "\u9ACD\u9ACE\u9ACF\u9AD0\u9AD2\u9AD4\u9AD5\u9AD6\u9AD7\u9AD9\u9ADA\u9ADB\u9ADC"], ["f380", "\u9ADD\u9ADE\u9AE0\u9AE2\u9AE3\u9AE4\u9AE5\u9AE7\u9AE8\u9AE9\u9AEA\u9AEC\u9AEE\u9AF0", 8, "\u9AFA\u9AFC", 6, "\u9B04\u9B05\u9B06\u87C6\u8788\u8785\u87AD\u8797\u8783\u87AB\u87E5\u87AC\u87B5\u87B3\u87CB\u87D3\u87BD\u87D1\u87C0\u87CA\u87DB\u87EA\u87E0\u87EE\u8816\u8813\u87FE\u880A\u881B\u8821\u8839\u883C\u7F36\u7F42\u7F44\u7F45\u8210\u7AFA\u7AFD\u7B08\u7B03\u7B04\u7B15\u7B0A\u7B2B\u7B0F\u7B47\u7B38\u7B2A\u7B19\u7B2E\u7B31\u7B20\u7B25\u7B24\u7B33\u7B3E\u7B1E\u7B58\u7B5A\u7B45\u7B75\u7B4C\u7B5D\u7B60\u7B6E\u7B7B\u7B62\u7B72\u7B71\u7B90\u7BA6\u7BA7\u7BB8\u7BAC\u7B9D\u7BA8\u7B85\u7BAA\u7B9C\u7BA2\u7BAB\u7BB4\u7BD1\u7BC1\u7BCC\u7BDD\u7BDA\u7BE5\u7BE6\u7BEA\u7C0C\u7BFE\u7BFC\u7C0F\u7C16\u7C0B"], ["f440", "\u9B07\u9B09", 5, "\u9B10\u9B11\u9B12\u9B14", 10, "\u9B20\u9B21\u9B22\u9B24", 10, "\u9B30\u9B31\u9B33", 7, "\u9B3D\u9B3E\u9B3F\u9B40\u9B46\u9B4A\u9B4B\u9B4C\u9B4E\u9B50\u9B52\u9B53\u9B55", 5], ["f480", "\u9B5B", 32, "\u7C1F\u7C2A\u7C26\u7C38\u7C41\u7C40\u81FE\u8201\u8202\u8204\u81EC\u8844\u8221\u8222\u8223\u822D\u822F\u8228\u822B\u8238\u823B\u8233\u8234\u823E\u8244\u8249\u824B\u824F\u825A\u825F\u8268\u887E\u8885\u8888\u88D8\u88DF\u895E\u7F9D\u7F9F\u7FA7\u7FAF\u7FB0\u7FB2\u7C7C\u6549\u7C91\u7C9D\u7C9C\u7C9E\u7CA2\u7CB2\u7CBC\u7CBD\u7CC1\u7CC7\u7CCC\u7CCD\u7CC8\u7CC5\u7CD7\u7CE8\u826E\u66A8\u7FBF\u7FCE\u7FD5\u7FE5\u7FE1\u7FE6\u7FE9\u7FEE\u7FF3\u7CF8\u7D77\u7DA6\u7DAE\u7E47\u7E9B\u9EB8\u9EB4\u8D73\u8D84\u8D94\u8D91\u8DB1\u8D67\u8D6D\u8C47\u8C49\u914A\u9150\u914E\u914F\u9164"], ["f540", "\u9B7C", 62], ["f580", "\u9BBB", 32, "\u9162\u9161\u9170\u9169\u916F\u917D\u917E\u9172\u9174\u9179\u918C\u9185\u9190\u918D\u9191\u91A2\u91A3\u91AA\u91AD\u91AE\u91AF\u91B5\u91B4\u91BA\u8C55\u9E7E\u8DB8\u8DEB\u8E05\u8E59\u8E69\u8DB5\u8DBF\u8DBC\u8DBA\u8DC4\u8DD6\u8DD7\u8DDA\u8DDE\u8DCE\u8DCF\u8DDB\u8DC6\u8DEC\u8DF7\u8DF8\u8DE3\u8DF9\u8DFB\u8DE4\u8E09\u8DFD\u8E14\u8E1D\u8E1F\u8E2C\u8E2E\u8E23\u8E2F\u8E3A\u8E40\u8E39\u8E35\u8E3D\u8E31\u8E49\u8E41\u8E42\u8E51\u8E52\u8E4A\u8E70\u8E76\u8E7C\u8E6F\u8E74\u8E85\u8E8F\u8E94\u8E90\u8E9C\u8E9E\u8C78\u8C82\u8C8A\u8C85\u8C98\u8C94\u659B\u89D6\u89DE\u89DA\u89DC"], ["f640", "\u9BDC", 62], ["f680", "\u9C1B", 32, "\u89E5\u89EB\u89EF\u8A3E\u8B26\u9753\u96E9\u96F3\u96EF\u9706\u9701\u9708\u970F\u970E\u972A\u972D\u9730\u973E\u9F80\u9F83\u9F85", 5, "\u9F8C\u9EFE\u9F0B\u9F0D\u96B9\u96BC\u96BD\u96CE\u96D2\u77BF\u96E0\u928E\u92AE\u92C8\u933E\u936A\u93CA\u938F\u943E\u946B\u9C7F\u9C82\u9C85\u9C86\u9C87\u9C88\u7A23\u9C8B\u9C8E\u9C90\u9C91\u9C92\u9C94\u9C95\u9C9A\u9C9B\u9C9E", 5, "\u9CA5", 4, "\u9CAB\u9CAD\u9CAE\u9CB0", 7, "\u9CBA\u9CBB\u9CBC\u9CBD\u9CC4\u9CC5\u9CC6\u9CC7\u9CCA\u9CCB"], ["f740", "\u9C3C", 62], ["f780", "\u9C7B\u9C7D\u9C7E\u9C80\u9C83\u9C84\u9C89\u9C8A\u9C8C\u9C8F\u9C93\u9C96\u9C97\u9C98\u9C99\u9C9D\u9CAA\u9CAC\u9CAF\u9CB9\u9CBE", 4, "\u9CC8\u9CC9\u9CD1\u9CD2\u9CDA\u9CDB\u9CE0\u9CE1\u9CCC", 4, "\u9CD3\u9CD4\u9CD5\u9CD7\u9CD8\u9CD9\u9CDC\u9CDD\u9CDF\u9CE2\u977C\u9785\u9791\u9792\u9794\u97AF\u97AB\u97A3\u97B2\u97B4\u9AB1\u9AB0\u9AB7\u9E58\u9AB6\u9ABA\u9ABC\u9AC1\u9AC0\u9AC5\u9AC2\u9ACB\u9ACC\u9AD1\u9B45\u9B43\u9B47\u9B49\u9B48\u9B4D\u9B51\u98E8\u990D\u992E\u9955\u9954\u9ADF\u9AE1\u9AE6\u9AEF\u9AEB\u9AFB\u9AED\u9AF9\u9B08\u9B0F\u9B13\u9B1F\u9B23\u9EBD\u9EBE\u7E3B\u9E82\u9E87\u9E88\u9E8B\u9E92\u93D6\u9E9D\u9E9F\u9EDB\u9EDC\u9EDD\u9EE0\u9EDF\u9EE2\u9EE9\u9EE7\u9EE5\u9EEA\u9EEF\u9F22\u9F2C\u9F2F\u9F39\u9F37\u9F3D\u9F3E\u9F44"], ["f840", "\u9CE3", 62], ["f880", "\u9D22", 32], ["f940", "\u9D43", 62], ["f980", "\u9D82", 32], ["fa40", "\u9DA3", 62], ["fa80", "\u9DE2", 32], ["fb40", "\u9E03", 27, "\u9E24\u9E27\u9E2E\u9E30\u9E34\u9E3B\u9E3C\u9E40\u9E4D\u9E50\u9E52\u9E53\u9E54\u9E56\u9E59\u9E5D\u9E5F\u9E60\u9E61\u9E62\u9E65\u9E6E\u9E6F\u9E72\u9E74", 9, "\u9E80"], ["fb80", "\u9E81\u9E83\u9E84\u9E85\u9E86\u9E89\u9E8A\u9E8C", 5, "\u9E94", 8, "\u9E9E\u9EA0", 5, "\u9EA7\u9EA8\u9EA9\u9EAA"], ["fc40", "\u9EAB", 8, "\u9EB5\u9EB6\u9EB7\u9EB9\u9EBA\u9EBC\u9EBF", 4, "\u9EC5\u9EC6\u9EC7\u9EC8\u9ECA\u9ECB\u9ECC\u9ED0\u9ED2\u9ED3\u9ED5\u9ED6\u9ED7\u9ED9\u9EDA\u9EDE\u9EE1\u9EE3\u9EE4\u9EE6\u9EE8\u9EEB\u9EEC\u9EED\u9EEE\u9EF0", 8, "\u9EFA\u9EFD\u9EFF", 6], ["fc80", "\u9F06", 4, "\u9F0C\u9F0F\u9F11\u9F12\u9F14\u9F15\u9F16\u9F18\u9F1A", 5, "\u9F21\u9F23", 8, "\u9F2D\u9F2E\u9F30\u9F31"], ["fd40", "\u9F32", 4, "\u9F38\u9F3A\u9F3C\u9F3F", 4, "\u9F45", 10, "\u9F52", 38], ["fd80", "\u9F79", 5, "\u9F81\u9F82\u9F8D", 11, "\u9F9C\u9F9D\u9F9E\u9FA1", 4, "\uF92C\uF979\uF995\uF9E7\uF9F1"], ["fe40", "\uFA0C\uFA0D\uFA0E\uFA0F\uFA11\uFA13\uFA14\uFA18\uFA1F\uFA20\uFA21\uFA23\uFA24\uFA27\uFA28\uFA29"]]; +}); +var rx = g((Hpe, sU) => { + sU.exports = [["a140", "\uE4C6", 62], ["a180", "\uE505", 32], ["a240", "\uE526", 62], ["a280", "\uE565", 32], ["a2ab", "\uE766", 5], ["a2e3", "\u20AC\uE76D"], ["a2ef", "\uE76E\uE76F"], ["a2fd", "\uE770\uE771"], ["a340", "\uE586", 62], ["a380", "\uE5C5", 31, "\u3000"], ["a440", "\uE5E6", 62], ["a480", "\uE625", 32], ["a4f4", "\uE772", 10], ["a540", "\uE646", 62], ["a580", "\uE685", 32], ["a5f7", "\uE77D", 7], ["a640", "\uE6A6", 62], ["a680", "\uE6E5", 32], ["a6b9", "\uE785", 7], ["a6d9", "\uE78D", 6], ["a6ec", "\uE794\uE795"], ["a6f3", "\uE796"], ["a6f6", "\uE797", 8], ["a740", "\uE706", 62], ["a780", "\uE745", 32], ["a7c2", "\uE7A0", 14], ["a7f2", "\uE7AF", 12], ["a896", "\uE7BC", 10], ["a8bc", "\uE7C7"], ["a8bf", "\u01F9"], ["a8c1", "\uE7C9\uE7CA\uE7CB\uE7CC"], ["a8ea", "\uE7CD", 20], ["a958", "\uE7E2"], ["a95b", "\uE7E3"], ["a95d", "\uE7E4\uE7E5\uE7E6"], ["a989", "\u303E\u2FF0", 11], ["a997", "\uE7F4", 12], ["a9f0", "\uE801", 14], ["aaa1", "\uE000", 93], ["aba1", "\uE05E", 93], ["aca1", "\uE0BC", 93], ["ada1", "\uE11A", 93], ["aea1", "\uE178", 93], ["afa1", "\uE1D6", 93], ["d7fa", "\uE810", 4], ["f8a1", "\uE234", 93], ["f9a1", "\uE292", 93], ["faa1", "\uE2F0", 93], ["fba1", "\uE34E", 93], ["fca1", "\uE3AC", 93], ["fda1", "\uE40A", 93], ["fe50", "\u2E81\uE816\uE817\uE818\u2E84\u3473\u3447\u2E88\u2E8B\uE81E\u359E\u361A\u360E\u2E8C\u2E97\u396E\u3918\uE826\u39CF\u39DF\u3A73\u39D0\uE82B\uE82C\u3B4E\u3C6E\u3CE0\u2EA7\uE831\uE832\u2EAA\u4056\u415F\u2EAE\u4337\u2EB3\u2EB6\u2EB7\uE83B\u43B1\u43AC\u2EBB\u43DD\u44D6\u4661\u464C\uE843"], ["fe80", "\u4723\u4729\u477C\u478D\u2ECA\u4947\u497A\u497D\u4982\u4983\u4985\u4986\u499F\u499B\u49B7\u49B6\uE854\uE855\u4CA3\u4C9F\u4CA0\u4CA1\u4C77\u4CA2\u4D13", 6, "\u4DAE\uE864\uE468", 93]]; +}); +var JE = g((Jpe, cU) => { + cU.exports = { uChars: [128, 165, 169, 178, 184, 216, 226, 235, 238, 244, 248, 251, 253, 258, 276, 284, 300, 325, 329, 334, 364, 463, 465, 467, 469, 471, 473, 475, 477, 506, 594, 610, 712, 716, 730, 930, 938, 962, 970, 1026, 1104, 1106, 8209, 8215, 8218, 8222, 8231, 8241, 8244, 8246, 8252, 8365, 8452, 8454, 8458, 8471, 8482, 8556, 8570, 8596, 8602, 8713, 8720, 8722, 8726, 8731, 8737, 8740, 8742, 8748, 8751, 8760, 8766, 8777, 8781, 8787, 8802, 8808, 8816, 8854, 8858, 8870, 8896, 8979, 9322, 9372, 9548, 9588, 9616, 9622, 9634, 9652, 9662, 9672, 9676, 9680, 9702, 9735, 9738, 9793, 9795, 11906, 11909, 11913, 11917, 11928, 11944, 11947, 11951, 11956, 11960, 11964, 11979, 12284, 12292, 12312, 12319, 12330, 12351, 12436, 12447, 12535, 12543, 12586, 12842, 12850, 12964, 13200, 13215, 13218, 13253, 13263, 13267, 13270, 13384, 13428, 13727, 13839, 13851, 14617, 14703, 14801, 14816, 14964, 15183, 15471, 15585, 16471, 16736, 17208, 17325, 17330, 17374, 17623, 17997, 18018, 18212, 18218, 18301, 18318, 18760, 18811, 18814, 18820, 18823, 18844, 18848, 18872, 19576, 19620, 19738, 19887, 40870, 59244, 59336, 59367, 59413, 59417, 59423, 59431, 59437, 59443, 59452, 59460, 59478, 59493, 63789, 63866, 63894, 63976, 63986, 64016, 64018, 64021, 64025, 64034, 64037, 64042, 65074, 65093, 65107, 65112, 65127, 65132, 65375, 65510, 65536], gbChars: [0, 36, 38, 45, 50, 81, 89, 95, 96, 100, 103, 104, 105, 109, 126, 133, 148, 172, 175, 179, 208, 306, 307, 308, 309, 310, 311, 312, 313, 341, 428, 443, 544, 545, 558, 741, 742, 749, 750, 805, 819, 820, 7922, 7924, 7925, 7927, 7934, 7943, 7944, 7945, 7950, 8062, 8148, 8149, 8152, 8164, 8174, 8236, 8240, 8262, 8264, 8374, 8380, 8381, 8384, 8388, 8390, 8392, 8393, 8394, 8396, 8401, 8406, 8416, 8419, 8424, 8437, 8439, 8445, 8482, 8485, 8496, 8521, 8603, 8936, 8946, 9046, 9050, 9063, 9066, 9076, 9092, 9100, 9108, 9111, 9113, 9131, 9162, 9164, 9218, 9219, 11329, 11331, 11334, 11336, 11346, 11361, 11363, 11366, 11370, 11372, 11375, 11389, 11682, 11686, 11687, 11692, 11694, 11714, 11716, 11723, 11725, 11730, 11736, 11982, 11989, 12102, 12336, 12348, 12350, 12384, 12393, 12395, 12397, 12510, 12553, 12851, 12962, 12973, 13738, 13823, 13919, 13933, 14080, 14298, 14585, 14698, 15583, 15847, 16318, 16434, 16438, 16481, 16729, 17102, 17122, 17315, 17320, 17402, 17418, 17859, 17909, 17911, 17915, 17916, 17936, 17939, 17961, 18664, 18703, 18814, 18962, 19043, 33469, 33470, 33471, 33484, 33485, 33490, 33497, 33501, 33505, 33513, 33520, 33536, 33550, 37845, 37921, 37948, 38029, 38038, 38064, 38065, 38066, 38069, 38075, 38076, 38078, 39108, 39109, 39113, 39114, 39115, 39116, 39265, 39394, 189e3] }; +}); +var GE = g((Gpe, uU) => { + uU.exports = [["0", "\0", 127], ["8141", "\uAC02\uAC03\uAC05\uAC06\uAC0B", 4, "\uAC18\uAC1E\uAC1F\uAC21\uAC22\uAC23\uAC25", 6, "\uAC2E\uAC32\uAC33\uAC34"], ["8161", "\uAC35\uAC36\uAC37\uAC3A\uAC3B\uAC3D\uAC3E\uAC3F\uAC41", 9, "\uAC4C\uAC4E", 5, "\uAC55"], ["8181", "\uAC56\uAC57\uAC59\uAC5A\uAC5B\uAC5D", 18, "\uAC72\uAC73\uAC75\uAC76\uAC79\uAC7B", 4, "\uAC82\uAC87\uAC88\uAC8D\uAC8E\uAC8F\uAC91\uAC92\uAC93\uAC95", 6, "\uAC9E\uACA2", 5, "\uACAB\uACAD\uACAE\uACB1", 6, "\uACBA\uACBE\uACBF\uACC0\uACC2\uACC3\uACC5\uACC6\uACC7\uACC9\uACCA\uACCB\uACCD", 7, "\uACD6\uACD8", 7, "\uACE2\uACE3\uACE5\uACE6\uACE9\uACEB\uACED\uACEE\uACF2\uACF4\uACF7", 4, "\uACFE\uACFF\uAD01\uAD02\uAD03\uAD05\uAD07", 4, "\uAD0E\uAD10\uAD12\uAD13"], ["8241", "\uAD14\uAD15\uAD16\uAD17\uAD19\uAD1A\uAD1B\uAD1D\uAD1E\uAD1F\uAD21", 7, "\uAD2A\uAD2B\uAD2E", 5], ["8261", "\uAD36\uAD37\uAD39\uAD3A\uAD3B\uAD3D", 6, "\uAD46\uAD48\uAD4A", 5, "\uAD51\uAD52\uAD53\uAD55\uAD56\uAD57"], ["8281", "\uAD59", 7, "\uAD62\uAD64", 7, "\uAD6E\uAD6F\uAD71\uAD72\uAD77\uAD78\uAD79\uAD7A\uAD7E\uAD80\uAD83", 4, "\uAD8A\uAD8B\uAD8D\uAD8E\uAD8F\uAD91", 10, "\uAD9E", 5, "\uADA5", 17, "\uADB8", 7, "\uADC2\uADC3\uADC5\uADC6\uADC7\uADC9", 6, "\uADD2\uADD4", 7, "\uADDD\uADDE\uADDF\uADE1\uADE2\uADE3\uADE5", 18], ["8341", "\uADFA\uADFB\uADFD\uADFE\uAE02", 5, "\uAE0A\uAE0C\uAE0E", 5, "\uAE15", 7], ["8361", "\uAE1D", 18, "\uAE32\uAE33\uAE35\uAE36\uAE39\uAE3B\uAE3C"], ["8381", "\uAE3D\uAE3E\uAE3F\uAE42\uAE44\uAE47\uAE48\uAE49\uAE4B\uAE4F\uAE51\uAE52\uAE53\uAE55\uAE57", 4, "\uAE5E\uAE62\uAE63\uAE64\uAE66\uAE67\uAE6A\uAE6B\uAE6D\uAE6E\uAE6F\uAE71", 6, "\uAE7A\uAE7E", 5, "\uAE86", 5, "\uAE8D", 46, "\uAEBF\uAEC1\uAEC2\uAEC3\uAEC5", 6, "\uAECE\uAED2", 5, "\uAEDA\uAEDB\uAEDD", 8], ["8441", "\uAEE6\uAEE7\uAEE9\uAEEA\uAEEC\uAEEE", 5, "\uAEF5\uAEF6\uAEF7\uAEF9\uAEFA\uAEFB\uAEFD", 8], ["8461", "\uAF06\uAF09\uAF0A\uAF0B\uAF0C\uAF0E\uAF0F\uAF11", 18], ["8481", "\uAF24", 7, "\uAF2E\uAF2F\uAF31\uAF33\uAF35", 6, "\uAF3E\uAF40\uAF44\uAF45\uAF46\uAF47\uAF4A", 5, "\uAF51", 10, "\uAF5E", 5, "\uAF66", 18, "\uAF7A", 5, "\uAF81\uAF82\uAF83\uAF85\uAF86\uAF87\uAF89", 6, "\uAF92\uAF93\uAF94\uAF96", 5, "\uAF9D", 26, "\uAFBA\uAFBB\uAFBD\uAFBE"], ["8541", "\uAFBF\uAFC1", 5, "\uAFCA\uAFCC\uAFCF", 4, "\uAFD5", 6, "\uAFDD", 4], ["8561", "\uAFE2", 5, "\uAFEA", 5, "\uAFF2\uAFF3\uAFF5\uAFF6\uAFF7\uAFF9", 6, "\uB002\uB003"], ["8581", "\uB005", 6, "\uB00D\uB00E\uB00F\uB011\uB012\uB013\uB015", 6, "\uB01E", 9, "\uB029", 26, "\uB046\uB047\uB049\uB04B\uB04D\uB04F\uB050\uB051\uB052\uB056\uB058\uB05A\uB05B\uB05C\uB05E", 29, "\uB07E\uB07F\uB081\uB082\uB083\uB085", 6, "\uB08E\uB090\uB092", 5, "\uB09B\uB09D\uB09E\uB0A3\uB0A4"], ["8641", "\uB0A5\uB0A6\uB0A7\uB0AA\uB0B0\uB0B2\uB0B6\uB0B7\uB0B9\uB0BA\uB0BB\uB0BD", 6, "\uB0C6\uB0CA", 5, "\uB0D2"], ["8661", "\uB0D3\uB0D5\uB0D6\uB0D7\uB0D9", 6, "\uB0E1\uB0E2\uB0E3\uB0E4\uB0E6", 10], ["8681", "\uB0F1", 22, "\uB10A\uB10D\uB10E\uB10F\uB111\uB114\uB115\uB116\uB117\uB11A\uB11E", 4, "\uB126\uB127\uB129\uB12A\uB12B\uB12D", 6, "\uB136\uB13A", 5, "\uB142\uB143\uB145\uB146\uB147\uB149", 6, "\uB152\uB153\uB156\uB157\uB159\uB15A\uB15B\uB15D\uB15E\uB15F\uB161", 22, "\uB17A\uB17B\uB17D\uB17E\uB17F\uB181\uB183", 4, "\uB18A\uB18C\uB18E\uB18F\uB190\uB191\uB195\uB196\uB197\uB199\uB19A\uB19B\uB19D"], ["8741", "\uB19E", 9, "\uB1A9", 15], ["8761", "\uB1B9", 18, "\uB1CD\uB1CE\uB1CF\uB1D1\uB1D2\uB1D3\uB1D5"], ["8781", "\uB1D6", 5, "\uB1DE\uB1E0", 7, "\uB1EA\uB1EB\uB1ED\uB1EE\uB1EF\uB1F1", 7, "\uB1FA\uB1FC\uB1FE", 5, "\uB206\uB207\uB209\uB20A\uB20D", 6, "\uB216\uB218\uB21A", 5, "\uB221", 18, "\uB235", 6, "\uB23D", 26, "\uB259\uB25A\uB25B\uB25D\uB25E\uB25F\uB261", 6, "\uB26A", 4], ["8841", "\uB26F", 4, "\uB276", 5, "\uB27D", 6, "\uB286\uB287\uB288\uB28A", 4], ["8861", "\uB28F\uB292\uB293\uB295\uB296\uB297\uB29B", 4, "\uB2A2\uB2A4\uB2A7\uB2A8\uB2A9\uB2AB\uB2AD\uB2AE\uB2AF\uB2B1\uB2B2\uB2B3\uB2B5\uB2B6\uB2B7"], ["8881", "\uB2B8", 15, "\uB2CA\uB2CB\uB2CD\uB2CE\uB2CF\uB2D1\uB2D3", 4, "\uB2DA\uB2DC\uB2DE\uB2DF\uB2E0\uB2E1\uB2E3\uB2E7\uB2E9\uB2EA\uB2F0\uB2F1\uB2F2\uB2F6\uB2FC\uB2FD\uB2FE\uB302\uB303\uB305\uB306\uB307\uB309", 6, "\uB312\uB316", 5, "\uB31D", 54, "\uB357\uB359\uB35A\uB35D\uB360\uB361\uB362\uB363"], ["8941", "\uB366\uB368\uB36A\uB36C\uB36D\uB36F\uB372\uB373\uB375\uB376\uB377\uB379", 6, "\uB382\uB386", 5, "\uB38D"], ["8961", "\uB38E\uB38F\uB391\uB392\uB393\uB395", 10, "\uB3A2", 5, "\uB3A9\uB3AA\uB3AB\uB3AD"], ["8981", "\uB3AE", 21, "\uB3C6\uB3C7\uB3C9\uB3CA\uB3CD\uB3CF\uB3D1\uB3D2\uB3D3\uB3D6\uB3D8\uB3DA\uB3DC\uB3DE\uB3DF\uB3E1\uB3E2\uB3E3\uB3E5\uB3E6\uB3E7\uB3E9", 18, "\uB3FD", 18, "\uB411", 6, "\uB419\uB41A\uB41B\uB41D\uB41E\uB41F\uB421", 6, "\uB42A\uB42C", 7, "\uB435", 15], ["8a41", "\uB445", 10, "\uB452\uB453\uB455\uB456\uB457\uB459", 6, "\uB462\uB464\uB466"], ["8a61", "\uB467", 4, "\uB46D", 18, "\uB481\uB482"], ["8a81", "\uB483", 4, "\uB489", 19, "\uB49E", 5, "\uB4A5\uB4A6\uB4A7\uB4A9\uB4AA\uB4AB\uB4AD", 7, "\uB4B6\uB4B8\uB4BA", 5, "\uB4C1\uB4C2\uB4C3\uB4C5\uB4C6\uB4C7\uB4C9", 6, "\uB4D1\uB4D2\uB4D3\uB4D4\uB4D6", 5, "\uB4DE\uB4DF\uB4E1\uB4E2\uB4E5\uB4E7", 4, "\uB4EE\uB4F0\uB4F2", 5, "\uB4F9", 26, "\uB516\uB517\uB519\uB51A\uB51D"], ["8b41", "\uB51E", 5, "\uB526\uB52B", 4, "\uB532\uB533\uB535\uB536\uB537\uB539", 6, "\uB542\uB546"], ["8b61", "\uB547\uB548\uB549\uB54A\uB54E\uB54F\uB551\uB552\uB553\uB555", 6, "\uB55E\uB562", 8], ["8b81", "\uB56B", 52, "\uB5A2\uB5A3\uB5A5\uB5A6\uB5A7\uB5A9\uB5AC\uB5AD\uB5AE\uB5AF\uB5B2\uB5B6", 4, "\uB5BE\uB5BF\uB5C1\uB5C2\uB5C3\uB5C5", 6, "\uB5CE\uB5D2", 5, "\uB5D9", 18, "\uB5ED", 18], ["8c41", "\uB600", 15, "\uB612\uB613\uB615\uB616\uB617\uB619", 4], ["8c61", "\uB61E", 6, "\uB626", 5, "\uB62D", 6, "\uB635", 5], ["8c81", "\uB63B", 12, "\uB649", 26, "\uB665\uB666\uB667\uB669", 50, "\uB69E\uB69F\uB6A1\uB6A2\uB6A3\uB6A5", 5, "\uB6AD\uB6AE\uB6AF\uB6B0\uB6B2", 16], ["8d41", "\uB6C3", 16, "\uB6D5", 8], ["8d61", "\uB6DE", 17, "\uB6F1\uB6F2\uB6F3\uB6F5\uB6F6\uB6F7\uB6F9\uB6FA"], ["8d81", "\uB6FB", 4, "\uB702\uB703\uB704\uB706", 33, "\uB72A\uB72B\uB72D\uB72E\uB731", 6, "\uB73A\uB73C", 7, "\uB745\uB746\uB747\uB749\uB74A\uB74B\uB74D", 6, "\uB756", 9, "\uB761\uB762\uB763\uB765\uB766\uB767\uB769", 6, "\uB772\uB774\uB776", 5, "\uB77E\uB77F\uB781\uB782\uB783\uB785", 6, "\uB78E\uB793\uB794\uB795\uB79A\uB79B\uB79D\uB79E"], ["8e41", "\uB79F\uB7A1", 6, "\uB7AA\uB7AE", 5, "\uB7B6\uB7B7\uB7B9", 8], ["8e61", "\uB7C2", 4, "\uB7C8\uB7CA", 19], ["8e81", "\uB7DE", 13, "\uB7EE\uB7EF\uB7F1\uB7F2\uB7F3\uB7F5", 6, "\uB7FE\uB802", 4, "\uB80A\uB80B\uB80D\uB80E\uB80F\uB811", 6, "\uB81A\uB81C\uB81E", 5, "\uB826\uB827\uB829\uB82A\uB82B\uB82D", 6, "\uB836\uB83A", 5, "\uB841\uB842\uB843\uB845", 11, "\uB852\uB854", 7, "\uB85E\uB85F\uB861\uB862\uB863\uB865", 6, "\uB86E\uB870\uB872", 5, "\uB879\uB87A\uB87B\uB87D", 7], ["8f41", "\uB885", 7, "\uB88E", 17], ["8f61", "\uB8A0", 7, "\uB8A9", 6, "\uB8B1\uB8B2\uB8B3\uB8B5\uB8B6\uB8B7\uB8B9", 4], ["8f81", "\uB8BE\uB8BF\uB8C2\uB8C4\uB8C6", 5, "\uB8CD\uB8CE\uB8CF\uB8D1\uB8D2\uB8D3\uB8D5", 7, "\uB8DE\uB8E0\uB8E2", 5, "\uB8EA\uB8EB\uB8ED\uB8EE\uB8EF\uB8F1", 6, "\uB8FA\uB8FC\uB8FE", 5, "\uB905", 18, "\uB919", 6, "\uB921", 26, "\uB93E\uB93F\uB941\uB942\uB943\uB945", 6, "\uB94D\uB94E\uB950\uB952", 5], ["9041", "\uB95A\uB95B\uB95D\uB95E\uB95F\uB961", 6, "\uB96A\uB96C\uB96E", 5, "\uB976\uB977\uB979\uB97A\uB97B\uB97D"], ["9061", "\uB97E", 5, "\uB986\uB988\uB98B\uB98C\uB98F", 15], ["9081", "\uB99F", 12, "\uB9AE\uB9AF\uB9B1\uB9B2\uB9B3\uB9B5", 6, "\uB9BE\uB9C0\uB9C2", 5, "\uB9CA\uB9CB\uB9CD\uB9D3", 4, "\uB9DA\uB9DC\uB9DF\uB9E0\uB9E2\uB9E6\uB9E7\uB9E9\uB9EA\uB9EB\uB9ED", 6, "\uB9F6\uB9FB", 4, "\uBA02", 5, "\uBA09", 11, "\uBA16", 33, "\uBA3A\uBA3B\uBA3D\uBA3E\uBA3F\uBA41\uBA43\uBA44\uBA45\uBA46"], ["9141", "\uBA47\uBA4A\uBA4C\uBA4F\uBA50\uBA51\uBA52\uBA56\uBA57\uBA59\uBA5A\uBA5B\uBA5D", 6, "\uBA66\uBA6A", 5], ["9161", "\uBA72\uBA73\uBA75\uBA76\uBA77\uBA79", 9, "\uBA86\uBA88\uBA89\uBA8A\uBA8B\uBA8D", 5], ["9181", "\uBA93", 20, "\uBAAA\uBAAD\uBAAE\uBAAF\uBAB1\uBAB3", 4, "\uBABA\uBABC\uBABE", 5, "\uBAC5\uBAC6\uBAC7\uBAC9", 14, "\uBADA", 33, "\uBAFD\uBAFE\uBAFF\uBB01\uBB02\uBB03\uBB05", 7, "\uBB0E\uBB10\uBB12", 5, "\uBB19\uBB1A\uBB1B\uBB1D\uBB1E\uBB1F\uBB21", 6], ["9241", "\uBB28\uBB2A\uBB2C", 7, "\uBB37\uBB39\uBB3A\uBB3F", 4, "\uBB46\uBB48\uBB4A\uBB4B\uBB4C\uBB4E\uBB51\uBB52"], ["9261", "\uBB53\uBB55\uBB56\uBB57\uBB59", 7, "\uBB62\uBB64", 7, "\uBB6D", 4], ["9281", "\uBB72", 21, "\uBB89\uBB8A\uBB8B\uBB8D\uBB8E\uBB8F\uBB91", 18, "\uBBA5\uBBA6\uBBA7\uBBA9\uBBAA\uBBAB\uBBAD", 6, "\uBBB5\uBBB6\uBBB8", 7, "\uBBC1\uBBC2\uBBC3\uBBC5\uBBC6\uBBC7\uBBC9", 6, "\uBBD1\uBBD2\uBBD4", 35, "\uBBFA\uBBFB\uBBFD\uBBFE\uBC01"], ["9341", "\uBC03", 4, "\uBC0A\uBC0E\uBC10\uBC12\uBC13\uBC19\uBC1A\uBC20\uBC21\uBC22\uBC23\uBC26\uBC28\uBC2A\uBC2B\uBC2C\uBC2E\uBC2F\uBC32\uBC33\uBC35"], ["9361", "\uBC36\uBC37\uBC39", 6, "\uBC42\uBC46\uBC47\uBC48\uBC4A\uBC4B\uBC4E\uBC4F\uBC51", 8], ["9381", "\uBC5A\uBC5B\uBC5C\uBC5E", 37, "\uBC86\uBC87\uBC89\uBC8A\uBC8D\uBC8F", 4, "\uBC96\uBC98\uBC9B", 4, "\uBCA2\uBCA3\uBCA5\uBCA6\uBCA9", 6, "\uBCB2\uBCB6", 5, "\uBCBE\uBCBF\uBCC1\uBCC2\uBCC3\uBCC5", 7, "\uBCCE\uBCD2\uBCD3\uBCD4\uBCD6\uBCD7\uBCD9\uBCDA\uBCDB\uBCDD", 22, "\uBCF7\uBCF9\uBCFA\uBCFB\uBCFD"], ["9441", "\uBCFE", 5, "\uBD06\uBD08\uBD0A", 5, "\uBD11\uBD12\uBD13\uBD15", 8], ["9461", "\uBD1E", 5, "\uBD25", 6, "\uBD2D", 12], ["9481", "\uBD3A", 5, "\uBD41", 6, "\uBD4A\uBD4B\uBD4D\uBD4E\uBD4F\uBD51", 6, "\uBD5A", 9, "\uBD65\uBD66\uBD67\uBD69", 22, "\uBD82\uBD83\uBD85\uBD86\uBD8B", 4, "\uBD92\uBD94\uBD96\uBD97\uBD98\uBD9B\uBD9D", 6, "\uBDA5", 10, "\uBDB1", 6, "\uBDB9", 24], ["9541", "\uBDD2\uBDD3\uBDD6\uBDD7\uBDD9\uBDDA\uBDDB\uBDDD", 11, "\uBDEA", 5, "\uBDF1"], ["9561", "\uBDF2\uBDF3\uBDF5\uBDF6\uBDF7\uBDF9", 6, "\uBE01\uBE02\uBE04\uBE06", 5, "\uBE0E\uBE0F\uBE11\uBE12\uBE13"], ["9581", "\uBE15", 6, "\uBE1E\uBE20", 35, "\uBE46\uBE47\uBE49\uBE4A\uBE4B\uBE4D\uBE4F", 4, "\uBE56\uBE58\uBE5C\uBE5D\uBE5E\uBE5F\uBE62\uBE63\uBE65\uBE66\uBE67\uBE69\uBE6B", 4, "\uBE72\uBE76", 4, "\uBE7E\uBE7F\uBE81\uBE82\uBE83\uBE85", 6, "\uBE8E\uBE92", 5, "\uBE9A", 13, "\uBEA9", 14], ["9641", "\uBEB8", 23, "\uBED2\uBED3"], ["9661", "\uBED5\uBED6\uBED9", 6, "\uBEE1\uBEE2\uBEE6", 5, "\uBEED", 8], ["9681", "\uBEF6", 10, "\uBF02", 5, "\uBF0A", 13, "\uBF1A\uBF1E", 33, "\uBF42\uBF43\uBF45\uBF46\uBF47\uBF49", 6, "\uBF52\uBF53\uBF54\uBF56", 44], ["9741", "\uBF83", 16, "\uBF95", 8], ["9761", "\uBF9E", 17, "\uBFB1", 7], ["9781", "\uBFB9", 11, "\uBFC6", 5, "\uBFCE\uBFCF\uBFD1\uBFD2\uBFD3\uBFD5", 6, "\uBFDD\uBFDE\uBFE0\uBFE2", 89, "\uC03D\uC03E\uC03F"], ["9841", "\uC040", 16, "\uC052", 5, "\uC059\uC05A\uC05B"], ["9861", "\uC05D\uC05E\uC05F\uC061", 6, "\uC06A", 15], ["9881", "\uC07A", 21, "\uC092\uC093\uC095\uC096\uC097\uC099", 6, "\uC0A2\uC0A4\uC0A6", 5, "\uC0AE\uC0B1\uC0B2\uC0B7", 4, "\uC0BE\uC0C2\uC0C3\uC0C4\uC0C6\uC0C7\uC0CA\uC0CB\uC0CD\uC0CE\uC0CF\uC0D1", 6, "\uC0DA\uC0DE", 5, "\uC0E6\uC0E7\uC0E9\uC0EA\uC0EB\uC0ED", 6, "\uC0F6\uC0F8\uC0FA", 5, "\uC101\uC102\uC103\uC105\uC106\uC107\uC109", 6, "\uC111\uC112\uC113\uC114\uC116", 5, "\uC121\uC122\uC125\uC128\uC129\uC12A\uC12B\uC12E"], ["9941", "\uC132\uC133\uC134\uC135\uC137\uC13A\uC13B\uC13D\uC13E\uC13F\uC141", 6, "\uC14A\uC14E", 5, "\uC156\uC157"], ["9961", "\uC159\uC15A\uC15B\uC15D", 6, "\uC166\uC16A", 5, "\uC171\uC172\uC173\uC175\uC176\uC177\uC179\uC17A\uC17B"], ["9981", "\uC17C", 8, "\uC186", 5, "\uC18F\uC191\uC192\uC193\uC195\uC197", 4, "\uC19E\uC1A0\uC1A2\uC1A3\uC1A4\uC1A6\uC1A7\uC1AA\uC1AB\uC1AD\uC1AE\uC1AF\uC1B1", 11, "\uC1BE", 5, "\uC1C5\uC1C6\uC1C7\uC1C9\uC1CA\uC1CB\uC1CD", 6, "\uC1D5\uC1D6\uC1D9", 6, "\uC1E1\uC1E2\uC1E3\uC1E5\uC1E6\uC1E7\uC1E9", 6, "\uC1F2\uC1F4", 7, "\uC1FE\uC1FF\uC201\uC202\uC203\uC205", 6, "\uC20E\uC210\uC212", 5, "\uC21A\uC21B\uC21D\uC21E\uC221\uC222\uC223"], ["9a41", "\uC224\uC225\uC226\uC227\uC22A\uC22C\uC22E\uC230\uC233\uC235", 16], ["9a61", "\uC246\uC247\uC249", 6, "\uC252\uC253\uC255\uC256\uC257\uC259", 6, "\uC261\uC262\uC263\uC264\uC266"], ["9a81", "\uC267", 4, "\uC26E\uC26F\uC271\uC272\uC273\uC275", 6, "\uC27E\uC280\uC282", 5, "\uC28A", 5, "\uC291", 6, "\uC299\uC29A\uC29C\uC29E", 5, "\uC2A6\uC2A7\uC2A9\uC2AA\uC2AB\uC2AE", 5, "\uC2B6\uC2B8\uC2BA", 33, "\uC2DE\uC2DF\uC2E1\uC2E2\uC2E5", 5, "\uC2EE\uC2F0\uC2F2\uC2F3\uC2F4\uC2F5\uC2F7\uC2FA\uC2FD\uC2FE\uC2FF\uC301", 6, "\uC30A\uC30B\uC30E\uC30F"], ["9b41", "\uC310\uC311\uC312\uC316\uC317\uC319\uC31A\uC31B\uC31D", 6, "\uC326\uC327\uC32A", 8], ["9b61", "\uC333", 17, "\uC346", 7], ["9b81", "\uC34E", 25, "\uC36A\uC36B\uC36D\uC36E\uC36F\uC371\uC373", 4, "\uC37A\uC37B\uC37E", 5, "\uC385\uC386\uC387\uC389\uC38A\uC38B\uC38D", 50, "\uC3C1", 22, "\uC3DA"], ["9c41", "\uC3DB\uC3DD\uC3DE\uC3E1\uC3E3", 4, "\uC3EA\uC3EB\uC3EC\uC3EE", 5, "\uC3F6\uC3F7\uC3F9", 5], ["9c61", "\uC3FF", 8, "\uC409", 6, "\uC411", 9], ["9c81", "\uC41B", 8, "\uC425", 6, "\uC42D\uC42E\uC42F\uC431\uC432\uC433\uC435", 6, "\uC43E", 9, "\uC449", 26, "\uC466\uC467\uC469\uC46A\uC46B\uC46D", 6, "\uC476\uC477\uC478\uC47A", 5, "\uC481", 18, "\uC495", 6, "\uC49D", 12], ["9d41", "\uC4AA", 13, "\uC4B9\uC4BA\uC4BB\uC4BD", 8], ["9d61", "\uC4C6", 25], ["9d81", "\uC4E0", 8, "\uC4EA", 5, "\uC4F2\uC4F3\uC4F5\uC4F6\uC4F7\uC4F9\uC4FB\uC4FC\uC4FD\uC4FE\uC502", 9, "\uC50D\uC50E\uC50F\uC511\uC512\uC513\uC515", 6, "\uC51D", 10, "\uC52A\uC52B\uC52D\uC52E\uC52F\uC531", 6, "\uC53A\uC53C\uC53E", 5, "\uC546\uC547\uC54B\uC54F\uC550\uC551\uC552\uC556\uC55A\uC55B\uC55C\uC55F\uC562\uC563\uC565\uC566\uC567\uC569", 6, "\uC572\uC576", 5, "\uC57E\uC57F\uC581\uC582\uC583\uC585\uC586\uC588\uC589\uC58A\uC58B\uC58E\uC590\uC592\uC593\uC594"], ["9e41", "\uC596\uC599\uC59A\uC59B\uC59D\uC59E\uC59F\uC5A1", 7, "\uC5AA", 9, "\uC5B6"], ["9e61", "\uC5B7\uC5BA\uC5BF", 4, "\uC5CB\uC5CD\uC5CF\uC5D2\uC5D3\uC5D5\uC5D6\uC5D7\uC5D9", 6, "\uC5E2\uC5E4\uC5E6\uC5E7"], ["9e81", "\uC5E8\uC5E9\uC5EA\uC5EB\uC5EF\uC5F1\uC5F2\uC5F3\uC5F5\uC5F8\uC5F9\uC5FA\uC5FB\uC602\uC603\uC604\uC609\uC60A\uC60B\uC60D\uC60E\uC60F\uC611", 6, "\uC61A\uC61D", 6, "\uC626\uC627\uC629\uC62A\uC62B\uC62F\uC631\uC632\uC636\uC638\uC63A\uC63C\uC63D\uC63E\uC63F\uC642\uC643\uC645\uC646\uC647\uC649", 6, "\uC652\uC656", 5, "\uC65E\uC65F\uC661", 10, "\uC66D\uC66E\uC670\uC672", 5, "\uC67A\uC67B\uC67D\uC67E\uC67F\uC681", 6, "\uC68A\uC68C\uC68E", 5, "\uC696\uC697\uC699\uC69A\uC69B\uC69D", 6, "\uC6A6"], ["9f41", "\uC6A8\uC6AA", 5, "\uC6B2\uC6B3\uC6B5\uC6B6\uC6B7\uC6BB", 4, "\uC6C2\uC6C4\uC6C6", 5, "\uC6CE"], ["9f61", "\uC6CF\uC6D1\uC6D2\uC6D3\uC6D5", 6, "\uC6DE\uC6DF\uC6E2", 5, "\uC6EA\uC6EB\uC6ED\uC6EE\uC6EF\uC6F1\uC6F2"], ["9f81", "\uC6F3", 4, "\uC6FA\uC6FB\uC6FC\uC6FE", 5, "\uC706\uC707\uC709\uC70A\uC70B\uC70D", 6, "\uC716\uC718\uC71A", 5, "\uC722\uC723\uC725\uC726\uC727\uC729", 6, "\uC732\uC734\uC736\uC738\uC739\uC73A\uC73B\uC73E\uC73F\uC741\uC742\uC743\uC745", 4, "\uC74B\uC74E\uC750\uC759\uC75A\uC75B\uC75D\uC75E\uC75F\uC761", 6, "\uC769\uC76A\uC76C", 7, "\uC776\uC777\uC779\uC77A\uC77B\uC77F\uC780\uC781\uC782\uC786\uC78B\uC78C\uC78D\uC78F\uC792\uC793\uC795\uC799\uC79B", 4, "\uC7A2\uC7A7", 4, "\uC7AE\uC7AF\uC7B1\uC7B2\uC7B3\uC7B5\uC7B6\uC7B7"], ["a041", "\uC7B8\uC7B9\uC7BA\uC7BB\uC7BE\uC7C2", 5, "\uC7CA\uC7CB\uC7CD\uC7CF\uC7D1", 6, "\uC7D9\uC7DA\uC7DB\uC7DC"], ["a061", "\uC7DE", 5, "\uC7E5\uC7E6\uC7E7\uC7E9\uC7EA\uC7EB\uC7ED", 13], ["a081", "\uC7FB", 4, "\uC802\uC803\uC805\uC806\uC807\uC809\uC80B", 4, "\uC812\uC814\uC817", 4, "\uC81E\uC81F\uC821\uC822\uC823\uC825", 6, "\uC82E\uC830\uC832", 5, "\uC839\uC83A\uC83B\uC83D\uC83E\uC83F\uC841", 6, "\uC84A\uC84B\uC84E", 5, "\uC855", 26, "\uC872\uC873\uC875\uC876\uC877\uC879\uC87B", 4, "\uC882\uC884\uC888\uC889\uC88A\uC88E", 5, "\uC895", 7, "\uC89E\uC8A0\uC8A2\uC8A3\uC8A4"], ["a141", "\uC8A5\uC8A6\uC8A7\uC8A9", 18, "\uC8BE\uC8BF\uC8C0\uC8C1"], ["a161", "\uC8C2\uC8C3\uC8C5\uC8C6\uC8C7\uC8C9\uC8CA\uC8CB\uC8CD", 6, "\uC8D6\uC8D8\uC8DA", 5, "\uC8E2\uC8E3\uC8E5"], ["a181", "\uC8E6", 14, "\uC8F6", 5, "\uC8FE\uC8FF\uC901\uC902\uC903\uC907", 4, "\uC90E\u3000\u3001\u3002\xB7\u2025\u2026\xA8\u3003\xAD\u2015\u2225\uFF3C\u223C\u2018\u2019\u201C\u201D\u3014\u3015\u3008", 9, "\xB1\xD7\xF7\u2260\u2264\u2265\u221E\u2234\xB0\u2032\u2033\u2103\u212B\uFFE0\uFFE1\uFFE5\u2642\u2640\u2220\u22A5\u2312\u2202\u2207\u2261\u2252\xA7\u203B\u2606\u2605\u25CB\u25CF\u25CE\u25C7\u25C6\u25A1\u25A0\u25B3\u25B2\u25BD\u25BC\u2192\u2190\u2191\u2193\u2194\u3013\u226A\u226B\u221A\u223D\u221D\u2235\u222B\u222C\u2208\u220B\u2286\u2287\u2282\u2283\u222A\u2229\u2227\u2228\uFFE2"], ["a241", "\uC910\uC912", 5, "\uC919", 18], ["a261", "\uC92D", 6, "\uC935", 18], ["a281", "\uC948", 7, "\uC952\uC953\uC955\uC956\uC957\uC959", 6, "\uC962\uC964", 7, "\uC96D\uC96E\uC96F\u21D2\u21D4\u2200\u2203\xB4\uFF5E\u02C7\u02D8\u02DD\u02DA\u02D9\xB8\u02DB\xA1\xBF\u02D0\u222E\u2211\u220F\xA4\u2109\u2030\u25C1\u25C0\u25B7\u25B6\u2664\u2660\u2661\u2665\u2667\u2663\u2299\u25C8\u25A3\u25D0\u25D1\u2592\u25A4\u25A5\u25A8\u25A7\u25A6\u25A9\u2668\u260F\u260E\u261C\u261E\xB6\u2020\u2021\u2195\u2197\u2199\u2196\u2198\u266D\u2669\u266A\u266C\u327F\u321C\u2116\u33C7\u2122\u33C2\u33D8\u2121\u20AC\xAE"], ["a341", "\uC971\uC972\uC973\uC975", 6, "\uC97D", 10, "\uC98A\uC98B\uC98D\uC98E\uC98F"], ["a361", "\uC991", 6, "\uC99A\uC99C\uC99E", 16], ["a381", "\uC9AF", 16, "\uC9C2\uC9C3\uC9C5\uC9C6\uC9C9\uC9CB", 4, "\uC9D2\uC9D4\uC9D7\uC9D8\uC9DB\uFF01", 58, "\uFFE6\uFF3D", 32, "\uFFE3"], ["a441", "\uC9DE\uC9DF\uC9E1\uC9E3\uC9E5\uC9E6\uC9E8\uC9E9\uC9EA\uC9EB\uC9EE\uC9F2", 5, "\uC9FA\uC9FB\uC9FD\uC9FE\uC9FF\uCA01\uCA02\uCA03\uCA04"], ["a461", "\uCA05\uCA06\uCA07\uCA0A\uCA0E", 5, "\uCA15\uCA16\uCA17\uCA19", 12], ["a481", "\uCA26\uCA27\uCA28\uCA2A", 28, "\u3131", 93], ["a541", "\uCA47", 4, "\uCA4E\uCA4F\uCA51\uCA52\uCA53\uCA55", 6, "\uCA5E\uCA62", 5, "\uCA69\uCA6A"], ["a561", "\uCA6B", 17, "\uCA7E", 5, "\uCA85\uCA86"], ["a581", "\uCA87", 16, "\uCA99", 14, "\u2170", 9], ["a5b0", "\u2160", 9], ["a5c1", "\u0391", 16, "\u03A3", 6], ["a5e1", "\u03B1", 16, "\u03C3", 6], ["a641", "\uCAA8", 19, "\uCABE\uCABF\uCAC1\uCAC2\uCAC3\uCAC5"], ["a661", "\uCAC6", 5, "\uCACE\uCAD0\uCAD2\uCAD4\uCAD5\uCAD6\uCAD7\uCADA", 5, "\uCAE1", 6], ["a681", "\uCAE8\uCAE9\uCAEA\uCAEB\uCAED", 6, "\uCAF5", 18, "\uCB09\uCB0A\u2500\u2502\u250C\u2510\u2518\u2514\u251C\u252C\u2524\u2534\u253C\u2501\u2503\u250F\u2513\u251B\u2517\u2523\u2533\u252B\u253B\u254B\u2520\u252F\u2528\u2537\u253F\u251D\u2530\u2525\u2538\u2542\u2512\u2511\u251A\u2519\u2516\u2515\u250E\u250D\u251E\u251F\u2521\u2522\u2526\u2527\u2529\u252A\u252D\u252E\u2531\u2532\u2535\u2536\u2539\u253A\u253D\u253E\u2540\u2541\u2543", 7], ["a741", "\uCB0B", 4, "\uCB11\uCB12\uCB13\uCB15\uCB16\uCB17\uCB19", 6, "\uCB22", 7], ["a761", "\uCB2A", 22, "\uCB42\uCB43\uCB44"], ["a781", "\uCB45\uCB46\uCB47\uCB4A\uCB4B\uCB4D\uCB4E\uCB4F\uCB51", 6, "\uCB5A\uCB5B\uCB5C\uCB5E", 5, "\uCB65", 7, "\u3395\u3396\u3397\u2113\u3398\u33C4\u33A3\u33A4\u33A5\u33A6\u3399", 9, "\u33CA\u338D\u338E\u338F\u33CF\u3388\u3389\u33C8\u33A7\u33A8\u33B0", 9, "\u3380", 4, "\u33BA", 5, "\u3390", 4, "\u2126\u33C0\u33C1\u338A\u338B\u338C\u33D6\u33C5\u33AD\u33AE\u33AF\u33DB\u33A9\u33AA\u33AB\u33AC\u33DD\u33D0\u33D3\u33C3\u33C9\u33DC\u33C6"], ["a841", "\uCB6D", 10, "\uCB7A", 14], ["a861", "\uCB89", 18, "\uCB9D", 6], ["a881", "\uCBA4", 19, "\uCBB9", 11, "\xC6\xD0\xAA\u0126"], ["a8a6", "\u0132"], ["a8a8", "\u013F\u0141\xD8\u0152\xBA\xDE\u0166\u014A"], ["a8b1", "\u3260", 27, "\u24D0", 25, "\u2460", 14, "\xBD\u2153\u2154\xBC\xBE\u215B\u215C\u215D\u215E"], ["a941", "\uCBC5", 14, "\uCBD5", 10], ["a961", "\uCBE0\uCBE1\uCBE2\uCBE3\uCBE5\uCBE6\uCBE8\uCBEA", 18], ["a981", "\uCBFD", 14, "\uCC0E\uCC0F\uCC11\uCC12\uCC13\uCC15", 6, "\uCC1E\uCC1F\uCC20\uCC23\uCC24\xE6\u0111\xF0\u0127\u0131\u0133\u0138\u0140\u0142\xF8\u0153\xDF\xFE\u0167\u014B\u0149\u3200", 27, "\u249C", 25, "\u2474", 14, "\xB9\xB2\xB3\u2074\u207F\u2081\u2082\u2083\u2084"], ["aa41", "\uCC25\uCC26\uCC2A\uCC2B\uCC2D\uCC2F\uCC31", 6, "\uCC3A\uCC3F", 4, "\uCC46\uCC47\uCC49\uCC4A\uCC4B\uCC4D\uCC4E"], ["aa61", "\uCC4F", 4, "\uCC56\uCC5A", 5, "\uCC61\uCC62\uCC63\uCC65\uCC67\uCC69", 6, "\uCC71\uCC72"], ["aa81", "\uCC73\uCC74\uCC76", 29, "\u3041", 82], ["ab41", "\uCC94\uCC95\uCC96\uCC97\uCC9A\uCC9B\uCC9D\uCC9E\uCC9F\uCCA1", 6, "\uCCAA\uCCAE", 5, "\uCCB6\uCCB7\uCCB9"], ["ab61", "\uCCBA\uCCBB\uCCBD", 6, "\uCCC6\uCCC8\uCCCA", 5, "\uCCD1\uCCD2\uCCD3\uCCD5", 5], ["ab81", "\uCCDB", 8, "\uCCE5", 6, "\uCCED\uCCEE\uCCEF\uCCF1", 12, "\u30A1", 85], ["ac41", "\uCCFE\uCCFF\uCD00\uCD02", 5, "\uCD0A\uCD0B\uCD0D\uCD0E\uCD0F\uCD11", 6, "\uCD1A\uCD1C\uCD1E\uCD1F\uCD20"], ["ac61", "\uCD21\uCD22\uCD23\uCD25\uCD26\uCD27\uCD29\uCD2A\uCD2B\uCD2D", 11, "\uCD3A", 4], ["ac81", "\uCD3F", 28, "\uCD5D\uCD5E\uCD5F\u0410", 5, "\u0401\u0416", 25], ["acd1", "\u0430", 5, "\u0451\u0436", 25], ["ad41", "\uCD61\uCD62\uCD63\uCD65", 6, "\uCD6E\uCD70\uCD72", 5, "\uCD79", 7], ["ad61", "\uCD81", 6, "\uCD89", 10, "\uCD96\uCD97\uCD99\uCD9A\uCD9B\uCD9D\uCD9E\uCD9F"], ["ad81", "\uCDA0\uCDA1\uCDA2\uCDA3\uCDA6\uCDA8\uCDAA", 5, "\uCDB1", 18, "\uCDC5"], ["ae41", "\uCDC6", 5, "\uCDCD\uCDCE\uCDCF\uCDD1", 16], ["ae61", "\uCDE2", 5, "\uCDE9\uCDEA\uCDEB\uCDED\uCDEE\uCDEF\uCDF1", 6, "\uCDFA\uCDFC\uCDFE", 4], ["ae81", "\uCE03\uCE05\uCE06\uCE07\uCE09\uCE0A\uCE0B\uCE0D", 6, "\uCE15\uCE16\uCE17\uCE18\uCE1A", 5, "\uCE22\uCE23\uCE25\uCE26\uCE27\uCE29\uCE2A\uCE2B"], ["af41", "\uCE2C\uCE2D\uCE2E\uCE2F\uCE32\uCE34\uCE36", 19], ["af61", "\uCE4A", 13, "\uCE5A\uCE5B\uCE5D\uCE5E\uCE62", 5, "\uCE6A\uCE6C"], ["af81", "\uCE6E", 5, "\uCE76\uCE77\uCE79\uCE7A\uCE7B\uCE7D", 6, "\uCE86\uCE88\uCE8A", 5, "\uCE92\uCE93\uCE95\uCE96\uCE97\uCE99"], ["b041", "\uCE9A", 5, "\uCEA2\uCEA6", 5, "\uCEAE", 12], ["b061", "\uCEBB", 5, "\uCEC2", 19], ["b081", "\uCED6", 13, "\uCEE6\uCEE7\uCEE9\uCEEA\uCEED", 6, "\uCEF6\uCEFA", 5, "\uAC00\uAC01\uAC04\uAC07\uAC08\uAC09\uAC0A\uAC10", 7, "\uAC19", 4, "\uAC20\uAC24\uAC2C\uAC2D\uAC2F\uAC30\uAC31\uAC38\uAC39\uAC3C\uAC40\uAC4B\uAC4D\uAC54\uAC58\uAC5C\uAC70\uAC71\uAC74\uAC77\uAC78\uAC7A\uAC80\uAC81\uAC83\uAC84\uAC85\uAC86\uAC89\uAC8A\uAC8B\uAC8C\uAC90\uAC94\uAC9C\uAC9D\uAC9F\uACA0\uACA1\uACA8\uACA9\uACAA\uACAC\uACAF\uACB0\uACB8\uACB9\uACBB\uACBC\uACBD\uACC1\uACC4\uACC8\uACCC\uACD5\uACD7\uACE0\uACE1\uACE4\uACE7\uACE8\uACEA\uACEC\uACEF\uACF0\uACF1\uACF3\uACF5\uACF6\uACFC\uACFD\uAD00\uAD04\uAD06"], ["b141", "\uCF02\uCF03\uCF05\uCF06\uCF07\uCF09", 6, "\uCF12\uCF14\uCF16", 5, "\uCF1D\uCF1E\uCF1F\uCF21\uCF22\uCF23"], ["b161", "\uCF25", 6, "\uCF2E\uCF32", 5, "\uCF39", 11], ["b181", "\uCF45", 14, "\uCF56\uCF57\uCF59\uCF5A\uCF5B\uCF5D", 6, "\uCF66\uCF68\uCF6A\uCF6B\uCF6C\uAD0C\uAD0D\uAD0F\uAD11\uAD18\uAD1C\uAD20\uAD29\uAD2C\uAD2D\uAD34\uAD35\uAD38\uAD3C\uAD44\uAD45\uAD47\uAD49\uAD50\uAD54\uAD58\uAD61\uAD63\uAD6C\uAD6D\uAD70\uAD73\uAD74\uAD75\uAD76\uAD7B\uAD7C\uAD7D\uAD7F\uAD81\uAD82\uAD88\uAD89\uAD8C\uAD90\uAD9C\uAD9D\uADA4\uADB7\uADC0\uADC1\uADC4\uADC8\uADD0\uADD1\uADD3\uADDC\uADE0\uADE4\uADF8\uADF9\uADFC\uADFF\uAE00\uAE01\uAE08\uAE09\uAE0B\uAE0D\uAE14\uAE30\uAE31\uAE34\uAE37\uAE38\uAE3A\uAE40\uAE41\uAE43\uAE45\uAE46\uAE4A\uAE4C\uAE4D\uAE4E\uAE50\uAE54\uAE56\uAE5C\uAE5D\uAE5F\uAE60\uAE61\uAE65\uAE68\uAE69\uAE6C\uAE70\uAE78"], ["b241", "\uCF6D\uCF6E\uCF6F\uCF72\uCF73\uCF75\uCF76\uCF77\uCF79", 6, "\uCF81\uCF82\uCF83\uCF84\uCF86", 5, "\uCF8D"], ["b261", "\uCF8E", 18, "\uCFA2", 5, "\uCFA9"], ["b281", "\uCFAA", 5, "\uCFB1", 18, "\uCFC5", 6, "\uAE79\uAE7B\uAE7C\uAE7D\uAE84\uAE85\uAE8C\uAEBC\uAEBD\uAEBE\uAEC0\uAEC4\uAECC\uAECD\uAECF\uAED0\uAED1\uAED8\uAED9\uAEDC\uAEE8\uAEEB\uAEED\uAEF4\uAEF8\uAEFC\uAF07\uAF08\uAF0D\uAF10\uAF2C\uAF2D\uAF30\uAF32\uAF34\uAF3C\uAF3D\uAF3F\uAF41\uAF42\uAF43\uAF48\uAF49\uAF50\uAF5C\uAF5D\uAF64\uAF65\uAF79\uAF80\uAF84\uAF88\uAF90\uAF91\uAF95\uAF9C\uAFB8\uAFB9\uAFBC\uAFC0\uAFC7\uAFC8\uAFC9\uAFCB\uAFCD\uAFCE\uAFD4\uAFDC\uAFE8\uAFE9\uAFF0\uAFF1\uAFF4\uAFF8\uB000\uB001\uB004\uB00C\uB010\uB014\uB01C\uB01D\uB028\uB044\uB045\uB048\uB04A\uB04C\uB04E\uB053\uB054\uB055\uB057\uB059"], ["b341", "\uCFCC", 19, "\uCFE2\uCFE3\uCFE5\uCFE6\uCFE7\uCFE9"], ["b361", "\uCFEA", 5, "\uCFF2\uCFF4\uCFF6", 5, "\uCFFD\uCFFE\uCFFF\uD001\uD002\uD003\uD005", 5], ["b381", "\uD00B", 5, "\uD012", 5, "\uD019", 19, "\uB05D\uB07C\uB07D\uB080\uB084\uB08C\uB08D\uB08F\uB091\uB098\uB099\uB09A\uB09C\uB09F\uB0A0\uB0A1\uB0A2\uB0A8\uB0A9\uB0AB", 4, "\uB0B1\uB0B3\uB0B4\uB0B5\uB0B8\uB0BC\uB0C4\uB0C5\uB0C7\uB0C8\uB0C9\uB0D0\uB0D1\uB0D4\uB0D8\uB0E0\uB0E5\uB108\uB109\uB10B\uB10C\uB110\uB112\uB113\uB118\uB119\uB11B\uB11C\uB11D\uB123\uB124\uB125\uB128\uB12C\uB134\uB135\uB137\uB138\uB139\uB140\uB141\uB144\uB148\uB150\uB151\uB154\uB155\uB158\uB15C\uB160\uB178\uB179\uB17C\uB180\uB182\uB188\uB189\uB18B\uB18D\uB192\uB193\uB194\uB198\uB19C\uB1A8\uB1CC\uB1D0\uB1D4\uB1DC\uB1DD"], ["b441", "\uD02E", 5, "\uD036\uD037\uD039\uD03A\uD03B\uD03D", 6, "\uD046\uD048\uD04A", 5], ["b461", "\uD051\uD052\uD053\uD055\uD056\uD057\uD059", 6, "\uD061", 10, "\uD06E\uD06F"], ["b481", "\uD071\uD072\uD073\uD075", 6, "\uD07E\uD07F\uD080\uD082", 18, "\uB1DF\uB1E8\uB1E9\uB1EC\uB1F0\uB1F9\uB1FB\uB1FD\uB204\uB205\uB208\uB20B\uB20C\uB214\uB215\uB217\uB219\uB220\uB234\uB23C\uB258\uB25C\uB260\uB268\uB269\uB274\uB275\uB27C\uB284\uB285\uB289\uB290\uB291\uB294\uB298\uB299\uB29A\uB2A0\uB2A1\uB2A3\uB2A5\uB2A6\uB2AA\uB2AC\uB2B0\uB2B4\uB2C8\uB2C9\uB2CC\uB2D0\uB2D2\uB2D8\uB2D9\uB2DB\uB2DD\uB2E2\uB2E4\uB2E5\uB2E6\uB2E8\uB2EB", 4, "\uB2F3\uB2F4\uB2F5\uB2F7", 4, "\uB2FF\uB300\uB301\uB304\uB308\uB310\uB311\uB313\uB314\uB315\uB31C\uB354\uB355\uB356\uB358\uB35B\uB35C\uB35E\uB35F\uB364\uB365"], ["b541", "\uD095", 14, "\uD0A6\uD0A7\uD0A9\uD0AA\uD0AB\uD0AD", 5], ["b561", "\uD0B3\uD0B6\uD0B8\uD0BA", 5, "\uD0C2\uD0C3\uD0C5\uD0C6\uD0C7\uD0CA", 5, "\uD0D2\uD0D6", 4], ["b581", "\uD0DB\uD0DE\uD0DF\uD0E1\uD0E2\uD0E3\uD0E5", 6, "\uD0EE\uD0F2", 5, "\uD0F9", 11, "\uB367\uB369\uB36B\uB36E\uB370\uB371\uB374\uB378\uB380\uB381\uB383\uB384\uB385\uB38C\uB390\uB394\uB3A0\uB3A1\uB3A8\uB3AC\uB3C4\uB3C5\uB3C8\uB3CB\uB3CC\uB3CE\uB3D0\uB3D4\uB3D5\uB3D7\uB3D9\uB3DB\uB3DD\uB3E0\uB3E4\uB3E8\uB3FC\uB410\uB418\uB41C\uB420\uB428\uB429\uB42B\uB434\uB450\uB451\uB454\uB458\uB460\uB461\uB463\uB465\uB46C\uB480\uB488\uB49D\uB4A4\uB4A8\uB4AC\uB4B5\uB4B7\uB4B9\uB4C0\uB4C4\uB4C8\uB4D0\uB4D5\uB4DC\uB4DD\uB4E0\uB4E3\uB4E4\uB4E6\uB4EC\uB4ED\uB4EF\uB4F1\uB4F8\uB514\uB515\uB518\uB51B\uB51C\uB524\uB525\uB527\uB528\uB529\uB52A\uB530\uB531\uB534\uB538"], ["b641", "\uD105", 7, "\uD10E", 17], ["b661", "\uD120", 15, "\uD132\uD133\uD135\uD136\uD137\uD139\uD13B\uD13C\uD13D\uD13E"], ["b681", "\uD13F\uD142\uD146", 5, "\uD14E\uD14F\uD151\uD152\uD153\uD155", 6, "\uD15E\uD160\uD162", 5, "\uD169\uD16A\uD16B\uD16D\uB540\uB541\uB543\uB544\uB545\uB54B\uB54C\uB54D\uB550\uB554\uB55C\uB55D\uB55F\uB560\uB561\uB5A0\uB5A1\uB5A4\uB5A8\uB5AA\uB5AB\uB5B0\uB5B1\uB5B3\uB5B4\uB5B5\uB5BB\uB5BC\uB5BD\uB5C0\uB5C4\uB5CC\uB5CD\uB5CF\uB5D0\uB5D1\uB5D8\uB5EC\uB610\uB611\uB614\uB618\uB625\uB62C\uB634\uB648\uB664\uB668\uB69C\uB69D\uB6A0\uB6A4\uB6AB\uB6AC\uB6B1\uB6D4\uB6F0\uB6F4\uB6F8\uB700\uB701\uB705\uB728\uB729\uB72C\uB72F\uB730\uB738\uB739\uB73B\uB744\uB748\uB74C\uB754\uB755\uB760\uB764\uB768\uB770\uB771\uB773\uB775\uB77C\uB77D\uB780\uB784\uB78C\uB78D\uB78F\uB790\uB791\uB792\uB796\uB797"], ["b741", "\uD16E", 13, "\uD17D", 6, "\uD185\uD186\uD187\uD189\uD18A"], ["b761", "\uD18B", 20, "\uD1A2\uD1A3\uD1A5\uD1A6\uD1A7"], ["b781", "\uD1A9", 6, "\uD1B2\uD1B4\uD1B6\uD1B7\uD1B8\uD1B9\uD1BB\uD1BD\uD1BE\uD1BF\uD1C1", 14, "\uB798\uB799\uB79C\uB7A0\uB7A8\uB7A9\uB7AB\uB7AC\uB7AD\uB7B4\uB7B5\uB7B8\uB7C7\uB7C9\uB7EC\uB7ED\uB7F0\uB7F4\uB7FC\uB7FD\uB7FF\uB800\uB801\uB807\uB808\uB809\uB80C\uB810\uB818\uB819\uB81B\uB81D\uB824\uB825\uB828\uB82C\uB834\uB835\uB837\uB838\uB839\uB840\uB844\uB851\uB853\uB85C\uB85D\uB860\uB864\uB86C\uB86D\uB86F\uB871\uB878\uB87C\uB88D\uB8A8\uB8B0\uB8B4\uB8B8\uB8C0\uB8C1\uB8C3\uB8C5\uB8CC\uB8D0\uB8D4\uB8DD\uB8DF\uB8E1\uB8E8\uB8E9\uB8EC\uB8F0\uB8F8\uB8F9\uB8FB\uB8FD\uB904\uB918\uB920\uB93C\uB93D\uB940\uB944\uB94C\uB94F\uB951\uB958\uB959\uB95C\uB960\uB968\uB969"], ["b841", "\uD1D0", 7, "\uD1D9", 17], ["b861", "\uD1EB", 8, "\uD1F5\uD1F6\uD1F7\uD1F9", 13], ["b881", "\uD208\uD20A", 5, "\uD211", 24, "\uB96B\uB96D\uB974\uB975\uB978\uB97C\uB984\uB985\uB987\uB989\uB98A\uB98D\uB98E\uB9AC\uB9AD\uB9B0\uB9B4\uB9BC\uB9BD\uB9BF\uB9C1\uB9C8\uB9C9\uB9CC\uB9CE", 4, "\uB9D8\uB9D9\uB9DB\uB9DD\uB9DE\uB9E1\uB9E3\uB9E4\uB9E5\uB9E8\uB9EC\uB9F4\uB9F5\uB9F7\uB9F8\uB9F9\uB9FA\uBA00\uBA01\uBA08\uBA15\uBA38\uBA39\uBA3C\uBA40\uBA42\uBA48\uBA49\uBA4B\uBA4D\uBA4E\uBA53\uBA54\uBA55\uBA58\uBA5C\uBA64\uBA65\uBA67\uBA68\uBA69\uBA70\uBA71\uBA74\uBA78\uBA83\uBA84\uBA85\uBA87\uBA8C\uBAA8\uBAA9\uBAAB\uBAAC\uBAB0\uBAB2\uBAB8\uBAB9\uBABB\uBABD\uBAC4\uBAC8\uBAD8\uBAD9\uBAFC"], ["b941", "\uD22A\uD22B\uD22E\uD22F\uD231\uD232\uD233\uD235", 6, "\uD23E\uD240\uD242", 5, "\uD249\uD24A\uD24B\uD24C"], ["b961", "\uD24D", 14, "\uD25D", 6, "\uD265\uD266\uD267\uD268"], ["b981", "\uD269", 22, "\uD282\uD283\uD285\uD286\uD287\uD289\uD28A\uD28B\uD28C\uBB00\uBB04\uBB0D\uBB0F\uBB11\uBB18\uBB1C\uBB20\uBB29\uBB2B\uBB34\uBB35\uBB36\uBB38\uBB3B\uBB3C\uBB3D\uBB3E\uBB44\uBB45\uBB47\uBB49\uBB4D\uBB4F\uBB50\uBB54\uBB58\uBB61\uBB63\uBB6C\uBB88\uBB8C\uBB90\uBBA4\uBBA8\uBBAC\uBBB4\uBBB7\uBBC0\uBBC4\uBBC8\uBBD0\uBBD3\uBBF8\uBBF9\uBBFC\uBBFF\uBC00\uBC02\uBC08\uBC09\uBC0B\uBC0C\uBC0D\uBC0F\uBC11\uBC14", 4, "\uBC1B", 4, "\uBC24\uBC25\uBC27\uBC29\uBC2D\uBC30\uBC31\uBC34\uBC38\uBC40\uBC41\uBC43\uBC44\uBC45\uBC49\uBC4C\uBC4D\uBC50\uBC5D\uBC84\uBC85\uBC88\uBC8B\uBC8C\uBC8E\uBC94\uBC95\uBC97"], ["ba41", "\uD28D\uD28E\uD28F\uD292\uD293\uD294\uD296", 5, "\uD29D\uD29E\uD29F\uD2A1\uD2A2\uD2A3\uD2A5", 6, "\uD2AD"], ["ba61", "\uD2AE\uD2AF\uD2B0\uD2B2", 5, "\uD2BA\uD2BB\uD2BD\uD2BE\uD2C1\uD2C3", 4, "\uD2CA\uD2CC", 5], ["ba81", "\uD2D2\uD2D3\uD2D5\uD2D6\uD2D7\uD2D9\uD2DA\uD2DB\uD2DD", 6, "\uD2E6", 9, "\uD2F2\uD2F3\uD2F5\uD2F6\uD2F7\uD2F9\uD2FA\uBC99\uBC9A\uBCA0\uBCA1\uBCA4\uBCA7\uBCA8\uBCB0\uBCB1\uBCB3\uBCB4\uBCB5\uBCBC\uBCBD\uBCC0\uBCC4\uBCCD\uBCCF\uBCD0\uBCD1\uBCD5\uBCD8\uBCDC\uBCF4\uBCF5\uBCF6\uBCF8\uBCFC\uBD04\uBD05\uBD07\uBD09\uBD10\uBD14\uBD24\uBD2C\uBD40\uBD48\uBD49\uBD4C\uBD50\uBD58\uBD59\uBD64\uBD68\uBD80\uBD81\uBD84\uBD87\uBD88\uBD89\uBD8A\uBD90\uBD91\uBD93\uBD95\uBD99\uBD9A\uBD9C\uBDA4\uBDB0\uBDB8\uBDD4\uBDD5\uBDD8\uBDDC\uBDE9\uBDF0\uBDF4\uBDF8\uBE00\uBE03\uBE05\uBE0C\uBE0D\uBE10\uBE14\uBE1C\uBE1D\uBE1F\uBE44\uBE45\uBE48\uBE4C\uBE4E\uBE54\uBE55\uBE57\uBE59\uBE5A\uBE5B\uBE60\uBE61\uBE64"], ["bb41", "\uD2FB", 4, "\uD302\uD304\uD306", 5, "\uD30F\uD311\uD312\uD313\uD315\uD317", 4, "\uD31E\uD322\uD323"], ["bb61", "\uD324\uD326\uD327\uD32A\uD32B\uD32D\uD32E\uD32F\uD331", 6, "\uD33A\uD33E", 5, "\uD346\uD347\uD348\uD349"], ["bb81", "\uD34A", 31, "\uBE68\uBE6A\uBE70\uBE71\uBE73\uBE74\uBE75\uBE7B\uBE7C\uBE7D\uBE80\uBE84\uBE8C\uBE8D\uBE8F\uBE90\uBE91\uBE98\uBE99\uBEA8\uBED0\uBED1\uBED4\uBED7\uBED8\uBEE0\uBEE3\uBEE4\uBEE5\uBEEC\uBF01\uBF08\uBF09\uBF18\uBF19\uBF1B\uBF1C\uBF1D\uBF40\uBF41\uBF44\uBF48\uBF50\uBF51\uBF55\uBF94\uBFB0\uBFC5\uBFCC\uBFCD\uBFD0\uBFD4\uBFDC\uBFDF\uBFE1\uC03C\uC051\uC058\uC05C\uC060\uC068\uC069\uC090\uC091\uC094\uC098\uC0A0\uC0A1\uC0A3\uC0A5\uC0AC\uC0AD\uC0AF\uC0B0\uC0B3\uC0B4\uC0B5\uC0B6\uC0BC\uC0BD\uC0BF\uC0C0\uC0C1\uC0C5\uC0C8\uC0C9\uC0CC\uC0D0\uC0D8\uC0D9\uC0DB\uC0DC\uC0DD\uC0E4"], ["bc41", "\uD36A", 17, "\uD37E\uD37F\uD381\uD382\uD383\uD385\uD386\uD387"], ["bc61", "\uD388\uD389\uD38A\uD38B\uD38E\uD392", 5, "\uD39A\uD39B\uD39D\uD39E\uD39F\uD3A1", 6, "\uD3AA\uD3AC\uD3AE"], ["bc81", "\uD3AF", 4, "\uD3B5\uD3B6\uD3B7\uD3B9\uD3BA\uD3BB\uD3BD", 6, "\uD3C6\uD3C7\uD3CA", 5, "\uD3D1", 5, "\uC0E5\uC0E8\uC0EC\uC0F4\uC0F5\uC0F7\uC0F9\uC100\uC104\uC108\uC110\uC115\uC11C", 4, "\uC123\uC124\uC126\uC127\uC12C\uC12D\uC12F\uC130\uC131\uC136\uC138\uC139\uC13C\uC140\uC148\uC149\uC14B\uC14C\uC14D\uC154\uC155\uC158\uC15C\uC164\uC165\uC167\uC168\uC169\uC170\uC174\uC178\uC185\uC18C\uC18D\uC18E\uC190\uC194\uC196\uC19C\uC19D\uC19F\uC1A1\uC1A5\uC1A8\uC1A9\uC1AC\uC1B0\uC1BD\uC1C4\uC1C8\uC1CC\uC1D4\uC1D7\uC1D8\uC1E0\uC1E4\uC1E8\uC1F0\uC1F1\uC1F3\uC1FC\uC1FD\uC200\uC204\uC20C\uC20D\uC20F\uC211\uC218\uC219\uC21C\uC21F\uC220\uC228\uC229\uC22B\uC22D"], ["bd41", "\uD3D7\uD3D9", 7, "\uD3E2\uD3E4", 7, "\uD3EE\uD3EF\uD3F1\uD3F2\uD3F3\uD3F5\uD3F6\uD3F7"], ["bd61", "\uD3F8\uD3F9\uD3FA\uD3FB\uD3FE\uD400\uD402", 5, "\uD409", 13], ["bd81", "\uD417", 5, "\uD41E", 25, "\uC22F\uC231\uC232\uC234\uC248\uC250\uC251\uC254\uC258\uC260\uC265\uC26C\uC26D\uC270\uC274\uC27C\uC27D\uC27F\uC281\uC288\uC289\uC290\uC298\uC29B\uC29D\uC2A4\uC2A5\uC2A8\uC2AC\uC2AD\uC2B4\uC2B5\uC2B7\uC2B9\uC2DC\uC2DD\uC2E0\uC2E3\uC2E4\uC2EB\uC2EC\uC2ED\uC2EF\uC2F1\uC2F6\uC2F8\uC2F9\uC2FB\uC2FC\uC300\uC308\uC309\uC30C\uC30D\uC313\uC314\uC315\uC318\uC31C\uC324\uC325\uC328\uC329\uC345\uC368\uC369\uC36C\uC370\uC372\uC378\uC379\uC37C\uC37D\uC384\uC388\uC38C\uC3C0\uC3D8\uC3D9\uC3DC\uC3DF\uC3E0\uC3E2\uC3E8\uC3E9\uC3ED\uC3F4\uC3F5\uC3F8\uC408\uC410\uC424\uC42C\uC430"], ["be41", "\uD438", 7, "\uD441\uD442\uD443\uD445", 14], ["be61", "\uD454", 7, "\uD45D\uD45E\uD45F\uD461\uD462\uD463\uD465", 7, "\uD46E\uD470\uD471\uD472"], ["be81", "\uD473", 4, "\uD47A\uD47B\uD47D\uD47E\uD481\uD483", 4, "\uD48A\uD48C\uD48E", 5, "\uD495", 8, "\uC434\uC43C\uC43D\uC448\uC464\uC465\uC468\uC46C\uC474\uC475\uC479\uC480\uC494\uC49C\uC4B8\uC4BC\uC4E9\uC4F0\uC4F1\uC4F4\uC4F8\uC4FA\uC4FF\uC500\uC501\uC50C\uC510\uC514\uC51C\uC528\uC529\uC52C\uC530\uC538\uC539\uC53B\uC53D\uC544\uC545\uC548\uC549\uC54A\uC54C\uC54D\uC54E\uC553\uC554\uC555\uC557\uC558\uC559\uC55D\uC55E\uC560\uC561\uC564\uC568\uC570\uC571\uC573\uC574\uC575\uC57C\uC57D\uC580\uC584\uC587\uC58C\uC58D\uC58F\uC591\uC595\uC597\uC598\uC59C\uC5A0\uC5A9\uC5B4\uC5B5\uC5B8\uC5B9\uC5BB\uC5BC\uC5BD\uC5BE\uC5C4", 6, "\uC5CC\uC5CE"], ["bf41", "\uD49E", 10, "\uD4AA", 14], ["bf61", "\uD4B9", 18, "\uD4CD\uD4CE\uD4CF\uD4D1\uD4D2\uD4D3\uD4D5"], ["bf81", "\uD4D6", 5, "\uD4DD\uD4DE\uD4E0", 7, "\uD4E9\uD4EA\uD4EB\uD4ED\uD4EE\uD4EF\uD4F1", 6, "\uD4F9\uD4FA\uD4FC\uC5D0\uC5D1\uC5D4\uC5D8\uC5E0\uC5E1\uC5E3\uC5E5\uC5EC\uC5ED\uC5EE\uC5F0\uC5F4\uC5F6\uC5F7\uC5FC", 5, "\uC605\uC606\uC607\uC608\uC60C\uC610\uC618\uC619\uC61B\uC61C\uC624\uC625\uC628\uC62C\uC62D\uC62E\uC630\uC633\uC634\uC635\uC637\uC639\uC63B\uC640\uC641\uC644\uC648\uC650\uC651\uC653\uC654\uC655\uC65C\uC65D\uC660\uC66C\uC66F\uC671\uC678\uC679\uC67C\uC680\uC688\uC689\uC68B\uC68D\uC694\uC695\uC698\uC69C\uC6A4\uC6A5\uC6A7\uC6A9\uC6B0\uC6B1\uC6B4\uC6B8\uC6B9\uC6BA\uC6C0\uC6C1\uC6C3\uC6C5\uC6CC\uC6CD\uC6D0\uC6D4\uC6DC\uC6DD\uC6E0\uC6E1\uC6E8"], ["c041", "\uD4FE", 5, "\uD505\uD506\uD507\uD509\uD50A\uD50B\uD50D", 6, "\uD516\uD518", 5], ["c061", "\uD51E", 25], ["c081", "\uD538\uD539\uD53A\uD53B\uD53E\uD53F\uD541\uD542\uD543\uD545", 6, "\uD54E\uD550\uD552", 5, "\uD55A\uD55B\uD55D\uD55E\uD55F\uD561\uD562\uD563\uC6E9\uC6EC\uC6F0\uC6F8\uC6F9\uC6FD\uC704\uC705\uC708\uC70C\uC714\uC715\uC717\uC719\uC720\uC721\uC724\uC728\uC730\uC731\uC733\uC735\uC737\uC73C\uC73D\uC740\uC744\uC74A\uC74C\uC74D\uC74F\uC751", 7, "\uC75C\uC760\uC768\uC76B\uC774\uC775\uC778\uC77C\uC77D\uC77E\uC783\uC784\uC785\uC787\uC788\uC789\uC78A\uC78E\uC790\uC791\uC794\uC796\uC797\uC798\uC79A\uC7A0\uC7A1\uC7A3\uC7A4\uC7A5\uC7A6\uC7AC\uC7AD\uC7B0\uC7B4\uC7BC\uC7BD\uC7BF\uC7C0\uC7C1\uC7C8\uC7C9\uC7CC\uC7CE\uC7D0\uC7D8\uC7DD\uC7E4\uC7E8\uC7EC\uC800\uC801\uC804\uC808\uC80A"], ["c141", "\uD564\uD566\uD567\uD56A\uD56C\uD56E", 5, "\uD576\uD577\uD579\uD57A\uD57B\uD57D", 6, "\uD586\uD58A\uD58B"], ["c161", "\uD58C\uD58D\uD58E\uD58F\uD591", 19, "\uD5A6\uD5A7"], ["c181", "\uD5A8", 31, "\uC810\uC811\uC813\uC815\uC816\uC81C\uC81D\uC820\uC824\uC82C\uC82D\uC82F\uC831\uC838\uC83C\uC840\uC848\uC849\uC84C\uC84D\uC854\uC870\uC871\uC874\uC878\uC87A\uC880\uC881\uC883\uC885\uC886\uC887\uC88B\uC88C\uC88D\uC894\uC89D\uC89F\uC8A1\uC8A8\uC8BC\uC8BD\uC8C4\uC8C8\uC8CC\uC8D4\uC8D5\uC8D7\uC8D9\uC8E0\uC8E1\uC8E4\uC8F5\uC8FC\uC8FD\uC900\uC904\uC905\uC906\uC90C\uC90D\uC90F\uC911\uC918\uC92C\uC934\uC950\uC951\uC954\uC958\uC960\uC961\uC963\uC96C\uC970\uC974\uC97C\uC988\uC989\uC98C\uC990\uC998\uC999\uC99B\uC99D\uC9C0\uC9C1\uC9C4\uC9C7\uC9C8\uC9CA\uC9D0\uC9D1\uC9D3"], ["c241", "\uD5CA\uD5CB\uD5CD\uD5CE\uD5CF\uD5D1\uD5D3", 4, "\uD5DA\uD5DC\uD5DE", 5, "\uD5E6\uD5E7\uD5E9\uD5EA\uD5EB\uD5ED\uD5EE"], ["c261", "\uD5EF", 4, "\uD5F6\uD5F8\uD5FA", 5, "\uD602\uD603\uD605\uD606\uD607\uD609", 6, "\uD612"], ["c281", "\uD616", 5, "\uD61D\uD61E\uD61F\uD621\uD622\uD623\uD625", 7, "\uD62E", 9, "\uD63A\uD63B\uC9D5\uC9D6\uC9D9\uC9DA\uC9DC\uC9DD\uC9E0\uC9E2\uC9E4\uC9E7\uC9EC\uC9ED\uC9EF\uC9F0\uC9F1\uC9F8\uC9F9\uC9FC\uCA00\uCA08\uCA09\uCA0B\uCA0C\uCA0D\uCA14\uCA18\uCA29\uCA4C\uCA4D\uCA50\uCA54\uCA5C\uCA5D\uCA5F\uCA60\uCA61\uCA68\uCA7D\uCA84\uCA98\uCABC\uCABD\uCAC0\uCAC4\uCACC\uCACD\uCACF\uCAD1\uCAD3\uCAD8\uCAD9\uCAE0\uCAEC\uCAF4\uCB08\uCB10\uCB14\uCB18\uCB20\uCB21\uCB41\uCB48\uCB49\uCB4C\uCB50\uCB58\uCB59\uCB5D\uCB64\uCB78\uCB79\uCB9C\uCBB8\uCBD4\uCBE4\uCBE7\uCBE9\uCC0C\uCC0D\uCC10\uCC14\uCC1C\uCC1D\uCC21\uCC22\uCC27\uCC28\uCC29\uCC2C\uCC2E\uCC30\uCC38\uCC39\uCC3B"], ["c341", "\uD63D\uD63E\uD63F\uD641\uD642\uD643\uD644\uD646\uD647\uD64A\uD64C\uD64E\uD64F\uD650\uD652\uD653\uD656\uD657\uD659\uD65A\uD65B\uD65D", 4], ["c361", "\uD662", 4, "\uD668\uD66A", 5, "\uD672\uD673\uD675", 11], ["c381", "\uD681\uD682\uD684\uD686", 5, "\uD68E\uD68F\uD691\uD692\uD693\uD695", 7, "\uD69E\uD6A0\uD6A2", 5, "\uD6A9\uD6AA\uCC3C\uCC3D\uCC3E\uCC44\uCC45\uCC48\uCC4C\uCC54\uCC55\uCC57\uCC58\uCC59\uCC60\uCC64\uCC66\uCC68\uCC70\uCC75\uCC98\uCC99\uCC9C\uCCA0\uCCA8\uCCA9\uCCAB\uCCAC\uCCAD\uCCB4\uCCB5\uCCB8\uCCBC\uCCC4\uCCC5\uCCC7\uCCC9\uCCD0\uCCD4\uCCE4\uCCEC\uCCF0\uCD01\uCD08\uCD09\uCD0C\uCD10\uCD18\uCD19\uCD1B\uCD1D\uCD24\uCD28\uCD2C\uCD39\uCD5C\uCD60\uCD64\uCD6C\uCD6D\uCD6F\uCD71\uCD78\uCD88\uCD94\uCD95\uCD98\uCD9C\uCDA4\uCDA5\uCDA7\uCDA9\uCDB0\uCDC4\uCDCC\uCDD0\uCDE8\uCDEC\uCDF0\uCDF8\uCDF9\uCDFB\uCDFD\uCE04\uCE08\uCE0C\uCE14\uCE19\uCE20\uCE21\uCE24\uCE28\uCE30\uCE31\uCE33\uCE35"], ["c441", "\uD6AB\uD6AD\uD6AE\uD6AF\uD6B1", 7, "\uD6BA\uD6BC", 7, "\uD6C6\uD6C7\uD6C9\uD6CA\uD6CB"], ["c461", "\uD6CD\uD6CE\uD6CF\uD6D0\uD6D2\uD6D3\uD6D5\uD6D6\uD6D8\uD6DA", 5, "\uD6E1\uD6E2\uD6E3\uD6E5\uD6E6\uD6E7\uD6E9", 4], ["c481", "\uD6EE\uD6EF\uD6F1\uD6F2\uD6F3\uD6F4\uD6F6", 5, "\uD6FE\uD6FF\uD701\uD702\uD703\uD705", 11, "\uD712\uD713\uD714\uCE58\uCE59\uCE5C\uCE5F\uCE60\uCE61\uCE68\uCE69\uCE6B\uCE6D\uCE74\uCE75\uCE78\uCE7C\uCE84\uCE85\uCE87\uCE89\uCE90\uCE91\uCE94\uCE98\uCEA0\uCEA1\uCEA3\uCEA4\uCEA5\uCEAC\uCEAD\uCEC1\uCEE4\uCEE5\uCEE8\uCEEB\uCEEC\uCEF4\uCEF5\uCEF7\uCEF8\uCEF9\uCF00\uCF01\uCF04\uCF08\uCF10\uCF11\uCF13\uCF15\uCF1C\uCF20\uCF24\uCF2C\uCF2D\uCF2F\uCF30\uCF31\uCF38\uCF54\uCF55\uCF58\uCF5C\uCF64\uCF65\uCF67\uCF69\uCF70\uCF71\uCF74\uCF78\uCF80\uCF85\uCF8C\uCFA1\uCFA8\uCFB0\uCFC4\uCFE0\uCFE1\uCFE4\uCFE8\uCFF0\uCFF1\uCFF3\uCFF5\uCFFC\uD000\uD004\uD011\uD018\uD02D\uD034\uD035\uD038\uD03C"], ["c541", "\uD715\uD716\uD717\uD71A\uD71B\uD71D\uD71E\uD71F\uD721", 6, "\uD72A\uD72C\uD72E", 5, "\uD736\uD737\uD739"], ["c561", "\uD73A\uD73B\uD73D", 6, "\uD745\uD746\uD748\uD74A", 5, "\uD752\uD753\uD755\uD75A", 4], ["c581", "\uD75F\uD762\uD764\uD766\uD767\uD768\uD76A\uD76B\uD76D\uD76E\uD76F\uD771\uD772\uD773\uD775", 6, "\uD77E\uD77F\uD780\uD782", 5, "\uD78A\uD78B\uD044\uD045\uD047\uD049\uD050\uD054\uD058\uD060\uD06C\uD06D\uD070\uD074\uD07C\uD07D\uD081\uD0A4\uD0A5\uD0A8\uD0AC\uD0B4\uD0B5\uD0B7\uD0B9\uD0C0\uD0C1\uD0C4\uD0C8\uD0C9\uD0D0\uD0D1\uD0D3\uD0D4\uD0D5\uD0DC\uD0DD\uD0E0\uD0E4\uD0EC\uD0ED\uD0EF\uD0F0\uD0F1\uD0F8\uD10D\uD130\uD131\uD134\uD138\uD13A\uD140\uD141\uD143\uD144\uD145\uD14C\uD14D\uD150\uD154\uD15C\uD15D\uD15F\uD161\uD168\uD16C\uD17C\uD184\uD188\uD1A0\uD1A1\uD1A4\uD1A8\uD1B0\uD1B1\uD1B3\uD1B5\uD1BA\uD1BC\uD1C0\uD1D8\uD1F4\uD1F8\uD207\uD209\uD210\uD22C\uD22D\uD230\uD234\uD23C\uD23D\uD23F\uD241\uD248\uD25C"], ["c641", "\uD78D\uD78E\uD78F\uD791", 6, "\uD79A\uD79C\uD79E", 5], ["c6a1", "\uD264\uD280\uD281\uD284\uD288\uD290\uD291\uD295\uD29C\uD2A0\uD2A4\uD2AC\uD2B1\uD2B8\uD2B9\uD2BC\uD2BF\uD2C0\uD2C2\uD2C8\uD2C9\uD2CB\uD2D4\uD2D8\uD2DC\uD2E4\uD2E5\uD2F0\uD2F1\uD2F4\uD2F8\uD300\uD301\uD303\uD305\uD30C\uD30D\uD30E\uD310\uD314\uD316\uD31C\uD31D\uD31F\uD320\uD321\uD325\uD328\uD329\uD32C\uD330\uD338\uD339\uD33B\uD33C\uD33D\uD344\uD345\uD37C\uD37D\uD380\uD384\uD38C\uD38D\uD38F\uD390\uD391\uD398\uD399\uD39C\uD3A0\uD3A8\uD3A9\uD3AB\uD3AD\uD3B4\uD3B8\uD3BC\uD3C4\uD3C5\uD3C8\uD3C9\uD3D0\uD3D8\uD3E1\uD3E3\uD3EC\uD3ED\uD3F0\uD3F4\uD3FC\uD3FD\uD3FF\uD401"], ["c7a1", "\uD408\uD41D\uD440\uD444\uD45C\uD460\uD464\uD46D\uD46F\uD478\uD479\uD47C\uD47F\uD480\uD482\uD488\uD489\uD48B\uD48D\uD494\uD4A9\uD4CC\uD4D0\uD4D4\uD4DC\uD4DF\uD4E8\uD4EC\uD4F0\uD4F8\uD4FB\uD4FD\uD504\uD508\uD50C\uD514\uD515\uD517\uD53C\uD53D\uD540\uD544\uD54C\uD54D\uD54F\uD551\uD558\uD559\uD55C\uD560\uD565\uD568\uD569\uD56B\uD56D\uD574\uD575\uD578\uD57C\uD584\uD585\uD587\uD588\uD589\uD590\uD5A5\uD5C8\uD5C9\uD5CC\uD5D0\uD5D2\uD5D8\uD5D9\uD5DB\uD5DD\uD5E4\uD5E5\uD5E8\uD5EC\uD5F4\uD5F5\uD5F7\uD5F9\uD600\uD601\uD604\uD608\uD610\uD611\uD613\uD614\uD615\uD61C\uD620"], ["c8a1", "\uD624\uD62D\uD638\uD639\uD63C\uD640\uD645\uD648\uD649\uD64B\uD64D\uD651\uD654\uD655\uD658\uD65C\uD667\uD669\uD670\uD671\uD674\uD683\uD685\uD68C\uD68D\uD690\uD694\uD69D\uD69F\uD6A1\uD6A8\uD6AC\uD6B0\uD6B9\uD6BB\uD6C4\uD6C5\uD6C8\uD6CC\uD6D1\uD6D4\uD6D7\uD6D9\uD6E0\uD6E4\uD6E8\uD6F0\uD6F5\uD6FC\uD6FD\uD700\uD704\uD711\uD718\uD719\uD71C\uD720\uD728\uD729\uD72B\uD72D\uD734\uD735\uD738\uD73C\uD744\uD747\uD749\uD750\uD751\uD754\uD756\uD757\uD758\uD759\uD760\uD761\uD763\uD765\uD769\uD76C\uD770\uD774\uD77C\uD77D\uD781\uD788\uD789\uD78C\uD790\uD798\uD799\uD79B\uD79D"], ["caa1", "\u4F3D\u4F73\u5047\u50F9\u52A0\u53EF\u5475\u54E5\u5609\u5AC1\u5BB6\u6687\u67B6\u67B7\u67EF\u6B4C\u73C2\u75C2\u7A3C\u82DB\u8304\u8857\u8888\u8A36\u8CC8\u8DCF\u8EFB\u8FE6\u99D5\u523B\u5374\u5404\u606A\u6164\u6BBC\u73CF\u811A\u89BA\u89D2\u95A3\u4F83\u520A\u58BE\u5978\u59E6\u5E72\u5E79\u61C7\u63C0\u6746\u67EC\u687F\u6F97\u764E\u770B\u78F5\u7A08\u7AFF\u7C21\u809D\u826E\u8271\u8AEB\u9593\u4E6B\u559D\u66F7\u6E34\u78A3\u7AED\u845B\u8910\u874E\u97A8\u52D8\u574E\u582A\u5D4C\u611F\u61BE\u6221\u6562\u67D1\u6A44\u6E1B\u7518\u75B3\u76E3\u77B0\u7D3A\u90AF\u9451\u9452\u9F95"], ["cba1", "\u5323\u5CAC\u7532\u80DB\u9240\u9598\u525B\u5808\u59DC\u5CA1\u5D17\u5EB7\u5F3A\u5F4A\u6177\u6C5F\u757A\u7586\u7CE0\u7D73\u7DB1\u7F8C\u8154\u8221\u8591\u8941\u8B1B\u92FC\u964D\u9C47\u4ECB\u4EF7\u500B\u51F1\u584F\u6137\u613E\u6168\u6539\u69EA\u6F11\u75A5\u7686\u76D6\u7B87\u82A5\u84CB\uF900\u93A7\u958B\u5580\u5BA2\u5751\uF901\u7CB3\u7FB9\u91B5\u5028\u53BB\u5C45\u5DE8\u62D2\u636E\u64DA\u64E7\u6E20\u70AC\u795B\u8DDD\u8E1E\uF902\u907D\u9245\u92F8\u4E7E\u4EF6\u5065\u5DFE\u5EFA\u6106\u6957\u8171\u8654\u8E47\u9375\u9A2B\u4E5E\u5091\u6770\u6840\u5109\u528D\u5292\u6AA2"], ["cca1", "\u77BC\u9210\u9ED4\u52AB\u602F\u8FF2\u5048\u61A9\u63ED\u64CA\u683C\u6A84\u6FC0\u8188\u89A1\u9694\u5805\u727D\u72AC\u7504\u7D79\u7E6D\u80A9\u898B\u8B74\u9063\u9D51\u6289\u6C7A\u6F54\u7D50\u7F3A\u8A23\u517C\u614A\u7B9D\u8B19\u9257\u938C\u4EAC\u4FD3\u501E\u50BE\u5106\u52C1\u52CD\u537F\u5770\u5883\u5E9A\u5F91\u6176\u61AC\u64CE\u656C\u666F\u66BB\u66F4\u6897\u6D87\u7085\u70F1\u749F\u74A5\u74CA\u75D9\u786C\u78EC\u7ADF\u7AF6\u7D45\u7D93\u8015\u803F\u811B\u8396\u8B66\u8F15\u9015\u93E1\u9803\u9838\u9A5A\u9BE8\u4FC2\u5553\u583A\u5951\u5B63\u5C46\u60B8\u6212\u6842\u68B0"], ["cda1", "\u68E8\u6EAA\u754C\u7678\u78CE\u7A3D\u7CFB\u7E6B\u7E7C\u8A08\u8AA1\u8C3F\u968E\u9DC4\u53E4\u53E9\u544A\u5471\u56FA\u59D1\u5B64\u5C3B\u5EAB\u62F7\u6537\u6545\u6572\u66A0\u67AF\u69C1\u6CBD\u75FC\u7690\u777E\u7A3F\u7F94\u8003\u80A1\u818F\u82E6\u82FD\u83F0\u85C1\u8831\u88B4\u8AA5\uF903\u8F9C\u932E\u96C7\u9867\u9AD8\u9F13\u54ED\u659B\u66F2\u688F\u7A40\u8C37\u9D60\u56F0\u5764\u5D11\u6606\u68B1\u68CD\u6EFE\u7428\u889E\u9BE4\u6C68\uF904\u9AA8\u4F9B\u516C\u5171\u529F\u5B54\u5DE5\u6050\u606D\u62F1\u63A7\u653B\u73D9\u7A7A\u86A3\u8CA2\u978F\u4E32\u5BE1\u6208\u679C\u74DC"], ["cea1", "\u79D1\u83D3\u8A87\u8AB2\u8DE8\u904E\u934B\u9846\u5ED3\u69E8\u85FF\u90ED\uF905\u51A0\u5B98\u5BEC\u6163\u68FA\u6B3E\u704C\u742F\u74D8\u7BA1\u7F50\u83C5\u89C0\u8CAB\u95DC\u9928\u522E\u605D\u62EC\u9002\u4F8A\u5149\u5321\u58D9\u5EE3\u66E0\u6D38\u709A\u72C2\u73D6\u7B50\u80F1\u945B\u5366\u639B\u7F6B\u4E56\u5080\u584A\u58DE\u602A\u6127\u62D0\u69D0\u9B41\u5B8F\u7D18\u80B1\u8F5F\u4EA4\u50D1\u54AC\u55AC\u5B0C\u5DA0\u5DE7\u652A\u654E\u6821\u6A4B\u72E1\u768E\u77EF\u7D5E\u7FF9\u81A0\u854E\u86DF\u8F03\u8F4E\u90CA\u9903\u9A55\u9BAB\u4E18\u4E45\u4E5D\u4EC7\u4FF1\u5177\u52FE"], ["cfa1", "\u5340\u53E3\u53E5\u548E\u5614\u5775\u57A2\u5BC7\u5D87\u5ED0\u61FC\u62D8\u6551\u67B8\u67E9\u69CB\u6B50\u6BC6\u6BEC\u6C42\u6E9D\u7078\u72D7\u7396\u7403\u77BF\u77E9\u7A76\u7D7F\u8009\u81FC\u8205\u820A\u82DF\u8862\u8B33\u8CFC\u8EC0\u9011\u90B1\u9264\u92B6\u99D2\u9A45\u9CE9\u9DD7\u9F9C\u570B\u5C40\u83CA\u97A0\u97AB\u9EB4\u541B\u7A98\u7FA4\u88D9\u8ECD\u90E1\u5800\u5C48\u6398\u7A9F\u5BAE\u5F13\u7A79\u7AAE\u828E\u8EAC\u5026\u5238\u52F8\u5377\u5708\u62F3\u6372\u6B0A\u6DC3\u7737\u53A5\u7357\u8568\u8E76\u95D5\u673A\u6AC3\u6F70\u8A6D\u8ECC\u994B\uF906\u6677\u6B78\u8CB4"], ["d0a1", "\u9B3C\uF907\u53EB\u572D\u594E\u63C6\u69FB\u73EA\u7845\u7ABA\u7AC5\u7CFE\u8475\u898F\u8D73\u9035\u95A8\u52FB\u5747\u7547\u7B60\u83CC\u921E\uF908\u6A58\u514B\u524B\u5287\u621F\u68D8\u6975\u9699\u50C5\u52A4\u52E4\u61C3\u65A4\u6839\u69FF\u747E\u7B4B\u82B9\u83EB\u89B2\u8B39\u8FD1\u9949\uF909\u4ECA\u5997\u64D2\u6611\u6A8E\u7434\u7981\u79BD\u82A9\u887E\u887F\u895F\uF90A\u9326\u4F0B\u53CA\u6025\u6271\u6C72\u7D1A\u7D66\u4E98\u5162\u77DC\u80AF\u4F01\u4F0E\u5176\u5180\u55DC\u5668\u573B\u57FA\u57FC\u5914\u5947\u5993\u5BC4\u5C90\u5D0E\u5DF1\u5E7E\u5FCC\u6280\u65D7\u65E3"], ["d1a1", "\u671E\u671F\u675E\u68CB\u68C4\u6A5F\u6B3A\u6C23\u6C7D\u6C82\u6DC7\u7398\u7426\u742A\u7482\u74A3\u7578\u757F\u7881\u78EF\u7941\u7947\u7948\u797A\u7B95\u7D00\u7DBA\u7F88\u8006\u802D\u808C\u8A18\u8B4F\u8C48\u8D77\u9321\u9324\u98E2\u9951\u9A0E\u9A0F\u9A65\u9E92\u7DCA\u4F76\u5409\u62EE\u6854\u91D1\u55AB\u513A\uF90B\uF90C\u5A1C\u61E6\uF90D\u62CF\u62FF\uF90E", 5, "\u90A3\uF914", 4, "\u8AFE\uF919\uF91A\uF91B\uF91C\u6696\uF91D\u7156\uF91E\uF91F\u96E3\uF920\u634F\u637A\u5357\uF921\u678F\u6960\u6E73\uF922\u7537\uF923\uF924\uF925"], ["d2a1", "\u7D0D\uF926\uF927\u8872\u56CA\u5A18\uF928", 4, "\u4E43\uF92D\u5167\u5948\u67F0\u8010\uF92E\u5973\u5E74\u649A\u79CA\u5FF5\u606C\u62C8\u637B\u5BE7\u5BD7\u52AA\uF92F\u5974\u5F29\u6012\uF930\uF931\uF932\u7459\uF933", 5, "\u99D1\uF939", 10, "\u6FC3\uF944\uF945\u81BF\u8FB2\u60F1\uF946\uF947\u8166\uF948\uF949\u5C3F\uF94A", 7, "\u5AE9\u8A25\u677B\u7D10\uF952", 5, "\u80FD\uF958\uF959\u5C3C\u6CE5\u533F\u6EBA\u591A\u8336"], ["d3a1", "\u4E39\u4EB6\u4F46\u55AE\u5718\u58C7\u5F56\u65B7\u65E6\u6A80\u6BB5\u6E4D\u77ED\u7AEF\u7C1E\u7DDE\u86CB\u8892\u9132\u935B\u64BB\u6FBE\u737A\u75B8\u9054\u5556\u574D\u61BA\u64D4\u66C7\u6DE1\u6E5B\u6F6D\u6FB9\u75F0\u8043\u81BD\u8541\u8983\u8AC7\u8B5A\u931F\u6C93\u7553\u7B54\u8E0F\u905D\u5510\u5802\u5858\u5E62\u6207\u649E\u68E0\u7576\u7CD6\u87B3\u9EE8\u4EE3\u5788\u576E\u5927\u5C0D\u5CB1\u5E36\u5F85\u6234\u64E1\u73B3\u81FA\u888B\u8CB8\u968A\u9EDB\u5B85\u5FB7\u60B3\u5012\u5200\u5230\u5716\u5835\u5857\u5C0E\u5C60\u5CF6\u5D8B\u5EA6\u5F92\u60BC\u6311\u6389\u6417\u6843"], ["d4a1", "\u68F9\u6AC2\u6DD8\u6E21\u6ED4\u6FE4\u71FE\u76DC\u7779\u79B1\u7A3B\u8404\u89A9\u8CED\u8DF3\u8E48\u9003\u9014\u9053\u90FD\u934D\u9676\u97DC\u6BD2\u7006\u7258\u72A2\u7368\u7763\u79BF\u7BE4\u7E9B\u8B80\u58A9\u60C7\u6566\u65FD\u66BE\u6C8C\u711E\u71C9\u8C5A\u9813\u4E6D\u7A81\u4EDD\u51AC\u51CD\u52D5\u540C\u61A7\u6771\u6850\u68DF\u6D1E\u6F7C\u75BC\u77B3\u7AE5\u80F4\u8463\u9285\u515C\u6597\u675C\u6793\u75D8\u7AC7\u8373\uF95A\u8C46\u9017\u982D\u5C6F\u81C0\u829A\u9041\u906F\u920D\u5F97\u5D9D\u6A59\u71C8\u767B\u7B49\u85E4\u8B04\u9127\u9A30\u5587\u61F6\uF95B\u7669\u7F85"], ["d5a1", "\u863F\u87BA\u88F8\u908F\uF95C\u6D1B\u70D9\u73DE\u7D61\u843D\uF95D\u916A\u99F1\uF95E\u4E82\u5375\u6B04\u6B12\u703E\u721B\u862D\u9E1E\u524C\u8FA3\u5D50\u64E5\u652C\u6B16\u6FEB\u7C43\u7E9C\u85CD\u8964\u89BD\u62C9\u81D8\u881F\u5ECA\u6717\u6D6A\u72FC\u7405\u746F\u8782\u90DE\u4F86\u5D0D\u5FA0\u840A\u51B7\u63A0\u7565\u4EAE\u5006\u5169\u51C9\u6881\u6A11\u7CAE\u7CB1\u7CE7\u826F\u8AD2\u8F1B\u91CF\u4FB6\u5137\u52F5\u5442\u5EEC\u616E\u623E\u65C5\u6ADA\u6FFE\u792A\u85DC\u8823\u95AD\u9A62\u9A6A\u9E97\u9ECE\u529B\u66C6\u6B77\u701D\u792B\u8F62\u9742\u6190\u6200\u6523\u6F23"], ["d6a1", "\u7149\u7489\u7DF4\u806F\u84EE\u8F26\u9023\u934A\u51BD\u5217\u52A3\u6D0C\u70C8\u88C2\u5EC9\u6582\u6BAE\u6FC2\u7C3E\u7375\u4EE4\u4F36\u56F9\uF95F\u5CBA\u5DBA\u601C\u73B2\u7B2D\u7F9A\u7FCE\u8046\u901E\u9234\u96F6\u9748\u9818\u9F61\u4F8B\u6FA7\u79AE\u91B4\u96B7\u52DE\uF960\u6488\u64C4\u6AD3\u6F5E\u7018\u7210\u76E7\u8001\u8606\u865C\u8DEF\u8F05\u9732\u9B6F\u9DFA\u9E75\u788C\u797F\u7DA0\u83C9\u9304\u9E7F\u9E93\u8AD6\u58DF\u5F04\u6727\u7027\u74CF\u7C60\u807E\u5121\u7028\u7262\u78CA\u8CC2\u8CDA\u8CF4\u96F7\u4E86\u50DA\u5BEE\u5ED6\u6599\u71CE\u7642\u77AD\u804A\u84FC"], ["d7a1", "\u907C\u9B27\u9F8D\u58D8\u5A41\u5C62\u6A13\u6DDA\u6F0F\u763B\u7D2F\u7E37\u851E\u8938\u93E4\u964B\u5289\u65D2\u67F3\u69B4\u6D41\u6E9C\u700F\u7409\u7460\u7559\u7624\u786B\u8B2C\u985E\u516D\u622E\u9678\u4F96\u502B\u5D19\u6DEA\u7DB8\u8F2A\u5F8B\u6144\u6817\uF961\u9686\u52D2\u808B\u51DC\u51CC\u695E\u7A1C\u7DBE\u83F1\u9675\u4FDA\u5229\u5398\u540F\u550E\u5C65\u60A7\u674E\u68A8\u6D6C\u7281\u72F8\u7406\u7483\uF962\u75E2\u7C6C\u7F79\u7FB8\u8389\u88CF\u88E1\u91CC\u91D0\u96E2\u9BC9\u541D\u6F7E\u71D0\u7498\u85FA\u8EAA\u96A3\u9C57\u9E9F\u6797\u6DCB\u7433\u81E8\u9716\u782C"], ["d8a1", "\u7ACB\u7B20\u7C92\u6469\u746A\u75F2\u78BC\u78E8\u99AC\u9B54\u9EBB\u5BDE\u5E55\u6F20\u819C\u83AB\u9088\u4E07\u534D\u5A29\u5DD2\u5F4E\u6162\u633D\u6669\u66FC\u6EFF\u6F2B\u7063\u779E\u842C\u8513\u883B\u8F13\u9945\u9C3B\u551C\u62B9\u672B\u6CAB\u8309\u896A\u977A\u4EA1\u5984\u5FD8\u5FD9\u671B\u7DB2\u7F54\u8292\u832B\u83BD\u8F1E\u9099\u57CB\u59B9\u5A92\u5BD0\u6627\u679A\u6885\u6BCF\u7164\u7F75\u8CB7\u8CE3\u9081\u9B45\u8108\u8C8A\u964C\u9A40\u9EA5\u5B5F\u6C13\u731B\u76F2\u76DF\u840C\u51AA\u8993\u514D\u5195\u52C9\u68C9\u6C94\u7704\u7720\u7DBF\u7DEC\u9762\u9EB5\u6EC5"], ["d9a1", "\u8511\u51A5\u540D\u547D\u660E\u669D\u6927\u6E9F\u76BF\u7791\u8317\u84C2\u879F\u9169\u9298\u9CF4\u8882\u4FAE\u5192\u52DF\u59C6\u5E3D\u6155\u6478\u6479\u66AE\u67D0\u6A21\u6BCD\u6BDB\u725F\u7261\u7441\u7738\u77DB\u8017\u82BC\u8305\u8B00\u8B28\u8C8C\u6728\u6C90\u7267\u76EE\u7766\u7A46\u9DA9\u6B7F\u6C92\u5922\u6726\u8499\u536F\u5893\u5999\u5EDF\u63CF\u6634\u6773\u6E3A\u732B\u7AD7\u82D7\u9328\u52D9\u5DEB\u61AE\u61CB\u620A\u62C7\u64AB\u65E0\u6959\u6B66\u6BCB\u7121\u73F7\u755D\u7E46\u821E\u8302\u856A\u8AA3\u8CBF\u9727\u9D61\u58A8\u9ED8\u5011\u520E\u543B\u554F\u6587"], ["daa1", "\u6C76\u7D0A\u7D0B\u805E\u868A\u9580\u96EF\u52FF\u6C95\u7269\u5473\u5A9A\u5C3E\u5D4B\u5F4C\u5FAE\u672A\u68B6\u6963\u6E3C\u6E44\u7709\u7C73\u7F8E\u8587\u8B0E\u8FF7\u9761\u9EF4\u5CB7\u60B6\u610D\u61AB\u654F\u65FB\u65FC\u6C11\u6CEF\u739F\u73C9\u7DE1\u9594\u5BC6\u871C\u8B10\u525D\u535A\u62CD\u640F\u64B2\u6734\u6A38\u6CCA\u73C0\u749E\u7B94\u7C95\u7E1B\u818A\u8236\u8584\u8FEB\u96F9\u99C1\u4F34\u534A\u53CD\u53DB\u62CC\u642C\u6500\u6591\u69C3\u6CEE\u6F58\u73ED\u7554\u7622\u76E4\u76FC\u78D0\u78FB\u792C\u7D46\u822C\u87E0\u8FD4\u9812\u98EF\u52C3\u62D4\u64A5\u6E24\u6F51"], ["dba1", "\u767C\u8DCB\u91B1\u9262\u9AEE\u9B43\u5023\u508D\u574A\u59A8\u5C28\u5E47\u5F77\u623F\u653E\u65B9\u65C1\u6609\u678B\u699C\u6EC2\u78C5\u7D21\u80AA\u8180\u822B\u82B3\u84A1\u868C\u8A2A\u8B17\u90A6\u9632\u9F90\u500D\u4FF3\uF963\u57F9\u5F98\u62DC\u6392\u676F\u6E43\u7119\u76C3\u80CC\u80DA\u88F4\u88F5\u8919\u8CE0\u8F29\u914D\u966A\u4F2F\u4F70\u5E1B\u67CF\u6822\u767D\u767E\u9B44\u5E61\u6A0A\u7169\u71D4\u756A\uF964\u7E41\u8543\u85E9\u98DC\u4F10\u7B4F\u7F70\u95A5\u51E1\u5E06\u68B5\u6C3E\u6C4E\u6CDB\u72AF\u7BC4\u8303\u6CD5\u743A\u50FB\u5288\u58C1\u64D8\u6A97\u74A7\u7656"], ["dca1", "\u78A7\u8617\u95E2\u9739\uF965\u535E\u5F01\u8B8A\u8FA8\u8FAF\u908A\u5225\u77A5\u9C49\u9F08\u4E19\u5002\u5175\u5C5B\u5E77\u661E\u663A\u67C4\u68C5\u70B3\u7501\u75C5\u79C9\u7ADD\u8F27\u9920\u9A08\u4FDD\u5821\u5831\u5BF6\u666E\u6B65\u6D11\u6E7A\u6F7D\u73E4\u752B\u83E9\u88DC\u8913\u8B5C\u8F14\u4F0F\u50D5\u5310\u535C\u5B93\u5FA9\u670D\u798F\u8179\u832F\u8514\u8907\u8986\u8F39\u8F3B\u99A5\u9C12\u672C\u4E76\u4FF8\u5949\u5C01\u5CEF\u5CF0\u6367\u68D2\u70FD\u71A2\u742B\u7E2B\u84EC\u8702\u9022\u92D2\u9CF3\u4E0D\u4ED8\u4FEF\u5085\u5256\u526F\u5426\u5490\u57E0\u592B\u5A66"], ["dda1", "\u5B5A\u5B75\u5BCC\u5E9C\uF966\u6276\u6577\u65A7\u6D6E\u6EA5\u7236\u7B26\u7C3F\u7F36\u8150\u8151\u819A\u8240\u8299\u83A9\u8A03\u8CA0\u8CE6\u8CFB\u8D74\u8DBA\u90E8\u91DC\u961C\u9644\u99D9\u9CE7\u5317\u5206\u5429\u5674\u58B3\u5954\u596E\u5FFF\u61A4\u626E\u6610\u6C7E\u711A\u76C6\u7C89\u7CDE\u7D1B\u82AC\u8CC1\u96F0\uF967\u4F5B\u5F17\u5F7F\u62C2\u5D29\u670B\u68DA\u787C\u7E43\u9D6C\u4E15\u5099\u5315\u532A\u5351\u5983\u5A62\u5E87\u60B2\u618A\u6249\u6279\u6590\u6787\u69A7\u6BD4\u6BD6\u6BD7\u6BD8\u6CB8\uF968\u7435\u75FA\u7812\u7891\u79D5\u79D8\u7C83\u7DCB\u7FE1\u80A5"], ["dea1", "\u813E\u81C2\u83F2\u871A\u88E8\u8AB9\u8B6C\u8CBB\u9119\u975E\u98DB\u9F3B\u56AC\u5B2A\u5F6C\u658C\u6AB3\u6BAF\u6D5C\u6FF1\u7015\u725D\u73AD\u8CA7\u8CD3\u983B\u6191\u6C37\u8058\u9A01\u4E4D\u4E8B\u4E9B\u4ED5\u4F3A\u4F3C\u4F7F\u4FDF\u50FF\u53F2\u53F8\u5506\u55E3\u56DB\u58EB\u5962\u5A11\u5BEB\u5BFA\u5C04\u5DF3\u5E2B\u5F99\u601D\u6368\u659C\u65AF\u67F6\u67FB\u68AD\u6B7B\u6C99\u6CD7\u6E23\u7009\u7345\u7802\u793E\u7940\u7960\u79C1\u7BE9\u7D17\u7D72\u8086\u820D\u838E\u84D1\u86C7\u88DF\u8A50\u8A5E\u8B1D\u8CDC\u8D66\u8FAD\u90AA\u98FC\u99DF\u9E9D\u524A\uF969\u6714\uF96A"], ["dfa1", "\u5098\u522A\u5C71\u6563\u6C55\u73CA\u7523\u759D\u7B97\u849C\u9178\u9730\u4E77\u6492\u6BBA\u715E\u85A9\u4E09\uF96B\u6749\u68EE\u6E17\u829F\u8518\u886B\u63F7\u6F81\u9212\u98AF\u4E0A\u50B7\u50CF\u511F\u5546\u55AA\u5617\u5B40\u5C19\u5CE0\u5E38\u5E8A\u5EA0\u5EC2\u60F3\u6851\u6A61\u6E58\u723D\u7240\u72C0\u76F8\u7965\u7BB1\u7FD4\u88F3\u89F4\u8A73\u8C61\u8CDE\u971C\u585E\u74BD\u8CFD\u55C7\uF96C\u7A61\u7D22\u8272\u7272\u751F\u7525\uF96D\u7B19\u5885\u58FB\u5DBC\u5E8F\u5EB6\u5F90\u6055\u6292\u637F\u654D\u6691\u66D9\u66F8\u6816\u68F2\u7280\u745E\u7B6E\u7D6E\u7DD6\u7F72"], ["e0a1", "\u80E5\u8212\u85AF\u897F\u8A93\u901D\u92E4\u9ECD\u9F20\u5915\u596D\u5E2D\u60DC\u6614\u6673\u6790\u6C50\u6DC5\u6F5F\u77F3\u78A9\u84C6\u91CB\u932B\u4ED9\u50CA\u5148\u5584\u5B0B\u5BA3\u6247\u657E\u65CB\u6E32\u717D\u7401\u7444\u7487\u74BF\u766C\u79AA\u7DDA\u7E55\u7FA8\u817A\u81B3\u8239\u861A\u87EC\u8A75\u8DE3\u9078\u9291\u9425\u994D\u9BAE\u5368\u5C51\u6954\u6CC4\u6D29\u6E2B\u820C\u859B\u893B\u8A2D\u8AAA\u96EA\u9F67\u5261\u66B9\u6BB2\u7E96\u87FE\u8D0D\u9583\u965D\u651D\u6D89\u71EE\uF96E\u57CE\u59D3\u5BAC\u6027\u60FA\u6210\u661F\u665F\u7329\u73F9\u76DB\u7701\u7B6C"], ["e1a1", "\u8056\u8072\u8165\u8AA0\u9192\u4E16\u52E2\u6B72\u6D17\u7A05\u7B39\u7D30\uF96F\u8CB0\u53EC\u562F\u5851\u5BB5\u5C0F\u5C11\u5DE2\u6240\u6383\u6414\u662D\u68B3\u6CBC\u6D88\u6EAF\u701F\u70A4\u71D2\u7526\u758F\u758E\u7619\u7B11\u7BE0\u7C2B\u7D20\u7D39\u852C\u856D\u8607\u8A34\u900D\u9061\u90B5\u92B7\u97F6\u9A37\u4FD7\u5C6C\u675F\u6D91\u7C9F\u7E8C\u8B16\u8D16\u901F\u5B6B\u5DFD\u640D\u84C0\u905C\u98E1\u7387\u5B8B\u609A\u677E\u6DDE\u8A1F\u8AA6\u9001\u980C\u5237\uF970\u7051\u788E\u9396\u8870\u91D7\u4FEE\u53D7\u55FD\u56DA\u5782\u58FD\u5AC2\u5B88\u5CAB\u5CC0\u5E25\u6101"], ["e2a1", "\u620D\u624B\u6388\u641C\u6536\u6578\u6A39\u6B8A\u6C34\u6D19\u6F31\u71E7\u72E9\u7378\u7407\u74B2\u7626\u7761\u79C0\u7A57\u7AEA\u7CB9\u7D8F\u7DAC\u7E61\u7F9E\u8129\u8331\u8490\u84DA\u85EA\u8896\u8AB0\u8B90\u8F38\u9042\u9083\u916C\u9296\u92B9\u968B\u96A7\u96A8\u96D6\u9700\u9808\u9996\u9AD3\u9B1A\u53D4\u587E\u5919\u5B70\u5BBF\u6DD1\u6F5A\u719F\u7421\u74B9\u8085\u83FD\u5DE1\u5F87\u5FAA\u6042\u65EC\u6812\u696F\u6A53\u6B89\u6D35\u6DF3\u73E3\u76FE\u77AC\u7B4D\u7D14\u8123\u821C\u8340\u84F4\u8563\u8A62\u8AC4\u9187\u931E\u9806\u99B4\u620C\u8853\u8FF0\u9265\u5D07\u5D27"], ["e3a1", "\u5D69\u745F\u819D\u8768\u6FD5\u62FE\u7FD2\u8936\u8972\u4E1E\u4E58\u50E7\u52DD\u5347\u627F\u6607\u7E69\u8805\u965E\u4F8D\u5319\u5636\u59CB\u5AA4\u5C38\u5C4E\u5C4D\u5E02\u5F11\u6043\u65BD\u662F\u6642\u67BE\u67F4\u731C\u77E2\u793A\u7FC5\u8494\u84CD\u8996\u8A66\u8A69\u8AE1\u8C55\u8C7A\u57F4\u5BD4\u5F0F\u606F\u62ED\u690D\u6B96\u6E5C\u7184\u7BD2\u8755\u8B58\u8EFE\u98DF\u98FE\u4F38\u4F81\u4FE1\u547B\u5A20\u5BB8\u613C\u65B0\u6668\u71FC\u7533\u795E\u7D33\u814E\u81E3\u8398\u85AA\u85CE\u8703\u8A0A\u8EAB\u8F9B\uF971\u8FC5\u5931\u5BA4\u5BE6\u6089\u5BE9\u5C0B\u5FC3\u6C81"], ["e4a1", "\uF972\u6DF1\u700B\u751A\u82AF\u8AF6\u4EC0\u5341\uF973\u96D9\u6C0F\u4E9E\u4FC4\u5152\u555E\u5A25\u5CE8\u6211\u7259\u82BD\u83AA\u86FE\u8859\u8A1D\u963F\u96C5\u9913\u9D09\u9D5D\u580A\u5CB3\u5DBD\u5E44\u60E1\u6115\u63E1\u6A02\u6E25\u9102\u9354\u984E\u9C10\u9F77\u5B89\u5CB8\u6309\u664F\u6848\u773C\u96C1\u978D\u9854\u9B9F\u65A1\u8B01\u8ECB\u95BC\u5535\u5CA9\u5DD6\u5EB5\u6697\u764C\u83F4\u95C7\u58D3\u62BC\u72CE\u9D28\u4EF0\u592E\u600F\u663B\u6B83\u79E7\u9D26\u5393\u54C0\u57C3\u5D16\u611B\u66D6\u6DAF\u788D\u827E\u9698\u9744\u5384\u627C\u6396\u6DB2\u7E0A\u814B\u984D"], ["e5a1", "\u6AFB\u7F4C\u9DAF\u9E1A\u4E5F\u503B\u51B6\u591C\u60F9\u63F6\u6930\u723A\u8036\uF974\u91CE\u5F31\uF975\uF976\u7D04\u82E5\u846F\u84BB\u85E5\u8E8D\uF977\u4F6F\uF978\uF979\u58E4\u5B43\u6059\u63DA\u6518\u656D\u6698\uF97A\u694A\u6A23\u6D0B\u7001\u716C\u75D2\u760D\u79B3\u7A70\uF97B\u7F8A\uF97C\u8944\uF97D\u8B93\u91C0\u967D\uF97E\u990A\u5704\u5FA1\u65BC\u6F01\u7600\u79A6\u8A9E\u99AD\u9B5A\u9F6C\u5104\u61B6\u6291\u6A8D\u81C6\u5043\u5830\u5F66\u7109\u8A00\u8AFA\u5B7C\u8616\u4FFA\u513C\u56B4\u5944\u63A9\u6DF9\u5DAA\u696D\u5186\u4E88\u4F59\uF97F\uF980\uF981\u5982\uF982"], ["e6a1", "\uF983\u6B5F\u6C5D\uF984\u74B5\u7916\uF985\u8207\u8245\u8339\u8F3F\u8F5D\uF986\u9918\uF987\uF988\uF989\u4EA6\uF98A\u57DF\u5F79\u6613\uF98B\uF98C\u75AB\u7E79\u8B6F\uF98D\u9006\u9A5B\u56A5\u5827\u59F8\u5A1F\u5BB4\uF98E\u5EF6\uF98F\uF990\u6350\u633B\uF991\u693D\u6C87\u6CBF\u6D8E\u6D93\u6DF5\u6F14\uF992\u70DF\u7136\u7159\uF993\u71C3\u71D5\uF994\u784F\u786F\uF995\u7B75\u7DE3\uF996\u7E2F\uF997\u884D\u8EDF\uF998\uF999\uF99A\u925B\uF99B\u9CF6\uF99C\uF99D\uF99E\u6085\u6D85\uF99F\u71B1\uF9A0\uF9A1\u95B1\u53AD\uF9A2\uF9A3\uF9A4\u67D3\uF9A5\u708E\u7130\u7430\u8276\u82D2"], ["e7a1", "\uF9A6\u95BB\u9AE5\u9E7D\u66C4\uF9A7\u71C1\u8449\uF9A8\uF9A9\u584B\uF9AA\uF9AB\u5DB8\u5F71\uF9AC\u6620\u668E\u6979\u69AE\u6C38\u6CF3\u6E36\u6F41\u6FDA\u701B\u702F\u7150\u71DF\u7370\uF9AD\u745B\uF9AE\u74D4\u76C8\u7A4E\u7E93\uF9AF\uF9B0\u82F1\u8A60\u8FCE\uF9B1\u9348\uF9B2\u9719\uF9B3\uF9B4\u4E42\u502A\uF9B5\u5208\u53E1\u66F3\u6C6D\u6FCA\u730A\u777F\u7A62\u82AE\u85DD\u8602\uF9B6\u88D4\u8A63\u8B7D\u8C6B\uF9B7\u92B3\uF9B8\u9713\u9810\u4E94\u4F0D\u4FC9\u50B2\u5348\u543E\u5433\u55DA\u5862\u58BA\u5967\u5A1B\u5BE4\u609F\uF9B9\u61CA\u6556\u65FF\u6664\u68A7\u6C5A\u6FB3"], ["e8a1", "\u70CF\u71AC\u7352\u7B7D\u8708\u8AA4\u9C32\u9F07\u5C4B\u6C83\u7344\u7389\u923A\u6EAB\u7465\u761F\u7A69\u7E15\u860A\u5140\u58C5\u64C1\u74EE\u7515\u7670\u7FC1\u9095\u96CD\u9954\u6E26\u74E6\u7AA9\u7AAA\u81E5\u86D9\u8778\u8A1B\u5A49\u5B8C\u5B9B\u68A1\u6900\u6D63\u73A9\u7413\u742C\u7897\u7DE9\u7FEB\u8118\u8155\u839E\u8C4C\u962E\u9811\u66F0\u5F80\u65FA\u6789\u6C6A\u738B\u502D\u5A03\u6B6A\u77EE\u5916\u5D6C\u5DCD\u7325\u754F\uF9BA\uF9BB\u50E5\u51F9\u582F\u592D\u5996\u59DA\u5BE5\uF9BC\uF9BD\u5DA2\u62D7\u6416\u6493\u64FE\uF9BE\u66DC\uF9BF\u6A48\uF9C0\u71FF\u7464\uF9C1"], ["e9a1", "\u7A88\u7AAF\u7E47\u7E5E\u8000\u8170\uF9C2\u87EF\u8981\u8B20\u9059\uF9C3\u9080\u9952\u617E\u6B32\u6D74\u7E1F\u8925\u8FB1\u4FD1\u50AD\u5197\u52C7\u57C7\u5889\u5BB9\u5EB8\u6142\u6995\u6D8C\u6E67\u6EB6\u7194\u7462\u7528\u752C\u8073\u8338\u84C9\u8E0A\u9394\u93DE\uF9C4\u4E8E\u4F51\u5076\u512A\u53C8\u53CB\u53F3\u5B87\u5BD3\u5C24\u611A\u6182\u65F4\u725B\u7397\u7440\u76C2\u7950\u7991\u79B9\u7D06\u7FBD\u828B\u85D5\u865E\u8FC2\u9047\u90F5\u91EA\u9685\u96E8\u96E9\u52D6\u5F67\u65ED\u6631\u682F\u715C\u7A36\u90C1\u980A\u4E91\uF9C5\u6A52\u6B9E\u6F90\u7189\u8018\u82B8\u8553"], ["eaa1", "\u904B\u9695\u96F2\u97FB\u851A\u9B31\u4E90\u718A\u96C4\u5143\u539F\u54E1\u5713\u5712\u57A3\u5A9B\u5AC4\u5BC3\u6028\u613F\u63F4\u6C85\u6D39\u6E72\u6E90\u7230\u733F\u7457\u82D1\u8881\u8F45\u9060\uF9C6\u9662\u9858\u9D1B\u6708\u8D8A\u925E\u4F4D\u5049\u50DE\u5371\u570D\u59D4\u5A01\u5C09\u6170\u6690\u6E2D\u7232\u744B\u7DEF\u80C3\u840E\u8466\u853F\u875F\u885B\u8918\u8B02\u9055\u97CB\u9B4F\u4E73\u4F91\u5112\u516A\uF9C7\u552F\u55A9\u5B7A\u5BA5\u5E7C\u5E7D\u5EBE\u60A0\u60DF\u6108\u6109\u63C4\u6538\u6709\uF9C8\u67D4\u67DA\uF9C9\u6961\u6962\u6CB9\u6D27\uF9CA\u6E38\uF9CB"], ["eba1", "\u6FE1\u7336\u7337\uF9CC\u745C\u7531\uF9CD\u7652\uF9CE\uF9CF\u7DAD\u81FE\u8438\u88D5\u8A98\u8ADB\u8AED\u8E30\u8E42\u904A\u903E\u907A\u9149\u91C9\u936E\uF9D0\uF9D1\u5809\uF9D2\u6BD3\u8089\u80B2\uF9D3\uF9D4\u5141\u596B\u5C39\uF9D5\uF9D6\u6F64\u73A7\u80E4\u8D07\uF9D7\u9217\u958F\uF9D8\uF9D9\uF9DA\uF9DB\u807F\u620E\u701C\u7D68\u878D\uF9DC\u57A0\u6069\u6147\u6BB7\u8ABE\u9280\u96B1\u4E59\u541F\u6DEB\u852D\u9670\u97F3\u98EE\u63D6\u6CE3\u9091\u51DD\u61C9\u81BA\u9DF9\u4F9D\u501A\u5100\u5B9C\u610F\u61FF\u64EC\u6905\u6BC5\u7591\u77E3\u7FA9\u8264\u858F\u87FB\u8863\u8ABC"], ["eca1", "\u8B70\u91AB\u4E8C\u4EE5\u4F0A\uF9DD\uF9DE\u5937\u59E8\uF9DF\u5DF2\u5F1B\u5F5B\u6021\uF9E0\uF9E1\uF9E2\uF9E3\u723E\u73E5\uF9E4\u7570\u75CD\uF9E5\u79FB\uF9E6\u800C\u8033\u8084\u82E1\u8351\uF9E7\uF9E8\u8CBD\u8CB3\u9087\uF9E9\uF9EA\u98F4\u990C\uF9EB\uF9EC\u7037\u76CA\u7FCA\u7FCC\u7FFC\u8B1A\u4EBA\u4EC1\u5203\u5370\uF9ED\u54BD\u56E0\u59FB\u5BC5\u5F15\u5FCD\u6E6E\uF9EE\uF9EF\u7D6A\u8335\uF9F0\u8693\u8A8D\uF9F1\u976D\u9777\uF9F2\uF9F3\u4E00\u4F5A\u4F7E\u58F9\u65E5\u6EA2\u9038\u93B0\u99B9\u4EFB\u58EC\u598A\u59D9\u6041\uF9F4\uF9F5\u7A14\uF9F6\u834F\u8CC3\u5165\u5344"], ["eda1", "\uF9F7\uF9F8\uF9F9\u4ECD\u5269\u5B55\u82BF\u4ED4\u523A\u54A8\u59C9\u59FF\u5B50\u5B57\u5B5C\u6063\u6148\u6ECB\u7099\u716E\u7386\u74F7\u75B5\u78C1\u7D2B\u8005\u81EA\u8328\u8517\u85C9\u8AEE\u8CC7\u96CC\u4F5C\u52FA\u56BC\u65AB\u6628\u707C\u70B8\u7235\u7DBD\u828D\u914C\u96C0\u9D72\u5B71\u68E7\u6B98\u6F7A\u76DE\u5C91\u66AB\u6F5B\u7BB4\u7C2A\u8836\u96DC\u4E08\u4ED7\u5320\u5834\u58BB\u58EF\u596C\u5C07\u5E33\u5E84\u5F35\u638C\u66B2\u6756\u6A1F\u6AA3\u6B0C\u6F3F\u7246\uF9FA\u7350\u748B\u7AE0\u7CA7\u8178\u81DF\u81E7\u838A\u846C\u8523\u8594\u85CF\u88DD\u8D13\u91AC\u9577"], ["eea1", "\u969C\u518D\u54C9\u5728\u5BB0\u624D\u6750\u683D\u6893\u6E3D\u6ED3\u707D\u7E21\u88C1\u8CA1\u8F09\u9F4B\u9F4E\u722D\u7B8F\u8ACD\u931A\u4F47\u4F4E\u5132\u5480\u59D0\u5E95\u62B5\u6775\u696E\u6A17\u6CAE\u6E1A\u72D9\u732A\u75BD\u7BB8\u7D35\u82E7\u83F9\u8457\u85F7\u8A5B\u8CAF\u8E87\u9019\u90B8\u96CE\u9F5F\u52E3\u540A\u5AE1\u5BC2\u6458\u6575\u6EF4\u72C4\uF9FB\u7684\u7A4D\u7B1B\u7C4D\u7E3E\u7FDF\u837B\u8B2B\u8CCA\u8D64\u8DE1\u8E5F\u8FEA\u8FF9\u9069\u93D1\u4F43\u4F7A\u50B3\u5168\u5178\u524D\u526A\u5861\u587C\u5960\u5C08\u5C55\u5EDB\u609B\u6230\u6813\u6BBF\u6C08\u6FB1"], ["efa1", "\u714E\u7420\u7530\u7538\u7551\u7672\u7B4C\u7B8B\u7BAD\u7BC6\u7E8F\u8A6E\u8F3E\u8F49\u923F\u9293\u9322\u942B\u96FB\u985A\u986B\u991E\u5207\u622A\u6298\u6D59\u7664\u7ACA\u7BC0\u7D76\u5360\u5CBE\u5E97\u6F38\u70B9\u7C98\u9711\u9B8E\u9EDE\u63A5\u647A\u8776\u4E01\u4E95\u4EAD\u505C\u5075\u5448\u59C3\u5B9A\u5E40\u5EAD\u5EF7\u5F81\u60C5\u633A\u653F\u6574\u65CC\u6676\u6678\u67FE\u6968\u6A89\u6B63\u6C40\u6DC0\u6DE8\u6E1F\u6E5E\u701E\u70A1\u738E\u73FD\u753A\u775B\u7887\u798E\u7A0B\u7A7D\u7CBE\u7D8E\u8247\u8A02\u8AEA\u8C9E\u912D\u914A\u91D8\u9266\u92CC\u9320\u9706\u9756"], ["f0a1", "\u975C\u9802\u9F0E\u5236\u5291\u557C\u5824\u5E1D\u5F1F\u608C\u63D0\u68AF\u6FDF\u796D\u7B2C\u81CD\u85BA\u88FD\u8AF8\u8E44\u918D\u9664\u969B\u973D\u984C\u9F4A\u4FCE\u5146\u51CB\u52A9\u5632\u5F14\u5F6B\u63AA\u64CD\u65E9\u6641\u66FA\u66F9\u671D\u689D\u68D7\u69FD\u6F15\u6F6E\u7167\u71E5\u722A\u74AA\u773A\u7956\u795A\u79DF\u7A20\u7A95\u7C97\u7CDF\u7D44\u7E70\u8087\u85FB\u86A4\u8A54\u8ABF\u8D99\u8E81\u9020\u906D\u91E3\u963B\u96D5\u9CE5\u65CF\u7C07\u8DB3\u93C3\u5B58\u5C0A\u5352\u62D9\u731D\u5027\u5B97\u5F9E\u60B0\u616B\u68D5\u6DD9\u742E\u7A2E\u7D42\u7D9C\u7E31\u816B"], ["f1a1", "\u8E2A\u8E35\u937E\u9418\u4F50\u5750\u5DE6\u5EA7\u632B\u7F6A\u4E3B\u4F4F\u4F8F\u505A\u59DD\u80C4\u546A\u5468\u55FE\u594F\u5B99\u5DDE\u5EDA\u665D\u6731\u67F1\u682A\u6CE8\u6D32\u6E4A\u6F8D\u70B7\u73E0\u7587\u7C4C\u7D02\u7D2C\u7DA2\u821F\u86DB\u8A3B\u8A85\u8D70\u8E8A\u8F33\u9031\u914E\u9152\u9444\u99D0\u7AF9\u7CA5\u4FCA\u5101\u51C6\u57C8\u5BEF\u5CFB\u6659\u6A3D\u6D5A\u6E96\u6FEC\u710C\u756F\u7AE3\u8822\u9021\u9075\u96CB\u99FF\u8301\u4E2D\u4EF2\u8846\u91CD\u537D\u6ADB\u696B\u6C41\u847A\u589E\u618E\u66FE\u62EF\u70DD\u7511\u75C7\u7E52\u84B8\u8B49\u8D08\u4E4B\u53EA"], ["f2a1", "\u54AB\u5730\u5740\u5FD7\u6301\u6307\u646F\u652F\u65E8\u667A\u679D\u67B3\u6B62\u6C60\u6C9A\u6F2C\u77E5\u7825\u7949\u7957\u7D19\u80A2\u8102\u81F3\u829D\u82B7\u8718\u8A8C\uF9FC\u8D04\u8DBE\u9072\u76F4\u7A19\u7A37\u7E54\u8077\u5507\u55D4\u5875\u632F\u6422\u6649\u664B\u686D\u699B\u6B84\u6D25\u6EB1\u73CD\u7468\u74A1\u755B\u75B9\u76E1\u771E\u778B\u79E6\u7E09\u7E1D\u81FB\u852F\u8897\u8A3A\u8CD1\u8EEB\u8FB0\u9032\u93AD\u9663\u9673\u9707\u4F84\u53F1\u59EA\u5AC9\u5E19\u684E\u74C6\u75BE\u79E9\u7A92\u81A3\u86ED\u8CEA\u8DCC\u8FED\u659F\u6715\uF9FD\u57F7\u6F57\u7DDD\u8F2F"], ["f3a1", "\u93F6\u96C6\u5FB5\u61F2\u6F84\u4E14\u4F98\u501F\u53C9\u55DF\u5D6F\u5DEE\u6B21\u6B64\u78CB\u7B9A\uF9FE\u8E49\u8ECA\u906E\u6349\u643E\u7740\u7A84\u932F\u947F\u9F6A\u64B0\u6FAF\u71E6\u74A8\u74DA\u7AC4\u7C12\u7E82\u7CB2\u7E98\u8B9A\u8D0A\u947D\u9910\u994C\u5239\u5BDF\u64E6\u672D\u7D2E\u50ED\u53C3\u5879\u6158\u6159\u61FA\u65AC\u7AD9\u8B92\u8B96\u5009\u5021\u5275\u5531\u5A3C\u5EE0\u5F70\u6134\u655E\u660C\u6636\u66A2\u69CD\u6EC4\u6F32\u7316\u7621\u7A93\u8139\u8259\u83D6\u84BC\u50B5\u57F0\u5BC0\u5BE8\u5F69\u63A1\u7826\u7DB5\u83DC\u8521\u91C7\u91F5\u518A\u67F5\u7B56"], ["f4a1", "\u8CAC\u51C4\u59BB\u60BD\u8655\u501C\uF9FF\u5254\u5C3A\u617D\u621A\u62D3\u64F2\u65A5\u6ECC\u7620\u810A\u8E60\u965F\u96BB\u4EDF\u5343\u5598\u5929\u5DDD\u64C5\u6CC9\u6DFA\u7394\u7A7F\u821B\u85A6\u8CE4\u8E10\u9077\u91E7\u95E1\u9621\u97C6\u51F8\u54F2\u5586\u5FB9\u64A4\u6F88\u7DB4\u8F1F\u8F4D\u9435\u50C9\u5C16\u6CBE\u6DFB\u751B\u77BB\u7C3D\u7C64\u8A79\u8AC2\u581E\u59BE\u5E16\u6377\u7252\u758A\u776B\u8ADC\u8CBC\u8F12\u5EF3\u6674\u6DF8\u807D\u83C1\u8ACB\u9751\u9BD6\uFA00\u5243\u66FF\u6D95\u6EEF\u7DE0\u8AE6\u902E\u905E\u9AD4\u521D\u527F\u54E8\u6194\u6284\u62DB\u68A2"], ["f5a1", "\u6912\u695A\u6A35\u7092\u7126\u785D\u7901\u790E\u79D2\u7A0D\u8096\u8278\u82D5\u8349\u8549\u8C82\u8D85\u9162\u918B\u91AE\u4FC3\u56D1\u71ED\u77D7\u8700\u89F8\u5BF8\u5FD6\u6751\u90A8\u53E2\u585A\u5BF5\u60A4\u6181\u6460\u7E3D\u8070\u8525\u9283\u64AE\u50AC\u5D14\u6700\u589C\u62BD\u63A8\u690E\u6978\u6A1E\u6E6B\u76BA\u79CB\u82BB\u8429\u8ACF\u8DA8\u8FFD\u9112\u914B\u919C\u9310\u9318\u939A\u96DB\u9A36\u9C0D\u4E11\u755C\u795D\u7AFA\u7B51\u7BC9\u7E2E\u84C4\u8E59\u8E74\u8EF8\u9010\u6625\u693F\u7443\u51FA\u672E\u9EDC\u5145\u5FE0\u6C96\u87F2\u885D\u8877\u60B4\u81B5\u8403"], ["f6a1", "\u8D05\u53D6\u5439\u5634\u5A36\u5C31\u708A\u7FE0\u805A\u8106\u81ED\u8DA3\u9189\u9A5F\u9DF2\u5074\u4EC4\u53A0\u60FB\u6E2C\u5C64\u4F88\u5024\u55E4\u5CD9\u5E5F\u6065\u6894\u6CBB\u6DC4\u71BE\u75D4\u75F4\u7661\u7A1A\u7A49\u7DC7\u7DFB\u7F6E\u81F4\u86A9\u8F1C\u96C9\u99B3\u9F52\u5247\u52C5\u98ED\u89AA\u4E03\u67D2\u6F06\u4FB5\u5BE2\u6795\u6C88\u6D78\u741B\u7827\u91DD\u937C\u87C4\u79E4\u7A31\u5FEB\u4ED6\u54A4\u553E\u58AE\u59A5\u60F0\u6253\u62D6\u6736\u6955\u8235\u9640\u99B1\u99DD\u502C\u5353\u5544\u577C\uFA01\u6258\uFA02\u64E2\u666B\u67DD\u6FC1\u6FEF\u7422\u7438\u8A17"], ["f7a1", "\u9438\u5451\u5606\u5766\u5F48\u619A\u6B4E\u7058\u70AD\u7DBB\u8A95\u596A\u812B\u63A2\u7708\u803D\u8CAA\u5854\u642D\u69BB\u5B95\u5E11\u6E6F\uFA03\u8569\u514C\u53F0\u592A\u6020\u614B\u6B86\u6C70\u6CF0\u7B1E\u80CE\u82D4\u8DC6\u90B0\u98B1\uFA04\u64C7\u6FA4\u6491\u6504\u514E\u5410\u571F\u8A0E\u615F\u6876\uFA05\u75DB\u7B52\u7D71\u901A\u5806\u69CC\u817F\u892A\u9000\u9839\u5078\u5957\u59AC\u6295\u900F\u9B2A\u615D\u7279\u95D6\u5761\u5A46\u5DF4\u628A\u64AD\u64FA\u6777\u6CE2\u6D3E\u722C\u7436\u7834\u7F77\u82AD\u8DDB\u9817\u5224\u5742\u677F\u7248\u74E3\u8CA9\u8FA6\u9211"], ["f8a1", "\u962A\u516B\u53ED\u634C\u4F69\u5504\u6096\u6557\u6C9B\u6D7F\u724C\u72FD\u7A17\u8987\u8C9D\u5F6D\u6F8E\u70F9\u81A8\u610E\u4FBF\u504F\u6241\u7247\u7BC7\u7DE8\u7FE9\u904D\u97AD\u9A19\u8CB6\u576A\u5E73\u67B0\u840D\u8A55\u5420\u5B16\u5E63\u5EE2\u5F0A\u6583\u80BA\u853D\u9589\u965B\u4F48\u5305\u530D\u530F\u5486\u54FA\u5703\u5E03\u6016\u629B\u62B1\u6355\uFA06\u6CE1\u6D66\u75B1\u7832\u80DE\u812F\u82DE\u8461\u84B2\u888D\u8912\u900B\u92EA\u98FD\u9B91\u5E45\u66B4\u66DD\u7011\u7206\uFA07\u4FF5\u527D\u5F6A\u6153\u6753\u6A19\u6F02\u74E2\u7968\u8868\u8C79\u98C7\u98C4\u9A43"], ["f9a1", "\u54C1\u7A1F\u6953\u8AF7\u8C4A\u98A8\u99AE\u5F7C\u62AB\u75B2\u76AE\u88AB\u907F\u9642\u5339\u5F3C\u5FC5\u6CCC\u73CC\u7562\u758B\u7B46\u82FE\u999D\u4E4F\u903C\u4E0B\u4F55\u53A6\u590F\u5EC8\u6630\u6CB3\u7455\u8377\u8766\u8CC0\u9050\u971E\u9C15\u58D1\u5B78\u8650\u8B14\u9DB4\u5BD2\u6068\u608D\u65F1\u6C57\u6F22\u6FA3\u701A\u7F55\u7FF0\u9591\u9592\u9650\u97D3\u5272\u8F44\u51FD\u542B\u54B8\u5563\u558A\u6ABB\u6DB5\u7DD8\u8266\u929C\u9677\u9E79\u5408\u54C8\u76D2\u86E4\u95A4\u95D4\u965C\u4EA2\u4F09\u59EE\u5AE6\u5DF7\u6052\u6297\u676D\u6841\u6C86\u6E2F\u7F38\u809B\u822A"], ["faa1", "\uFA08\uFA09\u9805\u4EA5\u5055\u54B3\u5793\u595A\u5B69\u5BB3\u61C8\u6977\u6D77\u7023\u87F9\u89E3\u8A72\u8AE7\u9082\u99ED\u9AB8\u52BE\u6838\u5016\u5E78\u674F\u8347\u884C\u4EAB\u5411\u56AE\u73E6\u9115\u97FF\u9909\u9957\u9999\u5653\u589F\u865B\u8A31\u61B2\u6AF6\u737B\u8ED2\u6B47\u96AA\u9A57\u5955\u7200\u8D6B\u9769\u4FD4\u5CF4\u5F26\u61F8\u665B\u6CEB\u70AB\u7384\u73B9\u73FE\u7729\u774D\u7D43\u7D62\u7E23\u8237\u8852\uFA0A\u8CE2\u9249\u986F\u5B51\u7A74\u8840\u9801\u5ACC\u4FE0\u5354\u593E\u5CFD\u633E\u6D79\u72F9\u8105\u8107\u83A2\u92CF\u9830\u4EA8\u5144\u5211\u578B"], ["fba1", "\u5F62\u6CC2\u6ECE\u7005\u7050\u70AF\u7192\u73E9\u7469\u834A\u87A2\u8861\u9008\u90A2\u93A3\u99A8\u516E\u5F57\u60E0\u6167\u66B3\u8559\u8E4A\u91AF\u978B\u4E4E\u4E92\u547C\u58D5\u58FA\u597D\u5CB5\u5F27\u6236\u6248\u660A\u6667\u6BEB\u6D69\u6DCF\u6E56\u6EF8\u6F94\u6FE0\u6FE9\u705D\u72D0\u7425\u745A\u74E0\u7693\u795C\u7CCA\u7E1E\u80E1\u82A6\u846B\u84BF\u864E\u865F\u8774\u8B77\u8C6A\u93AC\u9800\u9865\u60D1\u6216\u9177\u5A5A\u660F\u6DF7\u6E3E\u743F\u9B42\u5FFD\u60DA\u7B0F\u54C4\u5F18\u6C5E\u6CD3\u6D2A\u70D8\u7D05\u8679\u8A0C\u9D3B\u5316\u548C\u5B05\u6A3A\u706B\u7575"], ["fca1", "\u798D\u79BE\u82B1\u83EF\u8A71\u8B41\u8CA8\u9774\uFA0B\u64F4\u652B\u78BA\u78BB\u7A6B\u4E38\u559A\u5950\u5BA6\u5E7B\u60A3\u63DB\u6B61\u6665\u6853\u6E19\u7165\u74B0\u7D08\u9084\u9A69\u9C25\u6D3B\u6ED1\u733E\u8C41\u95CA\u51F0\u5E4C\u5FA8\u604D\u60F6\u6130\u614C\u6643\u6644\u69A5\u6CC1\u6E5F\u6EC9\u6F62\u714C\u749C\u7687\u7BC1\u7C27\u8352\u8757\u9051\u968D\u9EC3\u532F\u56DE\u5EFB\u5F8A\u6062\u6094\u61F7\u6666\u6703\u6A9C\u6DEE\u6FAE\u7070\u736A\u7E6A\u81BE\u8334\u86D4\u8AA8\u8CC4\u5283\u7372\u5B96\u6A6B\u9404\u54EE\u5686\u5B5D\u6548\u6585\u66C9\u689F\u6D8D\u6DC6"], ["fda1", "\u723B\u80B4\u9175\u9A4D\u4FAF\u5019\u539A\u540E\u543C\u5589\u55C5\u5E3F\u5F8C\u673D\u7166\u73DD\u9005\u52DB\u52F3\u5864\u58CE\u7104\u718F\u71FB\u85B0\u8A13\u6688\u85A8\u55A7\u6684\u714A\u8431\u5349\u5599\u6BC1\u5F59\u5FBD\u63EE\u6689\u7147\u8AF1\u8F1D\u9EBE\u4F11\u643A\u70CB\u7566\u8667\u6064\u8B4E\u9DF8\u5147\u51F6\u5308\u6D36\u80F8\u9ED1\u6615\u6B23\u7098\u75D5\u5403\u5C79\u7D07\u8A16\u6B20\u6B3D\u6B46\u5438\u6070\u6D3D\u7FD5\u8208\u50D6\u51DE\u559C\u566B\u56CD\u59EC\u5B09\u5E0C\u6199\u6198\u6231\u665E\u66E6\u7199\u71B9\u71BA\u72A7\u79A7\u7A00\u7FB2\u8A70"]]; +}); +var nx = g((Wpe, lU) => { + lU.exports = [["0", "\0", 127], ["a140", "\u3000\uFF0C\u3001\u3002\uFF0E\u2027\uFF1B\uFF1A\uFF1F\uFF01\uFE30\u2026\u2025\uFE50\uFE51\uFE52\xB7\uFE54\uFE55\uFE56\uFE57\uFF5C\u2013\uFE31\u2014\uFE33\u2574\uFE34\uFE4F\uFF08\uFF09\uFE35\uFE36\uFF5B\uFF5D\uFE37\uFE38\u3014\u3015\uFE39\uFE3A\u3010\u3011\uFE3B\uFE3C\u300A\u300B\uFE3D\uFE3E\u3008\u3009\uFE3F\uFE40\u300C\u300D\uFE41\uFE42\u300E\u300F\uFE43\uFE44\uFE59\uFE5A"], ["a1a1", "\uFE5B\uFE5C\uFE5D\uFE5E\u2018\u2019\u201C\u201D\u301D\u301E\u2035\u2032\uFF03\uFF06\uFF0A\u203B\xA7\u3003\u25CB\u25CF\u25B3\u25B2\u25CE\u2606\u2605\u25C7\u25C6\u25A1\u25A0\u25BD\u25BC\u32A3\u2105\xAF\uFFE3\uFF3F\u02CD\uFE49\uFE4A\uFE4D\uFE4E\uFE4B\uFE4C\uFE5F\uFE60\uFE61\uFF0B\uFF0D\xD7\xF7\xB1\u221A\uFF1C\uFF1E\uFF1D\u2266\u2267\u2260\u221E\u2252\u2261\uFE62", 4, "\uFF5E\u2229\u222A\u22A5\u2220\u221F\u22BF\u33D2\u33D1\u222B\u222E\u2235\u2234\u2640\u2642\u2295\u2299\u2191\u2193\u2190\u2192\u2196\u2197\u2199\u2198\u2225\u2223\uFF0F"], ["a240", "\uFF3C\u2215\uFE68\uFF04\uFFE5\u3012\uFFE0\uFFE1\uFF05\uFF20\u2103\u2109\uFE69\uFE6A\uFE6B\u33D5\u339C\u339D\u339E\u33CE\u33A1\u338E\u338F\u33C4\xB0\u5159\u515B\u515E\u515D\u5161\u5163\u55E7\u74E9\u7CCE\u2581", 7, "\u258F\u258E\u258D\u258C\u258B\u258A\u2589\u253C\u2534\u252C\u2524\u251C\u2594\u2500\u2502\u2595\u250C\u2510\u2514\u2518\u256D"], ["a2a1", "\u256E\u2570\u256F\u2550\u255E\u256A\u2561\u25E2\u25E3\u25E5\u25E4\u2571\u2572\u2573\uFF10", 9, "\u2160", 9, "\u3021", 8, "\u5341\u5344\u5345\uFF21", 25, "\uFF41", 21], ["a340", "\uFF57\uFF58\uFF59\uFF5A\u0391", 16, "\u03A3", 6, "\u03B1", 16, "\u03C3", 6, "\u3105", 10], ["a3a1", "\u3110", 25, "\u02D9\u02C9\u02CA\u02C7\u02CB"], ["a3e1", "\u20AC"], ["a440", "\u4E00\u4E59\u4E01\u4E03\u4E43\u4E5D\u4E86\u4E8C\u4EBA\u513F\u5165\u516B\u51E0\u5200\u5201\u529B\u5315\u5341\u535C\u53C8\u4E09\u4E0B\u4E08\u4E0A\u4E2B\u4E38\u51E1\u4E45\u4E48\u4E5F\u4E5E\u4E8E\u4EA1\u5140\u5203\u52FA\u5343\u53C9\u53E3\u571F\u58EB\u5915\u5927\u5973\u5B50\u5B51\u5B53\u5BF8\u5C0F\u5C22\u5C38\u5C71\u5DDD\u5DE5\u5DF1\u5DF2\u5DF3\u5DFE\u5E72\u5EFE\u5F0B\u5F13\u624D"], ["a4a1", "\u4E11\u4E10\u4E0D\u4E2D\u4E30\u4E39\u4E4B\u5C39\u4E88\u4E91\u4E95\u4E92\u4E94\u4EA2\u4EC1\u4EC0\u4EC3\u4EC6\u4EC7\u4ECD\u4ECA\u4ECB\u4EC4\u5143\u5141\u5167\u516D\u516E\u516C\u5197\u51F6\u5206\u5207\u5208\u52FB\u52FE\u52FF\u5316\u5339\u5348\u5347\u5345\u535E\u5384\u53CB\u53CA\u53CD\u58EC\u5929\u592B\u592A\u592D\u5B54\u5C11\u5C24\u5C3A\u5C6F\u5DF4\u5E7B\u5EFF\u5F14\u5F15\u5FC3\u6208\u6236\u624B\u624E\u652F\u6587\u6597\u65A4\u65B9\u65E5\u66F0\u6708\u6728\u6B20\u6B62\u6B79\u6BCB\u6BD4\u6BDB\u6C0F\u6C34\u706B\u722A\u7236\u723B\u7247\u7259\u725B\u72AC\u738B\u4E19"], ["a540", "\u4E16\u4E15\u4E14\u4E18\u4E3B\u4E4D\u4E4F\u4E4E\u4EE5\u4ED8\u4ED4\u4ED5\u4ED6\u4ED7\u4EE3\u4EE4\u4ED9\u4EDE\u5145\u5144\u5189\u518A\u51AC\u51F9\u51FA\u51F8\u520A\u52A0\u529F\u5305\u5306\u5317\u531D\u4EDF\u534A\u5349\u5361\u5360\u536F\u536E\u53BB\u53EF\u53E4\u53F3\u53EC\u53EE\u53E9\u53E8\u53FC\u53F8\u53F5\u53EB\u53E6\u53EA\u53F2\u53F1\u53F0\u53E5\u53ED\u53FB\u56DB\u56DA\u5916"], ["a5a1", "\u592E\u5931\u5974\u5976\u5B55\u5B83\u5C3C\u5DE8\u5DE7\u5DE6\u5E02\u5E03\u5E73\u5E7C\u5F01\u5F18\u5F17\u5FC5\u620A\u6253\u6254\u6252\u6251\u65A5\u65E6\u672E\u672C\u672A\u672B\u672D\u6B63\u6BCD\u6C11\u6C10\u6C38\u6C41\u6C40\u6C3E\u72AF\u7384\u7389\u74DC\u74E6\u7518\u751F\u7528\u7529\u7530\u7531\u7532\u7533\u758B\u767D\u76AE\u76BF\u76EE\u77DB\u77E2\u77F3\u793A\u79BE\u7A74\u7ACB\u4E1E\u4E1F\u4E52\u4E53\u4E69\u4E99\u4EA4\u4EA6\u4EA5\u4EFF\u4F09\u4F19\u4F0A\u4F15\u4F0D\u4F10\u4F11\u4F0F\u4EF2\u4EF6\u4EFB\u4EF0\u4EF3\u4EFD\u4F01\u4F0B\u5149\u5147\u5146\u5148\u5168"], ["a640", "\u5171\u518D\u51B0\u5217\u5211\u5212\u520E\u5216\u52A3\u5308\u5321\u5320\u5370\u5371\u5409\u540F\u540C\u540A\u5410\u5401\u540B\u5404\u5411\u540D\u5408\u5403\u540E\u5406\u5412\u56E0\u56DE\u56DD\u5733\u5730\u5728\u572D\u572C\u572F\u5729\u5919\u591A\u5937\u5938\u5984\u5978\u5983\u597D\u5979\u5982\u5981\u5B57\u5B58\u5B87\u5B88\u5B85\u5B89\u5BFA\u5C16\u5C79\u5DDE\u5E06\u5E76\u5E74"], ["a6a1", "\u5F0F\u5F1B\u5FD9\u5FD6\u620E\u620C\u620D\u6210\u6263\u625B\u6258\u6536\u65E9\u65E8\u65EC\u65ED\u66F2\u66F3\u6709\u673D\u6734\u6731\u6735\u6B21\u6B64\u6B7B\u6C16\u6C5D\u6C57\u6C59\u6C5F\u6C60\u6C50\u6C55\u6C61\u6C5B\u6C4D\u6C4E\u7070\u725F\u725D\u767E\u7AF9\u7C73\u7CF8\u7F36\u7F8A\u7FBD\u8001\u8003\u800C\u8012\u8033\u807F\u8089\u808B\u808C\u81E3\u81EA\u81F3\u81FC\u820C\u821B\u821F\u826E\u8272\u827E\u866B\u8840\u884C\u8863\u897F\u9621\u4E32\u4EA8\u4F4D\u4F4F\u4F47\u4F57\u4F5E\u4F34\u4F5B\u4F55\u4F30\u4F50\u4F51\u4F3D\u4F3A\u4F38\u4F43\u4F54\u4F3C\u4F46\u4F63"], ["a740", "\u4F5C\u4F60\u4F2F\u4F4E\u4F36\u4F59\u4F5D\u4F48\u4F5A\u514C\u514B\u514D\u5175\u51B6\u51B7\u5225\u5224\u5229\u522A\u5228\u52AB\u52A9\u52AA\u52AC\u5323\u5373\u5375\u541D\u542D\u541E\u543E\u5426\u544E\u5427\u5446\u5443\u5433\u5448\u5442\u541B\u5429\u544A\u5439\u543B\u5438\u542E\u5435\u5436\u5420\u543C\u5440\u5431\u542B\u541F\u542C\u56EA\u56F0\u56E4\u56EB\u574A\u5751\u5740\u574D"], ["a7a1", "\u5747\u574E\u573E\u5750\u574F\u573B\u58EF\u593E\u599D\u5992\u59A8\u599E\u59A3\u5999\u5996\u598D\u59A4\u5993\u598A\u59A5\u5B5D\u5B5C\u5B5A\u5B5B\u5B8C\u5B8B\u5B8F\u5C2C\u5C40\u5C41\u5C3F\u5C3E\u5C90\u5C91\u5C94\u5C8C\u5DEB\u5E0C\u5E8F\u5E87\u5E8A\u5EF7\u5F04\u5F1F\u5F64\u5F62\u5F77\u5F79\u5FD8\u5FCC\u5FD7\u5FCD\u5FF1\u5FEB\u5FF8\u5FEA\u6212\u6211\u6284\u6297\u6296\u6280\u6276\u6289\u626D\u628A\u627C\u627E\u6279\u6273\u6292\u626F\u6298\u626E\u6295\u6293\u6291\u6286\u6539\u653B\u6538\u65F1\u66F4\u675F\u674E\u674F\u6750\u6751\u675C\u6756\u675E\u6749\u6746\u6760"], ["a840", "\u6753\u6757\u6B65\u6BCF\u6C42\u6C5E\u6C99\u6C81\u6C88\u6C89\u6C85\u6C9B\u6C6A\u6C7A\u6C90\u6C70\u6C8C\u6C68\u6C96\u6C92\u6C7D\u6C83\u6C72\u6C7E\u6C74\u6C86\u6C76\u6C8D\u6C94\u6C98\u6C82\u7076\u707C\u707D\u7078\u7262\u7261\u7260\u72C4\u72C2\u7396\u752C\u752B\u7537\u7538\u7682\u76EF\u77E3\u79C1\u79C0\u79BF\u7A76\u7CFB\u7F55\u8096\u8093\u809D\u8098\u809B\u809A\u80B2\u826F\u8292"], ["a8a1", "\u828B\u828D\u898B\u89D2\u8A00\u8C37\u8C46\u8C55\u8C9D\u8D64\u8D70\u8DB3\u8EAB\u8ECA\u8F9B\u8FB0\u8FC2\u8FC6\u8FC5\u8FC4\u5DE1\u9091\u90A2\u90AA\u90A6\u90A3\u9149\u91C6\u91CC\u9632\u962E\u9631\u962A\u962C\u4E26\u4E56\u4E73\u4E8B\u4E9B\u4E9E\u4EAB\u4EAC\u4F6F\u4F9D\u4F8D\u4F73\u4F7F\u4F6C\u4F9B\u4F8B\u4F86\u4F83\u4F70\u4F75\u4F88\u4F69\u4F7B\u4F96\u4F7E\u4F8F\u4F91\u4F7A\u5154\u5152\u5155\u5169\u5177\u5176\u5178\u51BD\u51FD\u523B\u5238\u5237\u523A\u5230\u522E\u5236\u5241\u52BE\u52BB\u5352\u5354\u5353\u5351\u5366\u5377\u5378\u5379\u53D6\u53D4\u53D7\u5473\u5475"], ["a940", "\u5496\u5478\u5495\u5480\u547B\u5477\u5484\u5492\u5486\u547C\u5490\u5471\u5476\u548C\u549A\u5462\u5468\u548B\u547D\u548E\u56FA\u5783\u5777\u576A\u5769\u5761\u5766\u5764\u577C\u591C\u5949\u5947\u5948\u5944\u5954\u59BE\u59BB\u59D4\u59B9\u59AE\u59D1\u59C6\u59D0\u59CD\u59CB\u59D3\u59CA\u59AF\u59B3\u59D2\u59C5\u5B5F\u5B64\u5B63\u5B97\u5B9A\u5B98\u5B9C\u5B99\u5B9B\u5C1A\u5C48\u5C45"], ["a9a1", "\u5C46\u5CB7\u5CA1\u5CB8\u5CA9\u5CAB\u5CB1\u5CB3\u5E18\u5E1A\u5E16\u5E15\u5E1B\u5E11\u5E78\u5E9A\u5E97\u5E9C\u5E95\u5E96\u5EF6\u5F26\u5F27\u5F29\u5F80\u5F81\u5F7F\u5F7C\u5FDD\u5FE0\u5FFD\u5FF5\u5FFF\u600F\u6014\u602F\u6035\u6016\u602A\u6015\u6021\u6027\u6029\u602B\u601B\u6216\u6215\u623F\u623E\u6240\u627F\u62C9\u62CC\u62C4\u62BF\u62C2\u62B9\u62D2\u62DB\u62AB\u62D3\u62D4\u62CB\u62C8\u62A8\u62BD\u62BC\u62D0\u62D9\u62C7\u62CD\u62B5\u62DA\u62B1\u62D8\u62D6\u62D7\u62C6\u62AC\u62CE\u653E\u65A7\u65BC\u65FA\u6614\u6613\u660C\u6606\u6602\u660E\u6600\u660F\u6615\u660A"], ["aa40", "\u6607\u670D\u670B\u676D\u678B\u6795\u6771\u679C\u6773\u6777\u6787\u679D\u6797\u676F\u6770\u677F\u6789\u677E\u6790\u6775\u679A\u6793\u677C\u676A\u6772\u6B23\u6B66\u6B67\u6B7F\u6C13\u6C1B\u6CE3\u6CE8\u6CF3\u6CB1\u6CCC\u6CE5\u6CB3\u6CBD\u6CBE\u6CBC\u6CE2\u6CAB\u6CD5\u6CD3\u6CB8\u6CC4\u6CB9\u6CC1\u6CAE\u6CD7\u6CC5\u6CF1\u6CBF\u6CBB\u6CE1\u6CDB\u6CCA\u6CAC\u6CEF\u6CDC\u6CD6\u6CE0"], ["aaa1", "\u7095\u708E\u7092\u708A\u7099\u722C\u722D\u7238\u7248\u7267\u7269\u72C0\u72CE\u72D9\u72D7\u72D0\u73A9\u73A8\u739F\u73AB\u73A5\u753D\u759D\u7599\u759A\u7684\u76C2\u76F2\u76F4\u77E5\u77FD\u793E\u7940\u7941\u79C9\u79C8\u7A7A\u7A79\u7AFA\u7CFE\u7F54\u7F8C\u7F8B\u8005\u80BA\u80A5\u80A2\u80B1\u80A1\u80AB\u80A9\u80B4\u80AA\u80AF\u81E5\u81FE\u820D\u82B3\u829D\u8299\u82AD\u82BD\u829F\u82B9\u82B1\u82AC\u82A5\u82AF\u82B8\u82A3\u82B0\u82BE\u82B7\u864E\u8671\u521D\u8868\u8ECB\u8FCE\u8FD4\u8FD1\u90B5\u90B8\u90B1\u90B6\u91C7\u91D1\u9577\u9580\u961C\u9640\u963F\u963B\u9644"], ["ab40", "\u9642\u96B9\u96E8\u9752\u975E\u4E9F\u4EAD\u4EAE\u4FE1\u4FB5\u4FAF\u4FBF\u4FE0\u4FD1\u4FCF\u4FDD\u4FC3\u4FB6\u4FD8\u4FDF\u4FCA\u4FD7\u4FAE\u4FD0\u4FC4\u4FC2\u4FDA\u4FCE\u4FDE\u4FB7\u5157\u5192\u5191\u51A0\u524E\u5243\u524A\u524D\u524C\u524B\u5247\u52C7\u52C9\u52C3\u52C1\u530D\u5357\u537B\u539A\u53DB\u54AC\u54C0\u54A8\u54CE\u54C9\u54B8\u54A6\u54B3\u54C7\u54C2\u54BD\u54AA\u54C1"], ["aba1", "\u54C4\u54C8\u54AF\u54AB\u54B1\u54BB\u54A9\u54A7\u54BF\u56FF\u5782\u578B\u57A0\u57A3\u57A2\u57CE\u57AE\u5793\u5955\u5951\u594F\u594E\u5950\u59DC\u59D8\u59FF\u59E3\u59E8\u5A03\u59E5\u59EA\u59DA\u59E6\u5A01\u59FB\u5B69\u5BA3\u5BA6\u5BA4\u5BA2\u5BA5\u5C01\u5C4E\u5C4F\u5C4D\u5C4B\u5CD9\u5CD2\u5DF7\u5E1D\u5E25\u5E1F\u5E7D\u5EA0\u5EA6\u5EFA\u5F08\u5F2D\u5F65\u5F88\u5F85\u5F8A\u5F8B\u5F87\u5F8C\u5F89\u6012\u601D\u6020\u6025\u600E\u6028\u604D\u6070\u6068\u6062\u6046\u6043\u606C\u606B\u606A\u6064\u6241\u62DC\u6316\u6309\u62FC\u62ED\u6301\u62EE\u62FD\u6307\u62F1\u62F7"], ["ac40", "\u62EF\u62EC\u62FE\u62F4\u6311\u6302\u653F\u6545\u65AB\u65BD\u65E2\u6625\u662D\u6620\u6627\u662F\u661F\u6628\u6631\u6624\u66F7\u67FF\u67D3\u67F1\u67D4\u67D0\u67EC\u67B6\u67AF\u67F5\u67E9\u67EF\u67C4\u67D1\u67B4\u67DA\u67E5\u67B8\u67CF\u67DE\u67F3\u67B0\u67D9\u67E2\u67DD\u67D2\u6B6A\u6B83\u6B86\u6BB5\u6BD2\u6BD7\u6C1F\u6CC9\u6D0B\u6D32\u6D2A\u6D41\u6D25\u6D0C\u6D31\u6D1E\u6D17"], ["aca1", "\u6D3B\u6D3D\u6D3E\u6D36\u6D1B\u6CF5\u6D39\u6D27\u6D38\u6D29\u6D2E\u6D35\u6D0E\u6D2B\u70AB\u70BA\u70B3\u70AC\u70AF\u70AD\u70B8\u70AE\u70A4\u7230\u7272\u726F\u7274\u72E9\u72E0\u72E1\u73B7\u73CA\u73BB\u73B2\u73CD\u73C0\u73B3\u751A\u752D\u754F\u754C\u754E\u754B\u75AB\u75A4\u75A5\u75A2\u75A3\u7678\u7686\u7687\u7688\u76C8\u76C6\u76C3\u76C5\u7701\u76F9\u76F8\u7709\u770B\u76FE\u76FC\u7707\u77DC\u7802\u7814\u780C\u780D\u7946\u7949\u7948\u7947\u79B9\u79BA\u79D1\u79D2\u79CB\u7A7F\u7A81\u7AFF\u7AFD\u7C7D\u7D02\u7D05\u7D00\u7D09\u7D07\u7D04\u7D06\u7F38\u7F8E\u7FBF\u8004"], ["ad40", "\u8010\u800D\u8011\u8036\u80D6\u80E5\u80DA\u80C3\u80C4\u80CC\u80E1\u80DB\u80CE\u80DE\u80E4\u80DD\u81F4\u8222\u82E7\u8303\u8305\u82E3\u82DB\u82E6\u8304\u82E5\u8302\u8309\u82D2\u82D7\u82F1\u8301\u82DC\u82D4\u82D1\u82DE\u82D3\u82DF\u82EF\u8306\u8650\u8679\u867B\u867A\u884D\u886B\u8981\u89D4\u8A08\u8A02\u8A03\u8C9E\u8CA0\u8D74\u8D73\u8DB4\u8ECD\u8ECC\u8FF0\u8FE6\u8FE2\u8FEA\u8FE5"], ["ada1", "\u8FED\u8FEB\u8FE4\u8FE8\u90CA\u90CE\u90C1\u90C3\u914B\u914A\u91CD\u9582\u9650\u964B\u964C\u964D\u9762\u9769\u97CB\u97ED\u97F3\u9801\u98A8\u98DB\u98DF\u9996\u9999\u4E58\u4EB3\u500C\u500D\u5023\u4FEF\u5026\u5025\u4FF8\u5029\u5016\u5006\u503C\u501F\u501A\u5012\u5011\u4FFA\u5000\u5014\u5028\u4FF1\u5021\u500B\u5019\u5018\u4FF3\u4FEE\u502D\u502A\u4FFE\u502B\u5009\u517C\u51A4\u51A5\u51A2\u51CD\u51CC\u51C6\u51CB\u5256\u525C\u5254\u525B\u525D\u532A\u537F\u539F\u539D\u53DF\u54E8\u5510\u5501\u5537\u54FC\u54E5\u54F2\u5506\u54FA\u5514\u54E9\u54ED\u54E1\u5509\u54EE\u54EA"], ["ae40", "\u54E6\u5527\u5507\u54FD\u550F\u5703\u5704\u57C2\u57D4\u57CB\u57C3\u5809\u590F\u5957\u5958\u595A\u5A11\u5A18\u5A1C\u5A1F\u5A1B\u5A13\u59EC\u5A20\u5A23\u5A29\u5A25\u5A0C\u5A09\u5B6B\u5C58\u5BB0\u5BB3\u5BB6\u5BB4\u5BAE\u5BB5\u5BB9\u5BB8\u5C04\u5C51\u5C55\u5C50\u5CED\u5CFD\u5CFB\u5CEA\u5CE8\u5CF0\u5CF6\u5D01\u5CF4\u5DEE\u5E2D\u5E2B\u5EAB\u5EAD\u5EA7\u5F31\u5F92\u5F91\u5F90\u6059"], ["aea1", "\u6063\u6065\u6050\u6055\u606D\u6069\u606F\u6084\u609F\u609A\u608D\u6094\u608C\u6085\u6096\u6247\u62F3\u6308\u62FF\u634E\u633E\u632F\u6355\u6342\u6346\u634F\u6349\u633A\u6350\u633D\u632A\u632B\u6328\u634D\u634C\u6548\u6549\u6599\u65C1\u65C5\u6642\u6649\u664F\u6643\u6652\u664C\u6645\u6641\u66F8\u6714\u6715\u6717\u6821\u6838\u6848\u6846\u6853\u6839\u6842\u6854\u6829\u68B3\u6817\u684C\u6851\u683D\u67F4\u6850\u6840\u683C\u6843\u682A\u6845\u6813\u6818\u6841\u6B8A\u6B89\u6BB7\u6C23\u6C27\u6C28\u6C26\u6C24\u6CF0\u6D6A\u6D95\u6D88\u6D87\u6D66\u6D78\u6D77\u6D59\u6D93"], ["af40", "\u6D6C\u6D89\u6D6E\u6D5A\u6D74\u6D69\u6D8C\u6D8A\u6D79\u6D85\u6D65\u6D94\u70CA\u70D8\u70E4\u70D9\u70C8\u70CF\u7239\u7279\u72FC\u72F9\u72FD\u72F8\u72F7\u7386\u73ED\u7409\u73EE\u73E0\u73EA\u73DE\u7554\u755D\u755C\u755A\u7559\u75BE\u75C5\u75C7\u75B2\u75B3\u75BD\u75BC\u75B9\u75C2\u75B8\u768B\u76B0\u76CA\u76CD\u76CE\u7729\u771F\u7720\u7728\u77E9\u7830\u7827\u7838\u781D\u7834\u7837"], ["afa1", "\u7825\u782D\u7820\u781F\u7832\u7955\u7950\u7960\u795F\u7956\u795E\u795D\u7957\u795A\u79E4\u79E3\u79E7\u79DF\u79E6\u79E9\u79D8\u7A84\u7A88\u7AD9\u7B06\u7B11\u7C89\u7D21\u7D17\u7D0B\u7D0A\u7D20\u7D22\u7D14\u7D10\u7D15\u7D1A\u7D1C\u7D0D\u7D19\u7D1B\u7F3A\u7F5F\u7F94\u7FC5\u7FC1\u8006\u8018\u8015\u8019\u8017\u803D\u803F\u80F1\u8102\u80F0\u8105\u80ED\u80F4\u8106\u80F8\u80F3\u8108\u80FD\u810A\u80FC\u80EF\u81ED\u81EC\u8200\u8210\u822A\u822B\u8228\u822C\u82BB\u832B\u8352\u8354\u834A\u8338\u8350\u8349\u8335\u8334\u834F\u8332\u8339\u8336\u8317\u8340\u8331\u8328\u8343"], ["b040", "\u8654\u868A\u86AA\u8693\u86A4\u86A9\u868C\u86A3\u869C\u8870\u8877\u8881\u8882\u887D\u8879\u8A18\u8A10\u8A0E\u8A0C\u8A15\u8A0A\u8A17\u8A13\u8A16\u8A0F\u8A11\u8C48\u8C7A\u8C79\u8CA1\u8CA2\u8D77\u8EAC\u8ED2\u8ED4\u8ECF\u8FB1\u9001\u9006\u8FF7\u9000\u8FFA\u8FF4\u9003\u8FFD\u9005\u8FF8\u9095\u90E1\u90DD\u90E2\u9152\u914D\u914C\u91D8\u91DD\u91D7\u91DC\u91D9\u9583\u9662\u9663\u9661"], ["b0a1", "\u965B\u965D\u9664\u9658\u965E\u96BB\u98E2\u99AC\u9AA8\u9AD8\u9B25\u9B32\u9B3C\u4E7E\u507A\u507D\u505C\u5047\u5043\u504C\u505A\u5049\u5065\u5076\u504E\u5055\u5075\u5074\u5077\u504F\u500F\u506F\u506D\u515C\u5195\u51F0\u526A\u526F\u52D2\u52D9\u52D8\u52D5\u5310\u530F\u5319\u533F\u5340\u533E\u53C3\u66FC\u5546\u556A\u5566\u5544\u555E\u5561\u5543\u554A\u5531\u5556\u554F\u5555\u552F\u5564\u5538\u552E\u555C\u552C\u5563\u5533\u5541\u5557\u5708\u570B\u5709\u57DF\u5805\u580A\u5806\u57E0\u57E4\u57FA\u5802\u5835\u57F7\u57F9\u5920\u5962\u5A36\u5A41\u5A49\u5A66\u5A6A\u5A40"], ["b140", "\u5A3C\u5A62\u5A5A\u5A46\u5A4A\u5B70\u5BC7\u5BC5\u5BC4\u5BC2\u5BBF\u5BC6\u5C09\u5C08\u5C07\u5C60\u5C5C\u5C5D\u5D07\u5D06\u5D0E\u5D1B\u5D16\u5D22\u5D11\u5D29\u5D14\u5D19\u5D24\u5D27\u5D17\u5DE2\u5E38\u5E36\u5E33\u5E37\u5EB7\u5EB8\u5EB6\u5EB5\u5EBE\u5F35\u5F37\u5F57\u5F6C\u5F69\u5F6B\u5F97\u5F99\u5F9E\u5F98\u5FA1\u5FA0\u5F9C\u607F\u60A3\u6089\u60A0\u60A8\u60CB\u60B4\u60E6\u60BD"], ["b1a1", "\u60C5\u60BB\u60B5\u60DC\u60BC\u60D8\u60D5\u60C6\u60DF\u60B8\u60DA\u60C7\u621A\u621B\u6248\u63A0\u63A7\u6372\u6396\u63A2\u63A5\u6377\u6367\u6398\u63AA\u6371\u63A9\u6389\u6383\u639B\u636B\u63A8\u6384\u6388\u6399\u63A1\u63AC\u6392\u638F\u6380\u637B\u6369\u6368\u637A\u655D\u6556\u6551\u6559\u6557\u555F\u654F\u6558\u6555\u6554\u659C\u659B\u65AC\u65CF\u65CB\u65CC\u65CE\u665D\u665A\u6664\u6668\u6666\u665E\u66F9\u52D7\u671B\u6881\u68AF\u68A2\u6893\u68B5\u687F\u6876\u68B1\u68A7\u6897\u68B0\u6883\u68C4\u68AD\u6886\u6885\u6894\u689D\u68A8\u689F\u68A1\u6882\u6B32\u6BBA"], ["b240", "\u6BEB\u6BEC\u6C2B\u6D8E\u6DBC\u6DF3\u6DD9\u6DB2\u6DE1\u6DCC\u6DE4\u6DFB\u6DFA\u6E05\u6DC7\u6DCB\u6DAF\u6DD1\u6DAE\u6DDE\u6DF9\u6DB8\u6DF7\u6DF5\u6DC5\u6DD2\u6E1A\u6DB5\u6DDA\u6DEB\u6DD8\u6DEA\u6DF1\u6DEE\u6DE8\u6DC6\u6DC4\u6DAA\u6DEC\u6DBF\u6DE6\u70F9\u7109\u710A\u70FD\u70EF\u723D\u727D\u7281\u731C\u731B\u7316\u7313\u7319\u7387\u7405\u740A\u7403\u7406\u73FE\u740D\u74E0\u74F6"], ["b2a1", "\u74F7\u751C\u7522\u7565\u7566\u7562\u7570\u758F\u75D4\u75D5\u75B5\u75CA\u75CD\u768E\u76D4\u76D2\u76DB\u7737\u773E\u773C\u7736\u7738\u773A\u786B\u7843\u784E\u7965\u7968\u796D\u79FB\u7A92\u7A95\u7B20\u7B28\u7B1B\u7B2C\u7B26\u7B19\u7B1E\u7B2E\u7C92\u7C97\u7C95\u7D46\u7D43\u7D71\u7D2E\u7D39\u7D3C\u7D40\u7D30\u7D33\u7D44\u7D2F\u7D42\u7D32\u7D31\u7F3D\u7F9E\u7F9A\u7FCC\u7FCE\u7FD2\u801C\u804A\u8046\u812F\u8116\u8123\u812B\u8129\u8130\u8124\u8202\u8235\u8237\u8236\u8239\u838E\u839E\u8398\u8378\u83A2\u8396\u83BD\u83AB\u8392\u838A\u8393\u8389\u83A0\u8377\u837B\u837C"], ["b340", "\u8386\u83A7\u8655\u5F6A\u86C7\u86C0\u86B6\u86C4\u86B5\u86C6\u86CB\u86B1\u86AF\u86C9\u8853\u889E\u8888\u88AB\u8892\u8896\u888D\u888B\u8993\u898F\u8A2A\u8A1D\u8A23\u8A25\u8A31\u8A2D\u8A1F\u8A1B\u8A22\u8C49\u8C5A\u8CA9\u8CAC\u8CAB\u8CA8\u8CAA\u8CA7\u8D67\u8D66\u8DBE\u8DBA\u8EDB\u8EDF\u9019\u900D\u901A\u9017\u9023\u901F\u901D\u9010\u9015\u901E\u9020\u900F\u9022\u9016\u901B\u9014"], ["b3a1", "\u90E8\u90ED\u90FD\u9157\u91CE\u91F5\u91E6\u91E3\u91E7\u91ED\u91E9\u9589\u966A\u9675\u9673\u9678\u9670\u9674\u9676\u9677\u966C\u96C0\u96EA\u96E9\u7AE0\u7ADF\u9802\u9803\u9B5A\u9CE5\u9E75\u9E7F\u9EA5\u9EBB\u50A2\u508D\u5085\u5099\u5091\u5080\u5096\u5098\u509A\u6700\u51F1\u5272\u5274\u5275\u5269\u52DE\u52DD\u52DB\u535A\u53A5\u557B\u5580\u55A7\u557C\u558A\u559D\u5598\u5582\u559C\u55AA\u5594\u5587\u558B\u5583\u55B3\u55AE\u559F\u553E\u55B2\u559A\u55BB\u55AC\u55B1\u557E\u5589\u55AB\u5599\u570D\u582F\u582A\u5834\u5824\u5830\u5831\u5821\u581D\u5820\u58F9\u58FA\u5960"], ["b440", "\u5A77\u5A9A\u5A7F\u5A92\u5A9B\u5AA7\u5B73\u5B71\u5BD2\u5BCC\u5BD3\u5BD0\u5C0A\u5C0B\u5C31\u5D4C\u5D50\u5D34\u5D47\u5DFD\u5E45\u5E3D\u5E40\u5E43\u5E7E\u5ECA\u5EC1\u5EC2\u5EC4\u5F3C\u5F6D\u5FA9\u5FAA\u5FA8\u60D1\u60E1\u60B2\u60B6\u60E0\u611C\u6123\u60FA\u6115\u60F0\u60FB\u60F4\u6168\u60F1\u610E\u60F6\u6109\u6100\u6112\u621F\u6249\u63A3\u638C\u63CF\u63C0\u63E9\u63C9\u63C6\u63CD"], ["b4a1", "\u63D2\u63E3\u63D0\u63E1\u63D6\u63ED\u63EE\u6376\u63F4\u63EA\u63DB\u6452\u63DA\u63F9\u655E\u6566\u6562\u6563\u6591\u6590\u65AF\u666E\u6670\u6674\u6676\u666F\u6691\u667A\u667E\u6677\u66FE\u66FF\u671F\u671D\u68FA\u68D5\u68E0\u68D8\u68D7\u6905\u68DF\u68F5\u68EE\u68E7\u68F9\u68D2\u68F2\u68E3\u68CB\u68CD\u690D\u6912\u690E\u68C9\u68DA\u696E\u68FB\u6B3E\u6B3A\u6B3D\u6B98\u6B96\u6BBC\u6BEF\u6C2E\u6C2F\u6C2C\u6E2F\u6E38\u6E54\u6E21\u6E32\u6E67\u6E4A\u6E20\u6E25\u6E23\u6E1B\u6E5B\u6E58\u6E24\u6E56\u6E6E\u6E2D\u6E26\u6E6F\u6E34\u6E4D\u6E3A\u6E2C\u6E43\u6E1D\u6E3E\u6ECB"], ["b540", "\u6E89\u6E19\u6E4E\u6E63\u6E44\u6E72\u6E69\u6E5F\u7119\u711A\u7126\u7130\u7121\u7136\u716E\u711C\u724C\u7284\u7280\u7336\u7325\u7334\u7329\u743A\u742A\u7433\u7422\u7425\u7435\u7436\u7434\u742F\u741B\u7426\u7428\u7525\u7526\u756B\u756A\u75E2\u75DB\u75E3\u75D9\u75D8\u75DE\u75E0\u767B\u767C\u7696\u7693\u76B4\u76DC\u774F\u77ED\u785D\u786C\u786F\u7A0D\u7A08\u7A0B\u7A05\u7A00\u7A98"], ["b5a1", "\u7A97\u7A96\u7AE5\u7AE3\u7B49\u7B56\u7B46\u7B50\u7B52\u7B54\u7B4D\u7B4B\u7B4F\u7B51\u7C9F\u7CA5\u7D5E\u7D50\u7D68\u7D55\u7D2B\u7D6E\u7D72\u7D61\u7D66\u7D62\u7D70\u7D73\u5584\u7FD4\u7FD5\u800B\u8052\u8085\u8155\u8154\u814B\u8151\u814E\u8139\u8146\u813E\u814C\u8153\u8174\u8212\u821C\u83E9\u8403\u83F8\u840D\u83E0\u83C5\u840B\u83C1\u83EF\u83F1\u83F4\u8457\u840A\u83F0\u840C\u83CC\u83FD\u83F2\u83CA\u8438\u840E\u8404\u83DC\u8407\u83D4\u83DF\u865B\u86DF\u86D9\u86ED\u86D4\u86DB\u86E4\u86D0\u86DE\u8857\u88C1\u88C2\u88B1\u8983\u8996\u8A3B\u8A60\u8A55\u8A5E\u8A3C\u8A41"], ["b640", "\u8A54\u8A5B\u8A50\u8A46\u8A34\u8A3A\u8A36\u8A56\u8C61\u8C82\u8CAF\u8CBC\u8CB3\u8CBD\u8CC1\u8CBB\u8CC0\u8CB4\u8CB7\u8CB6\u8CBF\u8CB8\u8D8A\u8D85\u8D81\u8DCE\u8DDD\u8DCB\u8DDA\u8DD1\u8DCC\u8DDB\u8DC6\u8EFB\u8EF8\u8EFC\u8F9C\u902E\u9035\u9031\u9038\u9032\u9036\u9102\u90F5\u9109\u90FE\u9163\u9165\u91CF\u9214\u9215\u9223\u9209\u921E\u920D\u9210\u9207\u9211\u9594\u958F\u958B\u9591"], ["b6a1", "\u9593\u9592\u958E\u968A\u968E\u968B\u967D\u9685\u9686\u968D\u9672\u9684\u96C1\u96C5\u96C4\u96C6\u96C7\u96EF\u96F2\u97CC\u9805\u9806\u9808\u98E7\u98EA\u98EF\u98E9\u98F2\u98ED\u99AE\u99AD\u9EC3\u9ECD\u9ED1\u4E82\u50AD\u50B5\u50B2\u50B3\u50C5\u50BE\u50AC\u50B7\u50BB\u50AF\u50C7\u527F\u5277\u527D\u52DF\u52E6\u52E4\u52E2\u52E3\u532F\u55DF\u55E8\u55D3\u55E6\u55CE\u55DC\u55C7\u55D1\u55E3\u55E4\u55EF\u55DA\u55E1\u55C5\u55C6\u55E5\u55C9\u5712\u5713\u585E\u5851\u5858\u5857\u585A\u5854\u586B\u584C\u586D\u584A\u5862\u5852\u584B\u5967\u5AC1\u5AC9\u5ACC\u5ABE\u5ABD\u5ABC"], ["b740", "\u5AB3\u5AC2\u5AB2\u5D69\u5D6F\u5E4C\u5E79\u5EC9\u5EC8\u5F12\u5F59\u5FAC\u5FAE\u611A\u610F\u6148\u611F\u60F3\u611B\u60F9\u6101\u6108\u614E\u614C\u6144\u614D\u613E\u6134\u6127\u610D\u6106\u6137\u6221\u6222\u6413\u643E\u641E\u642A\u642D\u643D\u642C\u640F\u641C\u6414\u640D\u6436\u6416\u6417\u6406\u656C\u659F\u65B0\u6697\u6689\u6687\u6688\u6696\u6684\u6698\u668D\u6703\u6994\u696D"], ["b7a1", "\u695A\u6977\u6960\u6954\u6975\u6930\u6982\u694A\u6968\u696B\u695E\u6953\u6979\u6986\u695D\u6963\u695B\u6B47\u6B72\u6BC0\u6BBF\u6BD3\u6BFD\u6EA2\u6EAF\u6ED3\u6EB6\u6EC2\u6E90\u6E9D\u6EC7\u6EC5\u6EA5\u6E98\u6EBC\u6EBA\u6EAB\u6ED1\u6E96\u6E9C\u6EC4\u6ED4\u6EAA\u6EA7\u6EB4\u714E\u7159\u7169\u7164\u7149\u7167\u715C\u716C\u7166\u714C\u7165\u715E\u7146\u7168\u7156\u723A\u7252\u7337\u7345\u733F\u733E\u746F\u745A\u7455\u745F\u745E\u7441\u743F\u7459\u745B\u745C\u7576\u7578\u7600\u75F0\u7601\u75F2\u75F1\u75FA\u75FF\u75F4\u75F3\u76DE\u76DF\u775B\u776B\u7766\u775E\u7763"], ["b840", "\u7779\u776A\u776C\u775C\u7765\u7768\u7762\u77EE\u788E\u78B0\u7897\u7898\u788C\u7889\u787C\u7891\u7893\u787F\u797A\u797F\u7981\u842C\u79BD\u7A1C\u7A1A\u7A20\u7A14\u7A1F\u7A1E\u7A9F\u7AA0\u7B77\u7BC0\u7B60\u7B6E\u7B67\u7CB1\u7CB3\u7CB5\u7D93\u7D79\u7D91\u7D81\u7D8F\u7D5B\u7F6E\u7F69\u7F6A\u7F72\u7FA9\u7FA8\u7FA4\u8056\u8058\u8086\u8084\u8171\u8170\u8178\u8165\u816E\u8173\u816B"], ["b8a1", "\u8179\u817A\u8166\u8205\u8247\u8482\u8477\u843D\u8431\u8475\u8466\u846B\u8449\u846C\u845B\u843C\u8435\u8461\u8463\u8469\u846D\u8446\u865E\u865C\u865F\u86F9\u8713\u8708\u8707\u8700\u86FE\u86FB\u8702\u8703\u8706\u870A\u8859\u88DF\u88D4\u88D9\u88DC\u88D8\u88DD\u88E1\u88CA\u88D5\u88D2\u899C\u89E3\u8A6B\u8A72\u8A73\u8A66\u8A69\u8A70\u8A87\u8A7C\u8A63\u8AA0\u8A71\u8A85\u8A6D\u8A62\u8A6E\u8A6C\u8A79\u8A7B\u8A3E\u8A68\u8C62\u8C8A\u8C89\u8CCA\u8CC7\u8CC8\u8CC4\u8CB2\u8CC3\u8CC2\u8CC5\u8DE1\u8DDF\u8DE8\u8DEF\u8DF3\u8DFA\u8DEA\u8DE4\u8DE6\u8EB2\u8F03\u8F09\u8EFE\u8F0A"], ["b940", "\u8F9F\u8FB2\u904B\u904A\u9053\u9042\u9054\u903C\u9055\u9050\u9047\u904F\u904E\u904D\u9051\u903E\u9041\u9112\u9117\u916C\u916A\u9169\u91C9\u9237\u9257\u9238\u923D\u9240\u923E\u925B\u924B\u9264\u9251\u9234\u9249\u924D\u9245\u9239\u923F\u925A\u9598\u9698\u9694\u9695\u96CD\u96CB\u96C9\u96CA\u96F7\u96FB\u96F9\u96F6\u9756\u9774\u9776\u9810\u9811\u9813\u980A\u9812\u980C\u98FC\u98F4"], ["b9a1", "\u98FD\u98FE\u99B3\u99B1\u99B4\u9AE1\u9CE9\u9E82\u9F0E\u9F13\u9F20\u50E7\u50EE\u50E5\u50D6\u50ED\u50DA\u50D5\u50CF\u50D1\u50F1\u50CE\u50E9\u5162\u51F3\u5283\u5282\u5331\u53AD\u55FE\u5600\u561B\u5617\u55FD\u5614\u5606\u5609\u560D\u560E\u55F7\u5616\u561F\u5608\u5610\u55F6\u5718\u5716\u5875\u587E\u5883\u5893\u588A\u5879\u5885\u587D\u58FD\u5925\u5922\u5924\u596A\u5969\u5AE1\u5AE6\u5AE9\u5AD7\u5AD6\u5AD8\u5AE3\u5B75\u5BDE\u5BE7\u5BE1\u5BE5\u5BE6\u5BE8\u5BE2\u5BE4\u5BDF\u5C0D\u5C62\u5D84\u5D87\u5E5B\u5E63\u5E55\u5E57\u5E54\u5ED3\u5ED6\u5F0A\u5F46\u5F70\u5FB9\u6147"], ["ba40", "\u613F\u614B\u6177\u6162\u6163\u615F\u615A\u6158\u6175\u622A\u6487\u6458\u6454\u64A4\u6478\u645F\u647A\u6451\u6467\u6434\u646D\u647B\u6572\u65A1\u65D7\u65D6\u66A2\u66A8\u669D\u699C\u69A8\u6995\u69C1\u69AE\u69D3\u69CB\u699B\u69B7\u69BB\u69AB\u69B4\u69D0\u69CD\u69AD\u69CC\u69A6\u69C3\u69A3\u6B49\u6B4C\u6C33\u6F33\u6F14\u6EFE\u6F13\u6EF4\u6F29\u6F3E\u6F20\u6F2C\u6F0F\u6F02\u6F22"], ["baa1", "\u6EFF\u6EEF\u6F06\u6F31\u6F38\u6F32\u6F23\u6F15\u6F2B\u6F2F\u6F88\u6F2A\u6EEC\u6F01\u6EF2\u6ECC\u6EF7\u7194\u7199\u717D\u718A\u7184\u7192\u723E\u7292\u7296\u7344\u7350\u7464\u7463\u746A\u7470\u746D\u7504\u7591\u7627\u760D\u760B\u7609\u7613\u76E1\u76E3\u7784\u777D\u777F\u7761\u78C1\u789F\u78A7\u78B3\u78A9\u78A3\u798E\u798F\u798D\u7A2E\u7A31\u7AAA\u7AA9\u7AED\u7AEF\u7BA1\u7B95\u7B8B\u7B75\u7B97\u7B9D\u7B94\u7B8F\u7BB8\u7B87\u7B84\u7CB9\u7CBD\u7CBE\u7DBB\u7DB0\u7D9C\u7DBD\u7DBE\u7DA0\u7DCA\u7DB4\u7DB2\u7DB1\u7DBA\u7DA2\u7DBF\u7DB5\u7DB8\u7DAD\u7DD2\u7DC7\u7DAC"], ["bb40", "\u7F70\u7FE0\u7FE1\u7FDF\u805E\u805A\u8087\u8150\u8180\u818F\u8188\u818A\u817F\u8182\u81E7\u81FA\u8207\u8214\u821E\u824B\u84C9\u84BF\u84C6\u84C4\u8499\u849E\u84B2\u849C\u84CB\u84B8\u84C0\u84D3\u8490\u84BC\u84D1\u84CA\u873F\u871C\u873B\u8722\u8725\u8734\u8718\u8755\u8737\u8729\u88F3\u8902\u88F4\u88F9\u88F8\u88FD\u88E8\u891A\u88EF\u8AA6\u8A8C\u8A9E\u8AA3\u8A8D\u8AA1\u8A93\u8AA4"], ["bba1", "\u8AAA\u8AA5\u8AA8\u8A98\u8A91\u8A9A\u8AA7\u8C6A\u8C8D\u8C8C\u8CD3\u8CD1\u8CD2\u8D6B\u8D99\u8D95\u8DFC\u8F14\u8F12\u8F15\u8F13\u8FA3\u9060\u9058\u905C\u9063\u9059\u905E\u9062\u905D\u905B\u9119\u9118\u911E\u9175\u9178\u9177\u9174\u9278\u9280\u9285\u9298\u9296\u927B\u9293\u929C\u92A8\u927C\u9291\u95A1\u95A8\u95A9\u95A3\u95A5\u95A4\u9699\u969C\u969B\u96CC\u96D2\u9700\u977C\u9785\u97F6\u9817\u9818\u98AF\u98B1\u9903\u9905\u990C\u9909\u99C1\u9AAF\u9AB0\u9AE6\u9B41\u9B42\u9CF4\u9CF6\u9CF3\u9EBC\u9F3B\u9F4A\u5104\u5100\u50FB\u50F5\u50F9\u5102\u5108\u5109\u5105\u51DC"], ["bc40", "\u5287\u5288\u5289\u528D\u528A\u52F0\u53B2\u562E\u563B\u5639\u5632\u563F\u5634\u5629\u5653\u564E\u5657\u5674\u5636\u562F\u5630\u5880\u589F\u589E\u58B3\u589C\u58AE\u58A9\u58A6\u596D\u5B09\u5AFB\u5B0B\u5AF5\u5B0C\u5B08\u5BEE\u5BEC\u5BE9\u5BEB\u5C64\u5C65\u5D9D\u5D94\u5E62\u5E5F\u5E61\u5EE2\u5EDA\u5EDF\u5EDD\u5EE3\u5EE0\u5F48\u5F71\u5FB7\u5FB5\u6176\u6167\u616E\u615D\u6155\u6182"], ["bca1", "\u617C\u6170\u616B\u617E\u61A7\u6190\u61AB\u618E\u61AC\u619A\u61A4\u6194\u61AE\u622E\u6469\u646F\u6479\u649E\u64B2\u6488\u6490\u64B0\u64A5\u6493\u6495\u64A9\u6492\u64AE\u64AD\u64AB\u649A\u64AC\u6499\u64A2\u64B3\u6575\u6577\u6578\u66AE\u66AB\u66B4\u66B1\u6A23\u6A1F\u69E8\u6A01\u6A1E\u6A19\u69FD\u6A21\u6A13\u6A0A\u69F3\u6A02\u6A05\u69ED\u6A11\u6B50\u6B4E\u6BA4\u6BC5\u6BC6\u6F3F\u6F7C\u6F84\u6F51\u6F66\u6F54\u6F86\u6F6D\u6F5B\u6F78\u6F6E\u6F8E\u6F7A\u6F70\u6F64\u6F97\u6F58\u6ED5\u6F6F\u6F60\u6F5F\u719F\u71AC\u71B1\u71A8\u7256\u729B\u734E\u7357\u7469\u748B\u7483"], ["bd40", "\u747E\u7480\u757F\u7620\u7629\u761F\u7624\u7626\u7621\u7622\u769A\u76BA\u76E4\u778E\u7787\u778C\u7791\u778B\u78CB\u78C5\u78BA\u78CA\u78BE\u78D5\u78BC\u78D0\u7A3F\u7A3C\u7A40\u7A3D\u7A37\u7A3B\u7AAF\u7AAE\u7BAD\u7BB1\u7BC4\u7BB4\u7BC6\u7BC7\u7BC1\u7BA0\u7BCC\u7CCA\u7DE0\u7DF4\u7DEF\u7DFB\u7DD8\u7DEC\u7DDD\u7DE8\u7DE3\u7DDA\u7DDE\u7DE9\u7D9E\u7DD9\u7DF2\u7DF9\u7F75\u7F77\u7FAF"], ["bda1", "\u7FE9\u8026\u819B\u819C\u819D\u81A0\u819A\u8198\u8517\u853D\u851A\u84EE\u852C\u852D\u8513\u8511\u8523\u8521\u8514\u84EC\u8525\u84FF\u8506\u8782\u8774\u8776\u8760\u8766\u8778\u8768\u8759\u8757\u874C\u8753\u885B\u885D\u8910\u8907\u8912\u8913\u8915\u890A\u8ABC\u8AD2\u8AC7\u8AC4\u8A95\u8ACB\u8AF8\u8AB2\u8AC9\u8AC2\u8ABF\u8AB0\u8AD6\u8ACD\u8AB6\u8AB9\u8ADB\u8C4C\u8C4E\u8C6C\u8CE0\u8CDE\u8CE6\u8CE4\u8CEC\u8CED\u8CE2\u8CE3\u8CDC\u8CEA\u8CE1\u8D6D\u8D9F\u8DA3\u8E2B\u8E10\u8E1D\u8E22\u8E0F\u8E29\u8E1F\u8E21\u8E1E\u8EBA\u8F1D\u8F1B\u8F1F\u8F29\u8F26\u8F2A\u8F1C\u8F1E"], ["be40", "\u8F25\u9069\u906E\u9068\u906D\u9077\u9130\u912D\u9127\u9131\u9187\u9189\u918B\u9183\u92C5\u92BB\u92B7\u92EA\u92AC\u92E4\u92C1\u92B3\u92BC\u92D2\u92C7\u92F0\u92B2\u95AD\u95B1\u9704\u9706\u9707\u9709\u9760\u978D\u978B\u978F\u9821\u982B\u981C\u98B3\u990A\u9913\u9912\u9918\u99DD\u99D0\u99DF\u99DB\u99D1\u99D5\u99D2\u99D9\u9AB7\u9AEE\u9AEF\u9B27\u9B45\u9B44\u9B77\u9B6F\u9D06\u9D09"], ["bea1", "\u9D03\u9EA9\u9EBE\u9ECE\u58A8\u9F52\u5112\u5118\u5114\u5110\u5115\u5180\u51AA\u51DD\u5291\u5293\u52F3\u5659\u566B\u5679\u5669\u5664\u5678\u566A\u5668\u5665\u5671\u566F\u566C\u5662\u5676\u58C1\u58BE\u58C7\u58C5\u596E\u5B1D\u5B34\u5B78\u5BF0\u5C0E\u5F4A\u61B2\u6191\u61A9\u618A\u61CD\u61B6\u61BE\u61CA\u61C8\u6230\u64C5\u64C1\u64CB\u64BB\u64BC\u64DA\u64C4\u64C7\u64C2\u64CD\u64BF\u64D2\u64D4\u64BE\u6574\u66C6\u66C9\u66B9\u66C4\u66C7\u66B8\u6A3D\u6A38\u6A3A\u6A59\u6A6B\u6A58\u6A39\u6A44\u6A62\u6A61\u6A4B\u6A47\u6A35\u6A5F\u6A48\u6B59\u6B77\u6C05\u6FC2\u6FB1\u6FA1"], ["bf40", "\u6FC3\u6FA4\u6FC1\u6FA7\u6FB3\u6FC0\u6FB9\u6FB6\u6FA6\u6FA0\u6FB4\u71BE\u71C9\u71D0\u71D2\u71C8\u71D5\u71B9\u71CE\u71D9\u71DC\u71C3\u71C4\u7368\u749C\u74A3\u7498\u749F\u749E\u74E2\u750C\u750D\u7634\u7638\u763A\u76E7\u76E5\u77A0\u779E\u779F\u77A5\u78E8\u78DA\u78EC\u78E7\u79A6\u7A4D\u7A4E\u7A46\u7A4C\u7A4B\u7ABA\u7BD9\u7C11\u7BC9\u7BE4\u7BDB\u7BE1\u7BE9\u7BE6\u7CD5\u7CD6\u7E0A"], ["bfa1", "\u7E11\u7E08\u7E1B\u7E23\u7E1E\u7E1D\u7E09\u7E10\u7F79\u7FB2\u7FF0\u7FF1\u7FEE\u8028\u81B3\u81A9\u81A8\u81FB\u8208\u8258\u8259\u854A\u8559\u8548\u8568\u8569\u8543\u8549\u856D\u856A\u855E\u8783\u879F\u879E\u87A2\u878D\u8861\u892A\u8932\u8925\u892B\u8921\u89AA\u89A6\u8AE6\u8AFA\u8AEB\u8AF1\u8B00\u8ADC\u8AE7\u8AEE\u8AFE\u8B01\u8B02\u8AF7\u8AED\u8AF3\u8AF6\u8AFC\u8C6B\u8C6D\u8C93\u8CF4\u8E44\u8E31\u8E34\u8E42\u8E39\u8E35\u8F3B\u8F2F\u8F38\u8F33\u8FA8\u8FA6\u9075\u9074\u9078\u9072\u907C\u907A\u9134\u9192\u9320\u9336\u92F8\u9333\u932F\u9322\u92FC\u932B\u9304\u931A"], ["c040", "\u9310\u9326\u9321\u9315\u932E\u9319\u95BB\u96A7\u96A8\u96AA\u96D5\u970E\u9711\u9716\u970D\u9713\u970F\u975B\u975C\u9766\u9798\u9830\u9838\u983B\u9837\u982D\u9839\u9824\u9910\u9928\u991E\u991B\u9921\u991A\u99ED\u99E2\u99F1\u9AB8\u9ABC\u9AFB\u9AED\u9B28\u9B91\u9D15\u9D23\u9D26\u9D28\u9D12\u9D1B\u9ED8\u9ED4\u9F8D\u9F9C\u512A\u511F\u5121\u5132\u52F5\u568E\u5680\u5690\u5685\u5687"], ["c0a1", "\u568F\u58D5\u58D3\u58D1\u58CE\u5B30\u5B2A\u5B24\u5B7A\u5C37\u5C68\u5DBC\u5DBA\u5DBD\u5DB8\u5E6B\u5F4C\u5FBD\u61C9\u61C2\u61C7\u61E6\u61CB\u6232\u6234\u64CE\u64CA\u64D8\u64E0\u64F0\u64E6\u64EC\u64F1\u64E2\u64ED\u6582\u6583\u66D9\u66D6\u6A80\u6A94\u6A84\u6AA2\u6A9C\u6ADB\u6AA3\u6A7E\u6A97\u6A90\u6AA0\u6B5C\u6BAE\u6BDA\u6C08\u6FD8\u6FF1\u6FDF\u6FE0\u6FDB\u6FE4\u6FEB\u6FEF\u6F80\u6FEC\u6FE1\u6FE9\u6FD5\u6FEE\u6FF0\u71E7\u71DF\u71EE\u71E6\u71E5\u71ED\u71EC\u71F4\u71E0\u7235\u7246\u7370\u7372\u74A9\u74B0\u74A6\u74A8\u7646\u7642\u764C\u76EA\u77B3\u77AA\u77B0\u77AC"], ["c140", "\u77A7\u77AD\u77EF\u78F7\u78FA\u78F4\u78EF\u7901\u79A7\u79AA\u7A57\u7ABF\u7C07\u7C0D\u7BFE\u7BF7\u7C0C\u7BE0\u7CE0\u7CDC\u7CDE\u7CE2\u7CDF\u7CD9\u7CDD\u7E2E\u7E3E\u7E46\u7E37\u7E32\u7E43\u7E2B\u7E3D\u7E31\u7E45\u7E41\u7E34\u7E39\u7E48\u7E35\u7E3F\u7E2F\u7F44\u7FF3\u7FFC\u8071\u8072\u8070\u806F\u8073\u81C6\u81C3\u81BA\u81C2\u81C0\u81BF\u81BD\u81C9\u81BE\u81E8\u8209\u8271\u85AA"], ["c1a1", "\u8584\u857E\u859C\u8591\u8594\u85AF\u859B\u8587\u85A8\u858A\u8667\u87C0\u87D1\u87B3\u87D2\u87C6\u87AB\u87BB\u87BA\u87C8\u87CB\u893B\u8936\u8944\u8938\u893D\u89AC\u8B0E\u8B17\u8B19\u8B1B\u8B0A\u8B20\u8B1D\u8B04\u8B10\u8C41\u8C3F\u8C73\u8CFA\u8CFD\u8CFC\u8CF8\u8CFB\u8DA8\u8E49\u8E4B\u8E48\u8E4A\u8F44\u8F3E\u8F42\u8F45\u8F3F\u907F\u907D\u9084\u9081\u9082\u9080\u9139\u91A3\u919E\u919C\u934D\u9382\u9328\u9375\u934A\u9365\u934B\u9318\u937E\u936C\u935B\u9370\u935A\u9354\u95CA\u95CB\u95CC\u95C8\u95C6\u96B1\u96B8\u96D6\u971C\u971E\u97A0\u97D3\u9846\u98B6\u9935\u9A01"], ["c240", "\u99FF\u9BAE\u9BAB\u9BAA\u9BAD\u9D3B\u9D3F\u9E8B\u9ECF\u9EDE\u9EDC\u9EDD\u9EDB\u9F3E\u9F4B\u53E2\u5695\u56AE\u58D9\u58D8\u5B38\u5F5D\u61E3\u6233\u64F4\u64F2\u64FE\u6506\u64FA\u64FB\u64F7\u65B7\u66DC\u6726\u6AB3\u6AAC\u6AC3\u6ABB\u6AB8\u6AC2\u6AAE\u6AAF\u6B5F\u6B78\u6BAF\u7009\u700B\u6FFE\u7006\u6FFA\u7011\u700F\u71FB\u71FC\u71FE\u71F8\u7377\u7375\u74A7\u74BF\u7515\u7656\u7658"], ["c2a1", "\u7652\u77BD\u77BF\u77BB\u77BC\u790E\u79AE\u7A61\u7A62\u7A60\u7AC4\u7AC5\u7C2B\u7C27\u7C2A\u7C1E\u7C23\u7C21\u7CE7\u7E54\u7E55\u7E5E\u7E5A\u7E61\u7E52\u7E59\u7F48\u7FF9\u7FFB\u8077\u8076\u81CD\u81CF\u820A\u85CF\u85A9\u85CD\u85D0\u85C9\u85B0\u85BA\u85B9\u85A6\u87EF\u87EC\u87F2\u87E0\u8986\u89B2\u89F4\u8B28\u8B39\u8B2C\u8B2B\u8C50\u8D05\u8E59\u8E63\u8E66\u8E64\u8E5F\u8E55\u8EC0\u8F49\u8F4D\u9087\u9083\u9088\u91AB\u91AC\u91D0\u9394\u938A\u9396\u93A2\u93B3\u93AE\u93AC\u93B0\u9398\u939A\u9397\u95D4\u95D6\u95D0\u95D5\u96E2\u96DC\u96D9\u96DB\u96DE\u9724\u97A3\u97A6"], ["c340", "\u97AD\u97F9\u984D\u984F\u984C\u984E\u9853\u98BA\u993E\u993F\u993D\u992E\u99A5\u9A0E\u9AC1\u9B03\u9B06\u9B4F\u9B4E\u9B4D\u9BCA\u9BC9\u9BFD\u9BC8\u9BC0\u9D51\u9D5D\u9D60\u9EE0\u9F15\u9F2C\u5133\u56A5\u58DE\u58DF\u58E2\u5BF5\u9F90\u5EEC\u61F2\u61F7\u61F6\u61F5\u6500\u650F\u66E0\u66DD\u6AE5\u6ADD\u6ADA\u6AD3\u701B\u701F\u7028\u701A\u701D\u7015\u7018\u7206\u720D\u7258\u72A2\u7378"], ["c3a1", "\u737A\u74BD\u74CA\u74E3\u7587\u7586\u765F\u7661\u77C7\u7919\u79B1\u7A6B\u7A69\u7C3E\u7C3F\u7C38\u7C3D\u7C37\u7C40\u7E6B\u7E6D\u7E79\u7E69\u7E6A\u7F85\u7E73\u7FB6\u7FB9\u7FB8\u81D8\u85E9\u85DD\u85EA\u85D5\u85E4\u85E5\u85F7\u87FB\u8805\u880D\u87F9\u87FE\u8960\u895F\u8956\u895E\u8B41\u8B5C\u8B58\u8B49\u8B5A\u8B4E\u8B4F\u8B46\u8B59\u8D08\u8D0A\u8E7C\u8E72\u8E87\u8E76\u8E6C\u8E7A\u8E74\u8F54\u8F4E\u8FAD\u908A\u908B\u91B1\u91AE\u93E1\u93D1\u93DF\u93C3\u93C8\u93DC\u93DD\u93D6\u93E2\u93CD\u93D8\u93E4\u93D7\u93E8\u95DC\u96B4\u96E3\u972A\u9727\u9761\u97DC\u97FB\u985E"], ["c440", "\u9858\u985B\u98BC\u9945\u9949\u9A16\u9A19\u9B0D\u9BE8\u9BE7\u9BD6\u9BDB\u9D89\u9D61\u9D72\u9D6A\u9D6C\u9E92\u9E97\u9E93\u9EB4\u52F8\u56A8\u56B7\u56B6\u56B4\u56BC\u58E4\u5B40\u5B43\u5B7D\u5BF6\u5DC9\u61F8\u61FA\u6518\u6514\u6519\u66E6\u6727\u6AEC\u703E\u7030\u7032\u7210\u737B\u74CF\u7662\u7665\u7926\u792A\u792C\u792B\u7AC7\u7AF6\u7C4C\u7C43\u7C4D\u7CEF\u7CF0\u8FAE\u7E7D\u7E7C"], ["c4a1", "\u7E82\u7F4C\u8000\u81DA\u8266\u85FB\u85F9\u8611\u85FA\u8606\u860B\u8607\u860A\u8814\u8815\u8964\u89BA\u89F8\u8B70\u8B6C\u8B66\u8B6F\u8B5F\u8B6B\u8D0F\u8D0D\u8E89\u8E81\u8E85\u8E82\u91B4\u91CB\u9418\u9403\u93FD\u95E1\u9730\u98C4\u9952\u9951\u99A8\u9A2B\u9A30\u9A37\u9A35\u9C13\u9C0D\u9E79\u9EB5\u9EE8\u9F2F\u9F5F\u9F63\u9F61\u5137\u5138\u56C1\u56C0\u56C2\u5914\u5C6C\u5DCD\u61FC\u61FE\u651D\u651C\u6595\u66E9\u6AFB\u6B04\u6AFA\u6BB2\u704C\u721B\u72A7\u74D6\u74D4\u7669\u77D3\u7C50\u7E8F\u7E8C\u7FBC\u8617\u862D\u861A\u8823\u8822\u8821\u881F\u896A\u896C\u89BD\u8B74"], ["c540", "\u8B77\u8B7D\u8D13\u8E8A\u8E8D\u8E8B\u8F5F\u8FAF\u91BA\u942E\u9433\u9435\u943A\u9438\u9432\u942B\u95E2\u9738\u9739\u9732\u97FF\u9867\u9865\u9957\u9A45\u9A43\u9A40\u9A3E\u9ACF\u9B54\u9B51\u9C2D\u9C25\u9DAF\u9DB4\u9DC2\u9DB8\u9E9D\u9EEF\u9F19\u9F5C\u9F66\u9F67\u513C\u513B\u56C8\u56CA\u56C9\u5B7F\u5DD4\u5DD2\u5F4E\u61FF\u6524\u6B0A\u6B61\u7051\u7058\u7380\u74E4\u758A\u766E\u766C"], ["c5a1", "\u79B3\u7C60\u7C5F\u807E\u807D\u81DF\u8972\u896F\u89FC\u8B80\u8D16\u8D17\u8E91\u8E93\u8F61\u9148\u9444\u9451\u9452\u973D\u973E\u97C3\u97C1\u986B\u9955\u9A55\u9A4D\u9AD2\u9B1A\u9C49\u9C31\u9C3E\u9C3B\u9DD3\u9DD7\u9F34\u9F6C\u9F6A\u9F94\u56CC\u5DD6\u6200\u6523\u652B\u652A\u66EC\u6B10\u74DA\u7ACA\u7C64\u7C63\u7C65\u7E93\u7E96\u7E94\u81E2\u8638\u863F\u8831\u8B8A\u9090\u908F\u9463\u9460\u9464\u9768\u986F\u995C\u9A5A\u9A5B\u9A57\u9AD3\u9AD4\u9AD1\u9C54\u9C57\u9C56\u9DE5\u9E9F\u9EF4\u56D1\u58E9\u652C\u705E\u7671\u7672\u77D7\u7F50\u7F88\u8836\u8839\u8862\u8B93\u8B92"], ["c640", "\u8B96\u8277\u8D1B\u91C0\u946A\u9742\u9748\u9744\u97C6\u9870\u9A5F\u9B22\u9B58\u9C5F\u9DF9\u9DFA\u9E7C\u9E7D\u9F07\u9F77\u9F72\u5EF3\u6B16\u7063\u7C6C\u7C6E\u883B\u89C0\u8EA1\u91C1\u9472\u9470\u9871\u995E\u9AD6\u9B23\u9ECC\u7064\u77DA\u8B9A\u9477\u97C9\u9A62\u9A65\u7E9C\u8B9C\u8EAA\u91C5\u947D\u947E\u947C\u9C77\u9C78\u9EF7\u8C54\u947F\u9E1A\u7228\u9A6A\u9B31\u9E1B\u9E1E\u7C72"], ["c940", "\u4E42\u4E5C\u51F5\u531A\u5382\u4E07\u4E0C\u4E47\u4E8D\u56D7\uFA0C\u5C6E\u5F73\u4E0F\u5187\u4E0E\u4E2E\u4E93\u4EC2\u4EC9\u4EC8\u5198\u52FC\u536C\u53B9\u5720\u5903\u592C\u5C10\u5DFF\u65E1\u6BB3\u6BCC\u6C14\u723F\u4E31\u4E3C\u4EE8\u4EDC\u4EE9\u4EE1\u4EDD\u4EDA\u520C\u531C\u534C\u5722\u5723\u5917\u592F\u5B81\u5B84\u5C12\u5C3B\u5C74\u5C73\u5E04\u5E80\u5E82\u5FC9\u6209\u6250\u6C15"], ["c9a1", "\u6C36\u6C43\u6C3F\u6C3B\u72AE\u72B0\u738A\u79B8\u808A\u961E\u4F0E\u4F18\u4F2C\u4EF5\u4F14\u4EF1\u4F00\u4EF7\u4F08\u4F1D\u4F02\u4F05\u4F22\u4F13\u4F04\u4EF4\u4F12\u51B1\u5213\u5209\u5210\u52A6\u5322\u531F\u534D\u538A\u5407\u56E1\u56DF\u572E\u572A\u5734\u593C\u5980\u597C\u5985\u597B\u597E\u5977\u597F\u5B56\u5C15\u5C25\u5C7C\u5C7A\u5C7B\u5C7E\u5DDF\u5E75\u5E84\u5F02\u5F1A\u5F74\u5FD5\u5FD4\u5FCF\u625C\u625E\u6264\u6261\u6266\u6262\u6259\u6260\u625A\u6265\u65EF\u65EE\u673E\u6739\u6738\u673B\u673A\u673F\u673C\u6733\u6C18\u6C46\u6C52\u6C5C\u6C4F\u6C4A\u6C54\u6C4B"], ["ca40", "\u6C4C\u7071\u725E\u72B4\u72B5\u738E\u752A\u767F\u7A75\u7F51\u8278\u827C\u8280\u827D\u827F\u864D\u897E\u9099\u9097\u9098\u909B\u9094\u9622\u9624\u9620\u9623\u4F56\u4F3B\u4F62\u4F49\u4F53\u4F64\u4F3E\u4F67\u4F52\u4F5F\u4F41\u4F58\u4F2D\u4F33\u4F3F\u4F61\u518F\u51B9\u521C\u521E\u5221\u52AD\u52AE\u5309\u5363\u5372\u538E\u538F\u5430\u5437\u542A\u5454\u5445\u5419\u541C\u5425\u5418"], ["caa1", "\u543D\u544F\u5441\u5428\u5424\u5447\u56EE\u56E7\u56E5\u5741\u5745\u574C\u5749\u574B\u5752\u5906\u5940\u59A6\u5998\u59A0\u5997\u598E\u59A2\u5990\u598F\u59A7\u59A1\u5B8E\u5B92\u5C28\u5C2A\u5C8D\u5C8F\u5C88\u5C8B\u5C89\u5C92\u5C8A\u5C86\u5C93\u5C95\u5DE0\u5E0A\u5E0E\u5E8B\u5E89\u5E8C\u5E88\u5E8D\u5F05\u5F1D\u5F78\u5F76\u5FD2\u5FD1\u5FD0\u5FED\u5FE8\u5FEE\u5FF3\u5FE1\u5FE4\u5FE3\u5FFA\u5FEF\u5FF7\u5FFB\u6000\u5FF4\u623A\u6283\u628C\u628E\u628F\u6294\u6287\u6271\u627B\u627A\u6270\u6281\u6288\u6277\u627D\u6272\u6274\u6537\u65F0\u65F4\u65F3\u65F2\u65F5\u6745\u6747"], ["cb40", "\u6759\u6755\u674C\u6748\u675D\u674D\u675A\u674B\u6BD0\u6C19\u6C1A\u6C78\u6C67\u6C6B\u6C84\u6C8B\u6C8F\u6C71\u6C6F\u6C69\u6C9A\u6C6D\u6C87\u6C95\u6C9C\u6C66\u6C73\u6C65\u6C7B\u6C8E\u7074\u707A\u7263\u72BF\u72BD\u72C3\u72C6\u72C1\u72BA\u72C5\u7395\u7397\u7393\u7394\u7392\u753A\u7539\u7594\u7595\u7681\u793D\u8034\u8095\u8099\u8090\u8092\u809C\u8290\u828F\u8285\u828E\u8291\u8293"], ["cba1", "\u828A\u8283\u8284\u8C78\u8FC9\u8FBF\u909F\u90A1\u90A5\u909E\u90A7\u90A0\u9630\u9628\u962F\u962D\u4E33\u4F98\u4F7C\u4F85\u4F7D\u4F80\u4F87\u4F76\u4F74\u4F89\u4F84\u4F77\u4F4C\u4F97\u4F6A\u4F9A\u4F79\u4F81\u4F78\u4F90\u4F9C\u4F94\u4F9E\u4F92\u4F82\u4F95\u4F6B\u4F6E\u519E\u51BC\u51BE\u5235\u5232\u5233\u5246\u5231\u52BC\u530A\u530B\u533C\u5392\u5394\u5487\u547F\u5481\u5491\u5482\u5488\u546B\u547A\u547E\u5465\u546C\u5474\u5466\u548D\u546F\u5461\u5460\u5498\u5463\u5467\u5464\u56F7\u56F9\u576F\u5772\u576D\u576B\u5771\u5770\u5776\u5780\u5775\u577B\u5773\u5774\u5762"], ["cc40", "\u5768\u577D\u590C\u5945\u59B5\u59BA\u59CF\u59CE\u59B2\u59CC\u59C1\u59B6\u59BC\u59C3\u59D6\u59B1\u59BD\u59C0\u59C8\u59B4\u59C7\u5B62\u5B65\u5B93\u5B95\u5C44\u5C47\u5CAE\u5CA4\u5CA0\u5CB5\u5CAF\u5CA8\u5CAC\u5C9F\u5CA3\u5CAD\u5CA2\u5CAA\u5CA7\u5C9D\u5CA5\u5CB6\u5CB0\u5CA6\u5E17\u5E14\u5E19\u5F28\u5F22\u5F23\u5F24\u5F54\u5F82\u5F7E\u5F7D\u5FDE\u5FE5\u602D\u6026\u6019\u6032\u600B"], ["cca1", "\u6034\u600A\u6017\u6033\u601A\u601E\u602C\u6022\u600D\u6010\u602E\u6013\u6011\u600C\u6009\u601C\u6214\u623D\u62AD\u62B4\u62D1\u62BE\u62AA\u62B6\u62CA\u62AE\u62B3\u62AF\u62BB\u62A9\u62B0\u62B8\u653D\u65A8\u65BB\u6609\u65FC\u6604\u6612\u6608\u65FB\u6603\u660B\u660D\u6605\u65FD\u6611\u6610\u66F6\u670A\u6785\u676C\u678E\u6792\u6776\u677B\u6798\u6786\u6784\u6774\u678D\u678C\u677A\u679F\u6791\u6799\u6783\u677D\u6781\u6778\u6779\u6794\u6B25\u6B80\u6B7E\u6BDE\u6C1D\u6C93\u6CEC\u6CEB\u6CEE\u6CD9\u6CB6\u6CD4\u6CAD\u6CE7\u6CB7\u6CD0\u6CC2\u6CBA\u6CC3\u6CC6\u6CED\u6CF2"], ["cd40", "\u6CD2\u6CDD\u6CB4\u6C8A\u6C9D\u6C80\u6CDE\u6CC0\u6D30\u6CCD\u6CC7\u6CB0\u6CF9\u6CCF\u6CE9\u6CD1\u7094\u7098\u7085\u7093\u7086\u7084\u7091\u7096\u7082\u709A\u7083\u726A\u72D6\u72CB\u72D8\u72C9\u72DC\u72D2\u72D4\u72DA\u72CC\u72D1\u73A4\u73A1\u73AD\u73A6\u73A2\u73A0\u73AC\u739D\u74DD\u74E8\u753F\u7540\u753E\u758C\u7598\u76AF\u76F3\u76F1\u76F0\u76F5\u77F8\u77FC\u77F9\u77FB\u77FA"], ["cda1", "\u77F7\u7942\u793F\u79C5\u7A78\u7A7B\u7AFB\u7C75\u7CFD\u8035\u808F\u80AE\u80A3\u80B8\u80B5\u80AD\u8220\u82A0\u82C0\u82AB\u829A\u8298\u829B\u82B5\u82A7\u82AE\u82BC\u829E\u82BA\u82B4\u82A8\u82A1\u82A9\u82C2\u82A4\u82C3\u82B6\u82A2\u8670\u866F\u866D\u866E\u8C56\u8FD2\u8FCB\u8FD3\u8FCD\u8FD6\u8FD5\u8FD7\u90B2\u90B4\u90AF\u90B3\u90B0\u9639\u963D\u963C\u963A\u9643\u4FCD\u4FC5\u4FD3\u4FB2\u4FC9\u4FCB\u4FC1\u4FD4\u4FDC\u4FD9\u4FBB\u4FB3\u4FDB\u4FC7\u4FD6\u4FBA\u4FC0\u4FB9\u4FEC\u5244\u5249\u52C0\u52C2\u533D\u537C\u5397\u5396\u5399\u5398\u54BA\u54A1\u54AD\u54A5\u54CF"], ["ce40", "\u54C3\u830D\u54B7\u54AE\u54D6\u54B6\u54C5\u54C6\u54A0\u5470\u54BC\u54A2\u54BE\u5472\u54DE\u54B0\u57B5\u579E\u579F\u57A4\u578C\u5797\u579D\u579B\u5794\u5798\u578F\u5799\u57A5\u579A\u5795\u58F4\u590D\u5953\u59E1\u59DE\u59EE\u5A00\u59F1\u59DD\u59FA\u59FD\u59FC\u59F6\u59E4\u59F2\u59F7\u59DB\u59E9\u59F3\u59F5\u59E0\u59FE\u59F4\u59ED\u5BA8\u5C4C\u5CD0\u5CD8\u5CCC\u5CD7\u5CCB\u5CDB"], ["cea1", "\u5CDE\u5CDA\u5CC9\u5CC7\u5CCA\u5CD6\u5CD3\u5CD4\u5CCF\u5CC8\u5CC6\u5CCE\u5CDF\u5CF8\u5DF9\u5E21\u5E22\u5E23\u5E20\u5E24\u5EB0\u5EA4\u5EA2\u5E9B\u5EA3\u5EA5\u5F07\u5F2E\u5F56\u5F86\u6037\u6039\u6054\u6072\u605E\u6045\u6053\u6047\u6049\u605B\u604C\u6040\u6042\u605F\u6024\u6044\u6058\u6066\u606E\u6242\u6243\u62CF\u630D\u630B\u62F5\u630E\u6303\u62EB\u62F9\u630F\u630C\u62F8\u62F6\u6300\u6313\u6314\u62FA\u6315\u62FB\u62F0\u6541\u6543\u65AA\u65BF\u6636\u6621\u6632\u6635\u661C\u6626\u6622\u6633\u662B\u663A\u661D\u6634\u6639\u662E\u670F\u6710\u67C1\u67F2\u67C8\u67BA"], ["cf40", "\u67DC\u67BB\u67F8\u67D8\u67C0\u67B7\u67C5\u67EB\u67E4\u67DF\u67B5\u67CD\u67B3\u67F7\u67F6\u67EE\u67E3\u67C2\u67B9\u67CE\u67E7\u67F0\u67B2\u67FC\u67C6\u67ED\u67CC\u67AE\u67E6\u67DB\u67FA\u67C9\u67CA\u67C3\u67EA\u67CB\u6B28\u6B82\u6B84\u6BB6\u6BD6\u6BD8\u6BE0\u6C20\u6C21\u6D28\u6D34\u6D2D\u6D1F\u6D3C\u6D3F\u6D12\u6D0A\u6CDA\u6D33\u6D04\u6D19\u6D3A\u6D1A\u6D11\u6D00\u6D1D\u6D42"], ["cfa1", "\u6D01\u6D18\u6D37\u6D03\u6D0F\u6D40\u6D07\u6D20\u6D2C\u6D08\u6D22\u6D09\u6D10\u70B7\u709F\u70BE\u70B1\u70B0\u70A1\u70B4\u70B5\u70A9\u7241\u7249\u724A\u726C\u7270\u7273\u726E\u72CA\u72E4\u72E8\u72EB\u72DF\u72EA\u72E6\u72E3\u7385\u73CC\u73C2\u73C8\u73C5\u73B9\u73B6\u73B5\u73B4\u73EB\u73BF\u73C7\u73BE\u73C3\u73C6\u73B8\u73CB\u74EC\u74EE\u752E\u7547\u7548\u75A7\u75AA\u7679\u76C4\u7708\u7703\u7704\u7705\u770A\u76F7\u76FB\u76FA\u77E7\u77E8\u7806\u7811\u7812\u7805\u7810\u780F\u780E\u7809\u7803\u7813\u794A\u794C\u794B\u7945\u7944\u79D5\u79CD\u79CF\u79D6\u79CE\u7A80"], ["d040", "\u7A7E\u7AD1\u7B00\u7B01\u7C7A\u7C78\u7C79\u7C7F\u7C80\u7C81\u7D03\u7D08\u7D01\u7F58\u7F91\u7F8D\u7FBE\u8007\u800E\u800F\u8014\u8037\u80D8\u80C7\u80E0\u80D1\u80C8\u80C2\u80D0\u80C5\u80E3\u80D9\u80DC\u80CA\u80D5\u80C9\u80CF\u80D7\u80E6\u80CD\u81FF\u8221\u8294\u82D9\u82FE\u82F9\u8307\u82E8\u8300\u82D5\u833A\u82EB\u82D6\u82F4\u82EC\u82E1\u82F2\u82F5\u830C\u82FB\u82F6\u82F0\u82EA"], ["d0a1", "\u82E4\u82E0\u82FA\u82F3\u82ED\u8677\u8674\u867C\u8673\u8841\u884E\u8867\u886A\u8869\u89D3\u8A04\u8A07\u8D72\u8FE3\u8FE1\u8FEE\u8FE0\u90F1\u90BD\u90BF\u90D5\u90C5\u90BE\u90C7\u90CB\u90C8\u91D4\u91D3\u9654\u964F\u9651\u9653\u964A\u964E\u501E\u5005\u5007\u5013\u5022\u5030\u501B\u4FF5\u4FF4\u5033\u5037\u502C\u4FF6\u4FF7\u5017\u501C\u5020\u5027\u5035\u502F\u5031\u500E\u515A\u5194\u5193\u51CA\u51C4\u51C5\u51C8\u51CE\u5261\u525A\u5252\u525E\u525F\u5255\u5262\u52CD\u530E\u539E\u5526\u54E2\u5517\u5512\u54E7\u54F3\u54E4\u551A\u54FF\u5504\u5508\u54EB\u5511\u5505\u54F1"], ["d140", "\u550A\u54FB\u54F7\u54F8\u54E0\u550E\u5503\u550B\u5701\u5702\u57CC\u5832\u57D5\u57D2\u57BA\u57C6\u57BD\u57BC\u57B8\u57B6\u57BF\u57C7\u57D0\u57B9\u57C1\u590E\u594A\u5A19\u5A16\u5A2D\u5A2E\u5A15\u5A0F\u5A17\u5A0A\u5A1E\u5A33\u5B6C\u5BA7\u5BAD\u5BAC\u5C03\u5C56\u5C54\u5CEC\u5CFF\u5CEE\u5CF1\u5CF7\u5D00\u5CF9\u5E29\u5E28\u5EA8\u5EAE\u5EAA\u5EAC\u5F33\u5F30\u5F67\u605D\u605A\u6067"], ["d1a1", "\u6041\u60A2\u6088\u6080\u6092\u6081\u609D\u6083\u6095\u609B\u6097\u6087\u609C\u608E\u6219\u6246\u62F2\u6310\u6356\u632C\u6344\u6345\u6336\u6343\u63E4\u6339\u634B\u634A\u633C\u6329\u6341\u6334\u6358\u6354\u6359\u632D\u6347\u6333\u635A\u6351\u6338\u6357\u6340\u6348\u654A\u6546\u65C6\u65C3\u65C4\u65C2\u664A\u665F\u6647\u6651\u6712\u6713\u681F\u681A\u6849\u6832\u6833\u683B\u684B\u684F\u6816\u6831\u681C\u6835\u682B\u682D\u682F\u684E\u6844\u6834\u681D\u6812\u6814\u6826\u6828\u682E\u684D\u683A\u6825\u6820\u6B2C\u6B2F\u6B2D\u6B31\u6B34\u6B6D\u8082\u6B88\u6BE6\u6BE4"], ["d240", "\u6BE8\u6BE3\u6BE2\u6BE7\u6C25\u6D7A\u6D63\u6D64\u6D76\u6D0D\u6D61\u6D92\u6D58\u6D62\u6D6D\u6D6F\u6D91\u6D8D\u6DEF\u6D7F\u6D86\u6D5E\u6D67\u6D60\u6D97\u6D70\u6D7C\u6D5F\u6D82\u6D98\u6D2F\u6D68\u6D8B\u6D7E\u6D80\u6D84\u6D16\u6D83\u6D7B\u6D7D\u6D75\u6D90\u70DC\u70D3\u70D1\u70DD\u70CB\u7F39\u70E2\u70D7\u70D2\u70DE\u70E0\u70D4\u70CD\u70C5\u70C6\u70C7\u70DA\u70CE\u70E1\u7242\u7278"], ["d2a1", "\u7277\u7276\u7300\u72FA\u72F4\u72FE\u72F6\u72F3\u72FB\u7301\u73D3\u73D9\u73E5\u73D6\u73BC\u73E7\u73E3\u73E9\u73DC\u73D2\u73DB\u73D4\u73DD\u73DA\u73D7\u73D8\u73E8\u74DE\u74DF\u74F4\u74F5\u7521\u755B\u755F\u75B0\u75C1\u75BB\u75C4\u75C0\u75BF\u75B6\u75BA\u768A\u76C9\u771D\u771B\u7710\u7713\u7712\u7723\u7711\u7715\u7719\u771A\u7722\u7727\u7823\u782C\u7822\u7835\u782F\u7828\u782E\u782B\u7821\u7829\u7833\u782A\u7831\u7954\u795B\u794F\u795C\u7953\u7952\u7951\u79EB\u79EC\u79E0\u79EE\u79ED\u79EA\u79DC\u79DE\u79DD\u7A86\u7A89\u7A85\u7A8B\u7A8C\u7A8A\u7A87\u7AD8\u7B10"], ["d340", "\u7B04\u7B13\u7B05\u7B0F\u7B08\u7B0A\u7B0E\u7B09\u7B12\u7C84\u7C91\u7C8A\u7C8C\u7C88\u7C8D\u7C85\u7D1E\u7D1D\u7D11\u7D0E\u7D18\u7D16\u7D13\u7D1F\u7D12\u7D0F\u7D0C\u7F5C\u7F61\u7F5E\u7F60\u7F5D\u7F5B\u7F96\u7F92\u7FC3\u7FC2\u7FC0\u8016\u803E\u8039\u80FA\u80F2\u80F9\u80F5\u8101\u80FB\u8100\u8201\u822F\u8225\u8333\u832D\u8344\u8319\u8351\u8325\u8356\u833F\u8341\u8326\u831C\u8322"], ["d3a1", "\u8342\u834E\u831B\u832A\u8308\u833C\u834D\u8316\u8324\u8320\u8337\u832F\u8329\u8347\u8345\u834C\u8353\u831E\u832C\u834B\u8327\u8348\u8653\u8652\u86A2\u86A8\u8696\u868D\u8691\u869E\u8687\u8697\u8686\u868B\u869A\u8685\u86A5\u8699\u86A1\u86A7\u8695\u8698\u868E\u869D\u8690\u8694\u8843\u8844\u886D\u8875\u8876\u8872\u8880\u8871\u887F\u886F\u8883\u887E\u8874\u887C\u8A12\u8C47\u8C57\u8C7B\u8CA4\u8CA3\u8D76\u8D78\u8DB5\u8DB7\u8DB6\u8ED1\u8ED3\u8FFE\u8FF5\u9002\u8FFF\u8FFB\u9004\u8FFC\u8FF6\u90D6\u90E0\u90D9\u90DA\u90E3\u90DF\u90E5\u90D8\u90DB\u90D7\u90DC\u90E4\u9150"], ["d440", "\u914E\u914F\u91D5\u91E2\u91DA\u965C\u965F\u96BC\u98E3\u9ADF\u9B2F\u4E7F\u5070\u506A\u5061\u505E\u5060\u5053\u504B\u505D\u5072\u5048\u504D\u5041\u505B\u504A\u5062\u5015\u5045\u505F\u5069\u506B\u5063\u5064\u5046\u5040\u506E\u5073\u5057\u5051\u51D0\u526B\u526D\u526C\u526E\u52D6\u52D3\u532D\u539C\u5575\u5576\u553C\u554D\u5550\u5534\u552A\u5551\u5562\u5536\u5535\u5530\u5552\u5545"], ["d4a1", "\u550C\u5532\u5565\u554E\u5539\u5548\u552D\u553B\u5540\u554B\u570A\u5707\u57FB\u5814\u57E2\u57F6\u57DC\u57F4\u5800\u57ED\u57FD\u5808\u57F8\u580B\u57F3\u57CF\u5807\u57EE\u57E3\u57F2\u57E5\u57EC\u57E1\u580E\u57FC\u5810\u57E7\u5801\u580C\u57F1\u57E9\u57F0\u580D\u5804\u595C\u5A60\u5A58\u5A55\u5A67\u5A5E\u5A38\u5A35\u5A6D\u5A50\u5A5F\u5A65\u5A6C\u5A53\u5A64\u5A57\u5A43\u5A5D\u5A52\u5A44\u5A5B\u5A48\u5A8E\u5A3E\u5A4D\u5A39\u5A4C\u5A70\u5A69\u5A47\u5A51\u5A56\u5A42\u5A5C\u5B72\u5B6E\u5BC1\u5BC0\u5C59\u5D1E\u5D0B\u5D1D\u5D1A\u5D20\u5D0C\u5D28\u5D0D\u5D26\u5D25\u5D0F"], ["d540", "\u5D30\u5D12\u5D23\u5D1F\u5D2E\u5E3E\u5E34\u5EB1\u5EB4\u5EB9\u5EB2\u5EB3\u5F36\u5F38\u5F9B\u5F96\u5F9F\u608A\u6090\u6086\u60BE\u60B0\u60BA\u60D3\u60D4\u60CF\u60E4\u60D9\u60DD\u60C8\u60B1\u60DB\u60B7\u60CA\u60BF\u60C3\u60CD\u60C0\u6332\u6365\u638A\u6382\u637D\u63BD\u639E\u63AD\u639D\u6397\u63AB\u638E\u636F\u6387\u6390\u636E\u63AF\u6375\u639C\u636D\u63AE\u637C\u63A4\u633B\u639F"], ["d5a1", "\u6378\u6385\u6381\u6391\u638D\u6370\u6553\u65CD\u6665\u6661\u665B\u6659\u665C\u6662\u6718\u6879\u6887\u6890\u689C\u686D\u686E\u68AE\u68AB\u6956\u686F\u68A3\u68AC\u68A9\u6875\u6874\u68B2\u688F\u6877\u6892\u687C\u686B\u6872\u68AA\u6880\u6871\u687E\u689B\u6896\u688B\u68A0\u6889\u68A4\u6878\u687B\u6891\u688C\u688A\u687D\u6B36\u6B33\u6B37\u6B38\u6B91\u6B8F\u6B8D\u6B8E\u6B8C\u6C2A\u6DC0\u6DAB\u6DB4\u6DB3\u6E74\u6DAC\u6DE9\u6DE2\u6DB7\u6DF6\u6DD4\u6E00\u6DC8\u6DE0\u6DDF\u6DD6\u6DBE\u6DE5\u6DDC\u6DDD\u6DDB\u6DF4\u6DCA\u6DBD\u6DED\u6DF0\u6DBA\u6DD5\u6DC2\u6DCF\u6DC9"], ["d640", "\u6DD0\u6DF2\u6DD3\u6DFD\u6DD7\u6DCD\u6DE3\u6DBB\u70FA\u710D\u70F7\u7117\u70F4\u710C\u70F0\u7104\u70F3\u7110\u70FC\u70FF\u7106\u7113\u7100\u70F8\u70F6\u710B\u7102\u710E\u727E\u727B\u727C\u727F\u731D\u7317\u7307\u7311\u7318\u730A\u7308\u72FF\u730F\u731E\u7388\u73F6\u73F8\u73F5\u7404\u7401\u73FD\u7407\u7400\u73FA\u73FC\u73FF\u740C\u740B\u73F4\u7408\u7564\u7563\u75CE\u75D2\u75CF"], ["d6a1", "\u75CB\u75CC\u75D1\u75D0\u768F\u7689\u76D3\u7739\u772F\u772D\u7731\u7732\u7734\u7733\u773D\u7725\u773B\u7735\u7848\u7852\u7849\u784D\u784A\u784C\u7826\u7845\u7850\u7964\u7967\u7969\u796A\u7963\u796B\u7961\u79BB\u79FA\u79F8\u79F6\u79F7\u7A8F\u7A94\u7A90\u7B35\u7B47\u7B34\u7B25\u7B30\u7B22\u7B24\u7B33\u7B18\u7B2A\u7B1D\u7B31\u7B2B\u7B2D\u7B2F\u7B32\u7B38\u7B1A\u7B23\u7C94\u7C98\u7C96\u7CA3\u7D35\u7D3D\u7D38\u7D36\u7D3A\u7D45\u7D2C\u7D29\u7D41\u7D47\u7D3E\u7D3F\u7D4A\u7D3B\u7D28\u7F63\u7F95\u7F9C\u7F9D\u7F9B\u7FCA\u7FCB\u7FCD\u7FD0\u7FD1\u7FC7\u7FCF\u7FC9\u801F"], ["d740", "\u801E\u801B\u8047\u8043\u8048\u8118\u8125\u8119\u811B\u812D\u811F\u812C\u811E\u8121\u8115\u8127\u811D\u8122\u8211\u8238\u8233\u823A\u8234\u8232\u8274\u8390\u83A3\u83A8\u838D\u837A\u8373\u83A4\u8374\u838F\u8381\u8395\u8399\u8375\u8394\u83A9\u837D\u8383\u838C\u839D\u839B\u83AA\u838B\u837E\u83A5\u83AF\u8388\u8397\u83B0\u837F\u83A6\u8387\u83AE\u8376\u839A\u8659\u8656\u86BF\u86B7"], ["d7a1", "\u86C2\u86C1\u86C5\u86BA\u86B0\u86C8\u86B9\u86B3\u86B8\u86CC\u86B4\u86BB\u86BC\u86C3\u86BD\u86BE\u8852\u8889\u8895\u88A8\u88A2\u88AA\u889A\u8891\u88A1\u889F\u8898\u88A7\u8899\u889B\u8897\u88A4\u88AC\u888C\u8893\u888E\u8982\u89D6\u89D9\u89D5\u8A30\u8A27\u8A2C\u8A1E\u8C39\u8C3B\u8C5C\u8C5D\u8C7D\u8CA5\u8D7D\u8D7B\u8D79\u8DBC\u8DC2\u8DB9\u8DBF\u8DC1\u8ED8\u8EDE\u8EDD\u8EDC\u8ED7\u8EE0\u8EE1\u9024\u900B\u9011\u901C\u900C\u9021\u90EF\u90EA\u90F0\u90F4\u90F2\u90F3\u90D4\u90EB\u90EC\u90E9\u9156\u9158\u915A\u9153\u9155\u91EC\u91F4\u91F1\u91F3\u91F8\u91E4\u91F9\u91EA"], ["d840", "\u91EB\u91F7\u91E8\u91EE\u957A\u9586\u9588\u967C\u966D\u966B\u9671\u966F\u96BF\u976A\u9804\u98E5\u9997\u509B\u5095\u5094\u509E\u508B\u50A3\u5083\u508C\u508E\u509D\u5068\u509C\u5092\u5082\u5087\u515F\u51D4\u5312\u5311\u53A4\u53A7\u5591\u55A8\u55A5\u55AD\u5577\u5645\u55A2\u5593\u5588\u558F\u55B5\u5581\u55A3\u5592\u55A4\u557D\u558C\u55A6\u557F\u5595\u55A1\u558E\u570C\u5829\u5837"], ["d8a1", "\u5819\u581E\u5827\u5823\u5828\u57F5\u5848\u5825\u581C\u581B\u5833\u583F\u5836\u582E\u5839\u5838\u582D\u582C\u583B\u5961\u5AAF\u5A94\u5A9F\u5A7A\u5AA2\u5A9E\u5A78\u5AA6\u5A7C\u5AA5\u5AAC\u5A95\u5AAE\u5A37\u5A84\u5A8A\u5A97\u5A83\u5A8B\u5AA9\u5A7B\u5A7D\u5A8C\u5A9C\u5A8F\u5A93\u5A9D\u5BEA\u5BCD\u5BCB\u5BD4\u5BD1\u5BCA\u5BCE\u5C0C\u5C30\u5D37\u5D43\u5D6B\u5D41\u5D4B\u5D3F\u5D35\u5D51\u5D4E\u5D55\u5D33\u5D3A\u5D52\u5D3D\u5D31\u5D59\u5D42\u5D39\u5D49\u5D38\u5D3C\u5D32\u5D36\u5D40\u5D45\u5E44\u5E41\u5F58\u5FA6\u5FA5\u5FAB\u60C9\u60B9\u60CC\u60E2\u60CE\u60C4\u6114"], ["d940", "\u60F2\u610A\u6116\u6105\u60F5\u6113\u60F8\u60FC\u60FE\u60C1\u6103\u6118\u611D\u6110\u60FF\u6104\u610B\u624A\u6394\u63B1\u63B0\u63CE\u63E5\u63E8\u63EF\u63C3\u649D\u63F3\u63CA\u63E0\u63F6\u63D5\u63F2\u63F5\u6461\u63DF\u63BE\u63DD\u63DC\u63C4\u63D8\u63D3\u63C2\u63C7\u63CC\u63CB\u63C8\u63F0\u63D7\u63D9\u6532\u6567\u656A\u6564\u655C\u6568\u6565\u658C\u659D\u659E\u65AE\u65D0\u65D2"], ["d9a1", "\u667C\u666C\u667B\u6680\u6671\u6679\u666A\u6672\u6701\u690C\u68D3\u6904\u68DC\u692A\u68EC\u68EA\u68F1\u690F\u68D6\u68F7\u68EB\u68E4\u68F6\u6913\u6910\u68F3\u68E1\u6907\u68CC\u6908\u6970\u68B4\u6911\u68EF\u68C6\u6914\u68F8\u68D0\u68FD\u68FC\u68E8\u690B\u690A\u6917\u68CE\u68C8\u68DD\u68DE\u68E6\u68F4\u68D1\u6906\u68D4\u68E9\u6915\u6925\u68C7\u6B39\u6B3B\u6B3F\u6B3C\u6B94\u6B97\u6B99\u6B95\u6BBD\u6BF0\u6BF2\u6BF3\u6C30\u6DFC\u6E46\u6E47\u6E1F\u6E49\u6E88\u6E3C\u6E3D\u6E45\u6E62\u6E2B\u6E3F\u6E41\u6E5D\u6E73\u6E1C\u6E33\u6E4B\u6E40\u6E51\u6E3B\u6E03\u6E2E\u6E5E"], ["da40", "\u6E68\u6E5C\u6E61\u6E31\u6E28\u6E60\u6E71\u6E6B\u6E39\u6E22\u6E30\u6E53\u6E65\u6E27\u6E78\u6E64\u6E77\u6E55\u6E79\u6E52\u6E66\u6E35\u6E36\u6E5A\u7120\u711E\u712F\u70FB\u712E\u7131\u7123\u7125\u7122\u7132\u711F\u7128\u713A\u711B\u724B\u725A\u7288\u7289\u7286\u7285\u728B\u7312\u730B\u7330\u7322\u7331\u7333\u7327\u7332\u732D\u7326\u7323\u7335\u730C\u742E\u742C\u7430\u742B\u7416"], ["daa1", "\u741A\u7421\u742D\u7431\u7424\u7423\u741D\u7429\u7420\u7432\u74FB\u752F\u756F\u756C\u75E7\u75DA\u75E1\u75E6\u75DD\u75DF\u75E4\u75D7\u7695\u7692\u76DA\u7746\u7747\u7744\u774D\u7745\u774A\u774E\u774B\u774C\u77DE\u77EC\u7860\u7864\u7865\u785C\u786D\u7871\u786A\u786E\u7870\u7869\u7868\u785E\u7862\u7974\u7973\u7972\u7970\u7A02\u7A0A\u7A03\u7A0C\u7A04\u7A99\u7AE6\u7AE4\u7B4A\u7B3B\u7B44\u7B48\u7B4C\u7B4E\u7B40\u7B58\u7B45\u7CA2\u7C9E\u7CA8\u7CA1\u7D58\u7D6F\u7D63\u7D53\u7D56\u7D67\u7D6A\u7D4F\u7D6D\u7D5C\u7D6B\u7D52\u7D54\u7D69\u7D51\u7D5F\u7D4E\u7F3E\u7F3F\u7F65"], ["db40", "\u7F66\u7FA2\u7FA0\u7FA1\u7FD7\u8051\u804F\u8050\u80FE\u80D4\u8143\u814A\u8152\u814F\u8147\u813D\u814D\u813A\u81E6\u81EE\u81F7\u81F8\u81F9\u8204\u823C\u823D\u823F\u8275\u833B\u83CF\u83F9\u8423\u83C0\u83E8\u8412\u83E7\u83E4\u83FC\u83F6\u8410\u83C6\u83C8\u83EB\u83E3\u83BF\u8401\u83DD\u83E5\u83D8\u83FF\u83E1\u83CB\u83CE\u83D6\u83F5\u83C9\u8409\u840F\u83DE\u8411\u8406\u83C2\u83F3"], ["dba1", "\u83D5\u83FA\u83C7\u83D1\u83EA\u8413\u83C3\u83EC\u83EE\u83C4\u83FB\u83D7\u83E2\u841B\u83DB\u83FE\u86D8\u86E2\u86E6\u86D3\u86E3\u86DA\u86EA\u86DD\u86EB\u86DC\u86EC\u86E9\u86D7\u86E8\u86D1\u8848\u8856\u8855\u88BA\u88D7\u88B9\u88B8\u88C0\u88BE\u88B6\u88BC\u88B7\u88BD\u88B2\u8901\u88C9\u8995\u8998\u8997\u89DD\u89DA\u89DB\u8A4E\u8A4D\u8A39\u8A59\u8A40\u8A57\u8A58\u8A44\u8A45\u8A52\u8A48\u8A51\u8A4A\u8A4C\u8A4F\u8C5F\u8C81\u8C80\u8CBA\u8CBE\u8CB0\u8CB9\u8CB5\u8D84\u8D80\u8D89\u8DD8\u8DD3\u8DCD\u8DC7\u8DD6\u8DDC\u8DCF\u8DD5\u8DD9\u8DC8\u8DD7\u8DC5\u8EEF\u8EF7\u8EFA"], ["dc40", "\u8EF9\u8EE6\u8EEE\u8EE5\u8EF5\u8EE7\u8EE8\u8EF6\u8EEB\u8EF1\u8EEC\u8EF4\u8EE9\u902D\u9034\u902F\u9106\u912C\u9104\u90FF\u90FC\u9108\u90F9\u90FB\u9101\u9100\u9107\u9105\u9103\u9161\u9164\u915F\u9162\u9160\u9201\u920A\u9225\u9203\u921A\u9226\u920F\u920C\u9200\u9212\u91FF\u91FD\u9206\u9204\u9227\u9202\u921C\u9224\u9219\u9217\u9205\u9216\u957B\u958D\u958C\u9590\u9687\u967E\u9688"], ["dca1", "\u9689\u9683\u9680\u96C2\u96C8\u96C3\u96F1\u96F0\u976C\u9770\u976E\u9807\u98A9\u98EB\u9CE6\u9EF9\u4E83\u4E84\u4EB6\u50BD\u50BF\u50C6\u50AE\u50C4\u50CA\u50B4\u50C8\u50C2\u50B0\u50C1\u50BA\u50B1\u50CB\u50C9\u50B6\u50B8\u51D7\u527A\u5278\u527B\u527C\u55C3\u55DB\u55CC\u55D0\u55CB\u55CA\u55DD\u55C0\u55D4\u55C4\u55E9\u55BF\u55D2\u558D\u55CF\u55D5\u55E2\u55D6\u55C8\u55F2\u55CD\u55D9\u55C2\u5714\u5853\u5868\u5864\u584F\u584D\u5849\u586F\u5855\u584E\u585D\u5859\u5865\u585B\u583D\u5863\u5871\u58FC\u5AC7\u5AC4\u5ACB\u5ABA\u5AB8\u5AB1\u5AB5\u5AB0\u5ABF\u5AC8\u5ABB\u5AC6"], ["dd40", "\u5AB7\u5AC0\u5ACA\u5AB4\u5AB6\u5ACD\u5AB9\u5A90\u5BD6\u5BD8\u5BD9\u5C1F\u5C33\u5D71\u5D63\u5D4A\u5D65\u5D72\u5D6C\u5D5E\u5D68\u5D67\u5D62\u5DF0\u5E4F\u5E4E\u5E4A\u5E4D\u5E4B\u5EC5\u5ECC\u5EC6\u5ECB\u5EC7\u5F40\u5FAF\u5FAD\u60F7\u6149\u614A\u612B\u6145\u6136\u6132\u612E\u6146\u612F\u614F\u6129\u6140\u6220\u9168\u6223\u6225\u6224\u63C5\u63F1\u63EB\u6410\u6412\u6409\u6420\u6424"], ["dda1", "\u6433\u6443\u641F\u6415\u6418\u6439\u6437\u6422\u6423\u640C\u6426\u6430\u6428\u6441\u6435\u642F\u640A\u641A\u6440\u6425\u6427\u640B\u63E7\u641B\u642E\u6421\u640E\u656F\u6592\u65D3\u6686\u668C\u6695\u6690\u668B\u668A\u6699\u6694\u6678\u6720\u6966\u695F\u6938\u694E\u6962\u6971\u693F\u6945\u696A\u6939\u6942\u6957\u6959\u697A\u6948\u6949\u6935\u696C\u6933\u693D\u6965\u68F0\u6978\u6934\u6969\u6940\u696F\u6944\u6976\u6958\u6941\u6974\u694C\u693B\u694B\u6937\u695C\u694F\u6951\u6932\u6952\u692F\u697B\u693C\u6B46\u6B45\u6B43\u6B42\u6B48\u6B41\u6B9B\uFA0D\u6BFB\u6BFC"], ["de40", "\u6BF9\u6BF7\u6BF8\u6E9B\u6ED6\u6EC8\u6E8F\u6EC0\u6E9F\u6E93\u6E94\u6EA0\u6EB1\u6EB9\u6EC6\u6ED2\u6EBD\u6EC1\u6E9E\u6EC9\u6EB7\u6EB0\u6ECD\u6EA6\u6ECF\u6EB2\u6EBE\u6EC3\u6EDC\u6ED8\u6E99\u6E92\u6E8E\u6E8D\u6EA4\u6EA1\u6EBF\u6EB3\u6ED0\u6ECA\u6E97\u6EAE\u6EA3\u7147\u7154\u7152\u7163\u7160\u7141\u715D\u7162\u7172\u7178\u716A\u7161\u7142\u7158\u7143\u714B\u7170\u715F\u7150\u7153"], ["dea1", "\u7144\u714D\u715A\u724F\u728D\u728C\u7291\u7290\u728E\u733C\u7342\u733B\u733A\u7340\u734A\u7349\u7444\u744A\u744B\u7452\u7451\u7457\u7440\u744F\u7450\u744E\u7442\u7446\u744D\u7454\u74E1\u74FF\u74FE\u74FD\u751D\u7579\u7577\u6983\u75EF\u760F\u7603\u75F7\u75FE\u75FC\u75F9\u75F8\u7610\u75FB\u75F6\u75ED\u75F5\u75FD\u7699\u76B5\u76DD\u7755\u775F\u7760\u7752\u7756\u775A\u7769\u7767\u7754\u7759\u776D\u77E0\u7887\u789A\u7894\u788F\u7884\u7895\u7885\u7886\u78A1\u7883\u7879\u7899\u7880\u7896\u787B\u797C\u7982\u797D\u7979\u7A11\u7A18\u7A19\u7A12\u7A17\u7A15\u7A22\u7A13"], ["df40", "\u7A1B\u7A10\u7AA3\u7AA2\u7A9E\u7AEB\u7B66\u7B64\u7B6D\u7B74\u7B69\u7B72\u7B65\u7B73\u7B71\u7B70\u7B61\u7B78\u7B76\u7B63\u7CB2\u7CB4\u7CAF\u7D88\u7D86\u7D80\u7D8D\u7D7F\u7D85\u7D7A\u7D8E\u7D7B\u7D83\u7D7C\u7D8C\u7D94\u7D84\u7D7D\u7D92\u7F6D\u7F6B\u7F67\u7F68\u7F6C\u7FA6\u7FA5\u7FA7\u7FDB\u7FDC\u8021\u8164\u8160\u8177\u815C\u8169\u815B\u8162\u8172\u6721\u815E\u8176\u8167\u816F"], ["dfa1", "\u8144\u8161\u821D\u8249\u8244\u8240\u8242\u8245\u84F1\u843F\u8456\u8476\u8479\u848F\u848D\u8465\u8451\u8440\u8486\u8467\u8430\u844D\u847D\u845A\u8459\u8474\u8473\u845D\u8507\u845E\u8437\u843A\u8434\u847A\u8443\u8478\u8432\u8445\u8429\u83D9\u844B\u842F\u8442\u842D\u845F\u8470\u8439\u844E\u844C\u8452\u846F\u84C5\u848E\u843B\u8447\u8436\u8433\u8468\u847E\u8444\u842B\u8460\u8454\u846E\u8450\u870B\u8704\u86F7\u870C\u86FA\u86D6\u86F5\u874D\u86F8\u870E\u8709\u8701\u86F6\u870D\u8705\u88D6\u88CB\u88CD\u88CE\u88DE\u88DB\u88DA\u88CC\u88D0\u8985\u899B\u89DF\u89E5\u89E4"], ["e040", "\u89E1\u89E0\u89E2\u89DC\u89E6\u8A76\u8A86\u8A7F\u8A61\u8A3F\u8A77\u8A82\u8A84\u8A75\u8A83\u8A81\u8A74\u8A7A\u8C3C\u8C4B\u8C4A\u8C65\u8C64\u8C66\u8C86\u8C84\u8C85\u8CCC\u8D68\u8D69\u8D91\u8D8C\u8D8E\u8D8F\u8D8D\u8D93\u8D94\u8D90\u8D92\u8DF0\u8DE0\u8DEC\u8DF1\u8DEE\u8DD0\u8DE9\u8DE3\u8DE2\u8DE7\u8DF2\u8DEB\u8DF4\u8F06\u8EFF\u8F01\u8F00\u8F05\u8F07\u8F08\u8F02\u8F0B\u9052\u903F"], ["e0a1", "\u9044\u9049\u903D\u9110\u910D\u910F\u9111\u9116\u9114\u910B\u910E\u916E\u916F\u9248\u9252\u9230\u923A\u9266\u9233\u9265\u925E\u9283\u922E\u924A\u9246\u926D\u926C\u924F\u9260\u9267\u926F\u9236\u9261\u9270\u9231\u9254\u9263\u9250\u9272\u924E\u9253\u924C\u9256\u9232\u959F\u959C\u959E\u959B\u9692\u9693\u9691\u9697\u96CE\u96FA\u96FD\u96F8\u96F5\u9773\u9777\u9778\u9772\u980F\u980D\u980E\u98AC\u98F6\u98F9\u99AF\u99B2\u99B0\u99B5\u9AAD\u9AAB\u9B5B\u9CEA\u9CED\u9CE7\u9E80\u9EFD\u50E6\u50D4\u50D7\u50E8\u50F3\u50DB\u50EA\u50DD\u50E4\u50D3\u50EC\u50F0\u50EF\u50E3\u50E0"], ["e140", "\u51D8\u5280\u5281\u52E9\u52EB\u5330\u53AC\u5627\u5615\u560C\u5612\u55FC\u560F\u561C\u5601\u5613\u5602\u55FA\u561D\u5604\u55FF\u55F9\u5889\u587C\u5890\u5898\u5886\u5881\u587F\u5874\u588B\u587A\u5887\u5891\u588E\u5876\u5882\u5888\u587B\u5894\u588F\u58FE\u596B\u5ADC\u5AEE\u5AE5\u5AD5\u5AEA\u5ADA\u5AED\u5AEB\u5AF3\u5AE2\u5AE0\u5ADB\u5AEC\u5ADE\u5ADD\u5AD9\u5AE8\u5ADF\u5B77\u5BE0"], ["e1a1", "\u5BE3\u5C63\u5D82\u5D80\u5D7D\u5D86\u5D7A\u5D81\u5D77\u5D8A\u5D89\u5D88\u5D7E\u5D7C\u5D8D\u5D79\u5D7F\u5E58\u5E59\u5E53\u5ED8\u5ED1\u5ED7\u5ECE\u5EDC\u5ED5\u5ED9\u5ED2\u5ED4\u5F44\u5F43\u5F6F\u5FB6\u612C\u6128\u6141\u615E\u6171\u6173\u6152\u6153\u6172\u616C\u6180\u6174\u6154\u617A\u615B\u6165\u613B\u616A\u6161\u6156\u6229\u6227\u622B\u642B\u644D\u645B\u645D\u6474\u6476\u6472\u6473\u647D\u6475\u6466\u64A6\u644E\u6482\u645E\u645C\u644B\u6453\u6460\u6450\u647F\u643F\u646C\u646B\u6459\u6465\u6477\u6573\u65A0\u66A1\u66A0\u669F\u6705\u6704\u6722\u69B1\u69B6\u69C9"], ["e240", "\u69A0\u69CE\u6996\u69B0\u69AC\u69BC\u6991\u6999\u698E\u69A7\u698D\u69A9\u69BE\u69AF\u69BF\u69C4\u69BD\u69A4\u69D4\u69B9\u69CA\u699A\u69CF\u69B3\u6993\u69AA\u69A1\u699E\u69D9\u6997\u6990\u69C2\u69B5\u69A5\u69C6\u6B4A\u6B4D\u6B4B\u6B9E\u6B9F\u6BA0\u6BC3\u6BC4\u6BFE\u6ECE\u6EF5\u6EF1\u6F03\u6F25\u6EF8\u6F37\u6EFB\u6F2E\u6F09\u6F4E\u6F19\u6F1A\u6F27\u6F18\u6F3B\u6F12\u6EED\u6F0A"], ["e2a1", "\u6F36\u6F73\u6EF9\u6EEE\u6F2D\u6F40\u6F30\u6F3C\u6F35\u6EEB\u6F07\u6F0E\u6F43\u6F05\u6EFD\u6EF6\u6F39\u6F1C\u6EFC\u6F3A\u6F1F\u6F0D\u6F1E\u6F08\u6F21\u7187\u7190\u7189\u7180\u7185\u7182\u718F\u717B\u7186\u7181\u7197\u7244\u7253\u7297\u7295\u7293\u7343\u734D\u7351\u734C\u7462\u7473\u7471\u7475\u7472\u7467\u746E\u7500\u7502\u7503\u757D\u7590\u7616\u7608\u760C\u7615\u7611\u760A\u7614\u76B8\u7781\u777C\u7785\u7782\u776E\u7780\u776F\u777E\u7783\u78B2\u78AA\u78B4\u78AD\u78A8\u787E\u78AB\u789E\u78A5\u78A0\u78AC\u78A2\u78A4\u7998\u798A\u798B\u7996\u7995\u7994\u7993"], ["e340", "\u7997\u7988\u7992\u7990\u7A2B\u7A4A\u7A30\u7A2F\u7A28\u7A26\u7AA8\u7AAB\u7AAC\u7AEE\u7B88\u7B9C\u7B8A\u7B91\u7B90\u7B96\u7B8D\u7B8C\u7B9B\u7B8E\u7B85\u7B98\u5284\u7B99\u7BA4\u7B82\u7CBB\u7CBF\u7CBC\u7CBA\u7DA7\u7DB7\u7DC2\u7DA3\u7DAA\u7DC1\u7DC0\u7DC5\u7D9D\u7DCE\u7DC4\u7DC6\u7DCB\u7DCC\u7DAF\u7DB9\u7D96\u7DBC\u7D9F\u7DA6\u7DAE\u7DA9\u7DA1\u7DC9\u7F73\u7FE2\u7FE3\u7FE5\u7FDE"], ["e3a1", "\u8024\u805D\u805C\u8189\u8186\u8183\u8187\u818D\u818C\u818B\u8215\u8497\u84A4\u84A1\u849F\u84BA\u84CE\u84C2\u84AC\u84AE\u84AB\u84B9\u84B4\u84C1\u84CD\u84AA\u849A\u84B1\u84D0\u849D\u84A7\u84BB\u84A2\u8494\u84C7\u84CC\u849B\u84A9\u84AF\u84A8\u84D6\u8498\u84B6\u84CF\u84A0\u84D7\u84D4\u84D2\u84DB\u84B0\u8491\u8661\u8733\u8723\u8728\u876B\u8740\u872E\u871E\u8721\u8719\u871B\u8743\u872C\u8741\u873E\u8746\u8720\u8732\u872A\u872D\u873C\u8712\u873A\u8731\u8735\u8742\u8726\u8727\u8738\u8724\u871A\u8730\u8711\u88F7\u88E7\u88F1\u88F2\u88FA\u88FE\u88EE\u88FC\u88F6\u88FB"], ["e440", "\u88F0\u88EC\u88EB\u899D\u89A1\u899F\u899E\u89E9\u89EB\u89E8\u8AAB\u8A99\u8A8B\u8A92\u8A8F\u8A96\u8C3D\u8C68\u8C69\u8CD5\u8CCF\u8CD7\u8D96\u8E09\u8E02\u8DFF\u8E0D\u8DFD\u8E0A\u8E03\u8E07\u8E06\u8E05\u8DFE\u8E00\u8E04\u8F10\u8F11\u8F0E\u8F0D\u9123\u911C\u9120\u9122\u911F\u911D\u911A\u9124\u9121\u911B\u917A\u9172\u9179\u9173\u92A5\u92A4\u9276\u929B\u927A\u92A0\u9294\u92AA\u928D"], ["e4a1", "\u92A6\u929A\u92AB\u9279\u9297\u927F\u92A3\u92EE\u928E\u9282\u9295\u92A2\u927D\u9288\u92A1\u928A\u9286\u928C\u9299\u92A7\u927E\u9287\u92A9\u929D\u928B\u922D\u969E\u96A1\u96FF\u9758\u977D\u977A\u977E\u9783\u9780\u9782\u977B\u9784\u9781\u977F\u97CE\u97CD\u9816\u98AD\u98AE\u9902\u9900\u9907\u999D\u999C\u99C3\u99B9\u99BB\u99BA\u99C2\u99BD\u99C7\u9AB1\u9AE3\u9AE7\u9B3E\u9B3F\u9B60\u9B61\u9B5F\u9CF1\u9CF2\u9CF5\u9EA7\u50FF\u5103\u5130\u50F8\u5106\u5107\u50F6\u50FE\u510B\u510C\u50FD\u510A\u528B\u528C\u52F1\u52EF\u5648\u5642\u564C\u5635\u5641\u564A\u5649\u5646\u5658"], ["e540", "\u565A\u5640\u5633\u563D\u562C\u563E\u5638\u562A\u563A\u571A\u58AB\u589D\u58B1\u58A0\u58A3\u58AF\u58AC\u58A5\u58A1\u58FF\u5AFF\u5AF4\u5AFD\u5AF7\u5AF6\u5B03\u5AF8\u5B02\u5AF9\u5B01\u5B07\u5B05\u5B0F\u5C67\u5D99\u5D97\u5D9F\u5D92\u5DA2\u5D93\u5D95\u5DA0\u5D9C\u5DA1\u5D9A\u5D9E\u5E69\u5E5D\u5E60\u5E5C\u7DF3\u5EDB\u5EDE\u5EE1\u5F49\u5FB2\u618B\u6183\u6179\u61B1\u61B0\u61A2\u6189"], ["e5a1", "\u619B\u6193\u61AF\u61AD\u619F\u6192\u61AA\u61A1\u618D\u6166\u61B3\u622D\u646E\u6470\u6496\u64A0\u6485\u6497\u649C\u648F\u648B\u648A\u648C\u64A3\u649F\u6468\u64B1\u6498\u6576\u657A\u6579\u657B\u65B2\u65B3\u66B5\u66B0\u66A9\u66B2\u66B7\u66AA\u66AF\u6A00\u6A06\u6A17\u69E5\u69F8\u6A15\u69F1\u69E4\u6A20\u69FF\u69EC\u69E2\u6A1B\u6A1D\u69FE\u6A27\u69F2\u69EE\u6A14\u69F7\u69E7\u6A40\u6A08\u69E6\u69FB\u6A0D\u69FC\u69EB\u6A09\u6A04\u6A18\u6A25\u6A0F\u69F6\u6A26\u6A07\u69F4\u6A16\u6B51\u6BA5\u6BA3\u6BA2\u6BA6\u6C01\u6C00\u6BFF\u6C02\u6F41\u6F26\u6F7E\u6F87\u6FC6\u6F92"], ["e640", "\u6F8D\u6F89\u6F8C\u6F62\u6F4F\u6F85\u6F5A\u6F96\u6F76\u6F6C\u6F82\u6F55\u6F72\u6F52\u6F50\u6F57\u6F94\u6F93\u6F5D\u6F00\u6F61\u6F6B\u6F7D\u6F67\u6F90\u6F53\u6F8B\u6F69\u6F7F\u6F95\u6F63\u6F77\u6F6A\u6F7B\u71B2\u71AF\u719B\u71B0\u71A0\u719A\u71A9\u71B5\u719D\u71A5\u719E\u71A4\u71A1\u71AA\u719C\u71A7\u71B3\u7298\u729A\u7358\u7352\u735E\u735F\u7360\u735D\u735B\u7361\u735A\u7359"], ["e6a1", "\u7362\u7487\u7489\u748A\u7486\u7481\u747D\u7485\u7488\u747C\u7479\u7508\u7507\u757E\u7625\u761E\u7619\u761D\u761C\u7623\u761A\u7628\u761B\u769C\u769D\u769E\u769B\u778D\u778F\u7789\u7788\u78CD\u78BB\u78CF\u78CC\u78D1\u78CE\u78D4\u78C8\u78C3\u78C4\u78C9\u799A\u79A1\u79A0\u799C\u79A2\u799B\u6B76\u7A39\u7AB2\u7AB4\u7AB3\u7BB7\u7BCB\u7BBE\u7BAC\u7BCE\u7BAF\u7BB9\u7BCA\u7BB5\u7CC5\u7CC8\u7CCC\u7CCB\u7DF7\u7DDB\u7DEA\u7DE7\u7DD7\u7DE1\u7E03\u7DFA\u7DE6\u7DF6\u7DF1\u7DF0\u7DEE\u7DDF\u7F76\u7FAC\u7FB0\u7FAD\u7FED\u7FEB\u7FEA\u7FEC\u7FE6\u7FE8\u8064\u8067\u81A3\u819F"], ["e740", "\u819E\u8195\u81A2\u8199\u8197\u8216\u824F\u8253\u8252\u8250\u824E\u8251\u8524\u853B\u850F\u8500\u8529\u850E\u8509\u850D\u851F\u850A\u8527\u851C\u84FB\u852B\u84FA\u8508\u850C\u84F4\u852A\u84F2\u8515\u84F7\u84EB\u84F3\u84FC\u8512\u84EA\u84E9\u8516\u84FE\u8528\u851D\u852E\u8502\u84FD\u851E\u84F6\u8531\u8526\u84E7\u84E8\u84F0\u84EF\u84F9\u8518\u8520\u8530\u850B\u8519\u852F\u8662"], ["e7a1", "\u8756\u8763\u8764\u8777\u87E1\u8773\u8758\u8754\u875B\u8752\u8761\u875A\u8751\u875E\u876D\u876A\u8750\u874E\u875F\u875D\u876F\u876C\u877A\u876E\u875C\u8765\u874F\u877B\u8775\u8762\u8767\u8769\u885A\u8905\u890C\u8914\u890B\u8917\u8918\u8919\u8906\u8916\u8911\u890E\u8909\u89A2\u89A4\u89A3\u89ED\u89F0\u89EC\u8ACF\u8AC6\u8AB8\u8AD3\u8AD1\u8AD4\u8AD5\u8ABB\u8AD7\u8ABE\u8AC0\u8AC5\u8AD8\u8AC3\u8ABA\u8ABD\u8AD9\u8C3E\u8C4D\u8C8F\u8CE5\u8CDF\u8CD9\u8CE8\u8CDA\u8CDD\u8CE7\u8DA0\u8D9C\u8DA1\u8D9B\u8E20\u8E23\u8E25\u8E24\u8E2E\u8E15\u8E1B\u8E16\u8E11\u8E19\u8E26\u8E27"], ["e840", "\u8E14\u8E12\u8E18\u8E13\u8E1C\u8E17\u8E1A\u8F2C\u8F24\u8F18\u8F1A\u8F20\u8F23\u8F16\u8F17\u9073\u9070\u906F\u9067\u906B\u912F\u912B\u9129\u912A\u9132\u9126\u912E\u9185\u9186\u918A\u9181\u9182\u9184\u9180\u92D0\u92C3\u92C4\u92C0\u92D9\u92B6\u92CF\u92F1\u92DF\u92D8\u92E9\u92D7\u92DD\u92CC\u92EF\u92C2\u92E8\u92CA\u92C8\u92CE\u92E6\u92CD\u92D5\u92C9\u92E0\u92DE\u92E7\u92D1\u92D3"], ["e8a1", "\u92B5\u92E1\u92C6\u92B4\u957C\u95AC\u95AB\u95AE\u95B0\u96A4\u96A2\u96D3\u9705\u9708\u9702\u975A\u978A\u978E\u9788\u97D0\u97CF\u981E\u981D\u9826\u9829\u9828\u9820\u981B\u9827\u98B2\u9908\u98FA\u9911\u9914\u9916\u9917\u9915\u99DC\u99CD\u99CF\u99D3\u99D4\u99CE\u99C9\u99D6\u99D8\u99CB\u99D7\u99CC\u9AB3\u9AEC\u9AEB\u9AF3\u9AF2\u9AF1\u9B46\u9B43\u9B67\u9B74\u9B71\u9B66\u9B76\u9B75\u9B70\u9B68\u9B64\u9B6C\u9CFC\u9CFA\u9CFD\u9CFF\u9CF7\u9D07\u9D00\u9CF9\u9CFB\u9D08\u9D05\u9D04\u9E83\u9ED3\u9F0F\u9F10\u511C\u5113\u5117\u511A\u5111\u51DE\u5334\u53E1\u5670\u5660\u566E"], ["e940", "\u5673\u5666\u5663\u566D\u5672\u565E\u5677\u571C\u571B\u58C8\u58BD\u58C9\u58BF\u58BA\u58C2\u58BC\u58C6\u5B17\u5B19\u5B1B\u5B21\u5B14\u5B13\u5B10\u5B16\u5B28\u5B1A\u5B20\u5B1E\u5BEF\u5DAC\u5DB1\u5DA9\u5DA7\u5DB5\u5DB0\u5DAE\u5DAA\u5DA8\u5DB2\u5DAD\u5DAF\u5DB4\u5E67\u5E68\u5E66\u5E6F\u5EE9\u5EE7\u5EE6\u5EE8\u5EE5\u5F4B\u5FBC\u619D\u61A8\u6196\u61C5\u61B4\u61C6\u61C1\u61CC\u61BA"], ["e9a1", "\u61BF\u61B8\u618C\u64D7\u64D6\u64D0\u64CF\u64C9\u64BD\u6489\u64C3\u64DB\u64F3\u64D9\u6533\u657F\u657C\u65A2\u66C8\u66BE\u66C0\u66CA\u66CB\u66CF\u66BD\u66BB\u66BA\u66CC\u6723\u6A34\u6A66\u6A49\u6A67\u6A32\u6A68\u6A3E\u6A5D\u6A6D\u6A76\u6A5B\u6A51\u6A28\u6A5A\u6A3B\u6A3F\u6A41\u6A6A\u6A64\u6A50\u6A4F\u6A54\u6A6F\u6A69\u6A60\u6A3C\u6A5E\u6A56\u6A55\u6A4D\u6A4E\u6A46\u6B55\u6B54\u6B56\u6BA7\u6BAA\u6BAB\u6BC8\u6BC7\u6C04\u6C03\u6C06\u6FAD\u6FCB\u6FA3\u6FC7\u6FBC\u6FCE\u6FC8\u6F5E\u6FC4\u6FBD\u6F9E\u6FCA\u6FA8\u7004\u6FA5\u6FAE\u6FBA\u6FAC\u6FAA\u6FCF\u6FBF\u6FB8"], ["ea40", "\u6FA2\u6FC9\u6FAB\u6FCD\u6FAF\u6FB2\u6FB0\u71C5\u71C2\u71BF\u71B8\u71D6\u71C0\u71C1\u71CB\u71D4\u71CA\u71C7\u71CF\u71BD\u71D8\u71BC\u71C6\u71DA\u71DB\u729D\u729E\u7369\u7366\u7367\u736C\u7365\u736B\u736A\u747F\u749A\u74A0\u7494\u7492\u7495\u74A1\u750B\u7580\u762F\u762D\u7631\u763D\u7633\u763C\u7635\u7632\u7630\u76BB\u76E6\u779A\u779D\u77A1\u779C\u779B\u77A2\u77A3\u7795\u7799"], ["eaa1", "\u7797\u78DD\u78E9\u78E5\u78EA\u78DE\u78E3\u78DB\u78E1\u78E2\u78ED\u78DF\u78E0\u79A4\u7A44\u7A48\u7A47\u7AB6\u7AB8\u7AB5\u7AB1\u7AB7\u7BDE\u7BE3\u7BE7\u7BDD\u7BD5\u7BE5\u7BDA\u7BE8\u7BF9\u7BD4\u7BEA\u7BE2\u7BDC\u7BEB\u7BD8\u7BDF\u7CD2\u7CD4\u7CD7\u7CD0\u7CD1\u7E12\u7E21\u7E17\u7E0C\u7E1F\u7E20\u7E13\u7E0E\u7E1C\u7E15\u7E1A\u7E22\u7E0B\u7E0F\u7E16\u7E0D\u7E14\u7E25\u7E24\u7F43\u7F7B\u7F7C\u7F7A\u7FB1\u7FEF\u802A\u8029\u806C\u81B1\u81A6\u81AE\u81B9\u81B5\u81AB\u81B0\u81AC\u81B4\u81B2\u81B7\u81A7\u81F2\u8255\u8256\u8257\u8556\u8545\u856B\u854D\u8553\u8561\u8558"], ["eb40", "\u8540\u8546\u8564\u8541\u8562\u8544\u8551\u8547\u8563\u853E\u855B\u8571\u854E\u856E\u8575\u8555\u8567\u8560\u858C\u8566\u855D\u8554\u8565\u856C\u8663\u8665\u8664\u879B\u878F\u8797\u8793\u8792\u8788\u8781\u8796\u8798\u8779\u8787\u87A3\u8785\u8790\u8791\u879D\u8784\u8794\u879C\u879A\u8789\u891E\u8926\u8930\u892D\u892E\u8927\u8931\u8922\u8929\u8923\u892F\u892C\u891F\u89F1\u8AE0"], ["eba1", "\u8AE2\u8AF2\u8AF4\u8AF5\u8ADD\u8B14\u8AE4\u8ADF\u8AF0\u8AC8\u8ADE\u8AE1\u8AE8\u8AFF\u8AEF\u8AFB\u8C91\u8C92\u8C90\u8CF5\u8CEE\u8CF1\u8CF0\u8CF3\u8D6C\u8D6E\u8DA5\u8DA7\u8E33\u8E3E\u8E38\u8E40\u8E45\u8E36\u8E3C\u8E3D\u8E41\u8E30\u8E3F\u8EBD\u8F36\u8F2E\u8F35\u8F32\u8F39\u8F37\u8F34\u9076\u9079\u907B\u9086\u90FA\u9133\u9135\u9136\u9193\u9190\u9191\u918D\u918F\u9327\u931E\u9308\u931F\u9306\u930F\u937A\u9338\u933C\u931B\u9323\u9312\u9301\u9346\u932D\u930E\u930D\u92CB\u931D\u92FA\u9325\u9313\u92F9\u92F7\u9334\u9302\u9324\u92FF\u9329\u9339\u9335\u932A\u9314\u930C"], ["ec40", "\u930B\u92FE\u9309\u9300\u92FB\u9316\u95BC\u95CD\u95BE\u95B9\u95BA\u95B6\u95BF\u95B5\u95BD\u96A9\u96D4\u970B\u9712\u9710\u9799\u9797\u9794\u97F0\u97F8\u9835\u982F\u9832\u9924\u991F\u9927\u9929\u999E\u99EE\u99EC\u99E5\u99E4\u99F0\u99E3\u99EA\u99E9\u99E7\u9AB9\u9ABF\u9AB4\u9ABB\u9AF6\u9AFA\u9AF9\u9AF7\u9B33\u9B80\u9B85\u9B87\u9B7C\u9B7E\u9B7B\u9B82\u9B93\u9B92\u9B90\u9B7A\u9B95"], ["eca1", "\u9B7D\u9B88\u9D25\u9D17\u9D20\u9D1E\u9D14\u9D29\u9D1D\u9D18\u9D22\u9D10\u9D19\u9D1F\u9E88\u9E86\u9E87\u9EAE\u9EAD\u9ED5\u9ED6\u9EFA\u9F12\u9F3D\u5126\u5125\u5122\u5124\u5120\u5129\u52F4\u5693\u568C\u568D\u5686\u5684\u5683\u567E\u5682\u567F\u5681\u58D6\u58D4\u58CF\u58D2\u5B2D\u5B25\u5B32\u5B23\u5B2C\u5B27\u5B26\u5B2F\u5B2E\u5B7B\u5BF1\u5BF2\u5DB7\u5E6C\u5E6A\u5FBE\u5FBB\u61C3\u61B5\u61BC\u61E7\u61E0\u61E5\u61E4\u61E8\u61DE\u64EF\u64E9\u64E3\u64EB\u64E4\u64E8\u6581\u6580\u65B6\u65DA\u66D2\u6A8D\u6A96\u6A81\u6AA5\u6A89\u6A9F\u6A9B\u6AA1\u6A9E\u6A87\u6A93\u6A8E"], ["ed40", "\u6A95\u6A83\u6AA8\u6AA4\u6A91\u6A7F\u6AA6\u6A9A\u6A85\u6A8C\u6A92\u6B5B\u6BAD\u6C09\u6FCC\u6FA9\u6FF4\u6FD4\u6FE3\u6FDC\u6FED\u6FE7\u6FE6\u6FDE\u6FF2\u6FDD\u6FE2\u6FE8\u71E1\u71F1\u71E8\u71F2\u71E4\u71F0\u71E2\u7373\u736E\u736F\u7497\u74B2\u74AB\u7490\u74AA\u74AD\u74B1\u74A5\u74AF\u7510\u7511\u7512\u750F\u7584\u7643\u7648\u7649\u7647\u76A4\u76E9\u77B5\u77AB\u77B2\u77B7\u77B6"], ["eda1", "\u77B4\u77B1\u77A8\u77F0\u78F3\u78FD\u7902\u78FB\u78FC\u78F2\u7905\u78F9\u78FE\u7904\u79AB\u79A8\u7A5C\u7A5B\u7A56\u7A58\u7A54\u7A5A\u7ABE\u7AC0\u7AC1\u7C05\u7C0F\u7BF2\u7C00\u7BFF\u7BFB\u7C0E\u7BF4\u7C0B\u7BF3\u7C02\u7C09\u7C03\u7C01\u7BF8\u7BFD\u7C06\u7BF0\u7BF1\u7C10\u7C0A\u7CE8\u7E2D\u7E3C\u7E42\u7E33\u9848\u7E38\u7E2A\u7E49\u7E40\u7E47\u7E29\u7E4C\u7E30\u7E3B\u7E36\u7E44\u7E3A\u7F45\u7F7F\u7F7E\u7F7D\u7FF4\u7FF2\u802C\u81BB\u81C4\u81CC\u81CA\u81C5\u81C7\u81BC\u81E9\u825B\u825A\u825C\u8583\u8580\u858F\u85A7\u8595\u85A0\u858B\u85A3\u857B\u85A4\u859A\u859E"], ["ee40", "\u8577\u857C\u8589\u85A1\u857A\u8578\u8557\u858E\u8596\u8586\u858D\u8599\u859D\u8581\u85A2\u8582\u8588\u8585\u8579\u8576\u8598\u8590\u859F\u8668\u87BE\u87AA\u87AD\u87C5\u87B0\u87AC\u87B9\u87B5\u87BC\u87AE\u87C9\u87C3\u87C2\u87CC\u87B7\u87AF\u87C4\u87CA\u87B4\u87B6\u87BF\u87B8\u87BD\u87DE\u87B2\u8935\u8933\u893C\u893E\u8941\u8952\u8937\u8942\u89AD\u89AF\u89AE\u89F2\u89F3\u8B1E"], ["eea1", "\u8B18\u8B16\u8B11\u8B05\u8B0B\u8B22\u8B0F\u8B12\u8B15\u8B07\u8B0D\u8B08\u8B06\u8B1C\u8B13\u8B1A\u8C4F\u8C70\u8C72\u8C71\u8C6F\u8C95\u8C94\u8CF9\u8D6F\u8E4E\u8E4D\u8E53\u8E50\u8E4C\u8E47\u8F43\u8F40\u9085\u907E\u9138\u919A\u91A2\u919B\u9199\u919F\u91A1\u919D\u91A0\u93A1\u9383\u93AF\u9364\u9356\u9347\u937C\u9358\u935C\u9376\u9349\u9350\u9351\u9360\u936D\u938F\u934C\u936A\u9379\u9357\u9355\u9352\u934F\u9371\u9377\u937B\u9361\u935E\u9363\u9367\u9380\u934E\u9359\u95C7\u95C0\u95C9\u95C3\u95C5\u95B7\u96AE\u96B0\u96AC\u9720\u971F\u9718\u971D\u9719\u979A\u97A1\u979C"], ["ef40", "\u979E\u979D\u97D5\u97D4\u97F1\u9841\u9844\u984A\u9849\u9845\u9843\u9925\u992B\u992C\u992A\u9933\u9932\u992F\u992D\u9931\u9930\u9998\u99A3\u99A1\u9A02\u99FA\u99F4\u99F7\u99F9\u99F8\u99F6\u99FB\u99FD\u99FE\u99FC\u9A03\u9ABE\u9AFE\u9AFD\u9B01\u9AFC\u9B48\u9B9A\u9BA8\u9B9E\u9B9B\u9BA6\u9BA1\u9BA5\u9BA4\u9B86\u9BA2\u9BA0\u9BAF\u9D33\u9D41\u9D67\u9D36\u9D2E\u9D2F\u9D31\u9D38\u9D30"], ["efa1", "\u9D45\u9D42\u9D43\u9D3E\u9D37\u9D40\u9D3D\u7FF5\u9D2D\u9E8A\u9E89\u9E8D\u9EB0\u9EC8\u9EDA\u9EFB\u9EFF\u9F24\u9F23\u9F22\u9F54\u9FA0\u5131\u512D\u512E\u5698\u569C\u5697\u569A\u569D\u5699\u5970\u5B3C\u5C69\u5C6A\u5DC0\u5E6D\u5E6E\u61D8\u61DF\u61ED\u61EE\u61F1\u61EA\u61F0\u61EB\u61D6\u61E9\u64FF\u6504\u64FD\u64F8\u6501\u6503\u64FC\u6594\u65DB\u66DA\u66DB\u66D8\u6AC5\u6AB9\u6ABD\u6AE1\u6AC6\u6ABA\u6AB6\u6AB7\u6AC7\u6AB4\u6AAD\u6B5E\u6BC9\u6C0B\u7007\u700C\u700D\u7001\u7005\u7014\u700E\u6FFF\u7000\u6FFB\u7026\u6FFC\u6FF7\u700A\u7201\u71FF\u71F9\u7203\u71FD\u7376"], ["f040", "\u74B8\u74C0\u74B5\u74C1\u74BE\u74B6\u74BB\u74C2\u7514\u7513\u765C\u7664\u7659\u7650\u7653\u7657\u765A\u76A6\u76BD\u76EC\u77C2\u77BA\u78FF\u790C\u7913\u7914\u7909\u7910\u7912\u7911\u79AD\u79AC\u7A5F\u7C1C\u7C29\u7C19\u7C20\u7C1F\u7C2D\u7C1D\u7C26\u7C28\u7C22\u7C25\u7C30\u7E5C\u7E50\u7E56\u7E63\u7E58\u7E62\u7E5F\u7E51\u7E60\u7E57\u7E53\u7FB5\u7FB3\u7FF7\u7FF8\u8075\u81D1\u81D2"], ["f0a1", "\u81D0\u825F\u825E\u85B4\u85C6\u85C0\u85C3\u85C2\u85B3\u85B5\u85BD\u85C7\u85C4\u85BF\u85CB\u85CE\u85C8\u85C5\u85B1\u85B6\u85D2\u8624\u85B8\u85B7\u85BE\u8669\u87E7\u87E6\u87E2\u87DB\u87EB\u87EA\u87E5\u87DF\u87F3\u87E4\u87D4\u87DC\u87D3\u87ED\u87D8\u87E3\u87A4\u87D7\u87D9\u8801\u87F4\u87E8\u87DD\u8953\u894B\u894F\u894C\u8946\u8950\u8951\u8949\u8B2A\u8B27\u8B23\u8B33\u8B30\u8B35\u8B47\u8B2F\u8B3C\u8B3E\u8B31\u8B25\u8B37\u8B26\u8B36\u8B2E\u8B24\u8B3B\u8B3D\u8B3A\u8C42\u8C75\u8C99\u8C98\u8C97\u8CFE\u8D04\u8D02\u8D00\u8E5C\u8E62\u8E60\u8E57\u8E56\u8E5E\u8E65\u8E67"], ["f140", "\u8E5B\u8E5A\u8E61\u8E5D\u8E69\u8E54\u8F46\u8F47\u8F48\u8F4B\u9128\u913A\u913B\u913E\u91A8\u91A5\u91A7\u91AF\u91AA\u93B5\u938C\u9392\u93B7\u939B\u939D\u9389\u93A7\u938E\u93AA\u939E\u93A6\u9395\u9388\u9399\u939F\u938D\u93B1\u9391\u93B2\u93A4\u93A8\u93B4\u93A3\u93A5\u95D2\u95D3\u95D1\u96B3\u96D7\u96DA\u5DC2\u96DF\u96D8\u96DD\u9723\u9722\u9725\u97AC\u97AE\u97A8\u97AB\u97A4\u97AA"], ["f1a1", "\u97A2\u97A5\u97D7\u97D9\u97D6\u97D8\u97FA\u9850\u9851\u9852\u98B8\u9941\u993C\u993A\u9A0F\u9A0B\u9A09\u9A0D\u9A04\u9A11\u9A0A\u9A05\u9A07\u9A06\u9AC0\u9ADC\u9B08\u9B04\u9B05\u9B29\u9B35\u9B4A\u9B4C\u9B4B\u9BC7\u9BC6\u9BC3\u9BBF\u9BC1\u9BB5\u9BB8\u9BD3\u9BB6\u9BC4\u9BB9\u9BBD\u9D5C\u9D53\u9D4F\u9D4A\u9D5B\u9D4B\u9D59\u9D56\u9D4C\u9D57\u9D52\u9D54\u9D5F\u9D58\u9D5A\u9E8E\u9E8C\u9EDF\u9F01\u9F00\u9F16\u9F25\u9F2B\u9F2A\u9F29\u9F28\u9F4C\u9F55\u5134\u5135\u5296\u52F7\u53B4\u56AB\u56AD\u56A6\u56A7\u56AA\u56AC\u58DA\u58DD\u58DB\u5912\u5B3D\u5B3E\u5B3F\u5DC3\u5E70"], ["f240", "\u5FBF\u61FB\u6507\u6510\u650D\u6509\u650C\u650E\u6584\u65DE\u65DD\u66DE\u6AE7\u6AE0\u6ACC\u6AD1\u6AD9\u6ACB\u6ADF\u6ADC\u6AD0\u6AEB\u6ACF\u6ACD\u6ADE\u6B60\u6BB0\u6C0C\u7019\u7027\u7020\u7016\u702B\u7021\u7022\u7023\u7029\u7017\u7024\u701C\u702A\u720C\u720A\u7207\u7202\u7205\u72A5\u72A6\u72A4\u72A3\u72A1\u74CB\u74C5\u74B7\u74C3\u7516\u7660\u77C9\u77CA\u77C4\u77F1\u791D\u791B"], ["f2a1", "\u7921\u791C\u7917\u791E\u79B0\u7A67\u7A68\u7C33\u7C3C\u7C39\u7C2C\u7C3B\u7CEC\u7CEA\u7E76\u7E75\u7E78\u7E70\u7E77\u7E6F\u7E7A\u7E72\u7E74\u7E68\u7F4B\u7F4A\u7F83\u7F86\u7FB7\u7FFD\u7FFE\u8078\u81D7\u81D5\u8264\u8261\u8263\u85EB\u85F1\u85ED\u85D9\u85E1\u85E8\u85DA\u85D7\u85EC\u85F2\u85F8\u85D8\u85DF\u85E3\u85DC\u85D1\u85F0\u85E6\u85EF\u85DE\u85E2\u8800\u87FA\u8803\u87F6\u87F7\u8809\u880C\u880B\u8806\u87FC\u8808\u87FF\u880A\u8802\u8962\u895A\u895B\u8957\u8961\u895C\u8958\u895D\u8959\u8988\u89B7\u89B6\u89F6\u8B50\u8B48\u8B4A\u8B40\u8B53\u8B56\u8B54\u8B4B\u8B55"], ["f340", "\u8B51\u8B42\u8B52\u8B57\u8C43\u8C77\u8C76\u8C9A\u8D06\u8D07\u8D09\u8DAC\u8DAA\u8DAD\u8DAB\u8E6D\u8E78\u8E73\u8E6A\u8E6F\u8E7B\u8EC2\u8F52\u8F51\u8F4F\u8F50\u8F53\u8FB4\u9140\u913F\u91B0\u91AD\u93DE\u93C7\u93CF\u93C2\u93DA\u93D0\u93F9\u93EC\u93CC\u93D9\u93A9\u93E6\u93CA\u93D4\u93EE\u93E3\u93D5\u93C4\u93CE\u93C0\u93D2\u93E7\u957D\u95DA\u95DB\u96E1\u9729\u972B\u972C\u9728\u9726"], ["f3a1", "\u97B3\u97B7\u97B6\u97DD\u97DE\u97DF\u985C\u9859\u985D\u9857\u98BF\u98BD\u98BB\u98BE\u9948\u9947\u9943\u99A6\u99A7\u9A1A\u9A15\u9A25\u9A1D\u9A24\u9A1B\u9A22\u9A20\u9A27\u9A23\u9A1E\u9A1C\u9A14\u9AC2\u9B0B\u9B0A\u9B0E\u9B0C\u9B37\u9BEA\u9BEB\u9BE0\u9BDE\u9BE4\u9BE6\u9BE2\u9BF0\u9BD4\u9BD7\u9BEC\u9BDC\u9BD9\u9BE5\u9BD5\u9BE1\u9BDA\u9D77\u9D81\u9D8A\u9D84\u9D88\u9D71\u9D80\u9D78\u9D86\u9D8B\u9D8C\u9D7D\u9D6B\u9D74\u9D75\u9D70\u9D69\u9D85\u9D73\u9D7B\u9D82\u9D6F\u9D79\u9D7F\u9D87\u9D68\u9E94\u9E91\u9EC0\u9EFC\u9F2D\u9F40\u9F41\u9F4D\u9F56\u9F57\u9F58\u5337\u56B2"], ["f440", "\u56B5\u56B3\u58E3\u5B45\u5DC6\u5DC7\u5EEE\u5EEF\u5FC0\u5FC1\u61F9\u6517\u6516\u6515\u6513\u65DF\u66E8\u66E3\u66E4\u6AF3\u6AF0\u6AEA\u6AE8\u6AF9\u6AF1\u6AEE\u6AEF\u703C\u7035\u702F\u7037\u7034\u7031\u7042\u7038\u703F\u703A\u7039\u7040\u703B\u7033\u7041\u7213\u7214\u72A8\u737D\u737C\u74BA\u76AB\u76AA\u76BE\u76ED\u77CC\u77CE\u77CF\u77CD\u77F2\u7925\u7923\u7927\u7928\u7924\u7929"], ["f4a1", "\u79B2\u7A6E\u7A6C\u7A6D\u7AF7\u7C49\u7C48\u7C4A\u7C47\u7C45\u7CEE\u7E7B\u7E7E\u7E81\u7E80\u7FBA\u7FFF\u8079\u81DB\u81D9\u820B\u8268\u8269\u8622\u85FF\u8601\u85FE\u861B\u8600\u85F6\u8604\u8609\u8605\u860C\u85FD\u8819\u8810\u8811\u8817\u8813\u8816\u8963\u8966\u89B9\u89F7\u8B60\u8B6A\u8B5D\u8B68\u8B63\u8B65\u8B67\u8B6D\u8DAE\u8E86\u8E88\u8E84\u8F59\u8F56\u8F57\u8F55\u8F58\u8F5A\u908D\u9143\u9141\u91B7\u91B5\u91B2\u91B3\u940B\u9413\u93FB\u9420\u940F\u9414\u93FE\u9415\u9410\u9428\u9419\u940D\u93F5\u9400\u93F7\u9407\u940E\u9416\u9412\u93FA\u9409\u93F8\u940A\u93FF"], ["f540", "\u93FC\u940C\u93F6\u9411\u9406\u95DE\u95E0\u95DF\u972E\u972F\u97B9\u97BB\u97FD\u97FE\u9860\u9862\u9863\u985F\u98C1\u98C2\u9950\u994E\u9959\u994C\u994B\u9953\u9A32\u9A34\u9A31\u9A2C\u9A2A\u9A36\u9A29\u9A2E\u9A38\u9A2D\u9AC7\u9ACA\u9AC6\u9B10\u9B12\u9B11\u9C0B\u9C08\u9BF7\u9C05\u9C12\u9BF8\u9C40\u9C07\u9C0E\u9C06\u9C17\u9C14\u9C09\u9D9F\u9D99\u9DA4\u9D9D\u9D92\u9D98\u9D90\u9D9B"], ["f5a1", "\u9DA0\u9D94\u9D9C\u9DAA\u9D97\u9DA1\u9D9A\u9DA2\u9DA8\u9D9E\u9DA3\u9DBF\u9DA9\u9D96\u9DA6\u9DA7\u9E99\u9E9B\u9E9A\u9EE5\u9EE4\u9EE7\u9EE6\u9F30\u9F2E\u9F5B\u9F60\u9F5E\u9F5D\u9F59\u9F91\u513A\u5139\u5298\u5297\u56C3\u56BD\u56BE\u5B48\u5B47\u5DCB\u5DCF\u5EF1\u61FD\u651B\u6B02\u6AFC\u6B03\u6AF8\u6B00\u7043\u7044\u704A\u7048\u7049\u7045\u7046\u721D\u721A\u7219\u737E\u7517\u766A\u77D0\u792D\u7931\u792F\u7C54\u7C53\u7CF2\u7E8A\u7E87\u7E88\u7E8B\u7E86\u7E8D\u7F4D\u7FBB\u8030\u81DD\u8618\u862A\u8626\u861F\u8623\u861C\u8619\u8627\u862E\u8621\u8620\u8629\u861E\u8625"], ["f640", "\u8829\u881D\u881B\u8820\u8824\u881C\u882B\u884A\u896D\u8969\u896E\u896B\u89FA\u8B79\u8B78\u8B45\u8B7A\u8B7B\u8D10\u8D14\u8DAF\u8E8E\u8E8C\u8F5E\u8F5B\u8F5D\u9146\u9144\u9145\u91B9\u943F\u943B\u9436\u9429\u943D\u943C\u9430\u9439\u942A\u9437\u942C\u9440\u9431\u95E5\u95E4\u95E3\u9735\u973A\u97BF\u97E1\u9864\u98C9\u98C6\u98C0\u9958\u9956\u9A39\u9A3D\u9A46\u9A44\u9A42\u9A41\u9A3A"], ["f6a1", "\u9A3F\u9ACD\u9B15\u9B17\u9B18\u9B16\u9B3A\u9B52\u9C2B\u9C1D\u9C1C\u9C2C\u9C23\u9C28\u9C29\u9C24\u9C21\u9DB7\u9DB6\u9DBC\u9DC1\u9DC7\u9DCA\u9DCF\u9DBE\u9DC5\u9DC3\u9DBB\u9DB5\u9DCE\u9DB9\u9DBA\u9DAC\u9DC8\u9DB1\u9DAD\u9DCC\u9DB3\u9DCD\u9DB2\u9E7A\u9E9C\u9EEB\u9EEE\u9EED\u9F1B\u9F18\u9F1A\u9F31\u9F4E\u9F65\u9F64\u9F92\u4EB9\u56C6\u56C5\u56CB\u5971\u5B4B\u5B4C\u5DD5\u5DD1\u5EF2\u6521\u6520\u6526\u6522\u6B0B\u6B08\u6B09\u6C0D\u7055\u7056\u7057\u7052\u721E\u721F\u72A9\u737F\u74D8\u74D5\u74D9\u74D7\u766D\u76AD\u7935\u79B4\u7A70\u7A71\u7C57\u7C5C\u7C59\u7C5B\u7C5A"], ["f740", "\u7CF4\u7CF1\u7E91\u7F4F\u7F87\u81DE\u826B\u8634\u8635\u8633\u862C\u8632\u8636\u882C\u8828\u8826\u882A\u8825\u8971\u89BF\u89BE\u89FB\u8B7E\u8B84\u8B82\u8B86\u8B85\u8B7F\u8D15\u8E95\u8E94\u8E9A\u8E92\u8E90\u8E96\u8E97\u8F60\u8F62\u9147\u944C\u9450\u944A\u944B\u944F\u9447\u9445\u9448\u9449\u9446\u973F\u97E3\u986A\u9869\u98CB\u9954\u995B\u9A4E\u9A53\u9A54\u9A4C\u9A4F\u9A48\u9A4A"], ["f7a1", "\u9A49\u9A52\u9A50\u9AD0\u9B19\u9B2B\u9B3B\u9B56\u9B55\u9C46\u9C48\u9C3F\u9C44\u9C39\u9C33\u9C41\u9C3C\u9C37\u9C34\u9C32\u9C3D\u9C36\u9DDB\u9DD2\u9DDE\u9DDA\u9DCB\u9DD0\u9DDC\u9DD1\u9DDF\u9DE9\u9DD9\u9DD8\u9DD6\u9DF5\u9DD5\u9DDD\u9EB6\u9EF0\u9F35\u9F33\u9F32\u9F42\u9F6B\u9F95\u9FA2\u513D\u5299\u58E8\u58E7\u5972\u5B4D\u5DD8\u882F\u5F4F\u6201\u6203\u6204\u6529\u6525\u6596\u66EB\u6B11\u6B12\u6B0F\u6BCA\u705B\u705A\u7222\u7382\u7381\u7383\u7670\u77D4\u7C67\u7C66\u7E95\u826C\u863A\u8640\u8639\u863C\u8631\u863B\u863E\u8830\u8832\u882E\u8833\u8976\u8974\u8973\u89FE"], ["f840", "\u8B8C\u8B8E\u8B8B\u8B88\u8C45\u8D19\u8E98\u8F64\u8F63\u91BC\u9462\u9455\u945D\u9457\u945E\u97C4\u97C5\u9800\u9A56\u9A59\u9B1E\u9B1F\u9B20\u9C52\u9C58\u9C50\u9C4A\u9C4D\u9C4B\u9C55\u9C59\u9C4C\u9C4E\u9DFB\u9DF7\u9DEF\u9DE3\u9DEB\u9DF8\u9DE4\u9DF6\u9DE1\u9DEE\u9DE6\u9DF2\u9DF0\u9DE2\u9DEC\u9DF4\u9DF3\u9DE8\u9DED\u9EC2\u9ED0\u9EF2\u9EF3\u9F06\u9F1C\u9F38\u9F37\u9F36\u9F43\u9F4F"], ["f8a1", "\u9F71\u9F70\u9F6E\u9F6F\u56D3\u56CD\u5B4E\u5C6D\u652D\u66ED\u66EE\u6B13\u705F\u7061\u705D\u7060\u7223\u74DB\u74E5\u77D5\u7938\u79B7\u79B6\u7C6A\u7E97\u7F89\u826D\u8643\u8838\u8837\u8835\u884B\u8B94\u8B95\u8E9E\u8E9F\u8EA0\u8E9D\u91BE\u91BD\u91C2\u946B\u9468\u9469\u96E5\u9746\u9743\u9747\u97C7\u97E5\u9A5E\u9AD5\u9B59\u9C63\u9C67\u9C66\u9C62\u9C5E\u9C60\u9E02\u9DFE\u9E07\u9E03\u9E06\u9E05\u9E00\u9E01\u9E09\u9DFF\u9DFD\u9E04\u9EA0\u9F1E\u9F46\u9F74\u9F75\u9F76\u56D4\u652E\u65B8\u6B18\u6B19\u6B17\u6B1A\u7062\u7226\u72AA\u77D8\u77D9\u7939\u7C69\u7C6B\u7CF6\u7E9A"], ["f940", "\u7E98\u7E9B\u7E99\u81E0\u81E1\u8646\u8647\u8648\u8979\u897A\u897C\u897B\u89FF\u8B98\u8B99\u8EA5\u8EA4\u8EA3\u946E\u946D\u946F\u9471\u9473\u9749\u9872\u995F\u9C68\u9C6E\u9C6D\u9E0B\u9E0D\u9E10\u9E0F\u9E12\u9E11\u9EA1\u9EF5\u9F09\u9F47\u9F78\u9F7B\u9F7A\u9F79\u571E\u7066\u7C6F\u883C\u8DB2\u8EA6\u91C3\u9474\u9478\u9476\u9475\u9A60\u9C74\u9C73\u9C71\u9C75\u9E14\u9E13\u9EF6\u9F0A"], ["f9a1", "\u9FA4\u7068\u7065\u7CF7\u866A\u883E\u883D\u883F\u8B9E\u8C9C\u8EA9\u8EC9\u974B\u9873\u9874\u98CC\u9961\u99AB\u9A64\u9A66\u9A67\u9B24\u9E15\u9E17\u9F48\u6207\u6B1E\u7227\u864C\u8EA8\u9482\u9480\u9481\u9A69\u9A68\u9B2E\u9E19\u7229\u864B\u8B9F\u9483\u9C79\u9EB7\u7675\u9A6B\u9C7A\u9E1D\u7069\u706A\u9EA4\u9F7E\u9F49\u9F98\u7881\u92B9\u88CF\u58BB\u6052\u7CA7\u5AFA\u2554\u2566\u2557\u2560\u256C\u2563\u255A\u2569\u255D\u2552\u2564\u2555\u255E\u256A\u2561\u2558\u2567\u255B\u2553\u2565\u2556\u255F\u256B\u2562\u2559\u2568\u255C\u2551\u2550\u256D\u256E\u2570\u256F\u2593"]]; +}); +var WE = g((Kpe, pU) => { + pU.exports = [["8740", "\u43F0\u4C32\u4603\u45A6\u4578\u{27267}\u4D77\u45B3\u{27CB1}\u4CE2\u{27CC5}\u3B95\u4736\u4744\u4C47\u4C40\u{242BF}\u{23617}\u{27352}\u{26E8B}\u{270D2}\u4C57\u{2A351}\u474F\u45DA\u4C85\u{27C6C}\u4D07\u4AA4\u46A1\u{26B23}\u7225\u{25A54}\u{21A63}\u{23E06}\u{23F61}\u664D\u56FB"], ["8767", "\u7D95\u591D\u{28BB9}\u3DF4\u9734\u{27BEF}\u5BDB\u{21D5E}\u5AA4\u3625\u{29EB0}\u5AD1\u5BB7\u5CFC\u676E\u8593\u{29945}\u7461\u749D\u3875\u{21D53}\u{2369E}\u{26021}\u3EEC"], ["87a1", "\u{258DE}\u3AF5\u7AFC\u9F97\u{24161}\u{2890D}\u{231EA}\u{20A8A}\u{2325E}\u430A\u8484\u9F96\u942F\u4930\u8613\u5896\u974A\u9218\u79D0\u7A32\u6660\u6A29\u889D\u744C\u7BC5\u6782\u7A2C\u524F\u9046\u34E6\u73C4\u{25DB9}\u74C6\u9FC7\u57B3\u492F\u544C\u4131\u{2368E}\u5818\u7A72\u{27B65}\u8B8F\u46AE\u{26E88}\u4181\u{25D99}\u7BAE\u{224BC}\u9FC8\u{224C1}\u{224C9}\u{224CC}\u9FC9\u8504\u{235BB}\u40B4\u9FCA\u44E1\u{2ADFF}\u62C1\u706E\u9FCB"], ["8840", "\u31C0", 4, "\u{2010C}\u31C5\u{200D1}\u{200CD}\u31C6\u31C7\u{200CB}\u{21FE8}\u31C8\u{200CA}\u31C9\u31CA\u31CB\u31CC\u{2010E}\u31CD\u31CE\u0100\xC1\u01CD\xC0\u0112\xC9\u011A\xC8\u014C\xD3\u01D1\xD2\u0FFF\xCA\u0304\u1EBE\u0FFF\xCA\u030C\u1EC0\xCA\u0101\xE1\u01CE\xE0\u0251\u0113\xE9\u011B\xE8\u012B\xED\u01D0\xEC\u014D\xF3\u01D2\xF2\u016B\xFA\u01D4\xF9\u01D6\u01D8\u01DA"], ["88a1", "\u01DC\xFC\u0FFF\xEA\u0304\u1EBF\u0FFF\xEA\u030C\u1EC1\xEA\u0261\u23DA\u23DB"], ["8940", "\u{2A3A9}\u{21145}"], ["8943", "\u650A"], ["8946", "\u4E3D\u6EDD\u9D4E\u91DF"], ["894c", "\u{27735}\u6491\u4F1A\u4F28\u4FA8\u5156\u5174\u519C\u51E4\u52A1\u52A8\u533B\u534E\u53D1\u53D8\u56E2\u58F0\u5904\u5907\u5932\u5934\u5B66\u5B9E\u5B9F\u5C9A\u5E86\u603B\u6589\u67FE\u6804\u6865\u6D4E\u70BC\u7535\u7EA4\u7EAC\u7EBA\u7EC7\u7ECF\u7EDF\u7F06\u7F37\u827A\u82CF\u836F\u89C6\u8BBE\u8BE2\u8F66\u8F67\u8F6E"], ["89a1", "\u7411\u7CFC\u7DCD\u6946\u7AC9\u5227"], ["89ab", "\u918C\u78B8\u915E\u80BC"], ["89b0", "\u8D0B\u80F6\u{209E7}"], ["89b5", "\u809F\u9EC7\u4CCD\u9DC9\u9E0C\u4C3E\u{29DF6}\u{2700E}\u9E0A\u{2A133}\u35C1"], ["89c1", "\u6E9A\u823E\u7519"], ["89c5", "\u4911\u9A6C\u9A8F\u9F99\u7987\u{2846C}\u{21DCA}\u{205D0}\u{22AE6}\u4E24\u4E81\u4E80\u4E87\u4EBF\u4EEB\u4F37\u344C\u4FBD\u3E48\u5003\u5088\u347D\u3493\u34A5\u5186\u5905\u51DB\u51FC\u5205\u4E89\u5279\u5290\u5327\u35C7\u53A9\u3551\u53B0\u3553\u53C2\u5423\u356D\u3572\u3681\u5493\u54A3\u54B4\u54B9\u54D0\u54EF\u5518\u5523\u5528\u3598\u553F\u35A5\u35BF\u55D7\u35C5"], ["8a40", "\u{27D84}\u5525"], ["8a43", "\u{20C42}\u{20D15}\u{2512B}\u5590\u{22CC6}\u39EC\u{20341}\u8E46\u{24DB8}\u{294E5}\u4053\u{280BE}\u777A\u{22C38}\u3A34\u47D5\u{2815D}\u{269F2}\u{24DEA}\u64DD\u{20D7C}\u{20FB4}\u{20CD5}\u{210F4}\u648D\u8E7E\u{20E96}\u{20C0B}\u{20F64}\u{22CA9}\u{28256}\u{244D3}"], ["8a64", "\u{20D46}\u{29A4D}\u{280E9}\u47F4\u{24EA7}\u{22CC2}\u9AB2\u3A67\u{295F4}\u3FED\u3506\u{252C7}\u{297D4}\u{278C8}\u{22D44}\u9D6E\u9815"], ["8a76", "\u43D9\u{260A5}\u64B4\u54E3\u{22D4C}\u{22BCA}\u{21077}\u39FB\u{2106F}"], ["8aa1", "\u{266DA}\u{26716}\u{279A0}\u64EA\u{25052}\u{20C43}\u8E68\u{221A1}\u{28B4C}\u{20731}"], ["8aac", "\u480B\u{201A9}\u3FFA\u5873\u{22D8D}"], ["8ab2", "\u{245C8}\u{204FC}\u{26097}\u{20F4C}\u{20D96}\u5579\u40BB\u43BA"], ["8abb", "\u4AB4\u{22A66}\u{2109D}\u81AA\u98F5\u{20D9C}\u6379\u39FE\u{22775}\u8DC0\u56A1\u647C\u3E43"], ["8ac9", "\u{2A601}\u{20E09}\u{22ACF}\u{22CC9}"], ["8ace", "\u{210C8}\u{239C2}\u3992\u3A06\u{2829B}\u3578\u{25E49}\u{220C7}\u5652\u{20F31}\u{22CB2}\u{29720}\u34BC\u6C3D\u{24E3B}"], ["8adf", "\u{27574}\u{22E8B}\u{22208}\u{2A65B}\u{28CCD}\u{20E7A}\u{20C34}\u{2681C}\u7F93\u{210CF}\u{22803}\u{22939}\u35FB\u{251E3}\u{20E8C}\u{20F8D}\u{20EAA}\u3F93\u{20F30}\u{20D47}\u{2114F}\u{20E4C}"], ["8af6", "\u{20EAB}\u{20BA9}\u{20D48}\u{210C0}\u{2113D}\u3FF9\u{22696}\u6432\u{20FAD}"], ["8b40", "\u{233F4}\u{27639}\u{22BCE}\u{20D7E}\u{20D7F}\u{22C51}\u{22C55}\u3A18\u{20E98}\u{210C7}\u{20F2E}\u{2A632}\u{26B50}\u{28CD2}\u{28D99}\u{28CCA}\u95AA\u54CC\u82C4\u55B9"], ["8b55", "\u{29EC3}\u9C26\u9AB6\u{2775E}\u{22DEE}\u7140\u816D\u80EC\u5C1C\u{26572}\u8134\u3797\u535F\u{280BD}\u91B6\u{20EFA}\u{20E0F}\u{20E77}\u{20EFB}\u35DD\u{24DEB}\u3609\u{20CD6}\u56AF\u{227B5}\u{210C9}\u{20E10}\u{20E78}\u{21078}\u{21148}\u{28207}\u{21455}\u{20E79}\u{24E50}\u{22DA4}\u5A54\u{2101D}\u{2101E}\u{210F5}\u{210F6}\u579C\u{20E11}"], ["8ba1", "\u{27694}\u{282CD}\u{20FB5}\u{20E7B}\u{2517E}\u3703\u{20FB6}\u{21180}\u{252D8}\u{2A2BD}\u{249DA}\u{2183A}\u{24177}\u{2827C}\u5899\u5268\u361A\u{2573D}\u7BB2\u5B68\u4800\u4B2C\u9F27\u49E7\u9C1F\u9B8D\u{25B74}\u{2313D}\u55FB\u35F2\u5689\u4E28\u5902\u{21BC1}\u{2F878}\u9751\u{20086}\u4E5B\u4EBB\u353E\u5C23\u5F51\u5FC4\u38FA\u624C\u6535\u6B7A\u6C35\u6C3A\u706C\u722B\u4E2C\u72AD\u{248E9}\u7F52\u793B\u7CF9\u7F53\u{2626A}\u34C1"], ["8bde", "\u{2634B}\u8002\u8080\u{26612}\u{26951}\u535D\u8864\u89C1\u{278B2}\u8BA0\u8D1D\u9485\u9578\u957F\u95E8\u{28E0F}\u97E6\u9875\u98CE\u98DE\u9963\u{29810}\u9C7C\u9E1F\u9EC4\u6B6F\uF907\u4E37\u{20087}\u961D\u6237\u94A2"], ["8c40", "\u503B\u6DFE\u{29C73}\u9FA6\u3DC9\u888F\u{2414E}\u7077\u5CF5\u4B20\u{251CD}\u3559\u{25D30}\u6122\u{28A32}\u8FA7\u91F6\u7191\u6719\u73BA\u{23281}\u{2A107}\u3C8B\u{21980}\u4B10\u78E4\u7402\u51AE\u{2870F}\u4009\u6A63\u{2A2BA}\u4223\u860F\u{20A6F}\u7A2A\u{29947}\u{28AEA}\u9755\u704D\u5324\u{2207E}\u93F4\u76D9\u{289E3}\u9FA7\u77DD\u4EA3\u4FF0\u50BC\u4E2F\u4F17\u9FA8\u5434\u7D8B\u5892\u58D0\u{21DB6}\u5E92\u5E99\u5FC2\u{22712}\u658B"], ["8ca1", "\u{233F9}\u6919\u6A43\u{23C63}\u6CFF"], ["8ca7", "\u7200\u{24505}\u738C\u3EDB\u{24A13}\u5B15\u74B9\u8B83\u{25CA4}\u{25695}\u7A93\u7BEC\u7CC3\u7E6C\u82F8\u8597\u9FA9\u8890\u9FAA\u8EB9\u9FAB\u8FCF\u855F\u99E0\u9221\u9FAC\u{28DB9}\u{2143F}\u4071\u42A2\u5A1A"], ["8cc9", "\u9868\u676B\u4276\u573D"], ["8cce", "\u85D6\u{2497B}\u82BF\u{2710D}\u4C81\u{26D74}\u5D7B\u{26B15}\u{26FBE}\u9FAD\u9FAE\u5B96\u9FAF\u66E7\u7E5B\u6E57\u79CA\u3D88\u44C3\u{23256}\u{22796}\u439A\u4536"], ["8ce6", "\u5CD5\u{23B1A}\u8AF9\u5C78\u3D12\u{23551}\u5D78\u9FB2\u7157\u4558\u{240EC}\u{21E23}\u4C77\u3978\u344A\u{201A4}\u{26C41}\u8ACC\u4FB4\u{20239}\u59BF\u816C\u9856\u{298FA}\u5F3B"], ["8d40", "\u{20B9F}"], ["8d42", "\u{221C1}\u{2896D}\u4102\u46BB\u{29079}\u3F07\u9FB3\u{2A1B5}\u40F8\u37D6\u46F7\u{26C46}\u417C\u{286B2}\u{273FF}\u456D\u38D4\u{2549A}\u4561\u451B\u4D89\u4C7B\u4D76\u45EA\u3FC8\u{24B0F}\u3661\u44DE\u44BD\u41ED\u5D3E\u5D48\u5D56\u3DFC\u380F\u5DA4\u5DB9\u3820\u3838\u5E42\u5EBD\u5F25\u5F83\u3908\u3914\u393F\u394D\u60D7\u613D\u5CE5\u3989\u61B7\u61B9\u61CF\u39B8\u622C\u6290\u62E5\u6318\u39F8\u56B1"], ["8da1", "\u3A03\u63E2\u63FB\u6407\u645A\u3A4B\u64C0\u5D15\u5621\u9F9F\u3A97\u6586\u3ABD\u65FF\u6653\u3AF2\u6692\u3B22\u6716\u3B42\u67A4\u6800\u3B58\u684A\u6884\u3B72\u3B71\u3B7B\u6909\u6943\u725C\u6964\u699F\u6985\u3BBC\u69D6\u3BDD\u6A65\u6A74\u6A71\u6A82\u3BEC\u6A99\u3BF2\u6AAB\u6AB5\u6AD4\u6AF6\u6B81\u6BC1\u6BEA\u6C75\u6CAA\u3CCB\u6D02\u6D06\u6D26\u6D81\u3CEF\u6DA4\u6DB1\u6E15\u6E18\u6E29\u6E86\u{289C0}\u6EBB\u6EE2\u6EDA\u9F7F\u6EE8\u6EE9\u6F24\u6F34\u3D46\u{23F41}\u6F81\u6FBE\u3D6A\u3D75\u71B7\u5C99\u3D8A\u702C\u3D91\u7050\u7054\u706F\u707F\u7089\u{20325}\u43C1\u35F1\u{20ED8}"], ["8e40", "\u{23ED7}\u57BE\u{26ED3}\u713E\u{257E0}\u364E\u69A2\u{28BE9}\u5B74\u7A49\u{258E1}\u{294D9}\u7A65\u7A7D\u{259AC}\u7ABB\u7AB0\u7AC2\u7AC3\u71D1\u{2648D}\u41CA\u7ADA\u7ADD\u7AEA\u41EF\u54B2\u{25C01}\u7B0B\u7B55\u7B29\u{2530E}\u{25CFE}\u7BA2\u7B6F\u839C\u{25BB4}\u{26C7F}\u7BD0\u8421\u7B92\u7BB8\u{25D20}\u3DAD\u{25C65}\u8492\u7BFA\u7C06\u7C35\u{25CC1}\u7C44\u7C83\u{24882}\u7CA6\u667D\u{24578}\u7CC9\u7CC7\u7CE6\u7C74\u7CF3\u7CF5\u7CCE"], ["8ea1", "\u7E67\u451D\u{26E44}\u7D5D\u{26ED6}\u748D\u7D89\u7DAB\u7135\u7DB3\u7DD2\u{24057}\u{26029}\u7DE4\u3D13\u7DF5\u{217F9}\u7DE5\u{2836D}\u7E1D\u{26121}\u{2615A}\u7E6E\u7E92\u432B\u946C\u7E27\u7F40\u7F41\u7F47\u7936\u{262D0}\u99E1\u7F97\u{26351}\u7FA3\u{21661}\u{20068}\u455C\u{23766}\u4503\u{2833A}\u7FFA\u{26489}\u8005\u8008\u801D\u8028\u802F\u{2A087}\u{26CC3}\u803B\u803C\u8061\u{22714}\u4989\u{26626}\u{23DE3}\u{266E8}\u6725\u80A7\u{28A48}\u8107\u811A\u58B0\u{226F6}\u6C7F\u{26498}\u{24FB8}\u64E7\u{2148A}\u8218\u{2185E}\u6A53\u{24A65}\u{24A95}\u447A\u8229\u{20B0D}\u{26A52}\u{23D7E}\u4FF9\u{214FD}\u84E2\u8362\u{26B0A}\u{249A7}\u{23530}\u{21773}\u{23DF8}\u82AA\u691B\u{2F994}\u41DB"], ["8f40", "\u854B\u82D0\u831A\u{20E16}\u{217B4}\u36C1\u{2317D}\u{2355A}\u827B\u82E2\u8318\u{23E8B}\u{26DA3}\u{26B05}\u{26B97}\u{235CE}\u3DBF\u831D\u55EC\u8385\u450B\u{26DA5}\u83AC\u83C1\u83D3\u347E\u{26ED4}\u6A57\u855A\u3496\u{26E42}\u{22EEF}\u8458\u{25BE4}\u8471\u3DD3\u44E4\u6AA7\u844A\u{23CB5}\u7958\u84A8\u{26B96}\u{26E77}\u{26E43}\u84DE\u840F\u8391\u44A0\u8493\u84E4\u{25C91}\u4240\u{25CC0}\u4543\u8534\u5AF2\u{26E99}\u4527\u8573\u4516\u67BF\u8616"], ["8fa1", "\u{28625}\u{2863B}\u85C1\u{27088}\u8602\u{21582}\u{270CD}\u{2F9B2}\u456A\u8628\u3648\u{218A2}\u53F7\u{2739A}\u867E\u8771\u{2A0F8}\u87EE\u{22C27}\u87B1\u87DA\u880F\u5661\u866C\u6856\u460F\u8845\u8846\u{275E0}\u{23DB9}\u{275E4}\u885E\u889C\u465B\u88B4\u88B5\u63C1\u88C5\u7777\u{2770F}\u8987\u898A\u89A6\u89A9\u89A7\u89BC\u{28A25}\u89E7\u{27924}\u{27ABD}\u8A9C\u7793\u91FE\u8A90\u{27A59}\u7AE9\u{27B3A}\u{23F8F}\u4713\u{27B38}\u717C\u8B0C\u8B1F\u{25430}\u{25565}\u8B3F\u8B4C\u8B4D\u8AA9\u{24A7A}\u8B90\u8B9B\u8AAF\u{216DF}\u4615\u884F\u8C9B\u{27D54}\u{27D8F}\u{2F9D4}\u3725\u{27D53}\u8CD6\u{27D98}\u{27DBD}\u8D12\u8D03\u{21910}\u8CDB\u705C\u8D11\u{24CC9}\u3ED0\u8D77"], ["9040", "\u8DA9\u{28002}\u{21014}\u{2498A}\u3B7C\u{281BC}\u{2710C}\u7AE7\u8EAD\u8EB6\u8EC3\u92D4\u8F19\u8F2D\u{28365}\u{28412}\u8FA5\u9303\u{2A29F}\u{20A50}\u8FB3\u492A\u{289DE}\u{2853D}\u{23DBB}\u5EF8\u{23262}\u8FF9\u{2A014}\u{286BC}\u{28501}\u{22325}\u3980\u{26ED7}\u9037\u{2853C}\u{27ABE}\u9061\u{2856C}\u{2860B}\u90A8\u{28713}\u90C4\u{286E6}\u90AE\u90FD\u9167\u3AF0\u91A9\u91C4\u7CAC\u{28933}\u{21E89}\u920E\u6C9F\u9241\u9262\u{255B9}\u92B9\u{28AC6}\u{23C9B}\u{28B0C}\u{255DB}"], ["90a1", "\u{20D31}\u932C\u936B\u{28AE1}\u{28BEB}\u708F\u5AC3\u{28AE2}\u{28AE5}\u4965\u9244\u{28BEC}\u{28C39}\u{28BFF}\u9373\u945B\u8EBC\u9585\u95A6\u9426\u95A0\u6FF6\u42B9\u{2267A}\u{286D8}\u{2127C}\u{23E2E}\u49DF\u6C1C\u967B\u9696\u416C\u96A3\u{26ED5}\u61DA\u96B6\u78F5\u{28AE0}\u96BD\u53CC\u49A1\u{26CB8}\u{20274}\u{26410}\u{290AF}\u{290E5}\u{24AD1}\u{21915}\u{2330A}\u9731\u8642\u9736\u4A0F\u453D\u4585\u{24AE9}\u7075\u5B41\u971B\u975C\u{291D5}\u9757\u5B4A\u{291EB}\u975F\u9425\u50D0\u{230B7}\u{230BC}\u9789\u979F\u97B1\u97BE\u97C0\u97D2\u97E0\u{2546C}\u97EE\u741C\u{29433}\u97FF\u97F5\u{2941D}\u{2797A}\u4AD1\u9834\u9833\u984B\u9866\u3B0E\u{27175}\u3D51\u{20630}\u{2415C}"], ["9140", "\u{25706}\u98CA\u98B7\u98C8\u98C7\u4AFF\u{26D27}\u{216D3}\u55B0\u98E1\u98E6\u98EC\u9378\u9939\u{24A29}\u4B72\u{29857}\u{29905}\u99F5\u9A0C\u9A3B\u9A10\u9A58\u{25725}\u36C4\u{290B1}\u{29BD5}\u9AE0\u9AE2\u{29B05}\u9AF4\u4C0E\u9B14\u9B2D\u{28600}\u5034\u9B34\u{269A8}\u38C3\u{2307D}\u9B50\u9B40\u{29D3E}\u5A45\u{21863}\u9B8E\u{2424B}\u9C02\u9BFF\u9C0C\u{29E68}\u9DD4\u{29FB7}\u{2A192}\u{2A1AB}\u{2A0E1}\u{2A123}\u{2A1DF}\u9D7E\u9D83\u{2A134}\u9E0E\u6888"], ["91a1", "\u9DC4\u{2215B}\u{2A193}\u{2A220}\u{2193B}\u{2A233}\u9D39\u{2A0B9}\u{2A2B4}\u9E90\u9E95\u9E9E\u9EA2\u4D34\u9EAA\u9EAF\u{24364}\u9EC1\u3B60\u39E5\u3D1D\u4F32\u37BE\u{28C2B}\u9F02\u9F08\u4B96\u9424\u{26DA2}\u9F17\u9F16\u9F39\u569F\u568A\u9F45\u99B8\u{2908B}\u97F2\u847F\u9F62\u9F69\u7ADC\u9F8E\u7216\u4BBE\u{24975}\u{249BB}\u7177\u{249F8}\u{24348}\u{24A51}\u739E\u{28BDA}\u{218FA}\u799F\u{2897E}\u{28E36}\u9369\u93F3\u{28A44}\u92EC\u9381\u93CB\u{2896C}\u{244B9}\u7217\u3EEB\u7772\u7A43\u70D0\u{24473}\u{243F8}\u717E\u{217EF}\u70A3\u{218BE}\u{23599}\u3EC7\u{21885}\u{2542F}\u{217F8}\u3722\u{216FB}\u{21839}\u36E1\u{21774}\u{218D1}\u{25F4B}\u3723\u{216C0}\u575B\u{24A25}\u{213FE}\u{212A8}"], ["9240", "\u{213C6}\u{214B6}\u8503\u{236A6}\u8503\u8455\u{24994}\u{27165}\u{23E31}\u{2555C}\u{23EFB}\u{27052}\u44F4\u{236EE}\u{2999D}\u{26F26}\u67F9\u3733\u3C15\u3DE7\u586C\u{21922}\u6810\u4057\u{2373F}\u{240E1}\u{2408B}\u{2410F}\u{26C21}\u54CB\u569E\u{266B1}\u5692\u{20FDF}\u{20BA8}\u{20E0D}\u93C6\u{28B13}\u939C\u4EF8\u512B\u3819\u{24436}\u4EBC\u{20465}\u{2037F}\u4F4B\u4F8A\u{25651}\u5A68\u{201AB}\u{203CB}\u3999\u{2030A}\u{20414}\u3435\u4F29\u{202C0}\u{28EB3}\u{20275}\u8ADA\u{2020C}\u4E98"], ["92a1", "\u50CD\u510D\u4FA2\u4F03\u{24A0E}\u{23E8A}\u4F42\u502E\u506C\u5081\u4FCC\u4FE5\u5058\u50FC\u5159\u515B\u515D\u515E\u6E76\u{23595}\u{23E39}\u{23EBF}\u6D72\u{21884}\u{23E89}\u51A8\u51C3\u{205E0}\u44DD\u{204A3}\u{20492}\u{20491}\u8D7A\u{28A9C}\u{2070E}\u5259\u52A4\u{20873}\u52E1\u936E\u467A\u718C\u{2438C}\u{20C20}\u{249AC}\u{210E4}\u69D1\u{20E1D}\u7479\u3EDE\u7499\u7414\u7456\u7398\u4B8E\u{24ABC}\u{2408D}\u53D0\u3584\u720F\u{240C9}\u55B4\u{20345}\u54CD\u{20BC6}\u571D\u925D\u96F4\u9366\u57DD\u578D\u577F\u363E\u58CB\u5A99\u{28A46}\u{216FA}\u{2176F}\u{21710}\u5A2C\u59B8\u928F\u5A7E\u5ACF\u5A12\u{25946}\u{219F3}\u{21861}\u{24295}\u36F5\u6D05\u7443\u5A21\u{25E83}"], ["9340", "\u5A81\u{28BD7}\u{20413}\u93E0\u748C\u{21303}\u7105\u4972\u9408\u{289FB}\u93BD\u37A0\u5C1E\u5C9E\u5E5E\u5E48\u{21996}\u{2197C}\u{23AEE}\u5ECD\u5B4F\u{21903}\u{21904}\u3701\u{218A0}\u36DD\u{216FE}\u36D3\u812A\u{28A47}\u{21DBA}\u{23472}\u{289A8}\u5F0C\u5F0E\u{21927}\u{217AB}\u5A6B\u{2173B}\u5B44\u8614\u{275FD}\u8860\u607E\u{22860}\u{2262B}\u5FDB\u3EB8\u{225AF}\u{225BE}\u{29088}\u{26F73}\u61C0\u{2003E}\u{20046}\u{2261B}\u6199\u6198\u6075\u{22C9B}\u{22D07}\u{246D4}\u{2914D}"], ["93a1", "\u6471\u{24665}\u{22B6A}\u3A29\u{22B22}\u{23450}\u{298EA}\u{22E78}\u6337\u{2A45B}\u64B6\u6331\u63D1\u{249E3}\u{22D67}\u62A4\u{22CA1}\u643B\u656B\u6972\u3BF4\u{2308E}\u{232AD}\u{24989}\u{232AB}\u550D\u{232E0}\u{218D9}\u{2943F}\u66CE\u{23289}\u{231B3}\u3AE0\u4190\u{25584}\u{28B22}\u{2558F}\u{216FC}\u{2555B}\u{25425}\u78EE\u{23103}\u{2182A}\u{23234}\u3464\u{2320F}\u{23182}\u{242C9}\u668E\u{26D24}\u666B\u4B93\u6630\u{27870}\u{21DEB}\u6663\u{232D2}\u{232E1}\u661E\u{25872}\u38D1\u{2383A}\u{237BC}\u3B99\u{237A2}\u{233FE}\u74D0\u3B96\u678F\u{2462A}\u68B6\u681E\u3BC4\u6ABE\u3863\u{237D5}\u{24487}\u6A33\u6A52\u6AC9\u6B05\u{21912}\u6511\u6898\u6A4C\u3BD7\u6A7A\u6B57\u{23FC0}\u{23C9A}\u93A0\u92F2\u{28BEA}\u{28ACB}"], ["9440", "\u9289\u{2801E}\u{289DC}\u9467\u6DA5\u6F0B\u{249EC}\u6D67\u{23F7F}\u3D8F\u6E04\u{2403C}\u5A3D\u6E0A\u5847\u6D24\u7842\u713B\u{2431A}\u{24276}\u70F1\u7250\u7287\u7294\u{2478F}\u{24725}\u5179\u{24AA4}\u{205EB}\u747A\u{23EF8}\u{2365F}\u{24A4A}\u{24917}\u{25FE1}\u3F06\u3EB1\u{24ADF}\u{28C23}\u{23F35}\u60A7\u3EF3\u74CC\u743C\u9387\u7437\u449F\u{26DEA}\u4551\u7583\u3F63\u{24CD9}\u{24D06}\u3F58\u7555\u7673\u{2A5C6}\u3B19\u7468\u{28ACC}\u{249AB}\u{2498E}\u3AFB"], ["94a1", "\u3DCD\u{24A4E}\u3EFF\u{249C5}\u{248F3}\u91FA\u5732\u9342\u{28AE3}\u{21864}\u50DF\u{25221}\u{251E7}\u7778\u{23232}\u770E\u770F\u777B\u{24697}\u{23781}\u3A5E\u{248F0}\u7438\u749B\u3EBF\u{24ABA}\u{24AC7}\u40C8\u{24A96}\u{261AE}\u9307\u{25581}\u781E\u788D\u7888\u78D2\u73D0\u7959\u{27741}\u{256E3}\u410E\u799B\u8496\u79A5\u6A2D\u{23EFA}\u7A3A\u79F4\u416E\u{216E6}\u4132\u9235\u79F1\u{20D4C}\u{2498C}\u{20299}\u{23DBA}\u{2176E}\u3597\u556B\u3570\u36AA\u{201D4}\u{20C0D}\u7AE2\u5A59\u{226F5}\u{25AAF}\u{25A9C}\u5A0D\u{2025B}\u78F0\u5A2A\u{25BC6}\u7AFE\u41F9\u7C5D\u7C6D\u4211\u{25BB3}\u{25EBC}\u{25EA6}\u7CCD\u{249F9}\u{217B0}\u7C8E\u7C7C\u7CAE\u6AB2\u7DDC\u7E07\u7DD3\u7F4E\u{26261}"], ["9540", "\u{2615C}\u{27B48}\u7D97\u{25E82}\u426A\u{26B75}\u{20916}\u67D6\u{2004E}\u{235CF}\u57C4\u{26412}\u{263F8}\u{24962}\u7FDD\u7B27\u{2082C}\u{25AE9}\u{25D43}\u7B0C\u{25E0E}\u99E6\u8645\u9A63\u6A1C\u{2343F}\u39E2\u{249F7}\u{265AD}\u9A1F\u{265A0}\u8480\u{27127}\u{26CD1}\u44EA\u8137\u4402\u80C6\u8109\u8142\u{267B4}\u98C3\u{26A42}\u8262\u8265\u{26A51}\u8453\u{26DA7}\u8610\u{2721B}\u5A86\u417F\u{21840}\u5B2B\u{218A1}\u5AE4\u{218D8}\u86A0\u{2F9BC}\u{23D8F}\u882D\u{27422}\u5A02"], ["95a1", "\u886E\u4F45\u8887\u88BF\u88E6\u8965\u894D\u{25683}\u8954\u{27785}\u{27784}\u{28BF5}\u{28BD9}\u{28B9C}\u{289F9}\u3EAD\u84A3\u46F5\u46CF\u37F2\u8A3D\u8A1C\u{29448}\u5F4D\u922B\u{24284}\u65D4\u7129\u70C4\u{21845}\u9D6D\u8C9F\u8CE9\u{27DDC}\u599A\u77C3\u59F0\u436E\u36D4\u8E2A\u8EA7\u{24C09}\u8F30\u8F4A\u42F4\u6C58\u6FBB\u{22321}\u489B\u6F79\u6E8B\u{217DA}\u9BE9\u36B5\u{2492F}\u90BB\u9097\u5571\u4906\u91BB\u9404\u{28A4B}\u4062\u{28AFC}\u9427\u{28C1D}\u{28C3B}\u84E5\u8A2B\u9599\u95A7\u9597\u9596\u{28D34}\u7445\u3EC2\u{248FF}\u{24A42}\u{243EA}\u3EE7\u{23225}\u968F\u{28EE7}\u{28E66}\u{28E65}\u3ECC\u{249ED}\u{24A78}\u{23FEE}\u7412\u746B\u3EFC\u9741\u{290B0}"], ["9640", "\u6847\u4A1D\u{29093}\u{257DF}\u975D\u9368\u{28989}\u{28C26}\u{28B2F}\u{263BE}\u92BA\u5B11\u8B69\u493C\u73F9\u{2421B}\u979B\u9771\u9938\u{20F26}\u5DC1\u{28BC5}\u{24AB2}\u981F\u{294DA}\u92F6\u{295D7}\u91E5\u44C0\u{28B50}\u{24A67}\u{28B64}\u98DC\u{28A45}\u3F00\u922A\u4925\u8414\u993B\u994D\u{27B06}\u3DFD\u999B\u4B6F\u99AA\u9A5C\u{28B65}\u{258C8}\u6A8F\u9A21\u5AFE\u9A2F\u{298F1}\u4B90\u{29948}\u99BC\u4BBD\u4B97\u937D\u5872\u{21302}\u5822\u{249B8}"], ["96a1", "\u{214E8}\u7844\u{2271F}\u{23DB8}\u68C5\u3D7D\u9458\u3927\u6150\u{22781}\u{2296B}\u6107\u9C4F\u9C53\u9C7B\u9C35\u9C10\u9B7F\u9BCF\u{29E2D}\u9B9F\u{2A1F5}\u{2A0FE}\u9D21\u4CAE\u{24104}\u9E18\u4CB0\u9D0C\u{2A1B4}\u{2A0ED}\u{2A0F3}\u{2992F}\u9DA5\u84BD\u{26E12}\u{26FDF}\u{26B82}\u85FC\u4533\u{26DA4}\u{26E84}\u{26DF0}\u8420\u85EE\u{26E00}\u{237D7}\u{26064}\u79E2\u{2359C}\u{23640}\u492D\u{249DE}\u3D62\u93DB\u92BE\u9348\u{202BF}\u78B9\u9277\u944D\u4FE4\u3440\u9064\u{2555D}\u783D\u7854\u78B6\u784B\u{21757}\u{231C9}\u{24941}\u369A\u4F72\u6FDA\u6FD9\u701E\u701E\u5414\u{241B5}\u57BB\u58F3\u578A\u9D16\u57D7\u7134\u34AF\u{241AC}\u71EB\u{26C40}\u{24F97}\u5B28\u{217B5}\u{28A49}"], ["9740", "\u610C\u5ACE\u5A0B\u42BC\u{24488}\u372C\u4B7B\u{289FC}\u93BB\u93B8\u{218D6}\u{20F1D}\u8472\u{26CC0}\u{21413}\u{242FA}\u{22C26}\u{243C1}\u5994\u{23DB7}\u{26741}\u7DA8\u{2615B}\u{260A4}\u{249B9}\u{2498B}\u{289FA}\u92E5\u73E2\u3EE9\u74B4\u{28B63}\u{2189F}\u3EE1\u{24AB3}\u6AD8\u73F3\u73FB\u3ED6\u{24A3E}\u{24A94}\u{217D9}\u{24A66}\u{203A7}\u{21424}\u{249E5}\u7448\u{24916}\u70A5\u{24976}\u9284\u73E6\u935F\u{204FE}\u9331\u{28ACE}\u{28A16}\u9386\u{28BE7}\u{255D5}\u4935\u{28A82}\u716B"], ["97a1", "\u{24943}\u{20CFF}\u56A4\u{2061A}\u{20BEB}\u{20CB8}\u5502\u79C4\u{217FA}\u7DFE\u{216C2}\u{24A50}\u{21852}\u452E\u9401\u370A\u{28AC0}\u{249AD}\u59B0\u{218BF}\u{21883}\u{27484}\u5AA1\u36E2\u{23D5B}\u36B0\u925F\u5A79\u{28A81}\u{21862}\u9374\u3CCD\u{20AB4}\u4A96\u398A\u50F4\u3D69\u3D4C\u{2139C}\u7175\u42FB\u{28218}\u6E0F\u{290E4}\u44EB\u6D57\u{27E4F}\u7067\u6CAF\u3CD6\u{23FED}\u{23E2D}\u6E02\u6F0C\u3D6F\u{203F5}\u7551\u36BC\u34C8\u4680\u3EDA\u4871\u59C4\u926E\u493E\u8F41\u{28C1C}\u{26BC0}\u5812\u57C8\u36D6\u{21452}\u70FE\u{24362}\u{24A71}\u{22FE3}\u{212B0}\u{223BD}\u68B9\u6967\u{21398}\u{234E5}\u{27BF4}\u{236DF}\u{28A83}\u{237D6}\u{233FA}\u{24C9F}\u6A1A\u{236AD}\u{26CB7}\u843E\u44DF\u44CE"], ["9840", "\u{26D26}\u{26D51}\u{26C82}\u{26FDE}\u6F17\u{27109}\u833D\u{2173A}\u83ED\u{26C80}\u{27053}\u{217DB}\u5989\u5A82\u{217B3}\u5A61\u5A71\u{21905}\u{241FC}\u372D\u59EF\u{2173C}\u36C7\u718E\u9390\u669A\u{242A5}\u5A6E\u5A2B\u{24293}\u6A2B\u{23EF9}\u{27736}\u{2445B}\u{242CA}\u711D\u{24259}\u{289E1}\u4FB0\u{26D28}\u5CC2\u{244CE}\u{27E4D}\u{243BD}\u6A0C\u{24256}\u{21304}\u70A6\u7133\u{243E9}\u3DA5\u6CDF\u{2F825}\u{24A4F}\u7E65\u59EB\u5D2F\u3DF3\u5F5C\u{24A5D}\u{217DF}\u7DA4\u8426"], ["98a1", "\u5485\u{23AFA}\u{23300}\u{20214}\u577E\u{208D5}\u{20619}\u3FE5\u{21F9E}\u{2A2B6}\u7003\u{2915B}\u5D70\u738F\u7CD3\u{28A59}\u{29420}\u4FC8\u7FE7\u72CD\u7310\u{27AF4}\u7338\u7339\u{256F6}\u7341\u7348\u3EA9\u{27B18}\u906C\u71F5\u{248F2}\u73E1\u81F6\u3ECA\u770C\u3ED1\u6CA2\u56FD\u7419\u741E\u741F\u3EE2\u3EF0\u3EF4\u3EFA\u74D3\u3F0E\u3F53\u7542\u756D\u7572\u758D\u3F7C\u75C8\u75DC\u3FC0\u764D\u3FD7\u7674\u3FDC\u767A\u{24F5C}\u7188\u5623\u8980\u5869\u401D\u7743\u4039\u6761\u4045\u35DB\u7798\u406A\u406F\u5C5E\u77BE\u77CB\u58F2\u7818\u70B9\u781C\u40A8\u7839\u7847\u7851\u7866\u8448\u{25535}\u7933\u6803\u7932\u4103"], ["9940", "\u4109\u7991\u7999\u8FBB\u7A06\u8FBC\u4167\u7A91\u41B2\u7ABC\u8279\u41C4\u7ACF\u7ADB\u41CF\u4E21\u7B62\u7B6C\u7B7B\u7C12\u7C1B\u4260\u427A\u7C7B\u7C9C\u428C\u7CB8\u4294\u7CED\u8F93\u70C0\u{20CCF}\u7DCF\u7DD4\u7DD0\u7DFD\u7FAE\u7FB4\u729F\u4397\u8020\u8025\u7B39\u802E\u8031\u8054\u3DCC\u57B4\u70A0\u80B7\u80E9\u43ED\u810C\u732A\u810E\u8112\u7560\u8114\u4401\u3B39\u8156\u8159\u815A"], ["99a1", "\u4413\u583A\u817C\u8184\u4425\u8193\u442D\u81A5\u57EF\u81C1\u81E4\u8254\u448F\u82A6\u8276\u82CA\u82D8\u82FF\u44B0\u8357\u9669\u698A\u8405\u70F5\u8464\u60E3\u8488\u4504\u84BE\u84E1\u84F8\u8510\u8538\u8552\u453B\u856F\u8570\u85E0\u4577\u8672\u8692\u86B2\u86EF\u9645\u878B\u4606\u4617\u88AE\u88FF\u8924\u8947\u8991\u{27967}\u8A29\u8A38\u8A94\u8AB4\u8C51\u8CD4\u8CF2\u8D1C\u4798\u585F\u8DC3\u47ED\u4EEE\u8E3A\u55D8\u5754\u8E71\u55F5\u8EB0\u4837\u8ECE\u8EE2\u8EE4\u8EED\u8EF2\u8FB7\u8FC1\u8FCA\u8FCC\u9033\u99C4\u48AD\u98E0\u9213\u491E\u9228\u9258\u926B\u92B1\u92AE\u92BF"], ["9a40", "\u92E3\u92EB\u92F3\u92F4\u92FD\u9343\u9384\u93AD\u4945\u4951\u9EBF\u9417\u5301\u941D\u942D\u943E\u496A\u9454\u9479\u952D\u95A2\u49A7\u95F4\u9633\u49E5\u67A0\u4A24\u9740\u4A35\u97B2\u97C2\u5654\u4AE4\u60E8\u98B9\u4B19\u98F1\u5844\u990E\u9919\u51B4\u991C\u9937\u9942\u995D\u9962\u4B70\u99C5\u4B9D\u9A3C\u9B0F\u7A83\u9B69\u9B81\u9BDD\u9BF1\u9BF4\u4C6D\u9C20\u376F\u{21BC2}\u9D49\u9C3A"], ["9aa1", "\u9EFE\u5650\u9D93\u9DBD\u9DC0\u9DFC\u94F6\u8FB6\u9E7B\u9EAC\u9EB1\u9EBD\u9EC6\u94DC\u9EE2\u9EF1\u9EF8\u7AC8\u9F44\u{20094}\u{202B7}\u{203A0}\u691A\u94C3\u59AC\u{204D7}\u5840\u94C1\u37B9\u{205D5}\u{20615}\u{20676}\u{216BA}\u5757\u7173\u{20AC2}\u{20ACD}\u{20BBF}\u546A\u{2F83B}\u{20BCB}\u549E\u{20BFB}\u{20C3B}\u{20C53}\u{20C65}\u{20C7C}\u60E7\u{20C8D}\u567A\u{20CB5}\u{20CDD}\u{20CED}\u{20D6F}\u{20DB2}\u{20DC8}\u6955\u9C2F\u87A5\u{20E04}\u{20E0E}\u{20ED7}\u{20F90}\u{20F2D}\u{20E73}\u5C20\u{20FBC}\u5E0B\u{2105C}\u{2104F}\u{21076}\u671E\u{2107B}\u{21088}\u{21096}\u3647\u{210BF}\u{210D3}\u{2112F}\u{2113B}\u5364\u84AD\u{212E3}\u{21375}\u{21336}\u8B81\u{21577}\u{21619}\u{217C3}\u{217C7}\u4E78\u70BB\u{2182D}\u{2196A}"], ["9b40", "\u{21A2D}\u{21A45}\u{21C2A}\u{21C70}\u{21CAC}\u{21EC8}\u62C3\u{21ED5}\u{21F15}\u7198\u6855\u{22045}\u69E9\u36C8\u{2227C}\u{223D7}\u{223FA}\u{2272A}\u{22871}\u{2294F}\u82FD\u{22967}\u{22993}\u{22AD5}\u89A5\u{22AE8}\u8FA0\u{22B0E}\u97B8\u{22B3F}\u9847\u9ABD\u{22C4C}"], ["9b62", "\u{22C88}\u{22CB7}\u{25BE8}\u{22D08}\u{22D12}\u{22DB7}\u{22D95}\u{22E42}\u{22F74}\u{22FCC}\u{23033}\u{23066}\u{2331F}\u{233DE}\u5FB1\u6648\u66BF\u{27A79}\u{23567}\u{235F3}\u7201\u{249BA}\u77D7\u{2361A}\u{23716}\u7E87\u{20346}\u58B5\u670E"], ["9ba1", "\u6918\u{23AA7}\u{27657}\u{25FE2}\u{23E11}\u{23EB9}\u{275FE}\u{2209A}\u48D0\u4AB8\u{24119}\u{28A9A}\u{242EE}\u{2430D}\u{2403B}\u{24334}\u{24396}\u{24A45}\u{205CA}\u51D2\u{20611}\u599F\u{21EA8}\u3BBE\u{23CFF}\u{24404}\u{244D6}\u5788\u{24674}\u399B\u{2472F}\u{285E8}\u{299C9}\u3762\u{221C3}\u8B5E\u{28B4E}\u99D6\u{24812}\u{248FB}\u{24A15}\u7209\u{24AC0}\u{20C78}\u5965\u{24EA5}\u{24F86}\u{20779}\u8EDA\u{2502C}\u528F\u573F\u7171\u{25299}\u{25419}\u{23F4A}\u{24AA7}\u55BC\u{25446}\u{2546E}\u{26B52}\u91D4\u3473\u{2553F}\u{27632}\u{2555E}\u4718\u{25562}\u{25566}\u{257C7}\u{2493F}\u{2585D}\u5066\u34FB\u{233CC}\u60DE\u{25903}\u477C\u{28948}\u{25AAE}\u{25B89}\u{25C06}\u{21D90}\u57A1\u7151\u6FB6\u{26102}\u{27C12}\u9056\u{261B2}\u{24F9A}\u8B62\u{26402}\u{2644A}"], ["9c40", "\u5D5B\u{26BF7}\u8F36\u{26484}\u{2191C}\u8AEA\u{249F6}\u{26488}\u{23FEF}\u{26512}\u4BC0\u{265BF}\u{266B5}\u{2271B}\u9465\u{257E1}\u6195\u5A27\u{2F8CD}\u4FBB\u56B9\u{24521}\u{266FC}\u4E6A\u{24934}\u9656\u6D8F\u{26CBD}\u3618\u8977\u{26799}\u{2686E}\u{26411}\u{2685E}\u71DF\u{268C7}\u7B42\u{290C0}\u{20A11}\u{26926}\u9104\u{26939}\u7A45\u9DF0\u{269FA}\u9A26\u{26A2D}\u365F\u{26469}\u{20021}\u7983\u{26A34}\u{26B5B}\u5D2C\u{23519}\u83CF\u{26B9D}\u46D0\u{26CA4}\u753B\u8865\u{26DAE}\u58B6"], ["9ca1", "\u371C\u{2258D}\u{2704B}\u{271CD}\u3C54\u{27280}\u{27285}\u9281\u{2217A}\u{2728B}\u9330\u{272E6}\u{249D0}\u6C39\u949F\u{27450}\u{20EF8}\u8827\u88F5\u{22926}\u{28473}\u{217B1}\u6EB8\u{24A2A}\u{21820}\u39A4\u36B9\u5C10\u79E3\u453F\u66B6\u{29CAD}\u{298A4}\u8943\u{277CC}\u{27858}\u56D6\u40DF\u{2160A}\u39A1\u{2372F}\u{280E8}\u{213C5}\u71AD\u8366\u{279DD}\u{291A8}\u5A67\u4CB7\u{270AF}\u{289AB}\u{279FD}\u{27A0A}\u{27B0B}\u{27D66}\u{2417A}\u7B43\u797E\u{28009}\u6FB5\u{2A2DF}\u6A03\u{28318}\u53A2\u{26E07}\u93BF\u6836\u975D\u{2816F}\u{28023}\u{269B5}\u{213ED}\u{2322F}\u{28048}\u5D85\u{28C30}\u{28083}\u5715\u9823\u{28949}\u5DAB\u{24988}\u65BE\u69D5\u53D2\u{24AA5}\u{23F81}\u3C11\u6736\u{28090}\u{280F4}\u{2812E}\u{21FA1}\u{2814F}"], ["9d40", "\u{28189}\u{281AF}\u{2821A}\u{28306}\u{2832F}\u{2838A}\u35CA\u{28468}\u{286AA}\u48FA\u63E6\u{28956}\u7808\u9255\u{289B8}\u43F2\u{289E7}\u43DF\u{289E8}\u{28B46}\u{28BD4}\u59F8\u{28C09}\u8F0B\u{28FC5}\u{290EC}\u7B51\u{29110}\u{2913C}\u3DF7\u{2915E}\u{24ACA}\u8FD0\u728F\u568B\u{294E7}\u{295E9}\u{295B0}\u{295B8}\u{29732}\u{298D1}\u{29949}\u{2996A}\u{299C3}\u{29A28}\u{29B0E}\u{29D5A}\u{29D9B}\u7E9F\u{29EF8}\u{29F23}\u4CA4\u9547\u{2A293}\u71A2\u{2A2FF}\u4D91\u9012\u{2A5CB}\u4D9C\u{20C9C}\u8FBE\u55C1"], ["9da1", "\u8FBA\u{224B0}\u8FB9\u{24A93}\u4509\u7E7F\u6F56\u6AB1\u4EEA\u34E4\u{28B2C}\u{2789D}\u373A\u8E80\u{217F5}\u{28024}\u{28B6C}\u{28B99}\u{27A3E}\u{266AF}\u3DEB\u{27655}\u{23CB7}\u{25635}\u{25956}\u4E9A\u{25E81}\u{26258}\u56BF\u{20E6D}\u8E0E\u5B6D\u{23E88}\u{24C9E}\u63DE\u62D0\u{217F6}\u{2187B}\u6530\u562D\u{25C4A}\u541A\u{25311}\u3DC6\u{29D98}\u4C7D\u5622\u561E\u7F49\u{25ED8}\u5975\u{23D40}\u8770\u4E1C\u{20FEA}\u{20D49}\u{236BA}\u8117\u9D5E\u8D18\u763B\u9C45\u764E\u77B9\u9345\u5432\u8148\u82F7\u5625\u8132\u8418\u80BD\u55EA\u7962\u5643\u5416\u{20E9D}\u35CE\u5605\u55F1\u66F1\u{282E2}\u362D\u7534\u55F0\u55BA\u5497\u5572\u{20C41}\u{20C96}\u5ED0\u{25148}\u{20E76}\u{22C62}"], ["9e40", "\u{20EA2}\u9EAB\u7D5A\u55DE\u{21075}\u629D\u976D\u5494\u8CCD\u71F6\u9176\u63FC\u63B9\u63FE\u5569\u{22B43}\u9C72\u{22EB3}\u519A\u34DF\u{20DA7}\u51A7\u544D\u551E\u5513\u7666\u8E2D\u{2688A}\u75B1\u80B6\u8804\u8786\u88C7\u81B6\u841C\u{210C1}\u44EC\u7304\u{24706}\u5B90\u830B\u{26893}\u567B\u{226F4}\u{27D2F}\u{241A3}\u{27D73}\u{26ED0}\u{272B6}\u9170\u{211D9}\u9208\u{23CFC}\u{2A6A9}\u{20EAC}\u{20EF9}\u7266\u{21CA2}\u474E\u{24FC2}\u{27FF9}\u{20FEB}\u40FA"], ["9ea1", "\u9C5D\u651F\u{22DA0}\u48F3\u{247E0}\u{29D7C}\u{20FEC}\u{20E0A}\u6062\u{275A3}\u{20FED}"], ["9ead", "\u{26048}\u{21187}\u71A3\u7E8E\u9D50\u4E1A\u4E04\u3577\u5B0D\u6CB2\u5367\u36AC\u39DC\u537D\u36A5\u{24618}\u589A\u{24B6E}\u822D\u544B\u57AA\u{25A95}\u{20979}"], ["9ec5", "\u3A52\u{22465}\u7374\u{29EAC}\u4D09\u9BED\u{23CFE}\u{29F30}\u4C5B\u{24FA9}\u{2959E}\u{29FDE}\u845C\u{23DB6}\u{272B2}\u{267B3}\u{23720}\u632E\u7D25\u{23EF7}\u{23E2C}\u3A2A\u9008\u52CC\u3E74\u367A\u45E9\u{2048E}\u7640\u5AF0\u{20EB6}\u787A\u{27F2E}\u58A7\u40BF\u567C\u9B8B\u5D74\u7654\u{2A434}\u9E85\u4CE1\u75F9\u37FB\u6119\u{230DA}\u{243F2}"], ["9ef5", "\u565D\u{212A9}\u57A7\u{24963}\u{29E06}\u5234\u{270AE}\u35AD\u6C4A\u9D7C"], ["9f40", "\u7C56\u9B39\u57DE\u{2176C}\u5C53\u64D3\u{294D0}\u{26335}\u{27164}\u86AD\u{20D28}\u{26D22}\u{24AE2}\u{20D71}"], ["9f4f", "\u51FE\u{21F0F}\u5D8E\u9703\u{21DD1}\u9E81\u904C\u7B1F\u9B02\u5CD1\u7BA3\u6268\u6335\u9AFF\u7BCF\u9B2A\u7C7E\u9B2E\u7C42\u7C86\u9C15\u7BFC\u9B09\u9F17\u9C1B\u{2493E}\u9F5A\u5573\u5BC3\u4FFD\u9E98\u4FF2\u5260\u3E06\u52D1\u5767\u5056\u59B7\u5E12\u97C8\u9DAB\u8F5C\u5469\u97B4\u9940\u97BA\u532C\u6130"], ["9fa1", "\u692C\u53DA\u9C0A\u9D02\u4C3B\u9641\u6980\u50A6\u7546\u{2176D}\u99DA\u5273"], ["9fae", "\u9159\u9681\u915C"], ["9fb2", "\u9151\u{28E97}\u637F\u{26D23}\u6ACA\u5611\u918E\u757A\u6285\u{203FC}\u734F\u7C70\u{25C21}\u{23CFD}"], ["9fc1", "\u{24919}\u76D6\u9B9D\u4E2A\u{20CD4}\u83BE\u8842"], ["9fc9", "\u5C4A\u69C0\u50ED\u577A\u521F\u5DF5\u4ECE\u6C31\u{201F2}\u4F39\u549C\u54DA\u529A\u8D82\u35FE\u5F0C\u35F3"], ["9fdb", "\u6B52\u917C\u9FA5\u9B97\u982E\u98B4\u9ABA\u9EA8\u9E84\u717A\u7B14"], ["9fe7", "\u6BFA\u8818\u7F78"], ["9feb", "\u5620\u{2A64A}\u8E77\u9F53"], ["9ff0", "\u8DD4\u8E4F\u9E1C\u8E01\u6282\u{2837D}\u8E28\u8E75\u7AD3\u{24A77}\u7A3E\u78D8\u6CEA\u8A67\u7607"], ["a040", "\u{28A5A}\u9F26\u6CCE\u87D6\u75C3\u{2A2B2}\u7853\u{2F840}\u8D0C\u72E2\u7371\u8B2D\u7302\u74F1\u8CEB\u{24ABB}\u862F\u5FBA\u88A0\u44B7"], ["a055", "\u{2183B}\u{26E05}"], ["a058", "\u8A7E\u{2251B}"], ["a05b", "\u60FD\u7667\u9AD7\u9D44\u936E\u9B8F\u87F5"], ["a063", "\u880F\u8CF7\u732C\u9721\u9BB0\u35D6\u72B2\u4C07\u7C51\u994A\u{26159}\u6159\u4C04\u9E96\u617D"], ["a073", "\u575F\u616F\u62A6\u6239\u62CE\u3A5C\u61E2\u53AA\u{233F5}\u6364\u6802\u35D2"], ["a0a1", "\u5D57\u{28BC2}\u8FDA\u{28E39}"], ["a0a6", "\u50D9\u{21D46}\u7906\u5332\u9638\u{20F3B}\u4065"], ["a0ae", "\u77FE"], ["a0b0", "\u7CC2\u{25F1A}\u7CDA\u7A2D\u8066\u8063\u7D4D\u7505\u74F2\u8994\u821A\u670C\u8062\u{27486}\u805B\u74F0\u8103\u7724\u8989\u{267CC}\u7553\u{26ED1}\u87A9\u87CE\u81C8\u878C\u8A49\u8CAD\u8B43\u772B\u74F8\u84DA\u3635\u69B2\u8DA6"], ["a0d4", "\u89A9\u7468\u6DB9\u87C1\u{24011}\u74E7\u3DDB\u7176\u60A4\u619C\u3CD1\u7162\u6077"], ["a0e2", "\u7F71\u{28B2D}\u7250\u60E9\u4B7E\u5220\u3C18\u{23CC7}\u{25ED7}\u{27656}\u{25531}\u{21944}\u{212FE}\u{29903}\u{26DDC}\u{270AD}\u5CC1\u{261AD}\u{28A0F}\u{23677}\u{200EE}\u{26846}\u{24F0E}\u4562\u5B1F\u{2634C}\u9F50\u9EA6\u{2626B}"], ["a3c0", "\u2400", 31, "\u2421"], ["c6a1", "\u2460", 9, "\u2474", 9, "\u2170", 9, "\u4E36\u4E3F\u4E85\u4EA0\u5182\u5196\u51AB\u52F9\u5338\u5369\u53B6\u590A\u5B80\u5DDB\u2F33\u5E7F\u5EF4\u5F50\u5F61\u6534\u65E0\u7592\u7676\u8FB5\u96B6\xA8\u02C6\u30FD\u30FE\u309D\u309E\u3003\u4EDD\u3005\u3006\u3007\u30FC\uFF3B\uFF3D\u273D\u3041", 23], ["c740", "\u3059", 58, "\u30A1\u30A2\u30A3\u30A4"], ["c7a1", "\u30A5", 81, "\u0410", 5, "\u0401\u0416", 4], ["c840", "\u041B", 26, "\u0451\u0436", 25, "\u21E7\u21B8\u21B9\u31CF\u{200CC}\u4E5A\u{2008A}\u5202\u4491"], ["c8a1", "\u9FB0\u5188\u9FB1\u{27607}"], ["c8cd", "\uFFE2\uFFE4\uFF07\uFF02\u3231\u2116\u2121\u309B\u309C\u2E80\u2E84\u2E86\u2E87\u2E88\u2E8A\u2E8C\u2E8D\u2E95\u2E9C\u2E9D\u2EA5\u2EA7\u2EAA\u2EAC\u2EAE\u2EB6\u2EBC\u2EBE\u2EC6\u2ECA\u2ECC\u2ECD\u2ECF\u2ED6\u2ED7\u2EDE\u2EE3"], ["c8f5", "\u0283\u0250\u025B\u0254\u0275\u0153\xF8\u014B\u028A\u026A"], ["f9fe", "\uFFED"], ["fa40", "\u{20547}\u92DB\u{205DF}\u{23FC5}\u854C\u42B5\u73EF\u51B5\u3649\u{24942}\u{289E4}\u9344\u{219DB}\u82EE\u{23CC8}\u783C\u6744\u62DF\u{24933}\u{289AA}\u{202A0}\u{26BB3}\u{21305}\u4FAB\u{224ED}\u5008\u{26D29}\u{27A84}\u{23600}\u{24AB1}\u{22513}\u5029\u{2037E}\u5FA4\u{20380}\u{20347}\u6EDB\u{2041F}\u507D\u5101\u347A\u510E\u986C\u3743\u8416\u{249A4}\u{20487}\u5160\u{233B4}\u516A\u{20BFF}\u{220FC}\u{202E5}\u{22530}\u{2058E}\u{23233}\u{21983}\u5B82\u877D\u{205B3}\u{23C99}\u51B2\u51B8"], ["faa1", "\u9D34\u51C9\u51CF\u51D1\u3CDC\u51D3\u{24AA6}\u51B3\u51E2\u5342\u51ED\u83CD\u693E\u{2372D}\u5F7B\u520B\u5226\u523C\u52B5\u5257\u5294\u52B9\u52C5\u7C15\u8542\u52E0\u860D\u{26B13}\u5305\u{28ADE}\u5549\u6ED9\u{23F80}\u{20954}\u{23FEC}\u5333\u5344\u{20BE2}\u6CCB\u{21726}\u681B\u73D5\u604A\u3EAA\u38CC\u{216E8}\u71DD\u44A2\u536D\u5374\u{286AB}\u537E\u537F\u{21596}\u{21613}\u77E6\u5393\u{28A9B}\u53A0\u53AB\u53AE\u73A7\u{25772}\u3F59\u739C\u53C1\u53C5\u6C49\u4E49\u57FE\u53D9\u3AAB\u{20B8F}\u53E0\u{23FEB}\u{22DA3}\u53F6\u{20C77}\u5413\u7079\u552B\u6657\u6D5B\u546D\u{26B53}\u{20D74}\u555D\u548F\u54A4\u47A6\u{2170D}\u{20EDD}\u3DB4\u{20D4D}"], ["fb40", "\u{289BC}\u{22698}\u5547\u4CED\u542F\u7417\u5586\u55A9\u5605\u{218D7}\u{2403A}\u4552\u{24435}\u66B3\u{210B4}\u5637\u66CD\u{2328A}\u66A4\u66AD\u564D\u564F\u78F1\u56F1\u9787\u53FE\u5700\u56EF\u56ED\u{28B66}\u3623\u{2124F}\u5746\u{241A5}\u6C6E\u708B\u5742\u36B1\u{26C7E}\u57E6\u{21416}\u5803\u{21454}\u{24363}\u5826\u{24BF5}\u585C\u58AA\u3561\u58E0\u58DC\u{2123C}\u58FB\u5BFF\u5743\u{2A150}\u{24278}\u93D3\u35A1\u591F\u68A6\u36C3\u6E59"], ["fba1", "\u{2163E}\u5A24\u5553\u{21692}\u8505\u59C9\u{20D4E}\u{26C81}\u{26D2A}\u{217DC}\u59D9\u{217FB}\u{217B2}\u{26DA6}\u6D71\u{21828}\u{216D5}\u59F9\u{26E45}\u5AAB\u5A63\u36E6\u{249A9}\u5A77\u3708\u5A96\u7465\u5AD3\u{26FA1}\u{22554}\u3D85\u{21911}\u3732\u{216B8}\u5E83\u52D0\u5B76\u6588\u5B7C\u{27A0E}\u4004\u485D\u{20204}\u5BD5\u6160\u{21A34}\u{259CC}\u{205A5}\u5BF3\u5B9D\u4D10\u5C05\u{21B44}\u5C13\u73CE\u5C14\u{21CA5}\u{26B28}\u5C49\u48DD\u5C85\u5CE9\u5CEF\u5D8B\u{21DF9}\u{21E37}\u5D10\u5D18\u5D46\u{21EA4}\u5CBA\u5DD7\u82FC\u382D\u{24901}\u{22049}\u{22173}\u8287\u3836\u3BC2\u5E2E\u6A8A\u5E75\u5E7A\u{244BC}\u{20CD3}\u53A6\u4EB7\u5ED0\u53A8\u{21771}\u5E09\u5EF4\u{28482}"], ["fc40", "\u5EF9\u5EFB\u38A0\u5EFC\u683E\u941B\u5F0D\u{201C1}\u{2F894}\u3ADE\u48AE\u{2133A}\u5F3A\u{26888}\u{223D0}\u5F58\u{22471}\u5F63\u97BD\u{26E6E}\u5F72\u9340\u{28A36}\u5FA7\u5DB6\u3D5F\u{25250}\u{21F6A}\u{270F8}\u{22668}\u91D6\u{2029E}\u{28A29}\u6031\u6685\u{21877}\u3963\u3DC7\u3639\u5790\u{227B4}\u7971\u3E40\u609E\u60A4\u60B3\u{24982}\u{2498F}\u{27A53}\u74A4\u50E1\u5AA0\u6164\u8424\u6142\u{2F8A6}\u{26ED2}\u6181\u51F4\u{20656}\u6187\u5BAA\u{23FB7}"], ["fca1", "\u{2285F}\u61D3\u{28B9D}\u{2995D}\u61D0\u3932\u{22980}\u{228C1}\u6023\u615C\u651E\u638B\u{20118}\u62C5\u{21770}\u62D5\u{22E0D}\u636C\u{249DF}\u3A17\u6438\u63F8\u{2138E}\u{217FC}\u6490\u6F8A\u{22E36}\u9814\u{2408C}\u{2571D}\u64E1\u64E5\u947B\u3A66\u643A\u3A57\u654D\u6F16\u{24A28}\u{24A23}\u6585\u656D\u655F\u{2307E}\u65B5\u{24940}\u4B37\u65D1\u40D8\u{21829}\u65E0\u65E3\u5FDF\u{23400}\u6618\u{231F7}\u{231F8}\u6644\u{231A4}\u{231A5}\u664B\u{20E75}\u6667\u{251E6}\u6673\u6674\u{21E3D}\u{23231}\u{285F4}\u{231C8}\u{25313}\u77C5\u{228F7}\u99A4\u6702\u{2439C}\u{24A21}\u3B2B\u69FA\u{237C2}\u675E\u6767\u6762\u{241CD}\u{290ED}\u67D7\u44E9\u6822\u6E50\u923C\u6801\u{233E6}\u{26DA0}\u685D"], ["fd40", "\u{2346F}\u69E1\u6A0B\u{28ADF}\u6973\u68C3\u{235CD}\u6901\u6900\u3D32\u3A01\u{2363C}\u3B80\u67AC\u6961\u{28A4A}\u42FC\u6936\u6998\u3BA1\u{203C9}\u8363\u5090\u69F9\u{23659}\u{2212A}\u6A45\u{23703}\u6A9D\u3BF3\u67B1\u6AC8\u{2919C}\u3C0D\u6B1D\u{20923}\u60DE\u6B35\u6B74\u{227CD}\u6EB5\u{23ADB}\u{203B5}\u{21958}\u3740\u5421\u{23B5A}\u6BE1\u{23EFC}\u6BDC\u6C37\u{2248B}\u{248F1}\u{26B51}\u6C5A\u8226\u6C79\u{23DBC}\u44C5\u{23DBD}\u{241A4}\u{2490C}\u{24900}"], ["fda1", "\u{23CC9}\u36E5\u3CEB\u{20D32}\u9B83\u{231F9}\u{22491}\u7F8F\u6837\u{26D25}\u{26DA1}\u{26DEB}\u6D96\u6D5C\u6E7C\u6F04\u{2497F}\u{24085}\u{26E72}\u8533\u{26F74}\u51C7\u6C9C\u6E1D\u842E\u{28B21}\u6E2F\u{23E2F}\u7453\u{23F82}\u79CC\u6E4F\u5A91\u{2304B}\u6FF8\u370D\u6F9D\u{23E30}\u6EFA\u{21497}\u{2403D}\u4555\u93F0\u6F44\u6F5C\u3D4E\u6F74\u{29170}\u3D3B\u6F9F\u{24144}\u6FD3\u{24091}\u{24155}\u{24039}\u{23FF0}\u{23FB4}\u{2413F}\u51DF\u{24156}\u{24157}\u{24140}\u{261DD}\u704B\u707E\u70A7\u7081\u70CC\u70D5\u70D6\u70DF\u4104\u3DE8\u71B4\u7196\u{24277}\u712B\u7145\u5A88\u714A\u716E\u5C9C\u{24365}\u714F\u9362\u{242C1}\u712C\u{2445A}\u{24A27}\u{24A22}\u71BA\u{28BE8}\u70BD\u720E"], ["fe40", "\u9442\u7215\u5911\u9443\u7224\u9341\u{25605}\u722E\u7240\u{24974}\u68BD\u7255\u7257\u3E55\u{23044}\u680D\u6F3D\u7282\u732A\u732B\u{24823}\u{2882B}\u48ED\u{28804}\u7328\u732E\u73CF\u73AA\u{20C3A}\u{26A2E}\u73C9\u7449\u{241E2}\u{216E7}\u{24A24}\u6623\u36C5\u{249B7}\u{2498D}\u{249FB}\u73F7\u7415\u6903\u{24A26}\u7439\u{205C3}\u3ED7\u745C\u{228AD}\u7460\u{28EB2}\u7447\u73E4\u7476\u83B9\u746C\u3730\u7474\u93F1\u6A2C\u7482\u4953\u{24A8C}"], ["fea1", "\u{2415F}\u{24A79}\u{28B8F}\u5B46\u{28C03}\u{2189E}\u74C8\u{21988}\u750E\u74E9\u751E\u{28ED9}\u{21A4B}\u5BD7\u{28EAC}\u9385\u754D\u754A\u7567\u756E\u{24F82}\u3F04\u{24D13}\u758E\u745D\u759E\u75B4\u7602\u762C\u7651\u764F\u766F\u7676\u{263F5}\u7690\u81EF\u37F8\u{26911}\u{2690E}\u76A1\u76A5\u76B7\u76CC\u{26F9F}\u8462\u{2509D}\u{2517D}\u{21E1C}\u771E\u7726\u7740\u64AF\u{25220}\u7758\u{232AC}\u77AF\u{28964}\u{28968}\u{216C1}\u77F4\u7809\u{21376}\u{24A12}\u68CA\u78AF\u78C7\u78D3\u96A5\u792E\u{255E0}\u78D7\u7934\u78B1\u{2760C}\u8FB8\u8884\u{28B2B}\u{26083}\u{2261C}\u7986\u8900\u6902\u7980\u{25857}\u799D\u{27B39}\u793C\u79A9\u6E2A\u{27126}\u3EA8\u79C6\u{2910D}\u79D4"]]; +}); +var XE = g((Xpe, KE) => { + "use strict"; + KE.exports = { shiftjis: { type: "_dbcs", table: function() { + return VE(); + }, encodeAdd: { "\xA5": 92, "\u203E": 126 }, encodeSkipVals: [{ from: 60736, to: 63808 }] }, csshiftjis: "shiftjis", mskanji: "shiftjis", sjis: "shiftjis", windows31j: "shiftjis", ms31j: "shiftjis", xsjis: "shiftjis", windows932: "shiftjis", ms932: "shiftjis", 932: "shiftjis", cp932: "shiftjis", eucjp: { type: "_dbcs", table: function() { + return HE(); + }, encodeAdd: { "\xA5": 92, "\u203E": 126 } }, gb2312: "cp936", gb231280: "cp936", gb23121980: "cp936", csgb2312: "cp936", csiso58gb231280: "cp936", euccn: "cp936", windows936: "cp936", ms936: "cp936", 936: "cp936", cp936: { type: "_dbcs", table: function() { + return ed(); + } }, gbk: { type: "_dbcs", table: function() { + return ed().concat(rx()); + } }, xgbk: "gbk", isoir58: "gbk", gb18030: { type: "_dbcs", table: function() { + return ed().concat(rx()); + }, gb18030: function() { + return JE(); + }, encodeSkipVals: [128], encodeAdd: { "\u20AC": 41699 } }, chinese: "gb18030", windows949: "cp949", ms949: "cp949", 949: "cp949", cp949: { type: "_dbcs", table: function() { + return GE(); + } }, cseuckr: "cp949", csksc56011987: "cp949", euckr: "cp949", isoir149: "cp949", korean: "cp949", ksc56011987: "cp949", ksc56011989: "cp949", ksc5601: "cp949", windows950: "cp950", ms950: "cp950", 950: "cp950", cp950: { type: "_dbcs", table: function() { + return nx(); + } }, big5: "big5hkscs", big5hkscs: { type: "_dbcs", table: function() { + return nx().concat(WE()); + }, encodeSkipVals: [41676] }, cnbig5: "big5hkscs", csbig5: "big5hkscs", xxbig5: "big5hkscs" }; +}); +var e4 = g((QE, Uo) => { + "use strict"; + var YE = [PE(), AE(), CE(), DE(), UE(), ME(), BE(), XE()]; + for (td = 0; td < YE.length; td++) { + Uo = YE[td]; + for (rd in Uo) Object.prototype.hasOwnProperty.call(Uo, rd) && (QE[rd] = Uo[rd]); + } + var Uo, rd, td; +}); +var n4 = g((Ype, r4) => { + "use strict"; + var t4 = O("buffer").Buffer, nd = O("stream").Transform; + r4.exports = function(e21) { + e21.encodeStream = function(r, n) { + return new ji(e21.getEncoder(r, n), n); + }, e21.decodeStream = function(r, n) { + return new Bn(e21.getDecoder(r, n), n); + }, e21.supportsStreams = true, e21.IconvLiteEncoderStream = ji, e21.IconvLiteDecoderStream = Bn, e21._collect = Bn.prototype.collect; + }; + function ji(e21, t) { + this.conv = e21, t = t || {}, t.decodeStrings = false, nd.call(this, t); + } + ji.prototype = Object.create(nd.prototype, { constructor: { value: ji } }); + ji.prototype._transform = function(e21, t, r) { + if (typeof e21 != "string") return r(new Error("Iconv encoding stream needs strings as its input.")); + try { + var n = this.conv.write(e21); + n && n.length && this.push(n), r(); + } catch (i) { + r(i); + } + }; + ji.prototype._flush = function(e21) { + try { + var t = this.conv.end(); + t && t.length && this.push(t), e21(); + } catch (r) { + e21(r); + } + }; + ji.prototype.collect = function(e21) { + var t = []; + return this.on("error", e21), this.on("data", function(r) { + t.push(r); + }), this.on("end", function() { + e21(null, t4.concat(t)); + }), this; + }; + function Bn(e21, t) { + this.conv = e21, t = t || {}, t.encoding = this.encoding = "utf8", nd.call(this, t); + } + Bn.prototype = Object.create(nd.prototype, { constructor: { value: Bn } }); + Bn.prototype._transform = function(e21, t, r) { + if (!t4.isBuffer(e21)) return r(new Error("Iconv decoding stream needs buffers as its input.")); + try { + var n = this.conv.write(e21); + n && n.length && this.push(n, this.encoding), r(); + } catch (i) { + r(i); + } + }; + Bn.prototype._flush = function(e21) { + try { + var t = this.conv.end(); + t && t.length && this.push(t, this.encoding), e21(); + } catch (r) { + e21(r); + } + }; + Bn.prototype.collect = function(e21) { + var t = ""; + return this.on("error", e21), this.on("data", function(r) { + t += r; + }), this.on("end", function() { + e21(null, t); + }), this; + }; +}); +var o4 = g((Qpe, i4) => { + "use strict"; + var Ge = O("buffer").Buffer; + i4.exports = function(e21) { + var t = void 0; + e21.supportsNodeEncodingsExtension = !(Ge.from || new Ge(0) instanceof Uint8Array), e21.extendNodeEncodings = function() { + if (!t) { + if (t = {}, !e21.supportsNodeEncodingsExtension) { + console.error("ACTION NEEDED: require('iconv-lite').extendNodeEncodings() is not supported in your version of Node"), console.error("See more info at https://github.com/ashtuchkin/iconv-lite/wiki/Node-v4-compatibility"); + return; + } + var n = { hex: true, utf8: true, "utf-8": true, ascii: true, binary: true, base64: true, ucs2: true, "ucs-2": true, utf16le: true, "utf-16le": true }; + Ge.isNativeEncoding = function(a) { + return a && n[a.toLowerCase()]; + }; + var i = O("buffer").SlowBuffer; + if (t.SlowBufferToString = i.prototype.toString, i.prototype.toString = function(a, s, c) { + return a = String(a || "utf8").toLowerCase(), Ge.isNativeEncoding(a) ? t.SlowBufferToString.call(this, a, s, c) : (typeof s > "u" && (s = 0), typeof c > "u" && (c = this.length), e21.decode(this.slice(s, c), a)); + }, t.SlowBufferWrite = i.prototype.write, i.prototype.write = function(a, s, c, u) { + if (isFinite(s)) isFinite(c) || (u = c, c = void 0); + else { + var l = u; + u = s, s = c, c = l; + } + s = +s || 0; + var p = this.length - s; + if (c ? (c = +c, c > p && (c = p)) : c = p, u = String(u || "utf8").toLowerCase(), Ge.isNativeEncoding(u)) return t.SlowBufferWrite.call(this, a, s, c, u); + if (a.length > 0 && (c < 0 || s < 0)) throw new RangeError("attempt to write beyond buffer bounds"); + var d = e21.encode(a, u); + return d.length < c && (c = d.length), d.copy(this, s, 0, c), c; + }, t.BufferIsEncoding = Ge.isEncoding, Ge.isEncoding = function(a) { + return Ge.isNativeEncoding(a) || e21.encodingExists(a); + }, t.BufferByteLength = Ge.byteLength, Ge.byteLength = i.byteLength = function(a, s) { + return s = String(s || "utf8").toLowerCase(), Ge.isNativeEncoding(s) ? t.BufferByteLength.call(this, a, s) : e21.encode(a, s).length; + }, t.BufferToString = Ge.prototype.toString, Ge.prototype.toString = function(a, s, c) { + return a = String(a || "utf8").toLowerCase(), Ge.isNativeEncoding(a) ? t.BufferToString.call(this, a, s, c) : (typeof s > "u" && (s = 0), typeof c > "u" && (c = this.length), e21.decode(this.slice(s, c), a)); + }, t.BufferWrite = Ge.prototype.write, Ge.prototype.write = function(a, s, c, u) { + var l = s, p = c, d = u; + if (isFinite(s)) isFinite(c) || (u = c, c = void 0); + else { + var f = u; + u = s, s = c, c = f; + } + if (u = String(u || "utf8").toLowerCase(), Ge.isNativeEncoding(u)) return t.BufferWrite.call(this, a, l, p, d); + s = +s || 0; + var m = this.length - s; + if (c ? (c = +c, c > m && (c = m)) : c = m, a.length > 0 && (c < 0 || s < 0)) throw new RangeError("attempt to write beyond buffer bounds"); + var h = e21.encode(a, u); + return h.length < c && (c = h.length), h.copy(this, s, 0, c), c; + }, e21.supportsStreams) { + var o = O("stream").Readable; + t.ReadableSetEncoding = o.prototype.setEncoding, o.prototype.setEncoding = function(s, c) { + this._readableState.decoder = e21.getDecoder(s, c), this._readableState.encoding = s; + }, o.prototype.collect = e21._collect; + } + } + }, e21.undoExtendNodeEncodings = function() { + if (e21.supportsNodeEncodingsExtension) { + if (!t) throw new Error("require('iconv-lite').undoExtendNodeEncodings(): Nothing to undo; extendNodeEncodings() is not called."); + delete Ge.isNativeEncoding; + var n = O("buffer").SlowBuffer; + if (n.prototype.toString = t.SlowBufferToString, n.prototype.write = t.SlowBufferWrite, Ge.isEncoding = t.BufferIsEncoding, Ge.byteLength = t.BufferByteLength, Ge.prototype.toString = t.BufferToString, Ge.prototype.write = t.BufferWrite, e21.supportsStreams) { + var i = O("stream").Readable; + i.prototype.setEncoding = t.ReadableSetEncoding, delete i.prototype.collect; + } + t = void 0; + } + }; + }; +}); +var ox = g((ede, u4) => { + "use strict"; + var s4 = zi().Buffer, c4 = TE(), he = u4.exports; + he.encodings = null; + he.defaultCharUnicode = "\uFFFD"; + he.defaultCharSingleByte = "?"; + he.encode = function(t, r, n) { + t = "" + (t || ""); + var i = he.getEncoder(r, n), o = i.write(t), a = i.end(); + return a && a.length > 0 ? s4.concat([o, a]) : o; + }; + he.decode = function(t, r, n) { + typeof t == "string" && (he.skipDecodeWarning || (console.error("Iconv-lite warning: decode()-ing strings is deprecated. Refer to https://github.com/ashtuchkin/iconv-lite/wiki/Use-Buffers-when-decoding"), he.skipDecodeWarning = true), t = s4.from("" + (t || ""), "binary")); + var i = he.getDecoder(r, n), o = i.write(t), a = i.end(); + return a ? o + a : o; + }; + he.encodingExists = function(t) { + try { + return he.getCodec(t), true; + } catch { + return false; + } + }; + he.toEncoding = he.encode; + he.fromEncoding = he.decode; + he._codecDataCache = {}; + he.getCodec = function(t) { + he.encodings || (he.encodings = e4()); + for (var r = he._canonicalizeEncoding(t), n = {}; ; ) { + var i = he._codecDataCache[r]; + if (i) return i; + var o = he.encodings[r]; + switch (typeof o) { + case "string": + r = o; + break; + case "object": + for (var a in o) n[a] = o[a]; + n.encodingName || (n.encodingName = r), r = o.type; + break; + case "function": + return n.encodingName || (n.encodingName = r), i = new o(n, he), he._codecDataCache[n.encodingName] = i, i; + default: + throw new Error("Encoding not recognized: '" + t + "' (searched as: '" + r + "')"); + } + } + }; + he._canonicalizeEncoding = function(e21) { + return ("" + e21).toLowerCase().replace(/:\d{4}$|[^0-9a-z]/g, ""); + }; + he.getEncoder = function(t, r) { + var n = he.getCodec(t), i = new n.encoder(r, n); + return n.bomAware && r && r.addBOM && (i = new c4.PrependBOM(i, r)), i; + }; + he.getDecoder = function(t, r) { + var n = he.getCodec(t), i = new n.decoder(r, n); + return n.bomAware && !(r && r.stripBOM === false) && (i = new c4.StripBOM(i, r)), i; + }; + var a4 = typeof process < "u" && process.versions && process.versions.node; + a4 && (ix = a4.split(".").map(Number), (ix[0] > 0 || ix[1] >= 10) && n4()(he), o4()(he)); + var ix; +}); +var id = g((tde, l4) => { + "use strict"; + l4.exports = fU; + function dU(e21) { + for (var t = e21.listeners("data"), r = 0; r < t.length; r++) if (t[r].name === "ondata") return true; + return false; + } + function fU(e21) { + if (!e21) throw new TypeError("argument stream is required"); + if (typeof e21.unpipe == "function") { + e21.unpipe(); + return; + } + if (dU(e21)) for (var t, r = e21.listeners("close"), n = 0; n < r.length; n++) t = r[n], !(t.name !== "cleanup" && t.name !== "onclose") && t.call(e21); + } +}); +var m4 = g((rde, f4) => { + "use strict"; + var p4 = _U(), mU = Po(), Ai = oc(), hU = ox(), vU = id(); + f4.exports = xU; + var gU = /^Encoding not recognized: /; + function yU(e21) { + if (!e21) return null; + try { + return hU.getDecoder(e21); + } catch (t) { + throw gU.test(t.message) ? Ai(415, "specified encoding unsupported", { encoding: e21, type: "encoding.unsupported" }) : t; + } + } + function xU(e21, t, r) { + var n = r, i = t || {}; + if (e21 === void 0) throw new TypeError("argument stream is required"); + if (typeof e21 != "object" || e21 === null || typeof e21.on != "function") throw new TypeError("argument stream must be a stream"); + if ((t === true || typeof t == "string") && (i = { encoding: t }), typeof t == "function" && (n = t, i = {}), n !== void 0 && typeof n != "function") throw new TypeError("argument callback must be a function"); + if (!n && !global.Promise) throw new TypeError("argument callback is required"); + var o = i.encoding !== true ? i.encoding : "utf-8", a = mU.parse(i.limit), s = i.length != null && !isNaN(i.length) ? parseInt(i.length, 10) : null; + return n ? d4(e21, o, s, a, wU(n)) : new Promise(function(u, l) { + d4(e21, o, s, a, function(d, f) { + if (d) return l(d); + u(f); + }); + }); + } + function bU(e21) { + vU(e21), typeof e21.pause == "function" && e21.pause(); + } + function d4(e21, t, r, n, i) { + var o = false, a = true; + if (n !== null && r !== null && r > n) return p(Ai(413, "request entity too large", { expected: r, length: r, limit: n, type: "entity.too.large" })); + var s = e21._readableState; + if (e21._decoder || s && (s.encoding || s.decoder)) return p(Ai(500, "stream encoding should not be set", { type: "stream.encoding.set" })); + if (typeof e21.readable < "u" && !e21.readable) return p(Ai(500, "stream is not readable", { type: "stream.not.readable" })); + var c = 0, u; + try { + u = yU(t); + } catch (v) { + return p(v); + } + var l = u ? "" : []; + e21.on("aborted", d), e21.on("close", h), e21.on("data", f), e21.on("end", m), e21.on("error", m), a = false; + function p() { + for (var v = new Array(arguments.length), y = 0; y < v.length; y++) v[y] = arguments[y]; + o = true, a ? process.nextTick(x) : x(); + function x() { + h(), v[0] && bU(e21), i.apply(null, v); + } + } + function d() { + o || p(Ai(400, "request aborted", { code: "ECONNABORTED", expected: r, length: r, received: c, type: "request.aborted" })); + } + function f(v) { + o || (c += v.length, n !== null && c > n ? p(Ai(413, "request entity too large", { limit: n, received: c, type: "entity.too.large" })) : u ? l += u.write(v) : l.push(v)); + } + function m(v) { + if (!o) { + if (v) return p(v); + if (r !== null && c !== r) p(Ai(400, "request size did not match content length", { expected: r, length: r, received: c, type: "request.size.invalid" })); + else { + var y = u ? l + (u.end() || "") : Buffer.concat(l); + p(null, y); + } + } + } + function h() { + l = null, e21.removeListener("aborted", d), e21.removeListener("data", f), e21.removeListener("end", m), e21.removeListener("error", m), e21.removeListener("close", h); + } + } + function _U() { + try { + return O("async_hooks"); + } catch { + return {}; + } + } + function wU(e21) { + var t; + return p4.AsyncResource && (t = new p4.AsyncResource(e21.name || "bound-anonymous-fn")), !t || !t.runInAsyncScope ? e21 : t.runInAsyncScope.bind(t, e21, null); + } +}); +var v4 = g((nde, h4) => { + "use strict"; + h4.exports = $U; + function $U(e21, t) { + if (!Array.isArray(e21)) throw new TypeError("arg must be an array of [ee, events...] arrays"); + for (var r = [], n = 0; n < e21.length; n++) { + var i = e21[n]; + if (!Array.isArray(i) || i.length < 2) throw new TypeError("each array member must be [ee, events...]"); + for (var o = i[0], a = 1; a < i.length; a++) { + var s = i[a], c = SU(s, u); + o.on(s, c), r.push({ ee: o, event: s, fn: c }); + } + } + function u() { + l(), t.apply(null, arguments); + } + function l() { + for (var d, f = 0; f < r.length; f++) d = r[f], d.ee.removeListener(d.event, d.fn); + } + function p(d) { + t = d; + } + return p.cancel = l, p; + } + function SU(e21, t) { + return function(n) { + for (var i = new Array(arguments.length), o = this, a = e21 === "error" ? n : null, s = 0; s < i.length; s++) i[s] = arguments[s]; + t(a, o, e21, i); + }; + } +}); +var hc = g((ide, ax) => { + "use strict"; + ax.exports = EU; + ax.exports.isFinished = x4; + var g4 = PU(), y4 = v4(), kU = typeof setImmediate == "function" ? setImmediate : function(e21) { + process.nextTick(e21.bind.apply(e21, arguments)); + }; + function EU(e21, t) { + return x4(e21) !== false ? (kU(t, null, e21), e21) : (TU(e21, jU(t)), e21); + } + function x4(e21) { + var t = e21.socket; + if (typeof e21.finished == "boolean") return !!(e21.finished || t && !t.writable); + if (typeof e21.complete == "boolean") return !!(e21.upgrade || !t || !t.readable || e21.complete && !e21.readable); + } + function OU(e21, t) { + var r, n, i = false; + function o(s) { + r.cancel(), n.cancel(), i = true, t(s); + } + r = n = y4([[e21, "end", "finish"]], o); + function a(s) { + e21.removeListener("socket", a), !i && r === n && (n = y4([[s, "error", "close"]], o)); + } + if (e21.socket) { + a(e21.socket); + return; + } + e21.on("socket", a), e21.socket === void 0 && zU(e21, a); + } + function TU(e21, t) { + var r = e21.__onFinished; + (!r || !r.queue) && (r = e21.__onFinished = IU(e21), OU(e21, r)), r.queue.push(t); + } + function IU(e21) { + function t(r) { + if (e21.__onFinished === t && (e21.__onFinished = null), !!t.queue) { + var n = t.queue; + t.queue = null; + for (var i = 0; i < n.length; i++) n[i](r, e21); + } + } + return t.queue = [], t; + } + function zU(e21, t) { + var r = e21.assignSocket; + typeof r == "function" && (e21.assignSocket = function(i) { + r.call(this, i), t(i); + }); + } + function PU() { + try { + return O("async_hooks"); + } catch { + return {}; + } + } + function jU(e21) { + var t; + return g4.AsyncResource && (t = new g4.AsyncResource(e21.name || "bound-anonymous-fn")), !t || !t.runInAsyncScope ? e21 : t.runInAsyncScope.bind(t, e21, null); + } +}); +var vc = g((ode, $4) => { + "use strict"; + var Vn = oc(), AU = zy(), RU = m4(), b4 = ox(), _4 = hc(), CU = id(), w4 = O("zlib"); + $4.exports = NU; + function NU(e21, t, r, n, i, o) { + var a, s = o, c; + e21._body = true; + var u = s.encoding !== null ? s.encoding : null, l = s.verify; + try { + c = DU(e21, i, s.inflate), a = c.length, c.length = void 0; + } catch (p) { + return r(p); + } + if (s.length = a, s.encoding = l ? null : u, s.encoding === null && u !== null && !b4.encodingExists(u)) return r(Vn(415, 'unsupported charset "' + u.toUpperCase() + '"', { charset: u.toLowerCase(), type: "charset.unsupported" })); + i("read body"), RU(c, s, function(p, d) { + if (p) { + var f; + p.type === "encoding.unsupported" ? f = Vn(415, 'unsupported charset "' + u.toUpperCase() + '"', { charset: u.toLowerCase(), type: "charset.unsupported" }) : f = Vn(400, p), c !== e21 && (CU(e21), AU(c, true)), qU(e21, function() { + r(Vn(400, f)); + }); + return; + } + if (l) try { + i("verify body"), l(e21, t, d, u); + } catch (h) { + r(Vn(403, h, { body: d, type: h.type || "entity.verify.failed" })); + return; + } + var m = d; + try { + i("parse body"), m = typeof d != "string" && u !== null ? b4.decode(d, u) : d, e21.body = n(m); + } catch (h) { + r(Vn(400, h, { body: m, type: h.type || "entity.parse.failed" })); + return; + } + r(); + }); + } + function DU(e21, t, r) { + var n = (e21.headers["content-encoding"] || "identity").toLowerCase(), i = e21.headers["content-length"], o; + if (t('content-encoding "%s"', n), r === false && n !== "identity") throw Vn(415, "content encoding unsupported", { encoding: n, type: "encoding.unsupported" }); + switch (n) { + case "deflate": + o = w4.createInflate(), t("inflate body"), e21.pipe(o); + break; + case "gzip": + o = w4.createGunzip(), t("gunzip body"), e21.pipe(o); + break; + case "identity": + o = e21, o.length = i; + break; + default: + throw Vn(415, 'unsupported content encoding "' + n + '"', { encoding: n, type: "encoding.unsupported" }); + } + return o; + } + function qU(e21, t) { + _4.isFinished(e21) ? t(null) : (_4(e21, t), e21.resume()); + } +}); +var O4 = g((sx) => { + var S4 = /; *([!#$%&'\*\+\-\.0-9A-Z\^_`a-z\|~]+) *= *("(?:[ !\u0023-\u005b\u005d-\u007e\u0080-\u00ff]|\\[\u0020-\u007e])*"|[!#$%&'\*\+\-\.0-9A-Z\^_`a-z\|~]+) */g, UU = /^[\u0020-\u007e\u0080-\u00ff]+$/, E4 = /^[!#$%&'\*\+\-\.0-9A-Z\^_`a-z\|~]+$/, LU = /\\([\u0000-\u007f])/g, MU = /([\\"])/g, FU = /^[A-Za-z0-9][A-Za-z0-9!#$&^_.-]{0,126}$/, k4 = /^[A-Za-z0-9][A-Za-z0-9!#$&^_-]{0,126}$/, ZU = /^ *([A-Za-z0-9][A-Za-z0-9!#$&^_-]{0,126})\/([A-Za-z0-9][A-Za-z0-9!#$&^_.+-]{0,126}) *$/; + sx.format = BU; + sx.parse = VU; + function BU(e21) { + if (!e21 || typeof e21 != "object") throw new TypeError("argument obj is required"); + var t = e21.parameters, r = e21.subtype, n = e21.suffix, i = e21.type; + if (!i || !k4.test(i)) throw new TypeError("invalid type"); + if (!r || !FU.test(r)) throw new TypeError("invalid subtype"); + var o = i + "/" + r; + if (n) { + if (!k4.test(n)) throw new TypeError("invalid suffix"); + o += "+" + n; + } + if (t && typeof t == "object") for (var a, s = Object.keys(t).sort(), c = 0; c < s.length; c++) { + if (a = s[c], !E4.test(a)) throw new TypeError("invalid parameter name"); + o += "; " + a + "=" + JU(t[a]); + } + return o; + } + function VU(e21) { + if (!e21) throw new TypeError("argument string is required"); + if (typeof e21 == "object" && (e21 = HU(e21)), typeof e21 != "string") throw new TypeError("argument string is required to be a string"); + var t = e21.indexOf(";"), r = t !== -1 ? e21.substr(0, t) : e21, n, i, o = GU(r), a = {}, s; + for (S4.lastIndex = t; i = S4.exec(e21); ) { + if (i.index !== t) throw new TypeError("invalid parameter format"); + t += i[0].length, n = i[1].toLowerCase(), s = i[2], s[0] === '"' && (s = s.substr(1, s.length - 2).replace(LU, "$1")), a[n] = s; + } + if (t !== -1 && t !== e21.length) throw new TypeError("invalid parameter format"); + return o.parameters = a, o; + } + function HU(e21) { + if (typeof e21.getHeader == "function") return e21.getHeader("content-type"); + if (typeof e21.headers == "object") return e21.headers && e21.headers["content-type"]; + } + function JU(e21) { + var t = String(e21); + if (E4.test(t)) return t; + if (t.length > 0 && !UU.test(t)) throw new TypeError("invalid parameter value"); + return '"' + t.replace(MU, "\\$1") + '"'; + } + function GU(e21) { + var t = ZU.exec(e21.toLowerCase()); + if (!t) throw new TypeError("invalid media type"); + var r = t[1], n = t[2], i, o = n.lastIndexOf("+"); + o !== -1 && (i = n.substr(o + 1), n = n.substr(0, o)); + var a = { type: r, subtype: n, suffix: i }; + return a; + } +}); +var T4 = g((sde, WU) => { + WU.exports = { "application/1d-interleaved-parityfec": { source: "iana" }, "application/3gpdash-qoe-report+xml": { source: "iana", charset: "UTF-8", compressible: true }, "application/3gpp-ims+xml": { source: "iana", compressible: true }, "application/3gpphal+json": { source: "iana", compressible: true }, "application/3gpphalforms+json": { source: "iana", compressible: true }, "application/a2l": { source: "iana" }, "application/ace+cbor": { source: "iana" }, "application/activemessage": { source: "iana" }, "application/activity+json": { source: "iana", compressible: true }, "application/alto-costmap+json": { source: "iana", compressible: true }, "application/alto-costmapfilter+json": { source: "iana", compressible: true }, "application/alto-directory+json": { source: "iana", compressible: true }, "application/alto-endpointcost+json": { source: "iana", compressible: true }, "application/alto-endpointcostparams+json": { source: "iana", compressible: true }, "application/alto-endpointprop+json": { source: "iana", compressible: true }, "application/alto-endpointpropparams+json": { source: "iana", compressible: true }, "application/alto-error+json": { source: "iana", compressible: true }, "application/alto-networkmap+json": { source: "iana", compressible: true }, "application/alto-networkmapfilter+json": { source: "iana", compressible: true }, "application/alto-updatestreamcontrol+json": { source: "iana", compressible: true }, "application/alto-updatestreamparams+json": { source: "iana", compressible: true }, "application/aml": { source: "iana" }, "application/andrew-inset": { source: "iana", extensions: ["ez"] }, "application/applefile": { source: "iana" }, "application/applixware": { source: "apache", extensions: ["aw"] }, "application/at+jwt": { source: "iana" }, "application/atf": { source: "iana" }, "application/atfx": { source: "iana" }, "application/atom+xml": { source: "iana", compressible: true, extensions: ["atom"] }, "application/atomcat+xml": { source: "iana", compressible: true, extensions: ["atomcat"] }, "application/atomdeleted+xml": { source: "iana", compressible: true, extensions: ["atomdeleted"] }, "application/atomicmail": { source: "iana" }, "application/atomsvc+xml": { source: "iana", compressible: true, extensions: ["atomsvc"] }, "application/atsc-dwd+xml": { source: "iana", compressible: true, extensions: ["dwd"] }, "application/atsc-dynamic-event-message": { source: "iana" }, "application/atsc-held+xml": { source: "iana", compressible: true, extensions: ["held"] }, "application/atsc-rdt+json": { source: "iana", compressible: true }, "application/atsc-rsat+xml": { source: "iana", compressible: true, extensions: ["rsat"] }, "application/atxml": { source: "iana" }, "application/auth-policy+xml": { source: "iana", compressible: true }, "application/bacnet-xdd+zip": { source: "iana", compressible: false }, "application/batch-smtp": { source: "iana" }, "application/bdoc": { compressible: false, extensions: ["bdoc"] }, "application/beep+xml": { source: "iana", charset: "UTF-8", compressible: true }, "application/calendar+json": { source: "iana", compressible: true }, "application/calendar+xml": { source: "iana", compressible: true, extensions: ["xcs"] }, "application/call-completion": { source: "iana" }, "application/cals-1840": { source: "iana" }, "application/captive+json": { source: "iana", compressible: true }, "application/cbor": { source: "iana" }, "application/cbor-seq": { source: "iana" }, "application/cccex": { source: "iana" }, "application/ccmp+xml": { source: "iana", compressible: true }, "application/ccxml+xml": { source: "iana", compressible: true, extensions: ["ccxml"] }, "application/cdfx+xml": { source: "iana", compressible: true, extensions: ["cdfx"] }, "application/cdmi-capability": { source: "iana", extensions: ["cdmia"] }, "application/cdmi-container": { source: "iana", extensions: ["cdmic"] }, "application/cdmi-domain": { source: "iana", extensions: ["cdmid"] }, "application/cdmi-object": { source: "iana", extensions: ["cdmio"] }, "application/cdmi-queue": { source: "iana", extensions: ["cdmiq"] }, "application/cdni": { source: "iana" }, "application/cea": { source: "iana" }, "application/cea-2018+xml": { source: "iana", compressible: true }, "application/cellml+xml": { source: "iana", compressible: true }, "application/cfw": { source: "iana" }, "application/city+json": { source: "iana", compressible: true }, "application/clr": { source: "iana" }, "application/clue+xml": { source: "iana", compressible: true }, "application/clue_info+xml": { source: "iana", compressible: true }, "application/cms": { source: "iana" }, "application/cnrp+xml": { source: "iana", compressible: true }, "application/coap-group+json": { source: "iana", compressible: true }, "application/coap-payload": { source: "iana" }, "application/commonground": { source: "iana" }, "application/conference-info+xml": { source: "iana", compressible: true }, "application/cose": { source: "iana" }, "application/cose-key": { source: "iana" }, "application/cose-key-set": { source: "iana" }, "application/cpl+xml": { source: "iana", compressible: true, extensions: ["cpl"] }, "application/csrattrs": { source: "iana" }, "application/csta+xml": { source: "iana", compressible: true }, "application/cstadata+xml": { source: "iana", compressible: true }, "application/csvm+json": { source: "iana", compressible: true }, "application/cu-seeme": { source: "apache", extensions: ["cu"] }, "application/cwt": { source: "iana" }, "application/cybercash": { source: "iana" }, "application/dart": { compressible: true }, "application/dash+xml": { source: "iana", compressible: true, extensions: ["mpd"] }, "application/dash-patch+xml": { source: "iana", compressible: true, extensions: ["mpp"] }, "application/dashdelta": { source: "iana" }, "application/davmount+xml": { source: "iana", compressible: true, extensions: ["davmount"] }, "application/dca-rft": { source: "iana" }, "application/dcd": { source: "iana" }, "application/dec-dx": { source: "iana" }, "application/dialog-info+xml": { source: "iana", compressible: true }, "application/dicom": { source: "iana" }, "application/dicom+json": { source: "iana", compressible: true }, "application/dicom+xml": { source: "iana", compressible: true }, "application/dii": { source: "iana" }, "application/dit": { source: "iana" }, "application/dns": { source: "iana" }, "application/dns+json": { source: "iana", compressible: true }, "application/dns-message": { source: "iana" }, "application/docbook+xml": { source: "apache", compressible: true, extensions: ["dbk"] }, "application/dots+cbor": { source: "iana" }, "application/dskpp+xml": { source: "iana", compressible: true }, "application/dssc+der": { source: "iana", extensions: ["dssc"] }, "application/dssc+xml": { source: "iana", compressible: true, extensions: ["xdssc"] }, "application/dvcs": { source: "iana" }, "application/ecmascript": { source: "iana", compressible: true, extensions: ["es", "ecma"] }, "application/edi-consent": { source: "iana" }, "application/edi-x12": { source: "iana", compressible: false }, "application/edifact": { source: "iana", compressible: false }, "application/efi": { source: "iana" }, "application/elm+json": { source: "iana", charset: "UTF-8", compressible: true }, "application/elm+xml": { source: "iana", compressible: true }, "application/emergencycalldata.cap+xml": { source: "iana", charset: "UTF-8", compressible: true }, "application/emergencycalldata.comment+xml": { source: "iana", compressible: true }, "application/emergencycalldata.control+xml": { source: "iana", compressible: true }, "application/emergencycalldata.deviceinfo+xml": { source: "iana", compressible: true }, "application/emergencycalldata.ecall.msd": { source: "iana" }, "application/emergencycalldata.providerinfo+xml": { source: "iana", compressible: true }, "application/emergencycalldata.serviceinfo+xml": { source: "iana", compressible: true }, "application/emergencycalldata.subscriberinfo+xml": { source: "iana", compressible: true }, "application/emergencycalldata.veds+xml": { source: "iana", compressible: true }, "application/emma+xml": { source: "iana", compressible: true, extensions: ["emma"] }, "application/emotionml+xml": { source: "iana", compressible: true, extensions: ["emotionml"] }, "application/encaprtp": { source: "iana" }, "application/epp+xml": { source: "iana", compressible: true }, "application/epub+zip": { source: "iana", compressible: false, extensions: ["epub"] }, "application/eshop": { source: "iana" }, "application/exi": { source: "iana", extensions: ["exi"] }, "application/expect-ct-report+json": { source: "iana", compressible: true }, "application/express": { source: "iana", extensions: ["exp"] }, "application/fastinfoset": { source: "iana" }, "application/fastsoap": { source: "iana" }, "application/fdt+xml": { source: "iana", compressible: true, extensions: ["fdt"] }, "application/fhir+json": { source: "iana", charset: "UTF-8", compressible: true }, "application/fhir+xml": { source: "iana", charset: "UTF-8", compressible: true }, "application/fido.trusted-apps+json": { compressible: true }, "application/fits": { source: "iana" }, "application/flexfec": { source: "iana" }, "application/font-sfnt": { source: "iana" }, "application/font-tdpfr": { source: "iana", extensions: ["pfr"] }, "application/font-woff": { source: "iana", compressible: false }, "application/framework-attributes+xml": { source: "iana", compressible: true }, "application/geo+json": { source: "iana", compressible: true, extensions: ["geojson"] }, "application/geo+json-seq": { source: "iana" }, "application/geopackage+sqlite3": { source: "iana" }, "application/geoxacml+xml": { source: "iana", compressible: true }, "application/gltf-buffer": { source: "iana" }, "application/gml+xml": { source: "iana", compressible: true, extensions: ["gml"] }, "application/gpx+xml": { source: "apache", compressible: true, extensions: ["gpx"] }, "application/gxf": { source: "apache", extensions: ["gxf"] }, "application/gzip": { source: "iana", compressible: false, extensions: ["gz"] }, "application/h224": { source: "iana" }, "application/held+xml": { source: "iana", compressible: true }, "application/hjson": { extensions: ["hjson"] }, "application/http": { source: "iana" }, "application/hyperstudio": { source: "iana", extensions: ["stk"] }, "application/ibe-key-request+xml": { source: "iana", compressible: true }, "application/ibe-pkg-reply+xml": { source: "iana", compressible: true }, "application/ibe-pp-data": { source: "iana" }, "application/iges": { source: "iana" }, "application/im-iscomposing+xml": { source: "iana", charset: "UTF-8", compressible: true }, "application/index": { source: "iana" }, "application/index.cmd": { source: "iana" }, "application/index.obj": { source: "iana" }, "application/index.response": { source: "iana" }, "application/index.vnd": { source: "iana" }, "application/inkml+xml": { source: "iana", compressible: true, extensions: ["ink", "inkml"] }, "application/iotp": { source: "iana" }, "application/ipfix": { source: "iana", extensions: ["ipfix"] }, "application/ipp": { source: "iana" }, "application/isup": { source: "iana" }, "application/its+xml": { source: "iana", compressible: true, extensions: ["its"] }, "application/java-archive": { source: "apache", compressible: false, extensions: ["jar", "war", "ear"] }, "application/java-serialized-object": { source: "apache", compressible: false, extensions: ["ser"] }, "application/java-vm": { source: "apache", compressible: false, extensions: ["class"] }, "application/javascript": { source: "iana", charset: "UTF-8", compressible: true, extensions: ["js", "mjs"] }, "application/jf2feed+json": { source: "iana", compressible: true }, "application/jose": { source: "iana" }, "application/jose+json": { source: "iana", compressible: true }, "application/jrd+json": { source: "iana", compressible: true }, "application/jscalendar+json": { source: "iana", compressible: true }, "application/json": { source: "iana", charset: "UTF-8", compressible: true, extensions: ["json", "map"] }, "application/json-patch+json": { source: "iana", compressible: true }, "application/json-seq": { source: "iana" }, "application/json5": { extensions: ["json5"] }, "application/jsonml+json": { source: "apache", compressible: true, extensions: ["jsonml"] }, "application/jwk+json": { source: "iana", compressible: true }, "application/jwk-set+json": { source: "iana", compressible: true }, "application/jwt": { source: "iana" }, "application/kpml-request+xml": { source: "iana", compressible: true }, "application/kpml-response+xml": { source: "iana", compressible: true }, "application/ld+json": { source: "iana", compressible: true, extensions: ["jsonld"] }, "application/lgr+xml": { source: "iana", compressible: true, extensions: ["lgr"] }, "application/link-format": { source: "iana" }, "application/load-control+xml": { source: "iana", compressible: true }, "application/lost+xml": { source: "iana", compressible: true, extensions: ["lostxml"] }, "application/lostsync+xml": { source: "iana", compressible: true }, "application/lpf+zip": { source: "iana", compressible: false }, "application/lxf": { source: "iana" }, "application/mac-binhex40": { source: "iana", extensions: ["hqx"] }, "application/mac-compactpro": { source: "apache", extensions: ["cpt"] }, "application/macwriteii": { source: "iana" }, "application/mads+xml": { source: "iana", compressible: true, extensions: ["mads"] }, "application/manifest+json": { source: "iana", charset: "UTF-8", compressible: true, extensions: ["webmanifest"] }, "application/marc": { source: "iana", extensions: ["mrc"] }, "application/marcxml+xml": { source: "iana", compressible: true, extensions: ["mrcx"] }, "application/mathematica": { source: "iana", extensions: ["ma", "nb", "mb"] }, "application/mathml+xml": { source: "iana", compressible: true, extensions: ["mathml"] }, "application/mathml-content+xml": { source: "iana", compressible: true }, "application/mathml-presentation+xml": { source: "iana", compressible: true }, "application/mbms-associated-procedure-description+xml": { source: "iana", compressible: true }, "application/mbms-deregister+xml": { source: "iana", compressible: true }, "application/mbms-envelope+xml": { source: "iana", compressible: true }, "application/mbms-msk+xml": { source: "iana", compressible: true }, "application/mbms-msk-response+xml": { source: "iana", compressible: true }, "application/mbms-protection-description+xml": { source: "iana", compressible: true }, "application/mbms-reception-report+xml": { source: "iana", compressible: true }, "application/mbms-register+xml": { source: "iana", compressible: true }, "application/mbms-register-response+xml": { source: "iana", compressible: true }, "application/mbms-schedule+xml": { source: "iana", compressible: true }, "application/mbms-user-service-description+xml": { source: "iana", compressible: true }, "application/mbox": { source: "iana", extensions: ["mbox"] }, "application/media-policy-dataset+xml": { source: "iana", compressible: true, extensions: ["mpf"] }, "application/media_control+xml": { source: "iana", compressible: true }, "application/mediaservercontrol+xml": { source: "iana", compressible: true, extensions: ["mscml"] }, "application/merge-patch+json": { source: "iana", compressible: true }, "application/metalink+xml": { source: "apache", compressible: true, extensions: ["metalink"] }, "application/metalink4+xml": { source: "iana", compressible: true, extensions: ["meta4"] }, "application/mets+xml": { source: "iana", compressible: true, extensions: ["mets"] }, "application/mf4": { source: "iana" }, "application/mikey": { source: "iana" }, "application/mipc": { source: "iana" }, "application/missing-blocks+cbor-seq": { source: "iana" }, "application/mmt-aei+xml": { source: "iana", compressible: true, extensions: ["maei"] }, "application/mmt-usd+xml": { source: "iana", compressible: true, extensions: ["musd"] }, "application/mods+xml": { source: "iana", compressible: true, extensions: ["mods"] }, "application/moss-keys": { source: "iana" }, "application/moss-signature": { source: "iana" }, "application/mosskey-data": { source: "iana" }, "application/mosskey-request": { source: "iana" }, "application/mp21": { source: "iana", extensions: ["m21", "mp21"] }, "application/mp4": { source: "iana", extensions: ["mp4s", "m4p"] }, "application/mpeg4-generic": { source: "iana" }, "application/mpeg4-iod": { source: "iana" }, "application/mpeg4-iod-xmt": { source: "iana" }, "application/mrb-consumer+xml": { source: "iana", compressible: true }, "application/mrb-publish+xml": { source: "iana", compressible: true }, "application/msc-ivr+xml": { source: "iana", charset: "UTF-8", compressible: true }, "application/msc-mixer+xml": { source: "iana", charset: "UTF-8", compressible: true }, "application/msword": { source: "iana", compressible: false, extensions: ["doc", "dot"] }, "application/mud+json": { source: "iana", compressible: true }, "application/multipart-core": { source: "iana" }, "application/mxf": { source: "iana", extensions: ["mxf"] }, "application/n-quads": { source: "iana", extensions: ["nq"] }, "application/n-triples": { source: "iana", extensions: ["nt"] }, "application/nasdata": { source: "iana" }, "application/news-checkgroups": { source: "iana", charset: "US-ASCII" }, "application/news-groupinfo": { source: "iana", charset: "US-ASCII" }, "application/news-transmission": { source: "iana" }, "application/nlsml+xml": { source: "iana", compressible: true }, "application/node": { source: "iana", extensions: ["cjs"] }, "application/nss": { source: "iana" }, "application/oauth-authz-req+jwt": { source: "iana" }, "application/oblivious-dns-message": { source: "iana" }, "application/ocsp-request": { source: "iana" }, "application/ocsp-response": { source: "iana" }, "application/octet-stream": { source: "iana", compressible: false, extensions: ["bin", "dms", "lrf", "mar", "so", "dist", "distz", "pkg", "bpk", "dump", "elc", "deploy", "exe", "dll", "deb", "dmg", "iso", "img", "msi", "msp", "msm", "buffer"] }, "application/oda": { source: "iana", extensions: ["oda"] }, "application/odm+xml": { source: "iana", compressible: true }, "application/odx": { source: "iana" }, "application/oebps-package+xml": { source: "iana", compressible: true, extensions: ["opf"] }, "application/ogg": { source: "iana", compressible: false, extensions: ["ogx"] }, "application/omdoc+xml": { source: "apache", compressible: true, extensions: ["omdoc"] }, "application/onenote": { source: "apache", extensions: ["onetoc", "onetoc2", "onetmp", "onepkg"] }, "application/opc-nodeset+xml": { source: "iana", compressible: true }, "application/oscore": { source: "iana" }, "application/oxps": { source: "iana", extensions: ["oxps"] }, "application/p21": { source: "iana" }, "application/p21+zip": { source: "iana", compressible: false }, "application/p2p-overlay+xml": { source: "iana", compressible: true, extensions: ["relo"] }, "application/parityfec": { source: "iana" }, "application/passport": { source: "iana" }, "application/patch-ops-error+xml": { source: "iana", compressible: true, extensions: ["xer"] }, "application/pdf": { source: "iana", compressible: false, extensions: ["pdf"] }, "application/pdx": { source: "iana" }, "application/pem-certificate-chain": { source: "iana" }, "application/pgp-encrypted": { source: "iana", compressible: false, extensions: ["pgp"] }, "application/pgp-keys": { source: "iana", extensions: ["asc"] }, "application/pgp-signature": { source: "iana", extensions: ["asc", "sig"] }, "application/pics-rules": { source: "apache", extensions: ["prf"] }, "application/pidf+xml": { source: "iana", charset: "UTF-8", compressible: true }, "application/pidf-diff+xml": { source: "iana", charset: "UTF-8", compressible: true }, "application/pkcs10": { source: "iana", extensions: ["p10"] }, "application/pkcs12": { source: "iana" }, "application/pkcs7-mime": { source: "iana", extensions: ["p7m", "p7c"] }, "application/pkcs7-signature": { source: "iana", extensions: ["p7s"] }, "application/pkcs8": { source: "iana", extensions: ["p8"] }, "application/pkcs8-encrypted": { source: "iana" }, "application/pkix-attr-cert": { source: "iana", extensions: ["ac"] }, "application/pkix-cert": { source: "iana", extensions: ["cer"] }, "application/pkix-crl": { source: "iana", extensions: ["crl"] }, "application/pkix-pkipath": { source: "iana", extensions: ["pkipath"] }, "application/pkixcmp": { source: "iana", extensions: ["pki"] }, "application/pls+xml": { source: "iana", compressible: true, extensions: ["pls"] }, "application/poc-settings+xml": { source: "iana", charset: "UTF-8", compressible: true }, "application/postscript": { source: "iana", compressible: true, extensions: ["ai", "eps", "ps"] }, "application/ppsp-tracker+json": { source: "iana", compressible: true }, "application/problem+json": { source: "iana", compressible: true }, "application/problem+xml": { source: "iana", compressible: true }, "application/provenance+xml": { source: "iana", compressible: true, extensions: ["provx"] }, "application/prs.alvestrand.titrax-sheet": { source: "iana" }, "application/prs.cww": { source: "iana", extensions: ["cww"] }, "application/prs.cyn": { source: "iana", charset: "7-BIT" }, "application/prs.hpub+zip": { source: "iana", compressible: false }, "application/prs.nprend": { source: "iana" }, "application/prs.plucker": { source: "iana" }, "application/prs.rdf-xml-crypt": { source: "iana" }, "application/prs.xsf+xml": { source: "iana", compressible: true }, "application/pskc+xml": { source: "iana", compressible: true, extensions: ["pskcxml"] }, "application/pvd+json": { source: "iana", compressible: true }, "application/qsig": { source: "iana" }, "application/raml+yaml": { compressible: true, extensions: ["raml"] }, "application/raptorfec": { source: "iana" }, "application/rdap+json": { source: "iana", compressible: true }, "application/rdf+xml": { source: "iana", compressible: true, extensions: ["rdf", "owl"] }, "application/reginfo+xml": { source: "iana", compressible: true, extensions: ["rif"] }, "application/relax-ng-compact-syntax": { source: "iana", extensions: ["rnc"] }, "application/remote-printing": { source: "iana" }, "application/reputon+json": { source: "iana", compressible: true }, "application/resource-lists+xml": { source: "iana", compressible: true, extensions: ["rl"] }, "application/resource-lists-diff+xml": { source: "iana", compressible: true, extensions: ["rld"] }, "application/rfc+xml": { source: "iana", compressible: true }, "application/riscos": { source: "iana" }, "application/rlmi+xml": { source: "iana", compressible: true }, "application/rls-services+xml": { source: "iana", compressible: true, extensions: ["rs"] }, "application/route-apd+xml": { source: "iana", compressible: true, extensions: ["rapd"] }, "application/route-s-tsid+xml": { source: "iana", compressible: true, extensions: ["sls"] }, "application/route-usd+xml": { source: "iana", compressible: true, extensions: ["rusd"] }, "application/rpki-ghostbusters": { source: "iana", extensions: ["gbr"] }, "application/rpki-manifest": { source: "iana", extensions: ["mft"] }, "application/rpki-publication": { source: "iana" }, "application/rpki-roa": { source: "iana", extensions: ["roa"] }, "application/rpki-updown": { source: "iana" }, "application/rsd+xml": { source: "apache", compressible: true, extensions: ["rsd"] }, "application/rss+xml": { source: "apache", compressible: true, extensions: ["rss"] }, "application/rtf": { source: "iana", compressible: true, extensions: ["rtf"] }, "application/rtploopback": { source: "iana" }, "application/rtx": { source: "iana" }, "application/samlassertion+xml": { source: "iana", compressible: true }, "application/samlmetadata+xml": { source: "iana", compressible: true }, "application/sarif+json": { source: "iana", compressible: true }, "application/sarif-external-properties+json": { source: "iana", compressible: true }, "application/sbe": { source: "iana" }, "application/sbml+xml": { source: "iana", compressible: true, extensions: ["sbml"] }, "application/scaip+xml": { source: "iana", compressible: true }, "application/scim+json": { source: "iana", compressible: true }, "application/scvp-cv-request": { source: "iana", extensions: ["scq"] }, "application/scvp-cv-response": { source: "iana", extensions: ["scs"] }, "application/scvp-vp-request": { source: "iana", extensions: ["spq"] }, "application/scvp-vp-response": { source: "iana", extensions: ["spp"] }, "application/sdp": { source: "iana", extensions: ["sdp"] }, "application/secevent+jwt": { source: "iana" }, "application/senml+cbor": { source: "iana" }, "application/senml+json": { source: "iana", compressible: true }, "application/senml+xml": { source: "iana", compressible: true, extensions: ["senmlx"] }, "application/senml-etch+cbor": { source: "iana" }, "application/senml-etch+json": { source: "iana", compressible: true }, "application/senml-exi": { source: "iana" }, "application/sensml+cbor": { source: "iana" }, "application/sensml+json": { source: "iana", compressible: true }, "application/sensml+xml": { source: "iana", compressible: true, extensions: ["sensmlx"] }, "application/sensml-exi": { source: "iana" }, "application/sep+xml": { source: "iana", compressible: true }, "application/sep-exi": { source: "iana" }, "application/session-info": { source: "iana" }, "application/set-payment": { source: "iana" }, "application/set-payment-initiation": { source: "iana", extensions: ["setpay"] }, "application/set-registration": { source: "iana" }, "application/set-registration-initiation": { source: "iana", extensions: ["setreg"] }, "application/sgml": { source: "iana" }, "application/sgml-open-catalog": { source: "iana" }, "application/shf+xml": { source: "iana", compressible: true, extensions: ["shf"] }, "application/sieve": { source: "iana", extensions: ["siv", "sieve"] }, "application/simple-filter+xml": { source: "iana", compressible: true }, "application/simple-message-summary": { source: "iana" }, "application/simplesymbolcontainer": { source: "iana" }, "application/sipc": { source: "iana" }, "application/slate": { source: "iana" }, "application/smil": { source: "iana" }, "application/smil+xml": { source: "iana", compressible: true, extensions: ["smi", "smil"] }, "application/smpte336m": { source: "iana" }, "application/soap+fastinfoset": { source: "iana" }, "application/soap+xml": { source: "iana", compressible: true }, "application/sparql-query": { source: "iana", extensions: ["rq"] }, "application/sparql-results+xml": { source: "iana", compressible: true, extensions: ["srx"] }, "application/spdx+json": { source: "iana", compressible: true }, "application/spirits-event+xml": { source: "iana", compressible: true }, "application/sql": { source: "iana" }, "application/srgs": { source: "iana", extensions: ["gram"] }, "application/srgs+xml": { source: "iana", compressible: true, extensions: ["grxml"] }, "application/sru+xml": { source: "iana", compressible: true, extensions: ["sru"] }, "application/ssdl+xml": { source: "apache", compressible: true, extensions: ["ssdl"] }, "application/ssml+xml": { source: "iana", compressible: true, extensions: ["ssml"] }, "application/stix+json": { source: "iana", compressible: true }, "application/swid+xml": { source: "iana", compressible: true, extensions: ["swidtag"] }, "application/tamp-apex-update": { source: "iana" }, "application/tamp-apex-update-confirm": { source: "iana" }, "application/tamp-community-update": { source: "iana" }, "application/tamp-community-update-confirm": { source: "iana" }, "application/tamp-error": { source: "iana" }, "application/tamp-sequence-adjust": { source: "iana" }, "application/tamp-sequence-adjust-confirm": { source: "iana" }, "application/tamp-status-query": { source: "iana" }, "application/tamp-status-response": { source: "iana" }, "application/tamp-update": { source: "iana" }, "application/tamp-update-confirm": { source: "iana" }, "application/tar": { compressible: true }, "application/taxii+json": { source: "iana", compressible: true }, "application/td+json": { source: "iana", compressible: true }, "application/tei+xml": { source: "iana", compressible: true, extensions: ["tei", "teicorpus"] }, "application/tetra_isi": { source: "iana" }, "application/thraud+xml": { source: "iana", compressible: true, extensions: ["tfi"] }, "application/timestamp-query": { source: "iana" }, "application/timestamp-reply": { source: "iana" }, "application/timestamped-data": { source: "iana", extensions: ["tsd"] }, "application/tlsrpt+gzip": { source: "iana" }, "application/tlsrpt+json": { source: "iana", compressible: true }, "application/tnauthlist": { source: "iana" }, "application/token-introspection+jwt": { source: "iana" }, "application/toml": { compressible: true, extensions: ["toml"] }, "application/trickle-ice-sdpfrag": { source: "iana" }, "application/trig": { source: "iana", extensions: ["trig"] }, "application/ttml+xml": { source: "iana", compressible: true, extensions: ["ttml"] }, "application/tve-trigger": { source: "iana" }, "application/tzif": { source: "iana" }, "application/tzif-leap": { source: "iana" }, "application/ubjson": { compressible: false, extensions: ["ubj"] }, "application/ulpfec": { source: "iana" }, "application/urc-grpsheet+xml": { source: "iana", compressible: true }, "application/urc-ressheet+xml": { source: "iana", compressible: true, extensions: ["rsheet"] }, "application/urc-targetdesc+xml": { source: "iana", compressible: true, extensions: ["td"] }, "application/urc-uisocketdesc+xml": { source: "iana", compressible: true }, "application/vcard+json": { source: "iana", compressible: true }, "application/vcard+xml": { source: "iana", compressible: true }, "application/vemmi": { source: "iana" }, "application/vividence.scriptfile": { source: "apache" }, "application/vnd.1000minds.decision-model+xml": { source: "iana", compressible: true, extensions: ["1km"] }, "application/vnd.3gpp-prose+xml": { source: "iana", compressible: true }, "application/vnd.3gpp-prose-pc3ch+xml": { source: "iana", compressible: true }, "application/vnd.3gpp-v2x-local-service-information": { source: "iana" }, "application/vnd.3gpp.5gnas": { source: "iana" }, "application/vnd.3gpp.access-transfer-events+xml": { source: "iana", compressible: true }, "application/vnd.3gpp.bsf+xml": { source: "iana", compressible: true }, "application/vnd.3gpp.gmop+xml": { source: "iana", compressible: true }, "application/vnd.3gpp.gtpc": { source: "iana" }, "application/vnd.3gpp.interworking-data": { source: "iana" }, "application/vnd.3gpp.lpp": { source: "iana" }, "application/vnd.3gpp.mc-signalling-ear": { source: "iana" }, "application/vnd.3gpp.mcdata-affiliation-command+xml": { source: "iana", compressible: true }, "application/vnd.3gpp.mcdata-info+xml": { source: "iana", compressible: true }, "application/vnd.3gpp.mcdata-payload": { source: "iana" }, "application/vnd.3gpp.mcdata-service-config+xml": { source: "iana", compressible: true }, "application/vnd.3gpp.mcdata-signalling": { source: "iana" }, "application/vnd.3gpp.mcdata-ue-config+xml": { source: "iana", compressible: true }, "application/vnd.3gpp.mcdata-user-profile+xml": { source: "iana", compressible: true }, "application/vnd.3gpp.mcptt-affiliation-command+xml": { source: "iana", compressible: true }, "application/vnd.3gpp.mcptt-floor-request+xml": { source: "iana", compressible: true }, "application/vnd.3gpp.mcptt-info+xml": { source: "iana", compressible: true }, "application/vnd.3gpp.mcptt-location-info+xml": { source: "iana", compressible: true }, "application/vnd.3gpp.mcptt-mbms-usage-info+xml": { source: "iana", compressible: true }, "application/vnd.3gpp.mcptt-service-config+xml": { source: "iana", compressible: true }, "application/vnd.3gpp.mcptt-signed+xml": { source: "iana", compressible: true }, "application/vnd.3gpp.mcptt-ue-config+xml": { source: "iana", compressible: true }, "application/vnd.3gpp.mcptt-ue-init-config+xml": { source: "iana", compressible: true }, "application/vnd.3gpp.mcptt-user-profile+xml": { source: "iana", compressible: true }, "application/vnd.3gpp.mcvideo-affiliation-command+xml": { source: "iana", compressible: true }, "application/vnd.3gpp.mcvideo-affiliation-info+xml": { source: "iana", compressible: true }, "application/vnd.3gpp.mcvideo-info+xml": { source: "iana", compressible: true }, "application/vnd.3gpp.mcvideo-location-info+xml": { source: "iana", compressible: true }, "application/vnd.3gpp.mcvideo-mbms-usage-info+xml": { source: "iana", compressible: true }, "application/vnd.3gpp.mcvideo-service-config+xml": { source: "iana", compressible: true }, "application/vnd.3gpp.mcvideo-transmission-request+xml": { source: "iana", compressible: true }, "application/vnd.3gpp.mcvideo-ue-config+xml": { source: "iana", compressible: true }, "application/vnd.3gpp.mcvideo-user-profile+xml": { source: "iana", compressible: true }, "application/vnd.3gpp.mid-call+xml": { source: "iana", compressible: true }, "application/vnd.3gpp.ngap": { source: "iana" }, "application/vnd.3gpp.pfcp": { source: "iana" }, "application/vnd.3gpp.pic-bw-large": { source: "iana", extensions: ["plb"] }, "application/vnd.3gpp.pic-bw-small": { source: "iana", extensions: ["psb"] }, "application/vnd.3gpp.pic-bw-var": { source: "iana", extensions: ["pvb"] }, "application/vnd.3gpp.s1ap": { source: "iana" }, "application/vnd.3gpp.sms": { source: "iana" }, "application/vnd.3gpp.sms+xml": { source: "iana", compressible: true }, "application/vnd.3gpp.srvcc-ext+xml": { source: "iana", compressible: true }, "application/vnd.3gpp.srvcc-info+xml": { source: "iana", compressible: true }, "application/vnd.3gpp.state-and-event-info+xml": { source: "iana", compressible: true }, "application/vnd.3gpp.ussd+xml": { source: "iana", compressible: true }, "application/vnd.3gpp2.bcmcsinfo+xml": { source: "iana", compressible: true }, "application/vnd.3gpp2.sms": { source: "iana" }, "application/vnd.3gpp2.tcap": { source: "iana", extensions: ["tcap"] }, "application/vnd.3lightssoftware.imagescal": { source: "iana" }, "application/vnd.3m.post-it-notes": { source: "iana", extensions: ["pwn"] }, "application/vnd.accpac.simply.aso": { source: "iana", extensions: ["aso"] }, "application/vnd.accpac.simply.imp": { source: "iana", extensions: ["imp"] }, "application/vnd.acucobol": { source: "iana", extensions: ["acu"] }, "application/vnd.acucorp": { source: "iana", extensions: ["atc", "acutc"] }, "application/vnd.adobe.air-application-installer-package+zip": { source: "apache", compressible: false, extensions: ["air"] }, "application/vnd.adobe.flash.movie": { source: "iana" }, "application/vnd.adobe.formscentral.fcdt": { source: "iana", extensions: ["fcdt"] }, "application/vnd.adobe.fxp": { source: "iana", extensions: ["fxp", "fxpl"] }, "application/vnd.adobe.partial-upload": { source: "iana" }, "application/vnd.adobe.xdp+xml": { source: "iana", compressible: true, extensions: ["xdp"] }, "application/vnd.adobe.xfdf": { source: "iana", extensions: ["xfdf"] }, "application/vnd.aether.imp": { source: "iana" }, "application/vnd.afpc.afplinedata": { source: "iana" }, "application/vnd.afpc.afplinedata-pagedef": { source: "iana" }, "application/vnd.afpc.cmoca-cmresource": { source: "iana" }, "application/vnd.afpc.foca-charset": { source: "iana" }, "application/vnd.afpc.foca-codedfont": { source: "iana" }, "application/vnd.afpc.foca-codepage": { source: "iana" }, "application/vnd.afpc.modca": { source: "iana" }, "application/vnd.afpc.modca-cmtable": { source: "iana" }, "application/vnd.afpc.modca-formdef": { source: "iana" }, "application/vnd.afpc.modca-mediummap": { source: "iana" }, "application/vnd.afpc.modca-objectcontainer": { source: "iana" }, "application/vnd.afpc.modca-overlay": { source: "iana" }, "application/vnd.afpc.modca-pagesegment": { source: "iana" }, "application/vnd.age": { source: "iana", extensions: ["age"] }, "application/vnd.ah-barcode": { source: "iana" }, "application/vnd.ahead.space": { source: "iana", extensions: ["ahead"] }, "application/vnd.airzip.filesecure.azf": { source: "iana", extensions: ["azf"] }, "application/vnd.airzip.filesecure.azs": { source: "iana", extensions: ["azs"] }, "application/vnd.amadeus+json": { source: "iana", compressible: true }, "application/vnd.amazon.ebook": { source: "apache", extensions: ["azw"] }, "application/vnd.amazon.mobi8-ebook": { source: "iana" }, "application/vnd.americandynamics.acc": { source: "iana", extensions: ["acc"] }, "application/vnd.amiga.ami": { source: "iana", extensions: ["ami"] }, "application/vnd.amundsen.maze+xml": { source: "iana", compressible: true }, "application/vnd.android.ota": { source: "iana" }, "application/vnd.android.package-archive": { source: "apache", compressible: false, extensions: ["apk"] }, "application/vnd.anki": { source: "iana" }, "application/vnd.anser-web-certificate-issue-initiation": { source: "iana", extensions: ["cii"] }, "application/vnd.anser-web-funds-transfer-initiation": { source: "apache", extensions: ["fti"] }, "application/vnd.antix.game-component": { source: "iana", extensions: ["atx"] }, "application/vnd.apache.arrow.file": { source: "iana" }, "application/vnd.apache.arrow.stream": { source: "iana" }, "application/vnd.apache.thrift.binary": { source: "iana" }, "application/vnd.apache.thrift.compact": { source: "iana" }, "application/vnd.apache.thrift.json": { source: "iana" }, "application/vnd.api+json": { source: "iana", compressible: true }, "application/vnd.aplextor.warrp+json": { source: "iana", compressible: true }, "application/vnd.apothekende.reservation+json": { source: "iana", compressible: true }, "application/vnd.apple.installer+xml": { source: "iana", compressible: true, extensions: ["mpkg"] }, "application/vnd.apple.keynote": { source: "iana", extensions: ["key"] }, "application/vnd.apple.mpegurl": { source: "iana", extensions: ["m3u8"] }, "application/vnd.apple.numbers": { source: "iana", extensions: ["numbers"] }, "application/vnd.apple.pages": { source: "iana", extensions: ["pages"] }, "application/vnd.apple.pkpass": { compressible: false, extensions: ["pkpass"] }, "application/vnd.arastra.swi": { source: "iana" }, "application/vnd.aristanetworks.swi": { source: "iana", extensions: ["swi"] }, "application/vnd.artisan+json": { source: "iana", compressible: true }, "application/vnd.artsquare": { source: "iana" }, "application/vnd.astraea-software.iota": { source: "iana", extensions: ["iota"] }, "application/vnd.audiograph": { source: "iana", extensions: ["aep"] }, "application/vnd.autopackage": { source: "iana" }, "application/vnd.avalon+json": { source: "iana", compressible: true }, "application/vnd.avistar+xml": { source: "iana", compressible: true }, "application/vnd.balsamiq.bmml+xml": { source: "iana", compressible: true, extensions: ["bmml"] }, "application/vnd.balsamiq.bmpr": { source: "iana" }, "application/vnd.banana-accounting": { source: "iana" }, "application/vnd.bbf.usp.error": { source: "iana" }, "application/vnd.bbf.usp.msg": { source: "iana" }, "application/vnd.bbf.usp.msg+json": { source: "iana", compressible: true }, "application/vnd.bekitzur-stech+json": { source: "iana", compressible: true }, "application/vnd.bint.med-content": { source: "iana" }, "application/vnd.biopax.rdf+xml": { source: "iana", compressible: true }, "application/vnd.blink-idb-value-wrapper": { source: "iana" }, "application/vnd.blueice.multipass": { source: "iana", extensions: ["mpm"] }, "application/vnd.bluetooth.ep.oob": { source: "iana" }, "application/vnd.bluetooth.le.oob": { source: "iana" }, "application/vnd.bmi": { source: "iana", extensions: ["bmi"] }, "application/vnd.bpf": { source: "iana" }, "application/vnd.bpf3": { source: "iana" }, "application/vnd.businessobjects": { source: "iana", extensions: ["rep"] }, "application/vnd.byu.uapi+json": { source: "iana", compressible: true }, "application/vnd.cab-jscript": { source: "iana" }, "application/vnd.canon-cpdl": { source: "iana" }, "application/vnd.canon-lips": { source: "iana" }, "application/vnd.capasystems-pg+json": { source: "iana", compressible: true }, "application/vnd.cendio.thinlinc.clientconf": { source: "iana" }, "application/vnd.century-systems.tcp_stream": { source: "iana" }, "application/vnd.chemdraw+xml": { source: "iana", compressible: true, extensions: ["cdxml"] }, "application/vnd.chess-pgn": { source: "iana" }, "application/vnd.chipnuts.karaoke-mmd": { source: "iana", extensions: ["mmd"] }, "application/vnd.ciedi": { source: "iana" }, "application/vnd.cinderella": { source: "iana", extensions: ["cdy"] }, "application/vnd.cirpack.isdn-ext": { source: "iana" }, "application/vnd.citationstyles.style+xml": { source: "iana", compressible: true, extensions: ["csl"] }, "application/vnd.claymore": { source: "iana", extensions: ["cla"] }, "application/vnd.cloanto.rp9": { source: "iana", extensions: ["rp9"] }, "application/vnd.clonk.c4group": { source: "iana", extensions: ["c4g", "c4d", "c4f", "c4p", "c4u"] }, "application/vnd.cluetrust.cartomobile-config": { source: "iana", extensions: ["c11amc"] }, "application/vnd.cluetrust.cartomobile-config-pkg": { source: "iana", extensions: ["c11amz"] }, "application/vnd.coffeescript": { source: "iana" }, "application/vnd.collabio.xodocuments.document": { source: "iana" }, "application/vnd.collabio.xodocuments.document-template": { source: "iana" }, "application/vnd.collabio.xodocuments.presentation": { source: "iana" }, "application/vnd.collabio.xodocuments.presentation-template": { source: "iana" }, "application/vnd.collabio.xodocuments.spreadsheet": { source: "iana" }, "application/vnd.collabio.xodocuments.spreadsheet-template": { source: "iana" }, "application/vnd.collection+json": { source: "iana", compressible: true }, "application/vnd.collection.doc+json": { source: "iana", compressible: true }, "application/vnd.collection.next+json": { source: "iana", compressible: true }, "application/vnd.comicbook+zip": { source: "iana", compressible: false }, "application/vnd.comicbook-rar": { source: "iana" }, "application/vnd.commerce-battelle": { source: "iana" }, "application/vnd.commonspace": { source: "iana", extensions: ["csp"] }, "application/vnd.contact.cmsg": { source: "iana", extensions: ["cdbcmsg"] }, "application/vnd.coreos.ignition+json": { source: "iana", compressible: true }, "application/vnd.cosmocaller": { source: "iana", extensions: ["cmc"] }, "application/vnd.crick.clicker": { source: "iana", extensions: ["clkx"] }, "application/vnd.crick.clicker.keyboard": { source: "iana", extensions: ["clkk"] }, "application/vnd.crick.clicker.palette": { source: "iana", extensions: ["clkp"] }, "application/vnd.crick.clicker.template": { source: "iana", extensions: ["clkt"] }, "application/vnd.crick.clicker.wordbank": { source: "iana", extensions: ["clkw"] }, "application/vnd.criticaltools.wbs+xml": { source: "iana", compressible: true, extensions: ["wbs"] }, "application/vnd.cryptii.pipe+json": { source: "iana", compressible: true }, "application/vnd.crypto-shade-file": { source: "iana" }, "application/vnd.cryptomator.encrypted": { source: "iana" }, "application/vnd.cryptomator.vault": { source: "iana" }, "application/vnd.ctc-posml": { source: "iana", extensions: ["pml"] }, "application/vnd.ctct.ws+xml": { source: "iana", compressible: true }, "application/vnd.cups-pdf": { source: "iana" }, "application/vnd.cups-postscript": { source: "iana" }, "application/vnd.cups-ppd": { source: "iana", extensions: ["ppd"] }, "application/vnd.cups-raster": { source: "iana" }, "application/vnd.cups-raw": { source: "iana" }, "application/vnd.curl": { source: "iana" }, "application/vnd.curl.car": { source: "apache", extensions: ["car"] }, "application/vnd.curl.pcurl": { source: "apache", extensions: ["pcurl"] }, "application/vnd.cyan.dean.root+xml": { source: "iana", compressible: true }, "application/vnd.cybank": { source: "iana" }, "application/vnd.cyclonedx+json": { source: "iana", compressible: true }, "application/vnd.cyclonedx+xml": { source: "iana", compressible: true }, "application/vnd.d2l.coursepackage1p0+zip": { source: "iana", compressible: false }, "application/vnd.d3m-dataset": { source: "iana" }, "application/vnd.d3m-problem": { source: "iana" }, "application/vnd.dart": { source: "iana", compressible: true, extensions: ["dart"] }, "application/vnd.data-vision.rdz": { source: "iana", extensions: ["rdz"] }, "application/vnd.datapackage+json": { source: "iana", compressible: true }, "application/vnd.dataresource+json": { source: "iana", compressible: true }, "application/vnd.dbf": { source: "iana", extensions: ["dbf"] }, "application/vnd.debian.binary-package": { source: "iana" }, "application/vnd.dece.data": { source: "iana", extensions: ["uvf", "uvvf", "uvd", "uvvd"] }, "application/vnd.dece.ttml+xml": { source: "iana", compressible: true, extensions: ["uvt", "uvvt"] }, "application/vnd.dece.unspecified": { source: "iana", extensions: ["uvx", "uvvx"] }, "application/vnd.dece.zip": { source: "iana", extensions: ["uvz", "uvvz"] }, "application/vnd.denovo.fcselayout-link": { source: "iana", extensions: ["fe_launch"] }, "application/vnd.desmume.movie": { source: "iana" }, "application/vnd.dir-bi.plate-dl-nosuffix": { source: "iana" }, "application/vnd.dm.delegation+xml": { source: "iana", compressible: true }, "application/vnd.dna": { source: "iana", extensions: ["dna"] }, "application/vnd.document+json": { source: "iana", compressible: true }, "application/vnd.dolby.mlp": { source: "apache", extensions: ["mlp"] }, "application/vnd.dolby.mobile.1": { source: "iana" }, "application/vnd.dolby.mobile.2": { source: "iana" }, "application/vnd.doremir.scorecloud-binary-document": { source: "iana" }, "application/vnd.dpgraph": { source: "iana", extensions: ["dpg"] }, "application/vnd.dreamfactory": { source: "iana", extensions: ["dfac"] }, "application/vnd.drive+json": { source: "iana", compressible: true }, "application/vnd.ds-keypoint": { source: "apache", extensions: ["kpxx"] }, "application/vnd.dtg.local": { source: "iana" }, "application/vnd.dtg.local.flash": { source: "iana" }, "application/vnd.dtg.local.html": { source: "iana" }, "application/vnd.dvb.ait": { source: "iana", extensions: ["ait"] }, "application/vnd.dvb.dvbisl+xml": { source: "iana", compressible: true }, "application/vnd.dvb.dvbj": { source: "iana" }, "application/vnd.dvb.esgcontainer": { source: "iana" }, "application/vnd.dvb.ipdcdftnotifaccess": { source: "iana" }, "application/vnd.dvb.ipdcesgaccess": { source: "iana" }, "application/vnd.dvb.ipdcesgaccess2": { source: "iana" }, "application/vnd.dvb.ipdcesgpdd": { source: "iana" }, "application/vnd.dvb.ipdcroaming": { source: "iana" }, "application/vnd.dvb.iptv.alfec-base": { source: "iana" }, "application/vnd.dvb.iptv.alfec-enhancement": { source: "iana" }, "application/vnd.dvb.notif-aggregate-root+xml": { source: "iana", compressible: true }, "application/vnd.dvb.notif-container+xml": { source: "iana", compressible: true }, "application/vnd.dvb.notif-generic+xml": { source: "iana", compressible: true }, "application/vnd.dvb.notif-ia-msglist+xml": { source: "iana", compressible: true }, "application/vnd.dvb.notif-ia-registration-request+xml": { source: "iana", compressible: true }, "application/vnd.dvb.notif-ia-registration-response+xml": { source: "iana", compressible: true }, "application/vnd.dvb.notif-init+xml": { source: "iana", compressible: true }, "application/vnd.dvb.pfr": { source: "iana" }, "application/vnd.dvb.service": { source: "iana", extensions: ["svc"] }, "application/vnd.dxr": { source: "iana" }, "application/vnd.dynageo": { source: "iana", extensions: ["geo"] }, "application/vnd.dzr": { source: "iana" }, "application/vnd.easykaraoke.cdgdownload": { source: "iana" }, "application/vnd.ecdis-update": { source: "iana" }, "application/vnd.ecip.rlp": { source: "iana" }, "application/vnd.eclipse.ditto+json": { source: "iana", compressible: true }, "application/vnd.ecowin.chart": { source: "iana", extensions: ["mag"] }, "application/vnd.ecowin.filerequest": { source: "iana" }, "application/vnd.ecowin.fileupdate": { source: "iana" }, "application/vnd.ecowin.series": { source: "iana" }, "application/vnd.ecowin.seriesrequest": { source: "iana" }, "application/vnd.ecowin.seriesupdate": { source: "iana" }, "application/vnd.efi.img": { source: "iana" }, "application/vnd.efi.iso": { source: "iana" }, "application/vnd.emclient.accessrequest+xml": { source: "iana", compressible: true }, "application/vnd.enliven": { source: "iana", extensions: ["nml"] }, "application/vnd.enphase.envoy": { source: "iana" }, "application/vnd.eprints.data+xml": { source: "iana", compressible: true }, "application/vnd.epson.esf": { source: "iana", extensions: ["esf"] }, "application/vnd.epson.msf": { source: "iana", extensions: ["msf"] }, "application/vnd.epson.quickanime": { source: "iana", extensions: ["qam"] }, "application/vnd.epson.salt": { source: "iana", extensions: ["slt"] }, "application/vnd.epson.ssf": { source: "iana", extensions: ["ssf"] }, "application/vnd.ericsson.quickcall": { source: "iana" }, "application/vnd.espass-espass+zip": { source: "iana", compressible: false }, "application/vnd.eszigno3+xml": { source: "iana", compressible: true, extensions: ["es3", "et3"] }, "application/vnd.etsi.aoc+xml": { source: "iana", compressible: true }, "application/vnd.etsi.asic-e+zip": { source: "iana", compressible: false }, "application/vnd.etsi.asic-s+zip": { source: "iana", compressible: false }, "application/vnd.etsi.cug+xml": { source: "iana", compressible: true }, "application/vnd.etsi.iptvcommand+xml": { source: "iana", compressible: true }, "application/vnd.etsi.iptvdiscovery+xml": { source: "iana", compressible: true }, "application/vnd.etsi.iptvprofile+xml": { source: "iana", compressible: true }, "application/vnd.etsi.iptvsad-bc+xml": { source: "iana", compressible: true }, "application/vnd.etsi.iptvsad-cod+xml": { source: "iana", compressible: true }, "application/vnd.etsi.iptvsad-npvr+xml": { source: "iana", compressible: true }, "application/vnd.etsi.iptvservice+xml": { source: "iana", compressible: true }, "application/vnd.etsi.iptvsync+xml": { source: "iana", compressible: true }, "application/vnd.etsi.iptvueprofile+xml": { source: "iana", compressible: true }, "application/vnd.etsi.mcid+xml": { source: "iana", compressible: true }, "application/vnd.etsi.mheg5": { source: "iana" }, "application/vnd.etsi.overload-control-policy-dataset+xml": { source: "iana", compressible: true }, "application/vnd.etsi.pstn+xml": { source: "iana", compressible: true }, "application/vnd.etsi.sci+xml": { source: "iana", compressible: true }, "application/vnd.etsi.simservs+xml": { source: "iana", compressible: true }, "application/vnd.etsi.timestamp-token": { source: "iana" }, "application/vnd.etsi.tsl+xml": { source: "iana", compressible: true }, "application/vnd.etsi.tsl.der": { source: "iana" }, "application/vnd.eu.kasparian.car+json": { source: "iana", compressible: true }, "application/vnd.eudora.data": { source: "iana" }, "application/vnd.evolv.ecig.profile": { source: "iana" }, "application/vnd.evolv.ecig.settings": { source: "iana" }, "application/vnd.evolv.ecig.theme": { source: "iana" }, "application/vnd.exstream-empower+zip": { source: "iana", compressible: false }, "application/vnd.exstream-package": { source: "iana" }, "application/vnd.ezpix-album": { source: "iana", extensions: ["ez2"] }, "application/vnd.ezpix-package": { source: "iana", extensions: ["ez3"] }, "application/vnd.f-secure.mobile": { source: "iana" }, "application/vnd.familysearch.gedcom+zip": { source: "iana", compressible: false }, "application/vnd.fastcopy-disk-image": { source: "iana" }, "application/vnd.fdf": { source: "iana", extensions: ["fdf"] }, "application/vnd.fdsn.mseed": { source: "iana", extensions: ["mseed"] }, "application/vnd.fdsn.seed": { source: "iana", extensions: ["seed", "dataless"] }, "application/vnd.ffsns": { source: "iana" }, "application/vnd.ficlab.flb+zip": { source: "iana", compressible: false }, "application/vnd.filmit.zfc": { source: "iana" }, "application/vnd.fints": { source: "iana" }, "application/vnd.firemonkeys.cloudcell": { source: "iana" }, "application/vnd.flographit": { source: "iana", extensions: ["gph"] }, "application/vnd.fluxtime.clip": { source: "iana", extensions: ["ftc"] }, "application/vnd.font-fontforge-sfd": { source: "iana" }, "application/vnd.framemaker": { source: "iana", extensions: ["fm", "frame", "maker", "book"] }, "application/vnd.frogans.fnc": { source: "iana", extensions: ["fnc"] }, "application/vnd.frogans.ltf": { source: "iana", extensions: ["ltf"] }, "application/vnd.fsc.weblaunch": { source: "iana", extensions: ["fsc"] }, "application/vnd.fujifilm.fb.docuworks": { source: "iana" }, "application/vnd.fujifilm.fb.docuworks.binder": { source: "iana" }, "application/vnd.fujifilm.fb.docuworks.container": { source: "iana" }, "application/vnd.fujifilm.fb.jfi+xml": { source: "iana", compressible: true }, "application/vnd.fujitsu.oasys": { source: "iana", extensions: ["oas"] }, "application/vnd.fujitsu.oasys2": { source: "iana", extensions: ["oa2"] }, "application/vnd.fujitsu.oasys3": { source: "iana", extensions: ["oa3"] }, "application/vnd.fujitsu.oasysgp": { source: "iana", extensions: ["fg5"] }, "application/vnd.fujitsu.oasysprs": { source: "iana", extensions: ["bh2"] }, "application/vnd.fujixerox.art-ex": { source: "iana" }, "application/vnd.fujixerox.art4": { source: "iana" }, "application/vnd.fujixerox.ddd": { source: "iana", extensions: ["ddd"] }, "application/vnd.fujixerox.docuworks": { source: "iana", extensions: ["xdw"] }, "application/vnd.fujixerox.docuworks.binder": { source: "iana", extensions: ["xbd"] }, "application/vnd.fujixerox.docuworks.container": { source: "iana" }, "application/vnd.fujixerox.hbpl": { source: "iana" }, "application/vnd.fut-misnet": { source: "iana" }, "application/vnd.futoin+cbor": { source: "iana" }, "application/vnd.futoin+json": { source: "iana", compressible: true }, "application/vnd.fuzzysheet": { source: "iana", extensions: ["fzs"] }, "application/vnd.genomatix.tuxedo": { source: "iana", extensions: ["txd"] }, "application/vnd.gentics.grd+json": { source: "iana", compressible: true }, "application/vnd.geo+json": { source: "iana", compressible: true }, "application/vnd.geocube+xml": { source: "iana", compressible: true }, "application/vnd.geogebra.file": { source: "iana", extensions: ["ggb"] }, "application/vnd.geogebra.slides": { source: "iana" }, "application/vnd.geogebra.tool": { source: "iana", extensions: ["ggt"] }, "application/vnd.geometry-explorer": { source: "iana", extensions: ["gex", "gre"] }, "application/vnd.geonext": { source: "iana", extensions: ["gxt"] }, "application/vnd.geoplan": { source: "iana", extensions: ["g2w"] }, "application/vnd.geospace": { source: "iana", extensions: ["g3w"] }, "application/vnd.gerber": { source: "iana" }, "application/vnd.globalplatform.card-content-mgt": { source: "iana" }, "application/vnd.globalplatform.card-content-mgt-response": { source: "iana" }, "application/vnd.gmx": { source: "iana", extensions: ["gmx"] }, "application/vnd.google-apps.document": { compressible: false, extensions: ["gdoc"] }, "application/vnd.google-apps.presentation": { compressible: false, extensions: ["gslides"] }, "application/vnd.google-apps.spreadsheet": { compressible: false, extensions: ["gsheet"] }, "application/vnd.google-earth.kml+xml": { source: "iana", compressible: true, extensions: ["kml"] }, "application/vnd.google-earth.kmz": { source: "iana", compressible: false, extensions: ["kmz"] }, "application/vnd.gov.sk.e-form+xml": { source: "iana", compressible: true }, "application/vnd.gov.sk.e-form+zip": { source: "iana", compressible: false }, "application/vnd.gov.sk.xmldatacontainer+xml": { source: "iana", compressible: true }, "application/vnd.grafeq": { source: "iana", extensions: ["gqf", "gqs"] }, "application/vnd.gridmp": { source: "iana" }, "application/vnd.groove-account": { source: "iana", extensions: ["gac"] }, "application/vnd.groove-help": { source: "iana", extensions: ["ghf"] }, "application/vnd.groove-identity-message": { source: "iana", extensions: ["gim"] }, "application/vnd.groove-injector": { source: "iana", extensions: ["grv"] }, "application/vnd.groove-tool-message": { source: "iana", extensions: ["gtm"] }, "application/vnd.groove-tool-template": { source: "iana", extensions: ["tpl"] }, "application/vnd.groove-vcard": { source: "iana", extensions: ["vcg"] }, "application/vnd.hal+json": { source: "iana", compressible: true }, "application/vnd.hal+xml": { source: "iana", compressible: true, extensions: ["hal"] }, "application/vnd.handheld-entertainment+xml": { source: "iana", compressible: true, extensions: ["zmm"] }, "application/vnd.hbci": { source: "iana", extensions: ["hbci"] }, "application/vnd.hc+json": { source: "iana", compressible: true }, "application/vnd.hcl-bireports": { source: "iana" }, "application/vnd.hdt": { source: "iana" }, "application/vnd.heroku+json": { source: "iana", compressible: true }, "application/vnd.hhe.lesson-player": { source: "iana", extensions: ["les"] }, "application/vnd.hl7cda+xml": { source: "iana", charset: "UTF-8", compressible: true }, "application/vnd.hl7v2+xml": { source: "iana", charset: "UTF-8", compressible: true }, "application/vnd.hp-hpgl": { source: "iana", extensions: ["hpgl"] }, "application/vnd.hp-hpid": { source: "iana", extensions: ["hpid"] }, "application/vnd.hp-hps": { source: "iana", extensions: ["hps"] }, "application/vnd.hp-jlyt": { source: "iana", extensions: ["jlt"] }, "application/vnd.hp-pcl": { source: "iana", extensions: ["pcl"] }, "application/vnd.hp-pclxl": { source: "iana", extensions: ["pclxl"] }, "application/vnd.httphone": { source: "iana" }, "application/vnd.hydrostatix.sof-data": { source: "iana", extensions: ["sfd-hdstx"] }, "application/vnd.hyper+json": { source: "iana", compressible: true }, "application/vnd.hyper-item+json": { source: "iana", compressible: true }, "application/vnd.hyperdrive+json": { source: "iana", compressible: true }, "application/vnd.hzn-3d-crossword": { source: "iana" }, "application/vnd.ibm.afplinedata": { source: "iana" }, "application/vnd.ibm.electronic-media": { source: "iana" }, "application/vnd.ibm.minipay": { source: "iana", extensions: ["mpy"] }, "application/vnd.ibm.modcap": { source: "iana", extensions: ["afp", "listafp", "list3820"] }, "application/vnd.ibm.rights-management": { source: "iana", extensions: ["irm"] }, "application/vnd.ibm.secure-container": { source: "iana", extensions: ["sc"] }, "application/vnd.iccprofile": { source: "iana", extensions: ["icc", "icm"] }, "application/vnd.ieee.1905": { source: "iana" }, "application/vnd.igloader": { source: "iana", extensions: ["igl"] }, "application/vnd.imagemeter.folder+zip": { source: "iana", compressible: false }, "application/vnd.imagemeter.image+zip": { source: "iana", compressible: false }, "application/vnd.immervision-ivp": { source: "iana", extensions: ["ivp"] }, "application/vnd.immervision-ivu": { source: "iana", extensions: ["ivu"] }, "application/vnd.ims.imsccv1p1": { source: "iana" }, "application/vnd.ims.imsccv1p2": { source: "iana" }, "application/vnd.ims.imsccv1p3": { source: "iana" }, "application/vnd.ims.lis.v2.result+json": { source: "iana", compressible: true }, "application/vnd.ims.lti.v2.toolconsumerprofile+json": { source: "iana", compressible: true }, "application/vnd.ims.lti.v2.toolproxy+json": { source: "iana", compressible: true }, "application/vnd.ims.lti.v2.toolproxy.id+json": { source: "iana", compressible: true }, "application/vnd.ims.lti.v2.toolsettings+json": { source: "iana", compressible: true }, "application/vnd.ims.lti.v2.toolsettings.simple+json": { source: "iana", compressible: true }, "application/vnd.informedcontrol.rms+xml": { source: "iana", compressible: true }, "application/vnd.informix-visionary": { source: "iana" }, "application/vnd.infotech.project": { source: "iana" }, "application/vnd.infotech.project+xml": { source: "iana", compressible: true }, "application/vnd.innopath.wamp.notification": { source: "iana" }, "application/vnd.insors.igm": { source: "iana", extensions: ["igm"] }, "application/vnd.intercon.formnet": { source: "iana", extensions: ["xpw", "xpx"] }, "application/vnd.intergeo": { source: "iana", extensions: ["i2g"] }, "application/vnd.intertrust.digibox": { source: "iana" }, "application/vnd.intertrust.nncp": { source: "iana" }, "application/vnd.intu.qbo": { source: "iana", extensions: ["qbo"] }, "application/vnd.intu.qfx": { source: "iana", extensions: ["qfx"] }, "application/vnd.iptc.g2.catalogitem+xml": { source: "iana", compressible: true }, "application/vnd.iptc.g2.conceptitem+xml": { source: "iana", compressible: true }, "application/vnd.iptc.g2.knowledgeitem+xml": { source: "iana", compressible: true }, "application/vnd.iptc.g2.newsitem+xml": { source: "iana", compressible: true }, "application/vnd.iptc.g2.newsmessage+xml": { source: "iana", compressible: true }, "application/vnd.iptc.g2.packageitem+xml": { source: "iana", compressible: true }, "application/vnd.iptc.g2.planningitem+xml": { source: "iana", compressible: true }, "application/vnd.ipunplugged.rcprofile": { source: "iana", extensions: ["rcprofile"] }, "application/vnd.irepository.package+xml": { source: "iana", compressible: true, extensions: ["irp"] }, "application/vnd.is-xpr": { source: "iana", extensions: ["xpr"] }, "application/vnd.isac.fcs": { source: "iana", extensions: ["fcs"] }, "application/vnd.iso11783-10+zip": { source: "iana", compressible: false }, "application/vnd.jam": { source: "iana", extensions: ["jam"] }, "application/vnd.japannet-directory-service": { source: "iana" }, "application/vnd.japannet-jpnstore-wakeup": { source: "iana" }, "application/vnd.japannet-payment-wakeup": { source: "iana" }, "application/vnd.japannet-registration": { source: "iana" }, "application/vnd.japannet-registration-wakeup": { source: "iana" }, "application/vnd.japannet-setstore-wakeup": { source: "iana" }, "application/vnd.japannet-verification": { source: "iana" }, "application/vnd.japannet-verification-wakeup": { source: "iana" }, "application/vnd.jcp.javame.midlet-rms": { source: "iana", extensions: ["rms"] }, "application/vnd.jisp": { source: "iana", extensions: ["jisp"] }, "application/vnd.joost.joda-archive": { source: "iana", extensions: ["joda"] }, "application/vnd.jsk.isdn-ngn": { source: "iana" }, "application/vnd.kahootz": { source: "iana", extensions: ["ktz", "ktr"] }, "application/vnd.kde.karbon": { source: "iana", extensions: ["karbon"] }, "application/vnd.kde.kchart": { source: "iana", extensions: ["chrt"] }, "application/vnd.kde.kformula": { source: "iana", extensions: ["kfo"] }, "application/vnd.kde.kivio": { source: "iana", extensions: ["flw"] }, "application/vnd.kde.kontour": { source: "iana", extensions: ["kon"] }, "application/vnd.kde.kpresenter": { source: "iana", extensions: ["kpr", "kpt"] }, "application/vnd.kde.kspread": { source: "iana", extensions: ["ksp"] }, "application/vnd.kde.kword": { source: "iana", extensions: ["kwd", "kwt"] }, "application/vnd.kenameaapp": { source: "iana", extensions: ["htke"] }, "application/vnd.kidspiration": { source: "iana", extensions: ["kia"] }, "application/vnd.kinar": { source: "iana", extensions: ["kne", "knp"] }, "application/vnd.koan": { source: "iana", extensions: ["skp", "skd", "skt", "skm"] }, "application/vnd.kodak-descriptor": { source: "iana", extensions: ["sse"] }, "application/vnd.las": { source: "iana" }, "application/vnd.las.las+json": { source: "iana", compressible: true }, "application/vnd.las.las+xml": { source: "iana", compressible: true, extensions: ["lasxml"] }, "application/vnd.laszip": { source: "iana" }, "application/vnd.leap+json": { source: "iana", compressible: true }, "application/vnd.liberty-request+xml": { source: "iana", compressible: true }, "application/vnd.llamagraphics.life-balance.desktop": { source: "iana", extensions: ["lbd"] }, "application/vnd.llamagraphics.life-balance.exchange+xml": { source: "iana", compressible: true, extensions: ["lbe"] }, "application/vnd.logipipe.circuit+zip": { source: "iana", compressible: false }, "application/vnd.loom": { source: "iana" }, "application/vnd.lotus-1-2-3": { source: "iana", extensions: ["123"] }, "application/vnd.lotus-approach": { source: "iana", extensions: ["apr"] }, "application/vnd.lotus-freelance": { source: "iana", extensions: ["pre"] }, "application/vnd.lotus-notes": { source: "iana", extensions: ["nsf"] }, "application/vnd.lotus-organizer": { source: "iana", extensions: ["org"] }, "application/vnd.lotus-screencam": { source: "iana", extensions: ["scm"] }, "application/vnd.lotus-wordpro": { source: "iana", extensions: ["lwp"] }, "application/vnd.macports.portpkg": { source: "iana", extensions: ["portpkg"] }, "application/vnd.mapbox-vector-tile": { source: "iana", extensions: ["mvt"] }, "application/vnd.marlin.drm.actiontoken+xml": { source: "iana", compressible: true }, "application/vnd.marlin.drm.conftoken+xml": { source: "iana", compressible: true }, "application/vnd.marlin.drm.license+xml": { source: "iana", compressible: true }, "application/vnd.marlin.drm.mdcf": { source: "iana" }, "application/vnd.mason+json": { source: "iana", compressible: true }, "application/vnd.maxar.archive.3tz+zip": { source: "iana", compressible: false }, "application/vnd.maxmind.maxmind-db": { source: "iana" }, "application/vnd.mcd": { source: "iana", extensions: ["mcd"] }, "application/vnd.medcalcdata": { source: "iana", extensions: ["mc1"] }, "application/vnd.mediastation.cdkey": { source: "iana", extensions: ["cdkey"] }, "application/vnd.meridian-slingshot": { source: "iana" }, "application/vnd.mfer": { source: "iana", extensions: ["mwf"] }, "application/vnd.mfmp": { source: "iana", extensions: ["mfm"] }, "application/vnd.micro+json": { source: "iana", compressible: true }, "application/vnd.micrografx.flo": { source: "iana", extensions: ["flo"] }, "application/vnd.micrografx.igx": { source: "iana", extensions: ["igx"] }, "application/vnd.microsoft.portable-executable": { source: "iana" }, "application/vnd.microsoft.windows.thumbnail-cache": { source: "iana" }, "application/vnd.miele+json": { source: "iana", compressible: true }, "application/vnd.mif": { source: "iana", extensions: ["mif"] }, "application/vnd.minisoft-hp3000-save": { source: "iana" }, "application/vnd.mitsubishi.misty-guard.trustweb": { source: "iana" }, "application/vnd.mobius.daf": { source: "iana", extensions: ["daf"] }, "application/vnd.mobius.dis": { source: "iana", extensions: ["dis"] }, "application/vnd.mobius.mbk": { source: "iana", extensions: ["mbk"] }, "application/vnd.mobius.mqy": { source: "iana", extensions: ["mqy"] }, "application/vnd.mobius.msl": { source: "iana", extensions: ["msl"] }, "application/vnd.mobius.plc": { source: "iana", extensions: ["plc"] }, "application/vnd.mobius.txf": { source: "iana", extensions: ["txf"] }, "application/vnd.mophun.application": { source: "iana", extensions: ["mpn"] }, "application/vnd.mophun.certificate": { source: "iana", extensions: ["mpc"] }, "application/vnd.motorola.flexsuite": { source: "iana" }, "application/vnd.motorola.flexsuite.adsi": { source: "iana" }, "application/vnd.motorola.flexsuite.fis": { source: "iana" }, "application/vnd.motorola.flexsuite.gotap": { source: "iana" }, "application/vnd.motorola.flexsuite.kmr": { source: "iana" }, "application/vnd.motorola.flexsuite.ttc": { source: "iana" }, "application/vnd.motorola.flexsuite.wem": { source: "iana" }, "application/vnd.motorola.iprm": { source: "iana" }, "application/vnd.mozilla.xul+xml": { source: "iana", compressible: true, extensions: ["xul"] }, "application/vnd.ms-3mfdocument": { source: "iana" }, "application/vnd.ms-artgalry": { source: "iana", extensions: ["cil"] }, "application/vnd.ms-asf": { source: "iana" }, "application/vnd.ms-cab-compressed": { source: "iana", extensions: ["cab"] }, "application/vnd.ms-color.iccprofile": { source: "apache" }, "application/vnd.ms-excel": { source: "iana", compressible: false, extensions: ["xls", "xlm", "xla", "xlc", "xlt", "xlw"] }, "application/vnd.ms-excel.addin.macroenabled.12": { source: "iana", extensions: ["xlam"] }, "application/vnd.ms-excel.sheet.binary.macroenabled.12": { source: "iana", extensions: ["xlsb"] }, "application/vnd.ms-excel.sheet.macroenabled.12": { source: "iana", extensions: ["xlsm"] }, "application/vnd.ms-excel.template.macroenabled.12": { source: "iana", extensions: ["xltm"] }, "application/vnd.ms-fontobject": { source: "iana", compressible: true, extensions: ["eot"] }, "application/vnd.ms-htmlhelp": { source: "iana", extensions: ["chm"] }, "application/vnd.ms-ims": { source: "iana", extensions: ["ims"] }, "application/vnd.ms-lrm": { source: "iana", extensions: ["lrm"] }, "application/vnd.ms-office.activex+xml": { source: "iana", compressible: true }, "application/vnd.ms-officetheme": { source: "iana", extensions: ["thmx"] }, "application/vnd.ms-opentype": { source: "apache", compressible: true }, "application/vnd.ms-outlook": { compressible: false, extensions: ["msg"] }, "application/vnd.ms-package.obfuscated-opentype": { source: "apache" }, "application/vnd.ms-pki.seccat": { source: "apache", extensions: ["cat"] }, "application/vnd.ms-pki.stl": { source: "apache", extensions: ["stl"] }, "application/vnd.ms-playready.initiator+xml": { source: "iana", compressible: true }, "application/vnd.ms-powerpoint": { source: "iana", compressible: false, extensions: ["ppt", "pps", "pot"] }, "application/vnd.ms-powerpoint.addin.macroenabled.12": { source: "iana", extensions: ["ppam"] }, "application/vnd.ms-powerpoint.presentation.macroenabled.12": { source: "iana", extensions: ["pptm"] }, "application/vnd.ms-powerpoint.slide.macroenabled.12": { source: "iana", extensions: ["sldm"] }, "application/vnd.ms-powerpoint.slideshow.macroenabled.12": { source: "iana", extensions: ["ppsm"] }, "application/vnd.ms-powerpoint.template.macroenabled.12": { source: "iana", extensions: ["potm"] }, "application/vnd.ms-printdevicecapabilities+xml": { source: "iana", compressible: true }, "application/vnd.ms-printing.printticket+xml": { source: "apache", compressible: true }, "application/vnd.ms-printschematicket+xml": { source: "iana", compressible: true }, "application/vnd.ms-project": { source: "iana", extensions: ["mpp", "mpt"] }, "application/vnd.ms-tnef": { source: "iana" }, "application/vnd.ms-windows.devicepairing": { source: "iana" }, "application/vnd.ms-windows.nwprinting.oob": { source: "iana" }, "application/vnd.ms-windows.printerpairing": { source: "iana" }, "application/vnd.ms-windows.wsd.oob": { source: "iana" }, "application/vnd.ms-wmdrm.lic-chlg-req": { source: "iana" }, "application/vnd.ms-wmdrm.lic-resp": { source: "iana" }, "application/vnd.ms-wmdrm.meter-chlg-req": { source: "iana" }, "application/vnd.ms-wmdrm.meter-resp": { source: "iana" }, "application/vnd.ms-word.document.macroenabled.12": { source: "iana", extensions: ["docm"] }, "application/vnd.ms-word.template.macroenabled.12": { source: "iana", extensions: ["dotm"] }, "application/vnd.ms-works": { source: "iana", extensions: ["wps", "wks", "wcm", "wdb"] }, "application/vnd.ms-wpl": { source: "iana", extensions: ["wpl"] }, "application/vnd.ms-xpsdocument": { source: "iana", compressible: false, extensions: ["xps"] }, "application/vnd.msa-disk-image": { source: "iana" }, "application/vnd.mseq": { source: "iana", extensions: ["mseq"] }, "application/vnd.msign": { source: "iana" }, "application/vnd.multiad.creator": { source: "iana" }, "application/vnd.multiad.creator.cif": { source: "iana" }, "application/vnd.music-niff": { source: "iana" }, "application/vnd.musician": { source: "iana", extensions: ["mus"] }, "application/vnd.muvee.style": { source: "iana", extensions: ["msty"] }, "application/vnd.mynfc": { source: "iana", extensions: ["taglet"] }, "application/vnd.nacamar.ybrid+json": { source: "iana", compressible: true }, "application/vnd.ncd.control": { source: "iana" }, "application/vnd.ncd.reference": { source: "iana" }, "application/vnd.nearst.inv+json": { source: "iana", compressible: true }, "application/vnd.nebumind.line": { source: "iana" }, "application/vnd.nervana": { source: "iana" }, "application/vnd.netfpx": { source: "iana" }, "application/vnd.neurolanguage.nlu": { source: "iana", extensions: ["nlu"] }, "application/vnd.nimn": { source: "iana" }, "application/vnd.nintendo.nitro.rom": { source: "iana" }, "application/vnd.nintendo.snes.rom": { source: "iana" }, "application/vnd.nitf": { source: "iana", extensions: ["ntf", "nitf"] }, "application/vnd.noblenet-directory": { source: "iana", extensions: ["nnd"] }, "application/vnd.noblenet-sealer": { source: "iana", extensions: ["nns"] }, "application/vnd.noblenet-web": { source: "iana", extensions: ["nnw"] }, "application/vnd.nokia.catalogs": { source: "iana" }, "application/vnd.nokia.conml+wbxml": { source: "iana" }, "application/vnd.nokia.conml+xml": { source: "iana", compressible: true }, "application/vnd.nokia.iptv.config+xml": { source: "iana", compressible: true }, "application/vnd.nokia.isds-radio-presets": { source: "iana" }, "application/vnd.nokia.landmark+wbxml": { source: "iana" }, "application/vnd.nokia.landmark+xml": { source: "iana", compressible: true }, "application/vnd.nokia.landmarkcollection+xml": { source: "iana", compressible: true }, "application/vnd.nokia.n-gage.ac+xml": { source: "iana", compressible: true, extensions: ["ac"] }, "application/vnd.nokia.n-gage.data": { source: "iana", extensions: ["ngdat"] }, "application/vnd.nokia.n-gage.symbian.install": { source: "iana", extensions: ["n-gage"] }, "application/vnd.nokia.ncd": { source: "iana" }, "application/vnd.nokia.pcd+wbxml": { source: "iana" }, "application/vnd.nokia.pcd+xml": { source: "iana", compressible: true }, "application/vnd.nokia.radio-preset": { source: "iana", extensions: ["rpst"] }, "application/vnd.nokia.radio-presets": { source: "iana", extensions: ["rpss"] }, "application/vnd.novadigm.edm": { source: "iana", extensions: ["edm"] }, "application/vnd.novadigm.edx": { source: "iana", extensions: ["edx"] }, "application/vnd.novadigm.ext": { source: "iana", extensions: ["ext"] }, "application/vnd.ntt-local.content-share": { source: "iana" }, "application/vnd.ntt-local.file-transfer": { source: "iana" }, "application/vnd.ntt-local.ogw_remote-access": { source: "iana" }, "application/vnd.ntt-local.sip-ta_remote": { source: "iana" }, "application/vnd.ntt-local.sip-ta_tcp_stream": { source: "iana" }, "application/vnd.oasis.opendocument.chart": { source: "iana", extensions: ["odc"] }, "application/vnd.oasis.opendocument.chart-template": { source: "iana", extensions: ["otc"] }, "application/vnd.oasis.opendocument.database": { source: "iana", extensions: ["odb"] }, "application/vnd.oasis.opendocument.formula": { source: "iana", extensions: ["odf"] }, "application/vnd.oasis.opendocument.formula-template": { source: "iana", extensions: ["odft"] }, "application/vnd.oasis.opendocument.graphics": { source: "iana", compressible: false, extensions: ["odg"] }, "application/vnd.oasis.opendocument.graphics-template": { source: "iana", extensions: ["otg"] }, "application/vnd.oasis.opendocument.image": { source: "iana", extensions: ["odi"] }, "application/vnd.oasis.opendocument.image-template": { source: "iana", extensions: ["oti"] }, "application/vnd.oasis.opendocument.presentation": { source: "iana", compressible: false, extensions: ["odp"] }, "application/vnd.oasis.opendocument.presentation-template": { source: "iana", extensions: ["otp"] }, "application/vnd.oasis.opendocument.spreadsheet": { source: "iana", compressible: false, extensions: ["ods"] }, "application/vnd.oasis.opendocument.spreadsheet-template": { source: "iana", extensions: ["ots"] }, "application/vnd.oasis.opendocument.text": { source: "iana", compressible: false, extensions: ["odt"] }, "application/vnd.oasis.opendocument.text-master": { source: "iana", extensions: ["odm"] }, "application/vnd.oasis.opendocument.text-template": { source: "iana", extensions: ["ott"] }, "application/vnd.oasis.opendocument.text-web": { source: "iana", extensions: ["oth"] }, "application/vnd.obn": { source: "iana" }, "application/vnd.ocf+cbor": { source: "iana" }, "application/vnd.oci.image.manifest.v1+json": { source: "iana", compressible: true }, "application/vnd.oftn.l10n+json": { source: "iana", compressible: true }, "application/vnd.oipf.contentaccessdownload+xml": { source: "iana", compressible: true }, "application/vnd.oipf.contentaccessstreaming+xml": { source: "iana", compressible: true }, "application/vnd.oipf.cspg-hexbinary": { source: "iana" }, "application/vnd.oipf.dae.svg+xml": { source: "iana", compressible: true }, "application/vnd.oipf.dae.xhtml+xml": { source: "iana", compressible: true }, "application/vnd.oipf.mippvcontrolmessage+xml": { source: "iana", compressible: true }, "application/vnd.oipf.pae.gem": { source: "iana" }, "application/vnd.oipf.spdiscovery+xml": { source: "iana", compressible: true }, "application/vnd.oipf.spdlist+xml": { source: "iana", compressible: true }, "application/vnd.oipf.ueprofile+xml": { source: "iana", compressible: true }, "application/vnd.oipf.userprofile+xml": { source: "iana", compressible: true }, "application/vnd.olpc-sugar": { source: "iana", extensions: ["xo"] }, "application/vnd.oma-scws-config": { source: "iana" }, "application/vnd.oma-scws-http-request": { source: "iana" }, "application/vnd.oma-scws-http-response": { source: "iana" }, "application/vnd.oma.bcast.associated-procedure-parameter+xml": { source: "iana", compressible: true }, "application/vnd.oma.bcast.drm-trigger+xml": { source: "iana", compressible: true }, "application/vnd.oma.bcast.imd+xml": { source: "iana", compressible: true }, "application/vnd.oma.bcast.ltkm": { source: "iana" }, "application/vnd.oma.bcast.notification+xml": { source: "iana", compressible: true }, "application/vnd.oma.bcast.provisioningtrigger": { source: "iana" }, "application/vnd.oma.bcast.sgboot": { source: "iana" }, "application/vnd.oma.bcast.sgdd+xml": { source: "iana", compressible: true }, "application/vnd.oma.bcast.sgdu": { source: "iana" }, "application/vnd.oma.bcast.simple-symbol-container": { source: "iana" }, "application/vnd.oma.bcast.smartcard-trigger+xml": { source: "iana", compressible: true }, "application/vnd.oma.bcast.sprov+xml": { source: "iana", compressible: true }, "application/vnd.oma.bcast.stkm": { source: "iana" }, "application/vnd.oma.cab-address-book+xml": { source: "iana", compressible: true }, "application/vnd.oma.cab-feature-handler+xml": { source: "iana", compressible: true }, "application/vnd.oma.cab-pcc+xml": { source: "iana", compressible: true }, "application/vnd.oma.cab-subs-invite+xml": { source: "iana", compressible: true }, "application/vnd.oma.cab-user-prefs+xml": { source: "iana", compressible: true }, "application/vnd.oma.dcd": { source: "iana" }, "application/vnd.oma.dcdc": { source: "iana" }, "application/vnd.oma.dd2+xml": { source: "iana", compressible: true, extensions: ["dd2"] }, "application/vnd.oma.drm.risd+xml": { source: "iana", compressible: true }, "application/vnd.oma.group-usage-list+xml": { source: "iana", compressible: true }, "application/vnd.oma.lwm2m+cbor": { source: "iana" }, "application/vnd.oma.lwm2m+json": { source: "iana", compressible: true }, "application/vnd.oma.lwm2m+tlv": { source: "iana" }, "application/vnd.oma.pal+xml": { source: "iana", compressible: true }, "application/vnd.oma.poc.detailed-progress-report+xml": { source: "iana", compressible: true }, "application/vnd.oma.poc.final-report+xml": { source: "iana", compressible: true }, "application/vnd.oma.poc.groups+xml": { source: "iana", compressible: true }, "application/vnd.oma.poc.invocation-descriptor+xml": { source: "iana", compressible: true }, "application/vnd.oma.poc.optimized-progress-report+xml": { source: "iana", compressible: true }, "application/vnd.oma.push": { source: "iana" }, "application/vnd.oma.scidm.messages+xml": { source: "iana", compressible: true }, "application/vnd.oma.xcap-directory+xml": { source: "iana", compressible: true }, "application/vnd.omads-email+xml": { source: "iana", charset: "UTF-8", compressible: true }, "application/vnd.omads-file+xml": { source: "iana", charset: "UTF-8", compressible: true }, "application/vnd.omads-folder+xml": { source: "iana", charset: "UTF-8", compressible: true }, "application/vnd.omaloc-supl-init": { source: "iana" }, "application/vnd.onepager": { source: "iana" }, "application/vnd.onepagertamp": { source: "iana" }, "application/vnd.onepagertamx": { source: "iana" }, "application/vnd.onepagertat": { source: "iana" }, "application/vnd.onepagertatp": { source: "iana" }, "application/vnd.onepagertatx": { source: "iana" }, "application/vnd.openblox.game+xml": { source: "iana", compressible: true, extensions: ["obgx"] }, "application/vnd.openblox.game-binary": { source: "iana" }, "application/vnd.openeye.oeb": { source: "iana" }, "application/vnd.openofficeorg.extension": { source: "apache", extensions: ["oxt"] }, "application/vnd.openstreetmap.data+xml": { source: "iana", compressible: true, extensions: ["osm"] }, "application/vnd.opentimestamps.ots": { source: "iana" }, "application/vnd.openxmlformats-officedocument.custom-properties+xml": { source: "iana", compressible: true }, "application/vnd.openxmlformats-officedocument.customxmlproperties+xml": { source: "iana", compressible: true }, "application/vnd.openxmlformats-officedocument.drawing+xml": { source: "iana", compressible: true }, "application/vnd.openxmlformats-officedocument.drawingml.chart+xml": { source: "iana", compressible: true }, "application/vnd.openxmlformats-officedocument.drawingml.chartshapes+xml": { source: "iana", compressible: true }, "application/vnd.openxmlformats-officedocument.drawingml.diagramcolors+xml": { source: "iana", compressible: true }, "application/vnd.openxmlformats-officedocument.drawingml.diagramdata+xml": { source: "iana", compressible: true }, "application/vnd.openxmlformats-officedocument.drawingml.diagramlayout+xml": { source: "iana", compressible: true }, "application/vnd.openxmlformats-officedocument.drawingml.diagramstyle+xml": { source: "iana", compressible: true }, "application/vnd.openxmlformats-officedocument.extended-properties+xml": { source: "iana", compressible: true }, "application/vnd.openxmlformats-officedocument.presentationml.commentauthors+xml": { source: "iana", compressible: true }, "application/vnd.openxmlformats-officedocument.presentationml.comments+xml": { source: "iana", compressible: true }, "application/vnd.openxmlformats-officedocument.presentationml.handoutmaster+xml": { source: "iana", compressible: true }, "application/vnd.openxmlformats-officedocument.presentationml.notesmaster+xml": { source: "iana", compressible: true }, "application/vnd.openxmlformats-officedocument.presentationml.notesslide+xml": { source: "iana", compressible: true }, "application/vnd.openxmlformats-officedocument.presentationml.presentation": { source: "iana", compressible: false, extensions: ["pptx"] }, "application/vnd.openxmlformats-officedocument.presentationml.presentation.main+xml": { source: "iana", compressible: true }, "application/vnd.openxmlformats-officedocument.presentationml.presprops+xml": { source: "iana", compressible: true }, "application/vnd.openxmlformats-officedocument.presentationml.slide": { source: "iana", extensions: ["sldx"] }, "application/vnd.openxmlformats-officedocument.presentationml.slide+xml": { source: "iana", compressible: true }, "application/vnd.openxmlformats-officedocument.presentationml.slidelayout+xml": { source: "iana", compressible: true }, "application/vnd.openxmlformats-officedocument.presentationml.slidemaster+xml": { source: "iana", compressible: true }, "application/vnd.openxmlformats-officedocument.presentationml.slideshow": { source: "iana", extensions: ["ppsx"] }, "application/vnd.openxmlformats-officedocument.presentationml.slideshow.main+xml": { source: "iana", compressible: true }, "application/vnd.openxmlformats-officedocument.presentationml.slideupdateinfo+xml": { source: "iana", compressible: true }, "application/vnd.openxmlformats-officedocument.presentationml.tablestyles+xml": { source: "iana", compressible: true }, "application/vnd.openxmlformats-officedocument.presentationml.tags+xml": { source: "iana", compressible: true }, "application/vnd.openxmlformats-officedocument.presentationml.template": { source: "iana", extensions: ["potx"] }, "application/vnd.openxmlformats-officedocument.presentationml.template.main+xml": { source: "iana", compressible: true }, "application/vnd.openxmlformats-officedocument.presentationml.viewprops+xml": { source: "iana", compressible: true }, "application/vnd.openxmlformats-officedocument.spreadsheetml.calcchain+xml": { source: "iana", compressible: true }, "application/vnd.openxmlformats-officedocument.spreadsheetml.chartsheet+xml": { source: "iana", compressible: true }, "application/vnd.openxmlformats-officedocument.spreadsheetml.comments+xml": { source: "iana", compressible: true }, "application/vnd.openxmlformats-officedocument.spreadsheetml.connections+xml": { source: "iana", compressible: true }, "application/vnd.openxmlformats-officedocument.spreadsheetml.dialogsheet+xml": { source: "iana", compressible: true }, "application/vnd.openxmlformats-officedocument.spreadsheetml.externallink+xml": { source: "iana", compressible: true }, "application/vnd.openxmlformats-officedocument.spreadsheetml.pivotcachedefinition+xml": { source: "iana", compressible: true }, "application/vnd.openxmlformats-officedocument.spreadsheetml.pivotcacherecords+xml": { source: "iana", compressible: true }, "application/vnd.openxmlformats-officedocument.spreadsheetml.pivottable+xml": { source: "iana", compressible: true }, "application/vnd.openxmlformats-officedocument.spreadsheetml.querytable+xml": { source: "iana", compressible: true }, "application/vnd.openxmlformats-officedocument.spreadsheetml.revisionheaders+xml": { source: "iana", compressible: true }, "application/vnd.openxmlformats-officedocument.spreadsheetml.revisionlog+xml": { source: "iana", compressible: true }, "application/vnd.openxmlformats-officedocument.spreadsheetml.sharedstrings+xml": { source: "iana", compressible: true }, "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet": { source: "iana", compressible: false, extensions: ["xlsx"] }, "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet.main+xml": { source: "iana", compressible: true }, "application/vnd.openxmlformats-officedocument.spreadsheetml.sheetmetadata+xml": { source: "iana", compressible: true }, "application/vnd.openxmlformats-officedocument.spreadsheetml.styles+xml": { source: "iana", compressible: true }, "application/vnd.openxmlformats-officedocument.spreadsheetml.table+xml": { source: "iana", compressible: true }, "application/vnd.openxmlformats-officedocument.spreadsheetml.tablesinglecells+xml": { source: "iana", compressible: true }, "application/vnd.openxmlformats-officedocument.spreadsheetml.template": { source: "iana", extensions: ["xltx"] }, "application/vnd.openxmlformats-officedocument.spreadsheetml.template.main+xml": { source: "iana", compressible: true }, "application/vnd.openxmlformats-officedocument.spreadsheetml.usernames+xml": { source: "iana", compressible: true }, "application/vnd.openxmlformats-officedocument.spreadsheetml.volatiledependencies+xml": { source: "iana", compressible: true }, "application/vnd.openxmlformats-officedocument.spreadsheetml.worksheet+xml": { source: "iana", compressible: true }, "application/vnd.openxmlformats-officedocument.theme+xml": { source: "iana", compressible: true }, "application/vnd.openxmlformats-officedocument.themeoverride+xml": { source: "iana", compressible: true }, "application/vnd.openxmlformats-officedocument.vmldrawing": { source: "iana" }, "application/vnd.openxmlformats-officedocument.wordprocessingml.comments+xml": { source: "iana", compressible: true }, "application/vnd.openxmlformats-officedocument.wordprocessingml.document": { source: "iana", compressible: false, extensions: ["docx"] }, "application/vnd.openxmlformats-officedocument.wordprocessingml.document.glossary+xml": { source: "iana", compressible: true }, "application/vnd.openxmlformats-officedocument.wordprocessingml.document.main+xml": { source: "iana", compressible: true }, "application/vnd.openxmlformats-officedocument.wordprocessingml.endnotes+xml": { source: "iana", compressible: true }, "application/vnd.openxmlformats-officedocument.wordprocessingml.fonttable+xml": { source: "iana", compressible: true }, "application/vnd.openxmlformats-officedocument.wordprocessingml.footer+xml": { source: "iana", compressible: true }, "application/vnd.openxmlformats-officedocument.wordprocessingml.footnotes+xml": { source: "iana", compressible: true }, "application/vnd.openxmlformats-officedocument.wordprocessingml.numbering+xml": { source: "iana", compressible: true }, "application/vnd.openxmlformats-officedocument.wordprocessingml.settings+xml": { source: "iana", compressible: true }, "application/vnd.openxmlformats-officedocument.wordprocessingml.styles+xml": { source: "iana", compressible: true }, "application/vnd.openxmlformats-officedocument.wordprocessingml.template": { source: "iana", extensions: ["dotx"] }, "application/vnd.openxmlformats-officedocument.wordprocessingml.template.main+xml": { source: "iana", compressible: true }, "application/vnd.openxmlformats-officedocument.wordprocessingml.websettings+xml": { source: "iana", compressible: true }, "application/vnd.openxmlformats-package.core-properties+xml": { source: "iana", compressible: true }, "application/vnd.openxmlformats-package.digital-signature-xmlsignature+xml": { source: "iana", compressible: true }, "application/vnd.openxmlformats-package.relationships+xml": { source: "iana", compressible: true }, "application/vnd.oracle.resource+json": { source: "iana", compressible: true }, "application/vnd.orange.indata": { source: "iana" }, "application/vnd.osa.netdeploy": { source: "iana" }, "application/vnd.osgeo.mapguide.package": { source: "iana", extensions: ["mgp"] }, "application/vnd.osgi.bundle": { source: "iana" }, "application/vnd.osgi.dp": { source: "iana", extensions: ["dp"] }, "application/vnd.osgi.subsystem": { source: "iana", extensions: ["esa"] }, "application/vnd.otps.ct-kip+xml": { source: "iana", compressible: true }, "application/vnd.oxli.countgraph": { source: "iana" }, "application/vnd.pagerduty+json": { source: "iana", compressible: true }, "application/vnd.palm": { source: "iana", extensions: ["pdb", "pqa", "oprc"] }, "application/vnd.panoply": { source: "iana" }, "application/vnd.paos.xml": { source: "iana" }, "application/vnd.patentdive": { source: "iana" }, "application/vnd.patientecommsdoc": { source: "iana" }, "application/vnd.pawaafile": { source: "iana", extensions: ["paw"] }, "application/vnd.pcos": { source: "iana" }, "application/vnd.pg.format": { source: "iana", extensions: ["str"] }, "application/vnd.pg.osasli": { source: "iana", extensions: ["ei6"] }, "application/vnd.piaccess.application-licence": { source: "iana" }, "application/vnd.picsel": { source: "iana", extensions: ["efif"] }, "application/vnd.pmi.widget": { source: "iana", extensions: ["wg"] }, "application/vnd.poc.group-advertisement+xml": { source: "iana", compressible: true }, "application/vnd.pocketlearn": { source: "iana", extensions: ["plf"] }, "application/vnd.powerbuilder6": { source: "iana", extensions: ["pbd"] }, "application/vnd.powerbuilder6-s": { source: "iana" }, "application/vnd.powerbuilder7": { source: "iana" }, "application/vnd.powerbuilder7-s": { source: "iana" }, "application/vnd.powerbuilder75": { source: "iana" }, "application/vnd.powerbuilder75-s": { source: "iana" }, "application/vnd.preminet": { source: "iana" }, "application/vnd.previewsystems.box": { source: "iana", extensions: ["box"] }, "application/vnd.proteus.magazine": { source: "iana", extensions: ["mgz"] }, "application/vnd.psfs": { source: "iana" }, "application/vnd.publishare-delta-tree": { source: "iana", extensions: ["qps"] }, "application/vnd.pvi.ptid1": { source: "iana", extensions: ["ptid"] }, "application/vnd.pwg-multiplexed": { source: "iana" }, "application/vnd.pwg-xhtml-print+xml": { source: "iana", compressible: true }, "application/vnd.qualcomm.brew-app-res": { source: "iana" }, "application/vnd.quarantainenet": { source: "iana" }, "application/vnd.quark.quarkxpress": { source: "iana", extensions: ["qxd", "qxt", "qwd", "qwt", "qxl", "qxb"] }, "application/vnd.quobject-quoxdocument": { source: "iana" }, "application/vnd.radisys.moml+xml": { source: "iana", compressible: true }, "application/vnd.radisys.msml+xml": { source: "iana", compressible: true }, "application/vnd.radisys.msml-audit+xml": { source: "iana", compressible: true }, "application/vnd.radisys.msml-audit-conf+xml": { source: "iana", compressible: true }, "application/vnd.radisys.msml-audit-conn+xml": { source: "iana", compressible: true }, "application/vnd.radisys.msml-audit-dialog+xml": { source: "iana", compressible: true }, "application/vnd.radisys.msml-audit-stream+xml": { source: "iana", compressible: true }, "application/vnd.radisys.msml-conf+xml": { source: "iana", compressible: true }, "application/vnd.radisys.msml-dialog+xml": { source: "iana", compressible: true }, "application/vnd.radisys.msml-dialog-base+xml": { source: "iana", compressible: true }, "application/vnd.radisys.msml-dialog-fax-detect+xml": { source: "iana", compressible: true }, "application/vnd.radisys.msml-dialog-fax-sendrecv+xml": { source: "iana", compressible: true }, "application/vnd.radisys.msml-dialog-group+xml": { source: "iana", compressible: true }, "application/vnd.radisys.msml-dialog-speech+xml": { source: "iana", compressible: true }, "application/vnd.radisys.msml-dialog-transform+xml": { source: "iana", compressible: true }, "application/vnd.rainstor.data": { source: "iana" }, "application/vnd.rapid": { source: "iana" }, "application/vnd.rar": { source: "iana", extensions: ["rar"] }, "application/vnd.realvnc.bed": { source: "iana", extensions: ["bed"] }, "application/vnd.recordare.musicxml": { source: "iana", extensions: ["mxl"] }, "application/vnd.recordare.musicxml+xml": { source: "iana", compressible: true, extensions: ["musicxml"] }, "application/vnd.renlearn.rlprint": { source: "iana" }, "application/vnd.resilient.logic": { source: "iana" }, "application/vnd.restful+json": { source: "iana", compressible: true }, "application/vnd.rig.cryptonote": { source: "iana", extensions: ["cryptonote"] }, "application/vnd.rim.cod": { source: "apache", extensions: ["cod"] }, "application/vnd.rn-realmedia": { source: "apache", extensions: ["rm"] }, "application/vnd.rn-realmedia-vbr": { source: "apache", extensions: ["rmvb"] }, "application/vnd.route66.link66+xml": { source: "iana", compressible: true, extensions: ["link66"] }, "application/vnd.rs-274x": { source: "iana" }, "application/vnd.ruckus.download": { source: "iana" }, "application/vnd.s3sms": { source: "iana" }, "application/vnd.sailingtracker.track": { source: "iana", extensions: ["st"] }, "application/vnd.sar": { source: "iana" }, "application/vnd.sbm.cid": { source: "iana" }, "application/vnd.sbm.mid2": { source: "iana" }, "application/vnd.scribus": { source: "iana" }, "application/vnd.sealed.3df": { source: "iana" }, "application/vnd.sealed.csf": { source: "iana" }, "application/vnd.sealed.doc": { source: "iana" }, "application/vnd.sealed.eml": { source: "iana" }, "application/vnd.sealed.mht": { source: "iana" }, "application/vnd.sealed.net": { source: "iana" }, "application/vnd.sealed.ppt": { source: "iana" }, "application/vnd.sealed.tiff": { source: "iana" }, "application/vnd.sealed.xls": { source: "iana" }, "application/vnd.sealedmedia.softseal.html": { source: "iana" }, "application/vnd.sealedmedia.softseal.pdf": { source: "iana" }, "application/vnd.seemail": { source: "iana", extensions: ["see"] }, "application/vnd.seis+json": { source: "iana", compressible: true }, "application/vnd.sema": { source: "iana", extensions: ["sema"] }, "application/vnd.semd": { source: "iana", extensions: ["semd"] }, "application/vnd.semf": { source: "iana", extensions: ["semf"] }, "application/vnd.shade-save-file": { source: "iana" }, "application/vnd.shana.informed.formdata": { source: "iana", extensions: ["ifm"] }, "application/vnd.shana.informed.formtemplate": { source: "iana", extensions: ["itp"] }, "application/vnd.shana.informed.interchange": { source: "iana", extensions: ["iif"] }, "application/vnd.shana.informed.package": { source: "iana", extensions: ["ipk"] }, "application/vnd.shootproof+json": { source: "iana", compressible: true }, "application/vnd.shopkick+json": { source: "iana", compressible: true }, "application/vnd.shp": { source: "iana" }, "application/vnd.shx": { source: "iana" }, "application/vnd.sigrok.session": { source: "iana" }, "application/vnd.simtech-mindmapper": { source: "iana", extensions: ["twd", "twds"] }, "application/vnd.siren+json": { source: "iana", compressible: true }, "application/vnd.smaf": { source: "iana", extensions: ["mmf"] }, "application/vnd.smart.notebook": { source: "iana" }, "application/vnd.smart.teacher": { source: "iana", extensions: ["teacher"] }, "application/vnd.snesdev-page-table": { source: "iana" }, "application/vnd.software602.filler.form+xml": { source: "iana", compressible: true, extensions: ["fo"] }, "application/vnd.software602.filler.form-xml-zip": { source: "iana" }, "application/vnd.solent.sdkm+xml": { source: "iana", compressible: true, extensions: ["sdkm", "sdkd"] }, "application/vnd.spotfire.dxp": { source: "iana", extensions: ["dxp"] }, "application/vnd.spotfire.sfs": { source: "iana", extensions: ["sfs"] }, "application/vnd.sqlite3": { source: "iana" }, "application/vnd.sss-cod": { source: "iana" }, "application/vnd.sss-dtf": { source: "iana" }, "application/vnd.sss-ntf": { source: "iana" }, "application/vnd.stardivision.calc": { source: "apache", extensions: ["sdc"] }, "application/vnd.stardivision.draw": { source: "apache", extensions: ["sda"] }, "application/vnd.stardivision.impress": { source: "apache", extensions: ["sdd"] }, "application/vnd.stardivision.math": { source: "apache", extensions: ["smf"] }, "application/vnd.stardivision.writer": { source: "apache", extensions: ["sdw", "vor"] }, "application/vnd.stardivision.writer-global": { source: "apache", extensions: ["sgl"] }, "application/vnd.stepmania.package": { source: "iana", extensions: ["smzip"] }, "application/vnd.stepmania.stepchart": { source: "iana", extensions: ["sm"] }, "application/vnd.street-stream": { source: "iana" }, "application/vnd.sun.wadl+xml": { source: "iana", compressible: true, extensions: ["wadl"] }, "application/vnd.sun.xml.calc": { source: "apache", extensions: ["sxc"] }, "application/vnd.sun.xml.calc.template": { source: "apache", extensions: ["stc"] }, "application/vnd.sun.xml.draw": { source: "apache", extensions: ["sxd"] }, "application/vnd.sun.xml.draw.template": { source: "apache", extensions: ["std"] }, "application/vnd.sun.xml.impress": { source: "apache", extensions: ["sxi"] }, "application/vnd.sun.xml.impress.template": { source: "apache", extensions: ["sti"] }, "application/vnd.sun.xml.math": { source: "apache", extensions: ["sxm"] }, "application/vnd.sun.xml.writer": { source: "apache", extensions: ["sxw"] }, "application/vnd.sun.xml.writer.global": { source: "apache", extensions: ["sxg"] }, "application/vnd.sun.xml.writer.template": { source: "apache", extensions: ["stw"] }, "application/vnd.sus-calendar": { source: "iana", extensions: ["sus", "susp"] }, "application/vnd.svd": { source: "iana", extensions: ["svd"] }, "application/vnd.swiftview-ics": { source: "iana" }, "application/vnd.sycle+xml": { source: "iana", compressible: true }, "application/vnd.syft+json": { source: "iana", compressible: true }, "application/vnd.symbian.install": { source: "apache", extensions: ["sis", "sisx"] }, "application/vnd.syncml+xml": { source: "iana", charset: "UTF-8", compressible: true, extensions: ["xsm"] }, "application/vnd.syncml.dm+wbxml": { source: "iana", charset: "UTF-8", extensions: ["bdm"] }, "application/vnd.syncml.dm+xml": { source: "iana", charset: "UTF-8", compressible: true, extensions: ["xdm"] }, "application/vnd.syncml.dm.notification": { source: "iana" }, "application/vnd.syncml.dmddf+wbxml": { source: "iana" }, "application/vnd.syncml.dmddf+xml": { source: "iana", charset: "UTF-8", compressible: true, extensions: ["ddf"] }, "application/vnd.syncml.dmtnds+wbxml": { source: "iana" }, "application/vnd.syncml.dmtnds+xml": { source: "iana", charset: "UTF-8", compressible: true }, "application/vnd.syncml.ds.notification": { source: "iana" }, "application/vnd.tableschema+json": { source: "iana", compressible: true }, "application/vnd.tao.intent-module-archive": { source: "iana", extensions: ["tao"] }, "application/vnd.tcpdump.pcap": { source: "iana", extensions: ["pcap", "cap", "dmp"] }, "application/vnd.think-cell.ppttc+json": { source: "iana", compressible: true }, "application/vnd.tmd.mediaflex.api+xml": { source: "iana", compressible: true }, "application/vnd.tml": { source: "iana" }, "application/vnd.tmobile-livetv": { source: "iana", extensions: ["tmo"] }, "application/vnd.tri.onesource": { source: "iana" }, "application/vnd.trid.tpt": { source: "iana", extensions: ["tpt"] }, "application/vnd.triscape.mxs": { source: "iana", extensions: ["mxs"] }, "application/vnd.trueapp": { source: "iana", extensions: ["tra"] }, "application/vnd.truedoc": { source: "iana" }, "application/vnd.ubisoft.webplayer": { source: "iana" }, "application/vnd.ufdl": { source: "iana", extensions: ["ufd", "ufdl"] }, "application/vnd.uiq.theme": { source: "iana", extensions: ["utz"] }, "application/vnd.umajin": { source: "iana", extensions: ["umj"] }, "application/vnd.unity": { source: "iana", extensions: ["unityweb"] }, "application/vnd.uoml+xml": { source: "iana", compressible: true, extensions: ["uoml"] }, "application/vnd.uplanet.alert": { source: "iana" }, "application/vnd.uplanet.alert-wbxml": { source: "iana" }, "application/vnd.uplanet.bearer-choice": { source: "iana" }, "application/vnd.uplanet.bearer-choice-wbxml": { source: "iana" }, "application/vnd.uplanet.cacheop": { source: "iana" }, "application/vnd.uplanet.cacheop-wbxml": { source: "iana" }, "application/vnd.uplanet.channel": { source: "iana" }, "application/vnd.uplanet.channel-wbxml": { source: "iana" }, "application/vnd.uplanet.list": { source: "iana" }, "application/vnd.uplanet.list-wbxml": { source: "iana" }, "application/vnd.uplanet.listcmd": { source: "iana" }, "application/vnd.uplanet.listcmd-wbxml": { source: "iana" }, "application/vnd.uplanet.signal": { source: "iana" }, "application/vnd.uri-map": { source: "iana" }, "application/vnd.valve.source.material": { source: "iana" }, "application/vnd.vcx": { source: "iana", extensions: ["vcx"] }, "application/vnd.vd-study": { source: "iana" }, "application/vnd.vectorworks": { source: "iana" }, "application/vnd.vel+json": { source: "iana", compressible: true }, "application/vnd.verimatrix.vcas": { source: "iana" }, "application/vnd.veritone.aion+json": { source: "iana", compressible: true }, "application/vnd.veryant.thin": { source: "iana" }, "application/vnd.ves.encrypted": { source: "iana" }, "application/vnd.vidsoft.vidconference": { source: "iana" }, "application/vnd.visio": { source: "iana", extensions: ["vsd", "vst", "vss", "vsw"] }, "application/vnd.visionary": { source: "iana", extensions: ["vis"] }, "application/vnd.vividence.scriptfile": { source: "iana" }, "application/vnd.vsf": { source: "iana", extensions: ["vsf"] }, "application/vnd.wap.sic": { source: "iana" }, "application/vnd.wap.slc": { source: "iana" }, "application/vnd.wap.wbxml": { source: "iana", charset: "UTF-8", extensions: ["wbxml"] }, "application/vnd.wap.wmlc": { source: "iana", extensions: ["wmlc"] }, "application/vnd.wap.wmlscriptc": { source: "iana", extensions: ["wmlsc"] }, "application/vnd.webturbo": { source: "iana", extensions: ["wtb"] }, "application/vnd.wfa.dpp": { source: "iana" }, "application/vnd.wfa.p2p": { source: "iana" }, "application/vnd.wfa.wsc": { source: "iana" }, "application/vnd.windows.devicepairing": { source: "iana" }, "application/vnd.wmc": { source: "iana" }, "application/vnd.wmf.bootstrap": { source: "iana" }, "application/vnd.wolfram.mathematica": { source: "iana" }, "application/vnd.wolfram.mathematica.package": { source: "iana" }, "application/vnd.wolfram.player": { source: "iana", extensions: ["nbp"] }, "application/vnd.wordperfect": { source: "iana", extensions: ["wpd"] }, "application/vnd.wqd": { source: "iana", extensions: ["wqd"] }, "application/vnd.wrq-hp3000-labelled": { source: "iana" }, "application/vnd.wt.stf": { source: "iana", extensions: ["stf"] }, "application/vnd.wv.csp+wbxml": { source: "iana" }, "application/vnd.wv.csp+xml": { source: "iana", compressible: true }, "application/vnd.wv.ssp+xml": { source: "iana", compressible: true }, "application/vnd.xacml+json": { source: "iana", compressible: true }, "application/vnd.xara": { source: "iana", extensions: ["xar"] }, "application/vnd.xfdl": { source: "iana", extensions: ["xfdl"] }, "application/vnd.xfdl.webform": { source: "iana" }, "application/vnd.xmi+xml": { source: "iana", compressible: true }, "application/vnd.xmpie.cpkg": { source: "iana" }, "application/vnd.xmpie.dpkg": { source: "iana" }, "application/vnd.xmpie.plan": { source: "iana" }, "application/vnd.xmpie.ppkg": { source: "iana" }, "application/vnd.xmpie.xlim": { source: "iana" }, "application/vnd.yamaha.hv-dic": { source: "iana", extensions: ["hvd"] }, "application/vnd.yamaha.hv-script": { source: "iana", extensions: ["hvs"] }, "application/vnd.yamaha.hv-voice": { source: "iana", extensions: ["hvp"] }, "application/vnd.yamaha.openscoreformat": { source: "iana", extensions: ["osf"] }, "application/vnd.yamaha.openscoreformat.osfpvg+xml": { source: "iana", compressible: true, extensions: ["osfpvg"] }, "application/vnd.yamaha.remote-setup": { source: "iana" }, "application/vnd.yamaha.smaf-audio": { source: "iana", extensions: ["saf"] }, "application/vnd.yamaha.smaf-phrase": { source: "iana", extensions: ["spf"] }, "application/vnd.yamaha.through-ngn": { source: "iana" }, "application/vnd.yamaha.tunnel-udpencap": { source: "iana" }, "application/vnd.yaoweme": { source: "iana" }, "application/vnd.yellowriver-custom-menu": { source: "iana", extensions: ["cmp"] }, "application/vnd.youtube.yt": { source: "iana" }, "application/vnd.zul": { source: "iana", extensions: ["zir", "zirz"] }, "application/vnd.zzazz.deck+xml": { source: "iana", compressible: true, extensions: ["zaz"] }, "application/voicexml+xml": { source: "iana", compressible: true, extensions: ["vxml"] }, "application/voucher-cms+json": { source: "iana", compressible: true }, "application/vq-rtcpxr": { source: "iana" }, "application/wasm": { source: "iana", compressible: true, extensions: ["wasm"] }, "application/watcherinfo+xml": { source: "iana", compressible: true, extensions: ["wif"] }, "application/webpush-options+json": { source: "iana", compressible: true }, "application/whoispp-query": { source: "iana" }, "application/whoispp-response": { source: "iana" }, "application/widget": { source: "iana", extensions: ["wgt"] }, "application/winhlp": { source: "apache", extensions: ["hlp"] }, "application/wita": { source: "iana" }, "application/wordperfect5.1": { source: "iana" }, "application/wsdl+xml": { source: "iana", compressible: true, extensions: ["wsdl"] }, "application/wspolicy+xml": { source: "iana", compressible: true, extensions: ["wspolicy"] }, "application/x-7z-compressed": { source: "apache", compressible: false, extensions: ["7z"] }, "application/x-abiword": { source: "apache", extensions: ["abw"] }, "application/x-ace-compressed": { source: "apache", extensions: ["ace"] }, "application/x-amf": { source: "apache" }, "application/x-apple-diskimage": { source: "apache", extensions: ["dmg"] }, "application/x-arj": { compressible: false, extensions: ["arj"] }, "application/x-authorware-bin": { source: "apache", extensions: ["aab", "x32", "u32", "vox"] }, "application/x-authorware-map": { source: "apache", extensions: ["aam"] }, "application/x-authorware-seg": { source: "apache", extensions: ["aas"] }, "application/x-bcpio": { source: "apache", extensions: ["bcpio"] }, "application/x-bdoc": { compressible: false, extensions: ["bdoc"] }, "application/x-bittorrent": { source: "apache", extensions: ["torrent"] }, "application/x-blorb": { source: "apache", extensions: ["blb", "blorb"] }, "application/x-bzip": { source: "apache", compressible: false, extensions: ["bz"] }, "application/x-bzip2": { source: "apache", compressible: false, extensions: ["bz2", "boz"] }, "application/x-cbr": { source: "apache", extensions: ["cbr", "cba", "cbt", "cbz", "cb7"] }, "application/x-cdlink": { source: "apache", extensions: ["vcd"] }, "application/x-cfs-compressed": { source: "apache", extensions: ["cfs"] }, "application/x-chat": { source: "apache", extensions: ["chat"] }, "application/x-chess-pgn": { source: "apache", extensions: ["pgn"] }, "application/x-chrome-extension": { extensions: ["crx"] }, "application/x-cocoa": { source: "nginx", extensions: ["cco"] }, "application/x-compress": { source: "apache" }, "application/x-conference": { source: "apache", extensions: ["nsc"] }, "application/x-cpio": { source: "apache", extensions: ["cpio"] }, "application/x-csh": { source: "apache", extensions: ["csh"] }, "application/x-deb": { compressible: false }, "application/x-debian-package": { source: "apache", extensions: ["deb", "udeb"] }, "application/x-dgc-compressed": { source: "apache", extensions: ["dgc"] }, "application/x-director": { source: "apache", extensions: ["dir", "dcr", "dxr", "cst", "cct", "cxt", "w3d", "fgd", "swa"] }, "application/x-doom": { source: "apache", extensions: ["wad"] }, "application/x-dtbncx+xml": { source: "apache", compressible: true, extensions: ["ncx"] }, "application/x-dtbook+xml": { source: "apache", compressible: true, extensions: ["dtb"] }, "application/x-dtbresource+xml": { source: "apache", compressible: true, extensions: ["res"] }, "application/x-dvi": { source: "apache", compressible: false, extensions: ["dvi"] }, "application/x-envoy": { source: "apache", extensions: ["evy"] }, "application/x-eva": { source: "apache", extensions: ["eva"] }, "application/x-font-bdf": { source: "apache", extensions: ["bdf"] }, "application/x-font-dos": { source: "apache" }, "application/x-font-framemaker": { source: "apache" }, "application/x-font-ghostscript": { source: "apache", extensions: ["gsf"] }, "application/x-font-libgrx": { source: "apache" }, "application/x-font-linux-psf": { source: "apache", extensions: ["psf"] }, "application/x-font-pcf": { source: "apache", extensions: ["pcf"] }, "application/x-font-snf": { source: "apache", extensions: ["snf"] }, "application/x-font-speedo": { source: "apache" }, "application/x-font-sunos-news": { source: "apache" }, "application/x-font-type1": { source: "apache", extensions: ["pfa", "pfb", "pfm", "afm"] }, "application/x-font-vfont": { source: "apache" }, "application/x-freearc": { source: "apache", extensions: ["arc"] }, "application/x-futuresplash": { source: "apache", extensions: ["spl"] }, "application/x-gca-compressed": { source: "apache", extensions: ["gca"] }, "application/x-glulx": { source: "apache", extensions: ["ulx"] }, "application/x-gnumeric": { source: "apache", extensions: ["gnumeric"] }, "application/x-gramps-xml": { source: "apache", extensions: ["gramps"] }, "application/x-gtar": { source: "apache", extensions: ["gtar"] }, "application/x-gzip": { source: "apache" }, "application/x-hdf": { source: "apache", extensions: ["hdf"] }, "application/x-httpd-php": { compressible: true, extensions: ["php"] }, "application/x-install-instructions": { source: "apache", extensions: ["install"] }, "application/x-iso9660-image": { source: "apache", extensions: ["iso"] }, "application/x-iwork-keynote-sffkey": { extensions: ["key"] }, "application/x-iwork-numbers-sffnumbers": { extensions: ["numbers"] }, "application/x-iwork-pages-sffpages": { extensions: ["pages"] }, "application/x-java-archive-diff": { source: "nginx", extensions: ["jardiff"] }, "application/x-java-jnlp-file": { source: "apache", compressible: false, extensions: ["jnlp"] }, "application/x-javascript": { compressible: true }, "application/x-keepass2": { extensions: ["kdbx"] }, "application/x-latex": { source: "apache", compressible: false, extensions: ["latex"] }, "application/x-lua-bytecode": { extensions: ["luac"] }, "application/x-lzh-compressed": { source: "apache", extensions: ["lzh", "lha"] }, "application/x-makeself": { source: "nginx", extensions: ["run"] }, "application/x-mie": { source: "apache", extensions: ["mie"] }, "application/x-mobipocket-ebook": { source: "apache", extensions: ["prc", "mobi"] }, "application/x-mpegurl": { compressible: false }, "application/x-ms-application": { source: "apache", extensions: ["application"] }, "application/x-ms-shortcut": { source: "apache", extensions: ["lnk"] }, "application/x-ms-wmd": { source: "apache", extensions: ["wmd"] }, "application/x-ms-wmz": { source: "apache", extensions: ["wmz"] }, "application/x-ms-xbap": { source: "apache", extensions: ["xbap"] }, "application/x-msaccess": { source: "apache", extensions: ["mdb"] }, "application/x-msbinder": { source: "apache", extensions: ["obd"] }, "application/x-mscardfile": { source: "apache", extensions: ["crd"] }, "application/x-msclip": { source: "apache", extensions: ["clp"] }, "application/x-msdos-program": { extensions: ["exe"] }, "application/x-msdownload": { source: "apache", extensions: ["exe", "dll", "com", "bat", "msi"] }, "application/x-msmediaview": { source: "apache", extensions: ["mvb", "m13", "m14"] }, "application/x-msmetafile": { source: "apache", extensions: ["wmf", "wmz", "emf", "emz"] }, "application/x-msmoney": { source: "apache", extensions: ["mny"] }, "application/x-mspublisher": { source: "apache", extensions: ["pub"] }, "application/x-msschedule": { source: "apache", extensions: ["scd"] }, "application/x-msterminal": { source: "apache", extensions: ["trm"] }, "application/x-mswrite": { source: "apache", extensions: ["wri"] }, "application/x-netcdf": { source: "apache", extensions: ["nc", "cdf"] }, "application/x-ns-proxy-autoconfig": { compressible: true, extensions: ["pac"] }, "application/x-nzb": { source: "apache", extensions: ["nzb"] }, "application/x-perl": { source: "nginx", extensions: ["pl", "pm"] }, "application/x-pilot": { source: "nginx", extensions: ["prc", "pdb"] }, "application/x-pkcs12": { source: "apache", compressible: false, extensions: ["p12", "pfx"] }, "application/x-pkcs7-certificates": { source: "apache", extensions: ["p7b", "spc"] }, "application/x-pkcs7-certreqresp": { source: "apache", extensions: ["p7r"] }, "application/x-pki-message": { source: "iana" }, "application/x-rar-compressed": { source: "apache", compressible: false, extensions: ["rar"] }, "application/x-redhat-package-manager": { source: "nginx", extensions: ["rpm"] }, "application/x-research-info-systems": { source: "apache", extensions: ["ris"] }, "application/x-sea": { source: "nginx", extensions: ["sea"] }, "application/x-sh": { source: "apache", compressible: true, extensions: ["sh"] }, "application/x-shar": { source: "apache", extensions: ["shar"] }, "application/x-shockwave-flash": { source: "apache", compressible: false, extensions: ["swf"] }, "application/x-silverlight-app": { source: "apache", extensions: ["xap"] }, "application/x-sql": { source: "apache", extensions: ["sql"] }, "application/x-stuffit": { source: "apache", compressible: false, extensions: ["sit"] }, "application/x-stuffitx": { source: "apache", extensions: ["sitx"] }, "application/x-subrip": { source: "apache", extensions: ["srt"] }, "application/x-sv4cpio": { source: "apache", extensions: ["sv4cpio"] }, "application/x-sv4crc": { source: "apache", extensions: ["sv4crc"] }, "application/x-t3vm-image": { source: "apache", extensions: ["t3"] }, "application/x-tads": { source: "apache", extensions: ["gam"] }, "application/x-tar": { source: "apache", compressible: true, extensions: ["tar"] }, "application/x-tcl": { source: "apache", extensions: ["tcl", "tk"] }, "application/x-tex": { source: "apache", extensions: ["tex"] }, "application/x-tex-tfm": { source: "apache", extensions: ["tfm"] }, "application/x-texinfo": { source: "apache", extensions: ["texinfo", "texi"] }, "application/x-tgif": { source: "apache", extensions: ["obj"] }, "application/x-ustar": { source: "apache", extensions: ["ustar"] }, "application/x-virtualbox-hdd": { compressible: true, extensions: ["hdd"] }, "application/x-virtualbox-ova": { compressible: true, extensions: ["ova"] }, "application/x-virtualbox-ovf": { compressible: true, extensions: ["ovf"] }, "application/x-virtualbox-vbox": { compressible: true, extensions: ["vbox"] }, "application/x-virtualbox-vbox-extpack": { compressible: false, extensions: ["vbox-extpack"] }, "application/x-virtualbox-vdi": { compressible: true, extensions: ["vdi"] }, "application/x-virtualbox-vhd": { compressible: true, extensions: ["vhd"] }, "application/x-virtualbox-vmdk": { compressible: true, extensions: ["vmdk"] }, "application/x-wais-source": { source: "apache", extensions: ["src"] }, "application/x-web-app-manifest+json": { compressible: true, extensions: ["webapp"] }, "application/x-www-form-urlencoded": { source: "iana", compressible: true }, "application/x-x509-ca-cert": { source: "iana", extensions: ["der", "crt", "pem"] }, "application/x-x509-ca-ra-cert": { source: "iana" }, "application/x-x509-next-ca-cert": { source: "iana" }, "application/x-xfig": { source: "apache", extensions: ["fig"] }, "application/x-xliff+xml": { source: "apache", compressible: true, extensions: ["xlf"] }, "application/x-xpinstall": { source: "apache", compressible: false, extensions: ["xpi"] }, "application/x-xz": { source: "apache", extensions: ["xz"] }, "application/x-zmachine": { source: "apache", extensions: ["z1", "z2", "z3", "z4", "z5", "z6", "z7", "z8"] }, "application/x400-bp": { source: "iana" }, "application/xacml+xml": { source: "iana", compressible: true }, "application/xaml+xml": { source: "apache", compressible: true, extensions: ["xaml"] }, "application/xcap-att+xml": { source: "iana", compressible: true, extensions: ["xav"] }, "application/xcap-caps+xml": { source: "iana", compressible: true, extensions: ["xca"] }, "application/xcap-diff+xml": { source: "iana", compressible: true, extensions: ["xdf"] }, "application/xcap-el+xml": { source: "iana", compressible: true, extensions: ["xel"] }, "application/xcap-error+xml": { source: "iana", compressible: true }, "application/xcap-ns+xml": { source: "iana", compressible: true, extensions: ["xns"] }, "application/xcon-conference-info+xml": { source: "iana", compressible: true }, "application/xcon-conference-info-diff+xml": { source: "iana", compressible: true }, "application/xenc+xml": { source: "iana", compressible: true, extensions: ["xenc"] }, "application/xhtml+xml": { source: "iana", compressible: true, extensions: ["xhtml", "xht"] }, "application/xhtml-voice+xml": { source: "apache", compressible: true }, "application/xliff+xml": { source: "iana", compressible: true, extensions: ["xlf"] }, "application/xml": { source: "iana", compressible: true, extensions: ["xml", "xsl", "xsd", "rng"] }, "application/xml-dtd": { source: "iana", compressible: true, extensions: ["dtd"] }, "application/xml-external-parsed-entity": { source: "iana" }, "application/xml-patch+xml": { source: "iana", compressible: true }, "application/xmpp+xml": { source: "iana", compressible: true }, "application/xop+xml": { source: "iana", compressible: true, extensions: ["xop"] }, "application/xproc+xml": { source: "apache", compressible: true, extensions: ["xpl"] }, "application/xslt+xml": { source: "iana", compressible: true, extensions: ["xsl", "xslt"] }, "application/xspf+xml": { source: "apache", compressible: true, extensions: ["xspf"] }, "application/xv+xml": { source: "iana", compressible: true, extensions: ["mxml", "xhvml", "xvml", "xvm"] }, "application/yang": { source: "iana", extensions: ["yang"] }, "application/yang-data+json": { source: "iana", compressible: true }, "application/yang-data+xml": { source: "iana", compressible: true }, "application/yang-patch+json": { source: "iana", compressible: true }, "application/yang-patch+xml": { source: "iana", compressible: true }, "application/yin+xml": { source: "iana", compressible: true, extensions: ["yin"] }, "application/zip": { source: "iana", compressible: false, extensions: ["zip"] }, "application/zlib": { source: "iana" }, "application/zstd": { source: "iana" }, "audio/1d-interleaved-parityfec": { source: "iana" }, "audio/32kadpcm": { source: "iana" }, "audio/3gpp": { source: "iana", compressible: false, extensions: ["3gpp"] }, "audio/3gpp2": { source: "iana" }, "audio/aac": { source: "iana" }, "audio/ac3": { source: "iana" }, "audio/adpcm": { source: "apache", extensions: ["adp"] }, "audio/amr": { source: "iana", extensions: ["amr"] }, "audio/amr-wb": { source: "iana" }, "audio/amr-wb+": { source: "iana" }, "audio/aptx": { source: "iana" }, "audio/asc": { source: "iana" }, "audio/atrac-advanced-lossless": { source: "iana" }, "audio/atrac-x": { source: "iana" }, "audio/atrac3": { source: "iana" }, "audio/basic": { source: "iana", compressible: false, extensions: ["au", "snd"] }, "audio/bv16": { source: "iana" }, "audio/bv32": { source: "iana" }, "audio/clearmode": { source: "iana" }, "audio/cn": { source: "iana" }, "audio/dat12": { source: "iana" }, "audio/dls": { source: "iana" }, "audio/dsr-es201108": { source: "iana" }, "audio/dsr-es202050": { source: "iana" }, "audio/dsr-es202211": { source: "iana" }, "audio/dsr-es202212": { source: "iana" }, "audio/dv": { source: "iana" }, "audio/dvi4": { source: "iana" }, "audio/eac3": { source: "iana" }, "audio/encaprtp": { source: "iana" }, "audio/evrc": { source: "iana" }, "audio/evrc-qcp": { source: "iana" }, "audio/evrc0": { source: "iana" }, "audio/evrc1": { source: "iana" }, "audio/evrcb": { source: "iana" }, "audio/evrcb0": { source: "iana" }, "audio/evrcb1": { source: "iana" }, "audio/evrcnw": { source: "iana" }, "audio/evrcnw0": { source: "iana" }, "audio/evrcnw1": { source: "iana" }, "audio/evrcwb": { source: "iana" }, "audio/evrcwb0": { source: "iana" }, "audio/evrcwb1": { source: "iana" }, "audio/evs": { source: "iana" }, "audio/flexfec": { source: "iana" }, "audio/fwdred": { source: "iana" }, "audio/g711-0": { source: "iana" }, "audio/g719": { source: "iana" }, "audio/g722": { source: "iana" }, "audio/g7221": { source: "iana" }, "audio/g723": { source: "iana" }, "audio/g726-16": { source: "iana" }, "audio/g726-24": { source: "iana" }, "audio/g726-32": { source: "iana" }, "audio/g726-40": { source: "iana" }, "audio/g728": { source: "iana" }, "audio/g729": { source: "iana" }, "audio/g7291": { source: "iana" }, "audio/g729d": { source: "iana" }, "audio/g729e": { source: "iana" }, "audio/gsm": { source: "iana" }, "audio/gsm-efr": { source: "iana" }, "audio/gsm-hr-08": { source: "iana" }, "audio/ilbc": { source: "iana" }, "audio/ip-mr_v2.5": { source: "iana" }, "audio/isac": { source: "apache" }, "audio/l16": { source: "iana" }, "audio/l20": { source: "iana" }, "audio/l24": { source: "iana", compressible: false }, "audio/l8": { source: "iana" }, "audio/lpc": { source: "iana" }, "audio/melp": { source: "iana" }, "audio/melp1200": { source: "iana" }, "audio/melp2400": { source: "iana" }, "audio/melp600": { source: "iana" }, "audio/mhas": { source: "iana" }, "audio/midi": { source: "apache", extensions: ["mid", "midi", "kar", "rmi"] }, "audio/mobile-xmf": { source: "iana", extensions: ["mxmf"] }, "audio/mp3": { compressible: false, extensions: ["mp3"] }, "audio/mp4": { source: "iana", compressible: false, extensions: ["m4a", "mp4a"] }, "audio/mp4a-latm": { source: "iana" }, "audio/mpa": { source: "iana" }, "audio/mpa-robust": { source: "iana" }, "audio/mpeg": { source: "iana", compressible: false, extensions: ["mpga", "mp2", "mp2a", "mp3", "m2a", "m3a"] }, "audio/mpeg4-generic": { source: "iana" }, "audio/musepack": { source: "apache" }, "audio/ogg": { source: "iana", compressible: false, extensions: ["oga", "ogg", "spx", "opus"] }, "audio/opus": { source: "iana" }, "audio/parityfec": { source: "iana" }, "audio/pcma": { source: "iana" }, "audio/pcma-wb": { source: "iana" }, "audio/pcmu": { source: "iana" }, "audio/pcmu-wb": { source: "iana" }, "audio/prs.sid": { source: "iana" }, "audio/qcelp": { source: "iana" }, "audio/raptorfec": { source: "iana" }, "audio/red": { source: "iana" }, "audio/rtp-enc-aescm128": { source: "iana" }, "audio/rtp-midi": { source: "iana" }, "audio/rtploopback": { source: "iana" }, "audio/rtx": { source: "iana" }, "audio/s3m": { source: "apache", extensions: ["s3m"] }, "audio/scip": { source: "iana" }, "audio/silk": { source: "apache", extensions: ["sil"] }, "audio/smv": { source: "iana" }, "audio/smv-qcp": { source: "iana" }, "audio/smv0": { source: "iana" }, "audio/sofa": { source: "iana" }, "audio/sp-midi": { source: "iana" }, "audio/speex": { source: "iana" }, "audio/t140c": { source: "iana" }, "audio/t38": { source: "iana" }, "audio/telephone-event": { source: "iana" }, "audio/tetra_acelp": { source: "iana" }, "audio/tetra_acelp_bb": { source: "iana" }, "audio/tone": { source: "iana" }, "audio/tsvcis": { source: "iana" }, "audio/uemclip": { source: "iana" }, "audio/ulpfec": { source: "iana" }, "audio/usac": { source: "iana" }, "audio/vdvi": { source: "iana" }, "audio/vmr-wb": { source: "iana" }, "audio/vnd.3gpp.iufp": { source: "iana" }, "audio/vnd.4sb": { source: "iana" }, "audio/vnd.audiokoz": { source: "iana" }, "audio/vnd.celp": { source: "iana" }, "audio/vnd.cisco.nse": { source: "iana" }, "audio/vnd.cmles.radio-events": { source: "iana" }, "audio/vnd.cns.anp1": { source: "iana" }, "audio/vnd.cns.inf1": { source: "iana" }, "audio/vnd.dece.audio": { source: "iana", extensions: ["uva", "uvva"] }, "audio/vnd.digital-winds": { source: "iana", extensions: ["eol"] }, "audio/vnd.dlna.adts": { source: "iana" }, "audio/vnd.dolby.heaac.1": { source: "iana" }, "audio/vnd.dolby.heaac.2": { source: "iana" }, "audio/vnd.dolby.mlp": { source: "iana" }, "audio/vnd.dolby.mps": { source: "iana" }, "audio/vnd.dolby.pl2": { source: "iana" }, "audio/vnd.dolby.pl2x": { source: "iana" }, "audio/vnd.dolby.pl2z": { source: "iana" }, "audio/vnd.dolby.pulse.1": { source: "iana" }, "audio/vnd.dra": { source: "iana", extensions: ["dra"] }, "audio/vnd.dts": { source: "iana", extensions: ["dts"] }, "audio/vnd.dts.hd": { source: "iana", extensions: ["dtshd"] }, "audio/vnd.dts.uhd": { source: "iana" }, "audio/vnd.dvb.file": { source: "iana" }, "audio/vnd.everad.plj": { source: "iana" }, "audio/vnd.hns.audio": { source: "iana" }, "audio/vnd.lucent.voice": { source: "iana", extensions: ["lvp"] }, "audio/vnd.ms-playready.media.pya": { source: "iana", extensions: ["pya"] }, "audio/vnd.nokia.mobile-xmf": { source: "iana" }, "audio/vnd.nortel.vbk": { source: "iana" }, "audio/vnd.nuera.ecelp4800": { source: "iana", extensions: ["ecelp4800"] }, "audio/vnd.nuera.ecelp7470": { source: "iana", extensions: ["ecelp7470"] }, "audio/vnd.nuera.ecelp9600": { source: "iana", extensions: ["ecelp9600"] }, "audio/vnd.octel.sbc": { source: "iana" }, "audio/vnd.presonus.multitrack": { source: "iana" }, "audio/vnd.qcelp": { source: "iana" }, "audio/vnd.rhetorex.32kadpcm": { source: "iana" }, "audio/vnd.rip": { source: "iana", extensions: ["rip"] }, "audio/vnd.rn-realaudio": { compressible: false }, "audio/vnd.sealedmedia.softseal.mpeg": { source: "iana" }, "audio/vnd.vmx.cvsd": { source: "iana" }, "audio/vnd.wave": { compressible: false }, "audio/vorbis": { source: "iana", compressible: false }, "audio/vorbis-config": { source: "iana" }, "audio/wav": { compressible: false, extensions: ["wav"] }, "audio/wave": { compressible: false, extensions: ["wav"] }, "audio/webm": { source: "apache", compressible: false, extensions: ["weba"] }, "audio/x-aac": { source: "apache", compressible: false, extensions: ["aac"] }, "audio/x-aiff": { source: "apache", extensions: ["aif", "aiff", "aifc"] }, "audio/x-caf": { source: "apache", compressible: false, extensions: ["caf"] }, "audio/x-flac": { source: "apache", extensions: ["flac"] }, "audio/x-m4a": { source: "nginx", extensions: ["m4a"] }, "audio/x-matroska": { source: "apache", extensions: ["mka"] }, "audio/x-mpegurl": { source: "apache", extensions: ["m3u"] }, "audio/x-ms-wax": { source: "apache", extensions: ["wax"] }, "audio/x-ms-wma": { source: "apache", extensions: ["wma"] }, "audio/x-pn-realaudio": { source: "apache", extensions: ["ram", "ra"] }, "audio/x-pn-realaudio-plugin": { source: "apache", extensions: ["rmp"] }, "audio/x-realaudio": { source: "nginx", extensions: ["ra"] }, "audio/x-tta": { source: "apache" }, "audio/x-wav": { source: "apache", extensions: ["wav"] }, "audio/xm": { source: "apache", extensions: ["xm"] }, "chemical/x-cdx": { source: "apache", extensions: ["cdx"] }, "chemical/x-cif": { source: "apache", extensions: ["cif"] }, "chemical/x-cmdf": { source: "apache", extensions: ["cmdf"] }, "chemical/x-cml": { source: "apache", extensions: ["cml"] }, "chemical/x-csml": { source: "apache", extensions: ["csml"] }, "chemical/x-pdb": { source: "apache" }, "chemical/x-xyz": { source: "apache", extensions: ["xyz"] }, "font/collection": { source: "iana", extensions: ["ttc"] }, "font/otf": { source: "iana", compressible: true, extensions: ["otf"] }, "font/sfnt": { source: "iana" }, "font/ttf": { source: "iana", compressible: true, extensions: ["ttf"] }, "font/woff": { source: "iana", extensions: ["woff"] }, "font/woff2": { source: "iana", extensions: ["woff2"] }, "image/aces": { source: "iana", extensions: ["exr"] }, "image/apng": { compressible: false, extensions: ["apng"] }, "image/avci": { source: "iana", extensions: ["avci"] }, "image/avcs": { source: "iana", extensions: ["avcs"] }, "image/avif": { source: "iana", compressible: false, extensions: ["avif"] }, "image/bmp": { source: "iana", compressible: true, extensions: ["bmp"] }, "image/cgm": { source: "iana", extensions: ["cgm"] }, "image/dicom-rle": { source: "iana", extensions: ["drle"] }, "image/emf": { source: "iana", extensions: ["emf"] }, "image/fits": { source: "iana", extensions: ["fits"] }, "image/g3fax": { source: "iana", extensions: ["g3"] }, "image/gif": { source: "iana", compressible: false, extensions: ["gif"] }, "image/heic": { source: "iana", extensions: ["heic"] }, "image/heic-sequence": { source: "iana", extensions: ["heics"] }, "image/heif": { source: "iana", extensions: ["heif"] }, "image/heif-sequence": { source: "iana", extensions: ["heifs"] }, "image/hej2k": { source: "iana", extensions: ["hej2"] }, "image/hsj2": { source: "iana", extensions: ["hsj2"] }, "image/ief": { source: "iana", extensions: ["ief"] }, "image/jls": { source: "iana", extensions: ["jls"] }, "image/jp2": { source: "iana", compressible: false, extensions: ["jp2", "jpg2"] }, "image/jpeg": { source: "iana", compressible: false, extensions: ["jpeg", "jpg", "jpe"] }, "image/jph": { source: "iana", extensions: ["jph"] }, "image/jphc": { source: "iana", extensions: ["jhc"] }, "image/jpm": { source: "iana", compressible: false, extensions: ["jpm"] }, "image/jpx": { source: "iana", compressible: false, extensions: ["jpx", "jpf"] }, "image/jxr": { source: "iana", extensions: ["jxr"] }, "image/jxra": { source: "iana", extensions: ["jxra"] }, "image/jxrs": { source: "iana", extensions: ["jxrs"] }, "image/jxs": { source: "iana", extensions: ["jxs"] }, "image/jxsc": { source: "iana", extensions: ["jxsc"] }, "image/jxsi": { source: "iana", extensions: ["jxsi"] }, "image/jxss": { source: "iana", extensions: ["jxss"] }, "image/ktx": { source: "iana", extensions: ["ktx"] }, "image/ktx2": { source: "iana", extensions: ["ktx2"] }, "image/naplps": { source: "iana" }, "image/pjpeg": { compressible: false }, "image/png": { source: "iana", compressible: false, extensions: ["png"] }, "image/prs.btif": { source: "iana", extensions: ["btif"] }, "image/prs.pti": { source: "iana", extensions: ["pti"] }, "image/pwg-raster": { source: "iana" }, "image/sgi": { source: "apache", extensions: ["sgi"] }, "image/svg+xml": { source: "iana", compressible: true, extensions: ["svg", "svgz"] }, "image/t38": { source: "iana", extensions: ["t38"] }, "image/tiff": { source: "iana", compressible: false, extensions: ["tif", "tiff"] }, "image/tiff-fx": { source: "iana", extensions: ["tfx"] }, "image/vnd.adobe.photoshop": { source: "iana", compressible: true, extensions: ["psd"] }, "image/vnd.airzip.accelerator.azv": { source: "iana", extensions: ["azv"] }, "image/vnd.cns.inf2": { source: "iana" }, "image/vnd.dece.graphic": { source: "iana", extensions: ["uvi", "uvvi", "uvg", "uvvg"] }, "image/vnd.djvu": { source: "iana", extensions: ["djvu", "djv"] }, "image/vnd.dvb.subtitle": { source: "iana", extensions: ["sub"] }, "image/vnd.dwg": { source: "iana", extensions: ["dwg"] }, "image/vnd.dxf": { source: "iana", extensions: ["dxf"] }, "image/vnd.fastbidsheet": { source: "iana", extensions: ["fbs"] }, "image/vnd.fpx": { source: "iana", extensions: ["fpx"] }, "image/vnd.fst": { source: "iana", extensions: ["fst"] }, "image/vnd.fujixerox.edmics-mmr": { source: "iana", extensions: ["mmr"] }, "image/vnd.fujixerox.edmics-rlc": { source: "iana", extensions: ["rlc"] }, "image/vnd.globalgraphics.pgb": { source: "iana" }, "image/vnd.microsoft.icon": { source: "iana", compressible: true, extensions: ["ico"] }, "image/vnd.mix": { source: "iana" }, "image/vnd.mozilla.apng": { source: "iana" }, "image/vnd.ms-dds": { compressible: true, extensions: ["dds"] }, "image/vnd.ms-modi": { source: "iana", extensions: ["mdi"] }, "image/vnd.ms-photo": { source: "apache", extensions: ["wdp"] }, "image/vnd.net-fpx": { source: "iana", extensions: ["npx"] }, "image/vnd.pco.b16": { source: "iana", extensions: ["b16"] }, "image/vnd.radiance": { source: "iana" }, "image/vnd.sealed.png": { source: "iana" }, "image/vnd.sealedmedia.softseal.gif": { source: "iana" }, "image/vnd.sealedmedia.softseal.jpg": { source: "iana" }, "image/vnd.svf": { source: "iana" }, "image/vnd.tencent.tap": { source: "iana", extensions: ["tap"] }, "image/vnd.valve.source.texture": { source: "iana", extensions: ["vtf"] }, "image/vnd.wap.wbmp": { source: "iana", extensions: ["wbmp"] }, "image/vnd.xiff": { source: "iana", extensions: ["xif"] }, "image/vnd.zbrush.pcx": { source: "iana", extensions: ["pcx"] }, "image/webp": { source: "apache", extensions: ["webp"] }, "image/wmf": { source: "iana", extensions: ["wmf"] }, "image/x-3ds": { source: "apache", extensions: ["3ds"] }, "image/x-cmu-raster": { source: "apache", extensions: ["ras"] }, "image/x-cmx": { source: "apache", extensions: ["cmx"] }, "image/x-freehand": { source: "apache", extensions: ["fh", "fhc", "fh4", "fh5", "fh7"] }, "image/x-icon": { source: "apache", compressible: true, extensions: ["ico"] }, "image/x-jng": { source: "nginx", extensions: ["jng"] }, "image/x-mrsid-image": { source: "apache", extensions: ["sid"] }, "image/x-ms-bmp": { source: "nginx", compressible: true, extensions: ["bmp"] }, "image/x-pcx": { source: "apache", extensions: ["pcx"] }, "image/x-pict": { source: "apache", extensions: ["pic", "pct"] }, "image/x-portable-anymap": { source: "apache", extensions: ["pnm"] }, "image/x-portable-bitmap": { source: "apache", extensions: ["pbm"] }, "image/x-portable-graymap": { source: "apache", extensions: ["pgm"] }, "image/x-portable-pixmap": { source: "apache", extensions: ["ppm"] }, "image/x-rgb": { source: "apache", extensions: ["rgb"] }, "image/x-tga": { source: "apache", extensions: ["tga"] }, "image/x-xbitmap": { source: "apache", extensions: ["xbm"] }, "image/x-xcf": { compressible: false }, "image/x-xpixmap": { source: "apache", extensions: ["xpm"] }, "image/x-xwindowdump": { source: "apache", extensions: ["xwd"] }, "message/cpim": { source: "iana" }, "message/delivery-status": { source: "iana" }, "message/disposition-notification": { source: "iana", extensions: ["disposition-notification"] }, "message/external-body": { source: "iana" }, "message/feedback-report": { source: "iana" }, "message/global": { source: "iana", extensions: ["u8msg"] }, "message/global-delivery-status": { source: "iana", extensions: ["u8dsn"] }, "message/global-disposition-notification": { source: "iana", extensions: ["u8mdn"] }, "message/global-headers": { source: "iana", extensions: ["u8hdr"] }, "message/http": { source: "iana", compressible: false }, "message/imdn+xml": { source: "iana", compressible: true }, "message/news": { source: "iana" }, "message/partial": { source: "iana", compressible: false }, "message/rfc822": { source: "iana", compressible: true, extensions: ["eml", "mime"] }, "message/s-http": { source: "iana" }, "message/sip": { source: "iana" }, "message/sipfrag": { source: "iana" }, "message/tracking-status": { source: "iana" }, "message/vnd.si.simp": { source: "iana" }, "message/vnd.wfa.wsc": { source: "iana", extensions: ["wsc"] }, "model/3mf": { source: "iana", extensions: ["3mf"] }, "model/e57": { source: "iana" }, "model/gltf+json": { source: "iana", compressible: true, extensions: ["gltf"] }, "model/gltf-binary": { source: "iana", compressible: true, extensions: ["glb"] }, "model/iges": { source: "iana", compressible: false, extensions: ["igs", "iges"] }, "model/mesh": { source: "iana", compressible: false, extensions: ["msh", "mesh", "silo"] }, "model/mtl": { source: "iana", extensions: ["mtl"] }, "model/obj": { source: "iana", extensions: ["obj"] }, "model/step": { source: "iana" }, "model/step+xml": { source: "iana", compressible: true, extensions: ["stpx"] }, "model/step+zip": { source: "iana", compressible: false, extensions: ["stpz"] }, "model/step-xml+zip": { source: "iana", compressible: false, extensions: ["stpxz"] }, "model/stl": { source: "iana", extensions: ["stl"] }, "model/vnd.collada+xml": { source: "iana", compressible: true, extensions: ["dae"] }, "model/vnd.dwf": { source: "iana", extensions: ["dwf"] }, "model/vnd.flatland.3dml": { source: "iana" }, "model/vnd.gdl": { source: "iana", extensions: ["gdl"] }, "model/vnd.gs-gdl": { source: "apache" }, "model/vnd.gs.gdl": { source: "iana" }, "model/vnd.gtw": { source: "iana", extensions: ["gtw"] }, "model/vnd.moml+xml": { source: "iana", compressible: true }, "model/vnd.mts": { source: "iana", extensions: ["mts"] }, "model/vnd.opengex": { source: "iana", extensions: ["ogex"] }, "model/vnd.parasolid.transmit.binary": { source: "iana", extensions: ["x_b"] }, "model/vnd.parasolid.transmit.text": { source: "iana", extensions: ["x_t"] }, "model/vnd.pytha.pyox": { source: "iana" }, "model/vnd.rosette.annotated-data-model": { source: "iana" }, "model/vnd.sap.vds": { source: "iana", extensions: ["vds"] }, "model/vnd.usdz+zip": { source: "iana", compressible: false, extensions: ["usdz"] }, "model/vnd.valve.source.compiled-map": { source: "iana", extensions: ["bsp"] }, "model/vnd.vtu": { source: "iana", extensions: ["vtu"] }, "model/vrml": { source: "iana", compressible: false, extensions: ["wrl", "vrml"] }, "model/x3d+binary": { source: "apache", compressible: false, extensions: ["x3db", "x3dbz"] }, "model/x3d+fastinfoset": { source: "iana", extensions: ["x3db"] }, "model/x3d+vrml": { source: "apache", compressible: false, extensions: ["x3dv", "x3dvz"] }, "model/x3d+xml": { source: "iana", compressible: true, extensions: ["x3d", "x3dz"] }, "model/x3d-vrml": { source: "iana", extensions: ["x3dv"] }, "multipart/alternative": { source: "iana", compressible: false }, "multipart/appledouble": { source: "iana" }, "multipart/byteranges": { source: "iana" }, "multipart/digest": { source: "iana" }, "multipart/encrypted": { source: "iana", compressible: false }, "multipart/form-data": { source: "iana", compressible: false }, "multipart/header-set": { source: "iana" }, "multipart/mixed": { source: "iana" }, "multipart/multilingual": { source: "iana" }, "multipart/parallel": { source: "iana" }, "multipart/related": { source: "iana", compressible: false }, "multipart/report": { source: "iana" }, "multipart/signed": { source: "iana", compressible: false }, "multipart/vnd.bint.med-plus": { source: "iana" }, "multipart/voice-message": { source: "iana" }, "multipart/x-mixed-replace": { source: "iana" }, "text/1d-interleaved-parityfec": { source: "iana" }, "text/cache-manifest": { source: "iana", compressible: true, extensions: ["appcache", "manifest"] }, "text/calendar": { source: "iana", extensions: ["ics", "ifb"] }, "text/calender": { compressible: true }, "text/cmd": { compressible: true }, "text/coffeescript": { extensions: ["coffee", "litcoffee"] }, "text/cql": { source: "iana" }, "text/cql-expression": { source: "iana" }, "text/cql-identifier": { source: "iana" }, "text/css": { source: "iana", charset: "UTF-8", compressible: true, extensions: ["css"] }, "text/csv": { source: "iana", compressible: true, extensions: ["csv"] }, "text/csv-schema": { source: "iana" }, "text/directory": { source: "iana" }, "text/dns": { source: "iana" }, "text/ecmascript": { source: "iana" }, "text/encaprtp": { source: "iana" }, "text/enriched": { source: "iana" }, "text/fhirpath": { source: "iana" }, "text/flexfec": { source: "iana" }, "text/fwdred": { source: "iana" }, "text/gff3": { source: "iana" }, "text/grammar-ref-list": { source: "iana" }, "text/html": { source: "iana", compressible: true, extensions: ["html", "htm", "shtml"] }, "text/jade": { extensions: ["jade"] }, "text/javascript": { source: "iana", compressible: true }, "text/jcr-cnd": { source: "iana" }, "text/jsx": { compressible: true, extensions: ["jsx"] }, "text/less": { compressible: true, extensions: ["less"] }, "text/markdown": { source: "iana", compressible: true, extensions: ["markdown", "md"] }, "text/mathml": { source: "nginx", extensions: ["mml"] }, "text/mdx": { compressible: true, extensions: ["mdx"] }, "text/mizar": { source: "iana" }, "text/n3": { source: "iana", charset: "UTF-8", compressible: true, extensions: ["n3"] }, "text/parameters": { source: "iana", charset: "UTF-8" }, "text/parityfec": { source: "iana" }, "text/plain": { source: "iana", compressible: true, extensions: ["txt", "text", "conf", "def", "list", "log", "in", "ini"] }, "text/provenance-notation": { source: "iana", charset: "UTF-8" }, "text/prs.fallenstein.rst": { source: "iana" }, "text/prs.lines.tag": { source: "iana", extensions: ["dsc"] }, "text/prs.prop.logic": { source: "iana" }, "text/raptorfec": { source: "iana" }, "text/red": { source: "iana" }, "text/rfc822-headers": { source: "iana" }, "text/richtext": { source: "iana", compressible: true, extensions: ["rtx"] }, "text/rtf": { source: "iana", compressible: true, extensions: ["rtf"] }, "text/rtp-enc-aescm128": { source: "iana" }, "text/rtploopback": { source: "iana" }, "text/rtx": { source: "iana" }, "text/sgml": { source: "iana", extensions: ["sgml", "sgm"] }, "text/shaclc": { source: "iana" }, "text/shex": { source: "iana", extensions: ["shex"] }, "text/slim": { extensions: ["slim", "slm"] }, "text/spdx": { source: "iana", extensions: ["spdx"] }, "text/strings": { source: "iana" }, "text/stylus": { extensions: ["stylus", "styl"] }, "text/t140": { source: "iana" }, "text/tab-separated-values": { source: "iana", compressible: true, extensions: ["tsv"] }, "text/troff": { source: "iana", extensions: ["t", "tr", "roff", "man", "me", "ms"] }, "text/turtle": { source: "iana", charset: "UTF-8", extensions: ["ttl"] }, "text/ulpfec": { source: "iana" }, "text/uri-list": { source: "iana", compressible: true, extensions: ["uri", "uris", "urls"] }, "text/vcard": { source: "iana", compressible: true, extensions: ["vcard"] }, "text/vnd.a": { source: "iana" }, "text/vnd.abc": { source: "iana" }, "text/vnd.ascii-art": { source: "iana" }, "text/vnd.curl": { source: "iana", extensions: ["curl"] }, "text/vnd.curl.dcurl": { source: "apache", extensions: ["dcurl"] }, "text/vnd.curl.mcurl": { source: "apache", extensions: ["mcurl"] }, "text/vnd.curl.scurl": { source: "apache", extensions: ["scurl"] }, "text/vnd.debian.copyright": { source: "iana", charset: "UTF-8" }, "text/vnd.dmclientscript": { source: "iana" }, "text/vnd.dvb.subtitle": { source: "iana", extensions: ["sub"] }, "text/vnd.esmertec.theme-descriptor": { source: "iana", charset: "UTF-8" }, "text/vnd.familysearch.gedcom": { source: "iana", extensions: ["ged"] }, "text/vnd.ficlab.flt": { source: "iana" }, "text/vnd.fly": { source: "iana", extensions: ["fly"] }, "text/vnd.fmi.flexstor": { source: "iana", extensions: ["flx"] }, "text/vnd.gml": { source: "iana" }, "text/vnd.graphviz": { source: "iana", extensions: ["gv"] }, "text/vnd.hans": { source: "iana" }, "text/vnd.hgl": { source: "iana" }, "text/vnd.in3d.3dml": { source: "iana", extensions: ["3dml"] }, "text/vnd.in3d.spot": { source: "iana", extensions: ["spot"] }, "text/vnd.iptc.newsml": { source: "iana" }, "text/vnd.iptc.nitf": { source: "iana" }, "text/vnd.latex-z": { source: "iana" }, "text/vnd.motorola.reflex": { source: "iana" }, "text/vnd.ms-mediapackage": { source: "iana" }, "text/vnd.net2phone.commcenter.command": { source: "iana" }, "text/vnd.radisys.msml-basic-layout": { source: "iana" }, "text/vnd.senx.warpscript": { source: "iana" }, "text/vnd.si.uricatalogue": { source: "iana" }, "text/vnd.sosi": { source: "iana" }, "text/vnd.sun.j2me.app-descriptor": { source: "iana", charset: "UTF-8", extensions: ["jad"] }, "text/vnd.trolltech.linguist": { source: "iana", charset: "UTF-8" }, "text/vnd.wap.si": { source: "iana" }, "text/vnd.wap.sl": { source: "iana" }, "text/vnd.wap.wml": { source: "iana", extensions: ["wml"] }, "text/vnd.wap.wmlscript": { source: "iana", extensions: ["wmls"] }, "text/vtt": { source: "iana", charset: "UTF-8", compressible: true, extensions: ["vtt"] }, "text/x-asm": { source: "apache", extensions: ["s", "asm"] }, "text/x-c": { source: "apache", extensions: ["c", "cc", "cxx", "cpp", "h", "hh", "dic"] }, "text/x-component": { source: "nginx", extensions: ["htc"] }, "text/x-fortran": { source: "apache", extensions: ["f", "for", "f77", "f90"] }, "text/x-gwt-rpc": { compressible: true }, "text/x-handlebars-template": { extensions: ["hbs"] }, "text/x-java-source": { source: "apache", extensions: ["java"] }, "text/x-jquery-tmpl": { compressible: true }, "text/x-lua": { extensions: ["lua"] }, "text/x-markdown": { compressible: true, extensions: ["mkd"] }, "text/x-nfo": { source: "apache", extensions: ["nfo"] }, "text/x-opml": { source: "apache", extensions: ["opml"] }, "text/x-org": { compressible: true, extensions: ["org"] }, "text/x-pascal": { source: "apache", extensions: ["p", "pas"] }, "text/x-processing": { compressible: true, extensions: ["pde"] }, "text/x-sass": { extensions: ["sass"] }, "text/x-scss": { extensions: ["scss"] }, "text/x-setext": { source: "apache", extensions: ["etx"] }, "text/x-sfv": { source: "apache", extensions: ["sfv"] }, "text/x-suse-ymp": { compressible: true, extensions: ["ymp"] }, "text/x-uuencode": { source: "apache", extensions: ["uu"] }, "text/x-vcalendar": { source: "apache", extensions: ["vcs"] }, "text/x-vcard": { source: "apache", extensions: ["vcf"] }, "text/xml": { source: "iana", compressible: true, extensions: ["xml"] }, "text/xml-external-parsed-entity": { source: "iana" }, "text/yaml": { compressible: true, extensions: ["yaml", "yml"] }, "video/1d-interleaved-parityfec": { source: "iana" }, "video/3gpp": { source: "iana", extensions: ["3gp", "3gpp"] }, "video/3gpp-tt": { source: "iana" }, "video/3gpp2": { source: "iana", extensions: ["3g2"] }, "video/av1": { source: "iana" }, "video/bmpeg": { source: "iana" }, "video/bt656": { source: "iana" }, "video/celb": { source: "iana" }, "video/dv": { source: "iana" }, "video/encaprtp": { source: "iana" }, "video/ffv1": { source: "iana" }, "video/flexfec": { source: "iana" }, "video/h261": { source: "iana", extensions: ["h261"] }, "video/h263": { source: "iana", extensions: ["h263"] }, "video/h263-1998": { source: "iana" }, "video/h263-2000": { source: "iana" }, "video/h264": { source: "iana", extensions: ["h264"] }, "video/h264-rcdo": { source: "iana" }, "video/h264-svc": { source: "iana" }, "video/h265": { source: "iana" }, "video/iso.segment": { source: "iana", extensions: ["m4s"] }, "video/jpeg": { source: "iana", extensions: ["jpgv"] }, "video/jpeg2000": { source: "iana" }, "video/jpm": { source: "apache", extensions: ["jpm", "jpgm"] }, "video/jxsv": { source: "iana" }, "video/mj2": { source: "iana", extensions: ["mj2", "mjp2"] }, "video/mp1s": { source: "iana" }, "video/mp2p": { source: "iana" }, "video/mp2t": { source: "iana", extensions: ["ts"] }, "video/mp4": { source: "iana", compressible: false, extensions: ["mp4", "mp4v", "mpg4"] }, "video/mp4v-es": { source: "iana" }, "video/mpeg": { source: "iana", compressible: false, extensions: ["mpeg", "mpg", "mpe", "m1v", "m2v"] }, "video/mpeg4-generic": { source: "iana" }, "video/mpv": { source: "iana" }, "video/nv": { source: "iana" }, "video/ogg": { source: "iana", compressible: false, extensions: ["ogv"] }, "video/parityfec": { source: "iana" }, "video/pointer": { source: "iana" }, "video/quicktime": { source: "iana", compressible: false, extensions: ["qt", "mov"] }, "video/raptorfec": { source: "iana" }, "video/raw": { source: "iana" }, "video/rtp-enc-aescm128": { source: "iana" }, "video/rtploopback": { source: "iana" }, "video/rtx": { source: "iana" }, "video/scip": { source: "iana" }, "video/smpte291": { source: "iana" }, "video/smpte292m": { source: "iana" }, "video/ulpfec": { source: "iana" }, "video/vc1": { source: "iana" }, "video/vc2": { source: "iana" }, "video/vnd.cctv": { source: "iana" }, "video/vnd.dece.hd": { source: "iana", extensions: ["uvh", "uvvh"] }, "video/vnd.dece.mobile": { source: "iana", extensions: ["uvm", "uvvm"] }, "video/vnd.dece.mp4": { source: "iana" }, "video/vnd.dece.pd": { source: "iana", extensions: ["uvp", "uvvp"] }, "video/vnd.dece.sd": { source: "iana", extensions: ["uvs", "uvvs"] }, "video/vnd.dece.video": { source: "iana", extensions: ["uvv", "uvvv"] }, "video/vnd.directv.mpeg": { source: "iana" }, "video/vnd.directv.mpeg-tts": { source: "iana" }, "video/vnd.dlna.mpeg-tts": { source: "iana" }, "video/vnd.dvb.file": { source: "iana", extensions: ["dvb"] }, "video/vnd.fvt": { source: "iana", extensions: ["fvt"] }, "video/vnd.hns.video": { source: "iana" }, "video/vnd.iptvforum.1dparityfec-1010": { source: "iana" }, "video/vnd.iptvforum.1dparityfec-2005": { source: "iana" }, "video/vnd.iptvforum.2dparityfec-1010": { source: "iana" }, "video/vnd.iptvforum.2dparityfec-2005": { source: "iana" }, "video/vnd.iptvforum.ttsavc": { source: "iana" }, "video/vnd.iptvforum.ttsmpeg2": { source: "iana" }, "video/vnd.motorola.video": { source: "iana" }, "video/vnd.motorola.videop": { source: "iana" }, "video/vnd.mpegurl": { source: "iana", extensions: ["mxu", "m4u"] }, "video/vnd.ms-playready.media.pyv": { source: "iana", extensions: ["pyv"] }, "video/vnd.nokia.interleaved-multimedia": { source: "iana" }, "video/vnd.nokia.mp4vr": { source: "iana" }, "video/vnd.nokia.videovoip": { source: "iana" }, "video/vnd.objectvideo": { source: "iana" }, "video/vnd.radgamettools.bink": { source: "iana" }, "video/vnd.radgamettools.smacker": { source: "iana" }, "video/vnd.sealed.mpeg1": { source: "iana" }, "video/vnd.sealed.mpeg4": { source: "iana" }, "video/vnd.sealed.swf": { source: "iana" }, "video/vnd.sealedmedia.softseal.mov": { source: "iana" }, "video/vnd.uvvu.mp4": { source: "iana", extensions: ["uvu", "uvvu"] }, "video/vnd.vivo": { source: "iana", extensions: ["viv"] }, "video/vnd.youtube.yt": { source: "iana" }, "video/vp8": { source: "iana" }, "video/vp9": { source: "iana" }, "video/webm": { source: "apache", compressible: false, extensions: ["webm"] }, "video/x-f4v": { source: "apache", extensions: ["f4v"] }, "video/x-fli": { source: "apache", extensions: ["fli"] }, "video/x-flv": { source: "apache", compressible: false, extensions: ["flv"] }, "video/x-m4v": { source: "apache", extensions: ["m4v"] }, "video/x-matroska": { source: "apache", compressible: false, extensions: ["mkv", "mk3d", "mks"] }, "video/x-mng": { source: "apache", extensions: ["mng"] }, "video/x-ms-asf": { source: "apache", extensions: ["asf", "asx"] }, "video/x-ms-vob": { source: "apache", extensions: ["vob"] }, "video/x-ms-wm": { source: "apache", extensions: ["wm"] }, "video/x-ms-wmv": { source: "apache", compressible: false, extensions: ["wmv"] }, "video/x-ms-wmx": { source: "apache", extensions: ["wmx"] }, "video/x-ms-wvx": { source: "apache", extensions: ["wvx"] }, "video/x-msvideo": { source: "apache", extensions: ["avi"] }, "video/x-sgi-movie": { source: "apache", extensions: ["movie"] }, "video/x-smv": { source: "apache", extensions: ["smv"] }, "x-conference/x-cooltalk": { source: "apache", extensions: ["ice"] }, "x-shader/x-fragment": { compressible: true }, "x-shader/x-vertex": { compressible: true } }; +}); +var z4 = g((cde, I4) => { + I4.exports = T4(); +}); +var ad = g((Wt) => { + "use strict"; + var od = z4(), KU = O("path").extname, P4 = /^\s*([^;\s]*)(?:;|\s|$)/, XU = /^text\//i; + Wt.charset = j4; + Wt.charsets = { lookup: j4 }; + Wt.contentType = YU; + Wt.extension = QU; + Wt.extensions = /* @__PURE__ */ Object.create(null); + Wt.lookup = eL; + Wt.types = /* @__PURE__ */ Object.create(null); + tL(Wt.extensions, Wt.types); + function j4(e21) { + if (!e21 || typeof e21 != "string") return false; + var t = P4.exec(e21), r = t && od[t[1].toLowerCase()]; + return r && r.charset ? r.charset : t && XU.test(t[1]) ? "UTF-8" : false; + } + function YU(e21) { + if (!e21 || typeof e21 != "string") return false; + var t = e21.indexOf("/") === -1 ? Wt.lookup(e21) : e21; + if (!t) return false; + if (t.indexOf("charset") === -1) { + var r = Wt.charset(t); + r && (t += "; charset=" + r.toLowerCase()); + } + return t; + } + function QU(e21) { + if (!e21 || typeof e21 != "string") return false; + var t = P4.exec(e21), r = t && Wt.extensions[t[1].toLowerCase()]; + return !r || !r.length ? false : r[0]; + } + function eL(e21) { + if (!e21 || typeof e21 != "string") return false; + var t = KU("x." + e21).toLowerCase().substr(1); + return t && Wt.types[t] || false; + } + function tL(e21, t) { + var r = ["nginx", "apache", void 0, "iana"]; + Object.keys(od).forEach(function(i) { + var o = od[i], a = o.extensions; + if (!(!a || !a.length)) { + e21[i] = a; + for (var s = 0; s < a.length; s++) { + var c = a[s]; + if (t[c]) { + var u = r.indexOf(od[t[c]].source), l = r.indexOf(o.source); + if (t[c] !== "application/octet-stream" && (u > l || u === l && t[c].substr(0, 12) === "application/")) continue; + } + t[c] = i; + } + } + }); + } +}); +var Mo = g((lde, Lo) => { + "use strict"; + var A4 = O4(), rL = ad(); + Lo.exports = nL; + Lo.exports.is = R4; + Lo.exports.hasBody = C4; + Lo.exports.normalize = N4; + Lo.exports.match = D4; + function R4(e21, t) { + var r, n = t, i = oL(e21); + if (!i) return false; + if (n && !Array.isArray(n)) for (n = new Array(arguments.length - 1), r = 0; r < n.length; r++) n[r] = arguments[r + 1]; + if (!n || !n.length) return i; + var o; + for (r = 0; r < n.length; r++) if (D4(N4(o = n[r]), i)) return o[0] === "+" || o.indexOf("*") !== -1 ? i : o; + return false; + } + function C4(e21) { + return e21.headers["transfer-encoding"] !== void 0 || !isNaN(e21.headers["content-length"]); + } + function nL(e21, t) { + var r = t; + if (!C4(e21)) return null; + if (arguments.length > 2) { + r = new Array(arguments.length - 1); + for (var n = 0; n < r.length; n++) r[n] = arguments[n + 1]; + } + var i = e21.headers["content-type"]; + return R4(i, r); + } + function N4(e21) { + if (typeof e21 != "string") return false; + switch (e21) { + case "urlencoded": + return "application/x-www-form-urlencoded"; + case "multipart": + return "multipart/*"; + } + return e21[0] === "+" ? "*/*" + e21 : e21.indexOf("/") === -1 ? rL.lookup(e21) : e21; + } + function D4(e21, t) { + if (e21 === false) return false; + var r = t.split("/"), n = e21.split("/"); + return r.length !== 2 || n.length !== 2 || n[0] !== "*" && n[0] !== r[0] ? false : n[1].substr(0, 2) === "*+" ? n[1].length <= r[1].length + 1 && n[1].substr(1) === r[1].substr(1 - n[1].length) : !(n[1] !== "*" && n[1] !== r[1]); + } + function iL(e21) { + var t = A4.parse(e21); + return t.parameters = void 0, A4.format(t); + } + function oL(e21) { + if (!e21) return null; + try { + return iL(e21); + } catch { + return null; + } + } +}); +var F4 = g((pde, M4) => { + "use strict"; + var aL = Po(), sL = ic(), cL = oc(), Hn = pc()("body-parser:json"), uL = vc(), U4 = Mo(); + M4.exports = dL; + var lL = /^[\x20\x09\x0a\x0d]*([^\x20\x09\x0a\x0d])/, q4 = "#", pL = /#+/g; + function dL(e21) { + var t = e21 || {}, r = typeof t.limit != "number" ? aL.parse(t.limit || "100kb") : t.limit, n = t.inflate !== false, i = t.reviver, o = t.strict !== false, a = t.type || "application/json", s = t.verify || false; + if (s !== false && typeof s != "function") throw new TypeError("option verify must be function"); + var c = typeof a != "function" ? vL(a) : a; + function u(l) { + if (l.length === 0) return {}; + if (o) { + var p = mL(l); + if (p !== "{" && p !== "[") throw Hn("strict violation"), fL(l, p); + } + try { + return Hn("parse json"), JSON.parse(l, i); + } catch (d) { + throw L4(d, { message: d.message, stack: d.stack }); + } + } + return function(p, d, f) { + if (p._body) { + Hn("body already parsed"), f(); + return; + } + if (p.body = p.body || {}, !U4.hasBody(p)) { + Hn("skip empty body"), f(); + return; + } + if (Hn("content-type %j", p.headers["content-type"]), !c(p)) { + Hn("skip parsing"), f(); + return; + } + var m = hL(p) || "utf-8"; + if (m.slice(0, 4) !== "utf-") { + Hn("invalid charset"), f(cL(415, 'unsupported charset "' + m.toUpperCase() + '"', { charset: m, type: "charset.unsupported" })); + return; + } + uL(p, d, f, u, Hn, { encoding: m, inflate: n, limit: r, verify: s }); + }; + } + function fL(e21, t) { + var r = e21.indexOf(t), n = ""; + if (r !== -1) { + n = e21.substring(0, r) + q4; + for (var i = r + 1; i < e21.length; i++) n += q4; + } + try { + throw JSON.parse(n), new SyntaxError("strict violation"); + } catch (o) { + return L4(o, { message: o.message.replace(pL, function(a) { + return e21.substring(r, r + a.length); + }), stack: o.stack }); + } + } + function mL(e21) { + var t = lL.exec(e21); + return t ? t[1] : void 0; + } + function hL(e21) { + try { + return (sL.parse(e21).parameters.charset || "").toLowerCase(); + } catch { + return; + } + } + function L4(e21, t) { + for (var r = Object.getOwnPropertyNames(e21), n = 0; n < r.length; n++) { + var i = r[n]; + i !== "stack" && i !== "message" && delete e21[i]; + } + return e21.stack = t.stack.replace(e21.message, t.message), e21.message = t.message, e21; + } + function vL(e21) { + return function(r) { + return !!U4(r, e21); + }; + } +}); +var V4 = g((dde, B4) => { + "use strict"; + var gL = Po(), gc = pc()("body-parser:raw"), yL = vc(), Z4 = Mo(); + B4.exports = xL; + function xL(e21) { + var t = e21 || {}, r = t.inflate !== false, n = typeof t.limit != "number" ? gL.parse(t.limit || "100kb") : t.limit, i = t.type || "application/octet-stream", o = t.verify || false; + if (o !== false && typeof o != "function") throw new TypeError("option verify must be function"); + var a = typeof i != "function" ? bL(i) : i; + function s(c) { + return c; + } + return function(u, l, p) { + if (u._body) { + gc("body already parsed"), p(); + return; + } + if (u.body = u.body || {}, !Z4.hasBody(u)) { + gc("skip empty body"), p(); + return; + } + if (gc("content-type %j", u.headers["content-type"]), !a(u)) { + gc("skip parsing"), p(); + return; + } + yL(u, l, p, s, gc, { encoding: null, inflate: r, limit: n, verify: o }); + }; + } + function bL(e21) { + return function(r) { + return !!Z4(r, e21); + }; + } +}); +var G4 = g((fde, J4) => { + "use strict"; + var _L = Po(), wL = ic(), yc = pc()("body-parser:text"), $L = vc(), H4 = Mo(); + J4.exports = SL; + function SL(e21) { + var t = e21 || {}, r = t.defaultCharset || "utf-8", n = t.inflate !== false, i = typeof t.limit != "number" ? _L.parse(t.limit || "100kb") : t.limit, o = t.type || "text/plain", a = t.verify || false; + if (a !== false && typeof a != "function") throw new TypeError("option verify must be function"); + var s = typeof o != "function" ? EL(o) : o; + function c(u) { + return u; + } + return function(l, p, d) { + if (l._body) { + yc("body already parsed"), d(); + return; + } + if (l.body = l.body || {}, !H4.hasBody(l)) { + yc("skip empty body"), d(); + return; + } + if (yc("content-type %j", l.headers["content-type"]), !s(l)) { + yc("skip parsing"), d(); + return; + } + var f = kL(l) || r; + $L(l, p, d, c, yc, { encoding: f, inflate: n, limit: i, verify: a }); + }; + } + function kL(e21) { + try { + return (wL.parse(e21).parameters.charset || "").toLowerCase(); + } catch { + return; + } + } + function EL(e21) { + return function(r) { + return !!H4(r, e21); + }; + } +}); +var Jn = g((mde, W4) => { + "use strict"; + W4.exports = TypeError; +}); +var X4 = g((hde, K4) => { + K4.exports = O("util").inspect; +}); +var $c = g((vde, gO) => { + var gx = typeof Map == "function" && Map.prototype, cx = Object.getOwnPropertyDescriptor && gx ? Object.getOwnPropertyDescriptor(Map.prototype, "size") : null, cd = gx && cx && typeof cx.get == "function" ? cx.get : null, Y4 = gx && Map.prototype.forEach, yx = typeof Set == "function" && Set.prototype, ux = Object.getOwnPropertyDescriptor && yx ? Object.getOwnPropertyDescriptor(Set.prototype, "size") : null, ud = yx && ux && typeof ux.get == "function" ? ux.get : null, Q4 = yx && Set.prototype.forEach, OL = typeof WeakMap == "function" && WeakMap.prototype, bc = OL ? WeakMap.prototype.has : null, TL = typeof WeakSet == "function" && WeakSet.prototype, _c = TL ? WeakSet.prototype.has : null, IL = typeof WeakRef == "function" && WeakRef.prototype, eO = IL ? WeakRef.prototype.deref : null, zL = Boolean.prototype.valueOf, PL = Object.prototype.toString, jL = Function.prototype.toString, AL = String.prototype.match, xx = String.prototype.slice, Gn = String.prototype.replace, RL = String.prototype.toUpperCase, tO = String.prototype.toLowerCase, lO = RegExp.prototype.test, rO = Array.prototype.concat, Qr = Array.prototype.join, CL = Array.prototype.slice, nO = Math.floor, dx = typeof BigInt == "function" ? BigInt.prototype.valueOf : null, lx = Object.getOwnPropertySymbols, fx = typeof Symbol == "function" && typeof Symbol.iterator == "symbol" ? Symbol.prototype.toString : null, Fo = typeof Symbol == "function" && typeof Symbol.iterator == "object", wc = typeof Symbol == "function" && Symbol.toStringTag && (typeof Symbol.toStringTag === Fo || true) ? Symbol.toStringTag : null, pO = Object.prototype.propertyIsEnumerable, iO = (typeof Reflect == "function" ? Reflect.getPrototypeOf : Object.getPrototypeOf) || ([].__proto__ === Array.prototype ? function(e21) { + return e21.__proto__; + } : null); + function oO(e21, t) { + if (e21 === 1 / 0 || e21 === -1 / 0 || e21 !== e21 || e21 && e21 > -1e3 && e21 < 1e3 || lO.call(/e/, t)) return t; + var r = /[0-9](?=(?:[0-9]{3})+(?![0-9]))/g; + if (typeof e21 == "number") { + var n = e21 < 0 ? -nO(-e21) : nO(e21); + if (n !== e21) { + var i = String(n), o = xx.call(t, i.length + 1); + return Gn.call(i, r, "$&_") + "." + Gn.call(Gn.call(o, /([0-9]{3})/g, "$&_"), /_$/, ""); + } + } + return Gn.call(t, r, "$&_"); + } + var mx = X4(), aO = mx.custom, sO = mO(aO) ? aO : null, dO = { __proto__: null, double: '"', single: "'" }, NL = { __proto__: null, double: /(["\\])/g, single: /(['\\])/g }; + gO.exports = function e21(t, r, n, i) { + var o = r || {}; + if (_n(o, "quoteStyle") && !_n(dO, o.quoteStyle)) throw new TypeError('option "quoteStyle" must be "single" or "double"'); + if (_n(o, "maxStringLength") && (typeof o.maxStringLength == "number" ? o.maxStringLength < 0 && o.maxStringLength !== 1 / 0 : o.maxStringLength !== null)) throw new TypeError('option "maxStringLength", if provided, must be a positive integer, Infinity, or `null`'); + var a = _n(o, "customInspect") ? o.customInspect : true; + if (typeof a != "boolean" && a !== "symbol") throw new TypeError("option \"customInspect\", if provided, must be `true`, `false`, or `'symbol'`"); + if (_n(o, "indent") && o.indent !== null && o.indent !== " " && !(parseInt(o.indent, 10) === o.indent && o.indent > 0)) throw new TypeError('option "indent" must be "\\t", an integer > 0, or `null`'); + if (_n(o, "numericSeparator") && typeof o.numericSeparator != "boolean") throw new TypeError('option "numericSeparator", if provided, must be `true` or `false`'); + var s = o.numericSeparator; + if (typeof t > "u") return "undefined"; + if (t === null) return "null"; + if (typeof t == "boolean") return t ? "true" : "false"; + if (typeof t == "string") return vO(t, o); + if (typeof t == "number") { + if (t === 0) return 1 / 0 / t > 0 ? "0" : "-0"; + var c = String(t); + return s ? oO(t, c) : c; + } + if (typeof t == "bigint") { + var u = String(t) + "n"; + return s ? oO(t, u) : u; + } + var l = typeof o.depth > "u" ? 5 : o.depth; + if (typeof n > "u" && (n = 0), n >= l && l > 0 && typeof t == "object") return hx(t) ? "[Array]" : "[Object]"; + var p = eM(o, n); + if (typeof i > "u") i = []; + else if (hO(i, t) >= 0) return "[Circular]"; + function d(ve, Ne, He) { + if (Ne && (i = CL.call(i), i.push(Ne)), He) { + var Se = { depth: o.depth }; + return _n(o, "quoteStyle") && (Se.quoteStyle = o.quoteStyle), e21(ve, Se, n + 1, i); + } + return e21(ve, o, n + 1, i); + } + if (typeof t == "function" && !cO(t)) { + var f = VL(t), m = sd(t, d); + return "[Function" + (f ? ": " + f : " (anonymous)") + "]" + (m.length > 0 ? " { " + Qr.call(m, ", ") + " }" : ""); + } + if (mO(t)) { + var h = Fo ? Gn.call(String(t), /^(Symbol\(.*\))_[^)]*$/, "$1") : fx.call(t); + return typeof t == "object" && !Fo ? xc(h) : h; + } + if (XL(t)) { + for (var v = "<" + tO.call(String(t.nodeName)), y = t.attributes || [], x = 0; x < y.length; x++) v += " " + y[x].name + "=" + fO(DL(y[x].value), "double", o); + return v += ">", t.childNodes && t.childNodes.length && (v += "..."), v += "", v; + } + if (hx(t)) { + if (t.length === 0) return "[]"; + var w = sd(t, d); + return p && !QL(w) ? "[" + vx(w, p) + "]" : "[ " + Qr.call(w, ", ") + " ]"; + } + if (UL(t)) { + var S = sd(t, d); + return !("cause" in Error.prototype) && "cause" in t && !pO.call(t, "cause") ? "{ [" + String(t) + "] " + Qr.call(rO.call("[cause]: " + d(t.cause), S), ", ") + " }" : S.length === 0 ? "[" + String(t) + "]" : "{ [" + String(t) + "] " + Qr.call(S, ", ") + " }"; + } + if (typeof t == "object" && a) { + if (sO && typeof t[sO] == "function" && mx) return mx(t, { depth: l - n }); + if (a !== "symbol" && typeof t.inspect == "function") return t.inspect(); + } + if (HL(t)) { + var k = []; + return Y4 && Y4.call(t, function(ve, Ne) { + k.push(d(Ne, t, true) + " => " + d(ve, t)); + }), uO("Map", cd.call(t), k, p); + } + if (WL(t)) { + var A = []; + return Q4 && Q4.call(t, function(ve) { + A.push(d(ve, t)); + }), uO("Set", ud.call(t), A, p); + } + if (JL(t)) return px("WeakMap"); + if (KL(t)) return px("WeakSet"); + if (GL(t)) return px("WeakRef"); + if (ML(t)) return xc(d(Number(t))); + if (ZL(t)) return xc(d(dx.call(t))); + if (FL(t)) return xc(zL.call(t)); + if (LL(t)) return xc(d(String(t))); + if (typeof window < "u" && t === window) return "{ [object Window] }"; + if (typeof globalThis < "u" && t === globalThis || typeof global < "u" && t === global) return "{ [object globalThis] }"; + if (!qL(t) && !cO(t)) { + var C = sd(t, d), ae = iO ? iO(t) === Object.prototype : t instanceof Object || t.constructor === Object, Ie = t instanceof Object ? "" : "null prototype", Ce = !ae && wc && Object(t) === t && wc in t ? xx.call(Wn(t), 8, -1) : Ie ? "Object" : "", $e = ae || typeof t.constructor != "function" ? "" : t.constructor.name ? t.constructor.name + " " : "", Ye = $e + (Ce || Ie ? "[" + Qr.call(rO.call([], Ce || [], Ie || []), ": ") + "] " : ""); + return C.length === 0 ? Ye + "{}" : p ? Ye + "{" + vx(C, p) + "}" : Ye + "{ " + Qr.call(C, ", ") + " }"; + } + return String(t); + }; + function fO(e21, t, r) { + var n = r.quoteStyle || t, i = dO[n]; + return i + e21 + i; + } + function DL(e21) { + return Gn.call(String(e21), /"/g, """); + } + function Ri(e21) { + return !wc || !(typeof e21 == "object" && (wc in e21 || typeof e21[wc] < "u")); + } + function hx(e21) { + return Wn(e21) === "[object Array]" && Ri(e21); + } + function qL(e21) { + return Wn(e21) === "[object Date]" && Ri(e21); + } + function cO(e21) { + return Wn(e21) === "[object RegExp]" && Ri(e21); + } + function UL(e21) { + return Wn(e21) === "[object Error]" && Ri(e21); + } + function LL(e21) { + return Wn(e21) === "[object String]" && Ri(e21); + } + function ML(e21) { + return Wn(e21) === "[object Number]" && Ri(e21); + } + function FL(e21) { + return Wn(e21) === "[object Boolean]" && Ri(e21); + } + function mO(e21) { + if (Fo) return e21 && typeof e21 == "object" && e21 instanceof Symbol; + if (typeof e21 == "symbol") return true; + if (!e21 || typeof e21 != "object" || !fx) return false; + try { + return fx.call(e21), true; + } catch { + } + return false; + } + function ZL(e21) { + if (!e21 || typeof e21 != "object" || !dx) return false; + try { + return dx.call(e21), true; + } catch { + } + return false; + } + var BL = Object.prototype.hasOwnProperty || function(e21) { + return e21 in this; + }; + function _n(e21, t) { + return BL.call(e21, t); + } + function Wn(e21) { + return PL.call(e21); + } + function VL(e21) { + if (e21.name) return e21.name; + var t = AL.call(jL.call(e21), /^function\s*([\w$]+)/); + return t ? t[1] : null; + } + function hO(e21, t) { + if (e21.indexOf) return e21.indexOf(t); + for (var r = 0, n = e21.length; r < n; r++) if (e21[r] === t) return r; + return -1; + } + function HL(e21) { + if (!cd || !e21 || typeof e21 != "object") return false; + try { + cd.call(e21); + try { + ud.call(e21); + } catch { + return true; + } + return e21 instanceof Map; + } catch { + } + return false; + } + function JL(e21) { + if (!bc || !e21 || typeof e21 != "object") return false; + try { + bc.call(e21, bc); + try { + _c.call(e21, _c); + } catch { + return true; + } + return e21 instanceof WeakMap; + } catch { + } + return false; + } + function GL(e21) { + if (!eO || !e21 || typeof e21 != "object") return false; + try { + return eO.call(e21), true; + } catch { + } + return false; + } + function WL(e21) { + if (!ud || !e21 || typeof e21 != "object") return false; + try { + ud.call(e21); + try { + cd.call(e21); + } catch { + return true; + } + return e21 instanceof Set; + } catch { + } + return false; + } + function KL(e21) { + if (!_c || !e21 || typeof e21 != "object") return false; + try { + _c.call(e21, _c); + try { + bc.call(e21, bc); + } catch { + return true; + } + return e21 instanceof WeakSet; + } catch { + } + return false; + } + function XL(e21) { + return !e21 || typeof e21 != "object" ? false : typeof HTMLElement < "u" && e21 instanceof HTMLElement ? true : typeof e21.nodeName == "string" && typeof e21.getAttribute == "function"; + } + function vO(e21, t) { + if (e21.length > t.maxStringLength) { + var r = e21.length - t.maxStringLength, n = "... " + r + " more character" + (r > 1 ? "s" : ""); + return vO(xx.call(e21, 0, t.maxStringLength), t) + n; + } + var i = NL[t.quoteStyle || "single"]; + i.lastIndex = 0; + var o = Gn.call(Gn.call(e21, i, "\\$1"), /[\x00-\x1f]/g, YL); + return fO(o, "single", t); + } + function YL(e21) { + var t = e21.charCodeAt(0), r = { 8: "b", 9: "t", 10: "n", 12: "f", 13: "r" }[t]; + return r ? "\\" + r : "\\x" + (t < 16 ? "0" : "") + RL.call(t.toString(16)); + } + function xc(e21) { + return "Object(" + e21 + ")"; + } + function px(e21) { + return e21 + " { ? }"; + } + function uO(e21, t, r, n) { + var i = n ? vx(r, n) : Qr.call(r, ", "); + return e21 + " (" + t + ") {" + i + "}"; + } + function QL(e21) { + for (var t = 0; t < e21.length; t++) if (hO(e21[t], ` +`) >= 0) return false; + return true; + } + function eM(e21, t) { + var r; + if (e21.indent === " ") r = " "; + else if (typeof e21.indent == "number" && e21.indent > 0) r = Qr.call(Array(e21.indent + 1), " "); + else return null; + return { base: r, prev: Qr.call(Array(t + 1), r) }; + } + function vx(e21, t) { + if (e21.length === 0) return ""; + var r = ` +` + t.prev + t.base; + return r + Qr.call(e21, "," + r) + ` +` + t.prev; + } + function sd(e21, t) { + var r = hx(e21), n = []; + if (r) { + n.length = e21.length; + for (var i = 0; i < e21.length; i++) n[i] = _n(e21, i) ? t(e21[i], e21) : ""; + } + var o = typeof lx == "function" ? lx(e21) : [], a; + if (Fo) { + a = {}; + for (var s = 0; s < o.length; s++) a["$" + o[s]] = o[s]; + } + for (var c in e21) _n(e21, c) && (r && String(Number(c)) === c && c < e21.length || Fo && a["$" + c] instanceof Symbol || (lO.call(/[^\w$]/, c) ? n.push(t(c, e21) + ": " + t(e21[c], e21)) : n.push(c + ": " + t(e21[c], e21)))); + if (typeof lx == "function") for (var u = 0; u < o.length; u++) pO.call(e21, o[u]) && n.push("[" + t(o[u]) + "]: " + t(e21[o[u]], e21)); + return n; + } +}); +var xO = g((gde, yO) => { + "use strict"; + var tM = $c(), rM = Jn(), ld = function(e21, t, r) { + for (var n = e21, i; (i = n.next) != null; n = i) if (i.key === t) return n.next = i.next, r || (i.next = e21.next, e21.next = i), i; + }, nM = function(e21, t) { + if (e21) { + var r = ld(e21, t); + return r && r.value; + } + }, iM = function(e21, t, r) { + var n = ld(e21, t); + n ? n.value = r : e21.next = { key: t, next: e21.next, value: r }; + }, oM = function(e21, t) { + return e21 ? !!ld(e21, t) : false; + }, aM = function(e21, t) { + if (e21) return ld(e21, t, true); + }; + yO.exports = function() { + var t, r = { assert: function(n) { + if (!r.has(n)) throw new rM("Side channel does not contain " + tM(n)); + }, delete: function(n) { + var i = t && t.next, o = aM(t, n); + return o && i && i === o && (t = void 0), !!o; + }, get: function(n) { + return nM(t, n); + }, has: function(n) { + return oM(t, n); + }, set: function(n, i) { + t || (t = { next: void 0 }), iM(t, n, i); + } }; + return r; + }; +}); +var bx = g((yde, bO) => { + "use strict"; + bO.exports = Object; +}); +var wO = g((xde, _O) => { + "use strict"; + _O.exports = Error; +}); +var SO = g((bde, $O) => { + "use strict"; + $O.exports = EvalError; +}); +var EO = g((_de, kO) => { + "use strict"; + kO.exports = RangeError; +}); +var TO = g((wde, OO) => { + "use strict"; + OO.exports = ReferenceError; +}); +var zO = g(($de, IO) => { + "use strict"; + IO.exports = SyntaxError; +}); +var jO = g((Sde, PO) => { + "use strict"; + PO.exports = URIError; +}); +var RO = g((kde, AO) => { + "use strict"; + AO.exports = Math.abs; +}); +var NO = g((Ede, CO) => { + "use strict"; + CO.exports = Math.floor; +}); +var qO = g((Ode, DO) => { + "use strict"; + DO.exports = Math.max; +}); +var LO = g((Tde, UO) => { + "use strict"; + UO.exports = Math.min; +}); +var FO = g((Ide, MO) => { + "use strict"; + MO.exports = Math.pow; +}); +var BO = g((zde, ZO) => { + "use strict"; + ZO.exports = Math.round; +}); +var HO = g((Pde, VO) => { + "use strict"; + VO.exports = Number.isNaN || function(t) { + return t !== t; + }; +}); +var GO = g((jde, JO) => { + "use strict"; + var sM = HO(); + JO.exports = function(t) { + return sM(t) || t === 0 ? t : t < 0 ? -1 : 1; + }; +}); +var KO = g((Ade, WO) => { + "use strict"; + WO.exports = Object.getOwnPropertyDescriptor; +}); +var _x = g((Rde, XO) => { + "use strict"; + var pd = KO(); + if (pd) try { + pd([], "length"); + } catch { + pd = null; + } + XO.exports = pd; +}); +var QO = g((Cde, YO) => { + "use strict"; + var dd = Object.defineProperty || false; + if (dd) try { + dd({}, "a", { value: 1 }); + } catch { + dd = false; + } + YO.exports = dd; +}); +var wx = g((Nde, eT) => { + "use strict"; + eT.exports = function() { + if (typeof Symbol != "function" || typeof Object.getOwnPropertySymbols != "function") return false; + if (typeof Symbol.iterator == "symbol") return true; + var t = {}, r = /* @__PURE__ */ Symbol("test"), n = Object(r); + if (typeof r == "string" || Object.prototype.toString.call(r) !== "[object Symbol]" || Object.prototype.toString.call(n) !== "[object Symbol]") return false; + var i = 42; + t[r] = i; + for (var o in t) return false; + if (typeof Object.keys == "function" && Object.keys(t).length !== 0 || typeof Object.getOwnPropertyNames == "function" && Object.getOwnPropertyNames(t).length !== 0) return false; + var a = Object.getOwnPropertySymbols(t); + if (a.length !== 1 || a[0] !== r || !Object.prototype.propertyIsEnumerable.call(t, r)) return false; + if (typeof Object.getOwnPropertyDescriptor == "function") { + var s = Object.getOwnPropertyDescriptor(t, r); + if (s.value !== i || s.enumerable !== true) return false; + } + return true; + }; +}); +var nT = g((Dde, rT) => { + "use strict"; + var tT = typeof Symbol < "u" && Symbol, cM = wx(); + rT.exports = function() { + return typeof tT != "function" || typeof Symbol != "function" || typeof tT("foo") != "symbol" || typeof /* @__PURE__ */ Symbol("bar") != "symbol" ? false : cM(); + }; +}); +var $x = g((qde, iT) => { + "use strict"; + iT.exports = typeof Reflect < "u" && Reflect.getPrototypeOf || null; +}); +var Sx = g((Ude, oT) => { + "use strict"; + var uM = bx(); + oT.exports = uM.getPrototypeOf || null; +}); +var cT = g((Lde, sT) => { + "use strict"; + var lM = "Function.prototype.bind called on incompatible ", pM = Object.prototype.toString, dM = Math.max, fM = "[object Function]", aT = function(t, r) { + for (var n = [], i = 0; i < t.length; i += 1) n[i] = t[i]; + for (var o = 0; o < r.length; o += 1) n[o + t.length] = r[o]; + return n; + }, mM = function(t, r) { + for (var n = [], i = r || 0, o = 0; i < t.length; i += 1, o += 1) n[o] = t[i]; + return n; + }, hM = function(e21, t) { + for (var r = "", n = 0; n < e21.length; n += 1) r += e21[n], n + 1 < e21.length && (r += t); + return r; + }; + sT.exports = function(t) { + var r = this; + if (typeof r != "function" || pM.apply(r) !== fM) throw new TypeError(lM + r); + for (var n = mM(arguments, 1), i, o = function() { + if (this instanceof i) { + var l = r.apply(this, aT(n, arguments)); + return Object(l) === l ? l : this; + } + return r.apply(t, aT(n, arguments)); + }, a = dM(0, r.length - n.length), s = [], c = 0; c < a; c++) s[c] = "$" + c; + if (i = Function("binder", "return function (" + hM(s, ",") + "){ return binder.apply(this,arguments); }")(o), r.prototype) { + var u = function() { + }; + u.prototype = r.prototype, i.prototype = new u(), u.prototype = null; + } + return i; + }; +}); +var Sc = g((Mde, uT) => { + "use strict"; + var vM = cT(); + uT.exports = Function.prototype.bind || vM; +}); +var fd = g((Fde, lT) => { + "use strict"; + lT.exports = Function.prototype.call; +}); +var kx = g((Zde, pT) => { + "use strict"; + pT.exports = Function.prototype.apply; +}); +var fT = g((Bde, dT) => { + "use strict"; + dT.exports = typeof Reflect < "u" && Reflect && Reflect.apply; +}); +var hT = g((Vde, mT) => { + "use strict"; + var gM = Sc(), yM = kx(), xM = fd(), bM = fT(); + mT.exports = bM || gM.call(xM, yM); +}); +var Ex = g((Hde, vT) => { + "use strict"; + var _M = Sc(), wM = Jn(), $M = fd(), SM = hT(); + vT.exports = function(t) { + if (t.length < 1 || typeof t[0] != "function") throw new wM("a function is required"); + return SM(_M, $M, t); + }; +}); +var wT = g((Jde, _T) => { + "use strict"; + var kM = Ex(), gT = _x(), xT; + try { + xT = [].__proto__ === Array.prototype; + } catch (e21) { + if (!e21 || typeof e21 != "object" || !("code" in e21) || e21.code !== "ERR_PROTO_ACCESS") throw e21; + } + var Ox = !!xT && gT && gT(Object.prototype, "__proto__"), bT = Object, yT = bT.getPrototypeOf; + _T.exports = Ox && typeof Ox.get == "function" ? kM([Ox.get]) : typeof yT == "function" ? function(t) { + return yT(t == null ? t : bT(t)); + } : false; +}); +var OT = g((Gde, ET) => { + "use strict"; + var $T = $x(), ST = Sx(), kT = wT(); + ET.exports = $T ? function(t) { + return $T(t); + } : ST ? function(t) { + if (!t || typeof t != "object" && typeof t != "function") throw new TypeError("getProto: not an object"); + return ST(t); + } : kT ? function(t) { + return kT(t); + } : null; +}); +var md = g((Wde, TT) => { + "use strict"; + var EM = Function.prototype.call, OM = Object.prototype.hasOwnProperty, TM = Sc(); + TT.exports = TM.call(EM, OM); +}); +var Tc = g((Kde, RT) => { + "use strict"; + var oe, IM = bx(), zM = wO(), PM = SO(), jM = EO(), AM = TO(), Ho = zO(), Vo = Jn(), RM = jO(), CM = RO(), NM = NO(), DM = qO(), qM = LO(), UM = FO(), LM = BO(), MM = GO(), jT = Function, Tx = function(e21) { + try { + return jT('"use strict"; return (' + e21 + ").constructor;")(); + } catch { + } + }, kc = _x(), FM = QO(), Ix = function() { + throw new Vo(); + }, ZM = kc ? (function() { + try { + return arguments.callee, Ix; + } catch { + try { + return kc(arguments, "callee").get; + } catch { + return Ix; + } + } + })() : Ix, Zo = nT()(), pt = OT(), BM = Sx(), VM = $x(), AT = kx(), Ec = fd(), Bo = {}, HM = typeof Uint8Array > "u" || !pt ? oe : pt(Uint8Array), Ci = { __proto__: null, "%AggregateError%": typeof AggregateError > "u" ? oe : AggregateError, "%Array%": Array, "%ArrayBuffer%": typeof ArrayBuffer > "u" ? oe : ArrayBuffer, "%ArrayIteratorPrototype%": Zo && pt ? pt([][Symbol.iterator]()) : oe, "%AsyncFromSyncIteratorPrototype%": oe, "%AsyncFunction%": Bo, "%AsyncGenerator%": Bo, "%AsyncGeneratorFunction%": Bo, "%AsyncIteratorPrototype%": Bo, "%Atomics%": typeof Atomics > "u" ? oe : Atomics, "%BigInt%": typeof BigInt > "u" ? oe : BigInt, "%BigInt64Array%": typeof BigInt64Array > "u" ? oe : BigInt64Array, "%BigUint64Array%": typeof BigUint64Array > "u" ? oe : BigUint64Array, "%Boolean%": Boolean, "%DataView%": typeof DataView > "u" ? oe : DataView, "%Date%": Date, "%decodeURI%": decodeURI, "%decodeURIComponent%": decodeURIComponent, "%encodeURI%": encodeURI, "%encodeURIComponent%": encodeURIComponent, "%Error%": zM, "%eval%": eval, "%EvalError%": PM, "%Float16Array%": typeof Float16Array > "u" ? oe : Float16Array, "%Float32Array%": typeof Float32Array > "u" ? oe : Float32Array, "%Float64Array%": typeof Float64Array > "u" ? oe : Float64Array, "%FinalizationRegistry%": typeof FinalizationRegistry > "u" ? oe : FinalizationRegistry, "%Function%": jT, "%GeneratorFunction%": Bo, "%Int8Array%": typeof Int8Array > "u" ? oe : Int8Array, "%Int16Array%": typeof Int16Array > "u" ? oe : Int16Array, "%Int32Array%": typeof Int32Array > "u" ? oe : Int32Array, "%isFinite%": isFinite, "%isNaN%": isNaN, "%IteratorPrototype%": Zo && pt ? pt(pt([][Symbol.iterator]())) : oe, "%JSON%": typeof JSON == "object" ? JSON : oe, "%Map%": typeof Map > "u" ? oe : Map, "%MapIteratorPrototype%": typeof Map > "u" || !Zo || !pt ? oe : pt((/* @__PURE__ */ new Map())[Symbol.iterator]()), "%Math%": Math, "%Number%": Number, "%Object%": IM, "%Object.getOwnPropertyDescriptor%": kc, "%parseFloat%": parseFloat, "%parseInt%": parseInt, "%Promise%": typeof Promise > "u" ? oe : Promise, "%Proxy%": typeof Proxy > "u" ? oe : Proxy, "%RangeError%": jM, "%ReferenceError%": AM, "%Reflect%": typeof Reflect > "u" ? oe : Reflect, "%RegExp%": RegExp, "%Set%": typeof Set > "u" ? oe : Set, "%SetIteratorPrototype%": typeof Set > "u" || !Zo || !pt ? oe : pt((/* @__PURE__ */ new Set())[Symbol.iterator]()), "%SharedArrayBuffer%": typeof SharedArrayBuffer > "u" ? oe : SharedArrayBuffer, "%String%": String, "%StringIteratorPrototype%": Zo && pt ? pt(""[Symbol.iterator]()) : oe, "%Symbol%": Zo ? Symbol : oe, "%SyntaxError%": Ho, "%ThrowTypeError%": ZM, "%TypedArray%": HM, "%TypeError%": Vo, "%Uint8Array%": typeof Uint8Array > "u" ? oe : Uint8Array, "%Uint8ClampedArray%": typeof Uint8ClampedArray > "u" ? oe : Uint8ClampedArray, "%Uint16Array%": typeof Uint16Array > "u" ? oe : Uint16Array, "%Uint32Array%": typeof Uint32Array > "u" ? oe : Uint32Array, "%URIError%": RM, "%WeakMap%": typeof WeakMap > "u" ? oe : WeakMap, "%WeakRef%": typeof WeakRef > "u" ? oe : WeakRef, "%WeakSet%": typeof WeakSet > "u" ? oe : WeakSet, "%Function.prototype.call%": Ec, "%Function.prototype.apply%": AT, "%Object.defineProperty%": FM, "%Object.getPrototypeOf%": BM, "%Math.abs%": CM, "%Math.floor%": NM, "%Math.max%": DM, "%Math.min%": qM, "%Math.pow%": UM, "%Math.round%": LM, "%Math.sign%": MM, "%Reflect.getPrototypeOf%": VM }; + if (pt) try { + null.error; + } catch (e21) { + IT = pt(pt(e21)), Ci["%Error.prototype%"] = IT; + } + var IT, JM = function e21(t) { + var r; + if (t === "%AsyncFunction%") r = Tx("async function () {}"); + else if (t === "%GeneratorFunction%") r = Tx("function* () {}"); + else if (t === "%AsyncGeneratorFunction%") r = Tx("async function* () {}"); + else if (t === "%AsyncGenerator%") { + var n = e21("%AsyncGeneratorFunction%"); + n && (r = n.prototype); + } else if (t === "%AsyncIteratorPrototype%") { + var i = e21("%AsyncGenerator%"); + i && pt && (r = pt(i.prototype)); + } + return Ci[t] = r, r; + }, zT = { __proto__: null, "%ArrayBufferPrototype%": ["ArrayBuffer", "prototype"], "%ArrayPrototype%": ["Array", "prototype"], "%ArrayProto_entries%": ["Array", "prototype", "entries"], "%ArrayProto_forEach%": ["Array", "prototype", "forEach"], "%ArrayProto_keys%": ["Array", "prototype", "keys"], "%ArrayProto_values%": ["Array", "prototype", "values"], "%AsyncFunctionPrototype%": ["AsyncFunction", "prototype"], "%AsyncGenerator%": ["AsyncGeneratorFunction", "prototype"], "%AsyncGeneratorPrototype%": ["AsyncGeneratorFunction", "prototype", "prototype"], "%BooleanPrototype%": ["Boolean", "prototype"], "%DataViewPrototype%": ["DataView", "prototype"], "%DatePrototype%": ["Date", "prototype"], "%ErrorPrototype%": ["Error", "prototype"], "%EvalErrorPrototype%": ["EvalError", "prototype"], "%Float32ArrayPrototype%": ["Float32Array", "prototype"], "%Float64ArrayPrototype%": ["Float64Array", "prototype"], "%FunctionPrototype%": ["Function", "prototype"], "%Generator%": ["GeneratorFunction", "prototype"], "%GeneratorPrototype%": ["GeneratorFunction", "prototype", "prototype"], "%Int8ArrayPrototype%": ["Int8Array", "prototype"], "%Int16ArrayPrototype%": ["Int16Array", "prototype"], "%Int32ArrayPrototype%": ["Int32Array", "prototype"], "%JSONParse%": ["JSON", "parse"], "%JSONStringify%": ["JSON", "stringify"], "%MapPrototype%": ["Map", "prototype"], "%NumberPrototype%": ["Number", "prototype"], "%ObjectPrototype%": ["Object", "prototype"], "%ObjProto_toString%": ["Object", "prototype", "toString"], "%ObjProto_valueOf%": ["Object", "prototype", "valueOf"], "%PromisePrototype%": ["Promise", "prototype"], "%PromiseProto_then%": ["Promise", "prototype", "then"], "%Promise_all%": ["Promise", "all"], "%Promise_reject%": ["Promise", "reject"], "%Promise_resolve%": ["Promise", "resolve"], "%RangeErrorPrototype%": ["RangeError", "prototype"], "%ReferenceErrorPrototype%": ["ReferenceError", "prototype"], "%RegExpPrototype%": ["RegExp", "prototype"], "%SetPrototype%": ["Set", "prototype"], "%SharedArrayBufferPrototype%": ["SharedArrayBuffer", "prototype"], "%StringPrototype%": ["String", "prototype"], "%SymbolPrototype%": ["Symbol", "prototype"], "%SyntaxErrorPrototype%": ["SyntaxError", "prototype"], "%TypedArrayPrototype%": ["TypedArray", "prototype"], "%TypeErrorPrototype%": ["TypeError", "prototype"], "%Uint8ArrayPrototype%": ["Uint8Array", "prototype"], "%Uint8ClampedArrayPrototype%": ["Uint8ClampedArray", "prototype"], "%Uint16ArrayPrototype%": ["Uint16Array", "prototype"], "%Uint32ArrayPrototype%": ["Uint32Array", "prototype"], "%URIErrorPrototype%": ["URIError", "prototype"], "%WeakMapPrototype%": ["WeakMap", "prototype"], "%WeakSetPrototype%": ["WeakSet", "prototype"] }, Oc = Sc(), hd = md(), GM = Oc.call(Ec, Array.prototype.concat), WM = Oc.call(AT, Array.prototype.splice), PT = Oc.call(Ec, String.prototype.replace), vd = Oc.call(Ec, String.prototype.slice), KM = Oc.call(Ec, RegExp.prototype.exec), XM = /[^%.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|%$))/g, YM = /\\(\\)?/g, QM = function(t) { + var r = vd(t, 0, 1), n = vd(t, -1); + if (r === "%" && n !== "%") throw new Ho("invalid intrinsic syntax, expected closing `%`"); + if (n === "%" && r !== "%") throw new Ho("invalid intrinsic syntax, expected opening `%`"); + var i = []; + return PT(t, XM, function(o, a, s, c) { + i[i.length] = s ? PT(c, YM, "$1") : a || o; + }), i; + }, eF = function(t, r) { + var n = t, i; + if (hd(zT, n) && (i = zT[n], n = "%" + i[0] + "%"), hd(Ci, n)) { + var o = Ci[n]; + if (o === Bo && (o = JM(n)), typeof o > "u" && !r) throw new Vo("intrinsic " + t + " exists, but is not available. Please file an issue!"); + return { alias: i, name: n, value: o }; + } + throw new Ho("intrinsic " + t + " does not exist!"); + }; + RT.exports = function(t, r) { + if (typeof t != "string" || t.length === 0) throw new Vo("intrinsic name must be a non-empty string"); + if (arguments.length > 1 && typeof r != "boolean") throw new Vo('"allowMissing" argument must be a boolean'); + if (KM(/^%?[^%]*%?$/, t) === null) throw new Ho("`%` may not be present anywhere but at the beginning and end of the intrinsic name"); + var n = QM(t), i = n.length > 0 ? n[0] : "", o = eF("%" + i + "%", r), a = o.name, s = o.value, c = false, u = o.alias; + u && (i = u[0], WM(n, GM([0, 1], u))); + for (var l = 1, p = true; l < n.length; l += 1) { + var d = n[l], f = vd(d, 0, 1), m = vd(d, -1); + if ((f === '"' || f === "'" || f === "`" || m === '"' || m === "'" || m === "`") && f !== m) throw new Ho("property names with quotes must have matching quotes"); + if ((d === "constructor" || !p) && (c = true), i += "." + d, a = "%" + i + "%", hd(Ci, a)) s = Ci[a]; + else if (s != null) { + if (!(d in s)) { + if (!r) throw new Vo("base intrinsic for " + t + " exists, but the property is not available."); + return; + } + if (kc && l + 1 >= n.length) { + var h = kc(s, d); + p = !!h, p && "get" in h && !("originalValue" in h.get) ? s = h.get : s = s[d]; + } else p = hd(s, d), s = s[d]; + p && !c && (Ci[a] = s); + } + } + return s; + }; +}); +var zx = g((Xde, DT) => { + "use strict"; + var CT = Tc(), NT = Ex(), tF = NT([CT("%String.prototype.indexOf%")]); + DT.exports = function(t, r) { + var n = CT(t, !!r); + return typeof n == "function" && tF(t, ".prototype.") > -1 ? NT([n]) : n; + }; +}); +var Px = g((Yde, UT) => { + "use strict"; + var rF = Tc(), Ic = zx(), nF = $c(), iF = Jn(), qT = rF("%Map%", true), oF = Ic("Map.prototype.get", true), aF = Ic("Map.prototype.set", true), sF = Ic("Map.prototype.has", true), cF = Ic("Map.prototype.delete", true), uF = Ic("Map.prototype.size", true); + UT.exports = !!qT && function() { + var t, r = { assert: function(n) { + if (!r.has(n)) throw new iF("Side channel does not contain " + nF(n)); + }, delete: function(n) { + if (t) { + var i = cF(t, n); + return uF(t) === 0 && (t = void 0), i; + } + return false; + }, get: function(n) { + if (t) return oF(t, n); + }, has: function(n) { + return t ? sF(t, n) : false; + }, set: function(n, i) { + t || (t = new qT()), aF(t, n, i); + } }; + return r; + }; +}); +var MT = g((Qde, LT) => { + "use strict"; + var lF = Tc(), yd = zx(), pF = $c(), gd = Px(), dF = Jn(), Jo = lF("%WeakMap%", true), fF = yd("WeakMap.prototype.get", true), mF = yd("WeakMap.prototype.set", true), hF = yd("WeakMap.prototype.has", true), vF = yd("WeakMap.prototype.delete", true); + LT.exports = Jo ? function() { + var t, r, n = { assert: function(i) { + if (!n.has(i)) throw new dF("Side channel does not contain " + pF(i)); + }, delete: function(i) { + if (Jo && i && (typeof i == "object" || typeof i == "function")) { + if (t) return vF(t, i); + } else if (gd && r) return r.delete(i); + return false; + }, get: function(i) { + return Jo && i && (typeof i == "object" || typeof i == "function") && t ? fF(t, i) : r && r.get(i); + }, has: function(i) { + return Jo && i && (typeof i == "object" || typeof i == "function") && t ? hF(t, i) : !!r && r.has(i); + }, set: function(i, o) { + Jo && i && (typeof i == "object" || typeof i == "function") ? (t || (t = new Jo()), mF(t, i, o)) : gd && (r || (r = gd()), r.set(i, o)); + } }; + return n; + } : gd; +}); +var jx = g((efe, FT) => { + "use strict"; + var gF = Jn(), yF = $c(), xF = xO(), bF = Px(), _F = MT(), wF = _F || bF || xF; + FT.exports = function() { + var t, r = { assert: function(n) { + if (!r.has(n)) throw new gF("Side channel does not contain " + yF(n)); + }, delete: function(n) { + return !!t && t.delete(n); + }, get: function(n) { + return t && t.get(n); + }, has: function(n) { + return !!t && t.has(n); + }, set: function(n, i) { + t || (t = wF()), t.set(n, i); + } }; + return r; + }; +}); +var xd = g((tfe, ZT) => { + "use strict"; + var $F = String.prototype.replace, SF = /%20/g, Ax = { RFC1738: "RFC1738", RFC3986: "RFC3986" }; + ZT.exports = { default: Ax.RFC3986, formatters: { RFC1738: function(e21) { + return $F.call(e21, SF, "+"); + }, RFC3986: function(e21) { + return String(e21); + } }, RFC1738: Ax.RFC1738, RFC3986: Ax.RFC3986 }; +}); +var Dx = g((rfe, BT) => { + "use strict"; + var kF = xd(), EF = jx(), Rx = Object.prototype.hasOwnProperty, Ni = Array.isArray, bd = EF(), Go = function(t, r) { + return bd.set(t, r), t; + }, Di = function(t) { + return bd.has(t); + }, zc = function(t) { + return bd.get(t); + }, Nx = function(t, r) { + bd.set(t, r); + }, en = (function() { + for (var e21 = [], t = 0; t < 256; ++t) e21[e21.length] = "%" + ((t < 16 ? "0" : "") + t.toString(16)).toUpperCase(); + return e21; + })(), OF = function(t) { + for (; t.length > 1; ) { + var r = t.pop(), n = r.obj[r.prop]; + if (Ni(n)) { + for (var i = [], o = 0; o < n.length; ++o) typeof n[o] < "u" && (i[i.length] = n[o]); + r.obj[r.prop] = i; + } + } + }, Pc = function(t, r) { + for (var n = r && r.plainObjects ? { __proto__: null } : {}, i = 0; i < t.length; ++i) typeof t[i] < "u" && (n[i] = t[i]); + return n; + }, TF = function e21(t, r, n) { + if (!r) return t; + if (typeof r != "object" && typeof r != "function") { + if (Ni(t)) { + var i = t.length; + if (n && typeof n.arrayLimit == "number" && i > n.arrayLimit) return Go(Pc(t.concat(r), n), i); + t[i] = r; + } else if (t && typeof t == "object") if (Di(t)) { + var o = zc(t) + 1; + t[o] = r, Nx(t, o); + } else (n && (n.plainObjects || n.allowPrototypes) || !Rx.call(Object.prototype, r)) && (t[r] = true); + else return [t, r]; + return t; + } + if (!t || typeof t != "object") { + if (Di(r)) { + for (var a = Object.keys(r), s = n && n.plainObjects ? { __proto__: null, 0: t } : { 0: t }, c = 0; c < a.length; c++) { + var u = parseInt(a[c], 10); + s[u + 1] = r[a[c]]; + } + return Go(s, zc(r) + 1); + } + var l = [t].concat(r); + return n && typeof n.arrayLimit == "number" && l.length > n.arrayLimit ? Go(Pc(l, n), l.length - 1) : l; + } + var p = t; + return Ni(t) && !Ni(r) && (p = Pc(t, n)), Ni(t) && Ni(r) ? (r.forEach(function(d, f) { + if (Rx.call(t, f)) { + var m = t[f]; + m && typeof m == "object" && d && typeof d == "object" ? t[f] = e21(m, d, n) : t[t.length] = d; + } else t[f] = d; + }), t) : Object.keys(r).reduce(function(d, f) { + var m = r[f]; + if (Rx.call(d, f) ? d[f] = e21(d[f], m, n) : d[f] = m, Di(r) && !Di(d) && Go(d, zc(r)), Di(d)) { + var h = parseInt(f, 10); + String(h) === f && h >= 0 && h > zc(d) && Nx(d, h); + } + return d; + }, p); + }, IF = function(t, r) { + return Object.keys(r).reduce(function(n, i) { + return n[i] = r[i], n; + }, t); + }, zF = function(e21, t, r) { + var n = e21.replace(/\+/g, " "); + if (r === "iso-8859-1") return n.replace(/%[0-9a-f]{2}/gi, unescape); + try { + return decodeURIComponent(n); + } catch { + return n; + } + }, Cx = 1024, PF = function(t, r, n, i, o) { + if (t.length === 0) return t; + var a = t; + if (typeof t == "symbol" ? a = Symbol.prototype.toString.call(t) : typeof t != "string" && (a = String(t)), n === "iso-8859-1") return escape(a).replace(/%u[0-9a-f]{4}/gi, function(f) { + return "%26%23" + parseInt(f.slice(2), 16) + "%3B"; + }); + for (var s = "", c = 0; c < a.length; c += Cx) { + for (var u = a.length >= Cx ? a.slice(c, c + Cx) : a, l = [], p = 0; p < u.length; ++p) { + var d = u.charCodeAt(p); + if (d === 45 || d === 46 || d === 95 || d === 126 || d >= 48 && d <= 57 || d >= 65 && d <= 90 || d >= 97 && d <= 122 || o === kF.RFC1738 && (d === 40 || d === 41)) { + l[l.length] = u.charAt(p); + continue; + } + if (d < 128) { + l[l.length] = en[d]; + continue; + } + if (d < 2048) { + l[l.length] = en[192 | d >> 6] + en[128 | d & 63]; + continue; + } + if (d < 55296 || d >= 57344) { + l[l.length] = en[224 | d >> 12] + en[128 | d >> 6 & 63] + en[128 | d & 63]; + continue; + } + p += 1, d = 65536 + ((d & 1023) << 10 | u.charCodeAt(p) & 1023), l[l.length] = en[240 | d >> 18] + en[128 | d >> 12 & 63] + en[128 | d >> 6 & 63] + en[128 | d & 63]; + } + s += l.join(""); + } + return s; + }, jF = function(t) { + for (var r = [{ obj: { o: t }, prop: "o" }], n = [], i = 0; i < r.length; ++i) for (var o = r[i], a = o.obj[o.prop], s = Object.keys(a), c = 0; c < s.length; ++c) { + var u = s[c], l = a[u]; + typeof l == "object" && l !== null && n.indexOf(l) === -1 && (r[r.length] = { obj: a, prop: u }, n[n.length] = l); + } + return OF(r), t; + }, AF = function(t) { + return Object.prototype.toString.call(t) === "[object RegExp]"; + }, RF = function(t) { + return !t || typeof t != "object" ? false : !!(t.constructor && t.constructor.isBuffer && t.constructor.isBuffer(t)); + }, CF = function(t, r, n, i) { + if (Di(t)) { + var o = zc(t) + 1; + return t[o] = r, Nx(t, o), t; + } + var a = [].concat(t, r); + return a.length > n ? Go(Pc(a, { plainObjects: i }), a.length - 1) : a; + }, NF = function(t, r) { + if (Ni(t)) { + for (var n = [], i = 0; i < t.length; i += 1) n[n.length] = r(t[i]); + return n; + } + return r(t); + }; + BT.exports = { arrayToObject: Pc, assign: IF, combine: CF, compact: jF, decode: zF, encode: PF, isBuffer: RF, isOverflow: Di, isRegExp: AF, markOverflow: Go, maybeMap: NF, merge: TF }; +}); +var KT = g((nfe, WT) => { + "use strict"; + var HT = jx(), _d = Dx(), jc = xd(), DF = Object.prototype.hasOwnProperty, JT = { brackets: function(t) { + return t + "[]"; + }, comma: "comma", indices: function(t, r) { + return t + "[" + r + "]"; + }, repeat: function(t) { + return t; + } }, tn = Array.isArray, qF = Array.prototype.push, GT = function(e21, t) { + qF.apply(e21, tn(t) ? t : [t]); + }, UF = Date.prototype.toISOString, VT = jc.default, ut = { addQueryPrefix: false, allowDots: false, allowEmptyArrays: false, arrayFormat: "indices", charset: "utf-8", charsetSentinel: false, commaRoundTrip: false, delimiter: "&", encode: true, encodeDotInKeys: false, encoder: _d.encode, encodeValuesOnly: false, filter: void 0, format: VT, formatter: jc.formatters[VT], indices: false, serializeDate: function(t) { + return UF.call(t); + }, skipNulls: false, strictNullHandling: false }, LF = function(t) { + return typeof t == "string" || typeof t == "number" || typeof t == "boolean" || typeof t == "symbol" || typeof t == "bigint"; + }, qx = {}, MF = function e21(t, r, n, i, o, a, s, c, u, l, p, d, f, m, h, v, y, x) { + for (var w = t, S = x, k = 0, A = false; (S = S.get(qx)) !== void 0 && !A; ) { + var C = S.get(t); + if (k += 1, typeof C < "u") { + if (C === k) throw new RangeError("Cyclic object value"); + A = true; + } + typeof S.get(qx) > "u" && (k = 0); + } + if (typeof l == "function" ? w = l(r, w) : w instanceof Date ? w = f(w) : n === "comma" && tn(w) && (w = _d.maybeMap(w, function(M) { + return M instanceof Date ? f(M) : M; + })), w === null) { + if (a) return u && !v ? u(r, ut.encoder, y, "key", m) : r; + w = ""; + } + if (LF(w) || _d.isBuffer(w)) { + if (u) { + var ae = v ? r : u(r, ut.encoder, y, "key", m); + return [h(ae) + "=" + h(u(w, ut.encoder, y, "value", m))]; + } + return [h(r) + "=" + h(String(w))]; + } + var Ie = []; + if (typeof w > "u") return Ie; + var Ce; + if (n === "comma" && tn(w)) v && u && (w = _d.maybeMap(w, u)), Ce = [{ value: w.length > 0 ? w.join(",") || null : void 0 }]; + else if (tn(l)) Ce = l; + else { + var $e = Object.keys(w); + Ce = p ? $e.sort(p) : $e; + } + var Ye = c ? String(r).replace(/\./g, "%2E") : String(r), ve = i && tn(w) && w.length === 1 ? Ye + "[]" : Ye; + if (o && tn(w) && w.length === 0) return ve + "[]"; + for (var Ne = 0; Ne < Ce.length; ++Ne) { + var He = Ce[Ne], Se = typeof He == "object" && He && typeof He.value < "u" ? He.value : w[He]; + if (!(s && Se === null)) { + var Le = d && c ? String(He).replace(/\./g, "%2E") : String(He), it = tn(w) ? typeof n == "function" ? n(ve, Le) : ve : ve + (d ? "." + Le : "[" + Le + "]"); + x.set(t, k); + var Ht = HT(); + Ht.set(qx, x), GT(Ie, e21(Se, it, n, i, o, a, s, c, n === "comma" && v && tn(w) ? null : u, l, p, d, f, m, h, v, y, Ht)); + } + } + return Ie; + }, FF = function(t) { + if (!t) return ut; + if (typeof t.allowEmptyArrays < "u" && typeof t.allowEmptyArrays != "boolean") throw new TypeError("`allowEmptyArrays` option can only be `true` or `false`, when provided"); + if (typeof t.encodeDotInKeys < "u" && typeof t.encodeDotInKeys != "boolean") throw new TypeError("`encodeDotInKeys` option can only be `true` or `false`, when provided"); + if (t.encoder !== null && typeof t.encoder < "u" && typeof t.encoder != "function") throw new TypeError("Encoder has to be a function."); + var r = t.charset || ut.charset; + if (typeof t.charset < "u" && t.charset !== "utf-8" && t.charset !== "iso-8859-1") throw new TypeError("The charset option must be either utf-8, iso-8859-1, or undefined"); + var n = jc.default; + if (typeof t.format < "u") { + if (!DF.call(jc.formatters, t.format)) throw new TypeError("Unknown format option provided."); + n = t.format; + } + var i = jc.formatters[n], o = ut.filter; + (typeof t.filter == "function" || tn(t.filter)) && (o = t.filter); + var a; + if (t.arrayFormat in JT ? a = t.arrayFormat : "indices" in t ? a = t.indices ? "indices" : "repeat" : a = ut.arrayFormat, "commaRoundTrip" in t && typeof t.commaRoundTrip != "boolean") throw new TypeError("`commaRoundTrip` must be a boolean, or absent"); + var s = typeof t.allowDots > "u" ? t.encodeDotInKeys === true ? true : ut.allowDots : !!t.allowDots; + return { addQueryPrefix: typeof t.addQueryPrefix == "boolean" ? t.addQueryPrefix : ut.addQueryPrefix, allowDots: s, allowEmptyArrays: typeof t.allowEmptyArrays == "boolean" ? !!t.allowEmptyArrays : ut.allowEmptyArrays, arrayFormat: a, charset: r, charsetSentinel: typeof t.charsetSentinel == "boolean" ? t.charsetSentinel : ut.charsetSentinel, commaRoundTrip: !!t.commaRoundTrip, delimiter: typeof t.delimiter > "u" ? ut.delimiter : t.delimiter, encode: typeof t.encode == "boolean" ? t.encode : ut.encode, encodeDotInKeys: typeof t.encodeDotInKeys == "boolean" ? t.encodeDotInKeys : ut.encodeDotInKeys, encoder: typeof t.encoder == "function" ? t.encoder : ut.encoder, encodeValuesOnly: typeof t.encodeValuesOnly == "boolean" ? t.encodeValuesOnly : ut.encodeValuesOnly, filter: o, format: n, formatter: i, serializeDate: typeof t.serializeDate == "function" ? t.serializeDate : ut.serializeDate, skipNulls: typeof t.skipNulls == "boolean" ? t.skipNulls : ut.skipNulls, sort: typeof t.sort == "function" ? t.sort : null, strictNullHandling: typeof t.strictNullHandling == "boolean" ? t.strictNullHandling : ut.strictNullHandling }; + }; + WT.exports = function(e21, t) { + var r = e21, n = FF(t), i, o; + typeof n.filter == "function" ? (o = n.filter, r = o("", r)) : tn(n.filter) && (o = n.filter, i = o); + var a = []; + if (typeof r != "object" || r === null) return ""; + var s = JT[n.arrayFormat], c = s === "comma" && n.commaRoundTrip; + i || (i = Object.keys(r)), n.sort && i.sort(n.sort); + for (var u = HT(), l = 0; l < i.length; ++l) { + var p = i[l], d = r[p]; + n.skipNulls && d === null || GT(a, MF(d, p, s, c, n.allowEmptyArrays, n.strictNullHandling, n.skipNulls, n.encodeDotInKeys, n.encode ? n.encoder : null, n.filter, n.sort, n.allowDots, n.serializeDate, n.format, n.formatter, n.encodeValuesOnly, n.charset, u)); + } + var f = a.join(n.delimiter), m = n.addQueryPrefix === true ? "?" : ""; + return n.charsetSentinel && (n.charset === "iso-8859-1" ? m += "utf8=%26%2310003%3B&" : m += "utf8=%E2%9C%93&"), f.length > 0 ? m + f : ""; + }; +}); +var QT = g((ife, YT) => { + "use strict"; + var rn = Dx(), wd = Object.prototype.hasOwnProperty, Ux = Array.isArray, We = { allowDots: false, allowEmptyArrays: false, allowPrototypes: false, allowSparse: false, arrayLimit: 20, charset: "utf-8", charsetSentinel: false, comma: false, decodeDotInKeys: false, decoder: rn.decode, delimiter: "&", depth: 5, duplicates: "combine", ignoreQueryPrefix: false, interpretNumericEntities: false, parameterLimit: 1e3, parseArrays: true, plainObjects: false, strictDepth: false, strictNullHandling: false, throwOnLimitExceeded: false }, ZF = function(e21) { + return e21.replace(/&#(\d+);/g, function(t, r) { + return String.fromCharCode(parseInt(r, 10)); + }); + }, XT = function(e21, t, r) { + if (e21 && typeof e21 == "string" && t.comma && e21.indexOf(",") > -1) return e21.split(","); + if (t.throwOnLimitExceeded && r >= t.arrayLimit) throw new RangeError("Array limit exceeded. Only " + t.arrayLimit + " element" + (t.arrayLimit === 1 ? "" : "s") + " allowed in an array."); + return e21; + }, BF = "utf8=%26%2310003%3B", VF = "utf8=%E2%9C%93", HF = function(t, r) { + var n = { __proto__: null }, i = r.ignoreQueryPrefix ? t.replace(/^\?/, "") : t; + i = i.replace(/%5B/gi, "[").replace(/%5D/gi, "]"); + var o = r.parameterLimit === 1 / 0 ? void 0 : r.parameterLimit, a = i.split(r.delimiter, r.throwOnLimitExceeded ? o + 1 : o); + if (r.throwOnLimitExceeded && a.length > o) throw new RangeError("Parameter limit exceeded. Only " + o + " parameter" + (o === 1 ? "" : "s") + " allowed."); + var s = -1, c, u = r.charset; + if (r.charsetSentinel) for (c = 0; c < a.length; ++c) a[c].indexOf("utf8=") === 0 && (a[c] === VF ? u = "utf-8" : a[c] === BF && (u = "iso-8859-1"), s = c, c = a.length); + for (c = 0; c < a.length; ++c) if (c !== s) { + var l = a[c], p = l.indexOf("]="), d = p === -1 ? l.indexOf("=") : p + 1, f, m; + if (d === -1 ? (f = r.decoder(l, We.decoder, u, "key"), m = r.strictNullHandling ? null : "") : (f = r.decoder(l.slice(0, d), We.decoder, u, "key"), f !== null && (m = rn.maybeMap(XT(l.slice(d + 1), r, Ux(n[f]) ? n[f].length : 0), function(v) { + return r.decoder(v, We.decoder, u, "value"); + }))), m && r.interpretNumericEntities && u === "iso-8859-1" && (m = ZF(String(m))), l.indexOf("[]=") > -1 && (m = Ux(m) ? [m] : m), r.comma && Ux(m) && m.length > r.arrayLimit) { + if (r.throwOnLimitExceeded) throw new RangeError("Array limit exceeded. Only " + r.arrayLimit + " element" + (r.arrayLimit === 1 ? "" : "s") + " allowed in an array."); + m = rn.combine([], m, r.arrayLimit, r.plainObjects); + } + if (f !== null) { + var h = wd.call(n, f); + h && r.duplicates === "combine" ? n[f] = rn.combine(n[f], m, r.arrayLimit, r.plainObjects) : (!h || r.duplicates === "last") && (n[f] = m); + } + } + return n; + }, JF = function(e21, t, r, n) { + var i = 0; + if (e21.length > 0 && e21[e21.length - 1] === "[]") { + var o = e21.slice(0, -1).join(""); + i = Array.isArray(t) && t[o] ? t[o].length : 0; + } + for (var a = n ? t : XT(t, r, i), s = e21.length - 1; s >= 0; --s) { + var c, u = e21[s]; + if (u === "[]" && r.parseArrays) rn.isOverflow(a) ? c = a : c = r.allowEmptyArrays && (a === "" || r.strictNullHandling && a === null) ? [] : rn.combine([], a, r.arrayLimit, r.plainObjects); + else { + c = r.plainObjects ? { __proto__: null } : {}; + var l = u.charAt(0) === "[" && u.charAt(u.length - 1) === "]" ? u.slice(1, -1) : u, p = r.decodeDotInKeys ? l.replace(/%2E/g, ".") : l, d = parseInt(p, 10), f = !isNaN(d) && u !== p && String(d) === p && d >= 0 && r.parseArrays; + if (!r.parseArrays && p === "") c = { 0: a }; + else if (f && d < r.arrayLimit) c = [], c[d] = a; + else { + if (f && r.throwOnLimitExceeded) throw new RangeError("Array limit exceeded. Only " + r.arrayLimit + " element" + (r.arrayLimit === 1 ? "" : "s") + " allowed in an array."); + f ? (c[d] = a, rn.markOverflow(c, d)) : p !== "__proto__" && (c[p] = a); + } + } + a = c; + } + return a; + }, GF = function(t, r) { + var n = r.allowDots ? t.replace(/\.([^.[]+)/g, "[$1]") : t; + if (r.depth <= 0) return !r.plainObjects && wd.call(Object.prototype, n) && !r.allowPrototypes ? void 0 : [n]; + var i = /(\[[^[\]]*])/, o = /(\[[^[\]]*])/g, a = i.exec(n), s = a ? n.slice(0, a.index) : n, c = []; + if (s) { + if (!r.plainObjects && wd.call(Object.prototype, s) && !r.allowPrototypes) return; + c[c.length] = s; + } + for (var u = 0; (a = o.exec(n)) !== null && u < r.depth; ) { + u += 1; + var l = a[1].slice(1, -1); + if (!r.plainObjects && wd.call(Object.prototype, l) && !r.allowPrototypes) return; + c[c.length] = a[1]; + } + if (a) { + if (r.strictDepth === true) throw new RangeError("Input depth exceeded depth option of " + r.depth + " and strictDepth is true"); + c[c.length] = "[" + n.slice(a.index) + "]"; + } + return c; + }, WF = function(t, r, n, i) { + if (t) { + var o = GF(t, n); + if (o) return JF(o, r, n, i); + } + }, KF = function(t) { + if (!t) return We; + if (typeof t.allowEmptyArrays < "u" && typeof t.allowEmptyArrays != "boolean") throw new TypeError("`allowEmptyArrays` option can only be `true` or `false`, when provided"); + if (typeof t.decodeDotInKeys < "u" && typeof t.decodeDotInKeys != "boolean") throw new TypeError("`decodeDotInKeys` option can only be `true` or `false`, when provided"); + if (t.decoder !== null && typeof t.decoder < "u" && typeof t.decoder != "function") throw new TypeError("Decoder has to be a function."); + if (typeof t.charset < "u" && t.charset !== "utf-8" && t.charset !== "iso-8859-1") throw new TypeError("The charset option must be either utf-8, iso-8859-1, or undefined"); + if (typeof t.throwOnLimitExceeded < "u" && typeof t.throwOnLimitExceeded != "boolean") throw new TypeError("`throwOnLimitExceeded` option must be a boolean"); + var r = typeof t.charset > "u" ? We.charset : t.charset, n = typeof t.duplicates > "u" ? We.duplicates : t.duplicates; + if (n !== "combine" && n !== "first" && n !== "last") throw new TypeError("The duplicates option must be either combine, first, or last"); + var i = typeof t.allowDots > "u" ? t.decodeDotInKeys === true ? true : We.allowDots : !!t.allowDots; + return { allowDots: i, allowEmptyArrays: typeof t.allowEmptyArrays == "boolean" ? !!t.allowEmptyArrays : We.allowEmptyArrays, allowPrototypes: typeof t.allowPrototypes == "boolean" ? t.allowPrototypes : We.allowPrototypes, allowSparse: typeof t.allowSparse == "boolean" ? t.allowSparse : We.allowSparse, arrayLimit: typeof t.arrayLimit == "number" ? t.arrayLimit : We.arrayLimit, charset: r, charsetSentinel: typeof t.charsetSentinel == "boolean" ? t.charsetSentinel : We.charsetSentinel, comma: typeof t.comma == "boolean" ? t.comma : We.comma, decodeDotInKeys: typeof t.decodeDotInKeys == "boolean" ? t.decodeDotInKeys : We.decodeDotInKeys, decoder: typeof t.decoder == "function" ? t.decoder : We.decoder, delimiter: typeof t.delimiter == "string" || rn.isRegExp(t.delimiter) ? t.delimiter : We.delimiter, depth: typeof t.depth == "number" || t.depth === false ? +t.depth : We.depth, duplicates: n, ignoreQueryPrefix: t.ignoreQueryPrefix === true, interpretNumericEntities: typeof t.interpretNumericEntities == "boolean" ? t.interpretNumericEntities : We.interpretNumericEntities, parameterLimit: typeof t.parameterLimit == "number" ? t.parameterLimit : We.parameterLimit, parseArrays: t.parseArrays !== false, plainObjects: typeof t.plainObjects == "boolean" ? t.plainObjects : We.plainObjects, strictDepth: typeof t.strictDepth == "boolean" ? !!t.strictDepth : We.strictDepth, strictNullHandling: typeof t.strictNullHandling == "boolean" ? t.strictNullHandling : We.strictNullHandling, throwOnLimitExceeded: typeof t.throwOnLimitExceeded == "boolean" ? t.throwOnLimitExceeded : false }; + }; + YT.exports = function(e21, t) { + var r = KF(t); + if (e21 === "" || e21 === null || typeof e21 > "u") return r.plainObjects ? { __proto__: null } : {}; + for (var n = typeof e21 == "string" ? HF(e21, r) : e21, i = r.plainObjects ? { __proto__: null } : {}, o = Object.keys(n), a = 0; a < o.length; ++a) { + var s = o[a], c = WF(s, n[s], r, typeof e21 == "string"); + i = rn.merge(i, c, r); + } + return r.allowSparse === true ? i : rn.compact(i); + }; +}); +var $d = g((ofe, eI) => { + "use strict"; + var XF = KT(), YF = QT(), QF = xd(); + eI.exports = { formats: QF, parse: YF, stringify: XF }; +}); +var aI = g((afe, oI) => { + "use strict"; + var eZ = Po(), tZ = ic(), Sd = oc(), Cr = pc()("body-parser:urlencoded"), rZ = Ar()("body-parser"), nZ = vc(), rI = Mo(); + oI.exports = iZ; + var tI = /* @__PURE__ */ Object.create(null); + function iZ(e21) { + var t = e21 || {}; + t.extended === void 0 && rZ("undefined extended: provide extended option"); + var r = t.extended !== false, n = t.inflate !== false, i = typeof t.limit != "number" ? eZ.parse(t.limit || "100kb") : t.limit, o = t.type || "application/x-www-form-urlencoded", a = t.verify || false; + if (a !== false && typeof a != "function") throw new TypeError("option verify must be function"); + var s = r ? oZ(t) : sZ(t), c = typeof o != "function" ? cZ(o) : o; + function u(l) { + return l.length ? s(l) : {}; + } + return function(p, d, f) { + if (p._body) { + Cr("body already parsed"), f(); + return; + } + if (p.body = p.body || {}, !rI.hasBody(p)) { + Cr("skip empty body"), f(); + return; + } + if (Cr("content-type %j", p.headers["content-type"]), !c(p)) { + Cr("skip parsing"), f(); + return; + } + var m = aZ(p) || "utf-8"; + if (m !== "utf-8") { + Cr("invalid charset"), f(Sd(415, 'unsupported charset "' + m.toUpperCase() + '"', { charset: m, type: "charset.unsupported" })); + return; + } + nZ(p, d, f, u, Cr, { debug: Cr, encoding: m, inflate: n, limit: i, verify: a }); + }; + } + function oZ(e21) { + var t = e21.parameterLimit !== void 0 ? e21.parameterLimit : 1e3, r = e21.depth !== void 0 ? e21.depth : 32, n = iI("qs"); + if (isNaN(t) || t < 1) throw new TypeError("option parameterLimit must be a positive number"); + if (isNaN(r) || r < 0) throw new TypeError("option depth must be a zero or a positive number"); + return isFinite(t) && (t = t | 0), function(o) { + var a = nI(o, t); + if (a === void 0) throw Cr("too many parameters"), Sd(413, "too many parameters", { type: "parameters.too.many" }); + var s = Math.max(100, a); + Cr("parse extended urlencoding"); + try { + return n(o, { allowPrototypes: true, arrayLimit: s, depth: r, strictDepth: true, parameterLimit: t }); + } catch (c) { + throw c instanceof RangeError ? Sd(400, "The input exceeded the depth", { type: "querystring.parse.rangeError" }) : c; + } + }; + } + function aZ(e21) { + try { + return (tZ.parse(e21).parameters.charset || "").toLowerCase(); + } catch { + return; + } + } + function nI(e21, t) { + for (var r = 0, n = 0; (n = e21.indexOf("&", n)) !== -1; ) if (r++, n++, r === t) return; + return r; + } + function iI(e21) { + var t = tI[e21]; + if (t !== void 0) return t.parse; + switch (e21) { + case "qs": + t = $d(); + break; + case "querystring": + t = O("querystring"); + break; + } + return tI[e21] = t, t.parse; + } + function sZ(e21) { + var t = e21.parameterLimit !== void 0 ? e21.parameterLimit : 1e3, r = iI("querystring"); + if (isNaN(t) || t < 1) throw new TypeError("option parameterLimit must be a positive number"); + return isFinite(t) && (t = t | 0), function(i) { + var o = nI(i, t); + if (o === void 0) throw Cr("too many parameters"), Sd(413, "too many parameters", { type: "parameters.too.many" }); + return Cr("parse urlencoding"), r(i, void 0, void 0, { maxKeys: t }); + }; + } + function cZ(e21) { + return function(r) { + return !!rI(r, e21); + }; + } +}); +var uI = g((Kn, cI) => { + "use strict"; + var uZ = Ar()("body-parser"), sI = /* @__PURE__ */ Object.create(null); + Kn = cI.exports = uZ.function(lZ, "bodyParser: use individual json/urlencoded middlewares"); + Object.defineProperty(Kn, "json", { configurable: true, enumerable: true, get: kd("json") }); + Object.defineProperty(Kn, "raw", { configurable: true, enumerable: true, get: kd("raw") }); + Object.defineProperty(Kn, "text", { configurable: true, enumerable: true, get: kd("text") }); + Object.defineProperty(Kn, "urlencoded", { configurable: true, enumerable: true, get: kd("urlencoded") }); + function lZ(e21) { + var t = Object.create(e21 || null, { type: { configurable: true, enumerable: true, value: void 0, writable: true } }), r = Kn.urlencoded(t), n = Kn.json(t); + return function(o, a, s) { + n(o, a, function(c) { + if (c) return s(c); + r(o, a, s); + }); + }; + } + function kd(e21) { + return function() { + return pZ(e21); + }; + } + function pZ(e21) { + var t = sI[e21]; + if (t !== void 0) return t; + switch (e21) { + case "json": + t = F4(); + break; + case "raw": + t = V4(); + break; + case "text": + t = G4(); + break; + case "urlencoded": + t = aI(); + break; + } + return sI[e21] = t; + } +}); +var pI = g((sfe, lI) => { + "use strict"; + lI.exports = fZ; + var dZ = Object.prototype.hasOwnProperty; + function fZ(e21, t, r) { + if (!e21) throw new TypeError("argument dest is required"); + if (!t) throw new TypeError("argument src is required"); + return r === void 0 && (r = true), Object.getOwnPropertyNames(t).forEach(function(i) { + if (!(!r && dZ.call(e21, i))) { + var o = Object.getOwnPropertyDescriptor(t, i); + Object.defineProperty(e21, i, o); + } + }), e21; + } +}); +var fI = g((cfe, dI) => { + var Ac = 1e3, Rc = Ac * 60, Cc = Rc * 60, Nc = Cc * 24, mZ = Nc * 365.25; + dI.exports = function(e21, t) { + t = t || {}; + var r = typeof e21; + if (r === "string" && e21.length > 0) return hZ(e21); + if (r === "number" && isNaN(e21) === false) return t.long ? gZ(e21) : vZ(e21); + throw new Error("val is not a non-empty string or a valid number. val=" + JSON.stringify(e21)); + }; + function hZ(e21) { + if (e21 = String(e21), !(e21.length > 100)) { + var t = /^((?:\d+)?\.?\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|years?|yrs?|y)?$/i.exec(e21); + if (t) { + var r = parseFloat(t[1]), n = (t[2] || "ms").toLowerCase(); + switch (n) { + case "years": + case "year": + case "yrs": + case "yr": + case "y": + return r * mZ; + case "days": + case "day": + case "d": + return r * Nc; + case "hours": + case "hour": + case "hrs": + case "hr": + case "h": + return r * Cc; + case "minutes": + case "minute": + case "mins": + case "min": + case "m": + return r * Rc; + case "seconds": + case "second": + case "secs": + case "sec": + case "s": + return r * Ac; + case "milliseconds": + case "millisecond": + case "msecs": + case "msec": + case "ms": + return r; + default: + return; + } + } + } + } + function vZ(e21) { + return e21 >= Nc ? Math.round(e21 / Nc) + "d" : e21 >= Cc ? Math.round(e21 / Cc) + "h" : e21 >= Rc ? Math.round(e21 / Rc) + "m" : e21 >= Ac ? Math.round(e21 / Ac) + "s" : e21 + "ms"; + } + function gZ(e21) { + return Ed(e21, Nc, "day") || Ed(e21, Cc, "hour") || Ed(e21, Rc, "minute") || Ed(e21, Ac, "second") || e21 + " ms"; + } + function Ed(e21, t, r) { + if (!(e21 < t)) return e21 < t * 1.5 ? Math.floor(e21 / t) + " " + r : Math.ceil(e21 / t) + " " + r + "s"; + } +}); +var Fx = g((xe, mI) => { + xe = mI.exports = Mx.debug = Mx.default = Mx; + xe.coerce = wZ; + xe.disable = bZ; + xe.enable = xZ; + xe.enabled = _Z; + xe.humanize = fI(); + xe.names = []; + xe.skips = []; + xe.formatters = {}; + var Lx; + function yZ(e21) { + var t = 0, r; + for (r in e21) t = (t << 5) - t + e21.charCodeAt(r), t |= 0; + return xe.colors[Math.abs(t) % xe.colors.length]; + } + function Mx(e21) { + function t() { + if (t.enabled) { + var r = t, n = +/* @__PURE__ */ new Date(), i = n - (Lx || n); + r.diff = i, r.prev = Lx, r.curr = n, Lx = n; + for (var o = new Array(arguments.length), a = 0; a < o.length; a++) o[a] = arguments[a]; + o[0] = xe.coerce(o[0]), typeof o[0] != "string" && o.unshift("%O"); + var s = 0; + o[0] = o[0].replace(/%([a-zA-Z%])/g, function(u, l) { + if (u === "%%") return u; + s++; + var p = xe.formatters[l]; + if (typeof p == "function") { + var d = o[s]; + u = p.call(r, d), o.splice(s, 1), s--; + } + return u; + }), xe.formatArgs.call(r, o); + var c = t.log || xe.log || console.log.bind(console); + c.apply(r, o); + } + } + return t.namespace = e21, t.enabled = xe.enabled(e21), t.useColors = xe.useColors(), t.color = yZ(e21), typeof xe.init == "function" && xe.init(t), t; + } + function xZ(e21) { + xe.save(e21), xe.names = [], xe.skips = []; + for (var t = (typeof e21 == "string" ? e21 : "").split(/[\s,]+/), r = t.length, n = 0; n < r; n++) t[n] && (e21 = t[n].replace(/\*/g, ".*?"), e21[0] === "-" ? xe.skips.push(new RegExp("^" + e21.substr(1) + "$")) : xe.names.push(new RegExp("^" + e21 + "$"))); + } + function bZ() { + xe.enable(""); + } + function _Z(e21) { + var t, r; + for (t = 0, r = xe.skips.length; t < r; t++) if (xe.skips[t].test(e21)) return false; + for (t = 0, r = xe.names.length; t < r; t++) if (xe.names[t].test(e21)) return true; + return false; + } + function wZ(e21) { + return e21 instanceof Error ? e21.stack || e21.message : e21; + } +}); +var gI = g((Dt, vI) => { + Dt = vI.exports = Fx(); + Dt.log = kZ; + Dt.formatArgs = SZ; + Dt.save = EZ; + Dt.load = hI; + Dt.useColors = $Z; + Dt.storage = typeof chrome < "u" && typeof chrome.storage < "u" ? chrome.storage.local : OZ(); + Dt.colors = ["lightseagreen", "forestgreen", "goldenrod", "dodgerblue", "darkorchid", "crimson"]; + function $Z() { + return typeof window < "u" && window.process && window.process.type === "renderer" ? true : typeof document < "u" && document.documentElement && document.documentElement.style && document.documentElement.style.WebkitAppearance || typeof window < "u" && window.console && (window.console.firebug || window.console.exception && window.console.table) || typeof navigator < "u" && navigator.userAgent && navigator.userAgent.toLowerCase().match(/firefox\/(\d+)/) && parseInt(RegExp.$1, 10) >= 31 || typeof navigator < "u" && navigator.userAgent && navigator.userAgent.toLowerCase().match(/applewebkit\/(\d+)/); + } + Dt.formatters.j = function(e21) { + try { + return JSON.stringify(e21); + } catch (t) { + return "[UnexpectedJSONParseError]: " + t.message; + } + }; + function SZ(e21) { + var t = this.useColors; + if (e21[0] = (t ? "%c" : "") + this.namespace + (t ? " %c" : " ") + e21[0] + (t ? "%c " : " ") + "+" + Dt.humanize(this.diff), !!t) { + var r = "color: " + this.color; + e21.splice(1, 0, r, "color: inherit"); + var n = 0, i = 0; + e21[0].replace(/%[a-zA-Z%]/g, function(o) { + o !== "%%" && (n++, o === "%c" && (i = n)); + }), e21.splice(i, 0, r); + } + } + function kZ() { + return typeof console == "object" && console.log && Function.prototype.apply.call(console.log, console, arguments); + } + function EZ(e21) { + try { + e21 == null ? Dt.storage.removeItem("debug") : Dt.storage.debug = e21; + } catch { + } + } + function hI() { + var e21; + try { + e21 = Dt.storage.debug; + } catch { + } + return !e21 && typeof process < "u" && "env" in process && (e21 = process.env.DEBUG), e21; + } + Dt.enable(hI()); + function OZ() { + try { + return window.localStorage; + } catch { + } + } +}); +var _I = g((dt, bI) => { + var yI = O("tty"), Dc = O("util"); + dt = bI.exports = Fx(); + dt.init = RZ; + dt.log = PZ; + dt.formatArgs = zZ; + dt.save = jZ; + dt.load = xI; + dt.useColors = IZ; + dt.colors = [6, 2, 3, 4, 5, 1]; + dt.inspectOpts = Object.keys(process.env).filter(function(e21) { + return /^debug_/i.test(e21); + }).reduce(function(e21, t) { + var r = t.substring(6).toLowerCase().replace(/_([a-z])/g, function(i, o) { + return o.toUpperCase(); + }), n = process.env[t]; + return /^(yes|on|true|enabled)$/i.test(n) ? n = true : /^(no|off|false|disabled)$/i.test(n) ? n = false : n === "null" ? n = null : n = Number(n), e21[r] = n, e21; + }, {}); + var Wo = parseInt(process.env.DEBUG_FD, 10) || 2; + Wo !== 1 && Wo !== 2 && Dc.deprecate(function() { + }, "except for stderr(2) and stdout(1), any other usage of DEBUG_FD is deprecated. Override debug.log if you want to use a different log function (https://git.io/debug_fd)")(); + var TZ = Wo === 1 ? process.stdout : Wo === 2 ? process.stderr : AZ(Wo); + function IZ() { + return "colors" in dt.inspectOpts ? !!dt.inspectOpts.colors : yI.isatty(Wo); + } + dt.formatters.o = function(e21) { + return this.inspectOpts.colors = this.useColors, Dc.inspect(e21, this.inspectOpts).split(` +`).map(function(t) { + return t.trim(); + }).join(" "); + }; + dt.formatters.O = function(e21) { + return this.inspectOpts.colors = this.useColors, Dc.inspect(e21, this.inspectOpts); + }; + function zZ(e21) { + var t = this.namespace, r = this.useColors; + if (r) { + var n = this.color, i = " \x1B[3" + n + ";1m" + t + " \x1B[0m"; + e21[0] = i + e21[0].split(` +`).join(` +` + i), e21.push("\x1B[3" + n + "m+" + dt.humanize(this.diff) + "\x1B[0m"); + } else e21[0] = (/* @__PURE__ */ new Date()).toUTCString() + " " + t + " " + e21[0]; + } + function PZ() { + return TZ.write(Dc.format.apply(Dc, arguments) + ` +`); + } + function jZ(e21) { + e21 == null ? delete process.env.DEBUG : process.env.DEBUG = e21; + } + function xI() { + return process.env.DEBUG; + } + function AZ(e21) { + var t, r = process.binding("tty_wrap"); + switch (r.guessHandleType(e21)) { + case "TTY": + t = new yI.WriteStream(e21), t._type = "tty", t._handle && t._handle.unref && t._handle.unref(); + break; + case "FILE": + var n = O("fs"); + t = new n.SyncWriteStream(e21, { autoClose: false }), t._type = "fs"; + break; + case "PIPE": + case "TCP": + var i = O("net"); + t = new i.Socket({ fd: e21, readable: false, writable: true }), t.readable = false, t.read = null, t._type = "pipe", t._handle && t._handle.unref && t._handle.unref(); + break; + default: + throw new Error("Implement me. Unknown stream file type!"); + } + return t.fd = e21, t._isStdio = true, t; + } + function RZ(e21) { + e21.inspectOpts = {}; + for (var t = Object.keys(dt.inspectOpts), r = 0; r < t.length; r++) e21.inspectOpts[t[r]] = dt.inspectOpts[t[r]]; + } + dt.enable(xI()); +}); +var wI = g((ufe, Zx) => { + typeof process < "u" && process.type === "renderer" ? Zx.exports = gI() : Zx.exports = _I(); +}); +var Od = g((lfe, $I) => { + "use strict"; + $I.exports = qZ; + var CZ = /(?:[^\x21\x23-\x3B\x3D\x3F-\x5F\x61-\x7A\x7C\x7E]|%(?:[^0-9A-Fa-f]|[0-9A-Fa-f][^0-9A-Fa-f]|$))+/g, NZ = /(^|[^\uD800-\uDBFF])[\uDC00-\uDFFF]|[\uD800-\uDBFF]([^\uDC00-\uDFFF]|$)/g, DZ = "$1\uFFFD$2"; + function qZ(e21) { + return String(e21).replace(NZ, DZ).replace(CZ, encodeURI); + } +}); +var qc = g((pfe, SI) => { + "use strict"; + var UZ = /["'&<>]/; + SI.exports = LZ; + function LZ(e21) { + var t = "" + e21, r = UZ.exec(t); + if (!r) return t; + var n, i = "", o = 0, a = 0; + for (o = r.index; o < t.length; o++) { + switch (t.charCodeAt(o)) { + case 34: + n = """; + break; + case 38: + n = "&"; + break; + case 39: + n = "'"; + break; + case 60: + n = "<"; + break; + case 62: + n = ">"; + break; + default: + continue; + } + a !== o && (i += t.substring(a, o)), a = o + 1, i += n; + } + return a !== o ? i + t.substring(a, o) : i; + } +}); +var Ko = g((dfe, Bx) => { + "use strict"; + var EI = O("url"), kI = EI.parse, Td = EI.Url; + Bx.exports = OI; + Bx.exports.original = MZ; + function OI(e21) { + var t = e21.url; + if (t !== void 0) { + var r = e21._parsedUrl; + return II(t, r) ? r : (r = TI(t), r._raw = t, e21._parsedUrl = r); + } + } + function MZ(e21) { + var t = e21.originalUrl; + if (typeof t != "string") return OI(e21); + var r = e21._parsedOriginalUrl; + return II(t, r) ? r : (r = TI(t), r._raw = t, e21._parsedOriginalUrl = r); + } + function TI(e21) { + if (typeof e21 != "string" || e21.charCodeAt(0) !== 47) return kI(e21); + for (var t = e21, r = null, n = null, i = 1; i < e21.length; i++) switch (e21.charCodeAt(i)) { + case 63: + n === null && (t = e21.substring(0, i), r = e21.substring(i + 1), n = e21.substring(i)); + break; + case 9: + case 10: + case 12: + case 13: + case 32: + case 35: + case 160: + case 65279: + return kI(e21); + } + var o = Td !== void 0 ? new Td() : {}; + return o.path = e21, o.href = e21, o.pathname = t, n !== null && (o.query = r, o.search = n), o; + } + function II(e21, t) { + return typeof t == "object" && t !== null && (Td === void 0 || t instanceof Td) && t._raw === e21; + } +}); +var zI = g((ffe, FZ) => { + FZ.exports = { "100": "Continue", "101": "Switching Protocols", "102": "Processing", "103": "Early Hints", "200": "OK", "201": "Created", "202": "Accepted", "203": "Non-Authoritative Information", "204": "No Content", "205": "Reset Content", "206": "Partial Content", "207": "Multi-Status", "208": "Already Reported", "226": "IM Used", "300": "Multiple Choices", "301": "Moved Permanently", "302": "Found", "303": "See Other", "304": "Not Modified", "305": "Use Proxy", "307": "Temporary Redirect", "308": "Permanent Redirect", "400": "Bad Request", "401": "Unauthorized", "402": "Payment Required", "403": "Forbidden", "404": "Not Found", "405": "Method Not Allowed", "406": "Not Acceptable", "407": "Proxy Authentication Required", "408": "Request Timeout", "409": "Conflict", "410": "Gone", "411": "Length Required", "412": "Precondition Failed", "413": "Payload Too Large", "414": "URI Too Long", "415": "Unsupported Media Type", "416": "Range Not Satisfiable", "417": "Expectation Failed", "418": "I'm a Teapot", "421": "Misdirected Request", "422": "Unprocessable Entity", "423": "Locked", "424": "Failed Dependency", "425": "Too Early", "426": "Upgrade Required", "428": "Precondition Required", "429": "Too Many Requests", "431": "Request Header Fields Too Large", "451": "Unavailable For Legal Reasons", "500": "Internal Server Error", "501": "Not Implemented", "502": "Bad Gateway", "503": "Service Unavailable", "504": "Gateway Timeout", "505": "HTTP Version Not Supported", "506": "Variant Also Negotiates", "507": "Insufficient Storage", "508": "Loop Detected", "509": "Bandwidth Limit Exceeded", "510": "Not Extended", "511": "Network Authentication Required" }; +}); +var Uc = g((mfe, jI) => { + "use strict"; + var Vx = zI(); + jI.exports = Nr; + Nr.message = Vx; + Nr.code = ZZ(Vx); + Nr.codes = BZ(Vx); + Nr.redirect = { 300: true, 301: true, 302: true, 303: true, 305: true, 307: true, 308: true }; + Nr.empty = { 204: true, 205: true, 304: true }; + Nr.retry = { 502: true, 503: true, 504: true }; + function ZZ(e21) { + var t = {}; + return Object.keys(e21).forEach(function(n) { + var i = e21[n], o = Number(n); + t[i.toLowerCase()] = o; + }), t; + } + function BZ(e21) { + return Object.keys(e21).map(function(r) { + return Number(r); + }); + } + function VZ(e21) { + var t = e21.toLowerCase(); + if (!Object.prototype.hasOwnProperty.call(Nr.code, t)) throw new Error('invalid status message: "' + e21 + '"'); + return Nr.code[t]; + } + function PI(e21) { + if (!Object.prototype.hasOwnProperty.call(Nr.message, e21)) throw new Error("invalid status code: " + e21); + return Nr.message[e21]; + } + function Nr(e21) { + if (typeof e21 == "number") return PI(e21); + if (typeof e21 != "string") throw new TypeError("code must be a number or string"); + var t = parseInt(e21, 10); + return isNaN(t) ? VZ(e21) : PI(t); + } +}); +var DI = g((hfe, NI) => { + "use strict"; + var Hx = wI()("finalhandler"), HZ = Od(), JZ = qc(), RI = hc(), GZ = Ko(), CI = Uc(), WZ = id(), KZ = /\x20{2}/g, XZ = /\n/g, YZ = typeof setImmediate == "function" ? setImmediate : function(e21) { + process.nextTick(e21.bind.apply(e21, arguments)); + }, QZ = RI.isFinished; + function eB(e21) { + var t = JZ(e21).replace(XZ, "
").replace(KZ, "  "); + return ` + + + +Error + + +
` + t + `
+ + +`; + } + NI.exports = tB; + function tB(e21, t, r) { + var n = r || {}, i = n.env || process.env.NODE_ENV || "development", o = n.onerror; + return function(a) { + var s, c, u; + if (!a && AI(t)) { + Hx("cannot 404 after headers sent"); + return; + } + if (a ? (u = iB(a), u === void 0 ? u = aB(t) : s = rB(a), c = nB(a, u, i)) : (u = 404, c = "Cannot " + e21.method + " " + HZ(oB(e21))), Hx("default %s", u), a && o && YZ(o, a, e21, t), AI(t)) { + Hx("cannot %d after headers sent", u), e21.socket && e21.socket.destroy(); + return; + } + sB(e21, t, u, s, c); + }; + } + function rB(e21) { + if (!(!e21.headers || typeof e21.headers != "object")) { + for (var t = /* @__PURE__ */ Object.create(null), r = Object.keys(e21.headers), n = 0; n < r.length; n++) { + var i = r[n]; + t[i] = e21.headers[i]; + } + return t; + } + } + function nB(e21, t, r) { + var n; + return r !== "production" && (n = e21.stack, !n && typeof e21.toString == "function" && (n = e21.toString())), n || CI.message[t]; + } + function iB(e21) { + if (typeof e21.status == "number" && e21.status >= 400 && e21.status < 600) return e21.status; + if (typeof e21.statusCode == "number" && e21.statusCode >= 400 && e21.statusCode < 600) return e21.statusCode; + } + function oB(e21) { + try { + return GZ.original(e21).pathname; + } catch { + return "resource"; + } + } + function aB(e21) { + var t = e21.statusCode; + return (typeof t != "number" || t < 400 || t > 599) && (t = 500), t; + } + function AI(e21) { + return typeof e21.headersSent != "boolean" ? !!e21._header : e21.headersSent; + } + function sB(e21, t, r, n, i) { + function o() { + var a = eB(i); + if (t.statusCode = r, e21.httpVersionMajor < 2 && (t.statusMessage = CI.message[r]), t.removeHeader("Content-Encoding"), t.removeHeader("Content-Language"), t.removeHeader("Content-Range"), cB(t, n), t.setHeader("Content-Security-Policy", "default-src 'none'"), t.setHeader("X-Content-Type-Options", "nosniff"), t.setHeader("Content-Type", "text/html; charset=utf-8"), t.setHeader("Content-Length", Buffer.byteLength(a, "utf8")), e21.method === "HEAD") { + t.end(); + return; + } + t.end(a, "utf8"); + } + if (QZ(e21)) { + o(); + return; + } + WZ(e21), RI(e21, o), e21.resume(); + } + function cB(e21, t) { + if (t) for (var r = Object.keys(t), n = 0; n < r.length; n++) { + var i = r[n]; + e21.setHeader(i, t[i]); + } + } +}); +var UI = g((vfe, qI) => { + var Lc = 1e3, Mc = Lc * 60, Fc = Mc * 60, Zc = Fc * 24, uB = Zc * 365.25; + qI.exports = function(e21, t) { + t = t || {}; + var r = typeof e21; + if (r === "string" && e21.length > 0) return lB(e21); + if (r === "number" && isNaN(e21) === false) return t.long ? dB(e21) : pB(e21); + throw new Error("val is not a non-empty string or a valid number. val=" + JSON.stringify(e21)); + }; + function lB(e21) { + if (e21 = String(e21), !(e21.length > 100)) { + var t = /^((?:\d+)?\.?\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|years?|yrs?|y)?$/i.exec(e21); + if (t) { + var r = parseFloat(t[1]), n = (t[2] || "ms").toLowerCase(); + switch (n) { + case "years": + case "year": + case "yrs": + case "yr": + case "y": + return r * uB; + case "days": + case "day": + case "d": + return r * Zc; + case "hours": + case "hour": + case "hrs": + case "hr": + case "h": + return r * Fc; + case "minutes": + case "minute": + case "mins": + case "min": + case "m": + return r * Mc; + case "seconds": + case "second": + case "secs": + case "sec": + case "s": + return r * Lc; + case "milliseconds": + case "millisecond": + case "msecs": + case "msec": + case "ms": + return r; + default: + return; + } + } + } + } + function pB(e21) { + return e21 >= Zc ? Math.round(e21 / Zc) + "d" : e21 >= Fc ? Math.round(e21 / Fc) + "h" : e21 >= Mc ? Math.round(e21 / Mc) + "m" : e21 >= Lc ? Math.round(e21 / Lc) + "s" : e21 + "ms"; + } + function dB(e21) { + return Id(e21, Zc, "day") || Id(e21, Fc, "hour") || Id(e21, Mc, "minute") || Id(e21, Lc, "second") || e21 + " ms"; + } + function Id(e21, t, r) { + if (!(e21 < t)) return e21 < t * 1.5 ? Math.floor(e21 / t) + " " + r : Math.ceil(e21 / t) + " " + r + "s"; + } +}); +var Wx = g((be, LI) => { + be = LI.exports = Gx.debug = Gx.default = Gx; + be.coerce = gB; + be.disable = hB; + be.enable = mB; + be.enabled = vB; + be.humanize = UI(); + be.names = []; + be.skips = []; + be.formatters = {}; + var Jx; + function fB(e21) { + var t = 0, r; + for (r in e21) t = (t << 5) - t + e21.charCodeAt(r), t |= 0; + return be.colors[Math.abs(t) % be.colors.length]; + } + function Gx(e21) { + function t() { + if (t.enabled) { + var r = t, n = +/* @__PURE__ */ new Date(), i = n - (Jx || n); + r.diff = i, r.prev = Jx, r.curr = n, Jx = n; + for (var o = new Array(arguments.length), a = 0; a < o.length; a++) o[a] = arguments[a]; + o[0] = be.coerce(o[0]), typeof o[0] != "string" && o.unshift("%O"); + var s = 0; + o[0] = o[0].replace(/%([a-zA-Z%])/g, function(u, l) { + if (u === "%%") return u; + s++; + var p = be.formatters[l]; + if (typeof p == "function") { + var d = o[s]; + u = p.call(r, d), o.splice(s, 1), s--; + } + return u; + }), be.formatArgs.call(r, o); + var c = t.log || be.log || console.log.bind(console); + c.apply(r, o); + } + } + return t.namespace = e21, t.enabled = be.enabled(e21), t.useColors = be.useColors(), t.color = fB(e21), typeof be.init == "function" && be.init(t), t; + } + function mB(e21) { + be.save(e21), be.names = [], be.skips = []; + for (var t = (typeof e21 == "string" ? e21 : "").split(/[\s,]+/), r = t.length, n = 0; n < r; n++) t[n] && (e21 = t[n].replace(/\*/g, ".*?"), e21[0] === "-" ? be.skips.push(new RegExp("^" + e21.substr(1) + "$")) : be.names.push(new RegExp("^" + e21 + "$"))); + } + function hB() { + be.enable(""); + } + function vB(e21) { + var t, r; + for (t = 0, r = be.skips.length; t < r; t++) if (be.skips[t].test(e21)) return false; + for (t = 0, r = be.names.length; t < r; t++) if (be.names[t].test(e21)) return true; + return false; + } + function gB(e21) { + return e21 instanceof Error ? e21.stack || e21.message : e21; + } +}); +var ZI = g((qt, FI) => { + qt = FI.exports = Wx(); + qt.log = bB; + qt.formatArgs = xB; + qt.save = _B; + qt.load = MI; + qt.useColors = yB; + qt.storage = typeof chrome < "u" && typeof chrome.storage < "u" ? chrome.storage.local : wB(); + qt.colors = ["lightseagreen", "forestgreen", "goldenrod", "dodgerblue", "darkorchid", "crimson"]; + function yB() { + return typeof window < "u" && window.process && window.process.type === "renderer" ? true : typeof document < "u" && document.documentElement && document.documentElement.style && document.documentElement.style.WebkitAppearance || typeof window < "u" && window.console && (window.console.firebug || window.console.exception && window.console.table) || typeof navigator < "u" && navigator.userAgent && navigator.userAgent.toLowerCase().match(/firefox\/(\d+)/) && parseInt(RegExp.$1, 10) >= 31 || typeof navigator < "u" && navigator.userAgent && navigator.userAgent.toLowerCase().match(/applewebkit\/(\d+)/); + } + qt.formatters.j = function(e21) { + try { + return JSON.stringify(e21); + } catch (t) { + return "[UnexpectedJSONParseError]: " + t.message; + } + }; + function xB(e21) { + var t = this.useColors; + if (e21[0] = (t ? "%c" : "") + this.namespace + (t ? " %c" : " ") + e21[0] + (t ? "%c " : " ") + "+" + qt.humanize(this.diff), !!t) { + var r = "color: " + this.color; + e21.splice(1, 0, r, "color: inherit"); + var n = 0, i = 0; + e21[0].replace(/%[a-zA-Z%]/g, function(o) { + o !== "%%" && (n++, o === "%c" && (i = n)); + }), e21.splice(i, 0, r); + } + } + function bB() { + return typeof console == "object" && console.log && Function.prototype.apply.call(console.log, console, arguments); + } + function _B(e21) { + try { + e21 == null ? qt.storage.removeItem("debug") : qt.storage.debug = e21; + } catch { + } + } + function MI() { + var e21; + try { + e21 = qt.storage.debug; + } catch { + } + return !e21 && typeof process < "u" && "env" in process && (e21 = process.env.DEBUG), e21; + } + qt.enable(MI()); + function wB() { + try { + return window.localStorage; + } catch { + } + } +}); +var JI = g((ft, HI) => { + var BI = O("tty"), Bc = O("util"); + ft = HI.exports = Wx(); + ft.init = IB; + ft.log = EB; + ft.formatArgs = kB; + ft.save = OB; + ft.load = VI; + ft.useColors = SB; + ft.colors = [6, 2, 3, 4, 5, 1]; + ft.inspectOpts = Object.keys(process.env).filter(function(e21) { + return /^debug_/i.test(e21); + }).reduce(function(e21, t) { + var r = t.substring(6).toLowerCase().replace(/_([a-z])/g, function(i, o) { + return o.toUpperCase(); + }), n = process.env[t]; + return /^(yes|on|true|enabled)$/i.test(n) ? n = true : /^(no|off|false|disabled)$/i.test(n) ? n = false : n === "null" ? n = null : n = Number(n), e21[r] = n, e21; + }, {}); + var Xo = parseInt(process.env.DEBUG_FD, 10) || 2; + Xo !== 1 && Xo !== 2 && Bc.deprecate(function() { + }, "except for stderr(2) and stdout(1), any other usage of DEBUG_FD is deprecated. Override debug.log if you want to use a different log function (https://git.io/debug_fd)")(); + var $B = Xo === 1 ? process.stdout : Xo === 2 ? process.stderr : TB(Xo); + function SB() { + return "colors" in ft.inspectOpts ? !!ft.inspectOpts.colors : BI.isatty(Xo); + } + ft.formatters.o = function(e21) { + return this.inspectOpts.colors = this.useColors, Bc.inspect(e21, this.inspectOpts).split(` +`).map(function(t) { + return t.trim(); + }).join(" "); + }; + ft.formatters.O = function(e21) { + return this.inspectOpts.colors = this.useColors, Bc.inspect(e21, this.inspectOpts); + }; + function kB(e21) { + var t = this.namespace, r = this.useColors; + if (r) { + var n = this.color, i = " \x1B[3" + n + ";1m" + t + " \x1B[0m"; + e21[0] = i + e21[0].split(` +`).join(` +` + i), e21.push("\x1B[3" + n + "m+" + ft.humanize(this.diff) + "\x1B[0m"); + } else e21[0] = (/* @__PURE__ */ new Date()).toUTCString() + " " + t + " " + e21[0]; + } + function EB() { + return $B.write(Bc.format.apply(Bc, arguments) + ` +`); + } + function OB(e21) { + e21 == null ? delete process.env.DEBUG : process.env.DEBUG = e21; + } + function VI() { + return process.env.DEBUG; + } + function TB(e21) { + var t, r = process.binding("tty_wrap"); + switch (r.guessHandleType(e21)) { + case "TTY": + t = new BI.WriteStream(e21), t._type = "tty", t._handle && t._handle.unref && t._handle.unref(); + break; + case "FILE": + var n = O("fs"); + t = new n.SyncWriteStream(e21, { autoClose: false }), t._type = "fs"; + break; + case "PIPE": + case "TCP": + var i = O("net"); + t = new i.Socket({ fd: e21, readable: false, writable: true }), t.readable = false, t.read = null, t._type = "pipe", t._handle && t._handle.unref && t._handle.unref(); + break; + default: + throw new Error("Implement me. Unknown stream file type!"); + } + return t.fd = e21, t._isStdio = true, t; + } + function IB(e21) { + e21.inspectOpts = {}; + for (var t = Object.keys(ft.inspectOpts), r = 0; r < t.length; r++) e21.inspectOpts[t[r]] = ft.inspectOpts[t[r]]; + } + ft.enable(VI()); +}); +var Yo = g((gfe, Kx) => { + typeof process < "u" && process.type === "renderer" ? Kx.exports = ZI() : Kx.exports = JI(); +}); +var Vc = g((yfe, KI) => { + "use strict"; + KI.exports = zB; + function GI(e21, t, r) { + for (var n = 0; n < e21.length; n++) { + var i = e21[n]; + r > 0 && Array.isArray(i) ? GI(i, t, r - 1) : t.push(i); + } + return t; + } + function WI(e21, t) { + for (var r = 0; r < e21.length; r++) { + var n = e21[r]; + Array.isArray(n) ? WI(n, t) : t.push(n); + } + return t; + } + function zB(e21, t) { + return t == null ? WI(e21, []) : GI(e21, [], t); + } +}); +var ez = g((xfe, QI) => { + QI.exports = YI; + var XI = /\\.|\((?:\?<(.*?)>)?(?!\?)/g; + function YI(e21, t, r) { + r = r || {}, t = t || []; + var n = r.strict, i = r.end !== false, o = r.sensitive ? "" : "i", a = r.lookahead !== false, s = 0, c = t.length, u = 0, l = 0, p = 0, d = "", f; + if (e21 instanceof RegExp) { + for (; f = XI.exec(e21.source); ) f[0][0] !== "\\" && t.push({ name: f[1] || l++, optional: false, offset: f.index }); + return e21; + } + if (Array.isArray(e21)) return e21 = e21.map(function(m) { + return YI(m, t, r).source; + }), new RegExp(e21.join("|"), o); + if (typeof e21 != "string") throw new TypeError("path must be a string, array of strings, or regular expression"); + for (e21 = e21.replace(/\\.|(\/)?(\.)?:(\w+)(\(.*?\))?(\*)?(\?)?|[.*]|\/\(/g, function(m, h, v, y, x, w, S, k) { + if (m[0] === "\\") return d += m, p += 2, m; + if (m === ".") return d += "\\.", s += 1, p += 1, "\\."; + if (h || v ? d = "" : d += e21.slice(p, k), p = k + m.length, m === "*") return s += 3, "(.*)"; + if (m === "/(") return d += "/", s += 2, "/(?:"; + h = h || "", v = v ? "\\." : "", S = S || "", x = x ? x.replace(/\\.|\*/, function(C) { + return C === "*" ? "(.*)" : C; + }) : d ? "((?:(?!/|" + d + ").)+?)" : "([^/" + v + "]+?)", t.push({ name: y, optional: !!S, offset: k + s }); + var A = "(?:" + v + h + x + (w ? "((?:[/" + v + "].+?)?)" : "") + ")" + S; + return s += A.length - m.length, A; + }); f = XI.exec(e21); ) f[0][0] !== "\\" && ((c + u === t.length || t[c + u].offset > f.index) && t.splice(c + u, 0, { name: l++, optional: false, offset: f.index }), u++); + return e21 += n ? "" : e21[e21.length - 1] === "/" ? "?" : "/?", i ? e21 += "$" : e21[e21.length - 1] !== "/" && (e21 += a ? "(?=/|$)" : "(?:/|$)"), new RegExp("^" + e21, o); + } +}); +var Xx = g((bfe, rz) => { + "use strict"; + var PB = ez(), jB = Yo()("express:router:layer"), AB = Object.prototype.hasOwnProperty; + rz.exports = Qo; + function Qo(e21, t, r) { + if (!(this instanceof Qo)) return new Qo(e21, t, r); + jB("new %o", e21); + var n = t || {}; + this.handle = r, this.name = r.name || "", this.params = void 0, this.path = void 0, this.regexp = PB(e21, this.keys = [], n), this.regexp.fast_star = e21 === "*", this.regexp.fast_slash = e21 === "/" && n.end === false; + } + Qo.prototype.handle_error = function(t, r, n, i) { + var o = this.handle; + if (o.length !== 4) return i(t); + try { + o(t, r, n, i); + } catch (a) { + i(a); + } + }; + Qo.prototype.handle_request = function(t, r, n) { + var i = this.handle; + if (i.length > 3) return n(); + try { + i(t, r, n); + } catch (o) { + n(o); + } + }; + Qo.prototype.match = function(t) { + var r; + if (t != null) { + if (this.regexp.fast_slash) return this.params = {}, this.path = "", true; + if (this.regexp.fast_star) return this.params = { 0: tz(t) }, this.path = t, true; + r = this.regexp.exec(t); + } + if (!r) return this.params = void 0, this.path = void 0, false; + this.params = {}, this.path = r[0]; + for (var n = this.keys, i = this.params, o = 1; o < r.length; o++) { + var a = n[o - 1], s = a.name, c = tz(r[o]); + (c !== void 0 || !AB.call(i, s)) && (i[s] = c); + } + return true; + }; + function tz(e21) { + if (typeof e21 != "string" || e21.length === 0) return e21; + try { + return decodeURIComponent(e21); + } catch (t) { + throw t instanceof URIError && (t.message = "Failed to decode param '" + e21 + "'", t.status = t.statusCode = 400), t; + } + } +}); +var zd = g((_fe, iz) => { + "use strict"; + var nz = O("http"); + iz.exports = RB() || CB(); + function RB() { + return nz.METHODS && nz.METHODS.map(function(t) { + return t.toLowerCase(); + }); + } + function CB() { + return ["get", "post", "put", "head", "delete", "options", "trace", "copy", "lock", "mkcol", "move", "purge", "propfind", "proppatch", "unlock", "report", "mkactivity", "checkout", "merge", "m-search", "notify", "subscribe", "unsubscribe", "patch", "search", "connect"]; + } +}); +var Yx = g((wfe, lz) => { + "use strict"; + var oz = Yo()("express:router:route"), az = Vc(), sz = Xx(), NB = zd(), cz = Array.prototype.slice, uz = Object.prototype.toString; + lz.exports = ea; + function ea(e21) { + this.path = e21, this.stack = [], oz("new %o", e21), this.methods = {}; + } + ea.prototype._handles_method = function(t) { + if (this.methods._all) return true; + var r = typeof t == "string" ? t.toLowerCase() : t; + return r === "head" && !this.methods.head && (r = "get"), !!this.methods[r]; + }; + ea.prototype._options = function() { + var t = Object.keys(this.methods); + this.methods.get && !this.methods.head && t.push("head"); + for (var r = 0; r < t.length; r++) t[r] = t[r].toUpperCase(); + return t; + }; + ea.prototype.dispatch = function(t, r, n) { + var i = 0, o = this.stack, a = 0; + if (o.length === 0) return n(); + var s = typeof t.method == "string" ? t.method.toLowerCase() : t.method; + s === "head" && !this.methods.head && (s = "get"), t.route = this, c(); + function c(u) { + if (u && u === "route") return n(); + if (u && u === "router") return n(u); + if (++a > 100) return setImmediate(c, u); + var l = o[i++]; + if (!l) return n(u); + l.method && l.method !== s ? c(u) : u ? l.handle_error(u, t, r, c) : l.handle_request(t, r, c), a = 0; + } + }; + ea.prototype.all = function() { + for (var t = az(cz.call(arguments)), r = 0; r < t.length; r++) { + var n = t[r]; + if (typeof n != "function") { + var i = uz.call(n), o = "Route.all() requires a callback function but got a " + i; + throw new TypeError(o); + } + var a = sz("/", {}, n); + a.method = void 0, this.methods._all = true, this.stack.push(a); + } + return this; + }; + NB.forEach(function(e21) { + ea.prototype[e21] = function() { + for (var t = az(cz.call(arguments)), r = 0; r < t.length; r++) { + var n = t[r]; + if (typeof n != "function") { + var i = uz.call(n), o = "Route." + e21 + "() requires a callback function but got a " + i; + throw new Error(o); + } + oz("%s %o", e21, this.path); + var a = sz("/", {}, n); + a.method = e21, this.methods[e21] = true, this.stack.push(a); + } + return this; + }; + }); +}); +var Hc = g((pz, dz) => { + pz = dz.exports = function(e21, t) { + if (e21 && t) for (var r in t) e21[r] = t[r]; + return e21; + }; +}); +var eb = g(($fe, vz) => { + "use strict"; + var DB = Yx(), mz = Xx(), qB = zd(), Qx = Hc(), Pd = Yo()("express:router"), fz = Ar()("express"), UB = Vc(), LB = Ko(), MB = jo(), FB = /^\[object (\S+)\]$/, hz = Array.prototype.slice, ZB = Object.prototype.toString, qi = vz.exports = function(e21) { + var t = e21 || {}; + function r(n, i, o) { + r.handle(n, i, o); + } + return MB(r, qi), r.params = {}, r._params = [], r.caseSensitive = t.caseSensitive, r.mergeParams = t.mergeParams, r.strict = t.strict, r.stack = [], r; + }; + qi.param = function(t, r) { + if (typeof t == "function") { + fz("router.param(fn): Refactor to use path params"), this._params.push(t); + return; + } + var n = this._params, i = n.length, o; + t[0] === ":" && (fz("router.param(" + JSON.stringify(t) + ", fn): Use router.param(" + JSON.stringify(t.slice(1)) + ", fn) instead"), t = t.slice(1)); + for (var a = 0; a < i; ++a) (o = n[a](t, r)) && (r = o); + if (typeof r != "function") throw new Error("invalid param() call for " + t + ", got " + r); + return (this.params[t] = this.params[t] || []).push(r), this; + }; + qi.handle = function(t, r, n) { + var i = this; + Pd("dispatching %s %s", t.method, t.url); + var o = 0, a = HB(t.url) || "", s = "", c = false, u = 0, l = {}, p = [], d = i.stack, f = t.params, m = t.baseUrl || "", h = KB(n, t, "baseUrl", "next", "params"); + t.next = v, t.method === "OPTIONS" && (h = YB(h, function(x, w) { + if (w || p.length === 0) return x(w); + XB(r, p, x); + })), t.baseUrl = m, t.originalUrl = t.originalUrl || t.url, v(); + function v(x) { + var w = x === "route" ? null : x; + if (c && (t.url = t.url.slice(1), c = false), s.length !== 0 && (t.baseUrl = m, t.url = a + s + t.url.slice(a.length), s = ""), w === "router") { + setImmediate(h, null); + return; + } + if (o >= d.length) { + setImmediate(h, w); + return; + } + if (++u > 100) return setImmediate(v, x); + var S = VB(t); + if (S == null) return h(w); + for (var k, A, C; A !== true && o < d.length; ) if (k = d[o++], A = GB(k, S), C = k.route, typeof A != "boolean" && (w = w || A), A === true && C) { + if (w) { + A = false; + continue; + } + var ae = t.method, Ie = C._handles_method(ae); + !Ie && ae === "OPTIONS" && BB(p, C._options()), !Ie && ae !== "HEAD" && (A = false); + } + if (A !== true) return h(w); + C && (t.route = C), t.params = i.mergeParams ? WB(k.params, f) : k.params; + var Ce = k.path; + i.process_params(k, l, t, r, function($e) { + $e ? v(w || $e) : C ? k.handle_request(t, r, v) : y(k, w, Ce, S), u = 0; + }); + } + function y(x, w, S, k) { + if (S.length !== 0) { + if (S !== k.slice(0, S.length)) { + v(w); + return; + } + var A = k[S.length]; + if (A && A !== "/" && A !== ".") return v(w); + Pd("trim prefix (%s) from url %s", S, t.url), s = S, t.url = a + t.url.slice(a.length + s.length), !a && t.url[0] !== "/" && (t.url = "/" + t.url, c = true), t.baseUrl = m + (s[s.length - 1] === "/" ? s.substring(0, s.length - 1) : s); + } + Pd("%s %s : %s", x.name, S, t.originalUrl), w ? x.handle_error(w, t, r, v) : x.handle_request(t, r, v); + } + }; + qi.process_params = function(t, r, n, i, o) { + var a = this.params, s = t.keys; + if (!s || s.length === 0) return o(); + var c = 0, u, l = 0, p, d, f, m; + function h(y) { + if (y) return o(y); + if (c >= s.length) return o(); + if (l = 0, p = s[c++], u = p.name, d = n.params[u], f = a[u], m = r[u], d === void 0 || !f) return h(); + if (m && (m.match === d || m.error && m.error !== "route")) return n.params[u] = m.value, h(m.error); + r[u] = m = { error: null, match: d, value: d }, v(); + } + function v(y) { + var x = f[l++]; + if (m.value = n.params[p.name], y) { + m.error = y, h(y); + return; + } + if (!x) return h(); + try { + x(n, i, v, d, p.name); + } catch (w) { + v(w); + } + } + h(); + }; + qi.use = function(t) { + var r = 0, n = "/"; + if (typeof t != "function") { + for (var i = t; Array.isArray(i) && i.length !== 0; ) i = i[0]; + typeof i != "function" && (r = 1, n = t); + } + var o = UB(hz.call(arguments, r)); + if (o.length === 0) throw new TypeError("Router.use() requires a middleware function"); + for (var a = 0; a < o.length; a++) { + var t = o[a]; + if (typeof t != "function") throw new TypeError("Router.use() requires a middleware function but got a " + JB(t)); + Pd("use %o %s", n, t.name || ""); + var s = new mz(n, { sensitive: this.caseSensitive, strict: false, end: false }, t); + s.route = void 0, this.stack.push(s); + } + return this; + }; + qi.route = function(t) { + var r = new DB(t), n = new mz(t, { sensitive: this.caseSensitive, strict: this.strict, end: true }, r.dispatch.bind(r)); + return n.route = r, this.stack.push(n), r; + }; + qB.concat("all").forEach(function(e21) { + qi[e21] = function(t) { + var r = this.route(t); + return r[e21].apply(r, hz.call(arguments, 1)), this; + }; + }); + function BB(e21, t) { + for (var r = 0; r < t.length; r++) { + var n = t[r]; + e21.indexOf(n) === -1 && e21.push(n); + } + } + function VB(e21) { + try { + return LB(e21).pathname; + } catch { + return; + } + } + function HB(e21) { + if (!(typeof e21 != "string" || e21.length === 0 || e21[0] === "/")) { + var t = e21.indexOf("?"), r = t !== -1 ? t : e21.length, n = e21.slice(0, r).indexOf("://"); + return n !== -1 ? e21.substring(0, e21.indexOf("/", 3 + n)) : void 0; + } + } + function JB(e21) { + var t = typeof e21; + return t !== "object" ? t : ZB.call(e21).replace(FB, "$1"); + } + function GB(e21, t) { + try { + return e21.match(t); + } catch (r) { + return r; + } + } + function WB(e21, t) { + if (typeof t != "object" || !t) return e21; + var r = Qx({}, t); + if (!(0 in e21) || !(0 in t)) return Qx(r, e21); + for (var n = 0, i = 0; n in e21; ) n++; + for (; i in t; ) i++; + for (n--; n >= 0; n--) e21[n + i] = e21[n], n < i && delete e21[n]; + return Qx(r, e21); + } + function KB(e21, t) { + for (var r = new Array(arguments.length - 2), n = new Array(arguments.length - 2), i = 0; i < r.length; i++) r[i] = arguments[i + 2], n[i] = t[r[i]]; + return function() { + for (var o = 0; o < r.length; o++) t[r[o]] = n[o]; + return e21.apply(this, arguments); + }; + } + function XB(e21, t, r) { + try { + var n = t.join(","); + e21.set("Allow", n), e21.send(n); + } catch (i) { + r(i); + } + } + function YB(e21, t) { + return function() { + var n = new Array(arguments.length + 1); + n[0] = e21; + for (var i = 0, o = arguments.length; i < o; i++) n[i + 1] = arguments[i]; + t.apply(this, n); + }; + } +}); +var xz = g((yz) => { + "use strict"; + var gz = jo(); + yz.init = function(e21) { + return function(r, n, i) { + e21.enabled("x-powered-by") && n.setHeader("X-Powered-By", "Express"), r.res = n, n.req = r, r.next = i, gz(r, e21.request), gz(n, e21.response), n.locals = n.locals || /* @__PURE__ */ Object.create(null), i(); + }; + }; +}); +var tb = g((kfe, bz) => { + "use strict"; + var QB = Hc(), e72 = Ko(), t7 = $d(); + bz.exports = function(t) { + var r = QB({}, t), n = t7.parse; + return typeof t == "function" && (n = t, r = void 0), r !== void 0 && r.allowPrototypes === void 0 && (r.allowPrototypes = true), function(o, a, s) { + if (!o.query) { + var c = e72(o).query; + o.query = n(c, r); + } + s(); + }; + }; +}); +var kz = g((Efe, Sz) => { + "use strict"; + var jd = Yo()("express:view"), Jc = O("path"), r7 = O("fs"), n7 = Jc.dirname, $z = Jc.basename, i7 = Jc.extname, _z = Jc.join, o7 = Jc.resolve; + Sz.exports = Ad; + function Ad(e21, t) { + var r = t || {}; + if (this.defaultEngine = r.defaultEngine, this.ext = i7(e21), this.name = e21, this.root = r.root, !this.ext && !this.defaultEngine) throw new Error("No default engine was specified and no extension was provided."); + var n = e21; + if (this.ext || (this.ext = this.defaultEngine[0] !== "." ? "." + this.defaultEngine : this.defaultEngine, n += this.ext), !r.engines[this.ext]) { + var i = this.ext.slice(1); + jd('require "%s"', i); + var o = O(i).__express; + if (typeof o != "function") throw new Error('Module "' + i + '" does not provide a view engine.'); + r.engines[this.ext] = o; + } + this.engine = r.engines[this.ext], this.path = this.lookup(n); + } + Ad.prototype.lookup = function(t) { + var r, n = [].concat(this.root); + jd('lookup "%s"', t); + for (var i = 0; i < n.length && !r; i++) { + var o = n[i], a = o7(o, t), s = n7(a), c = $z(a); + r = this.resolve(s, c); + } + return r; + }; + Ad.prototype.render = function(t, r) { + jd('render "%s"', this.path), this.engine(this.path, t, r); + }; + Ad.prototype.resolve = function(t, r) { + var n = this.ext, i = _z(t, r), o = wz(i); + if (o && o.isFile() || (i = _z(t, $z(r, n), "index" + n), o = wz(i), o && o.isFile())) return i; + }; + function wz(e21) { + jd('stat "%s"', e21); + try { + return r7.statSync(e21); + } catch { + return; + } + } +}); +var Cd = g((rb, Oz) => { + var Rd = O("buffer"), nn = Rd.Buffer; + function Ez(e21, t) { + for (var r in e21) t[r] = e21[r]; + } + nn.from && nn.alloc && nn.allocUnsafe && nn.allocUnsafeSlow ? Oz.exports = Rd : (Ez(Rd, rb), rb.Buffer = Ui); + function Ui(e21, t, r) { + return nn(e21, t, r); + } + Ui.prototype = Object.create(nn.prototype); + Ez(nn, Ui); + Ui.from = function(e21, t, r) { + if (typeof e21 == "number") throw new TypeError("Argument must not be a number"); + return nn(e21, t, r); + }; + Ui.alloc = function(e21, t, r) { + if (typeof e21 != "number") throw new TypeError("Argument must be a number"); + var n = nn(e21); + return t !== void 0 ? typeof r == "string" ? n.fill(t, r) : n.fill(t) : n.fill(0), n; + }; + Ui.allocUnsafe = function(e21) { + if (typeof e21 != "number") throw new TypeError("Argument must be a number"); + return nn(e21); + }; + Ui.allocUnsafeSlow = function(e21) { + if (typeof e21 != "number") throw new TypeError("Argument must be a number"); + return Rd.SlowBuffer(e21); + }; +}); +var ib = g((Tfe, nb) => { + "use strict"; + nb.exports = v7; + nb.exports.parse = b7; + var Tz = O("path").basename, a7 = Cd().Buffer, s7 = /[\x00-\x20"'()*,/:;<=>?@[\\\]{}\x7f]/g, c7 = /%[0-9A-Fa-f]{2}/, u7 = /%([0-9A-Fa-f]{2})/g, zz = /[^\x20-\x7e\xa0-\xff]/g, l7 = /\\([\u0000-\u007f])/g, p7 = /([\\"])/g, Iz = /;[\x09\x20]*([!#$%&'*+.0-9A-Z^_`a-z|~-]+)[\x09\x20]*=[\x09\x20]*("(?:[\x20!\x23-\x5b\x5d-\x7e\x80-\xff]|\\[\x20-\x7e])*"|[!#$%&'*+.0-9A-Z^_`a-z|~-]+)[\x09\x20]*/g, d7 = /^[\x20-\x7e\x80-\xff]+$/, f7 = /^[!#$%&'*+.0-9A-Z^_`a-z|~-]+$/, m7 = /^([A-Za-z0-9!#$%&+\-^_`{}~]+)'(?:[A-Za-z]{2,3}(?:-[A-Za-z]{3}){0,3}|[A-Za-z]{4,8}|)'((?:%[0-9A-Fa-f]{2}|[A-Za-z0-9!#$&+.^_`|~-])+)$/, h7 = /^([!#$%&'*+.0-9A-Z^_`a-z|~-]+)[\x09\x20]*(?:$|;)/; + function v7(e21, t) { + var r = t || {}, n = r.type || "attachment", i = g7(e21, r.fallback); + return y7(new jz(n, i)); + } + function g7(e21, t) { + if (e21 !== void 0) { + var r = {}; + if (typeof e21 != "string") throw new TypeError("filename must be a string"); + if (t === void 0 && (t = true), typeof t != "string" && typeof t != "boolean") throw new TypeError("fallback must be a string or boolean"); + if (typeof t == "string" && zz.test(t)) throw new TypeError("fallback must be ISO-8859-1 string"); + var n = Tz(e21), i = d7.test(n), o = typeof t != "string" ? t && Pz(n) : Tz(t), a = typeof o == "string" && o !== n; + return (a || !i || c7.test(n)) && (r["filename*"] = n), (i || a) && (r.filename = a ? o : n), r; + } + } + function y7(e21) { + var t = e21.parameters, r = e21.type; + if (!r || typeof r != "string" || !f7.test(r)) throw new TypeError("invalid type"); + var n = String(r).toLowerCase(); + if (t && typeof t == "object") for (var i, o = Object.keys(t).sort(), a = 0; a < o.length; a++) { + i = o[a]; + var s = i.substr(-1) === "*" ? S7(t[i]) : $7(t[i]); + n += "; " + i + "=" + s; + } + return n; + } + function x7(e21) { + var t = m7.exec(e21); + if (!t) throw new TypeError("invalid extended field value"); + var r = t[1].toLowerCase(), n = t[2], i, o = n.replace(u7, _7); + switch (r) { + case "iso-8859-1": + i = Pz(o); + break; + case "utf-8": + i = a7.from(o, "binary").toString("utf8"); + break; + default: + throw new TypeError("unsupported charset in extended field"); + } + return i; + } + function Pz(e21) { + return String(e21).replace(zz, "?"); + } + function b7(e21) { + if (!e21 || typeof e21 != "string") throw new TypeError("argument string is required"); + var t = h7.exec(e21); + if (!t) throw new TypeError("invalid type format"); + var r = t[0].length, n = t[1].toLowerCase(), i, o = [], a = {}, s; + for (r = Iz.lastIndex = t[0].substr(-1) === ";" ? r - 1 : r; t = Iz.exec(e21); ) { + if (t.index !== r) throw new TypeError("invalid parameter format"); + if (r += t[0].length, i = t[1].toLowerCase(), s = t[2], o.indexOf(i) !== -1) throw new TypeError("invalid duplicate parameter"); + if (o.push(i), i.indexOf("*") + 1 === i.length) { + i = i.slice(0, -1), s = x7(s), a[i] = s; + continue; + } + typeof a[i] != "string" && (s[0] === '"' && (s = s.substr(1, s.length - 2).replace(l7, "$1")), a[i] = s); + } + if (r !== -1 && r !== e21.length) throw new TypeError("invalid parameter format"); + return new jz(n, a); + } + function _7(e21, t) { + return String.fromCharCode(parseInt(t, 16)); + } + function w7(e21) { + return "%" + String(e21).charCodeAt(0).toString(16).toUpperCase(); + } + function $7(e21) { + var t = String(e21); + return '"' + t.replace(p7, "\\$1") + '"'; + } + function S7(e21) { + var t = String(e21), r = encodeURIComponent(t).replace(s7, w7); + return "UTF-8''" + r; + } + function jz(e21, t) { + this.type = e21, this.parameters = t; + } +}); +var ab = g((Ife, Li) => { + "use strict"; + var k7 = Ar()("http-errors"), Az = jo(), ta = Uc(), ob = $y(), E7 = Sy(); + Li.exports = Nd; + Li.exports.HttpError = O7(); + Li.exports.isHttpError = I7(Li.exports.HttpError); + P7(Li.exports, ta.codes, Li.exports.HttpError); + function Rz(e21) { + return +(String(e21).charAt(0) + "00"); + } + function Nd() { + for (var e21, t, r = 500, n = {}, i = 0; i < arguments.length; i++) { + var o = arguments[i], a = typeof o; + if (a === "object" && o instanceof Error) e21 = o, r = e21.status || e21.statusCode || r; + else if (a === "number" && i === 0) r = o; + else if (a === "string") t = o; + else if (a === "object") n = o; + else throw new TypeError("argument #" + (i + 1) + " unsupported type " + a); + } + typeof r == "number" && (r < 400 || r >= 600) && k7("non-error status code; use only 4xx or 5xx status codes"), (typeof r != "number" || !ta.message[r] && (r < 400 || r >= 600)) && (r = 500); + var s = Nd[r] || Nd[Rz(r)]; + e21 || (e21 = s ? new s(t) : new Error(t || ta.message[r]), Error.captureStackTrace(e21, Nd)), (!s || !(e21 instanceof s) || e21.status !== r) && (e21.expose = r < 500, e21.status = e21.statusCode = r); + for (var c in n) c !== "status" && c !== "statusCode" && (e21[c] = n[c]); + return e21; + } + function O7() { + function e21() { + throw new TypeError("cannot construct abstract class"); + } + return ob(e21, Error), e21; + } + function T7(e21, t, r) { + var n = Nz(t); + function i(o) { + var a = o ?? ta.message[r], s = new Error(a); + return Error.captureStackTrace(s, i), Az(s, i.prototype), Object.defineProperty(s, "message", { enumerable: true, configurable: true, value: a, writable: true }), Object.defineProperty(s, "name", { enumerable: false, configurable: true, value: n, writable: true }), s; + } + return ob(i, e21), Cz(i, n), i.prototype.status = r, i.prototype.statusCode = r, i.prototype.expose = true, i; + } + function I7(e21) { + return function(r) { + return !r || typeof r != "object" ? false : r instanceof e21 ? true : r instanceof Error && typeof r.expose == "boolean" && typeof r.statusCode == "number" && r.status === r.statusCode; + }; + } + function z7(e21, t, r) { + var n = Nz(t); + function i(o) { + var a = o ?? ta.message[r], s = new Error(a); + return Error.captureStackTrace(s, i), Az(s, i.prototype), Object.defineProperty(s, "message", { enumerable: true, configurable: true, value: a, writable: true }), Object.defineProperty(s, "name", { enumerable: false, configurable: true, value: n, writable: true }), s; + } + return ob(i, e21), Cz(i, n), i.prototype.status = r, i.prototype.statusCode = r, i.prototype.expose = false, i; + } + function Cz(e21, t) { + var r = Object.getOwnPropertyDescriptor(e21, "name"); + r && r.configurable && (r.value = t, Object.defineProperty(e21, "name", r)); + } + function P7(e21, t, r) { + t.forEach(function(i) { + var o, a = E7(ta.message[i]); + switch (Rz(i)) { + case 400: + o = T7(r, a, i); + break; + case 500: + o = z7(r, a, i); + break; + } + o && (e21[i] = o, e21[a] = o); + }); + } + function Nz(e21) { + return e21.substr(-5) !== "Error" ? e21 + "Error" : e21; + } +}); +var qz = g((zfe, Dz) => { + var Gc = 1e3, Wc = Gc * 60, Kc = Wc * 60, Xc = Kc * 24, j7 = Xc * 365.25; + Dz.exports = function(e21, t) { + t = t || {}; + var r = typeof e21; + if (r === "string" && e21.length > 0) return A7(e21); + if (r === "number" && isNaN(e21) === false) return t.long ? C7(e21) : R7(e21); + throw new Error("val is not a non-empty string or a valid number. val=" + JSON.stringify(e21)); + }; + function A7(e21) { + if (e21 = String(e21), !(e21.length > 100)) { + var t = /^((?:\d+)?\.?\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|years?|yrs?|y)?$/i.exec(e21); + if (t) { + var r = parseFloat(t[1]), n = (t[2] || "ms").toLowerCase(); + switch (n) { + case "years": + case "year": + case "yrs": + case "yr": + case "y": + return r * j7; + case "days": + case "day": + case "d": + return r * Xc; + case "hours": + case "hour": + case "hrs": + case "hr": + case "h": + return r * Kc; + case "minutes": + case "minute": + case "mins": + case "min": + case "m": + return r * Wc; + case "seconds": + case "second": + case "secs": + case "sec": + case "s": + return r * Gc; + case "milliseconds": + case "millisecond": + case "msecs": + case "msec": + case "ms": + return r; + default: + return; + } + } + } + } + function R7(e21) { + return e21 >= Xc ? Math.round(e21 / Xc) + "d" : e21 >= Kc ? Math.round(e21 / Kc) + "h" : e21 >= Wc ? Math.round(e21 / Wc) + "m" : e21 >= Gc ? Math.round(e21 / Gc) + "s" : e21 + "ms"; + } + function C7(e21) { + return Dd(e21, Xc, "day") || Dd(e21, Kc, "hour") || Dd(e21, Wc, "minute") || Dd(e21, Gc, "second") || e21 + " ms"; + } + function Dd(e21, t, r) { + if (!(e21 < t)) return e21 < t * 1.5 ? Math.floor(e21 / t) + " " + r : Math.ceil(e21 / t) + " " + r + "s"; + } +}); +var ub = g((_e, Uz) => { + _e = Uz.exports = cb.debug = cb.default = cb; + _e.coerce = L7; + _e.disable = q7; + _e.enable = D7; + _e.enabled = U7; + _e.humanize = qz(); + _e.names = []; + _e.skips = []; + _e.formatters = {}; + var sb; + function N7(e21) { + var t = 0, r; + for (r in e21) t = (t << 5) - t + e21.charCodeAt(r), t |= 0; + return _e.colors[Math.abs(t) % _e.colors.length]; + } + function cb(e21) { + function t() { + if (t.enabled) { + var r = t, n = +/* @__PURE__ */ new Date(), i = n - (sb || n); + r.diff = i, r.prev = sb, r.curr = n, sb = n; + for (var o = new Array(arguments.length), a = 0; a < o.length; a++) o[a] = arguments[a]; + o[0] = _e.coerce(o[0]), typeof o[0] != "string" && o.unshift("%O"); + var s = 0; + o[0] = o[0].replace(/%([a-zA-Z%])/g, function(u, l) { + if (u === "%%") return u; + s++; + var p = _e.formatters[l]; + if (typeof p == "function") { + var d = o[s]; + u = p.call(r, d), o.splice(s, 1), s--; + } + return u; + }), _e.formatArgs.call(r, o); + var c = t.log || _e.log || console.log.bind(console); + c.apply(r, o); + } + } + return t.namespace = e21, t.enabled = _e.enabled(e21), t.useColors = _e.useColors(), t.color = N7(e21), typeof _e.init == "function" && _e.init(t), t; + } + function D7(e21) { + _e.save(e21), _e.names = [], _e.skips = []; + for (var t = (typeof e21 == "string" ? e21 : "").split(/[\s,]+/), r = t.length, n = 0; n < r; n++) t[n] && (e21 = t[n].replace(/\*/g, ".*?"), e21[0] === "-" ? _e.skips.push(new RegExp("^" + e21.substr(1) + "$")) : _e.names.push(new RegExp("^" + e21 + "$"))); + } + function q7() { + _e.enable(""); + } + function U7(e21) { + var t, r; + for (t = 0, r = _e.skips.length; t < r; t++) if (_e.skips[t].test(e21)) return false; + for (t = 0, r = _e.names.length; t < r; t++) if (_e.names[t].test(e21)) return true; + return false; + } + function L7(e21) { + return e21 instanceof Error ? e21.stack || e21.message : e21; + } +}); +var Fz = g((Ut, Mz) => { + Ut = Mz.exports = ub(); + Ut.log = Z7; + Ut.formatArgs = F7; + Ut.save = B7; + Ut.load = Lz; + Ut.useColors = M7; + Ut.storage = typeof chrome < "u" && typeof chrome.storage < "u" ? chrome.storage.local : V7(); + Ut.colors = ["lightseagreen", "forestgreen", "goldenrod", "dodgerblue", "darkorchid", "crimson"]; + function M7() { + return typeof window < "u" && window.process && window.process.type === "renderer" ? true : typeof document < "u" && document.documentElement && document.documentElement.style && document.documentElement.style.WebkitAppearance || typeof window < "u" && window.console && (window.console.firebug || window.console.exception && window.console.table) || typeof navigator < "u" && navigator.userAgent && navigator.userAgent.toLowerCase().match(/firefox\/(\d+)/) && parseInt(RegExp.$1, 10) >= 31 || typeof navigator < "u" && navigator.userAgent && navigator.userAgent.toLowerCase().match(/applewebkit\/(\d+)/); + } + Ut.formatters.j = function(e21) { + try { + return JSON.stringify(e21); + } catch (t) { + return "[UnexpectedJSONParseError]: " + t.message; + } + }; + function F7(e21) { + var t = this.useColors; + if (e21[0] = (t ? "%c" : "") + this.namespace + (t ? " %c" : " ") + e21[0] + (t ? "%c " : " ") + "+" + Ut.humanize(this.diff), !!t) { + var r = "color: " + this.color; + e21.splice(1, 0, r, "color: inherit"); + var n = 0, i = 0; + e21[0].replace(/%[a-zA-Z%]/g, function(o) { + o !== "%%" && (n++, o === "%c" && (i = n)); + }), e21.splice(i, 0, r); + } + } + function Z7() { + return typeof console == "object" && console.log && Function.prototype.apply.call(console.log, console, arguments); + } + function B7(e21) { + try { + e21 == null ? Ut.storage.removeItem("debug") : Ut.storage.debug = e21; + } catch { + } + } + function Lz() { + var e21; + try { + e21 = Ut.storage.debug; + } catch { + } + return !e21 && typeof process < "u" && "env" in process && (e21 = process.env.DEBUG), e21; + } + Ut.enable(Lz()); + function V7() { + try { + return window.localStorage; + } catch { + } + } +}); +var Hz = g((mt, Vz) => { + var Zz = O("tty"), Yc = O("util"); + mt = Vz.exports = ub(); + mt.init = Y7; + mt.log = W7; + mt.formatArgs = G7; + mt.save = K7; + mt.load = Bz; + mt.useColors = J7; + mt.colors = [6, 2, 3, 4, 5, 1]; + mt.inspectOpts = Object.keys(process.env).filter(function(e21) { + return /^debug_/i.test(e21); + }).reduce(function(e21, t) { + var r = t.substring(6).toLowerCase().replace(/_([a-z])/g, function(i, o) { + return o.toUpperCase(); + }), n = process.env[t]; + return /^(yes|on|true|enabled)$/i.test(n) ? n = true : /^(no|off|false|disabled)$/i.test(n) ? n = false : n === "null" ? n = null : n = Number(n), e21[r] = n, e21; + }, {}); + var ra = parseInt(process.env.DEBUG_FD, 10) || 2; + ra !== 1 && ra !== 2 && Yc.deprecate(function() { + }, "except for stderr(2) and stdout(1), any other usage of DEBUG_FD is deprecated. Override debug.log if you want to use a different log function (https://git.io/debug_fd)")(); + var H7 = ra === 1 ? process.stdout : ra === 2 ? process.stderr : X7(ra); + function J7() { + return "colors" in mt.inspectOpts ? !!mt.inspectOpts.colors : Zz.isatty(ra); + } + mt.formatters.o = function(e21) { + return this.inspectOpts.colors = this.useColors, Yc.inspect(e21, this.inspectOpts).split(` +`).map(function(t) { + return t.trim(); + }).join(" "); + }; + mt.formatters.O = function(e21) { + return this.inspectOpts.colors = this.useColors, Yc.inspect(e21, this.inspectOpts); + }; + function G7(e21) { + var t = this.namespace, r = this.useColors; + if (r) { + var n = this.color, i = " \x1B[3" + n + ";1m" + t + " \x1B[0m"; + e21[0] = i + e21[0].split(` +`).join(` +` + i), e21.push("\x1B[3" + n + "m+" + mt.humanize(this.diff) + "\x1B[0m"); + } else e21[0] = (/* @__PURE__ */ new Date()).toUTCString() + " " + t + " " + e21[0]; + } + function W7() { + return H7.write(Yc.format.apply(Yc, arguments) + ` +`); + } + function K7(e21) { + e21 == null ? delete process.env.DEBUG : process.env.DEBUG = e21; + } + function Bz() { + return process.env.DEBUG; + } + function X7(e21) { + var t, r = process.binding("tty_wrap"); + switch (r.guessHandleType(e21)) { + case "TTY": + t = new Zz.WriteStream(e21), t._type = "tty", t._handle && t._handle.unref && t._handle.unref(); + break; + case "FILE": + var n = O("fs"); + t = new n.SyncWriteStream(e21, { autoClose: false }), t._type = "fs"; + break; + case "PIPE": + case "TCP": + var i = O("net"); + t = new i.Socket({ fd: e21, readable: false, writable: true }), t.readable = false, t.read = null, t._type = "pipe", t._handle && t._handle.unref && t._handle.unref(); + break; + default: + throw new Error("Implement me. Unknown stream file type!"); + } + return t.fd = e21, t._isStdio = true, t; + } + function Y7(e21) { + e21.inspectOpts = {}; + for (var t = Object.keys(mt.inspectOpts), r = 0; r < t.length; r++) e21.inspectOpts[t[r]] = mt.inspectOpts[t[r]]; + } + mt.enable(Bz()); +}); +var Jz = g((Pfe, lb) => { + typeof process < "u" && process.type === "renderer" ? lb.exports = Fz() : lb.exports = Hz(); +}); +var Wz = g((jfe, Gz) => { + "use strict"; + Gz.exports = rV; + var Q7 = /(?:[^\x21\x25\x26-\x3B\x3D\x3F-\x5B\x5D\x5F\x61-\x7A\x7E]|%(?:[^0-9A-Fa-f]|[0-9A-Fa-f][^0-9A-Fa-f]|$))+/g, eV = /(^|[^\uD800-\uDBFF])[\uDC00-\uDFFF]|[\uD800-\uDBFF]([^\uDC00-\uDFFF]|$)/g, tV = "$1\uFFFD$2"; + function rV(e21) { + return String(e21).replace(eV, tV).replace(Q7, encodeURI); + } +}); +var pb = g((Afe, Yz) => { + "use strict"; + Yz.exports = oV; + var nV = O("crypto"), Kz = O("fs").Stats, Xz = Object.prototype.toString; + function iV(e21) { + if (e21.length === 0) return '"0-2jmj7l5rSw0yVb/vlWAYkK/YBwk"'; + var t = nV.createHash("sha1").update(e21, "utf8").digest("base64").substring(0, 27), r = typeof e21 == "string" ? Buffer.byteLength(e21, "utf8") : e21.length; + return '"' + r.toString(16) + "-" + t + '"'; + } + function oV(e21, t) { + if (e21 == null) throw new TypeError("argument entity is required"); + var r = aV(e21), n = t && typeof t.weak == "boolean" ? t.weak : r; + if (!r && typeof e21 != "string" && !Buffer.isBuffer(e21)) throw new TypeError("argument entity must be string, Buffer, or fs.Stats"); + var i = r ? sV(e21) : iV(e21); + return n ? "W/" + i : i; + } + function aV(e21) { + return typeof Kz == "function" && e21 instanceof Kz ? true : e21 && typeof e21 == "object" && "ctime" in e21 && Xz.call(e21.ctime) === "[object Date]" && "mtime" in e21 && Xz.call(e21.mtime) === "[object Date]" && "ino" in e21 && typeof e21.ino == "number" && "size" in e21 && typeof e21.size == "number"; + } + function sV(e21) { + var t = e21.mtime.getTime().toString(16), r = e21.size.toString(16); + return '"' + r + "-" + t + '"'; + } +}); +var db = g((Rfe, eP) => { + "use strict"; + var cV = /(?:^|,)\s*?no-cache\s*?(?:,|$)/; + eP.exports = uV; + function uV(e21, t) { + var r = e21["if-modified-since"], n = e21["if-none-match"]; + if (!r && !n) return false; + var i = e21["cache-control"]; + if (i && cV.test(i)) return false; + if (n && n !== "*") { + var o = t.etag; + if (!o) return false; + for (var a = true, s = lV(n), c = 0; c < s.length; c++) { + var u = s[c]; + if (u === o || u === "W/" + o || "W/" + u === o) { + a = false; + break; + } + } + if (a) return false; + } + if (r) { + var l = t["last-modified"], p = !l || !(Qz(l) <= Qz(r)); + if (p) return false; + } + return true; + } + function Qz(e21) { + var t = e21 && Date.parse(e21); + return typeof t == "number" ? t : NaN; + } + function lV(e21) { + for (var t = 0, r = [], n = 0, i = 0, o = e21.length; i < o; i++) switch (e21.charCodeAt(i)) { + case 32: + n === t && (n = t = i + 1); + break; + case 44: + r.push(e21.substring(n, t)), n = t = i + 1; + break; + default: + t = i + 1; + break; + } + return r.push(e21.substring(n, t)), r; + } +}); +var tP = g((Cfe, pV) => { + pV.exports = { "application/andrew-inset": ["ez"], "application/applixware": ["aw"], "application/atom+xml": ["atom"], "application/atomcat+xml": ["atomcat"], "application/atomsvc+xml": ["atomsvc"], "application/bdoc": ["bdoc"], "application/ccxml+xml": ["ccxml"], "application/cdmi-capability": ["cdmia"], "application/cdmi-container": ["cdmic"], "application/cdmi-domain": ["cdmid"], "application/cdmi-object": ["cdmio"], "application/cdmi-queue": ["cdmiq"], "application/cu-seeme": ["cu"], "application/dash+xml": ["mpd"], "application/davmount+xml": ["davmount"], "application/docbook+xml": ["dbk"], "application/dssc+der": ["dssc"], "application/dssc+xml": ["xdssc"], "application/ecmascript": ["ecma"], "application/emma+xml": ["emma"], "application/epub+zip": ["epub"], "application/exi": ["exi"], "application/font-tdpfr": ["pfr"], "application/font-woff": [], "application/font-woff2": [], "application/geo+json": ["geojson"], "application/gml+xml": ["gml"], "application/gpx+xml": ["gpx"], "application/gxf": ["gxf"], "application/gzip": ["gz"], "application/hyperstudio": ["stk"], "application/inkml+xml": ["ink", "inkml"], "application/ipfix": ["ipfix"], "application/java-archive": ["jar", "war", "ear"], "application/java-serialized-object": ["ser"], "application/java-vm": ["class"], "application/javascript": ["js", "mjs"], "application/json": ["json", "map"], "application/json5": ["json5"], "application/jsonml+json": ["jsonml"], "application/ld+json": ["jsonld"], "application/lost+xml": ["lostxml"], "application/mac-binhex40": ["hqx"], "application/mac-compactpro": ["cpt"], "application/mads+xml": ["mads"], "application/manifest+json": ["webmanifest"], "application/marc": ["mrc"], "application/marcxml+xml": ["mrcx"], "application/mathematica": ["ma", "nb", "mb"], "application/mathml+xml": ["mathml"], "application/mbox": ["mbox"], "application/mediaservercontrol+xml": ["mscml"], "application/metalink+xml": ["metalink"], "application/metalink4+xml": ["meta4"], "application/mets+xml": ["mets"], "application/mods+xml": ["mods"], "application/mp21": ["m21", "mp21"], "application/mp4": ["mp4s", "m4p"], "application/msword": ["doc", "dot"], "application/mxf": ["mxf"], "application/octet-stream": ["bin", "dms", "lrf", "mar", "so", "dist", "distz", "pkg", "bpk", "dump", "elc", "deploy", "exe", "dll", "deb", "dmg", "iso", "img", "msi", "msp", "msm", "buffer"], "application/oda": ["oda"], "application/oebps-package+xml": ["opf"], "application/ogg": ["ogx"], "application/omdoc+xml": ["omdoc"], "application/onenote": ["onetoc", "onetoc2", "onetmp", "onepkg"], "application/oxps": ["oxps"], "application/patch-ops-error+xml": ["xer"], "application/pdf": ["pdf"], "application/pgp-encrypted": ["pgp"], "application/pgp-signature": ["asc", "sig"], "application/pics-rules": ["prf"], "application/pkcs10": ["p10"], "application/pkcs7-mime": ["p7m", "p7c"], "application/pkcs7-signature": ["p7s"], "application/pkcs8": ["p8"], "application/pkix-attr-cert": ["ac"], "application/pkix-cert": ["cer"], "application/pkix-crl": ["crl"], "application/pkix-pkipath": ["pkipath"], "application/pkixcmp": ["pki"], "application/pls+xml": ["pls"], "application/postscript": ["ai", "eps", "ps"], "application/prs.cww": ["cww"], "application/pskc+xml": ["pskcxml"], "application/raml+yaml": ["raml"], "application/rdf+xml": ["rdf"], "application/reginfo+xml": ["rif"], "application/relax-ng-compact-syntax": ["rnc"], "application/resource-lists+xml": ["rl"], "application/resource-lists-diff+xml": ["rld"], "application/rls-services+xml": ["rs"], "application/rpki-ghostbusters": ["gbr"], "application/rpki-manifest": ["mft"], "application/rpki-roa": ["roa"], "application/rsd+xml": ["rsd"], "application/rss+xml": ["rss"], "application/rtf": ["rtf"], "application/sbml+xml": ["sbml"], "application/scvp-cv-request": ["scq"], "application/scvp-cv-response": ["scs"], "application/scvp-vp-request": ["spq"], "application/scvp-vp-response": ["spp"], "application/sdp": ["sdp"], "application/set-payment-initiation": ["setpay"], "application/set-registration-initiation": ["setreg"], "application/shf+xml": ["shf"], "application/smil+xml": ["smi", "smil"], "application/sparql-query": ["rq"], "application/sparql-results+xml": ["srx"], "application/srgs": ["gram"], "application/srgs+xml": ["grxml"], "application/sru+xml": ["sru"], "application/ssdl+xml": ["ssdl"], "application/ssml+xml": ["ssml"], "application/tei+xml": ["tei", "teicorpus"], "application/thraud+xml": ["tfi"], "application/timestamped-data": ["tsd"], "application/vnd.3gpp.pic-bw-large": ["plb"], "application/vnd.3gpp.pic-bw-small": ["psb"], "application/vnd.3gpp.pic-bw-var": ["pvb"], "application/vnd.3gpp2.tcap": ["tcap"], "application/vnd.3m.post-it-notes": ["pwn"], "application/vnd.accpac.simply.aso": ["aso"], "application/vnd.accpac.simply.imp": ["imp"], "application/vnd.acucobol": ["acu"], "application/vnd.acucorp": ["atc", "acutc"], "application/vnd.adobe.air-application-installer-package+zip": ["air"], "application/vnd.adobe.formscentral.fcdt": ["fcdt"], "application/vnd.adobe.fxp": ["fxp", "fxpl"], "application/vnd.adobe.xdp+xml": ["xdp"], "application/vnd.adobe.xfdf": ["xfdf"], "application/vnd.ahead.space": ["ahead"], "application/vnd.airzip.filesecure.azf": ["azf"], "application/vnd.airzip.filesecure.azs": ["azs"], "application/vnd.amazon.ebook": ["azw"], "application/vnd.americandynamics.acc": ["acc"], "application/vnd.amiga.ami": ["ami"], "application/vnd.android.package-archive": ["apk"], "application/vnd.anser-web-certificate-issue-initiation": ["cii"], "application/vnd.anser-web-funds-transfer-initiation": ["fti"], "application/vnd.antix.game-component": ["atx"], "application/vnd.apple.installer+xml": ["mpkg"], "application/vnd.apple.mpegurl": ["m3u8"], "application/vnd.apple.pkpass": ["pkpass"], "application/vnd.aristanetworks.swi": ["swi"], "application/vnd.astraea-software.iota": ["iota"], "application/vnd.audiograph": ["aep"], "application/vnd.blueice.multipass": ["mpm"], "application/vnd.bmi": ["bmi"], "application/vnd.businessobjects": ["rep"], "application/vnd.chemdraw+xml": ["cdxml"], "application/vnd.chipnuts.karaoke-mmd": ["mmd"], "application/vnd.cinderella": ["cdy"], "application/vnd.claymore": ["cla"], "application/vnd.cloanto.rp9": ["rp9"], "application/vnd.clonk.c4group": ["c4g", "c4d", "c4f", "c4p", "c4u"], "application/vnd.cluetrust.cartomobile-config": ["c11amc"], "application/vnd.cluetrust.cartomobile-config-pkg": ["c11amz"], "application/vnd.commonspace": ["csp"], "application/vnd.contact.cmsg": ["cdbcmsg"], "application/vnd.cosmocaller": ["cmc"], "application/vnd.crick.clicker": ["clkx"], "application/vnd.crick.clicker.keyboard": ["clkk"], "application/vnd.crick.clicker.palette": ["clkp"], "application/vnd.crick.clicker.template": ["clkt"], "application/vnd.crick.clicker.wordbank": ["clkw"], "application/vnd.criticaltools.wbs+xml": ["wbs"], "application/vnd.ctc-posml": ["pml"], "application/vnd.cups-ppd": ["ppd"], "application/vnd.curl.car": ["car"], "application/vnd.curl.pcurl": ["pcurl"], "application/vnd.dart": ["dart"], "application/vnd.data-vision.rdz": ["rdz"], "application/vnd.dece.data": ["uvf", "uvvf", "uvd", "uvvd"], "application/vnd.dece.ttml+xml": ["uvt", "uvvt"], "application/vnd.dece.unspecified": ["uvx", "uvvx"], "application/vnd.dece.zip": ["uvz", "uvvz"], "application/vnd.denovo.fcselayout-link": ["fe_launch"], "application/vnd.dna": ["dna"], "application/vnd.dolby.mlp": ["mlp"], "application/vnd.dpgraph": ["dpg"], "application/vnd.dreamfactory": ["dfac"], "application/vnd.ds-keypoint": ["kpxx"], "application/vnd.dvb.ait": ["ait"], "application/vnd.dvb.service": ["svc"], "application/vnd.dynageo": ["geo"], "application/vnd.ecowin.chart": ["mag"], "application/vnd.enliven": ["nml"], "application/vnd.epson.esf": ["esf"], "application/vnd.epson.msf": ["msf"], "application/vnd.epson.quickanime": ["qam"], "application/vnd.epson.salt": ["slt"], "application/vnd.epson.ssf": ["ssf"], "application/vnd.eszigno3+xml": ["es3", "et3"], "application/vnd.ezpix-album": ["ez2"], "application/vnd.ezpix-package": ["ez3"], "application/vnd.fdf": ["fdf"], "application/vnd.fdsn.mseed": ["mseed"], "application/vnd.fdsn.seed": ["seed", "dataless"], "application/vnd.flographit": ["gph"], "application/vnd.fluxtime.clip": ["ftc"], "application/vnd.framemaker": ["fm", "frame", "maker", "book"], "application/vnd.frogans.fnc": ["fnc"], "application/vnd.frogans.ltf": ["ltf"], "application/vnd.fsc.weblaunch": ["fsc"], "application/vnd.fujitsu.oasys": ["oas"], "application/vnd.fujitsu.oasys2": ["oa2"], "application/vnd.fujitsu.oasys3": ["oa3"], "application/vnd.fujitsu.oasysgp": ["fg5"], "application/vnd.fujitsu.oasysprs": ["bh2"], "application/vnd.fujixerox.ddd": ["ddd"], "application/vnd.fujixerox.docuworks": ["xdw"], "application/vnd.fujixerox.docuworks.binder": ["xbd"], "application/vnd.fuzzysheet": ["fzs"], "application/vnd.genomatix.tuxedo": ["txd"], "application/vnd.geogebra.file": ["ggb"], "application/vnd.geogebra.tool": ["ggt"], "application/vnd.geometry-explorer": ["gex", "gre"], "application/vnd.geonext": ["gxt"], "application/vnd.geoplan": ["g2w"], "application/vnd.geospace": ["g3w"], "application/vnd.gmx": ["gmx"], "application/vnd.google-apps.document": ["gdoc"], "application/vnd.google-apps.presentation": ["gslides"], "application/vnd.google-apps.spreadsheet": ["gsheet"], "application/vnd.google-earth.kml+xml": ["kml"], "application/vnd.google-earth.kmz": ["kmz"], "application/vnd.grafeq": ["gqf", "gqs"], "application/vnd.groove-account": ["gac"], "application/vnd.groove-help": ["ghf"], "application/vnd.groove-identity-message": ["gim"], "application/vnd.groove-injector": ["grv"], "application/vnd.groove-tool-message": ["gtm"], "application/vnd.groove-tool-template": ["tpl"], "application/vnd.groove-vcard": ["vcg"], "application/vnd.hal+xml": ["hal"], "application/vnd.handheld-entertainment+xml": ["zmm"], "application/vnd.hbci": ["hbci"], "application/vnd.hhe.lesson-player": ["les"], "application/vnd.hp-hpgl": ["hpgl"], "application/vnd.hp-hpid": ["hpid"], "application/vnd.hp-hps": ["hps"], "application/vnd.hp-jlyt": ["jlt"], "application/vnd.hp-pcl": ["pcl"], "application/vnd.hp-pclxl": ["pclxl"], "application/vnd.hydrostatix.sof-data": ["sfd-hdstx"], "application/vnd.ibm.minipay": ["mpy"], "application/vnd.ibm.modcap": ["afp", "listafp", "list3820"], "application/vnd.ibm.rights-management": ["irm"], "application/vnd.ibm.secure-container": ["sc"], "application/vnd.iccprofile": ["icc", "icm"], "application/vnd.igloader": ["igl"], "application/vnd.immervision-ivp": ["ivp"], "application/vnd.immervision-ivu": ["ivu"], "application/vnd.insors.igm": ["igm"], "application/vnd.intercon.formnet": ["xpw", "xpx"], "application/vnd.intergeo": ["i2g"], "application/vnd.intu.qbo": ["qbo"], "application/vnd.intu.qfx": ["qfx"], "application/vnd.ipunplugged.rcprofile": ["rcprofile"], "application/vnd.irepository.package+xml": ["irp"], "application/vnd.is-xpr": ["xpr"], "application/vnd.isac.fcs": ["fcs"], "application/vnd.jam": ["jam"], "application/vnd.jcp.javame.midlet-rms": ["rms"], "application/vnd.jisp": ["jisp"], "application/vnd.joost.joda-archive": ["joda"], "application/vnd.kahootz": ["ktz", "ktr"], "application/vnd.kde.karbon": ["karbon"], "application/vnd.kde.kchart": ["chrt"], "application/vnd.kde.kformula": ["kfo"], "application/vnd.kde.kivio": ["flw"], "application/vnd.kde.kontour": ["kon"], "application/vnd.kde.kpresenter": ["kpr", "kpt"], "application/vnd.kde.kspread": ["ksp"], "application/vnd.kde.kword": ["kwd", "kwt"], "application/vnd.kenameaapp": ["htke"], "application/vnd.kidspiration": ["kia"], "application/vnd.kinar": ["kne", "knp"], "application/vnd.koan": ["skp", "skd", "skt", "skm"], "application/vnd.kodak-descriptor": ["sse"], "application/vnd.las.las+xml": ["lasxml"], "application/vnd.llamagraphics.life-balance.desktop": ["lbd"], "application/vnd.llamagraphics.life-balance.exchange+xml": ["lbe"], "application/vnd.lotus-1-2-3": ["123"], "application/vnd.lotus-approach": ["apr"], "application/vnd.lotus-freelance": ["pre"], "application/vnd.lotus-notes": ["nsf"], "application/vnd.lotus-organizer": ["org"], "application/vnd.lotus-screencam": ["scm"], "application/vnd.lotus-wordpro": ["lwp"], "application/vnd.macports.portpkg": ["portpkg"], "application/vnd.mcd": ["mcd"], "application/vnd.medcalcdata": ["mc1"], "application/vnd.mediastation.cdkey": ["cdkey"], "application/vnd.mfer": ["mwf"], "application/vnd.mfmp": ["mfm"], "application/vnd.micrografx.flo": ["flo"], "application/vnd.micrografx.igx": ["igx"], "application/vnd.mif": ["mif"], "application/vnd.mobius.daf": ["daf"], "application/vnd.mobius.dis": ["dis"], "application/vnd.mobius.mbk": ["mbk"], "application/vnd.mobius.mqy": ["mqy"], "application/vnd.mobius.msl": ["msl"], "application/vnd.mobius.plc": ["plc"], "application/vnd.mobius.txf": ["txf"], "application/vnd.mophun.application": ["mpn"], "application/vnd.mophun.certificate": ["mpc"], "application/vnd.mozilla.xul+xml": ["xul"], "application/vnd.ms-artgalry": ["cil"], "application/vnd.ms-cab-compressed": ["cab"], "application/vnd.ms-excel": ["xls", "xlm", "xla", "xlc", "xlt", "xlw"], "application/vnd.ms-excel.addin.macroenabled.12": ["xlam"], "application/vnd.ms-excel.sheet.binary.macroenabled.12": ["xlsb"], "application/vnd.ms-excel.sheet.macroenabled.12": ["xlsm"], "application/vnd.ms-excel.template.macroenabled.12": ["xltm"], "application/vnd.ms-fontobject": ["eot"], "application/vnd.ms-htmlhelp": ["chm"], "application/vnd.ms-ims": ["ims"], "application/vnd.ms-lrm": ["lrm"], "application/vnd.ms-officetheme": ["thmx"], "application/vnd.ms-outlook": ["msg"], "application/vnd.ms-pki.seccat": ["cat"], "application/vnd.ms-pki.stl": ["stl"], "application/vnd.ms-powerpoint": ["ppt", "pps", "pot"], "application/vnd.ms-powerpoint.addin.macroenabled.12": ["ppam"], "application/vnd.ms-powerpoint.presentation.macroenabled.12": ["pptm"], "application/vnd.ms-powerpoint.slide.macroenabled.12": ["sldm"], "application/vnd.ms-powerpoint.slideshow.macroenabled.12": ["ppsm"], "application/vnd.ms-powerpoint.template.macroenabled.12": ["potm"], "application/vnd.ms-project": ["mpp", "mpt"], "application/vnd.ms-word.document.macroenabled.12": ["docm"], "application/vnd.ms-word.template.macroenabled.12": ["dotm"], "application/vnd.ms-works": ["wps", "wks", "wcm", "wdb"], "application/vnd.ms-wpl": ["wpl"], "application/vnd.ms-xpsdocument": ["xps"], "application/vnd.mseq": ["mseq"], "application/vnd.musician": ["mus"], "application/vnd.muvee.style": ["msty"], "application/vnd.mynfc": ["taglet"], "application/vnd.neurolanguage.nlu": ["nlu"], "application/vnd.nitf": ["ntf", "nitf"], "application/vnd.noblenet-directory": ["nnd"], "application/vnd.noblenet-sealer": ["nns"], "application/vnd.noblenet-web": ["nnw"], "application/vnd.nokia.n-gage.data": ["ngdat"], "application/vnd.nokia.n-gage.symbian.install": ["n-gage"], "application/vnd.nokia.radio-preset": ["rpst"], "application/vnd.nokia.radio-presets": ["rpss"], "application/vnd.novadigm.edm": ["edm"], "application/vnd.novadigm.edx": ["edx"], "application/vnd.novadigm.ext": ["ext"], "application/vnd.oasis.opendocument.chart": ["odc"], "application/vnd.oasis.opendocument.chart-template": ["otc"], "application/vnd.oasis.opendocument.database": ["odb"], "application/vnd.oasis.opendocument.formula": ["odf"], "application/vnd.oasis.opendocument.formula-template": ["odft"], "application/vnd.oasis.opendocument.graphics": ["odg"], "application/vnd.oasis.opendocument.graphics-template": ["otg"], "application/vnd.oasis.opendocument.image": ["odi"], "application/vnd.oasis.opendocument.image-template": ["oti"], "application/vnd.oasis.opendocument.presentation": ["odp"], "application/vnd.oasis.opendocument.presentation-template": ["otp"], "application/vnd.oasis.opendocument.spreadsheet": ["ods"], "application/vnd.oasis.opendocument.spreadsheet-template": ["ots"], "application/vnd.oasis.opendocument.text": ["odt"], "application/vnd.oasis.opendocument.text-master": ["odm"], "application/vnd.oasis.opendocument.text-template": ["ott"], "application/vnd.oasis.opendocument.text-web": ["oth"], "application/vnd.olpc-sugar": ["xo"], "application/vnd.oma.dd2+xml": ["dd2"], "application/vnd.openofficeorg.extension": ["oxt"], "application/vnd.openxmlformats-officedocument.presentationml.presentation": ["pptx"], "application/vnd.openxmlformats-officedocument.presentationml.slide": ["sldx"], "application/vnd.openxmlformats-officedocument.presentationml.slideshow": ["ppsx"], "application/vnd.openxmlformats-officedocument.presentationml.template": ["potx"], "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet": ["xlsx"], "application/vnd.openxmlformats-officedocument.spreadsheetml.template": ["xltx"], "application/vnd.openxmlformats-officedocument.wordprocessingml.document": ["docx"], "application/vnd.openxmlformats-officedocument.wordprocessingml.template": ["dotx"], "application/vnd.osgeo.mapguide.package": ["mgp"], "application/vnd.osgi.dp": ["dp"], "application/vnd.osgi.subsystem": ["esa"], "application/vnd.palm": ["pdb", "pqa", "oprc"], "application/vnd.pawaafile": ["paw"], "application/vnd.pg.format": ["str"], "application/vnd.pg.osasli": ["ei6"], "application/vnd.picsel": ["efif"], "application/vnd.pmi.widget": ["wg"], "application/vnd.pocketlearn": ["plf"], "application/vnd.powerbuilder6": ["pbd"], "application/vnd.previewsystems.box": ["box"], "application/vnd.proteus.magazine": ["mgz"], "application/vnd.publishare-delta-tree": ["qps"], "application/vnd.pvi.ptid1": ["ptid"], "application/vnd.quark.quarkxpress": ["qxd", "qxt", "qwd", "qwt", "qxl", "qxb"], "application/vnd.realvnc.bed": ["bed"], "application/vnd.recordare.musicxml": ["mxl"], "application/vnd.recordare.musicxml+xml": ["musicxml"], "application/vnd.rig.cryptonote": ["cryptonote"], "application/vnd.rim.cod": ["cod"], "application/vnd.rn-realmedia": ["rm"], "application/vnd.rn-realmedia-vbr": ["rmvb"], "application/vnd.route66.link66+xml": ["link66"], "application/vnd.sailingtracker.track": ["st"], "application/vnd.seemail": ["see"], "application/vnd.sema": ["sema"], "application/vnd.semd": ["semd"], "application/vnd.semf": ["semf"], "application/vnd.shana.informed.formdata": ["ifm"], "application/vnd.shana.informed.formtemplate": ["itp"], "application/vnd.shana.informed.interchange": ["iif"], "application/vnd.shana.informed.package": ["ipk"], "application/vnd.simtech-mindmapper": ["twd", "twds"], "application/vnd.smaf": ["mmf"], "application/vnd.smart.teacher": ["teacher"], "application/vnd.solent.sdkm+xml": ["sdkm", "sdkd"], "application/vnd.spotfire.dxp": ["dxp"], "application/vnd.spotfire.sfs": ["sfs"], "application/vnd.stardivision.calc": ["sdc"], "application/vnd.stardivision.draw": ["sda"], "application/vnd.stardivision.impress": ["sdd"], "application/vnd.stardivision.math": ["smf"], "application/vnd.stardivision.writer": ["sdw", "vor"], "application/vnd.stardivision.writer-global": ["sgl"], "application/vnd.stepmania.package": ["smzip"], "application/vnd.stepmania.stepchart": ["sm"], "application/vnd.sun.wadl+xml": ["wadl"], "application/vnd.sun.xml.calc": ["sxc"], "application/vnd.sun.xml.calc.template": ["stc"], "application/vnd.sun.xml.draw": ["sxd"], "application/vnd.sun.xml.draw.template": ["std"], "application/vnd.sun.xml.impress": ["sxi"], "application/vnd.sun.xml.impress.template": ["sti"], "application/vnd.sun.xml.math": ["sxm"], "application/vnd.sun.xml.writer": ["sxw"], "application/vnd.sun.xml.writer.global": ["sxg"], "application/vnd.sun.xml.writer.template": ["stw"], "application/vnd.sus-calendar": ["sus", "susp"], "application/vnd.svd": ["svd"], "application/vnd.symbian.install": ["sis", "sisx"], "application/vnd.syncml+xml": ["xsm"], "application/vnd.syncml.dm+wbxml": ["bdm"], "application/vnd.syncml.dm+xml": ["xdm"], "application/vnd.tao.intent-module-archive": ["tao"], "application/vnd.tcpdump.pcap": ["pcap", "cap", "dmp"], "application/vnd.tmobile-livetv": ["tmo"], "application/vnd.trid.tpt": ["tpt"], "application/vnd.triscape.mxs": ["mxs"], "application/vnd.trueapp": ["tra"], "application/vnd.ufdl": ["ufd", "ufdl"], "application/vnd.uiq.theme": ["utz"], "application/vnd.umajin": ["umj"], "application/vnd.unity": ["unityweb"], "application/vnd.uoml+xml": ["uoml"], "application/vnd.vcx": ["vcx"], "application/vnd.visio": ["vsd", "vst", "vss", "vsw"], "application/vnd.visionary": ["vis"], "application/vnd.vsf": ["vsf"], "application/vnd.wap.wbxml": ["wbxml"], "application/vnd.wap.wmlc": ["wmlc"], "application/vnd.wap.wmlscriptc": ["wmlsc"], "application/vnd.webturbo": ["wtb"], "application/vnd.wolfram.player": ["nbp"], "application/vnd.wordperfect": ["wpd"], "application/vnd.wqd": ["wqd"], "application/vnd.wt.stf": ["stf"], "application/vnd.xara": ["xar"], "application/vnd.xfdl": ["xfdl"], "application/vnd.yamaha.hv-dic": ["hvd"], "application/vnd.yamaha.hv-script": ["hvs"], "application/vnd.yamaha.hv-voice": ["hvp"], "application/vnd.yamaha.openscoreformat": ["osf"], "application/vnd.yamaha.openscoreformat.osfpvg+xml": ["osfpvg"], "application/vnd.yamaha.smaf-audio": ["saf"], "application/vnd.yamaha.smaf-phrase": ["spf"], "application/vnd.yellowriver-custom-menu": ["cmp"], "application/vnd.zul": ["zir", "zirz"], "application/vnd.zzazz.deck+xml": ["zaz"], "application/voicexml+xml": ["vxml"], "application/wasm": ["wasm"], "application/widget": ["wgt"], "application/winhlp": ["hlp"], "application/wsdl+xml": ["wsdl"], "application/wspolicy+xml": ["wspolicy"], "application/x-7z-compressed": ["7z"], "application/x-abiword": ["abw"], "application/x-ace-compressed": ["ace"], "application/x-apple-diskimage": [], "application/x-arj": ["arj"], "application/x-authorware-bin": ["aab", "x32", "u32", "vox"], "application/x-authorware-map": ["aam"], "application/x-authorware-seg": ["aas"], "application/x-bcpio": ["bcpio"], "application/x-bdoc": [], "application/x-bittorrent": ["torrent"], "application/x-blorb": ["blb", "blorb"], "application/x-bzip": ["bz"], "application/x-bzip2": ["bz2", "boz"], "application/x-cbr": ["cbr", "cba", "cbt", "cbz", "cb7"], "application/x-cdlink": ["vcd"], "application/x-cfs-compressed": ["cfs"], "application/x-chat": ["chat"], "application/x-chess-pgn": ["pgn"], "application/x-chrome-extension": ["crx"], "application/x-cocoa": ["cco"], "application/x-conference": ["nsc"], "application/x-cpio": ["cpio"], "application/x-csh": ["csh"], "application/x-debian-package": ["udeb"], "application/x-dgc-compressed": ["dgc"], "application/x-director": ["dir", "dcr", "dxr", "cst", "cct", "cxt", "w3d", "fgd", "swa"], "application/x-doom": ["wad"], "application/x-dtbncx+xml": ["ncx"], "application/x-dtbook+xml": ["dtb"], "application/x-dtbresource+xml": ["res"], "application/x-dvi": ["dvi"], "application/x-envoy": ["evy"], "application/x-eva": ["eva"], "application/x-font-bdf": ["bdf"], "application/x-font-ghostscript": ["gsf"], "application/x-font-linux-psf": ["psf"], "application/x-font-pcf": ["pcf"], "application/x-font-snf": ["snf"], "application/x-font-type1": ["pfa", "pfb", "pfm", "afm"], "application/x-freearc": ["arc"], "application/x-futuresplash": ["spl"], "application/x-gca-compressed": ["gca"], "application/x-glulx": ["ulx"], "application/x-gnumeric": ["gnumeric"], "application/x-gramps-xml": ["gramps"], "application/x-gtar": ["gtar"], "application/x-hdf": ["hdf"], "application/x-httpd-php": ["php"], "application/x-install-instructions": ["install"], "application/x-iso9660-image": [], "application/x-java-archive-diff": ["jardiff"], "application/x-java-jnlp-file": ["jnlp"], "application/x-latex": ["latex"], "application/x-lua-bytecode": ["luac"], "application/x-lzh-compressed": ["lzh", "lha"], "application/x-makeself": ["run"], "application/x-mie": ["mie"], "application/x-mobipocket-ebook": ["prc", "mobi"], "application/x-ms-application": ["application"], "application/x-ms-shortcut": ["lnk"], "application/x-ms-wmd": ["wmd"], "application/x-ms-wmz": ["wmz"], "application/x-ms-xbap": ["xbap"], "application/x-msaccess": ["mdb"], "application/x-msbinder": ["obd"], "application/x-mscardfile": ["crd"], "application/x-msclip": ["clp"], "application/x-msdos-program": [], "application/x-msdownload": ["com", "bat"], "application/x-msmediaview": ["mvb", "m13", "m14"], "application/x-msmetafile": ["wmf", "emf", "emz"], "application/x-msmoney": ["mny"], "application/x-mspublisher": ["pub"], "application/x-msschedule": ["scd"], "application/x-msterminal": ["trm"], "application/x-mswrite": ["wri"], "application/x-netcdf": ["nc", "cdf"], "application/x-ns-proxy-autoconfig": ["pac"], "application/x-nzb": ["nzb"], "application/x-perl": ["pl", "pm"], "application/x-pilot": [], "application/x-pkcs12": ["p12", "pfx"], "application/x-pkcs7-certificates": ["p7b", "spc"], "application/x-pkcs7-certreqresp": ["p7r"], "application/x-rar-compressed": ["rar"], "application/x-redhat-package-manager": ["rpm"], "application/x-research-info-systems": ["ris"], "application/x-sea": ["sea"], "application/x-sh": ["sh"], "application/x-shar": ["shar"], "application/x-shockwave-flash": ["swf"], "application/x-silverlight-app": ["xap"], "application/x-sql": ["sql"], "application/x-stuffit": ["sit"], "application/x-stuffitx": ["sitx"], "application/x-subrip": ["srt"], "application/x-sv4cpio": ["sv4cpio"], "application/x-sv4crc": ["sv4crc"], "application/x-t3vm-image": ["t3"], "application/x-tads": ["gam"], "application/x-tar": ["tar"], "application/x-tcl": ["tcl", "tk"], "application/x-tex": ["tex"], "application/x-tex-tfm": ["tfm"], "application/x-texinfo": ["texinfo", "texi"], "application/x-tgif": ["obj"], "application/x-ustar": ["ustar"], "application/x-virtualbox-hdd": ["hdd"], "application/x-virtualbox-ova": ["ova"], "application/x-virtualbox-ovf": ["ovf"], "application/x-virtualbox-vbox": ["vbox"], "application/x-virtualbox-vbox-extpack": ["vbox-extpack"], "application/x-virtualbox-vdi": ["vdi"], "application/x-virtualbox-vhd": ["vhd"], "application/x-virtualbox-vmdk": ["vmdk"], "application/x-wais-source": ["src"], "application/x-web-app-manifest+json": ["webapp"], "application/x-x509-ca-cert": ["der", "crt", "pem"], "application/x-xfig": ["fig"], "application/x-xliff+xml": ["xlf"], "application/x-xpinstall": ["xpi"], "application/x-xz": ["xz"], "application/x-zmachine": ["z1", "z2", "z3", "z4", "z5", "z6", "z7", "z8"], "application/xaml+xml": ["xaml"], "application/xcap-diff+xml": ["xdf"], "application/xenc+xml": ["xenc"], "application/xhtml+xml": ["xhtml", "xht"], "application/xml": ["xml", "xsl", "xsd", "rng"], "application/xml-dtd": ["dtd"], "application/xop+xml": ["xop"], "application/xproc+xml": ["xpl"], "application/xslt+xml": ["xslt"], "application/xspf+xml": ["xspf"], "application/xv+xml": ["mxml", "xhvml", "xvml", "xvm"], "application/yang": ["yang"], "application/yin+xml": ["yin"], "application/zip": ["zip"], "audio/3gpp": [], "audio/adpcm": ["adp"], "audio/basic": ["au", "snd"], "audio/midi": ["mid", "midi", "kar", "rmi"], "audio/mp3": [], "audio/mp4": ["m4a", "mp4a"], "audio/mpeg": ["mpga", "mp2", "mp2a", "mp3", "m2a", "m3a"], "audio/ogg": ["oga", "ogg", "spx"], "audio/s3m": ["s3m"], "audio/silk": ["sil"], "audio/vnd.dece.audio": ["uva", "uvva"], "audio/vnd.digital-winds": ["eol"], "audio/vnd.dra": ["dra"], "audio/vnd.dts": ["dts"], "audio/vnd.dts.hd": ["dtshd"], "audio/vnd.lucent.voice": ["lvp"], "audio/vnd.ms-playready.media.pya": ["pya"], "audio/vnd.nuera.ecelp4800": ["ecelp4800"], "audio/vnd.nuera.ecelp7470": ["ecelp7470"], "audio/vnd.nuera.ecelp9600": ["ecelp9600"], "audio/vnd.rip": ["rip"], "audio/wav": ["wav"], "audio/wave": [], "audio/webm": ["weba"], "audio/x-aac": ["aac"], "audio/x-aiff": ["aif", "aiff", "aifc"], "audio/x-caf": ["caf"], "audio/x-flac": ["flac"], "audio/x-m4a": [], "audio/x-matroska": ["mka"], "audio/x-mpegurl": ["m3u"], "audio/x-ms-wax": ["wax"], "audio/x-ms-wma": ["wma"], "audio/x-pn-realaudio": ["ram", "ra"], "audio/x-pn-realaudio-plugin": ["rmp"], "audio/x-realaudio": [], "audio/x-wav": [], "audio/xm": ["xm"], "chemical/x-cdx": ["cdx"], "chemical/x-cif": ["cif"], "chemical/x-cmdf": ["cmdf"], "chemical/x-cml": ["cml"], "chemical/x-csml": ["csml"], "chemical/x-xyz": ["xyz"], "font/collection": ["ttc"], "font/otf": ["otf"], "font/ttf": ["ttf"], "font/woff": ["woff"], "font/woff2": ["woff2"], "image/apng": ["apng"], "image/bmp": ["bmp"], "image/cgm": ["cgm"], "image/g3fax": ["g3"], "image/gif": ["gif"], "image/ief": ["ief"], "image/jp2": ["jp2", "jpg2"], "image/jpeg": ["jpeg", "jpg", "jpe"], "image/jpm": ["jpm"], "image/jpx": ["jpx", "jpf"], "image/ktx": ["ktx"], "image/png": ["png"], "image/prs.btif": ["btif"], "image/sgi": ["sgi"], "image/svg+xml": ["svg", "svgz"], "image/tiff": ["tiff", "tif"], "image/vnd.adobe.photoshop": ["psd"], "image/vnd.dece.graphic": ["uvi", "uvvi", "uvg", "uvvg"], "image/vnd.djvu": ["djvu", "djv"], "image/vnd.dvb.subtitle": [], "image/vnd.dwg": ["dwg"], "image/vnd.dxf": ["dxf"], "image/vnd.fastbidsheet": ["fbs"], "image/vnd.fpx": ["fpx"], "image/vnd.fst": ["fst"], "image/vnd.fujixerox.edmics-mmr": ["mmr"], "image/vnd.fujixerox.edmics-rlc": ["rlc"], "image/vnd.ms-modi": ["mdi"], "image/vnd.ms-photo": ["wdp"], "image/vnd.net-fpx": ["npx"], "image/vnd.wap.wbmp": ["wbmp"], "image/vnd.xiff": ["xif"], "image/webp": ["webp"], "image/x-3ds": ["3ds"], "image/x-cmu-raster": ["ras"], "image/x-cmx": ["cmx"], "image/x-freehand": ["fh", "fhc", "fh4", "fh5", "fh7"], "image/x-icon": ["ico"], "image/x-jng": ["jng"], "image/x-mrsid-image": ["sid"], "image/x-ms-bmp": [], "image/x-pcx": ["pcx"], "image/x-pict": ["pic", "pct"], "image/x-portable-anymap": ["pnm"], "image/x-portable-bitmap": ["pbm"], "image/x-portable-graymap": ["pgm"], "image/x-portable-pixmap": ["ppm"], "image/x-rgb": ["rgb"], "image/x-tga": ["tga"], "image/x-xbitmap": ["xbm"], "image/x-xpixmap": ["xpm"], "image/x-xwindowdump": ["xwd"], "message/rfc822": ["eml", "mime"], "model/gltf+json": ["gltf"], "model/gltf-binary": ["glb"], "model/iges": ["igs", "iges"], "model/mesh": ["msh", "mesh", "silo"], "model/vnd.collada+xml": ["dae"], "model/vnd.dwf": ["dwf"], "model/vnd.gdl": ["gdl"], "model/vnd.gtw": ["gtw"], "model/vnd.mts": ["mts"], "model/vnd.vtu": ["vtu"], "model/vrml": ["wrl", "vrml"], "model/x3d+binary": ["x3db", "x3dbz"], "model/x3d+vrml": ["x3dv", "x3dvz"], "model/x3d+xml": ["x3d", "x3dz"], "text/cache-manifest": ["appcache", "manifest"], "text/calendar": ["ics", "ifb"], "text/coffeescript": ["coffee", "litcoffee"], "text/css": ["css"], "text/csv": ["csv"], "text/hjson": ["hjson"], "text/html": ["html", "htm", "shtml"], "text/jade": ["jade"], "text/jsx": ["jsx"], "text/less": ["less"], "text/markdown": ["markdown", "md"], "text/mathml": ["mml"], "text/n3": ["n3"], "text/plain": ["txt", "text", "conf", "def", "list", "log", "in", "ini"], "text/prs.lines.tag": ["dsc"], "text/richtext": ["rtx"], "text/rtf": [], "text/sgml": ["sgml", "sgm"], "text/slim": ["slim", "slm"], "text/stylus": ["stylus", "styl"], "text/tab-separated-values": ["tsv"], "text/troff": ["t", "tr", "roff", "man", "me", "ms"], "text/turtle": ["ttl"], "text/uri-list": ["uri", "uris", "urls"], "text/vcard": ["vcard"], "text/vnd.curl": ["curl"], "text/vnd.curl.dcurl": ["dcurl"], "text/vnd.curl.mcurl": ["mcurl"], "text/vnd.curl.scurl": ["scurl"], "text/vnd.dvb.subtitle": ["sub"], "text/vnd.fly": ["fly"], "text/vnd.fmi.flexstor": ["flx"], "text/vnd.graphviz": ["gv"], "text/vnd.in3d.3dml": ["3dml"], "text/vnd.in3d.spot": ["spot"], "text/vnd.sun.j2me.app-descriptor": ["jad"], "text/vnd.wap.wml": ["wml"], "text/vnd.wap.wmlscript": ["wmls"], "text/vtt": ["vtt"], "text/x-asm": ["s", "asm"], "text/x-c": ["c", "cc", "cxx", "cpp", "h", "hh", "dic"], "text/x-component": ["htc"], "text/x-fortran": ["f", "for", "f77", "f90"], "text/x-handlebars-template": ["hbs"], "text/x-java-source": ["java"], "text/x-lua": ["lua"], "text/x-markdown": ["mkd"], "text/x-nfo": ["nfo"], "text/x-opml": ["opml"], "text/x-org": [], "text/x-pascal": ["p", "pas"], "text/x-processing": ["pde"], "text/x-sass": ["sass"], "text/x-scss": ["scss"], "text/x-setext": ["etx"], "text/x-sfv": ["sfv"], "text/x-suse-ymp": ["ymp"], "text/x-uuencode": ["uu"], "text/x-vcalendar": ["vcs"], "text/x-vcard": ["vcf"], "text/xml": [], "text/yaml": ["yaml", "yml"], "video/3gpp": ["3gp", "3gpp"], "video/3gpp2": ["3g2"], "video/h261": ["h261"], "video/h263": ["h263"], "video/h264": ["h264"], "video/jpeg": ["jpgv"], "video/jpm": ["jpgm"], "video/mj2": ["mj2", "mjp2"], "video/mp2t": ["ts"], "video/mp4": ["mp4", "mp4v", "mpg4"], "video/mpeg": ["mpeg", "mpg", "mpe", "m1v", "m2v"], "video/ogg": ["ogv"], "video/quicktime": ["qt", "mov"], "video/vnd.dece.hd": ["uvh", "uvvh"], "video/vnd.dece.mobile": ["uvm", "uvvm"], "video/vnd.dece.pd": ["uvp", "uvvp"], "video/vnd.dece.sd": ["uvs", "uvvs"], "video/vnd.dece.video": ["uvv", "uvvv"], "video/vnd.dvb.file": ["dvb"], "video/vnd.fvt": ["fvt"], "video/vnd.mpegurl": ["mxu", "m4u"], "video/vnd.ms-playready.media.pyv": ["pyv"], "video/vnd.uvvu.mp4": ["uvu", "uvvu"], "video/vnd.vivo": ["viv"], "video/webm": ["webm"], "video/x-f4v": ["f4v"], "video/x-fli": ["fli"], "video/x-flv": ["flv"], "video/x-m4v": ["m4v"], "video/x-matroska": ["mkv", "mk3d", "mks"], "video/x-mng": ["mng"], "video/x-ms-asf": ["asf", "asx"], "video/x-ms-vob": ["vob"], "video/x-ms-wm": ["wm"], "video/x-ms-wmv": ["wmv"], "video/x-ms-wmx": ["wmx"], "video/x-ms-wvx": ["wvx"], "video/x-msvideo": ["avi"], "video/x-sgi-movie": ["movie"], "video/x-smv": ["smv"], "x-conference/x-cooltalk": ["ice"] }; +}); +var nP = g((Dfe, rP) => { + var Nfe = O("path"), dV = O("fs"); + function ia() { + this.types = /* @__PURE__ */ Object.create(null), this.extensions = /* @__PURE__ */ Object.create(null); + } + ia.prototype.define = function(e21) { + for (var t in e21) { + for (var r = e21[t], n = 0; n < r.length; n++) process.env.DEBUG_MIME && this.types[r[n]] && console.warn((this._loading || "define()").replace(/.*\//, ""), 'changes "' + r[n] + '" extension type from ' + this.types[r[n]] + " to " + t), this.types[r[n]] = t; + this.extensions[t] || (this.extensions[t] = r[0]); + } + }; + ia.prototype.load = function(e21) { + this._loading = e21; + var t = {}, r = dV.readFileSync(e21, "ascii"), n = r.split(/[\r\n]+/); + n.forEach(function(i) { + var o = i.replace(/\s*#.*|^\s*|\s*$/g, "").split(/\s+/); + t[o.shift()] = o; + }), this.define(t), this._loading = null; + }; + ia.prototype.lookup = function(e21, t) { + var r = e21.replace(/^.*[\.\/\\]/, "").toLowerCase(); + return this.types[r] || t || this.default_type; + }; + ia.prototype.extension = function(e21) { + var t = e21.match(/^\s*([^;\s]*)(?:;|\s|$)/)[1].toLowerCase(); + return this.extensions[t]; + }; + var na = new ia(); + na.define(tP()); + na.default_type = na.lookup("bin"); + na.Mime = ia; + na.charsets = { lookup: function(e21, t) { + return /^text\/|^application\/(javascript|json)/.test(e21) ? "UTF-8" : t; + } }; + rP.exports = na; +}); +var fb = g((qfe, iP) => { + var oa = 1e3, aa = oa * 60, sa = aa * 60, Mi = sa * 24, fV = Mi * 7, mV = Mi * 365.25; + iP.exports = function(e21, t) { + t = t || {}; + var r = typeof e21; + if (r === "string" && e21.length > 0) return hV(e21); + if (r === "number" && isFinite(e21)) return t.long ? gV(e21) : vV(e21); + throw new Error("val is not a non-empty string or a valid number. val=" + JSON.stringify(e21)); + }; + function hV(e21) { + if (e21 = String(e21), !(e21.length > 100)) { + var t = /^(-?(?:\d+)?\.?\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|weeks?|w|years?|yrs?|y)?$/i.exec(e21); + if (t) { + var r = parseFloat(t[1]), n = (t[2] || "ms").toLowerCase(); + switch (n) { + case "years": + case "year": + case "yrs": + case "yr": + case "y": + return r * mV; + case "weeks": + case "week": + case "w": + return r * fV; + case "days": + case "day": + case "d": + return r * Mi; + case "hours": + case "hour": + case "hrs": + case "hr": + case "h": + return r * sa; + case "minutes": + case "minute": + case "mins": + case "min": + case "m": + return r * aa; + case "seconds": + case "second": + case "secs": + case "sec": + case "s": + return r * oa; + case "milliseconds": + case "millisecond": + case "msecs": + case "msec": + case "ms": + return r; + default: + return; + } + } + } + } + function vV(e21) { + var t = Math.abs(e21); + return t >= Mi ? Math.round(e21 / Mi) + "d" : t >= sa ? Math.round(e21 / sa) + "h" : t >= aa ? Math.round(e21 / aa) + "m" : t >= oa ? Math.round(e21 / oa) + "s" : e21 + "ms"; + } + function gV(e21) { + var t = Math.abs(e21); + return t >= Mi ? qd(e21, t, Mi, "day") : t >= sa ? qd(e21, t, sa, "hour") : t >= aa ? qd(e21, t, aa, "minute") : t >= oa ? qd(e21, t, oa, "second") : e21 + " ms"; + } + function qd(e21, t, r, n) { + var i = t >= r * 1.5; + return Math.round(e21 / r) + " " + n + (i ? "s" : ""); + } +}); +var mb = g((Ufe, oP) => { + "use strict"; + oP.exports = yV; + function yV(e21, t, r) { + if (typeof t != "string") throw new TypeError("argument str must be a string"); + var n = t.indexOf("="); + if (n === -1) return -2; + var i = t.slice(n + 1).split(","), o = []; + o.type = t.slice(0, n); + for (var a = 0; a < i.length; a++) { + var s = i[a].split("-"), c = parseInt(s[0], 10), u = parseInt(s[1], 10); + isNaN(c) ? (c = e21 - u, u = e21 - 1) : isNaN(u) && (u = e21 - 1), u > e21 - 1 && (u = e21 - 1), !(isNaN(c) || isNaN(u) || c > u || c < 0) && o.push({ start: c, end: u }); + } + return o.length < 1 ? -1 : r && r.combine ? xV(o) : o; + } + function xV(e21) { + for (var t = e21.map(bV).sort($V), r = 0, n = 1; n < t.length; n++) { + var i = t[n], o = t[r]; + i.start > o.end + 1 ? t[++r] = i : i.end > o.end && (o.end = i.end, o.index = Math.min(o.index, i.index)); + } + t.length = r + 1; + var a = t.sort(wV).map(_V); + return a.type = e21.type, a; + } + function bV(e21, t) { + return { start: e21.start, end: e21.end, index: t }; + } + function _V(e21) { + return { start: e21.start, end: e21.end }; + } + function wV(e21, t) { + return e21.index - t.index; + } + function $V(e21, t) { + return e21.start - t.start; + } +}); +var Fd = g((Lfe, bb) => { + "use strict"; + var hb = ab(), Je = Jz()("send"), Fi = Ar()("send"), SV = zy(), kV = Wz(), cP = qc(), EV = pb(), OV = db(), Ld = O("fs"), gb = nP(), uP = fb(), TV = hc(), IV = mb(), Qc = O("path"), zV = Uc(), lP = O("stream"), PV = O("util"), jV = Qc.extname, pP = Qc.join, vb = Qc.normalize, xb = Qc.resolve, Ud = Qc.sep, AV = /^ *bytes=/, dP = 60 * 60 * 24 * 365 * 1e3, aP = /(?:^|[\\/])\.\.(?:[\\/]|$)/; + bb.exports = RV; + bb.exports.mime = gb; + function RV(e21, t, r) { + return new we(e21, t, r); + } + function we(e21, t, r) { + lP.call(this); + var n = r || {}; + if (this.options = n, this.path = t, this.req = e21, this._acceptRanges = n.acceptRanges !== void 0 ? !!n.acceptRanges : true, this._cacheControl = n.cacheControl !== void 0 ? !!n.cacheControl : true, this._etag = n.etag !== void 0 ? !!n.etag : true, this._dotfiles = n.dotfiles !== void 0 ? n.dotfiles : "ignore", this._dotfiles !== "ignore" && this._dotfiles !== "allow" && this._dotfiles !== "deny") throw new TypeError('dotfiles option must be "allow", "deny", or "ignore"'); + this._hidden = !!n.hidden, n.hidden !== void 0 && Fi("hidden: use dotfiles: '" + (this._hidden ? "allow" : "ignore") + "' instead"), n.dotfiles === void 0 && (this._dotfiles = void 0), this._extensions = n.extensions !== void 0 ? yb(n.extensions, "extensions option") : [], this._immutable = n.immutable !== void 0 ? !!n.immutable : false, this._index = n.index !== void 0 ? yb(n.index, "index option") : ["index.html"], this._lastModified = n.lastModified !== void 0 ? !!n.lastModified : true, this._maxage = n.maxAge || n.maxage, this._maxage = typeof this._maxage == "string" ? uP(this._maxage) : Number(this._maxage), this._maxage = isNaN(this._maxage) ? 0 : Math.min(Math.max(0, this._maxage), dP), this._root = n.root ? xb(n.root) : null, !this._root && n.from && this.from(n.from); + } + PV.inherits(we, lP); + we.prototype.etag = Fi.function(function(t) { + return this._etag = !!t, Je("etag %s", this._etag), this; + }, "send.etag: pass etag as option"); + we.prototype.hidden = Fi.function(function(t) { + return this._hidden = !!t, this._dotfiles = void 0, Je("hidden %s", this._hidden), this; + }, "send.hidden: use dotfiles option"); + we.prototype.index = Fi.function(function(t) { + var r = t ? yb(t, "paths argument") : []; + return Je("index %o", t), this._index = r, this; + }, "send.index: pass index as option"); + we.prototype.root = function(t) { + return this._root = xb(String(t)), Je("root %s", this._root), this; + }; + we.prototype.from = Fi.function(we.prototype.root, "send.from: pass root as option"); + we.prototype.root = Fi.function(we.prototype.root, "send.root: pass root as option"); + we.prototype.maxage = Fi.function(function(t) { + return this._maxage = typeof t == "string" ? uP(t) : Number(t), this._maxage = isNaN(this._maxage) ? 0 : Math.min(Math.max(0, this._maxage), dP), Je("max-age %d", this._maxage), this; + }, "send.maxage: pass maxAge as option"); + we.prototype.error = function(t, r) { + if (mP(this, "error")) return this.emit("error", qV(t, r)); + var n = this.res, i = zV.message[t] || String(t), o = fP("Error", cP(i)); + CV(n), r && r.headers && ZV(n, r.headers), n.statusCode = t, n.setHeader("Content-Type", "text/html; charset=UTF-8"), n.setHeader("Content-Length", Buffer.byteLength(o)), n.setHeader("Content-Security-Policy", "default-src 'none'"), n.setHeader("X-Content-Type-Options", "nosniff"), n.end(o); + }; + we.prototype.hasTrailingSlash = function() { + return this.path[this.path.length - 1] === "/"; + }; + we.prototype.isConditionalGET = function() { + return this.req.headers["if-match"] || this.req.headers["if-unmodified-since"] || this.req.headers["if-none-match"] || this.req.headers["if-modified-since"]; + }; + we.prototype.isPreconditionFailure = function() { + var t = this.req, r = this.res, n = t.headers["if-match"]; + if (n) { + var i = r.getHeader("ETag"); + return !i || n !== "*" && FV(n).every(function(s) { + return s !== i && s !== "W/" + i && "W/" + s !== i; + }); + } + var o = Md(t.headers["if-unmodified-since"]); + if (!isNaN(o)) { + var a = Md(r.getHeader("Last-Modified")); + return isNaN(a) || a > o; + } + return false; + }; + we.prototype.removeContentHeaderFields = function() { + var t = this.res; + t.removeHeader("Content-Encoding"), t.removeHeader("Content-Language"), t.removeHeader("Content-Length"), t.removeHeader("Content-Range"), t.removeHeader("Content-Type"); + }; + we.prototype.notModified = function() { + var t = this.res; + Je("not modified"), this.removeContentHeaderFields(), t.statusCode = 304, t.end(); + }; + we.prototype.headersAlreadySent = function() { + var t = new Error("Can't set headers after they are sent."); + Je("headers already sent"), this.error(500, t); + }; + we.prototype.isCachable = function() { + var t = this.res.statusCode; + return t >= 200 && t < 300 || t === 304; + }; + we.prototype.onStatError = function(t) { + switch (t.code) { + case "ENAMETOOLONG": + case "ENOENT": + case "ENOTDIR": + this.error(404, t); + break; + default: + this.error(500, t); + break; + } + }; + we.prototype.isFresh = function() { + return OV(this.req.headers, { etag: this.res.getHeader("ETag"), "last-modified": this.res.getHeader("Last-Modified") }); + }; + we.prototype.isRangeFresh = function() { + var t = this.req.headers["if-range"]; + if (!t) return true; + if (t.indexOf('"') !== -1) { + var r = this.res.getHeader("ETag"); + return !!(r && t.indexOf(r) !== -1); + } + var n = this.res.getHeader("Last-Modified"); + return Md(n) <= Md(t); + }; + we.prototype.redirect = function(t) { + var r = this.res; + if (mP(this, "directory")) { + this.emit("directory", r, t); + return; + } + if (this.hasTrailingSlash()) { + this.error(403); + return; + } + var n = kV(NV(this.path + "/")), i = fP("Redirecting", "Redirecting to " + cP(n)); + r.statusCode = 301, r.setHeader("Content-Type", "text/html; charset=UTF-8"), r.setHeader("Content-Length", Buffer.byteLength(i)), r.setHeader("Content-Security-Policy", "default-src 'none'"), r.setHeader("X-Content-Type-Options", "nosniff"), r.setHeader("Location", n), r.end(i); + }; + we.prototype.pipe = function(t) { + var r = this._root; + this.res = t; + var n = UV(this.path); + if (n === -1) return this.error(400), t; + if (~n.indexOf("\0")) return this.error(400), t; + var i; + if (r !== null) { + if (n && (n = vb("." + Ud + n)), aP.test(n)) return Je('malicious path "%s"', n), this.error(403), t; + i = n.split(Ud), n = vb(pP(r, n)); + } else { + if (aP.test(n)) return Je('malicious path "%s"', n), this.error(403), t; + i = vb(n).split(Ud), n = xb(n); + } + if (DV(i)) { + var o = this._dotfiles; + switch (o === void 0 && (o = i[i.length - 1][0] === "." ? this._hidden ? "allow" : "ignore" : "allow"), Je('%s dotfile "%s"', o, n), o) { + case "allow": + break; + case "deny": + return this.error(403), t; + case "ignore": + default: + return this.error(404), t; + } + } + return this._index.length && this.hasTrailingSlash() ? (this.sendIndex(n), t) : (this.sendFile(n), t); + }; + we.prototype.send = function(t, r) { + var n = r.size, i = this.options, o = {}, a = this.res, s = this.req, c = s.headers.range, u = i.start || 0; + if (MV(a)) { + this.headersAlreadySent(); + return; + } + if (Je('pipe "%s"', t), this.setHeader(t, r), this.type(t), this.isConditionalGET()) { + if (this.isPreconditionFailure()) { + this.error(412); + return; + } + if (this.isCachable() && this.isFresh()) { + this.notModified(); + return; + } + } + if (n = Math.max(0, n - u), i.end !== void 0) { + var l = i.end - u + 1; + n > l && (n = l); + } + if (this._acceptRanges && AV.test(c)) { + if (c = IV(n, c, { combine: true }), this.isRangeFresh() || (Je("range stale"), c = -2), c === -1) return Je("range unsatisfiable"), a.setHeader("Content-Range", sP("bytes", n)), this.error(416, { headers: { "Content-Range": a.getHeader("Content-Range") } }); + c !== -2 && c.length === 1 && (Je("range %j", c), a.statusCode = 206, a.setHeader("Content-Range", sP("bytes", n, c[0])), u += c[0].start, n = c[0].end - c[0].start + 1); + } + for (var p in i) o[p] = i[p]; + if (o.start = u, o.end = Math.max(u, u + n - 1), a.setHeader("Content-Length", n), s.method === "HEAD") { + a.end(); + return; + } + this.stream(t, o); + }; + we.prototype.sendFile = function(t) { + var r = 0, n = this; + Je('stat "%s"', t), Ld.stat(t, function(a, s) { + if (a && a.code === "ENOENT" && !jV(t) && t[t.length - 1] !== Ud) return i(a); + if (a) return n.onStatError(a); + if (s.isDirectory()) return n.redirect(t); + n.emit("file", t, s), n.send(t, s); + }); + function i(o) { + if (n._extensions.length <= r) return o ? n.onStatError(o) : n.error(404); + var a = t + "." + n._extensions[r++]; + Je('stat "%s"', a), Ld.stat(a, function(s, c) { + if (s) return i(s); + if (c.isDirectory()) return i(); + n.emit("file", a, c), n.send(a, c); + }); + } + }; + we.prototype.sendIndex = function(t) { + var r = -1, n = this; + function i(o) { + if (++r >= n._index.length) return o ? n.onStatError(o) : n.error(404); + var a = pP(t, n._index[r]); + Je('stat "%s"', a), Ld.stat(a, function(s, c) { + if (s) return i(s); + if (c.isDirectory()) return i(); + n.emit("file", a, c), n.send(a, c); + }); + } + i(); + }; + we.prototype.stream = function(t, r) { + var n = this, i = this.res, o = Ld.createReadStream(t, r); + this.emit("stream", o), o.pipe(i); + function a() { + SV(o, true); + } + TV(i, a), o.on("error", function(c) { + a(), n.onStatError(c); + }), o.on("end", function() { + n.emit("end"); + }); + }; + we.prototype.type = function(t) { + var r = this.res; + if (!r.getHeader("Content-Type")) { + var n = gb.lookup(t); + if (!n) { + Je("no content-type"); + return; + } + var i = gb.charsets.lookup(n); + Je("content-type %s", n), r.setHeader("Content-Type", n + (i ? "; charset=" + i : "")); + } + }; + we.prototype.setHeader = function(t, r) { + var n = this.res; + if (this.emit("headers", n, t, r), this._acceptRanges && !n.getHeader("Accept-Ranges") && (Je("accept ranges"), n.setHeader("Accept-Ranges", "bytes")), this._cacheControl && !n.getHeader("Cache-Control")) { + var i = "public, max-age=" + Math.floor(this._maxage / 1e3); + this._immutable && (i += ", immutable"), Je("cache-control %s", i), n.setHeader("Cache-Control", i); + } + if (this._lastModified && !n.getHeader("Last-Modified")) { + var o = r.mtime.toUTCString(); + Je("modified %s", o), n.setHeader("Last-Modified", o); + } + if (this._etag && !n.getHeader("ETag")) { + var a = EV(r); + Je("etag %s", a), n.setHeader("ETag", a); + } + }; + function CV(e21) { + for (var t = LV(e21), r = 0; r < t.length; r++) e21.removeHeader(t[r]); + } + function NV(e21) { + for (var t = 0; t < e21.length && e21[t] === "/"; t++) ; + return t > 1 ? "/" + e21.substr(t) : e21; + } + function DV(e21) { + for (var t = 0; t < e21.length; t++) { + var r = e21[t]; + if (r.length > 1 && r[0] === ".") return true; + } + return false; + } + function sP(e21, t, r) { + return e21 + " " + (r ? r.start + "-" + r.end : "*") + "/" + t; + } + function fP(e21, t) { + return ` + + + +` + e21 + ` + + +
` + t + `
+ + +`; + } + function qV(e21, t) { + return t ? t instanceof Error ? hb(e21, t, { expose: false }) : hb(e21, t) : hb(e21); + } + function UV(e21) { + try { + return decodeURIComponent(e21); + } catch { + return -1; + } + } + function LV(e21) { + return typeof e21.getHeaderNames != "function" ? Object.keys(e21._headers || {}) : e21.getHeaderNames(); + } + function mP(e21, t) { + var r = typeof e21.listenerCount != "function" ? e21.listeners(t).length : e21.listenerCount(t); + return r > 0; + } + function MV(e21) { + return typeof e21.headersSent != "boolean" ? !!e21._header : e21.headersSent; + } + function yb(e21, t) { + for (var r = [].concat(e21 || []), n = 0; n < r.length; n++) if (typeof r[n] != "string") throw new TypeError(t + " must be array of strings or false"); + return r; + } + function Md(e21) { + var t = e21 && Date.parse(e21); + return typeof t == "number" ? t : NaN; + } + function FV(e21) { + for (var t = 0, r = [], n = 0, i = 0, o = e21.length; i < o; i++) switch (e21.charCodeAt(i)) { + case 32: + n === t && (n = t = i + 1); + break; + case 44: + n !== t && r.push(e21.substring(n, t)), n = t = i + 1; + break; + default: + t = i + 1; + break; + } + return n !== t && r.push(e21.substring(n, t)), r; + } + function ZV(e21, t) { + for (var r = Object.keys(t), n = 0; n < r.length; n++) { + var i = r[n]; + e21.setHeader(i, t[i]); + } + } +}); +var vP = g((Mfe, hP) => { + "use strict"; + hP.exports = BV; + function BV(e21) { + if (!e21) throw new TypeError("argument req is required"); + var t = HV(e21.headers["x-forwarded-for"] || ""), r = VV(e21), n = [r].concat(t); + return n; + } + function VV(e21) { + return e21.socket ? e21.socket.remoteAddress : e21.connection.remoteAddress; + } + function HV(e21) { + for (var t = e21.length, r = [], n = e21.length, i = e21.length - 1; i >= 0; i--) switch (e21.charCodeAt(i)) { + case 32: + n === t && (n = t = i); + break; + case 44: + n !== t && r.push(e21.substring(n, t)), n = t = i; + break; + default: + n = i; + break; + } + return n !== t && r.push(e21.substring(n, t)), r; + } +}); +var yP = g((gP, eu) => { + (function() { + var e21, t, r, n, i, o, a, s, c; + t = {}, s = this, typeof eu < "u" && eu !== null && eu.exports ? eu.exports = t : s.ipaddr = t, a = function(u, l, p, d) { + var f, m; + if (u.length !== l.length) throw new Error("ipaddr: cannot match CIDR for objects with different lengths"); + for (f = 0; d > 0; ) { + if (m = p - d, m < 0 && (m = 0), u[f] >> m !== l[f] >> m) return false; + d -= p, f += 1; + } + return true; + }, t.subnetMatch = function(u, l, p) { + var d, f, m, h, v; + p == null && (p = "unicast"); + for (m in l) for (h = l[m], h[0] && !(h[0] instanceof Array) && (h = [h]), d = 0, f = h.length; d < f; d++) if (v = h[d], u.kind() === v[0].kind() && u.match.apply(u, v)) return m; + return p; + }, t.IPv4 = (function() { + function u(l) { + var p, d, f; + if (l.length !== 4) throw new Error("ipaddr: ipv4 octet count should be 4"); + for (p = 0, d = l.length; p < d; p++) if (f = l[p], !(0 <= f && f <= 255)) throw new Error("ipaddr: ipv4 octet should fit in 8 bits"); + this.octets = l; + } + return u.prototype.kind = function() { + return "ipv4"; + }, u.prototype.toString = function() { + return this.octets.join("."); + }, u.prototype.toNormalizedString = function() { + return this.toString(); + }, u.prototype.toByteArray = function() { + return this.octets.slice(0); + }, u.prototype.match = function(l, p) { + var d; + if (p === void 0 && (d = l, l = d[0], p = d[1]), l.kind() !== "ipv4") throw new Error("ipaddr: cannot match ipv4 address with non-ipv4 one"); + return a(this.octets, l.octets, 8, p); + }, u.prototype.SpecialRanges = { unspecified: [[new u([0, 0, 0, 0]), 8]], broadcast: [[new u([255, 255, 255, 255]), 32]], multicast: [[new u([224, 0, 0, 0]), 4]], linkLocal: [[new u([169, 254, 0, 0]), 16]], loopback: [[new u([127, 0, 0, 0]), 8]], carrierGradeNat: [[new u([100, 64, 0, 0]), 10]], private: [[new u([10, 0, 0, 0]), 8], [new u([172, 16, 0, 0]), 12], [new u([192, 168, 0, 0]), 16]], reserved: [[new u([192, 0, 0, 0]), 24], [new u([192, 0, 2, 0]), 24], [new u([192, 88, 99, 0]), 24], [new u([198, 51, 100, 0]), 24], [new u([203, 0, 113, 0]), 24], [new u([240, 0, 0, 0]), 4]] }, u.prototype.range = function() { + return t.subnetMatch(this, this.SpecialRanges); + }, u.prototype.toIPv4MappedAddress = function() { + return t.IPv6.parse("::ffff:" + this.toString()); + }, u.prototype.prefixLengthFromSubnetMask = function() { + var l, p, d, f, m, h, v; + for (v = { 0: 8, 128: 7, 192: 6, 224: 5, 240: 4, 248: 3, 252: 2, 254: 1, 255: 0 }, l = 0, m = false, p = d = 3; d >= 0; p = d += -1) if (f = this.octets[p], f in v) { + if (h = v[f], m && h !== 0) return null; + h !== 8 && (m = true), l += h; + } else return null; + return 32 - l; + }, u; + })(), r = "(0?\\d+|0x[a-f0-9]+)", n = { fourOctet: new RegExp("^" + r + "\\." + r + "\\." + r + "\\." + r + "$", "i"), longValue: new RegExp("^" + r + "$", "i") }, t.IPv4.parser = function(u) { + var l, p, d, f, m; + if (p = function(h) { + return h[0] === "0" && h[1] !== "x" ? parseInt(h, 8) : parseInt(h); + }, l = u.match(n.fourOctet)) return (function() { + var h, v, y, x; + for (y = l.slice(1, 6), x = [], h = 0, v = y.length; h < v; h++) d = y[h], x.push(p(d)); + return x; + })(); + if (l = u.match(n.longValue)) { + if (m = p(l[1]), m > 4294967295 || m < 0) throw new Error("ipaddr: address outside defined range"); + return (function() { + var h, v; + for (v = [], f = h = 0; h <= 24; f = h += 8) v.push(m >> f & 255); + return v; + })().reverse(); + } else return null; + }, t.IPv6 = (function() { + function u(l, p) { + var d, f, m, h, v, y; + if (l.length === 16) for (this.parts = [], d = f = 0; f <= 14; d = f += 2) this.parts.push(l[d] << 8 | l[d + 1]); + else if (l.length === 8) this.parts = l; + else throw new Error("ipaddr: ipv6 part count should be 8 or 16"); + for (y = this.parts, m = 0, h = y.length; m < h; m++) if (v = y[m], !(0 <= v && v <= 65535)) throw new Error("ipaddr: ipv6 part should fit in 16 bits"); + p && (this.zoneId = p); + } + return u.prototype.kind = function() { + return "ipv6"; + }, u.prototype.toString = function() { + return this.toNormalizedString().replace(/((^|:)(0(:|$))+)/, "::"); + }, u.prototype.toRFC5952String = function() { + var l, p, d, f, m; + for (f = /((^|:)(0(:|$)){2,})/g, m = this.toNormalizedString(), l = 0, p = -1; d = f.exec(m); ) d[0].length > p && (l = d.index, p = d[0].length); + return p < 0 ? m : m.substring(0, l) + "::" + m.substring(l + p); + }, u.prototype.toByteArray = function() { + var l, p, d, f, m; + for (l = [], m = this.parts, p = 0, d = m.length; p < d; p++) f = m[p], l.push(f >> 8), l.push(f & 255); + return l; + }, u.prototype.toNormalizedString = function() { + var l, p, d; + return l = function() { + var f, m, h, v; + for (h = this.parts, v = [], f = 0, m = h.length; f < m; f++) p = h[f], v.push(p.toString(16)); + return v; + }.call(this).join(":"), d = "", this.zoneId && (d = "%" + this.zoneId), l + d; + }, u.prototype.toFixedLengthString = function() { + var l, p, d; + return l = function() { + var f, m, h, v; + for (h = this.parts, v = [], f = 0, m = h.length; f < m; f++) p = h[f], v.push(p.toString(16).padStart(4, "0")); + return v; + }.call(this).join(":"), d = "", this.zoneId && (d = "%" + this.zoneId), l + d; + }, u.prototype.match = function(l, p) { + var d; + if (p === void 0 && (d = l, l = d[0], p = d[1]), l.kind() !== "ipv6") throw new Error("ipaddr: cannot match ipv6 address with non-ipv6 one"); + return a(this.parts, l.parts, 16, p); + }, u.prototype.SpecialRanges = { unspecified: [new u([0, 0, 0, 0, 0, 0, 0, 0]), 128], linkLocal: [new u([65152, 0, 0, 0, 0, 0, 0, 0]), 10], multicast: [new u([65280, 0, 0, 0, 0, 0, 0, 0]), 8], loopback: [new u([0, 0, 0, 0, 0, 0, 0, 1]), 128], uniqueLocal: [new u([64512, 0, 0, 0, 0, 0, 0, 0]), 7], ipv4Mapped: [new u([0, 0, 0, 0, 0, 65535, 0, 0]), 96], rfc6145: [new u([0, 0, 0, 0, 65535, 0, 0, 0]), 96], rfc6052: [new u([100, 65435, 0, 0, 0, 0, 0, 0]), 96], "6to4": [new u([8194, 0, 0, 0, 0, 0, 0, 0]), 16], teredo: [new u([8193, 0, 0, 0, 0, 0, 0, 0]), 32], reserved: [[new u([8193, 3512, 0, 0, 0, 0, 0, 0]), 32]] }, u.prototype.range = function() { + return t.subnetMatch(this, this.SpecialRanges); + }, u.prototype.isIPv4MappedAddress = function() { + return this.range() === "ipv4Mapped"; + }, u.prototype.toIPv4Address = function() { + var l, p, d; + if (!this.isIPv4MappedAddress()) throw new Error("ipaddr: trying to convert a generic ipv6 address to ipv4"); + return d = this.parts.slice(-2), l = d[0], p = d[1], new t.IPv4([l >> 8, l & 255, p >> 8, p & 255]); + }, u.prototype.prefixLengthFromSubnetMask = function() { + var l, p, d, f, m, h, v; + for (v = { 0: 16, 32768: 15, 49152: 14, 57344: 13, 61440: 12, 63488: 11, 64512: 10, 65024: 9, 65280: 8, 65408: 7, 65472: 6, 65504: 5, 65520: 4, 65528: 3, 65532: 2, 65534: 1, 65535: 0 }, l = 0, m = false, p = d = 7; d >= 0; p = d += -1) if (f = this.parts[p], f in v) { + if (h = v[f], m && h !== 0) return null; + h !== 16 && (m = true), l += h; + } else return null; + return 128 - l; + }, u; + })(), i = "(?:[0-9a-f]+::?)+", c = "%[0-9a-z]{1,}", o = { zoneIndex: new RegExp(c, "i"), native: new RegExp("^(::)?(" + i + ")?([0-9a-f]+)?(::)?(" + c + ")?$", "i"), transitional: new RegExp("^((?:" + i + ")|(?:::)(?:" + i + ")?)" + (r + "\\." + r + "\\." + r + "\\." + r) + ("(" + c + ")?$"), "i") }, e21 = function(u, l) { + var p, d, f, m, h, v; + if (u.indexOf("::") !== u.lastIndexOf("::")) return null; + for (v = (u.match(o.zoneIndex) || [])[0], v && (v = v.substring(1), u = u.replace(/%.+$/, "")), p = 0, d = -1; (d = u.indexOf(":", d + 1)) >= 0; ) p++; + if (u.substr(0, 2) === "::" && p--, u.substr(-2, 2) === "::" && p--, p > l) return null; + for (h = l - p, m = ":"; h--; ) m += "0:"; + return u = u.replace("::", m), u[0] === ":" && (u = u.slice(1)), u[u.length - 1] === ":" && (u = u.slice(0, -1)), l = (function() { + var y, x, w, S; + for (w = u.split(":"), S = [], y = 0, x = w.length; y < x; y++) f = w[y], S.push(parseInt(f, 16)); + return S; + })(), { parts: l, zoneId: v }; + }, t.IPv6.parser = function(u) { + var l, p, d, f, m, h, v; + if (o.native.test(u)) return e21(u, 8); + if ((f = u.match(o.transitional)) && (v = f[6] || "", l = e21(f[1].slice(0, -1) + v, 6), l.parts)) { + for (h = [parseInt(f[2]), parseInt(f[3]), parseInt(f[4]), parseInt(f[5])], p = 0, d = h.length; p < d; p++) if (m = h[p], !(0 <= m && m <= 255)) return null; + return l.parts.push(h[0] << 8 | h[1]), l.parts.push(h[2] << 8 | h[3]), { parts: l.parts, zoneId: l.zoneId }; + } + return null; + }, t.IPv4.isIPv4 = t.IPv6.isIPv6 = function(u) { + return this.parser(u) !== null; + }, t.IPv4.isValid = function(u) { + var l; + try { + return new this(this.parser(u)), true; + } catch (p) { + return l = p, false; + } + }, t.IPv4.isValidFourPartDecimal = function(u) { + return !!(t.IPv4.isValid(u) && u.match(/^(0|[1-9]\d*)(\.(0|[1-9]\d*)){3}$/)); + }, t.IPv6.isValid = function(u) { + var l, p; + if (typeof u == "string" && u.indexOf(":") === -1) return false; + try { + return l = this.parser(u), new this(l.parts, l.zoneId), true; + } catch (d) { + return p = d, false; + } + }, t.IPv4.parse = function(u) { + var l; + if (l = this.parser(u), l === null) throw new Error("ipaddr: string is not formatted like ip address"); + return new this(l); + }, t.IPv6.parse = function(u) { + var l; + if (l = this.parser(u), l.parts === null) throw new Error("ipaddr: string is not formatted like ip address"); + return new this(l.parts, l.zoneId); + }, t.IPv4.parseCIDR = function(u) { + var l, p, d; + if ((p = u.match(/^(.+)\/(\d+)$/)) && (l = parseInt(p[2]), l >= 0 && l <= 32)) return d = [this.parse(p[1]), l], Object.defineProperty(d, "toString", { value: function() { + return this.join("/"); + } }), d; + throw new Error("ipaddr: string is not formatted like an IPv4 CIDR range"); + }, t.IPv4.subnetMaskFromPrefixLength = function(u) { + var l, p, d; + if (u = parseInt(u), u < 0 || u > 32) throw new Error("ipaddr: invalid IPv4 prefix length"); + for (d = [0, 0, 0, 0], p = 0, l = Math.floor(u / 8); p < l; ) d[p] = 255, p++; + return l < 4 && (d[l] = Math.pow(2, u % 8) - 1 << 8 - u % 8), new this(d); + }, t.IPv4.broadcastAddressFromCIDR = function(u) { + var l, p, d, f, m, h; + try { + for (l = this.parseCIDR(u), f = l[0].toByteArray(), h = this.subnetMaskFromPrefixLength(l[1]).toByteArray(), m = [], d = 0; d < 4; ) m.push(parseInt(f[d], 10) | parseInt(h[d], 10) ^ 255), d++; + return new this(m); + } catch (v) { + throw p = v, new Error("ipaddr: the address does not have IPv4 CIDR format"); + } + }, t.IPv4.networkAddressFromCIDR = function(u) { + var l, p, d, f, m, h; + try { + for (l = this.parseCIDR(u), f = l[0].toByteArray(), h = this.subnetMaskFromPrefixLength(l[1]).toByteArray(), m = [], d = 0; d < 4; ) m.push(parseInt(f[d], 10) & parseInt(h[d], 10)), d++; + return new this(m); + } catch (v) { + throw p = v, new Error("ipaddr: the address does not have IPv4 CIDR format"); + } + }, t.IPv6.parseCIDR = function(u) { + var l, p, d; + if ((p = u.match(/^(.+)\/(\d+)$/)) && (l = parseInt(p[2]), l >= 0 && l <= 128)) return d = [this.parse(p[1]), l], Object.defineProperty(d, "toString", { value: function() { + return this.join("/"); + } }), d; + throw new Error("ipaddr: string is not formatted like an IPv6 CIDR range"); + }, t.isValid = function(u) { + return t.IPv6.isValid(u) || t.IPv4.isValid(u); + }, t.parse = function(u) { + if (t.IPv6.isValid(u)) return t.IPv6.parse(u); + if (t.IPv4.isValid(u)) return t.IPv4.parse(u); + throw new Error("ipaddr: the address has neither IPv6 nor IPv4 format"); + }, t.parseCIDR = function(u) { + var l; + try { + return t.IPv6.parseCIDR(u); + } catch (p) { + l = p; + try { + return t.IPv4.parseCIDR(u); + } catch (d) { + throw l = d, new Error("ipaddr: the address has neither IPv6 nor IPv4 CIDR format"); + } + } + }, t.fromByteArray = function(u) { + var l; + if (l = u.length, l === 4) return new t.IPv4(u); + if (l === 16) return new t.IPv6(u); + throw new Error("ipaddr: the binary input is neither an IPv6 nor IPv4 address"); + }, t.process = function(u) { + var l; + return l = this.parse(u), l.kind() === "ipv6" && l.isIPv4MappedAddress() ? l.toIPv4Address() : l; + }; + }).call(gP); +}); +var _b = g((Ffe, Vd) => { + "use strict"; + Vd.exports = QV; + Vd.exports.all = _P; + Vd.exports.compile = wP; + var JV = vP(), bP = yP(), GV = /^[0-9]+$/, Zd = bP.isValid, Bd = bP.parse, xP = { linklocal: ["169.254.0.0/16", "fe80::/10"], loopback: ["127.0.0.1/8", "::1/128"], uniquelocal: ["10.0.0.0/8", "172.16.0.0/12", "192.168.0.0/16", "fc00::/7"] }; + function _P(e21, t) { + var r = JV(e21); + if (!t) return r; + typeof t != "function" && (t = wP(t)); + for (var n = 0; n < r.length - 1; n++) t(r[n], n) || (r.length = n + 1); + return r; + } + function wP(e21) { + if (!e21) throw new TypeError("argument is required"); + var t; + if (typeof e21 == "string") t = [e21]; + else if (Array.isArray(e21)) t = e21.slice(); + else throw new TypeError("unsupported trust argument"); + for (var r = 0; r < t.length; r++) e21 = t[r], Object.prototype.hasOwnProperty.call(xP, e21) && (e21 = xP[e21], t.splice.apply(t, [r, 1].concat(e21)), r += e21.length - 1); + return KV(WV(t)); + } + function WV(e21) { + for (var t = new Array(e21.length), r = 0; r < e21.length; r++) t[r] = XV(e21[r]); + return t; + } + function KV(e21) { + var t = e21.length; + return t === 0 ? eH : t === 1 ? rH(e21[0]) : tH(e21); + } + function XV(e21) { + var t = e21.lastIndexOf("/"), r = t !== -1 ? e21.substring(0, t) : e21; + if (!Zd(r)) throw new TypeError("invalid IP address: " + r); + var n = Bd(r); + t === -1 && n.kind() === "ipv6" && n.isIPv4MappedAddress() && (n = n.toIPv4Address()); + var i = n.kind() === "ipv6" ? 128 : 32, o = t !== -1 ? e21.substring(t + 1, e21.length) : null; + if (o === null ? o = i : GV.test(o) ? o = parseInt(o, 10) : n.kind() === "ipv4" && Zd(o) ? o = YV(o) : o = null, o <= 0 || o > i) throw new TypeError("invalid range on address: " + e21); + return [n, o]; + } + function YV(e21) { + var t = Bd(e21), r = t.kind(); + return r === "ipv4" ? t.prefixLengthFromSubnetMask() : null; + } + function QV(e21, t) { + if (!e21) throw new TypeError("req argument is required"); + if (!t) throw new TypeError("trust argument is required"); + var r = _P(e21, t), n = r[r.length - 1]; + return n; + } + function eH() { + return false; + } + function tH(e21) { + return function(r) { + if (!Zd(r)) return false; + for (var n = Bd(r), i, o = n.kind(), a = 0; a < e21.length; a++) { + var s = e21[a], c = s[0], u = c.kind(), l = s[1], p = n; + if (o !== u) { + if (u === "ipv4" && !n.isIPv4MappedAddress()) continue; + i || (i = u === "ipv4" ? n.toIPv4Address() : n.toIPv4MappedAddress()), p = i; + } + if (p.match(c, l)) return true; + } + return false; + }; + } + function rH(e21) { + var t = e21[0], r = t.kind(), n = r === "ipv4", i = e21[1]; + return function(a) { + if (!Zd(a)) return false; + var s = Bd(a), c = s.kind(); + if (c !== r) { + if (n && !s.isIPv4MappedAddress()) return false; + s = n ? s.toIPv4Address() : s.toIPv4MappedAddress(); + } + return s.match(t, i); + }; + } +}); +var Xn = g((Lt) => { + "use strict"; + var $P = Cd().Buffer, nH = ib(), SP = ic(), kP = Ar()("express"), iH = Vc(), oH = Fd().mime, aH = pb(), sH = _b(), cH = $d(), uH = O("querystring"); + Lt.etag = EP({ weak: false }); + Lt.wetag = EP({ weak: true }); + Lt.isAbsolute = function(e21) { + if (e21[0] === "/" || e21[1] === ":" && (e21[2] === "\\" || e21[2] === "/") || e21.substring(0, 2) === "\\\\") return true; + }; + Lt.flatten = kP.function(iH, "utils.flatten: use array-flatten npm module instead"); + Lt.normalizeType = function(e21) { + return ~e21.indexOf("/") ? lH(e21) : { value: oH.lookup(e21), params: {} }; + }; + Lt.normalizeTypes = function(e21) { + for (var t = [], r = 0; r < e21.length; ++r) t.push(Lt.normalizeType(e21[r])); + return t; + }; + Lt.contentDisposition = kP.function(nH, "utils.contentDisposition: use content-disposition npm module instead"); + function lH(e21) { + for (var t = e21.split(/ *; */), r = { value: t[0], quality: 1, params: {} }, n = 1; n < t.length; ++n) { + var i = t[n].split(/ *= */); + i[0] === "q" ? r.quality = parseFloat(i[1]) : r.params[i[0]] = i[1]; + } + return r; + } + Lt.compileETag = function(e21) { + var t; + if (typeof e21 == "function") return e21; + switch (e21) { + case true: + case "weak": + t = Lt.wetag; + break; + case false: + break; + case "strong": + t = Lt.etag; + break; + default: + throw new TypeError("unknown value for etag function: " + e21); + } + return t; + }; + Lt.compileQueryParser = function(t) { + var r; + if (typeof t == "function") return t; + switch (t) { + case true: + case "simple": + r = uH.parse; + break; + case false: + r = dH; + break; + case "extended": + r = pH; + break; + default: + throw new TypeError("unknown value for query parser function: " + t); + } + return r; + }; + Lt.compileTrust = function(e21) { + return typeof e21 == "function" ? e21 : e21 === true ? function() { + return true; + } : typeof e21 == "number" ? function(t, r) { + return r < e21; + } : (typeof e21 == "string" && (e21 = e21.split(",").map(function(t) { + return t.trim(); + })), sH.compile(e21 || [])); + }; + Lt.setCharset = function(t, r) { + if (!t || !r) return t; + var n = SP.parse(t); + return n.parameters.charset = r, SP.format(n); + }; + function EP(e21) { + return function(r, n) { + var i = $P.isBuffer(r) ? r : $P.from(r, n); + return aH(i, e21); + }; + } + function pH(e21) { + return cH.parse(e21, { allowPrototypes: true }); + } + function dH() { + return {}; + } +}); +var IP = g((OP, TP) => { + "use strict"; + var fH = DI(), mH = eb(), $b = zd(), hH = xz(), vH = tb(), Hd = Yo()("express:application"), gH = kz(), yH = O("http"), xH = Xn().compileETag, bH = Xn().compileQueryParser, _H = Xn().compileTrust, wH = Ar()("express"), $H = Vc(), wb = Hc(), SH = O("path").resolve, ca = jo(), kH = Object.prototype.hasOwnProperty, kb = Array.prototype.slice, tt = OP = TP.exports = {}, Sb = "@@symbol:trust_proxy_default"; + tt.init = function() { + this.cache = {}, this.engines = {}, this.settings = {}, this.defaultConfiguration(); + }; + tt.defaultConfiguration = function() { + var t = process.env.NODE_ENV || "development"; + this.enable("x-powered-by"), this.set("etag", "weak"), this.set("env", t), this.set("query parser", "extended"), this.set("subdomain offset", 2), this.set("trust proxy", false), Object.defineProperty(this.settings, Sb, { configurable: true, value: true }), Hd("booting in %s mode", t), this.on("mount", function(n) { + this.settings[Sb] === true && typeof n.settings["trust proxy fn"] == "function" && (delete this.settings["trust proxy"], delete this.settings["trust proxy fn"]), ca(this.request, n.request), ca(this.response, n.response), ca(this.engines, n.engines), ca(this.settings, n.settings); + }), this.locals = /* @__PURE__ */ Object.create(null), this.mountpath = "/", this.locals.settings = this.settings, this.set("view", gH), this.set("views", SH("views")), this.set("jsonp callback name", "callback"), t === "production" && this.enable("view cache"), Object.defineProperty(this, "router", { get: function() { + throw new Error(`'app.router' is deprecated! +Please see the 3.x to 4.x migration guide for details on how to update your app.`); + } }); + }; + tt.lazyrouter = function() { + this._router || (this._router = new mH({ caseSensitive: this.enabled("case sensitive routing"), strict: this.enabled("strict routing") }), this._router.use(vH(this.get("query parser fn"))), this._router.use(hH.init(this))); + }; + tt.handle = function(t, r, n) { + var i = this._router, o = n || fH(t, r, { env: this.get("env"), onerror: EH.bind(this) }); + if (!i) { + Hd("no routes defined on app"), o(); + return; + } + i.handle(t, r, o); + }; + tt.use = function(t) { + var r = 0, n = "/"; + if (typeof t != "function") { + for (var i = t; Array.isArray(i) && i.length !== 0; ) i = i[0]; + typeof i != "function" && (r = 1, n = t); + } + var o = $H(kb.call(arguments, r)); + if (o.length === 0) throw new TypeError("app.use() requires a middleware function"); + this.lazyrouter(); + var a = this._router; + return o.forEach(function(s) { + if (!s || !s.handle || !s.set) return a.use(n, s); + Hd(".use app under %s", n), s.mountpath = n, s.parent = this, a.use(n, function(u, l, p) { + var d = u.app; + s.handle(u, l, function(f) { + ca(u, d.request), ca(l, d.response), p(f); + }); + }), s.emit("mount", this); + }, this), this; + }; + tt.route = function(t) { + return this.lazyrouter(), this._router.route(t); + }; + tt.engine = function(t, r) { + if (typeof r != "function") throw new Error("callback function required"); + var n = t[0] !== "." ? "." + t : t; + return this.engines[n] = r, this; + }; + tt.param = function(t, r) { + if (this.lazyrouter(), Array.isArray(t)) { + for (var n = 0; n < t.length; n++) this.param(t[n], r); + return this; + } + return this._router.param(t, r), this; + }; + tt.set = function(t, r) { + if (arguments.length === 1) { + for (var n = this.settings; n && n !== Object.prototype; ) { + if (kH.call(n, t)) return n[t]; + n = Object.getPrototypeOf(n); + } + return; + } + switch (Hd('set "%s" to %o', t, r), this.settings[t] = r, t) { + case "etag": + this.set("etag fn", xH(r)); + break; + case "query parser": + this.set("query parser fn", bH(r)); + break; + case "trust proxy": + this.set("trust proxy fn", _H(r)), Object.defineProperty(this.settings, Sb, { configurable: true, value: false }); + break; + } + return this; + }; + tt.path = function() { + return this.parent ? this.parent.path() + this.mountpath : ""; + }; + tt.enabled = function(t) { + return !!this.set(t); + }; + tt.disabled = function(t) { + return !this.set(t); + }; + tt.enable = function(t) { + return this.set(t, true); + }; + tt.disable = function(t) { + return this.set(t, false); + }; + $b.forEach(function(e21) { + tt[e21] = function(t) { + if (e21 === "get" && arguments.length === 1) return this.set(t); + this.lazyrouter(); + var r = this._router.route(t); + return r[e21].apply(r, kb.call(arguments, 1)), this; + }; + }); + tt.all = function(t) { + this.lazyrouter(); + for (var r = this._router.route(t), n = kb.call(arguments, 1), i = 0; i < $b.length; i++) r[$b[i]].apply(r, n); + return this; + }; + tt.del = wH.function(tt.delete, "app.del: Use app.delete instead"); + tt.render = function(t, r, n) { + var i = this.cache, o = n, a = this.engines, s = r, c = {}, u; + if (typeof r == "function" && (o = r, s = {}), wb(c, this.locals), s._locals && wb(c, s._locals), wb(c, s), c.cache == null && (c.cache = this.enabled("view cache")), c.cache && (u = i[t]), !u) { + var l = this.get("view"); + if (u = new l(t, { defaultEngine: this.get("view engine"), root: this.get("views"), engines: a }), !u.path) { + var p = Array.isArray(u.root) && u.root.length > 1 ? 'directories "' + u.root.slice(0, -1).join('", "') + '" or "' + u.root[u.root.length - 1] + '"' : 'directory "' + u.root + '"', d = new Error('Failed to lookup view "' + t + '" in views ' + p); + return d.view = u, o(d); + } + c.cache && (i[t] = u); + } + OH(u, c, o); + }; + tt.listen = function() { + var t = yH.createServer(this); + return t.listen.apply(t, arguments); + }; + function EH(e21) { + this.get("env") !== "test" && console.error(e21.stack || e21.toString()); + } + function OH(e21, t, r) { + try { + e21.render(t, r); + } catch (n) { + r(n); + } + } +}); +var AP = g((Bfe, Eb) => { + "use strict"; + Eb.exports = jP; + Eb.exports.preferredCharsets = jP; + var TH = /^\s*([^\s;]+)\s*(?:;(.*))?$/; + function IH(e21) { + for (var t = e21.split(","), r = 0, n = 0; r < t.length; r++) { + var i = zH(t[r].trim(), r); + i && (t[n++] = i); + } + return t.length = n, t; + } + function zH(e21, t) { + var r = TH.exec(e21); + if (!r) return null; + var n = r[1], i = 1; + if (r[2]) for (var o = r[2].split(";"), a = 0; a < o.length; a++) { + var s = o[a].trim().split("="); + if (s[0] === "q") { + i = parseFloat(s[1]); + break; + } + } + return { charset: n, q: i, i: t }; + } + function PH(e21, t, r) { + for (var n = { o: -1, q: 0, s: 0 }, i = 0; i < t.length; i++) { + var o = jH(e21, t[i], r); + o && (n.s - o.s || n.q - o.q || n.o - o.o) < 0 && (n = o); + } + return n; + } + function jH(e21, t, r) { + var n = 0; + if (t.charset.toLowerCase() === e21.toLowerCase()) n |= 1; + else if (t.charset !== "*") return null; + return { i: r, o: t.i, q: t.q, s: n }; + } + function jP(e21, t) { + var r = IH(e21 === void 0 ? "*" : e21 || ""); + if (!t) return r.filter(PP).sort(zP).map(AH); + var n = t.map(function(o, a) { + return PH(o, r, a); + }); + return n.filter(PP).sort(zP).map(function(o) { + return t[n.indexOf(o)]; + }); + } + function zP(e21, t) { + return t.q - e21.q || t.s - e21.s || e21.o - t.o || e21.i - t.i || 0; + } + function AH(e21) { + return e21.charset; + } + function PP(e21) { + return e21.q > 0; + } +}); +var qP = g((Vfe, Ob) => { + "use strict"; + Ob.exports = DP; + Ob.exports.preferredEncodings = DP; + var RH = /^\s*([^\s;]+)\s*(?:;(.*))?$/; + function CH(e21) { + for (var t = e21.split(","), r = false, n = 1, i = 0, o = 0; i < t.length; i++) { + var a = NH(t[i].trim(), i); + a && (t[o++] = a, r = r || NP("identity", a), n = Math.min(n, a.q || 1)); + } + return r || (t[o++] = { encoding: "identity", q: n, i }), t.length = o, t; + } + function NH(e21, t) { + var r = RH.exec(e21); + if (!r) return null; + var n = r[1], i = 1; + if (r[2]) for (var o = r[2].split(";"), a = 0; a < o.length; a++) { + var s = o[a].trim().split("="); + if (s[0] === "q") { + i = parseFloat(s[1]); + break; + } + } + return { encoding: n, q: i, i: t }; + } + function DH(e21, t, r) { + for (var n = { o: -1, q: 0, s: 0 }, i = 0; i < t.length; i++) { + var o = NP(e21, t[i], r); + o && (n.s - o.s || n.q - o.q || n.o - o.o) < 0 && (n = o); + } + return n; + } + function NP(e21, t, r) { + var n = 0; + if (t.encoding.toLowerCase() === e21.toLowerCase()) n |= 1; + else if (t.encoding !== "*") return null; + return { i: r, o: t.i, q: t.q, s: n }; + } + function DP(e21, t) { + var r = CH(e21 || ""); + if (!t) return r.filter(CP).sort(RP).map(qH); + var n = t.map(function(o, a) { + return DH(o, r, a); + }); + return n.filter(CP).sort(RP).map(function(o) { + return t[n.indexOf(o)]; + }); + } + function RP(e21, t) { + return t.q - e21.q || t.s - e21.s || e21.o - t.o || e21.i - t.i || 0; + } + function qH(e21) { + return e21.encoding; + } + function CP(e21) { + return e21.q > 0; + } +}); +var ZP = g((Hfe, Tb) => { + "use strict"; + Tb.exports = FP; + Tb.exports.preferredLanguages = FP; + var UH = /^\s*([^\s\-;]+)(?:-([^\s;]+))?\s*(?:;(.*))?$/; + function LH(e21) { + for (var t = e21.split(","), r = 0, n = 0; r < t.length; r++) { + var i = MP(t[r].trim(), r); + i && (t[n++] = i); + } + return t.length = n, t; + } + function MP(e21, t) { + var r = UH.exec(e21); + if (!r) return null; + var n = r[1], i = r[2], o = n; + i && (o += "-" + i); + var a = 1; + if (r[3]) for (var s = r[3].split(";"), c = 0; c < s.length; c++) { + var u = s[c].split("="); + u[0] === "q" && (a = parseFloat(u[1])); + } + return { prefix: n, suffix: i, q: a, i: t, full: o }; + } + function MH(e21, t, r) { + for (var n = { o: -1, q: 0, s: 0 }, i = 0; i < t.length; i++) { + var o = FH(e21, t[i], r); + o && (n.s - o.s || n.q - o.q || n.o - o.o) < 0 && (n = o); + } + return n; + } + function FH(e21, t, r) { + var n = MP(e21); + if (!n) return null; + var i = 0; + if (t.full.toLowerCase() === n.full.toLowerCase()) i |= 4; + else if (t.prefix.toLowerCase() === n.full.toLowerCase()) i |= 2; + else if (t.full.toLowerCase() === n.prefix.toLowerCase()) i |= 1; + else if (t.full !== "*") return null; + return { i: r, o: t.i, q: t.q, s: i }; + } + function FP(e21, t) { + var r = LH(e21 === void 0 ? "*" : e21 || ""); + if (!t) return r.filter(LP).sort(UP).map(ZH); + var n = t.map(function(o, a) { + return MH(o, r, a); + }); + return n.filter(LP).sort(UP).map(function(o) { + return t[n.indexOf(o)]; + }); + } + function UP(e21, t) { + return t.q - e21.q || t.s - e21.s || e21.o - t.o || e21.i - t.i || 0; + } + function ZH(e21) { + return e21.full; + } + function LP(e21) { + return e21.q > 0; + } +}); +var WP = g((Jfe, Ib) => { + "use strict"; + Ib.exports = JP; + Ib.exports.preferredMediaTypes = JP; + var BH = /^\s*([^\s\/;]+)\/([^;\s]+)\s*(?:;(.*))?$/; + function VH(e21) { + for (var t = KH(e21), r = 0, n = 0; r < t.length; r++) { + var i = HP(t[r].trim(), r); + i && (t[n++] = i); + } + return t.length = n, t; + } + function HP(e21, t) { + var r = BH.exec(e21); + if (!r) return null; + var n = /* @__PURE__ */ Object.create(null), i = 1, o = r[2], a = r[1]; + if (r[3]) for (var s = XH(r[3]).map(WH), c = 0; c < s.length; c++) { + var u = s[c], l = u[0].toLowerCase(), p = u[1], d = p && p[0] === '"' && p[p.length - 1] === '"' ? p.substr(1, p.length - 2) : p; + if (l === "q") { + i = parseFloat(d); + break; + } + n[l] = d; + } + return { type: a, subtype: o, params: n, q: i, i: t }; + } + function HH(e21, t, r) { + for (var n = { o: -1, q: 0, s: 0 }, i = 0; i < t.length; i++) { + var o = JH(e21, t[i], r); + o && (n.s - o.s || n.q - o.q || n.o - o.o) < 0 && (n = o); + } + return n; + } + function JH(e21, t, r) { + var n = HP(e21), i = 0; + if (!n) return null; + if (t.type.toLowerCase() == n.type.toLowerCase()) i |= 4; + else if (t.type != "*") return null; + if (t.subtype.toLowerCase() == n.subtype.toLowerCase()) i |= 2; + else if (t.subtype != "*") return null; + var o = Object.keys(t.params); + if (o.length > 0) if (o.every(function(a) { + return t.params[a] == "*" || (t.params[a] || "").toLowerCase() == (n.params[a] || "").toLowerCase(); + })) i |= 1; + else return null; + return { i: r, o: t.i, q: t.q, s: i }; + } + function JP(e21, t) { + var r = VH(e21 === void 0 ? "*/*" : e21 || ""); + if (!t) return r.filter(VP).sort(BP).map(GH); + var n = t.map(function(o, a) { + return HH(o, r, a); + }); + return n.filter(VP).sort(BP).map(function(o) { + return t[n.indexOf(o)]; + }); + } + function BP(e21, t) { + return t.q - e21.q || t.s - e21.s || e21.o - t.o || e21.i - t.i || 0; + } + function GH(e21) { + return e21.type + "/" + e21.subtype; + } + function VP(e21) { + return e21.q > 0; + } + function GP(e21) { + for (var t = 0, r = 0; (r = e21.indexOf('"', r)) !== -1; ) t++, r++; + return t; + } + function WH(e21) { + var t = e21.indexOf("="), r, n; + return t === -1 ? r = e21 : (r = e21.substr(0, t), n = e21.substr(t + 1)), [r, n]; + } + function KH(e21) { + for (var t = e21.split(","), r = 1, n = 0; r < t.length; r++) GP(t[n]) % 2 == 0 ? t[++n] = t[r] : t[n] += "," + t[r]; + return t.length = n + 1, t; + } + function XH(e21) { + for (var t = e21.split(";"), r = 1, n = 0; r < t.length; r++) GP(t[n]) % 2 == 0 ? t[++n] = t[r] : t[n] += ";" + t[r]; + t.length = n + 1; + for (var r = 0; r < t.length; r++) t[r] = t[r].trim(); + return t; + } +}); +var KP = g((Gfe, zb) => { + "use strict"; + var YH = AP(), QH = qP(), eJ = ZP(), tJ = WP(); + zb.exports = Oe; + zb.exports.Negotiator = Oe; + function Oe(e21) { + if (!(this instanceof Oe)) return new Oe(e21); + this.request = e21; + } + Oe.prototype.charset = function(t) { + var r = this.charsets(t); + return r && r[0]; + }; + Oe.prototype.charsets = function(t) { + return YH(this.request.headers["accept-charset"], t); + }; + Oe.prototype.encoding = function(t) { + var r = this.encodings(t); + return r && r[0]; + }; + Oe.prototype.encodings = function(t) { + return QH(this.request.headers["accept-encoding"], t); + }; + Oe.prototype.language = function(t) { + var r = this.languages(t); + return r && r[0]; + }; + Oe.prototype.languages = function(t) { + return eJ(this.request.headers["accept-language"], t); + }; + Oe.prototype.mediaType = function(t) { + var r = this.mediaTypes(t); + return r && r[0]; + }; + Oe.prototype.mediaTypes = function(t) { + return tJ(this.request.headers.accept, t); + }; + Oe.prototype.preferredCharset = Oe.prototype.charset; + Oe.prototype.preferredCharsets = Oe.prototype.charsets; + Oe.prototype.preferredEncoding = Oe.prototype.encoding; + Oe.prototype.preferredEncodings = Oe.prototype.encodings; + Oe.prototype.preferredLanguage = Oe.prototype.language; + Oe.prototype.preferredLanguages = Oe.prototype.languages; + Oe.prototype.preferredMediaType = Oe.prototype.mediaType; + Oe.prototype.preferredMediaTypes = Oe.prototype.mediaTypes; +}); +var YP = g((Wfe, XP) => { + "use strict"; + var rJ = KP(), nJ = ad(); + XP.exports = mr; + function mr(e21) { + if (!(this instanceof mr)) return new mr(e21); + this.headers = e21.headers, this.negotiator = new rJ(e21); + } + mr.prototype.type = mr.prototype.types = function(e21) { + var t = e21; + if (t && !Array.isArray(t)) { + t = new Array(arguments.length); + for (var r = 0; r < t.length; r++) t[r] = arguments[r]; + } + if (!t || t.length === 0) return this.negotiator.mediaTypes(); + if (!this.headers.accept) return t[0]; + var n = t.map(iJ), i = this.negotiator.mediaTypes(n.filter(oJ)), o = i[0]; + return o ? t[n.indexOf(o)] : false; + }; + mr.prototype.encoding = mr.prototype.encodings = function(e21) { + var t = e21; + if (t && !Array.isArray(t)) { + t = new Array(arguments.length); + for (var r = 0; r < t.length; r++) t[r] = arguments[r]; + } + return !t || t.length === 0 ? this.negotiator.encodings() : this.negotiator.encodings(t)[0] || false; + }; + mr.prototype.charset = mr.prototype.charsets = function(e21) { + var t = e21; + if (t && !Array.isArray(t)) { + t = new Array(arguments.length); + for (var r = 0; r < t.length; r++) t[r] = arguments[r]; + } + return !t || t.length === 0 ? this.negotiator.charsets() : this.negotiator.charsets(t)[0] || false; + }; + mr.prototype.lang = mr.prototype.langs = mr.prototype.language = mr.prototype.languages = function(e21) { + var t = e21; + if (t && !Array.isArray(t)) { + t = new Array(arguments.length); + for (var r = 0; r < t.length; r++) t[r] = arguments[r]; + } + return !t || t.length === 0 ? this.negotiator.languages() : this.negotiator.languages(t)[0] || false; + }; + function iJ(e21) { + return e21.indexOf("/") === -1 ? nJ.lookup(e21) : e21; + } + function oJ(e21) { + return typeof e21 == "string"; + } +}); +var t2 = g((Kfe, e22) => { + "use strict"; + var Jd = YP(), tu = Ar()("express"), aJ = O("net").isIP, sJ = Mo(), cJ = O("http"), uJ = db(), lJ = mb(), pJ = Ko(), QP = _b(), Ae = Object.create(cJ.IncomingMessage.prototype); + e22.exports = Ae; + Ae.get = Ae.header = function(t) { + if (!t) throw new TypeError("name argument is required to req.get"); + if (typeof t != "string") throw new TypeError("name must be a string to req.get"); + var r = t.toLowerCase(); + switch (r) { + case "referer": + case "referrer": + return this.headers.referrer || this.headers.referer; + default: + return this.headers[r]; + } + }; + Ae.accepts = function() { + var e21 = Jd(this); + return e21.types.apply(e21, arguments); + }; + Ae.acceptsEncodings = function() { + var e21 = Jd(this); + return e21.encodings.apply(e21, arguments); + }; + Ae.acceptsEncoding = tu.function(Ae.acceptsEncodings, "req.acceptsEncoding: Use acceptsEncodings instead"); + Ae.acceptsCharsets = function() { + var e21 = Jd(this); + return e21.charsets.apply(e21, arguments); + }; + Ae.acceptsCharset = tu.function(Ae.acceptsCharsets, "req.acceptsCharset: Use acceptsCharsets instead"); + Ae.acceptsLanguages = function() { + var e21 = Jd(this); + return e21.languages.apply(e21, arguments); + }; + Ae.acceptsLanguage = tu.function(Ae.acceptsLanguages, "req.acceptsLanguage: Use acceptsLanguages instead"); + Ae.range = function(t, r) { + var n = this.get("Range"); + if (n) return lJ(t, n, r); + }; + Ae.param = function(t, r) { + var n = this.params || {}, i = this.body || {}, o = this.query || {}, a = arguments.length === 1 ? "name" : "name, default"; + return tu("req.param(" + a + "): Use req.params, req.body, or req.query instead"), n[t] != null && n.hasOwnProperty(t) ? n[t] : i[t] != null ? i[t] : o[t] != null ? o[t] : r; + }; + Ae.is = function(t) { + var r = t; + if (!Array.isArray(t)) { + r = new Array(arguments.length); + for (var n = 0; n < r.length; n++) r[n] = arguments[n]; + } + return sJ(this, r); + }; + Dr(Ae, "protocol", function() { + var t = this.connection.encrypted ? "https" : "http", r = this.app.get("trust proxy fn"); + if (!r(this.connection.remoteAddress, 0)) return t; + var n = this.get("X-Forwarded-Proto") || t, i = n.indexOf(","); + return i !== -1 ? n.substring(0, i).trim() : n.trim(); + }); + Dr(Ae, "secure", function() { + return this.protocol === "https"; + }); + Dr(Ae, "ip", function() { + var t = this.app.get("trust proxy fn"); + return QP(this, t); + }); + Dr(Ae, "ips", function() { + var t = this.app.get("trust proxy fn"), r = QP.all(this, t); + return r.reverse().pop(), r; + }); + Dr(Ae, "subdomains", function() { + var t = this.hostname; + if (!t) return []; + var r = this.app.get("subdomain offset"), n = aJ(t) ? [t] : t.split(".").reverse(); + return n.slice(r); + }); + Dr(Ae, "path", function() { + return pJ(this).pathname; + }); + Dr(Ae, "hostname", function() { + var t = this.app.get("trust proxy fn"), r = this.get("X-Forwarded-Host"); + if (!r || !t(this.connection.remoteAddress, 0) ? r = this.get("Host") : r.indexOf(",") !== -1 && (r = r.substring(0, r.indexOf(",")).trimRight()), !!r) { + var n = r[0] === "[" ? r.indexOf("]") + 1 : 0, i = r.indexOf(":", n); + return i !== -1 ? r.substring(0, i) : r; + } + }); + Dr(Ae, "host", tu.function(function() { + return this.hostname; + }, "req.host: Use req.hostname instead")); + Dr(Ae, "fresh", function() { + var e21 = this.method, t = this.res, r = t.statusCode; + return e21 !== "GET" && e21 !== "HEAD" ? false : r >= 200 && r < 300 || r === 304 ? uJ(this.headers, { etag: t.get("ETag"), "last-modified": t.get("Last-Modified") }) : false; + }); + Dr(Ae, "stale", function() { + return !this.fresh; + }); + Dr(Ae, "xhr", function() { + var t = this.get("X-Requested-With") || ""; + return t.toLowerCase() === "xmlhttprequest"; + }); + function Dr(e21, t, r) { + Object.defineProperty(e21, t, { configurable: true, enumerable: true, get: r }); + } +}); +var i2 = g((Gd) => { + var n2 = O("crypto"); + Gd.sign = function(e21, t) { + if (typeof e21 != "string") throw new TypeError("Cookie value must be provided as a string."); + if (typeof t != "string") throw new TypeError("Secret string must be provided."); + return e21 + "." + n2.createHmac("sha256", t).update(e21).digest("base64").replace(/\=+$/, ""); + }; + Gd.unsign = function(e21, t) { + if (typeof e21 != "string") throw new TypeError("Signed cookie string must be provided."); + if (typeof t != "string") throw new TypeError("Secret string must be provided."); + var r = e21.slice(0, e21.lastIndexOf(".")), n = Gd.sign(r, t); + return r2(n) == r2(e21) ? r : false; + }; + function r2(e21) { + return n2.createHash("sha1").update(e21).digest("hex"); + } +}); +var s2 = g((Pb) => { + "use strict"; + Pb.parse = gJ; + Pb.serialize = yJ; + var dJ = Object.prototype.toString, fJ = /^[!#$%&'*+\-.^_`|~0-9A-Za-z]+$/, mJ = /^("?)[\u0021\u0023-\u002B\u002D-\u003A\u003C-\u005B\u005D-\u007E]*\1$/, hJ = /^([.]?[a-z0-9]([a-z0-9-]{0,61}[a-z0-9])?)([.][a-z0-9]([a-z0-9-]{0,61}[a-z0-9])?)*$/i, vJ = /^[\u0020-\u003A\u003D-\u007E]*$/; + function gJ(e21, t) { + if (typeof e21 != "string") throw new TypeError("argument str must be a string"); + var r = {}, n = e21.length; + if (n < 2) return r; + var i = t && t.decode || xJ, o = 0, a = 0, s = 0; + do { + if (a = e21.indexOf("=", o), a === -1) break; + if (s = e21.indexOf(";", o), s === -1) s = n; + else if (a > s) { + o = e21.lastIndexOf(";", a - 1) + 1; + continue; + } + var c = o2(e21, o, a), u = a2(e21, a, c), l = e21.slice(c, u); + if (!r.hasOwnProperty(l)) { + var p = o2(e21, a + 1, s), d = a2(e21, s, p); + e21.charCodeAt(p) === 34 && e21.charCodeAt(d - 1) === 34 && (p++, d--); + var f = e21.slice(p, d); + r[l] = _J(f, i); + } + o = s + 1; + } while (o < n); + return r; + } + function o2(e21, t, r) { + do { + var n = e21.charCodeAt(t); + if (n !== 32 && n !== 9) return t; + } while (++t < r); + return r; + } + function a2(e21, t, r) { + for (; t > r; ) { + var n = e21.charCodeAt(--t); + if (n !== 32 && n !== 9) return t + 1; + } + return r; + } + function yJ(e21, t, r) { + var n = r && r.encode || encodeURIComponent; + if (typeof n != "function") throw new TypeError("option encode is invalid"); + if (!fJ.test(e21)) throw new TypeError("argument name is invalid"); + var i = n(t); + if (!mJ.test(i)) throw new TypeError("argument val is invalid"); + var o = e21 + "=" + i; + if (!r) return o; + if (r.maxAge != null) { + var a = Math.floor(r.maxAge); + if (!isFinite(a)) throw new TypeError("option maxAge is invalid"); + o += "; Max-Age=" + a; + } + if (r.domain) { + if (!hJ.test(r.domain)) throw new TypeError("option domain is invalid"); + o += "; Domain=" + r.domain; + } + if (r.path) { + if (!vJ.test(r.path)) throw new TypeError("option path is invalid"); + o += "; Path=" + r.path; + } + if (r.expires) { + var s = r.expires; + if (!bJ(s) || isNaN(s.valueOf())) throw new TypeError("option expires is invalid"); + o += "; Expires=" + s.toUTCString(); + } + if (r.httpOnly && (o += "; HttpOnly"), r.secure && (o += "; Secure"), r.partitioned && (o += "; Partitioned"), r.priority) { + var c = typeof r.priority == "string" ? r.priority.toLowerCase() : r.priority; + switch (c) { + case "low": + o += "; Priority=Low"; + break; + case "medium": + o += "; Priority=Medium"; + break; + case "high": + o += "; Priority=High"; + break; + default: + throw new TypeError("option priority is invalid"); + } + } + if (r.sameSite) { + var u = typeof r.sameSite == "string" ? r.sameSite.toLowerCase() : r.sameSite; + switch (u) { + case true: + o += "; SameSite=Strict"; + break; + case "lax": + o += "; SameSite=Lax"; + break; + case "strict": + o += "; SameSite=Strict"; + break; + case "none": + o += "; SameSite=None"; + break; + default: + throw new TypeError("option sameSite is invalid"); + } + } + return o; + } + function xJ(e21) { + return e21.indexOf("%") !== -1 ? decodeURIComponent(e21) : e21; + } + function bJ(e21) { + return dJ.call(e21) === "[object Date]"; + } + function _J(e21, t) { + try { + return t(e21); + } catch { + return e21; + } + } +}); +var l2 = g((Qfe, jb) => { + "use strict"; + jb.exports = $J; + jb.exports.append = u2; + var wJ = /^[!#$%&'*+\-.^_`|~0-9A-Za-z]+$/; + function u2(e21, t) { + if (typeof e21 != "string") throw new TypeError("header argument is required"); + if (!t) throw new TypeError("field argument is required"); + for (var r = Array.isArray(t) ? t : c2(String(t)), n = 0; n < r.length; n++) if (!wJ.test(r[n])) throw new TypeError("field argument contains an invalid header name"); + if (e21 === "*") return e21; + var i = e21, o = c2(e21.toLowerCase()); + if (r.indexOf("*") !== -1 || o.indexOf("*") !== -1) return "*"; + for (var a = 0; a < r.length; a++) { + var s = r[a].toLowerCase(); + o.indexOf(s) === -1 && (o.push(s), i = i ? i + ", " + r[a] : r[a]); + } + return i; + } + function c2(e21) { + for (var t = 0, r = [], n = 0, i = 0, o = e21.length; i < o; i++) switch (e21.charCodeAt(i)) { + case 32: + n === t && (n = t = i + 1); + break; + case 44: + r.push(e21.substring(n, t)), n = t = i + 1; + break; + default: + t = i + 1; + break; + } + return r.push(e21.substring(n, t)), r; + } + function $J(e21, t) { + if (!e21 || !e21.getHeader || !e21.setHeader) throw new TypeError("res argument is required"); + var r = e21.getHeader("Vary") || "", n = Array.isArray(r) ? r.join(", ") : String(r); + (r = u2(n, t)) && e21.setHeader("Vary", r); + } +}); +var y2 = g((eme, g2) => { + "use strict"; + var ru = Cd().Buffer, p2 = ib(), SJ = ab(), Kt = Ar()("express"), kJ = Od(), EJ = qc(), OJ = O("http"), TJ = Xn().isAbsolute, IJ = hc(), d2 = O("path"), Wd = Uc(), f2 = Hc(), zJ = i2().sign, PJ = Xn().normalizeType, jJ = Xn().normalizeTypes, AJ = Xn().setCharset, RJ = s2(), Ab = Fd(), CJ = d2.extname, m2 = Ab.mime, NJ = d2.resolve, DJ = l2(), Ue = Object.create(OJ.ServerResponse.prototype); + g2.exports = Ue; + var qJ = /;\s*charset\s*=/; + Ue.status = function(t) { + return (typeof t == "string" || Math.floor(t) !== t) && t > 99 && t < 1e3 && Kt("res.status(" + JSON.stringify(t) + "): use res.status(" + Math.floor(t) + ") instead"), this.statusCode = t, this; + }; + Ue.links = function(e21) { + var t = this.get("Link") || ""; + return t && (t += ", "), this.set("Link", t + Object.keys(e21).map(function(r) { + return "<" + e21[r] + '>; rel="' + r + '"'; + }).join(", ")); + }; + Ue.send = function(t) { + var r = t, n, i = this.req, o, a = this.app; + switch (arguments.length === 2 && (typeof arguments[0] != "number" && typeof arguments[1] == "number" ? (Kt("res.send(body, status): Use res.status(status).send(body) instead"), this.statusCode = arguments[1]) : (Kt("res.send(status, body): Use res.status(status).send(body) instead"), this.statusCode = arguments[0], r = arguments[1])), typeof r == "number" && arguments.length === 1 && (this.get("Content-Type") || this.type("txt"), Kt("res.send(status): Use res.sendStatus(status) instead"), this.statusCode = r, r = Wd.message[r]), typeof r) { + case "string": + this.get("Content-Type") || this.type("html"); + break; + case "boolean": + case "number": + case "object": + if (r === null) r = ""; + else if (ru.isBuffer(r)) this.get("Content-Type") || this.type("bin"); + else return this.json(r); + break; + } + typeof r == "string" && (n = "utf8", o = this.get("Content-Type"), typeof o == "string" && this.set("Content-Type", AJ(o, "utf-8"))); + var s = a.get("etag fn"), c = !this.get("ETag") && typeof s == "function", u; + r !== void 0 && (ru.isBuffer(r) ? u = r.length : !c && r.length < 1e3 ? u = ru.byteLength(r, n) : (r = ru.from(r, n), n = void 0, u = r.length), this.set("Content-Length", u)); + var l; + return c && u !== void 0 && (l = s(r, n)) && this.set("ETag", l), i.fresh && (this.statusCode = 304), (this.statusCode === 204 || this.statusCode === 304) && (this.removeHeader("Content-Type"), this.removeHeader("Content-Length"), this.removeHeader("Transfer-Encoding"), r = ""), this.statusCode === 205 && (this.set("Content-Length", "0"), this.removeHeader("Transfer-Encoding"), r = ""), i.method === "HEAD" ? this.end() : this.end(r, n), this; + }; + Ue.json = function(t) { + var r = t; + arguments.length === 2 && (typeof arguments[1] == "number" ? (Kt("res.json(obj, status): Use res.status(status).json(obj) instead"), this.statusCode = arguments[1]) : (Kt("res.json(status, obj): Use res.status(status).json(obj) instead"), this.statusCode = arguments[0], r = arguments[1])); + var n = this.app, i = n.get("json escape"), o = n.get("json replacer"), a = n.get("json spaces"), s = v2(r, o, a, i); + return this.get("Content-Type") || this.set("Content-Type", "application/json"), this.send(s); + }; + Ue.jsonp = function(t) { + var r = t; + arguments.length === 2 && (typeof arguments[1] == "number" ? (Kt("res.jsonp(obj, status): Use res.status(status).jsonp(obj) instead"), this.statusCode = arguments[1]) : (Kt("res.jsonp(status, obj): Use res.status(status).jsonp(obj) instead"), this.statusCode = arguments[0], r = arguments[1])); + var n = this.app, i = n.get("json escape"), o = n.get("json replacer"), a = n.get("json spaces"), s = v2(r, o, a, i), c = this.req.query[n.get("jsonp callback name")]; + return this.get("Content-Type") || (this.set("X-Content-Type-Options", "nosniff"), this.set("Content-Type", "application/json")), Array.isArray(c) && (c = c[0]), typeof c == "string" && c.length !== 0 && (this.set("X-Content-Type-Options", "nosniff"), this.set("Content-Type", "text/javascript"), c = c.replace(/[^\[\]\w$.]/g, ""), s === void 0 ? s = "" : typeof s == "string" && (s = s.replace(/\u2028/g, "\\u2028").replace(/\u2029/g, "\\u2029")), s = "/**/ typeof " + c + " === 'function' && " + c + "(" + s + ");"), this.send(s); + }; + Ue.sendStatus = function(t) { + var r = Wd.message[t] || String(t); + return this.statusCode = t, this.type("txt"), this.send(r); + }; + Ue.sendFile = function(t, r, n) { + var i = n, o = this.req, a = this, s = o.next, c = r || {}; + if (!t) throw new TypeError("path argument is required to res.sendFile"); + if (typeof t != "string") throw new TypeError("path must be a string to res.sendFile"); + if (typeof r == "function" && (i = r, c = {}), !c.root && !TJ(t)) throw new TypeError("path must be absolute or specify root to res.sendFile"); + var u = encodeURI(t), l = Ab(o, u, c); + h2(a, l, c, function(p) { + if (i) return i(p); + if (p && p.code === "EISDIR") return s(); + p && p.code !== "ECONNABORTED" && p.syscall !== "write" && s(p); + }); + }; + Ue.sendfile = function(e21, t, r) { + var n = r, i = this.req, o = this, a = i.next, s = t || {}; + typeof t == "function" && (n = t, s = {}); + var c = Ab(i, e21, s); + h2(o, c, s, function(u) { + if (n) return n(u); + if (u && u.code === "EISDIR") return a(); + u && u.code !== "ECONNABORTED" && u.syscall !== "write" && a(u); + }); + }; + Ue.sendfile = Kt.function(Ue.sendfile, "res.sendfile: Use res.sendFile instead"); + Ue.download = function(t, r, n, i) { + var o = i, a = r, s = n || null; + typeof r == "function" ? (o = r, a = null, s = null) : typeof n == "function" && (o = n, s = null), typeof r == "object" && (typeof n == "function" || n === void 0) && (a = null, s = r); + var c = { "Content-Disposition": p2(a || t) }; + if (s && s.headers) for (var u = Object.keys(s.headers), l = 0; l < u.length; l++) { + var p = u[l]; + p.toLowerCase() !== "content-disposition" && (c[p] = s.headers[p]); + } + s = Object.create(s), s.headers = c; + var d = s.root ? t : NJ(t); + return this.sendFile(d, s, o); + }; + Ue.contentType = Ue.type = function(t) { + var r = t.indexOf("/") === -1 ? m2.lookup(t) : t; + return this.set("Content-Type", r); + }; + Ue.format = function(e21) { + var t = this.req, r = t.next, n = Object.keys(e21).filter(function(o) { + return o !== "default"; + }), i = n.length > 0 ? t.accepts(n) : false; + return this.vary("Accept"), i ? (this.set("Content-Type", PJ(i).value), e21[i](t, this, r)) : e21.default ? e21.default(t, this, r) : r(SJ(406, { types: jJ(n).map(function(o) { + return o.value; + }) })), this; + }; + Ue.attachment = function(t) { + return t && this.type(CJ(t)), this.set("Content-Disposition", p2(t)), this; + }; + Ue.append = function(t, r) { + var n = this.get(t), i = r; + return n && (i = Array.isArray(n) ? n.concat(r) : Array.isArray(r) ? [n].concat(r) : [n, r]), this.set(t, i); + }; + Ue.set = Ue.header = function(t, r) { + if (arguments.length === 2) { + var n = Array.isArray(r) ? r.map(String) : String(r); + if (t.toLowerCase() === "content-type") { + if (Array.isArray(n)) throw new TypeError("Content-Type cannot be set to an Array"); + if (!qJ.test(n)) { + var i = m2.charsets.lookup(n.split(";")[0]); + i && (n += "; charset=" + i.toLowerCase()); + } + } + this.setHeader(t, n); + } else for (var o in t) this.set(o, t[o]); + return this; + }; + Ue.get = function(e21) { + return this.getHeader(e21); + }; + Ue.clearCookie = function(t, r) { + r && (r.maxAge && Kt('res.clearCookie: Passing "options.maxAge" is deprecated. In v5.0.0 of Express, this option will be ignored, as res.clearCookie will automatically set cookies to expire immediately. Please update your code to omit this option.'), r.expires && Kt('res.clearCookie: Passing "options.expires" is deprecated. In v5.0.0 of Express, this option will be ignored, as res.clearCookie will automatically set cookies to expire immediately. Please update your code to omit this option.')); + var n = f2({ expires: /* @__PURE__ */ new Date(1), path: "/" }, r); + return this.cookie(t, "", n); + }; + Ue.cookie = function(e21, t, r) { + var n = f2({}, r), i = this.req.secret, o = n.signed; + if (o && !i) throw new Error('cookieParser("secret") required for signed cookies'); + var a = typeof t == "object" ? "j:" + JSON.stringify(t) : String(t); + if (o && (a = "s:" + zJ(a, i)), n.maxAge != null) { + var s = n.maxAge - 0; + isNaN(s) || (n.expires = new Date(Date.now() + s), n.maxAge = Math.floor(s / 1e3)); + } + return n.path == null && (n.path = "/"), this.append("Set-Cookie", RJ.serialize(e21, String(a), n)), this; + }; + Ue.location = function(t) { + var r; + return t === "back" ? (Kt('res.location("back"): use res.location(req.get("Referrer") || "/") and refer to https://dub.sh/security-redirect for best practices'), r = this.req.get("Referrer") || "/") : r = String(t), this.set("Location", kJ(r)); + }; + Ue.redirect = function(t) { + var r = t, n, i = 302; + arguments.length === 2 && (typeof arguments[0] == "number" ? (i = arguments[0], r = arguments[1]) : (Kt("res.redirect(url, status): Use res.redirect(status, url) instead"), i = arguments[1])), r = this.location(r).get("Location"), this.format({ text: function() { + n = Wd.message[i] + ". Redirecting to " + r; + }, html: function() { + var o = EJ(r); + n = "

" + Wd.message[i] + ". Redirecting to " + o + "

"; + }, default: function() { + n = ""; + } }), this.statusCode = i, this.set("Content-Length", ru.byteLength(n)), this.req.method === "HEAD" ? this.end() : this.end(n); + }; + Ue.vary = function(e21) { + return !e21 || Array.isArray(e21) && !e21.length ? (Kt("res.vary(): Provide a field name"), this) : (DJ(this, e21), this); + }; + Ue.render = function(t, r, n) { + var i = this.req.app, o = n, a = r || {}, s = this.req, c = this; + typeof r == "function" && (o = r, a = {}), a._locals = c.locals, o = o || function(u, l) { + if (u) return s.next(u); + c.send(l); + }, i.render(t, a, o); + }; + function h2(e21, t, r, n) { + var i = false, o; + function a() { + if (!i) { + i = true; + var f = new Error("Request aborted"); + f.code = "ECONNABORTED", n(f); + } + } + function s() { + if (!i) { + i = true; + var f = new Error("EISDIR, read"); + f.code = "EISDIR", n(f); + } + } + function c(f) { + i || (i = true, n(f)); + } + function u() { + i || (i = true, n()); + } + function l() { + o = false; + } + function p(f) { + if (f && f.code === "ECONNRESET") return a(); + if (f) return c(f); + i || setImmediate(function() { + if (o !== false && !i) { + a(); + return; + } + i || (i = true, n()); + }); + } + function d() { + o = true; + } + t.on("directory", s), t.on("end", u), t.on("error", c), t.on("file", l), t.on("stream", d), IJ(e21, p), r.headers && t.on("headers", function(m) { + for (var h = r.headers, v = Object.keys(h), y = 0; y < v.length; y++) { + var x = v[y]; + m.setHeader(x, h[x]); + } + }), t.pipe(e21); + } + function v2(e21, t, r, n) { + var i = t || r ? JSON.stringify(e21, t, r) : JSON.stringify(e21); + return n && typeof i == "string" && (i = i.replace(/[<>&]/g, function(o) { + switch (o.charCodeAt(0)) { + case 60: + return "\\u003c"; + case 62: + return "\\u003e"; + case 38: + return "\\u0026"; + default: + return o; + } + })), i; + } +}); +var b2 = g((tme, Cb) => { + "use strict"; + var UJ = Od(), LJ = qc(), Rb = Ko(), MJ = O("path").resolve, x2 = Fd(), FJ = O("url"); + Cb.exports = ZJ; + Cb.exports.mime = x2.mime; + function ZJ(e21, t) { + if (!e21) throw new TypeError("root path required"); + if (typeof e21 != "string") throw new TypeError("root path must be a string"); + var r = Object.create(t || null), n = r.fallthrough !== false, i = r.redirect !== false, o = r.setHeaders; + if (o && typeof o != "function") throw new TypeError("option setHeaders must be function"); + r.maxage = r.maxage || r.maxAge || 0, r.root = MJ(e21); + var a = i ? JJ() : HJ(); + return function(c, u, l) { + if (c.method !== "GET" && c.method !== "HEAD") { + if (n) return l(); + u.statusCode = 405, u.setHeader("Allow", "GET, HEAD"), u.setHeader("Content-Length", "0"), u.end(); + return; + } + var p = !n, d = Rb.original(c), f = Rb(c).pathname; + f === "/" && d.pathname.substr(-1) !== "/" && (f = ""); + var m = x2(c, f, r); + m.on("directory", a), o && m.on("headers", o), n && m.on("file", function() { + p = true; + }), m.on("error", function(v) { + if (p || !(v.statusCode < 500)) { + l(v); + return; + } + l(); + }), m.pipe(u); + }; + } + function BJ(e21) { + for (var t = 0; t < e21.length && e21.charCodeAt(t) === 47; t++) ; + return t > 1 ? "/" + e21.substr(t) : e21; + } + function VJ(e21, t) { + return ` + + + +` + e21 + ` + + +
` + t + `
+ + +`; + } + function HJ() { + return function() { + this.error(404); + }; + } + function JJ() { + return function(t) { + if (this.hasTrailingSlash()) { + this.error(404); + return; + } + var r = Rb.original(this.req); + r.path = null, r.pathname = BJ(r.pathname + "/"); + var n = UJ(FJ.format(r)), i = VJ("Redirecting", "Redirecting to " + LJ(n)); + t.statusCode = 301, t.setHeader("Content-Type", "text/html; charset=UTF-8"), t.setHeader("Content-Length", Buffer.byteLength(i)), t.setHeader("Content-Security-Policy", "default-src 'none'"), t.setHeader("X-Content-Type-Options", "nosniff"), t.setHeader("Location", n), t.end(i); + }; + } +}); +var E2 = g((Xt, k2) => { + "use strict"; + var Kd = uI(), GJ = O("events").EventEmitter, _2 = pI(), w2 = IP(), WJ = Yx(), KJ = eb(), $2 = t2(), S2 = y2(); + Xt = k2.exports = XJ; + function XJ() { + var e21 = function(t, r, n) { + e21.handle(t, r, n); + }; + return _2(e21, GJ.prototype, false), _2(e21, w2, false), e21.request = Object.create($2, { app: { configurable: true, enumerable: true, writable: true, value: e21 } }), e21.response = Object.create(S2, { app: { configurable: true, enumerable: true, writable: true, value: e21 } }), e21.init(), e21; + } + Xt.application = w2; + Xt.request = $2; + Xt.response = S2; + Xt.Route = WJ; + Xt.Router = KJ; + Xt.json = Kd.json; + Xt.query = tb(); + Xt.raw = Kd.raw; + Xt.static = b2(); + Xt.text = Kd.text; + Xt.urlencoded = Kd.urlencoded; + var YJ = ["bodyParser", "compress", "cookieSession", "session", "logger", "cookieParser", "favicon", "responseTime", "errorHandler", "timeout", "methodOverride", "vhost", "csrf", "directory", "limit", "multipart", "staticCache"]; + YJ.forEach(function(e21) { + Object.defineProperty(Xt, e21, { get: function() { + throw new Error("Most middleware (like " + e21 + ") is no longer bundled with Express and must be installed separately. Please see https://github.com/senchalabs/connect#middleware."); + }, configurable: true }); + }); +}); +var T2 = g((rme, O2) => { + "use strict"; + O2.exports = E2(); +}); +var yu = g((fe) => { + "use strict"; + Object.defineProperty(fe, "__esModule", { value: true }); + fe.regexpCode = fe.getEsmExportName = fe.getProperty = fe.safeStringify = fe.stringify = fe.strConcat = fe.addCodeArg = fe.str = fe._ = fe.nil = fe._Code = fe.Name = fe.IDENTIFIER = fe._CodeOrName = void 0; + var vu = class { + }; + fe._CodeOrName = vu; + fe.IDENTIFIER = /^[a-z$_][a-z$_0-9]*$/i; + var Vi = class extends vu { + constructor(t) { + if (super(), !fe.IDENTIFIER.test(t)) throw new Error("CodeGen: name must be a valid identifier"); + this.str = t; + } + toString() { + return this.str; + } + emptyStr() { + return false; + } + get names() { + return { [this.str]: 1 }; + } + }; + fe.Name = Vi; + var kr = class extends vu { + constructor(t) { + super(), this._items = typeof t == "string" ? [t] : t; + } + toString() { + return this.str; + } + emptyStr() { + if (this._items.length > 1) return false; + let t = this._items[0]; + return t === "" || t === '""'; + } + get str() { + var t; + return (t = this._str) !== null && t !== void 0 ? t : this._str = this._items.reduce((r, n) => `${r}${n}`, ""); + } + get names() { + var t; + return (t = this._names) !== null && t !== void 0 ? t : this._names = this._items.reduce((r, n) => (n instanceof Vi && (r[n.str] = (r[n.str] || 0) + 1), r), {}); + } + }; + fe._Code = kr; + fe.nil = new kr(""); + function U2(e21, ...t) { + let r = [e21[0]], n = 0; + for (; n < t.length; ) Hb(r, t[n]), r.push(e21[++n]); + return new kr(r); + } + fe._ = U2; + var Vb = new kr("+"); + function L2(e21, ...t) { + let r = [gu(e21[0])], n = 0; + for (; n < t.length; ) r.push(Vb), Hb(r, t[n]), r.push(Vb, gu(e21[++n])); + return DG(r), new kr(r); + } + fe.str = L2; + function Hb(e21, t) { + t instanceof kr ? e21.push(...t._items) : t instanceof Vi ? e21.push(t) : e21.push(LG(t)); + } + fe.addCodeArg = Hb; + function DG(e21) { + let t = 1; + for (; t < e21.length - 1; ) { + if (e21[t] === Vb) { + let r = qG(e21[t - 1], e21[t + 1]); + if (r !== void 0) { + e21.splice(t - 1, 3, r); + continue; + } + e21[t++] = "+"; + } + t++; + } + } + function qG(e21, t) { + if (t === '""') return e21; + if (e21 === '""') return t; + if (typeof e21 == "string") return t instanceof Vi || e21[e21.length - 1] !== '"' ? void 0 : typeof t != "string" ? `${e21.slice(0, -1)}${t}"` : t[0] === '"' ? e21.slice(0, -1) + t.slice(1) : void 0; + if (typeof t == "string" && t[0] === '"' && !(e21 instanceof Vi)) return `"${e21}${t.slice(1)}`; + } + function UG(e21, t) { + return t.emptyStr() ? e21 : e21.emptyStr() ? t : L2`${e21}${t}`; + } + fe.strConcat = UG; + function LG(e21) { + return typeof e21 == "number" || typeof e21 == "boolean" || e21 === null ? e21 : gu(Array.isArray(e21) ? e21.join(",") : e21); + } + function MG(e21) { + return new kr(gu(e21)); + } + fe.stringify = MG; + function gu(e21) { + return JSON.stringify(e21).replace(/\u2028/g, "\\u2028").replace(/\u2029/g, "\\u2029"); + } + fe.safeStringify = gu; + function FG(e21) { + return typeof e21 == "string" && fe.IDENTIFIER.test(e21) ? new kr(`.${e21}`) : U2`[${e21}]`; + } + fe.getProperty = FG; + function ZG(e21) { + if (typeof e21 == "string" && fe.IDENTIFIER.test(e21)) return new kr(`${e21}`); + throw new Error(`CodeGen: invalid export name: ${e21}, use explicit $id name mapping`); + } + fe.getEsmExportName = ZG; + function BG(e21) { + return new kr(e21.toString()); + } + fe.regexpCode = BG; +}); +var Wb = g((Qt) => { + "use strict"; + Object.defineProperty(Qt, "__esModule", { value: true }); + Qt.ValueScope = Qt.ValueScopeName = Qt.Scope = Qt.varKinds = Qt.UsedValueState = void 0; + var Yt = yu(), Jb = class extends Error { + constructor(t) { + super(`CodeGen: "code" for ${t} not defined`), this.value = t.value; + } + }, rf; + (function(e21) { + e21[e21.Started = 0] = "Started", e21[e21.Completed = 1] = "Completed"; + })(rf || (Qt.UsedValueState = rf = {})); + Qt.varKinds = { const: new Yt.Name("const"), let: new Yt.Name("let"), var: new Yt.Name("var") }; + var nf = class { + constructor({ prefixes: t, parent: r } = {}) { + this._names = {}, this._prefixes = t, this._parent = r; + } + toName(t) { + return t instanceof Yt.Name ? t : this.name(t); + } + name(t) { + return new Yt.Name(this._newName(t)); + } + _newName(t) { + let r = this._names[t] || this._nameGroup(t); + return `${t}${r.index++}`; + } + _nameGroup(t) { + var r, n; + if (!((n = (r = this._parent) === null || r === void 0 ? void 0 : r._prefixes) === null || n === void 0) && n.has(t) || this._prefixes && !this._prefixes.has(t)) throw new Error(`CodeGen: prefix "${t}" is not allowed in this scope`); + return this._names[t] = { prefix: t, index: 0 }; + } + }; + Qt.Scope = nf; + var of = class extends Yt.Name { + constructor(t, r) { + super(r), this.prefix = t; + } + setValue(t, { property: r, itemIndex: n }) { + this.value = t, this.scopePath = (0, Yt._)`.${new Yt.Name(r)}[${n}]`; + } + }; + Qt.ValueScopeName = of; + var VG = (0, Yt._)`\n`, Gb = class extends nf { + constructor(t) { + super(t), this._values = {}, this._scope = t.scope, this.opts = { ...t, _n: t.lines ? VG : Yt.nil }; + } + get() { + return this._scope; + } + name(t) { + return new of(t, this._newName(t)); + } + value(t, r) { + var n; + if (r.ref === void 0) throw new Error("CodeGen: ref must be passed in value"); + let i = this.toName(t), { prefix: o } = i, a = (n = r.key) !== null && n !== void 0 ? n : r.ref, s = this._values[o]; + if (s) { + let l = s.get(a); + if (l) return l; + } else s = this._values[o] = /* @__PURE__ */ new Map(); + s.set(a, i); + let c = this._scope[o] || (this._scope[o] = []), u = c.length; + return c[u] = r.ref, i.setValue(r, { property: o, itemIndex: u }), i; + } + getValue(t, r) { + let n = this._values[t]; + if (n) return n.get(r); + } + scopeRefs(t, r = this._values) { + return this._reduceValues(r, (n) => { + if (n.scopePath === void 0) throw new Error(`CodeGen: name "${n}" has no value`); + return (0, Yt._)`${t}${n.scopePath}`; + }); + } + scopeCode(t = this._values, r, n) { + return this._reduceValues(t, (i) => { + if (i.value === void 0) throw new Error(`CodeGen: name "${i}" has no value`); + return i.value.code; + }, r, n); + } + _reduceValues(t, r, n = {}, i) { + let o = Yt.nil; + for (let a in t) { + let s = t[a]; + if (!s) continue; + let c = n[a] = n[a] || /* @__PURE__ */ new Map(); + s.forEach((u) => { + if (c.has(u)) return; + c.set(u, rf.Started); + let l = r(u); + if (l) { + let p = this.opts.es5 ? Qt.varKinds.var : Qt.varKinds.const; + o = (0, Yt._)`${o}${p} ${u} = ${l};${this.opts._n}`; + } else if (l = i?.(u)) o = (0, Yt._)`${o}${l}${this.opts._n}`; + else throw new Jb(u); + c.set(u, rf.Completed); + }); + } + return o; + } + }; + Qt.ValueScope = Gb; +}); +var ee = g((re) => { + "use strict"; + Object.defineProperty(re, "__esModule", { value: true }); + re.or = re.and = re.not = re.CodeGen = re.operators = re.varKinds = re.ValueScopeName = re.ValueScope = re.Scope = re.Name = re.regexpCode = re.stringify = re.getProperty = re.nil = re.strConcat = re.str = re._ = void 0; + var ue = yu(), Lr = Wb(), ni = yu(); + Object.defineProperty(re, "_", { enumerable: true, get: function() { + return ni._; + } }); + Object.defineProperty(re, "str", { enumerable: true, get: function() { + return ni.str; + } }); + Object.defineProperty(re, "strConcat", { enumerable: true, get: function() { + return ni.strConcat; + } }); + Object.defineProperty(re, "nil", { enumerable: true, get: function() { + return ni.nil; + } }); + Object.defineProperty(re, "getProperty", { enumerable: true, get: function() { + return ni.getProperty; + } }); + Object.defineProperty(re, "stringify", { enumerable: true, get: function() { + return ni.stringify; + } }); + Object.defineProperty(re, "regexpCode", { enumerable: true, get: function() { + return ni.regexpCode; + } }); + Object.defineProperty(re, "Name", { enumerable: true, get: function() { + return ni.Name; + } }); + var uf = Wb(); + Object.defineProperty(re, "Scope", { enumerable: true, get: function() { + return uf.Scope; + } }); + Object.defineProperty(re, "ValueScope", { enumerable: true, get: function() { + return uf.ValueScope; + } }); + Object.defineProperty(re, "ValueScopeName", { enumerable: true, get: function() { + return uf.ValueScopeName; + } }); + Object.defineProperty(re, "varKinds", { enumerable: true, get: function() { + return uf.varKinds; + } }); + re.operators = { GT: new ue._Code(">"), GTE: new ue._Code(">="), LT: new ue._Code("<"), LTE: new ue._Code("<="), EQ: new ue._Code("==="), NEQ: new ue._Code("!=="), NOT: new ue._Code("!"), OR: new ue._Code("||"), AND: new ue._Code("&&"), ADD: new ue._Code("+") }; + var On = class { + optimizeNodes() { + return this; + } + optimizeNames(t, r) { + return this; + } + }, Kb = class extends On { + constructor(t, r, n) { + super(), this.varKind = t, this.name = r, this.rhs = n; + } + render({ es5: t, _n: r }) { + let n = t ? Lr.varKinds.var : this.varKind, i = this.rhs === void 0 ? "" : ` = ${this.rhs}`; + return `${n} ${this.name}${i};` + r; + } + optimizeNames(t, r) { + if (t[this.name.str]) return this.rhs && (this.rhs = ka(this.rhs, t, r)), this; + } + get names() { + return this.rhs instanceof ue._CodeOrName ? this.rhs.names : {}; + } + }, af = class extends On { + constructor(t, r, n) { + super(), this.lhs = t, this.rhs = r, this.sideEffects = n; + } + render({ _n: t }) { + return `${this.lhs} = ${this.rhs};` + t; + } + optimizeNames(t, r) { + if (!(this.lhs instanceof ue.Name && !t[this.lhs.str] && !this.sideEffects)) return this.rhs = ka(this.rhs, t, r), this; + } + get names() { + let t = this.lhs instanceof ue.Name ? {} : { ...this.lhs.names }; + return cf(t, this.rhs); + } + }, Xb = class extends af { + constructor(t, r, n, i) { + super(t, n, i), this.op = r; + } + render({ _n: t }) { + return `${this.lhs} ${this.op}= ${this.rhs};` + t; + } + }, Yb = class extends On { + constructor(t) { + super(), this.label = t, this.names = {}; + } + render({ _n: t }) { + return `${this.label}:` + t; + } + }, Qb = class extends On { + constructor(t) { + super(), this.label = t, this.names = {}; + } + render({ _n: t }) { + return `break${this.label ? ` ${this.label}` : ""};` + t; + } + }, e0 = class extends On { + constructor(t) { + super(), this.error = t; + } + render({ _n: t }) { + return `throw ${this.error};` + t; + } + get names() { + return this.error.names; + } + }, t0 = class extends On { + constructor(t) { + super(), this.code = t; + } + render({ _n: t }) { + return `${this.code};` + t; + } + optimizeNodes() { + return `${this.code}` ? this : void 0; + } + optimizeNames(t, r) { + return this.code = ka(this.code, t, r), this; + } + get names() { + return this.code instanceof ue._CodeOrName ? this.code.names : {}; + } + }, xu = class extends On { + constructor(t = []) { + super(), this.nodes = t; + } + render(t) { + return this.nodes.reduce((r, n) => r + n.render(t), ""); + } + optimizeNodes() { + let { nodes: t } = this, r = t.length; + for (; r--; ) { + let n = t[r].optimizeNodes(); + Array.isArray(n) ? t.splice(r, 1, ...n) : n ? t[r] = n : t.splice(r, 1); + } + return t.length > 0 ? this : void 0; + } + optimizeNames(t, r) { + let { nodes: n } = this, i = n.length; + for (; i--; ) { + let o = n[i]; + o.optimizeNames(t, r) || (HG(t, o.names), n.splice(i, 1)); + } + return n.length > 0 ? this : void 0; + } + get names() { + return this.nodes.reduce((t, r) => Gi(t, r.names), {}); + } + }, Tn = class extends xu { + render(t) { + return "{" + t._n + super.render(t) + "}" + t._n; + } + }, r0 = class extends xu { + }, Sa = class extends Tn { + }; + Sa.kind = "else"; + var Hi = class e21 extends Tn { + constructor(t, r) { + super(r), this.condition = t; + } + render(t) { + let r = `if(${this.condition})` + super.render(t); + return this.else && (r += "else " + this.else.render(t)), r; + } + optimizeNodes() { + super.optimizeNodes(); + let t = this.condition; + if (t === true) return this.nodes; + let r = this.else; + if (r) { + let n = r.optimizeNodes(); + r = this.else = Array.isArray(n) ? new Sa(n) : n; + } + if (r) return t === false ? r instanceof e21 ? r : r.nodes : this.nodes.length ? this : new e21(M2(t), r instanceof e21 ? [r] : r.nodes); + if (!(t === false || !this.nodes.length)) return this; + } + optimizeNames(t, r) { + var n; + if (this.else = (n = this.else) === null || n === void 0 ? void 0 : n.optimizeNames(t, r), !!(super.optimizeNames(t, r) || this.else)) return this.condition = ka(this.condition, t, r), this; + } + get names() { + let t = super.names; + return cf(t, this.condition), this.else && Gi(t, this.else.names), t; + } + }; + Hi.kind = "if"; + var Ji = class extends Tn { + }; + Ji.kind = "for"; + var n0 = class extends Ji { + constructor(t) { + super(), this.iteration = t; + } + render(t) { + return `for(${this.iteration})` + super.render(t); + } + optimizeNames(t, r) { + if (super.optimizeNames(t, r)) return this.iteration = ka(this.iteration, t, r), this; + } + get names() { + return Gi(super.names, this.iteration.names); + } + }, i0 = class extends Ji { + constructor(t, r, n, i) { + super(), this.varKind = t, this.name = r, this.from = n, this.to = i; + } + render(t) { + let r = t.es5 ? Lr.varKinds.var : this.varKind, { name: n, from: i, to: o } = this; + return `for(${r} ${n}=${i}; ${n}<${o}; ${n}++)` + super.render(t); + } + get names() { + let t = cf(super.names, this.from); + return cf(t, this.to); + } + }, sf = class extends Ji { + constructor(t, r, n, i) { + super(), this.loop = t, this.varKind = r, this.name = n, this.iterable = i; + } + render(t) { + return `for(${this.varKind} ${this.name} ${this.loop} ${this.iterable})` + super.render(t); + } + optimizeNames(t, r) { + if (super.optimizeNames(t, r)) return this.iterable = ka(this.iterable, t, r), this; + } + get names() { + return Gi(super.names, this.iterable.names); + } + }, bu = class extends Tn { + constructor(t, r, n) { + super(), this.name = t, this.args = r, this.async = n; + } + render(t) { + return `${this.async ? "async " : ""}function ${this.name}(${this.args})` + super.render(t); + } + }; + bu.kind = "func"; + var _u = class extends xu { + render(t) { + return "return " + super.render(t); + } + }; + _u.kind = "return"; + var o0 = class extends Tn { + render(t) { + let r = "try" + super.render(t); + return this.catch && (r += this.catch.render(t)), this.finally && (r += this.finally.render(t)), r; + } + optimizeNodes() { + var t, r; + return super.optimizeNodes(), (t = this.catch) === null || t === void 0 || t.optimizeNodes(), (r = this.finally) === null || r === void 0 || r.optimizeNodes(), this; + } + optimizeNames(t, r) { + var n, i; + return super.optimizeNames(t, r), (n = this.catch) === null || n === void 0 || n.optimizeNames(t, r), (i = this.finally) === null || i === void 0 || i.optimizeNames(t, r), this; + } + get names() { + let t = super.names; + return this.catch && Gi(t, this.catch.names), this.finally && Gi(t, this.finally.names), t; + } + }, wu = class extends Tn { + constructor(t) { + super(), this.error = t; + } + render(t) { + return `catch(${this.error})` + super.render(t); + } + }; + wu.kind = "catch"; + var $u = class extends Tn { + render(t) { + return "finally" + super.render(t); + } + }; + $u.kind = "finally"; + var a0 = class { + constructor(t, r = {}) { + this._values = {}, this._blockStarts = [], this._constants = {}, this.opts = { ...r, _n: r.lines ? ` +` : "" }, this._extScope = t, this._scope = new Lr.Scope({ parent: t }), this._nodes = [new r0()]; + } + toString() { + return this._root.render(this.opts); + } + name(t) { + return this._scope.name(t); + } + scopeName(t) { + return this._extScope.name(t); + } + scopeValue(t, r) { + let n = this._extScope.value(t, r); + return (this._values[n.prefix] || (this._values[n.prefix] = /* @__PURE__ */ new Set())).add(n), n; + } + getScopeValue(t, r) { + return this._extScope.getValue(t, r); + } + scopeRefs(t) { + return this._extScope.scopeRefs(t, this._values); + } + scopeCode() { + return this._extScope.scopeCode(this._values); + } + _def(t, r, n, i) { + let o = this._scope.toName(r); + return n !== void 0 && i && (this._constants[o.str] = n), this._leafNode(new Kb(t, o, n)), o; + } + const(t, r, n) { + return this._def(Lr.varKinds.const, t, r, n); + } + let(t, r, n) { + return this._def(Lr.varKinds.let, t, r, n); + } + var(t, r, n) { + return this._def(Lr.varKinds.var, t, r, n); + } + assign(t, r, n) { + return this._leafNode(new af(t, r, n)); + } + add(t, r) { + return this._leafNode(new Xb(t, re.operators.ADD, r)); + } + code(t) { + return typeof t == "function" ? t() : t !== ue.nil && this._leafNode(new t0(t)), this; + } + object(...t) { + let r = ["{"]; + for (let [n, i] of t) r.length > 1 && r.push(","), r.push(n), (n !== i || this.opts.es5) && (r.push(":"), (0, ue.addCodeArg)(r, i)); + return r.push("}"), new ue._Code(r); + } + if(t, r, n) { + if (this._blockNode(new Hi(t)), r && n) this.code(r).else().code(n).endIf(); + else if (r) this.code(r).endIf(); + else if (n) throw new Error('CodeGen: "else" body without "then" body'); + return this; + } + elseIf(t) { + return this._elseNode(new Hi(t)); + } + else() { + return this._elseNode(new Sa()); + } + endIf() { + return this._endBlockNode(Hi, Sa); + } + _for(t, r) { + return this._blockNode(t), r && this.code(r).endFor(), this; + } + for(t, r) { + return this._for(new n0(t), r); + } + forRange(t, r, n, i, o = this.opts.es5 ? Lr.varKinds.var : Lr.varKinds.let) { + let a = this._scope.toName(t); + return this._for(new i0(o, a, r, n), () => i(a)); + } + forOf(t, r, n, i = Lr.varKinds.const) { + let o = this._scope.toName(t); + if (this.opts.es5) { + let a = r instanceof ue.Name ? r : this.var("_arr", r); + return this.forRange("_i", 0, (0, ue._)`${a}.length`, (s) => { + this.var(o, (0, ue._)`${a}[${s}]`), n(o); + }); + } + return this._for(new sf("of", i, o, r), () => n(o)); + } + forIn(t, r, n, i = this.opts.es5 ? Lr.varKinds.var : Lr.varKinds.const) { + if (this.opts.ownProperties) return this.forOf(t, (0, ue._)`Object.keys(${r})`, n); + let o = this._scope.toName(t); + return this._for(new sf("in", i, o, r), () => n(o)); + } + endFor() { + return this._endBlockNode(Ji); + } + label(t) { + return this._leafNode(new Yb(t)); + } + break(t) { + return this._leafNode(new Qb(t)); + } + return(t) { + let r = new _u(); + if (this._blockNode(r), this.code(t), r.nodes.length !== 1) throw new Error('CodeGen: "return" should have one node'); + return this._endBlockNode(_u); + } + try(t, r, n) { + if (!r && !n) throw new Error('CodeGen: "try" without "catch" and "finally"'); + let i = new o0(); + if (this._blockNode(i), this.code(t), r) { + let o = this.name("e"); + this._currNode = i.catch = new wu(o), r(o); + } + return n && (this._currNode = i.finally = new $u(), this.code(n)), this._endBlockNode(wu, $u); + } + throw(t) { + return this._leafNode(new e0(t)); + } + block(t, r) { + return this._blockStarts.push(this._nodes.length), t && this.code(t).endBlock(r), this; + } + endBlock(t) { + let r = this._blockStarts.pop(); + if (r === void 0) throw new Error("CodeGen: not in self-balancing block"); + let n = this._nodes.length - r; + if (n < 0 || t !== void 0 && n !== t) throw new Error(`CodeGen: wrong number of nodes: ${n} vs ${t} expected`); + return this._nodes.length = r, this; + } + func(t, r = ue.nil, n, i) { + return this._blockNode(new bu(t, r, n)), i && this.code(i).endFunc(), this; + } + endFunc() { + return this._endBlockNode(bu); + } + optimize(t = 1) { + for (; t-- > 0; ) this._root.optimizeNodes(), this._root.optimizeNames(this._root.names, this._constants); + } + _leafNode(t) { + return this._currNode.nodes.push(t), this; + } + _blockNode(t) { + this._currNode.nodes.push(t), this._nodes.push(t); + } + _endBlockNode(t, r) { + let n = this._currNode; + if (n instanceof t || r && n instanceof r) return this._nodes.pop(), this; + throw new Error(`CodeGen: not in block "${r ? `${t.kind}/${r.kind}` : t.kind}"`); + } + _elseNode(t) { + let r = this._currNode; + if (!(r instanceof Hi)) throw new Error('CodeGen: "else" without "if"'); + return this._currNode = r.else = t, this; + } + get _root() { + return this._nodes[0]; + } + get _currNode() { + let t = this._nodes; + return t[t.length - 1]; + } + set _currNode(t) { + let r = this._nodes; + r[r.length - 1] = t; + } + }; + re.CodeGen = a0; + function Gi(e21, t) { + for (let r in t) e21[r] = (e21[r] || 0) + (t[r] || 0); + return e21; + } + function cf(e21, t) { + return t instanceof ue._CodeOrName ? Gi(e21, t.names) : e21; + } + function ka(e21, t, r) { + if (e21 instanceof ue.Name) return n(e21); + if (!i(e21)) return e21; + return new ue._Code(e21._items.reduce((o, a) => (a instanceof ue.Name && (a = n(a)), a instanceof ue._Code ? o.push(...a._items) : o.push(a), o), [])); + function n(o) { + let a = r[o.str]; + return a === void 0 || t[o.str] !== 1 ? o : (delete t[o.str], a); + } + function i(o) { + return o instanceof ue._Code && o._items.some((a) => a instanceof ue.Name && t[a.str] === 1 && r[a.str] !== void 0); + } + } + function HG(e21, t) { + for (let r in t) e21[r] = (e21[r] || 0) - (t[r] || 0); + } + function M2(e21) { + return typeof e21 == "boolean" || typeof e21 == "number" || e21 === null ? !e21 : (0, ue._)`!${s0(e21)}`; + } + re.not = M2; + var JG = F2(re.operators.AND); + function GG(...e21) { + return e21.reduce(JG); + } + re.and = GG; + var WG = F2(re.operators.OR); + function KG(...e21) { + return e21.reduce(WG); + } + re.or = KG; + function F2(e21) { + return (t, r) => t === ue.nil ? r : r === ue.nil ? t : (0, ue._)`${s0(t)} ${e21} ${s0(r)}`; + } + function s0(e21) { + return e21 instanceof ue.Name ? e21 : (0, ue._)`(${e21})`; + } +}); +var le = g((ie) => { + "use strict"; + Object.defineProperty(ie, "__esModule", { value: true }); + ie.checkStrictMode = ie.getErrorPath = ie.Type = ie.useFunc = ie.setEvaluated = ie.evaluatedPropsToName = ie.mergeEvaluated = ie.eachItem = ie.unescapeJsonPointer = ie.escapeJsonPointer = ie.escapeFragment = ie.unescapeFragment = ie.schemaRefOrVal = ie.schemaHasRulesButRef = ie.schemaHasRules = ie.checkUnknownRules = ie.alwaysValidSchema = ie.toHash = void 0; + var Re = ee(), XG = yu(); + function YG(e21) { + let t = {}; + for (let r of e21) t[r] = true; + return t; + } + ie.toHash = YG; + function QG(e21, t) { + return typeof t == "boolean" ? t : Object.keys(t).length === 0 ? true : (V2(e21, t), !H2(t, e21.self.RULES.all)); + } + ie.alwaysValidSchema = QG; + function V2(e21, t = e21.schema) { + let { opts: r, self: n } = e21; + if (!r.strictSchema || typeof t == "boolean") return; + let i = n.RULES.keywords; + for (let o in t) i[o] || W2(e21, `unknown keyword: "${o}"`); + } + ie.checkUnknownRules = V2; + function H2(e21, t) { + if (typeof e21 == "boolean") return !e21; + for (let r in e21) if (t[r]) return true; + return false; + } + ie.schemaHasRules = H2; + function eW(e21, t) { + if (typeof e21 == "boolean") return !e21; + for (let r in e21) if (r !== "$ref" && t.all[r]) return true; + return false; + } + ie.schemaHasRulesButRef = eW; + function tW({ topSchemaRef: e21, schemaPath: t }, r, n, i) { + if (!i) { + if (typeof r == "number" || typeof r == "boolean") return r; + if (typeof r == "string") return (0, Re._)`${r}`; + } + return (0, Re._)`${e21}${t}${(0, Re.getProperty)(n)}`; + } + ie.schemaRefOrVal = tW; + function rW(e21) { + return J2(decodeURIComponent(e21)); + } + ie.unescapeFragment = rW; + function nW(e21) { + return encodeURIComponent(u0(e21)); + } + ie.escapeFragment = nW; + function u0(e21) { + return typeof e21 == "number" ? `${e21}` : e21.replace(/~/g, "~0").replace(/\//g, "~1"); + } + ie.escapeJsonPointer = u0; + function J2(e21) { + return e21.replace(/~1/g, "/").replace(/~0/g, "~"); + } + ie.unescapeJsonPointer = J2; + function iW(e21, t) { + if (Array.isArray(e21)) for (let r of e21) t(r); + else t(e21); + } + ie.eachItem = iW; + function Z2({ mergeNames: e21, mergeToName: t, mergeValues: r, resultToName: n }) { + return (i, o, a, s) => { + let c = a === void 0 ? o : a instanceof Re.Name ? (o instanceof Re.Name ? e21(i, o, a) : t(i, o, a), a) : o instanceof Re.Name ? (t(i, a, o), o) : r(o, a); + return s === Re.Name && !(c instanceof Re.Name) ? n(i, c) : c; + }; + } + ie.mergeEvaluated = { props: Z2({ mergeNames: (e21, t, r) => e21.if((0, Re._)`${r} !== true && ${t} !== undefined`, () => { + e21.if((0, Re._)`${t} === true`, () => e21.assign(r, true), () => e21.assign(r, (0, Re._)`${r} || {}`).code((0, Re._)`Object.assign(${r}, ${t})`)); + }), mergeToName: (e21, t, r) => e21.if((0, Re._)`${r} !== true`, () => { + t === true ? e21.assign(r, true) : (e21.assign(r, (0, Re._)`${r} || {}`), l0(e21, r, t)); + }), mergeValues: (e21, t) => e21 === true ? true : { ...e21, ...t }, resultToName: G2 }), items: Z2({ mergeNames: (e21, t, r) => e21.if((0, Re._)`${r} !== true && ${t} !== undefined`, () => e21.assign(r, (0, Re._)`${t} === true ? true : ${r} > ${t} ? ${r} : ${t}`)), mergeToName: (e21, t, r) => e21.if((0, Re._)`${r} !== true`, () => e21.assign(r, t === true ? true : (0, Re._)`${r} > ${t} ? ${r} : ${t}`)), mergeValues: (e21, t) => e21 === true ? true : Math.max(e21, t), resultToName: (e21, t) => e21.var("items", t) }) }; + function G2(e21, t) { + if (t === true) return e21.var("props", true); + let r = e21.var("props", (0, Re._)`{}`); + return t !== void 0 && l0(e21, r, t), r; + } + ie.evaluatedPropsToName = G2; + function l0(e21, t, r) { + Object.keys(r).forEach((n) => e21.assign((0, Re._)`${t}${(0, Re.getProperty)(n)}`, true)); + } + ie.setEvaluated = l0; + var B2 = {}; + function oW(e21, t) { + return e21.scopeValue("func", { ref: t, code: B2[t.code] || (B2[t.code] = new XG._Code(t.code)) }); + } + ie.useFunc = oW; + var c0; + (function(e21) { + e21[e21.Num = 0] = "Num", e21[e21.Str = 1] = "Str"; + })(c0 || (ie.Type = c0 = {})); + function aW(e21, t, r) { + if (e21 instanceof Re.Name) { + let n = t === c0.Num; + return r ? n ? (0, Re._)`"[" + ${e21} + "]"` : (0, Re._)`"['" + ${e21} + "']"` : n ? (0, Re._)`"/" + ${e21}` : (0, Re._)`"/" + ${e21}.replace(/~/g, "~0").replace(/\\//g, "~1")`; + } + return r ? (0, Re.getProperty)(e21).toString() : "/" + u0(e21); + } + ie.getErrorPath = aW; + function W2(e21, t, r = e21.opts.strictSchema) { + if (r) { + if (t = `strict mode: ${t}`, r === true) throw new Error(t); + e21.self.logger.warn(t); + } + } + ie.checkStrictMode = W2; +}); +var In = g((p0) => { + "use strict"; + Object.defineProperty(p0, "__esModule", { value: true }); + var Ot = ee(), sW = { data: new Ot.Name("data"), valCxt: new Ot.Name("valCxt"), instancePath: new Ot.Name("instancePath"), parentData: new Ot.Name("parentData"), parentDataProperty: new Ot.Name("parentDataProperty"), rootData: new Ot.Name("rootData"), dynamicAnchors: new Ot.Name("dynamicAnchors"), vErrors: new Ot.Name("vErrors"), errors: new Ot.Name("errors"), this: new Ot.Name("this"), self: new Ot.Name("self"), scope: new Ot.Name("scope"), json: new Ot.Name("json"), jsonPos: new Ot.Name("jsonPos"), jsonLen: new Ot.Name("jsonLen"), jsonPart: new Ot.Name("jsonPart") }; + p0.default = sW; +}); +var Su = g((Tt) => { + "use strict"; + Object.defineProperty(Tt, "__esModule", { value: true }); + Tt.extendErrors = Tt.resetErrorsCount = Tt.reportExtraError = Tt.reportError = Tt.keyword$DataError = Tt.keywordError = void 0; + var pe = ee(), lf = le(), Ft = In(); + Tt.keywordError = { message: ({ keyword: e21 }) => (0, pe.str)`must pass "${e21}" keyword validation` }; + Tt.keyword$DataError = { message: ({ keyword: e21, schemaType: t }) => t ? (0, pe.str)`"${e21}" keyword must be ${t} ($data)` : (0, pe.str)`"${e21}" keyword is invalid ($data)` }; + function cW(e21, t = Tt.keywordError, r, n) { + let { it: i } = e21, { gen: o, compositeRule: a, allErrors: s } = i, c = Y2(e21, t, r); + n ?? (a || s) ? K2(o, c) : X2(i, (0, pe._)`[${c}]`); + } + Tt.reportError = cW; + function uW(e21, t = Tt.keywordError, r) { + let { it: n } = e21, { gen: i, compositeRule: o, allErrors: a } = n, s = Y2(e21, t, r); + K2(i, s), o || a || X2(n, Ft.default.vErrors); + } + Tt.reportExtraError = uW; + function lW(e21, t) { + e21.assign(Ft.default.errors, t), e21.if((0, pe._)`${Ft.default.vErrors} !== null`, () => e21.if(t, () => e21.assign((0, pe._)`${Ft.default.vErrors}.length`, t), () => e21.assign(Ft.default.vErrors, null))); + } + Tt.resetErrorsCount = lW; + function pW({ gen: e21, keyword: t, schemaValue: r, data: n, errsCount: i, it: o }) { + if (i === void 0) throw new Error("ajv implementation error"); + let a = e21.name("err"); + e21.forRange("i", i, Ft.default.errors, (s) => { + e21.const(a, (0, pe._)`${Ft.default.vErrors}[${s}]`), e21.if((0, pe._)`${a}.instancePath === undefined`, () => e21.assign((0, pe._)`${a}.instancePath`, (0, pe.strConcat)(Ft.default.instancePath, o.errorPath))), e21.assign((0, pe._)`${a}.schemaPath`, (0, pe.str)`${o.errSchemaPath}/${t}`), o.opts.verbose && (e21.assign((0, pe._)`${a}.schema`, r), e21.assign((0, pe._)`${a}.data`, n)); + }); + } + Tt.extendErrors = pW; + function K2(e21, t) { + let r = e21.const("err", t); + e21.if((0, pe._)`${Ft.default.vErrors} === null`, () => e21.assign(Ft.default.vErrors, (0, pe._)`[${r}]`), (0, pe._)`${Ft.default.vErrors}.push(${r})`), e21.code((0, pe._)`${Ft.default.errors}++`); + } + function X2(e21, t) { + let { gen: r, validateName: n, schemaEnv: i } = e21; + i.$async ? r.throw((0, pe._)`new ${e21.ValidationError}(${t})`) : (r.assign((0, pe._)`${n}.errors`, t), r.return(false)); + } + var Wi = { keyword: new pe.Name("keyword"), schemaPath: new pe.Name("schemaPath"), params: new pe.Name("params"), propertyName: new pe.Name("propertyName"), message: new pe.Name("message"), schema: new pe.Name("schema"), parentSchema: new pe.Name("parentSchema") }; + function Y2(e21, t, r) { + let { createErrors: n } = e21.it; + return n === false ? (0, pe._)`{}` : dW(e21, t, r); + } + function dW(e21, t, r = {}) { + let { gen: n, it: i } = e21, o = [fW(i, r), mW(e21, r)]; + return hW(e21, t, o), n.object(...o); + } + function fW({ errorPath: e21 }, { instancePath: t }) { + let r = t ? (0, pe.str)`${e21}${(0, lf.getErrorPath)(t, lf.Type.Str)}` : e21; + return [Ft.default.instancePath, (0, pe.strConcat)(Ft.default.instancePath, r)]; + } + function mW({ keyword: e21, it: { errSchemaPath: t } }, { schemaPath: r, parentSchema: n }) { + let i = n ? t : (0, pe.str)`${t}/${e21}`; + return r && (i = (0, pe.str)`${i}${(0, lf.getErrorPath)(r, lf.Type.Str)}`), [Wi.schemaPath, i]; + } + function hW(e21, { params: t, message: r }, n) { + let { keyword: i, data: o, schemaValue: a, it: s } = e21, { opts: c, propertyName: u, topSchemaRef: l, schemaPath: p } = s; + n.push([Wi.keyword, i], [Wi.params, typeof t == "function" ? t(e21) : t || (0, pe._)`{}`]), c.messages && n.push([Wi.message, typeof r == "function" ? r(e21) : r]), c.verbose && n.push([Wi.schema, a], [Wi.parentSchema, (0, pe._)`${l}${p}`], [Ft.default.data, o]), u && n.push([Wi.propertyName, u]); + } +}); +var e6 = g((Ea) => { + "use strict"; + Object.defineProperty(Ea, "__esModule", { value: true }); + Ea.boolOrEmptySchema = Ea.topBoolOrEmptySchema = void 0; + var vW = Su(), gW = ee(), yW = In(), xW = { message: "boolean schema is false" }; + function bW(e21) { + let { gen: t, schema: r, validateName: n } = e21; + r === false ? Q2(e21, false) : typeof r == "object" && r.$async === true ? t.return(yW.default.data) : (t.assign((0, gW._)`${n}.errors`, null), t.return(true)); + } + Ea.topBoolOrEmptySchema = bW; + function _W(e21, t) { + let { gen: r, schema: n } = e21; + n === false ? (r.var(t, false), Q2(e21)) : r.var(t, true); + } + Ea.boolOrEmptySchema = _W; + function Q2(e21, t) { + let { gen: r, data: n } = e21, i = { gen: r, keyword: "false schema", data: n, schema: false, schemaCode: false, schemaValue: false, params: {}, it: e21 }; + (0, vW.reportError)(i, xW, void 0, t); + } +}); +var d0 = g((Oa) => { + "use strict"; + Object.defineProperty(Oa, "__esModule", { value: true }); + Oa.getRules = Oa.isJSONType = void 0; + var wW = ["string", "number", "integer", "boolean", "null", "object", "array"], $W = new Set(wW); + function SW(e21) { + return typeof e21 == "string" && $W.has(e21); + } + Oa.isJSONType = SW; + function kW() { + let e21 = { number: { type: "number", rules: [] }, string: { type: "string", rules: [] }, array: { type: "array", rules: [] }, object: { type: "object", rules: [] } }; + return { types: { ...e21, integer: true, boolean: true, null: true }, rules: [{ rules: [] }, e21.number, e21.string, e21.array, e21.object], post: { rules: [] }, all: {}, keywords: {} }; + } + Oa.getRules = kW; +}); +var f0 = g((ii) => { + "use strict"; + Object.defineProperty(ii, "__esModule", { value: true }); + ii.shouldUseRule = ii.shouldUseGroup = ii.schemaHasRulesForType = void 0; + function EW({ schema: e21, self: t }, r) { + let n = t.RULES.types[r]; + return n && n !== true && t6(e21, n); + } + ii.schemaHasRulesForType = EW; + function t6(e21, t) { + return t.rules.some((r) => r6(e21, r)); + } + ii.shouldUseGroup = t6; + function r6(e21, t) { + var r; + return e21[t.keyword] !== void 0 || ((r = t.definition.implements) === null || r === void 0 ? void 0 : r.some((n) => e21[n] !== void 0)); + } + ii.shouldUseRule = r6; +}); +var ku = g((It) => { + "use strict"; + Object.defineProperty(It, "__esModule", { value: true }); + It.reportTypeError = It.checkDataTypes = It.checkDataType = It.coerceAndCheckDataType = It.getJSONTypes = It.getSchemaTypes = It.DataType = void 0; + var OW = d0(), TW = f0(), IW = Su(), Q = ee(), n6 = le(), Ta; + (function(e21) { + e21[e21.Correct = 0] = "Correct", e21[e21.Wrong = 1] = "Wrong"; + })(Ta || (It.DataType = Ta = {})); + function zW(e21) { + let t = i6(e21.type); + if (t.includes("null")) { + if (e21.nullable === false) throw new Error("type: null contradicts nullable: false"); + } else { + if (!t.length && e21.nullable !== void 0) throw new Error('"nullable" cannot be used without "type"'); + e21.nullable === true && t.push("null"); + } + return t; + } + It.getSchemaTypes = zW; + function i6(e21) { + let t = Array.isArray(e21) ? e21 : e21 ? [e21] : []; + if (t.every(OW.isJSONType)) return t; + throw new Error("type must be JSONType or JSONType[]: " + t.join(",")); + } + It.getJSONTypes = i6; + function PW(e21, t) { + let { gen: r, data: n, opts: i } = e21, o = jW(t, i.coerceTypes), a = t.length > 0 && !(o.length === 0 && t.length === 1 && (0, TW.schemaHasRulesForType)(e21, t[0])); + if (a) { + let s = h0(t, n, i.strictNumbers, Ta.Wrong); + r.if(s, () => { + o.length ? AW(e21, t, o) : v0(e21); + }); + } + return a; + } + It.coerceAndCheckDataType = PW; + var o6 = /* @__PURE__ */ new Set(["string", "number", "integer", "boolean", "null"]); + function jW(e21, t) { + return t ? e21.filter((r) => o6.has(r) || t === "array" && r === "array") : []; + } + function AW(e21, t, r) { + let { gen: n, data: i, opts: o } = e21, a = n.let("dataType", (0, Q._)`typeof ${i}`), s = n.let("coerced", (0, Q._)`undefined`); + o.coerceTypes === "array" && n.if((0, Q._)`${a} == 'object' && Array.isArray(${i}) && ${i}.length == 1`, () => n.assign(i, (0, Q._)`${i}[0]`).assign(a, (0, Q._)`typeof ${i}`).if(h0(t, i, o.strictNumbers), () => n.assign(s, i))), n.if((0, Q._)`${s} !== undefined`); + for (let u of r) (o6.has(u) || u === "array" && o.coerceTypes === "array") && c(u); + n.else(), v0(e21), n.endIf(), n.if((0, Q._)`${s} !== undefined`, () => { + n.assign(i, s), RW(e21, s); + }); + function c(u) { + switch (u) { + case "string": + n.elseIf((0, Q._)`${a} == "number" || ${a} == "boolean"`).assign(s, (0, Q._)`"" + ${i}`).elseIf((0, Q._)`${i} === null`).assign(s, (0, Q._)`""`); + return; + case "number": + n.elseIf((0, Q._)`${a} == "boolean" || ${i} === null + || (${a} == "string" && ${i} && ${i} == +${i})`).assign(s, (0, Q._)`+${i}`); + return; + case "integer": + n.elseIf((0, Q._)`${a} === "boolean" || ${i} === null + || (${a} === "string" && ${i} && ${i} == +${i} && !(${i} % 1))`).assign(s, (0, Q._)`+${i}`); + return; + case "boolean": + n.elseIf((0, Q._)`${i} === "false" || ${i} === 0 || ${i} === null`).assign(s, false).elseIf((0, Q._)`${i} === "true" || ${i} === 1`).assign(s, true); + return; + case "null": + n.elseIf((0, Q._)`${i} === "" || ${i} === 0 || ${i} === false`), n.assign(s, null); + return; + case "array": + n.elseIf((0, Q._)`${a} === "string" || ${a} === "number" + || ${a} === "boolean" || ${i} === null`).assign(s, (0, Q._)`[${i}]`); + } + } + } + function RW({ gen: e21, parentData: t, parentDataProperty: r }, n) { + e21.if((0, Q._)`${t} !== undefined`, () => e21.assign((0, Q._)`${t}[${r}]`, n)); + } + function m0(e21, t, r, n = Ta.Correct) { + let i = n === Ta.Correct ? Q.operators.EQ : Q.operators.NEQ, o; + switch (e21) { + case "null": + return (0, Q._)`${t} ${i} null`; + case "array": + o = (0, Q._)`Array.isArray(${t})`; + break; + case "object": + o = (0, Q._)`${t} && typeof ${t} == "object" && !Array.isArray(${t})`; + break; + case "integer": + o = a((0, Q._)`!(${t} % 1) && !isNaN(${t})`); + break; + case "number": + o = a(); + break; + default: + return (0, Q._)`typeof ${t} ${i} ${e21}`; + } + return n === Ta.Correct ? o : (0, Q.not)(o); + function a(s = Q.nil) { + return (0, Q.and)((0, Q._)`typeof ${t} == "number"`, s, r ? (0, Q._)`isFinite(${t})` : Q.nil); + } + } + It.checkDataType = m0; + function h0(e21, t, r, n) { + if (e21.length === 1) return m0(e21[0], t, r, n); + let i, o = (0, n6.toHash)(e21); + if (o.array && o.object) { + let a = (0, Q._)`typeof ${t} != "object"`; + i = o.null ? a : (0, Q._)`!${t} || ${a}`, delete o.null, delete o.array, delete o.object; + } else i = Q.nil; + o.number && delete o.integer; + for (let a in o) i = (0, Q.and)(i, m0(a, t, r, n)); + return i; + } + It.checkDataTypes = h0; + var CW = { message: ({ schema: e21 }) => `must be ${e21}`, params: ({ schema: e21, schemaValue: t }) => typeof e21 == "string" ? (0, Q._)`{type: ${e21}}` : (0, Q._)`{type: ${t}}` }; + function v0(e21) { + let t = NW(e21); + (0, IW.reportError)(t, CW); + } + It.reportTypeError = v0; + function NW(e21) { + let { gen: t, data: r, schema: n } = e21, i = (0, n6.schemaRefOrVal)(e21, n, "type"); + return { gen: t, keyword: "type", data: r, schema: n.type, schemaCode: i, schemaValue: i, parentSchema: n, params: {}, it: e21 }; + } +}); +var s6 = g((pf) => { + "use strict"; + Object.defineProperty(pf, "__esModule", { value: true }); + pf.assignDefaults = void 0; + var Ia = ee(), DW = le(); + function qW(e21, t) { + let { properties: r, items: n } = e21.schema; + if (t === "object" && r) for (let i in r) a6(e21, i, r[i].default); + else t === "array" && Array.isArray(n) && n.forEach((i, o) => a6(e21, o, i.default)); + } + pf.assignDefaults = qW; + function a6(e21, t, r) { + let { gen: n, compositeRule: i, data: o, opts: a } = e21; + if (r === void 0) return; + let s = (0, Ia._)`${o}${(0, Ia.getProperty)(t)}`; + if (i) { + (0, DW.checkStrictMode)(e21, `default is ignored for: ${s}`); + return; + } + let c = (0, Ia._)`${s} === undefined`; + a.useDefaults === "empty" && (c = (0, Ia._)`${c} || ${s} === null || ${s} === ""`), n.if(c, (0, Ia._)`${s} = ${(0, Ia.stringify)(r)}`); + } +}); +var Er = g((Te) => { + "use strict"; + Object.defineProperty(Te, "__esModule", { value: true }); + Te.validateUnion = Te.validateArray = Te.usePattern = Te.callValidateCode = Te.schemaProperties = Te.allSchemaProperties = Te.noPropertyInData = Te.propertyInData = Te.isOwnProperty = Te.hasPropFunc = Te.reportMissingProp = Te.checkMissingProp = Te.checkReportMissingProp = void 0; + var Ze = ee(), g0 = le(), oi = In(), UW = le(); + function LW(e21, t) { + let { gen: r, data: n, it: i } = e21; + r.if(x0(r, n, t, i.opts.ownProperties), () => { + e21.setParams({ missingProperty: (0, Ze._)`${t}` }, true), e21.error(); + }); + } + Te.checkReportMissingProp = LW; + function MW({ gen: e21, data: t, it: { opts: r } }, n, i) { + return (0, Ze.or)(...n.map((o) => (0, Ze.and)(x0(e21, t, o, r.ownProperties), (0, Ze._)`${i} = ${o}`))); + } + Te.checkMissingProp = MW; + function FW(e21, t) { + e21.setParams({ missingProperty: t }, true), e21.error(); + } + Te.reportMissingProp = FW; + function c6(e21) { + return e21.scopeValue("func", { ref: Object.prototype.hasOwnProperty, code: (0, Ze._)`Object.prototype.hasOwnProperty` }); + } + Te.hasPropFunc = c6; + function y0(e21, t, r) { + return (0, Ze._)`${c6(e21)}.call(${t}, ${r})`; + } + Te.isOwnProperty = y0; + function ZW(e21, t, r, n) { + let i = (0, Ze._)`${t}${(0, Ze.getProperty)(r)} !== undefined`; + return n ? (0, Ze._)`${i} && ${y0(e21, t, r)}` : i; + } + Te.propertyInData = ZW; + function x0(e21, t, r, n) { + let i = (0, Ze._)`${t}${(0, Ze.getProperty)(r)} === undefined`; + return n ? (0, Ze.or)(i, (0, Ze.not)(y0(e21, t, r))) : i; + } + Te.noPropertyInData = x0; + function u6(e21) { + return e21 ? Object.keys(e21).filter((t) => t !== "__proto__") : []; + } + Te.allSchemaProperties = u6; + function BW(e21, t) { + return u6(t).filter((r) => !(0, g0.alwaysValidSchema)(e21, t[r])); + } + Te.schemaProperties = BW; + function VW({ schemaCode: e21, data: t, it: { gen: r, topSchemaRef: n, schemaPath: i, errorPath: o }, it: a }, s, c, u) { + let l = u ? (0, Ze._)`${e21}, ${t}, ${n}${i}` : t, p = [[oi.default.instancePath, (0, Ze.strConcat)(oi.default.instancePath, o)], [oi.default.parentData, a.parentData], [oi.default.parentDataProperty, a.parentDataProperty], [oi.default.rootData, oi.default.rootData]]; + a.opts.dynamicRef && p.push([oi.default.dynamicAnchors, oi.default.dynamicAnchors]); + let d = (0, Ze._)`${l}, ${r.object(...p)}`; + return c !== Ze.nil ? (0, Ze._)`${s}.call(${c}, ${d})` : (0, Ze._)`${s}(${d})`; + } + Te.callValidateCode = VW; + var HW = (0, Ze._)`new RegExp`; + function JW({ gen: e21, it: { opts: t } }, r) { + let n = t.unicodeRegExp ? "u" : "", { regExp: i } = t.code, o = i(r, n); + return e21.scopeValue("pattern", { key: o.toString(), ref: o, code: (0, Ze._)`${i.code === "new RegExp" ? HW : (0, UW.useFunc)(e21, i)}(${r}, ${n})` }); + } + Te.usePattern = JW; + function GW(e21) { + let { gen: t, data: r, keyword: n, it: i } = e21, o = t.name("valid"); + if (i.allErrors) { + let s = t.let("valid", true); + return a(() => t.assign(s, false)), s; + } + return t.var(o, true), a(() => t.break()), o; + function a(s) { + let c = t.const("len", (0, Ze._)`${r}.length`); + t.forRange("i", 0, c, (u) => { + e21.subschema({ keyword: n, dataProp: u, dataPropType: g0.Type.Num }, o), t.if((0, Ze.not)(o), s); + }); + } + } + Te.validateArray = GW; + function WW(e21) { + let { gen: t, schema: r, keyword: n, it: i } = e21; + if (!Array.isArray(r)) throw new Error("ajv implementation error"); + if (r.some((c) => (0, g0.alwaysValidSchema)(i, c)) && !i.opts.unevaluated) return; + let a = t.let("valid", false), s = t.name("_valid"); + t.block(() => r.forEach((c, u) => { + let l = e21.subschema({ keyword: n, schemaProp: u, compositeRule: true }, s); + t.assign(a, (0, Ze._)`${a} || ${s}`), e21.mergeValidEvaluated(l, s) || t.if((0, Ze.not)(a)); + })), e21.result(a, () => e21.reset(), () => e21.error(true)); + } + Te.validateUnion = WW; +}); +var d6 = g((an) => { + "use strict"; + Object.defineProperty(an, "__esModule", { value: true }); + an.validateKeywordUsage = an.validSchemaType = an.funcKeywordCode = an.macroKeywordCode = void 0; + var Zt = ee(), Ki = In(), KW = Er(), XW = Su(); + function YW(e21, t) { + let { gen: r, keyword: n, schema: i, parentSchema: o, it: a } = e21, s = t.macro.call(a.self, i, o, a), c = p6(r, n, s); + a.opts.validateSchema !== false && a.self.validateSchema(s, true); + let u = r.name("valid"); + e21.subschema({ schema: s, schemaPath: Zt.nil, errSchemaPath: `${a.errSchemaPath}/${n}`, topSchemaRef: c, compositeRule: true }, u), e21.pass(u, () => e21.error(true)); + } + an.macroKeywordCode = YW; + function QW(e21, t) { + var r; + let { gen: n, keyword: i, schema: o, parentSchema: a, $data: s, it: c } = e21; + tK(c, t); + let u = !s && t.compile ? t.compile.call(c.self, o, a, c) : t.validate, l = p6(n, i, u), p = n.let("valid"); + e21.block$data(p, d), e21.ok((r = t.valid) !== null && r !== void 0 ? r : p); + function d() { + if (t.errors === false) h(), t.modifying && l6(e21), v(() => e21.error()); + else { + let y = t.async ? f() : m(); + t.modifying && l6(e21), v(() => eK(e21, y)); + } + } + function f() { + let y = n.let("ruleErrs", null); + return n.try(() => h((0, Zt._)`await `), (x) => n.assign(p, false).if((0, Zt._)`${x} instanceof ${c.ValidationError}`, () => n.assign(y, (0, Zt._)`${x}.errors`), () => n.throw(x))), y; + } + function m() { + let y = (0, Zt._)`${l}.errors`; + return n.assign(y, null), h(Zt.nil), y; + } + function h(y = t.async ? (0, Zt._)`await ` : Zt.nil) { + let x = c.opts.passContext ? Ki.default.this : Ki.default.self, w = !("compile" in t && !s || t.schema === false); + n.assign(p, (0, Zt._)`${y}${(0, KW.callValidateCode)(e21, l, x, w)}`, t.modifying); + } + function v(y) { + var x; + n.if((0, Zt.not)((x = t.valid) !== null && x !== void 0 ? x : p), y); + } + } + an.funcKeywordCode = QW; + function l6(e21) { + let { gen: t, data: r, it: n } = e21; + t.if(n.parentData, () => t.assign(r, (0, Zt._)`${n.parentData}[${n.parentDataProperty}]`)); + } + function eK(e21, t) { + let { gen: r } = e21; + r.if((0, Zt._)`Array.isArray(${t})`, () => { + r.assign(Ki.default.vErrors, (0, Zt._)`${Ki.default.vErrors} === null ? ${t} : ${Ki.default.vErrors}.concat(${t})`).assign(Ki.default.errors, (0, Zt._)`${Ki.default.vErrors}.length`), (0, XW.extendErrors)(e21); + }, () => e21.error()); + } + function tK({ schemaEnv: e21 }, t) { + if (t.async && !e21.$async) throw new Error("async keyword in sync schema"); + } + function p6(e21, t, r) { + if (r === void 0) throw new Error(`keyword "${t}" failed to compile`); + return e21.scopeValue("keyword", typeof r == "function" ? { ref: r } : { ref: r, code: (0, Zt.stringify)(r) }); + } + function rK(e21, t, r = false) { + return !t.length || t.some((n) => n === "array" ? Array.isArray(e21) : n === "object" ? e21 && typeof e21 == "object" && !Array.isArray(e21) : typeof e21 == n || r && typeof e21 > "u"); + } + an.validSchemaType = rK; + function nK({ schema: e21, opts: t, self: r, errSchemaPath: n }, i, o) { + if (Array.isArray(i.keyword) ? !i.keyword.includes(o) : i.keyword !== o) throw new Error("ajv implementation error"); + let a = i.dependencies; + if (a?.some((s) => !Object.prototype.hasOwnProperty.call(e21, s))) throw new Error(`parent schema must have dependencies of ${o}: ${a.join(",")}`); + if (i.validateSchema && !i.validateSchema(e21[o])) { + let c = `keyword "${o}" value is invalid at path "${n}": ` + r.errorsText(i.validateSchema.errors); + if (t.validateSchema === "log") r.logger.error(c); + else throw new Error(c); + } + } + an.validateKeywordUsage = nK; +}); +var m6 = g((ai) => { + "use strict"; + Object.defineProperty(ai, "__esModule", { value: true }); + ai.extendSubschemaMode = ai.extendSubschemaData = ai.getSubschema = void 0; + var sn = ee(), f6 = le(); + function iK(e21, { keyword: t, schemaProp: r, schema: n, schemaPath: i, errSchemaPath: o, topSchemaRef: a }) { + if (t !== void 0 && n !== void 0) throw new Error('both "keyword" and "schema" passed, only one allowed'); + if (t !== void 0) { + let s = e21.schema[t]; + return r === void 0 ? { schema: s, schemaPath: (0, sn._)`${e21.schemaPath}${(0, sn.getProperty)(t)}`, errSchemaPath: `${e21.errSchemaPath}/${t}` } : { schema: s[r], schemaPath: (0, sn._)`${e21.schemaPath}${(0, sn.getProperty)(t)}${(0, sn.getProperty)(r)}`, errSchemaPath: `${e21.errSchemaPath}/${t}/${(0, f6.escapeFragment)(r)}` }; + } + if (n !== void 0) { + if (i === void 0 || o === void 0 || a === void 0) throw new Error('"schemaPath", "errSchemaPath" and "topSchemaRef" are required with "schema"'); + return { schema: n, schemaPath: i, topSchemaRef: a, errSchemaPath: o }; + } + throw new Error('either "keyword" or "schema" must be passed'); + } + ai.getSubschema = iK; + function oK(e21, t, { dataProp: r, dataPropType: n, data: i, dataTypes: o, propertyName: a }) { + if (i !== void 0 && r !== void 0) throw new Error('both "data" and "dataProp" passed, only one allowed'); + let { gen: s } = t; + if (r !== void 0) { + let { errorPath: u, dataPathArr: l, opts: p } = t, d = s.let("data", (0, sn._)`${t.data}${(0, sn.getProperty)(r)}`, true); + c(d), e21.errorPath = (0, sn.str)`${u}${(0, f6.getErrorPath)(r, n, p.jsPropertySyntax)}`, e21.parentDataProperty = (0, sn._)`${r}`, e21.dataPathArr = [...l, e21.parentDataProperty]; + } + if (i !== void 0) { + let u = i instanceof sn.Name ? i : s.let("data", i, true); + c(u), a !== void 0 && (e21.propertyName = a); + } + o && (e21.dataTypes = o); + function c(u) { + e21.data = u, e21.dataLevel = t.dataLevel + 1, e21.dataTypes = [], t.definedProperties = /* @__PURE__ */ new Set(), e21.parentData = t.data, e21.dataNames = [...t.dataNames, u]; + } + } + ai.extendSubschemaData = oK; + function aK(e21, { jtdDiscriminator: t, jtdMetadata: r, compositeRule: n, createErrors: i, allErrors: o }) { + n !== void 0 && (e21.compositeRule = n), i !== void 0 && (e21.createErrors = i), o !== void 0 && (e21.allErrors = o), e21.jtdDiscriminator = t, e21.jtdMetadata = r; + } + ai.extendSubschemaMode = aK; +}); +var b0 = g((Pxe, h6) => { + "use strict"; + h6.exports = function e21(t, r) { + if (t === r) return true; + if (t && r && typeof t == "object" && typeof r == "object") { + if (t.constructor !== r.constructor) return false; + var n, i, o; + if (Array.isArray(t)) { + if (n = t.length, n != r.length) return false; + for (i = n; i-- !== 0; ) if (!e21(t[i], r[i])) return false; + return true; + } + if (t.constructor === RegExp) return t.source === r.source && t.flags === r.flags; + if (t.valueOf !== Object.prototype.valueOf) return t.valueOf() === r.valueOf(); + if (t.toString !== Object.prototype.toString) return t.toString() === r.toString(); + if (o = Object.keys(t), n = o.length, n !== Object.keys(r).length) return false; + for (i = n; i-- !== 0; ) if (!Object.prototype.hasOwnProperty.call(r, o[i])) return false; + for (i = n; i-- !== 0; ) { + var a = o[i]; + if (!e21(t[a], r[a])) return false; + } + return true; + } + return t !== t && r !== r; + }; +}); +var g6 = g((jxe, v6) => { + "use strict"; + var si = v6.exports = function(e21, t, r) { + typeof t == "function" && (r = t, t = {}), r = t.cb || r; + var n = typeof r == "function" ? r : r.pre || function() { + }, i = r.post || function() { + }; + df(t, n, i, e21, "", e21); + }; + si.keywords = { additionalItems: true, items: true, contains: true, additionalProperties: true, propertyNames: true, not: true, if: true, then: true, else: true }; + si.arrayKeywords = { items: true, allOf: true, anyOf: true, oneOf: true }; + si.propsKeywords = { $defs: true, definitions: true, properties: true, patternProperties: true, dependencies: true }; + si.skipKeywords = { default: true, enum: true, const: true, required: true, maximum: true, minimum: true, exclusiveMaximum: true, exclusiveMinimum: true, multipleOf: true, maxLength: true, minLength: true, pattern: true, format: true, maxItems: true, minItems: true, uniqueItems: true, maxProperties: true, minProperties: true }; + function df(e21, t, r, n, i, o, a, s, c, u) { + if (n && typeof n == "object" && !Array.isArray(n)) { + t(n, i, o, a, s, c, u); + for (var l in n) { + var p = n[l]; + if (Array.isArray(p)) { + if (l in si.arrayKeywords) for (var d = 0; d < p.length; d++) df(e21, t, r, p[d], i + "/" + l + "/" + d, o, i, l, n, d); + } else if (l in si.propsKeywords) { + if (p && typeof p == "object") for (var f in p) df(e21, t, r, p[f], i + "/" + l + "/" + sK(f), o, i, l, n, f); + } else (l in si.keywords || e21.allKeys && !(l in si.skipKeywords)) && df(e21, t, r, p, i + "/" + l, o, i, l, n); + } + r(n, i, o, a, s, c, u); + } + } + function sK(e21) { + return e21.replace(/~/g, "~0").replace(/\//g, "~1"); + } +}); +var Eu = g((er) => { + "use strict"; + Object.defineProperty(er, "__esModule", { value: true }); + er.getSchemaRefs = er.resolveUrl = er.normalizeId = er._getFullPath = er.getFullPath = er.inlineRef = void 0; + var cK = le(), uK = b0(), lK = g6(), pK = /* @__PURE__ */ new Set(["type", "format", "pattern", "maxLength", "minLength", "maxProperties", "minProperties", "maxItems", "minItems", "maximum", "minimum", "uniqueItems", "multipleOf", "required", "enum", "const"]); + function dK(e21, t = true) { + return typeof e21 == "boolean" ? true : t === true ? !_0(e21) : t ? y6(e21) <= t : false; + } + er.inlineRef = dK; + var fK = /* @__PURE__ */ new Set(["$ref", "$recursiveRef", "$recursiveAnchor", "$dynamicRef", "$dynamicAnchor"]); + function _0(e21) { + for (let t in e21) { + if (fK.has(t)) return true; + let r = e21[t]; + if (Array.isArray(r) && r.some(_0) || typeof r == "object" && _0(r)) return true; + } + return false; + } + function y6(e21) { + let t = 0; + for (let r in e21) { + if (r === "$ref") return 1 / 0; + if (t++, !pK.has(r) && (typeof e21[r] == "object" && (0, cK.eachItem)(e21[r], (n) => t += y6(n)), t === 1 / 0)) return 1 / 0; + } + return t; + } + function x6(e21, t = "", r) { + r !== false && (t = za(t)); + let n = e21.parse(t); + return b6(e21, n); + } + er.getFullPath = x6; + function b6(e21, t) { + return e21.serialize(t).split("#")[0] + "#"; + } + er._getFullPath = b6; + var mK = /#\/?$/; + function za(e21) { + return e21 ? e21.replace(mK, "") : ""; + } + er.normalizeId = za; + function hK(e21, t, r) { + return r = za(r), e21.resolve(t, r); + } + er.resolveUrl = hK; + var vK = /^[a-z_][-a-z0-9._]*$/i; + function gK(e21, t) { + if (typeof e21 == "boolean") return {}; + let { schemaId: r, uriResolver: n } = this.opts, i = za(e21[r] || t), o = { "": i }, a = x6(n, i, false), s = {}, c = /* @__PURE__ */ new Set(); + return lK(e21, { allKeys: true }, (p, d, f, m) => { + if (m === void 0) return; + let h = a + d, v = o[m]; + typeof p[r] == "string" && (v = y.call(this, p[r])), x.call(this, p.$anchor), x.call(this, p.$dynamicAnchor), o[d] = v; + function y(w) { + let S = this.opts.uriResolver.resolve; + if (w = za(v ? S(v, w) : w), c.has(w)) throw l(w); + c.add(w); + let k = this.refs[w]; + return typeof k == "string" && (k = this.refs[k]), typeof k == "object" ? u(p, k.schema, w) : w !== za(h) && (w[0] === "#" ? (u(p, s[w], w), s[w] = p) : this.refs[w] = h), w; + } + function x(w) { + if (typeof w == "string") { + if (!vK.test(w)) throw new Error(`invalid anchor "${w}"`); + y.call(this, `#${w}`); + } + } + }), s; + function u(p, d, f) { + if (d !== void 0 && !uK(p, d)) throw l(f); + } + function l(p) { + return new Error(`reference "${p}" resolves to more than one schema`); + } + } + er.getSchemaRefs = gK; +}); +var Iu = g((ci) => { + "use strict"; + Object.defineProperty(ci, "__esModule", { value: true }); + ci.getData = ci.KeywordCxt = ci.validateFunctionCode = void 0; + var k6 = e6(), _6 = ku(), $0 = f0(), ff = ku(), yK = s6(), Tu = d6(), w0 = m6(), U = ee(), J = In(), xK = Eu(), zn = le(), Ou = Su(); + function bK(e21) { + if (T6(e21) && (I6(e21), O6(e21))) { + $K(e21); + return; + } + E6(e21, () => (0, k6.topBoolOrEmptySchema)(e21)); + } + ci.validateFunctionCode = bK; + function E6({ gen: e21, validateName: t, schema: r, schemaEnv: n, opts: i }, o) { + i.code.es5 ? e21.func(t, (0, U._)`${J.default.data}, ${J.default.valCxt}`, n.$async, () => { + e21.code((0, U._)`"use strict"; ${w6(r, i)}`), wK(e21, i), e21.code(o); + }) : e21.func(t, (0, U._)`${J.default.data}, ${_K(i)}`, n.$async, () => e21.code(w6(r, i)).code(o)); + } + function _K(e21) { + return (0, U._)`{${J.default.instancePath}="", ${J.default.parentData}, ${J.default.parentDataProperty}, ${J.default.rootData}=${J.default.data}${e21.dynamicRef ? (0, U._)`, ${J.default.dynamicAnchors}={}` : U.nil}}={}`; + } + function wK(e21, t) { + e21.if(J.default.valCxt, () => { + e21.var(J.default.instancePath, (0, U._)`${J.default.valCxt}.${J.default.instancePath}`), e21.var(J.default.parentData, (0, U._)`${J.default.valCxt}.${J.default.parentData}`), e21.var(J.default.parentDataProperty, (0, U._)`${J.default.valCxt}.${J.default.parentDataProperty}`), e21.var(J.default.rootData, (0, U._)`${J.default.valCxt}.${J.default.rootData}`), t.dynamicRef && e21.var(J.default.dynamicAnchors, (0, U._)`${J.default.valCxt}.${J.default.dynamicAnchors}`); + }, () => { + e21.var(J.default.instancePath, (0, U._)`""`), e21.var(J.default.parentData, (0, U._)`undefined`), e21.var(J.default.parentDataProperty, (0, U._)`undefined`), e21.var(J.default.rootData, J.default.data), t.dynamicRef && e21.var(J.default.dynamicAnchors, (0, U._)`{}`); + }); + } + function $K(e21) { + let { schema: t, opts: r, gen: n } = e21; + E6(e21, () => { + r.$comment && t.$comment && P6(e21), TK(e21), n.let(J.default.vErrors, null), n.let(J.default.errors, 0), r.unevaluated && SK(e21), z6(e21), PK(e21); + }); + } + function SK(e21) { + let { gen: t, validateName: r } = e21; + e21.evaluated = t.const("evaluated", (0, U._)`${r}.evaluated`), t.if((0, U._)`${e21.evaluated}.dynamicProps`, () => t.assign((0, U._)`${e21.evaluated}.props`, (0, U._)`undefined`)), t.if((0, U._)`${e21.evaluated}.dynamicItems`, () => t.assign((0, U._)`${e21.evaluated}.items`, (0, U._)`undefined`)); + } + function w6(e21, t) { + let r = typeof e21 == "object" && e21[t.schemaId]; + return r && (t.code.source || t.code.process) ? (0, U._)`/*# sourceURL=${r} */` : U.nil; + } + function kK(e21, t) { + if (T6(e21) && (I6(e21), O6(e21))) { + EK(e21, t); + return; + } + (0, k6.boolOrEmptySchema)(e21, t); + } + function O6({ schema: e21, self: t }) { + if (typeof e21 == "boolean") return !e21; + for (let r in e21) if (t.RULES.all[r]) return true; + return false; + } + function T6(e21) { + return typeof e21.schema != "boolean"; + } + function EK(e21, t) { + let { schema: r, gen: n, opts: i } = e21; + i.$comment && r.$comment && P6(e21), IK(e21), zK(e21); + let o = n.const("_errs", J.default.errors); + z6(e21, o), n.var(t, (0, U._)`${o} === ${J.default.errors}`); + } + function I6(e21) { + (0, zn.checkUnknownRules)(e21), OK(e21); + } + function z6(e21, t) { + if (e21.opts.jtd) return $6(e21, [], false, t); + let r = (0, _6.getSchemaTypes)(e21.schema), n = (0, _6.coerceAndCheckDataType)(e21, r); + $6(e21, r, !n, t); + } + function OK(e21) { + let { schema: t, errSchemaPath: r, opts: n, self: i } = e21; + t.$ref && n.ignoreKeywordsWithRef && (0, zn.schemaHasRulesButRef)(t, i.RULES) && i.logger.warn(`$ref: keywords ignored in schema at path "${r}"`); + } + function TK(e21) { + let { schema: t, opts: r } = e21; + t.default !== void 0 && r.useDefaults && r.strictSchema && (0, zn.checkStrictMode)(e21, "default is ignored in the schema root"); + } + function IK(e21) { + let t = e21.schema[e21.opts.schemaId]; + t && (e21.baseId = (0, xK.resolveUrl)(e21.opts.uriResolver, e21.baseId, t)); + } + function zK(e21) { + if (e21.schema.$async && !e21.schemaEnv.$async) throw new Error("async schema in sync schema"); + } + function P6({ gen: e21, schemaEnv: t, schema: r, errSchemaPath: n, opts: i }) { + let o = r.$comment; + if (i.$comment === true) e21.code((0, U._)`${J.default.self}.logger.log(${o})`); + else if (typeof i.$comment == "function") { + let a = (0, U.str)`${n}/$comment`, s = e21.scopeValue("root", { ref: t.root }); + e21.code((0, U._)`${J.default.self}.opts.$comment(${o}, ${a}, ${s}.schema)`); + } + } + function PK(e21) { + let { gen: t, schemaEnv: r, validateName: n, ValidationError: i, opts: o } = e21; + r.$async ? t.if((0, U._)`${J.default.errors} === 0`, () => t.return(J.default.data), () => t.throw((0, U._)`new ${i}(${J.default.vErrors})`)) : (t.assign((0, U._)`${n}.errors`, J.default.vErrors), o.unevaluated && jK(e21), t.return((0, U._)`${J.default.errors} === 0`)); + } + function jK({ gen: e21, evaluated: t, props: r, items: n }) { + r instanceof U.Name && e21.assign((0, U._)`${t}.props`, r), n instanceof U.Name && e21.assign((0, U._)`${t}.items`, n); + } + function $6(e21, t, r, n) { + let { gen: i, schema: o, data: a, allErrors: s, opts: c, self: u } = e21, { RULES: l } = u; + if (o.$ref && (c.ignoreKeywordsWithRef || !(0, zn.schemaHasRulesButRef)(o, l))) { + i.block(() => A6(e21, "$ref", l.all.$ref.definition)); + return; + } + c.jtd || AK(e21, t), i.block(() => { + for (let d of l.rules) p(d); + p(l.post); + }); + function p(d) { + (0, $0.shouldUseGroup)(o, d) && (d.type ? (i.if((0, ff.checkDataType)(d.type, a, c.strictNumbers)), S6(e21, d), t.length === 1 && t[0] === d.type && r && (i.else(), (0, ff.reportTypeError)(e21)), i.endIf()) : S6(e21, d), s || i.if((0, U._)`${J.default.errors} === ${n || 0}`)); + } + } + function S6(e21, t) { + let { gen: r, schema: n, opts: { useDefaults: i } } = e21; + i && (0, yK.assignDefaults)(e21, t.type), r.block(() => { + for (let o of t.rules) (0, $0.shouldUseRule)(n, o) && A6(e21, o.keyword, o.definition, t.type); + }); + } + function AK(e21, t) { + e21.schemaEnv.meta || !e21.opts.strictTypes || (RK(e21, t), e21.opts.allowUnionTypes || CK(e21, t), NK(e21, e21.dataTypes)); + } + function RK(e21, t) { + if (t.length) { + if (!e21.dataTypes.length) { + e21.dataTypes = t; + return; + } + t.forEach((r) => { + j6(e21.dataTypes, r) || S0(e21, `type "${r}" not allowed by context "${e21.dataTypes.join(",")}"`); + }), qK(e21, t); + } + } + function CK(e21, t) { + t.length > 1 && !(t.length === 2 && t.includes("null")) && S0(e21, "use allowUnionTypes to allow union type keyword"); + } + function NK(e21, t) { + let r = e21.self.RULES.all; + for (let n in r) { + let i = r[n]; + if (typeof i == "object" && (0, $0.shouldUseRule)(e21.schema, i)) { + let { type: o } = i.definition; + o.length && !o.some((a) => DK(t, a)) && S0(e21, `missing type "${o.join(",")}" for keyword "${n}"`); + } + } + } + function DK(e21, t) { + return e21.includes(t) || t === "number" && e21.includes("integer"); + } + function j6(e21, t) { + return e21.includes(t) || t === "integer" && e21.includes("number"); + } + function qK(e21, t) { + let r = []; + for (let n of e21.dataTypes) j6(t, n) ? r.push(n) : t.includes("integer") && n === "number" && r.push("integer"); + e21.dataTypes = r; + } + function S0(e21, t) { + let r = e21.schemaEnv.baseId + e21.errSchemaPath; + t += ` at "${r}" (strictTypes)`, (0, zn.checkStrictMode)(e21, t, e21.opts.strictTypes); + } + var mf = class { + constructor(t, r, n) { + if ((0, Tu.validateKeywordUsage)(t, r, n), this.gen = t.gen, this.allErrors = t.allErrors, this.keyword = n, this.data = t.data, this.schema = t.schema[n], this.$data = r.$data && t.opts.$data && this.schema && this.schema.$data, this.schemaValue = (0, zn.schemaRefOrVal)(t, this.schema, n, this.$data), this.schemaType = r.schemaType, this.parentSchema = t.schema, this.params = {}, this.it = t, this.def = r, this.$data) this.schemaCode = t.gen.const("vSchema", R6(this.$data, t)); + else if (this.schemaCode = this.schemaValue, !(0, Tu.validSchemaType)(this.schema, r.schemaType, r.allowUndefined)) throw new Error(`${n} value must be ${JSON.stringify(r.schemaType)}`); + ("code" in r ? r.trackErrors : r.errors !== false) && (this.errsCount = t.gen.const("_errs", J.default.errors)); + } + result(t, r, n) { + this.failResult((0, U.not)(t), r, n); + } + failResult(t, r, n) { + this.gen.if(t), n ? n() : this.error(), r ? (this.gen.else(), r(), this.allErrors && this.gen.endIf()) : this.allErrors ? this.gen.endIf() : this.gen.else(); + } + pass(t, r) { + this.failResult((0, U.not)(t), void 0, r); + } + fail(t) { + if (t === void 0) { + this.error(), this.allErrors || this.gen.if(false); + return; + } + this.gen.if(t), this.error(), this.allErrors ? this.gen.endIf() : this.gen.else(); + } + fail$data(t) { + if (!this.$data) return this.fail(t); + let { schemaCode: r } = this; + this.fail((0, U._)`${r} !== undefined && (${(0, U.or)(this.invalid$data(), t)})`); + } + error(t, r, n) { + if (r) { + this.setParams(r), this._error(t, n), this.setParams({}); + return; + } + this._error(t, n); + } + _error(t, r) { + (t ? Ou.reportExtraError : Ou.reportError)(this, this.def.error, r); + } + $dataError() { + (0, Ou.reportError)(this, this.def.$dataError || Ou.keyword$DataError); + } + reset() { + if (this.errsCount === void 0) throw new Error('add "trackErrors" to keyword definition'); + (0, Ou.resetErrorsCount)(this.gen, this.errsCount); + } + ok(t) { + this.allErrors || this.gen.if(t); + } + setParams(t, r) { + r ? Object.assign(this.params, t) : this.params = t; + } + block$data(t, r, n = U.nil) { + this.gen.block(() => { + this.check$data(t, n), r(); + }); + } + check$data(t = U.nil, r = U.nil) { + if (!this.$data) return; + let { gen: n, schemaCode: i, schemaType: o, def: a } = this; + n.if((0, U.or)((0, U._)`${i} === undefined`, r)), t !== U.nil && n.assign(t, true), (o.length || a.validateSchema) && (n.elseIf(this.invalid$data()), this.$dataError(), t !== U.nil && n.assign(t, false)), n.else(); + } + invalid$data() { + let { gen: t, schemaCode: r, schemaType: n, def: i, it: o } = this; + return (0, U.or)(a(), s()); + function a() { + if (n.length) { + if (!(r instanceof U.Name)) throw new Error("ajv implementation error"); + let c = Array.isArray(n) ? n : [n]; + return (0, U._)`${(0, ff.checkDataTypes)(c, r, o.opts.strictNumbers, ff.DataType.Wrong)}`; + } + return U.nil; + } + function s() { + if (i.validateSchema) { + let c = t.scopeValue("validate$data", { ref: i.validateSchema }); + return (0, U._)`!${c}(${r})`; + } + return U.nil; + } + } + subschema(t, r) { + let n = (0, w0.getSubschema)(this.it, t); + (0, w0.extendSubschemaData)(n, this.it, t), (0, w0.extendSubschemaMode)(n, t); + let i = { ...this.it, ...n, items: void 0, props: void 0 }; + return kK(i, r), i; + } + mergeEvaluated(t, r) { + let { it: n, gen: i } = this; + n.opts.unevaluated && (n.props !== true && t.props !== void 0 && (n.props = zn.mergeEvaluated.props(i, t.props, n.props, r)), n.items !== true && t.items !== void 0 && (n.items = zn.mergeEvaluated.items(i, t.items, n.items, r))); + } + mergeValidEvaluated(t, r) { + let { it: n, gen: i } = this; + if (n.opts.unevaluated && (n.props !== true || n.items !== true)) return i.if(r, () => this.mergeEvaluated(t, U.Name)), true; + } + }; + ci.KeywordCxt = mf; + function A6(e21, t, r, n) { + let i = new mf(e21, r, t); + "code" in r ? r.code(i, n) : i.$data && r.validate ? (0, Tu.funcKeywordCode)(i, r) : "macro" in r ? (0, Tu.macroKeywordCode)(i, r) : (r.compile || r.validate) && (0, Tu.funcKeywordCode)(i, r); + } + var UK = /^\/(?:[^~]|~0|~1)*$/, LK = /^([0-9]+)(#|\/(?:[^~]|~0|~1)*)?$/; + function R6(e21, { dataLevel: t, dataNames: r, dataPathArr: n }) { + let i, o; + if (e21 === "") return J.default.rootData; + if (e21[0] === "/") { + if (!UK.test(e21)) throw new Error(`Invalid JSON-pointer: ${e21}`); + i = e21, o = J.default.rootData; + } else { + let u = LK.exec(e21); + if (!u) throw new Error(`Invalid JSON-pointer: ${e21}`); + let l = +u[1]; + if (i = u[2], i === "#") { + if (l >= t) throw new Error(c("property/index", l)); + return n[t - l]; + } + if (l > t) throw new Error(c("data", l)); + if (o = r[t - l], !i) return o; + } + let a = o, s = i.split("/"); + for (let u of s) u && (o = (0, U._)`${o}${(0, U.getProperty)((0, zn.unescapeJsonPointer)(u))}`, a = (0, U._)`${a} && ${o}`); + return a; + function c(u, l) { + return `Cannot access ${u} ${l} levels up, current level is ${t}`; + } + } + ci.getData = R6; +}); +var hf = g((E0) => { + "use strict"; + Object.defineProperty(E0, "__esModule", { value: true }); + var k0 = class extends Error { + constructor(t) { + super("validation failed"), this.errors = t, this.ajv = this.validation = true; + } + }; + E0.default = k0; +}); +var zu = g((I0) => { + "use strict"; + Object.defineProperty(I0, "__esModule", { value: true }); + var O0 = Eu(), T0 = class extends Error { + constructor(t, r, n, i) { + super(i || `can't resolve reference ${n} from id ${r}`), this.missingRef = (0, O0.resolveUrl)(t, r, n), this.missingSchema = (0, O0.normalizeId)((0, O0.getFullPath)(t, this.missingRef)); + } + }; + I0.default = T0; +}); +var gf = g((Or) => { + "use strict"; + Object.defineProperty(Or, "__esModule", { value: true }); + Or.resolveSchema = Or.getCompilingSchema = Or.resolveRef = Or.compileSchema = Or.SchemaEnv = void 0; + var Mr = ee(), MK = hf(), Xi = In(), Fr = Eu(), C6 = le(), FK = Iu(), Pa = class { + constructor(t) { + var r; + this.refs = {}, this.dynamicAnchors = {}; + let n; + typeof t.schema == "object" && (n = t.schema), this.schema = t.schema, this.schemaId = t.schemaId, this.root = t.root || this, this.baseId = (r = t.baseId) !== null && r !== void 0 ? r : (0, Fr.normalizeId)(n?.[t.schemaId || "$id"]), this.schemaPath = t.schemaPath, this.localRefs = t.localRefs, this.meta = t.meta, this.$async = n?.$async, this.refs = {}; + } + }; + Or.SchemaEnv = Pa; + function P0(e21) { + let t = N6.call(this, e21); + if (t) return t; + let r = (0, Fr.getFullPath)(this.opts.uriResolver, e21.root.baseId), { es5: n, lines: i } = this.opts.code, { ownProperties: o } = this.opts, a = new Mr.CodeGen(this.scope, { es5: n, lines: i, ownProperties: o }), s; + e21.$async && (s = a.scopeValue("Error", { ref: MK.default, code: (0, Mr._)`require("ajv/dist/runtime/validation_error").default` })); + let c = a.scopeName("validate"); + e21.validateName = c; + let u = { gen: a, allErrors: this.opts.allErrors, data: Xi.default.data, parentData: Xi.default.parentData, parentDataProperty: Xi.default.parentDataProperty, dataNames: [Xi.default.data], dataPathArr: [Mr.nil], dataLevel: 0, dataTypes: [], definedProperties: /* @__PURE__ */ new Set(), topSchemaRef: a.scopeValue("schema", this.opts.code.source === true ? { ref: e21.schema, code: (0, Mr.stringify)(e21.schema) } : { ref: e21.schema }), validateName: c, ValidationError: s, schema: e21.schema, schemaEnv: e21, rootId: r, baseId: e21.baseId || r, schemaPath: Mr.nil, errSchemaPath: e21.schemaPath || (this.opts.jtd ? "" : "#"), errorPath: (0, Mr._)`""`, opts: this.opts, self: this }, l; + try { + this._compilations.add(e21), (0, FK.validateFunctionCode)(u), a.optimize(this.opts.code.optimize); + let p = a.toString(); + l = `${a.scopeRefs(Xi.default.scope)}return ${p}`, this.opts.code.process && (l = this.opts.code.process(l, e21)); + let f = new Function(`${Xi.default.self}`, `${Xi.default.scope}`, l)(this, this.scope.get()); + if (this.scope.value(c, { ref: f }), f.errors = null, f.schema = e21.schema, f.schemaEnv = e21, e21.$async && (f.$async = true), this.opts.code.source === true && (f.source = { validateName: c, validateCode: p, scopeValues: a._values }), this.opts.unevaluated) { + let { props: m, items: h } = u; + f.evaluated = { props: m instanceof Mr.Name ? void 0 : m, items: h instanceof Mr.Name ? void 0 : h, dynamicProps: m instanceof Mr.Name, dynamicItems: h instanceof Mr.Name }, f.source && (f.source.evaluated = (0, Mr.stringify)(f.evaluated)); + } + return e21.validate = f, e21; + } catch (p) { + throw delete e21.validate, delete e21.validateName, l && this.logger.error("Error compiling schema, function code:", l), p; + } finally { + this._compilations.delete(e21); + } + } + Or.compileSchema = P0; + function ZK(e21, t, r) { + var n; + r = (0, Fr.resolveUrl)(this.opts.uriResolver, t, r); + let i = e21.refs[r]; + if (i) return i; + let o = HK.call(this, e21, r); + if (o === void 0) { + let a = (n = e21.localRefs) === null || n === void 0 ? void 0 : n[r], { schemaId: s } = this.opts; + a && (o = new Pa({ schema: a, schemaId: s, root: e21, baseId: t })); + } + if (o !== void 0) return e21.refs[r] = BK.call(this, o); + } + Or.resolveRef = ZK; + function BK(e21) { + return (0, Fr.inlineRef)(e21.schema, this.opts.inlineRefs) ? e21.schema : e21.validate ? e21 : P0.call(this, e21); + } + function N6(e21) { + for (let t of this._compilations) if (VK(t, e21)) return t; + } + Or.getCompilingSchema = N6; + function VK(e21, t) { + return e21.schema === t.schema && e21.root === t.root && e21.baseId === t.baseId; + } + function HK(e21, t) { + let r; + for (; typeof (r = this.refs[t]) == "string"; ) t = r; + return r || this.schemas[t] || vf.call(this, e21, t); + } + function vf(e21, t) { + let r = this.opts.uriResolver.parse(t), n = (0, Fr._getFullPath)(this.opts.uriResolver, r), i = (0, Fr.getFullPath)(this.opts.uriResolver, e21.baseId, void 0); + if (Object.keys(e21.schema).length > 0 && n === i) return z0.call(this, r, e21); + let o = (0, Fr.normalizeId)(n), a = this.refs[o] || this.schemas[o]; + if (typeof a == "string") { + let s = vf.call(this, e21, a); + return typeof s?.schema != "object" ? void 0 : z0.call(this, r, s); + } + if (typeof a?.schema == "object") { + if (a.validate || P0.call(this, a), o === (0, Fr.normalizeId)(t)) { + let { schema: s } = a, { schemaId: c } = this.opts, u = s[c]; + return u && (i = (0, Fr.resolveUrl)(this.opts.uriResolver, i, u)), new Pa({ schema: s, schemaId: c, root: e21, baseId: i }); + } + return z0.call(this, r, a); + } + } + Or.resolveSchema = vf; + var JK = /* @__PURE__ */ new Set(["properties", "patternProperties", "enum", "dependencies", "definitions"]); + function z0(e21, { baseId: t, schema: r, root: n }) { + var i; + if (((i = e21.fragment) === null || i === void 0 ? void 0 : i[0]) !== "/") return; + for (let s of e21.fragment.slice(1).split("/")) { + if (typeof r == "boolean") return; + let c = r[(0, C6.unescapeFragment)(s)]; + if (c === void 0) return; + r = c; + let u = typeof r == "object" && r[this.opts.schemaId]; + !JK.has(s) && u && (t = (0, Fr.resolveUrl)(this.opts.uriResolver, t, u)); + } + let o; + if (typeof r != "boolean" && r.$ref && !(0, C6.schemaHasRulesButRef)(r, this.RULES)) { + let s = (0, Fr.resolveUrl)(this.opts.uriResolver, t, r.$ref); + o = vf.call(this, n, s); + } + let { schemaId: a } = this.opts; + if (o = o || new Pa({ schema: r, schemaId: a, root: n, baseId: t }), o.schema !== o.root.schema) return o; + } +}); +var D6 = g((qxe, GK) => { + GK.exports = { $id: "https://raw.githubusercontent.com/ajv-validator/ajv/master/lib/refs/data.json#", description: "Meta-schema for $data reference (JSON AnySchema extension proposal)", type: "object", required: ["$data"], properties: { $data: { type: "string", anyOf: [{ format: "relative-json-pointer" }, { format: "json-pointer" }] } }, additionalProperties: false }; +}); +var U6 = g((Uxe, q6) => { + "use strict"; + var WK = { 0: 0, 1: 1, 2: 2, 3: 3, 4: 4, 5: 5, 6: 6, 7: 7, 8: 8, 9: 9, a: 10, A: 10, b: 11, B: 11, c: 12, C: 12, d: 13, D: 13, e: 14, E: 14, f: 15, F: 15 }; + q6.exports = { HEX: WK }; +}); +var J6 = g((Lxe, H6) => { + "use strict"; + var { HEX: KK } = U6(), XK = /^(?:(?:25[0-5]|2[0-4]\d|1\d{2}|[1-9]\d|\d)\.){3}(?:25[0-5]|2[0-4]\d|1\d{2}|[1-9]\d|\d)$/u; + function Z6(e21) { + if (V6(e21, ".") < 3) return { host: e21, isIPV4: false }; + let t = e21.match(XK) || [], [r] = t; + return r ? { host: QK(r, "."), isIPV4: true } : { host: e21, isIPV4: false }; + } + function j0(e21, t = false) { + let r = "", n = true; + for (let i of e21) { + if (KK[i] === void 0) return; + i !== "0" && n === true && (n = false), n || (r += i); + } + return t && r.length === 0 && (r = "0"), r; + } + function YK(e21) { + let t = 0, r = { error: false, address: "", zone: "" }, n = [], i = [], o = false, a = false, s = false; + function c() { + if (i.length) { + if (o === false) { + let u = j0(i); + if (u !== void 0) n.push(u); + else return r.error = true, false; + } + i.length = 0; + } + return true; + } + for (let u = 0; u < e21.length; u++) { + let l = e21[u]; + if (!(l === "[" || l === "]")) if (l === ":") { + if (a === true && (s = true), !c()) break; + if (t++, n.push(":"), t > 7) { + r.error = true; + break; + } + u - 1 >= 0 && e21[u - 1] === ":" && (a = true); + continue; + } else if (l === "%") { + if (!c()) break; + o = true; + } else { + i.push(l); + continue; + } + } + return i.length && (o ? r.zone = i.join("") : s ? n.push(i.join("")) : n.push(j0(i))), r.address = n.join(""), r; + } + function B6(e21) { + if (V6(e21, ":") < 2) return { host: e21, isIPV6: false }; + let t = YK(e21); + if (t.error) return { host: e21, isIPV6: false }; + { + let r = t.address, n = t.address; + return t.zone && (r += "%" + t.zone, n += "%25" + t.zone), { host: r, escapedHost: n, isIPV6: true }; + } + } + function QK(e21, t) { + let r = "", n = true, i = e21.length; + for (let o = 0; o < i; o++) { + let a = e21[o]; + a === "0" && n ? (o + 1 <= i && e21[o + 1] === t || o + 1 === i) && (r += a, n = false) : (a === t ? n = true : n = false, r += a); + } + return r; + } + function V6(e21, t) { + let r = 0; + for (let n = 0; n < e21.length; n++) e21[n] === t && r++; + return r; + } + var L6 = /^\.\.?\//u, M6 = /^\/\.(?:\/|$)/u, F6 = /^\/\.\.(?:\/|$)/u, eX = /^\/?(?:.|\n)*?(?=\/|$)/u; + function tX(e21) { + let t = []; + for (; e21.length; ) if (e21.match(L6)) e21 = e21.replace(L6, ""); + else if (e21.match(M6)) e21 = e21.replace(M6, "/"); + else if (e21.match(F6)) e21 = e21.replace(F6, "/"), t.pop(); + else if (e21 === "." || e21 === "..") e21 = ""; + else { + let r = e21.match(eX); + if (r) { + let n = r[0]; + e21 = e21.slice(n.length), t.push(n); + } else throw new Error("Unexpected dot segment condition"); + } + return t.join(""); + } + function rX(e21, t) { + let r = t !== true ? escape : unescape; + return e21.scheme !== void 0 && (e21.scheme = r(e21.scheme)), e21.userinfo !== void 0 && (e21.userinfo = r(e21.userinfo)), e21.host !== void 0 && (e21.host = r(e21.host)), e21.path !== void 0 && (e21.path = r(e21.path)), e21.query !== void 0 && (e21.query = r(e21.query)), e21.fragment !== void 0 && (e21.fragment = r(e21.fragment)), e21; + } + function nX(e21) { + let t = []; + if (e21.userinfo !== void 0 && (t.push(e21.userinfo), t.push("@")), e21.host !== void 0) { + let r = unescape(e21.host), n = Z6(r); + if (n.isIPV4) r = n.host; + else { + let i = B6(n.host); + i.isIPV6 === true ? r = `[${i.escapedHost}]` : r = e21.host; + } + t.push(r); + } + return (typeof e21.port == "number" || typeof e21.port == "string") && (t.push(":"), t.push(String(e21.port))), t.length ? t.join("") : void 0; + } + H6.exports = { recomposeAuthority: nX, normalizeComponentEncoding: rX, removeDotSegments: tX, normalizeIPv4: Z6, normalizeIPv6: B6, stringArrayToHexStripped: j0 }; +}); +var Q6 = g((Mxe, Y6) => { + "use strict"; + var iX = /^[\da-f]{8}-[\da-f]{4}-[\da-f]{4}-[\da-f]{4}-[\da-f]{12}$/iu, oX = /([\da-z][\d\-a-z]{0,31}):((?:[\w!$'()*+,\-.:;=@]|%[\da-f]{2})+)/iu; + function G6(e21) { + return typeof e21.secure == "boolean" ? e21.secure : String(e21.scheme).toLowerCase() === "wss"; + } + function W6(e21) { + return e21.host || (e21.error = e21.error || "HTTP URIs must have a host."), e21; + } + function K6(e21) { + let t = String(e21.scheme).toLowerCase() === "https"; + return (e21.port === (t ? 443 : 80) || e21.port === "") && (e21.port = void 0), e21.path || (e21.path = "/"), e21; + } + function aX(e21) { + return e21.secure = G6(e21), e21.resourceName = (e21.path || "/") + (e21.query ? "?" + e21.query : ""), e21.path = void 0, e21.query = void 0, e21; + } + function sX(e21) { + if ((e21.port === (G6(e21) ? 443 : 80) || e21.port === "") && (e21.port = void 0), typeof e21.secure == "boolean" && (e21.scheme = e21.secure ? "wss" : "ws", e21.secure = void 0), e21.resourceName) { + let [t, r] = e21.resourceName.split("?"); + e21.path = t && t !== "/" ? t : void 0, e21.query = r, e21.resourceName = void 0; + } + return e21.fragment = void 0, e21; + } + function cX(e21, t) { + if (!e21.path) return e21.error = "URN can not be parsed", e21; + let r = e21.path.match(oX); + if (r) { + let n = t.scheme || e21.scheme || "urn"; + e21.nid = r[1].toLowerCase(), e21.nss = r[2]; + let i = `${n}:${t.nid || e21.nid}`, o = A0[i]; + e21.path = void 0, o && (e21 = o.parse(e21, t)); + } else e21.error = e21.error || "URN can not be parsed."; + return e21; + } + function uX(e21, t) { + let r = t.scheme || e21.scheme || "urn", n = e21.nid.toLowerCase(), i = `${r}:${t.nid || n}`, o = A0[i]; + o && (e21 = o.serialize(e21, t)); + let a = e21, s = e21.nss; + return a.path = `${n || t.nid}:${s}`, t.skipEscape = true, a; + } + function lX(e21, t) { + let r = e21; + return r.uuid = r.nss, r.nss = void 0, !t.tolerant && (!r.uuid || !iX.test(r.uuid)) && (r.error = r.error || "UUID is not valid."), r; + } + function pX(e21) { + let t = e21; + return t.nss = (e21.uuid || "").toLowerCase(), t; + } + var X6 = { scheme: "http", domainHost: true, parse: W6, serialize: K6 }, dX = { scheme: "https", domainHost: X6.domainHost, parse: W6, serialize: K6 }, yf = { scheme: "ws", domainHost: true, parse: aX, serialize: sX }, fX = { scheme: "wss", domainHost: yf.domainHost, parse: yf.parse, serialize: yf.serialize }, mX = { scheme: "urn", parse: cX, serialize: uX, skipNormalize: true }, hX = { scheme: "urn:uuid", parse: lX, serialize: pX, skipNormalize: true }, A0 = { http: X6, https: dX, ws: yf, wss: fX, urn: mX, "urn:uuid": hX }; + Y6.exports = A0; +}); +var tj = g((Fxe, bf) => { + "use strict"; + var { normalizeIPv6: vX, normalizeIPv4: gX, removeDotSegments: Pu, recomposeAuthority: yX, normalizeComponentEncoding: xf } = J6(), R0 = Q6(); + function xX(e21, t) { + return typeof e21 == "string" ? e21 = cn(Pn(e21, t), t) : typeof e21 == "object" && (e21 = Pn(cn(e21, t), t)), e21; + } + function bX(e21, t, r) { + let n = Object.assign({ scheme: "null" }, r), i = ej(Pn(e21, n), Pn(t, n), n, true); + return cn(i, { ...n, skipEscape: true }); + } + function ej(e21, t, r, n) { + let i = {}; + return n || (e21 = Pn(cn(e21, r), r), t = Pn(cn(t, r), r)), r = r || {}, !r.tolerant && t.scheme ? (i.scheme = t.scheme, i.userinfo = t.userinfo, i.host = t.host, i.port = t.port, i.path = Pu(t.path || ""), i.query = t.query) : (t.userinfo !== void 0 || t.host !== void 0 || t.port !== void 0 ? (i.userinfo = t.userinfo, i.host = t.host, i.port = t.port, i.path = Pu(t.path || ""), i.query = t.query) : (t.path ? (t.path.charAt(0) === "/" ? i.path = Pu(t.path) : ((e21.userinfo !== void 0 || e21.host !== void 0 || e21.port !== void 0) && !e21.path ? i.path = "/" + t.path : e21.path ? i.path = e21.path.slice(0, e21.path.lastIndexOf("/") + 1) + t.path : i.path = t.path, i.path = Pu(i.path)), i.query = t.query) : (i.path = e21.path, t.query !== void 0 ? i.query = t.query : i.query = e21.query), i.userinfo = e21.userinfo, i.host = e21.host, i.port = e21.port), i.scheme = e21.scheme), i.fragment = t.fragment, i; + } + function _X(e21, t, r) { + return typeof e21 == "string" ? (e21 = unescape(e21), e21 = cn(xf(Pn(e21, r), true), { ...r, skipEscape: true })) : typeof e21 == "object" && (e21 = cn(xf(e21, true), { ...r, skipEscape: true })), typeof t == "string" ? (t = unescape(t), t = cn(xf(Pn(t, r), true), { ...r, skipEscape: true })) : typeof t == "object" && (t = cn(xf(t, true), { ...r, skipEscape: true })), e21.toLowerCase() === t.toLowerCase(); + } + function cn(e21, t) { + let r = { host: e21.host, scheme: e21.scheme, userinfo: e21.userinfo, port: e21.port, path: e21.path, query: e21.query, nid: e21.nid, nss: e21.nss, uuid: e21.uuid, fragment: e21.fragment, reference: e21.reference, resourceName: e21.resourceName, secure: e21.secure, error: "" }, n = Object.assign({}, t), i = [], o = R0[(n.scheme || r.scheme || "").toLowerCase()]; + o && o.serialize && o.serialize(r, n), r.path !== void 0 && (n.skipEscape ? r.path = unescape(r.path) : (r.path = escape(r.path), r.scheme !== void 0 && (r.path = r.path.split("%3A").join(":")))), n.reference !== "suffix" && r.scheme && i.push(r.scheme, ":"); + let a = yX(r); + if (a !== void 0 && (n.reference !== "suffix" && i.push("//"), i.push(a), r.path && r.path.charAt(0) !== "/" && i.push("/")), r.path !== void 0) { + let s = r.path; + !n.absolutePath && (!o || !o.absolutePath) && (s = Pu(s)), a === void 0 && (s = s.replace(/^\/\//u, "/%2F")), i.push(s); + } + return r.query !== void 0 && i.push("?", r.query), r.fragment !== void 0 && i.push("#", r.fragment), i.join(""); + } + var wX = Array.from({ length: 127 }, (e21, t) => /[^!"$&'()*+,\-.;=_`a-z{}~]/u.test(String.fromCharCode(t))); + function $X(e21) { + let t = 0; + for (let r = 0, n = e21.length; r < n; ++r) if (t = e21.charCodeAt(r), t > 126 || wX[t]) return true; + return false; + } + var SX = /^(?:([^#/:?]+):)?(?:\/\/((?:([^#/?@]*)@)?(\[[^#/?\]]+\]|[^#/:?]*)(?::(\d*))?))?([^#?]*)(?:\?([^#]*))?(?:#((?:.|[\n\r])*))?/u; + function Pn(e21, t) { + let r = Object.assign({}, t), n = { scheme: void 0, userinfo: void 0, host: "", port: void 0, path: "", query: void 0, fragment: void 0 }, i = e21.indexOf("%") !== -1, o = false; + r.reference === "suffix" && (e21 = (r.scheme ? r.scheme + ":" : "") + "//" + e21); + let a = e21.match(SX); + if (a) { + if (n.scheme = a[1], n.userinfo = a[3], n.host = a[4], n.port = parseInt(a[5], 10), n.path = a[6] || "", n.query = a[7], n.fragment = a[8], isNaN(n.port) && (n.port = a[5]), n.host) { + let c = gX(n.host); + if (c.isIPV4 === false) { + let u = vX(c.host); + n.host = u.host.toLowerCase(), o = u.isIPV6; + } else n.host = c.host, o = true; + } + n.scheme === void 0 && n.userinfo === void 0 && n.host === void 0 && n.port === void 0 && n.query === void 0 && !n.path ? n.reference = "same-document" : n.scheme === void 0 ? n.reference = "relative" : n.fragment === void 0 ? n.reference = "absolute" : n.reference = "uri", r.reference && r.reference !== "suffix" && r.reference !== n.reference && (n.error = n.error || "URI is not a " + r.reference + " reference."); + let s = R0[(r.scheme || n.scheme || "").toLowerCase()]; + if (!r.unicodeSupport && (!s || !s.unicodeSupport) && n.host && (r.domainHost || s && s.domainHost) && o === false && $X(n.host)) try { + n.host = URL.domainToASCII(n.host.toLowerCase()); + } catch (c) { + n.error = n.error || "Host's domain name can not be converted to ASCII: " + c; + } + (!s || s && !s.skipNormalize) && (i && n.scheme !== void 0 && (n.scheme = unescape(n.scheme)), i && n.host !== void 0 && (n.host = unescape(n.host)), n.path && (n.path = escape(unescape(n.path))), n.fragment && (n.fragment = encodeURI(decodeURIComponent(n.fragment)))), s && s.parse && s.parse(n, r); + } else n.error = n.error || "URI can not be parsed."; + return n; + } + var C0 = { SCHEMES: R0, normalize: xX, resolve: bX, resolveComponents: ej, equal: _X, serialize: cn, parse: Pn }; + bf.exports = C0; + bf.exports.default = C0; + bf.exports.fastUri = C0; +}); +var nj = g((N0) => { + "use strict"; + Object.defineProperty(N0, "__esModule", { value: true }); + var rj = tj(); + rj.code = 'require("ajv/dist/runtime/uri").default'; + N0.default = rj; +}); +var pj = g((_t) => { + "use strict"; + Object.defineProperty(_t, "__esModule", { value: true }); + _t.CodeGen = _t.Name = _t.nil = _t.stringify = _t.str = _t._ = _t.KeywordCxt = void 0; + var kX = Iu(); + Object.defineProperty(_t, "KeywordCxt", { enumerable: true, get: function() { + return kX.KeywordCxt; + } }); + var ja = ee(); + Object.defineProperty(_t, "_", { enumerable: true, get: function() { + return ja._; + } }); + Object.defineProperty(_t, "str", { enumerable: true, get: function() { + return ja.str; + } }); + Object.defineProperty(_t, "stringify", { enumerable: true, get: function() { + return ja.stringify; + } }); + Object.defineProperty(_t, "nil", { enumerable: true, get: function() { + return ja.nil; + } }); + Object.defineProperty(_t, "Name", { enumerable: true, get: function() { + return ja.Name; + } }); + Object.defineProperty(_t, "CodeGen", { enumerable: true, get: function() { + return ja.CodeGen; + } }); + var EX = hf(), cj = zu(), OX = d0(), ju = gf(), TX = ee(), Au = Eu(), _f = ku(), q0 = le(), ij = D6(), IX = nj(), uj = (e21, t) => new RegExp(e21, t); + uj.code = "new RegExp"; + var zX = ["removeAdditional", "useDefaults", "coerceTypes"], PX = /* @__PURE__ */ new Set(["validate", "serialize", "parse", "wrapper", "root", "schema", "keyword", "pattern", "formats", "validate$data", "func", "obj", "Error"]), jX = { errorDataPath: "", format: "`validateFormats: false` can be used instead.", nullable: '"nullable" keyword is supported by default.', jsonPointers: "Deprecated jsPropertySyntax can be used instead.", extendRefs: "Deprecated ignoreKeywordsWithRef can be used instead.", missingRefs: "Pass empty schema with $id that should be ignored to ajv.addSchema.", processCode: "Use option `code: {process: (code, schemaEnv: object) => string}`", sourceCode: "Use option `code: {source: true}`", strictDefaults: "It is default now, see option `strict`.", strictKeywords: "It is default now, see option `strict`.", uniqueItems: '"uniqueItems" keyword is always validated.', unknownFormats: "Disable strict mode or pass `true` to `ajv.addFormat` (or `formats` option).", cache: "Map is used as cache, schema object as key.", serialize: "Map is used as cache, schema object as key.", ajvErrors: "It is default now." }, AX = { ignoreKeywordsWithRef: "", jsPropertySyntax: "", unicode: '"minLength"/"maxLength" account for unicode characters by default.' }, oj = 200; + function RX(e21) { + var t, r, n, i, o, a, s, c, u, l, p, d, f, m, h, v, y, x, w, S, k, A, C, ae, Ie; + let Ce = e21.strict, $e = (t = e21.code) === null || t === void 0 ? void 0 : t.optimize, Ye = $e === true || $e === void 0 ? 1 : $e || 0, ve = (n = (r = e21.code) === null || r === void 0 ? void 0 : r.regExp) !== null && n !== void 0 ? n : uj, Ne = (i = e21.uriResolver) !== null && i !== void 0 ? i : IX.default; + return { strictSchema: (a = (o = e21.strictSchema) !== null && o !== void 0 ? o : Ce) !== null && a !== void 0 ? a : true, strictNumbers: (c = (s = e21.strictNumbers) !== null && s !== void 0 ? s : Ce) !== null && c !== void 0 ? c : true, strictTypes: (l = (u = e21.strictTypes) !== null && u !== void 0 ? u : Ce) !== null && l !== void 0 ? l : "log", strictTuples: (d = (p = e21.strictTuples) !== null && p !== void 0 ? p : Ce) !== null && d !== void 0 ? d : "log", strictRequired: (m = (f = e21.strictRequired) !== null && f !== void 0 ? f : Ce) !== null && m !== void 0 ? m : false, code: e21.code ? { ...e21.code, optimize: Ye, regExp: ve } : { optimize: Ye, regExp: ve }, loopRequired: (h = e21.loopRequired) !== null && h !== void 0 ? h : oj, loopEnum: (v = e21.loopEnum) !== null && v !== void 0 ? v : oj, meta: (y = e21.meta) !== null && y !== void 0 ? y : true, messages: (x = e21.messages) !== null && x !== void 0 ? x : true, inlineRefs: (w = e21.inlineRefs) !== null && w !== void 0 ? w : true, schemaId: (S = e21.schemaId) !== null && S !== void 0 ? S : "$id", addUsedSchema: (k = e21.addUsedSchema) !== null && k !== void 0 ? k : true, validateSchema: (A = e21.validateSchema) !== null && A !== void 0 ? A : true, validateFormats: (C = e21.validateFormats) !== null && C !== void 0 ? C : true, unicodeRegExp: (ae = e21.unicodeRegExp) !== null && ae !== void 0 ? ae : true, int32range: (Ie = e21.int32range) !== null && Ie !== void 0 ? Ie : true, uriResolver: Ne }; + } + var Ru = class { + constructor(t = {}) { + this.schemas = {}, this.refs = {}, this.formats = {}, this._compilations = /* @__PURE__ */ new Set(), this._loading = {}, this._cache = /* @__PURE__ */ new Map(), t = this.opts = { ...t, ...RX(t) }; + let { es5: r, lines: n } = this.opts.code; + this.scope = new TX.ValueScope({ scope: {}, prefixes: PX, es5: r, lines: n }), this.logger = LX(t.logger); + let i = t.validateFormats; + t.validateFormats = false, this.RULES = (0, OX.getRules)(), aj.call(this, jX, t, "NOT SUPPORTED"), aj.call(this, AX, t, "DEPRECATED", "warn"), this._metaOpts = qX.call(this), t.formats && NX.call(this), this._addVocabularies(), this._addDefaultMetaSchema(), t.keywords && DX.call(this, t.keywords), typeof t.meta == "object" && this.addMetaSchema(t.meta), CX.call(this), t.validateFormats = i; + } + _addVocabularies() { + this.addKeyword("$async"); + } + _addDefaultMetaSchema() { + let { $data: t, meta: r, schemaId: n } = this.opts, i = ij; + n === "id" && (i = { ...ij }, i.id = i.$id, delete i.$id), r && t && this.addMetaSchema(i, i[n], false); + } + defaultMeta() { + let { meta: t, schemaId: r } = this.opts; + return this.opts.defaultMeta = typeof t == "object" ? t[r] || t : void 0; + } + validate(t, r) { + let n; + if (typeof t == "string") { + if (n = this.getSchema(t), !n) throw new Error(`no schema with key or ref "${t}"`); + } else n = this.compile(t); + let i = n(r); + return "$async" in n || (this.errors = n.errors), i; + } + compile(t, r) { + let n = this._addSchema(t, r); + return n.validate || this._compileSchemaEnv(n); + } + compileAsync(t, r) { + if (typeof this.opts.loadSchema != "function") throw new Error("options.loadSchema should be a function"); + let { loadSchema: n } = this.opts; + return i.call(this, t, r); + async function i(l, p) { + await o.call(this, l.$schema); + let d = this._addSchema(l, p); + return d.validate || a.call(this, d); + } + async function o(l) { + l && !this.getSchema(l) && await i.call(this, { $ref: l }, true); + } + async function a(l) { + try { + return this._compileSchemaEnv(l); + } catch (p) { + if (!(p instanceof cj.default)) throw p; + return s.call(this, p), await c.call(this, p.missingSchema), a.call(this, l); + } + } + function s({ missingSchema: l, missingRef: p }) { + if (this.refs[l]) throw new Error(`AnySchema ${l} is loaded but ${p} cannot be resolved`); + } + async function c(l) { + let p = await u.call(this, l); + this.refs[l] || await o.call(this, p.$schema), this.refs[l] || this.addSchema(p, l, r); + } + async function u(l) { + let p = this._loading[l]; + if (p) return p; + try { + return await (this._loading[l] = n(l)); + } finally { + delete this._loading[l]; + } + } + } + addSchema(t, r, n, i = this.opts.validateSchema) { + if (Array.isArray(t)) { + for (let a of t) this.addSchema(a, void 0, n, i); + return this; + } + let o; + if (typeof t == "object") { + let { schemaId: a } = this.opts; + if (o = t[a], o !== void 0 && typeof o != "string") throw new Error(`schema ${a} must be string`); + } + return r = (0, Au.normalizeId)(r || o), this._checkUnique(r), this.schemas[r] = this._addSchema(t, n, r, i, true), this; + } + addMetaSchema(t, r, n = this.opts.validateSchema) { + return this.addSchema(t, r, true, n), this; + } + validateSchema(t, r) { + if (typeof t == "boolean") return true; + let n; + if (n = t.$schema, n !== void 0 && typeof n != "string") throw new Error("$schema must be a string"); + if (n = n || this.opts.defaultMeta || this.defaultMeta(), !n) return this.logger.warn("meta-schema not available"), this.errors = null, true; + let i = this.validate(n, t); + if (!i && r) { + let o = "schema is invalid: " + this.errorsText(); + if (this.opts.validateSchema === "log") this.logger.error(o); + else throw new Error(o); + } + return i; + } + getSchema(t) { + let r; + for (; typeof (r = sj.call(this, t)) == "string"; ) t = r; + if (r === void 0) { + let { schemaId: n } = this.opts, i = new ju.SchemaEnv({ schema: {}, schemaId: n }); + if (r = ju.resolveSchema.call(this, i, t), !r) return; + this.refs[t] = r; + } + return r.validate || this._compileSchemaEnv(r); + } + removeSchema(t) { + if (t instanceof RegExp) return this._removeAllSchemas(this.schemas, t), this._removeAllSchemas(this.refs, t), this; + switch (typeof t) { + case "undefined": + return this._removeAllSchemas(this.schemas), this._removeAllSchemas(this.refs), this._cache.clear(), this; + case "string": { + let r = sj.call(this, t); + return typeof r == "object" && this._cache.delete(r.schema), delete this.schemas[t], delete this.refs[t], this; + } + case "object": { + let r = t; + this._cache.delete(r); + let n = t[this.opts.schemaId]; + return n && (n = (0, Au.normalizeId)(n), delete this.schemas[n], delete this.refs[n]), this; + } + default: + throw new Error("ajv.removeSchema: invalid parameter"); + } + } + addVocabulary(t) { + for (let r of t) this.addKeyword(r); + return this; + } + addKeyword(t, r) { + let n; + if (typeof t == "string") n = t, typeof r == "object" && (this.logger.warn("these parameters are deprecated, see docs for addKeyword"), r.keyword = n); + else if (typeof t == "object" && r === void 0) { + if (r = t, n = r.keyword, Array.isArray(n) && !n.length) throw new Error("addKeywords: keyword must be string or non-empty array"); + } else throw new Error("invalid addKeywords parameters"); + if (FX.call(this, n, r), !r) return (0, q0.eachItem)(n, (o) => D0.call(this, o)), this; + BX.call(this, r); + let i = { ...r, type: (0, _f.getJSONTypes)(r.type), schemaType: (0, _f.getJSONTypes)(r.schemaType) }; + return (0, q0.eachItem)(n, i.type.length === 0 ? (o) => D0.call(this, o, i) : (o) => i.type.forEach((a) => D0.call(this, o, i, a))), this; + } + getKeyword(t) { + let r = this.RULES.all[t]; + return typeof r == "object" ? r.definition : !!r; + } + removeKeyword(t) { + let { RULES: r } = this; + delete r.keywords[t], delete r.all[t]; + for (let n of r.rules) { + let i = n.rules.findIndex((o) => o.keyword === t); + i >= 0 && n.rules.splice(i, 1); + } + return this; + } + addFormat(t, r) { + return typeof r == "string" && (r = new RegExp(r)), this.formats[t] = r, this; + } + errorsText(t = this.errors, { separator: r = ", ", dataVar: n = "data" } = {}) { + return !t || t.length === 0 ? "No errors" : t.map((i) => `${n}${i.instancePath} ${i.message}`).reduce((i, o) => i + r + o); + } + $dataMetaSchema(t, r) { + let n = this.RULES.all; + t = JSON.parse(JSON.stringify(t)); + for (let i of r) { + let o = i.split("/").slice(1), a = t; + for (let s of o) a = a[s]; + for (let s in n) { + let c = n[s]; + if (typeof c != "object") continue; + let { $data: u } = c.definition, l = a[s]; + u && l && (a[s] = lj(l)); + } + } + return t; + } + _removeAllSchemas(t, r) { + for (let n in t) { + let i = t[n]; + (!r || r.test(n)) && (typeof i == "string" ? delete t[n] : i && !i.meta && (this._cache.delete(i.schema), delete t[n])); + } + } + _addSchema(t, r, n, i = this.opts.validateSchema, o = this.opts.addUsedSchema) { + let a, { schemaId: s } = this.opts; + if (typeof t == "object") a = t[s]; + else { + if (this.opts.jtd) throw new Error("schema must be object"); + if (typeof t != "boolean") throw new Error("schema must be object or boolean"); + } + let c = this._cache.get(t); + if (c !== void 0) return c; + n = (0, Au.normalizeId)(a || n); + let u = Au.getSchemaRefs.call(this, t, n); + return c = new ju.SchemaEnv({ schema: t, schemaId: s, meta: r, baseId: n, localRefs: u }), this._cache.set(c.schema, c), o && !n.startsWith("#") && (n && this._checkUnique(n), this.refs[n] = c), i && this.validateSchema(t, true), c; + } + _checkUnique(t) { + if (this.schemas[t] || this.refs[t]) throw new Error(`schema with key or id "${t}" already exists`); + } + _compileSchemaEnv(t) { + if (t.meta ? this._compileMetaSchema(t) : ju.compileSchema.call(this, t), !t.validate) throw new Error("ajv implementation error"); + return t.validate; + } + _compileMetaSchema(t) { + let r = this.opts; + this.opts = this._metaOpts; + try { + ju.compileSchema.call(this, t); + } finally { + this.opts = r; + } + } + }; + Ru.ValidationError = EX.default; + Ru.MissingRefError = cj.default; + _t.default = Ru; + function aj(e21, t, r, n = "error") { + for (let i in e21) { + let o = i; + o in t && this.logger[n](`${r}: option ${i}. ${e21[o]}`); + } + } + function sj(e21) { + return e21 = (0, Au.normalizeId)(e21), this.schemas[e21] || this.refs[e21]; + } + function CX() { + let e21 = this.opts.schemas; + if (e21) if (Array.isArray(e21)) this.addSchema(e21); + else for (let t in e21) this.addSchema(e21[t], t); + } + function NX() { + for (let e21 in this.opts.formats) { + let t = this.opts.formats[e21]; + t && this.addFormat(e21, t); + } + } + function DX(e21) { + if (Array.isArray(e21)) { + this.addVocabulary(e21); + return; + } + this.logger.warn("keywords option as map is deprecated, pass array"); + for (let t in e21) { + let r = e21[t]; + r.keyword || (r.keyword = t), this.addKeyword(r); + } + } + function qX() { + let e21 = { ...this.opts }; + for (let t of zX) delete e21[t]; + return e21; + } + var UX = { log() { + }, warn() { + }, error() { + } }; + function LX(e21) { + if (e21 === false) return UX; + if (e21 === void 0) return console; + if (e21.log && e21.warn && e21.error) return e21; + throw new Error("logger must implement log, warn and error methods"); + } + var MX = /^[a-z_$][a-z0-9_$:-]*$/i; + function FX(e21, t) { + let { RULES: r } = this; + if ((0, q0.eachItem)(e21, (n) => { + if (r.keywords[n]) throw new Error(`Keyword ${n} is already defined`); + if (!MX.test(n)) throw new Error(`Keyword ${n} has invalid name`); + }), !!t && t.$data && !("code" in t || "validate" in t)) throw new Error('$data keyword must have "code" or "validate" function'); + } + function D0(e21, t, r) { + var n; + let i = t?.post; + if (r && i) throw new Error('keyword with "post" flag cannot have "type"'); + let { RULES: o } = this, a = i ? o.post : o.rules.find(({ type: c }) => c === r); + if (a || (a = { type: r, rules: [] }, o.rules.push(a)), o.keywords[e21] = true, !t) return; + let s = { keyword: e21, definition: { ...t, type: (0, _f.getJSONTypes)(t.type), schemaType: (0, _f.getJSONTypes)(t.schemaType) } }; + t.before ? ZX.call(this, a, s, t.before) : a.rules.push(s), o.all[e21] = s, (n = t.implements) === null || n === void 0 || n.forEach((c) => this.addKeyword(c)); + } + function ZX(e21, t, r) { + let n = e21.rules.findIndex((i) => i.keyword === r); + n >= 0 ? e21.rules.splice(n, 0, t) : (e21.rules.push(t), this.logger.warn(`rule ${r} is not defined`)); + } + function BX(e21) { + let { metaSchema: t } = e21; + t !== void 0 && (e21.$data && this.opts.$data && (t = lj(t)), e21.validateSchema = this.compile(t, true)); + } + var VX = { $ref: "https://raw.githubusercontent.com/ajv-validator/ajv/master/lib/refs/data.json#" }; + function lj(e21) { + return { anyOf: [e21, VX] }; + } +}); +var dj = g((U0) => { + "use strict"; + Object.defineProperty(U0, "__esModule", { value: true }); + var HX = { keyword: "id", code() { + throw new Error('NOT SUPPORTED: keyword "id", use "$id" for schema ID'); + } }; + U0.default = HX; +}); +var vj = g((Yi) => { + "use strict"; + Object.defineProperty(Yi, "__esModule", { value: true }); + Yi.callRef = Yi.getValidate = void 0; + var JX = zu(), fj = Er(), tr = ee(), Aa = In(), mj = gf(), wf = le(), GX = { keyword: "$ref", schemaType: "string", code(e21) { + let { gen: t, schema: r, it: n } = e21, { baseId: i, schemaEnv: o, validateName: a, opts: s, self: c } = n, { root: u } = o; + if ((r === "#" || r === "#/") && i === u.baseId) return p(); + let l = mj.resolveRef.call(c, u, i, r); + if (l === void 0) throw new JX.default(n.opts.uriResolver, i, r); + if (l instanceof mj.SchemaEnv) return d(l); + return f(l); + function p() { + if (o === u) return $f(e21, a, o, o.$async); + let m = t.scopeValue("root", { ref: u }); + return $f(e21, (0, tr._)`${m}.validate`, u, u.$async); + } + function d(m) { + let h = hj(e21, m); + $f(e21, h, m, m.$async); + } + function f(m) { + let h = t.scopeValue("schema", s.code.source === true ? { ref: m, code: (0, tr.stringify)(m) } : { ref: m }), v = t.name("valid"), y = e21.subschema({ schema: m, dataTypes: [], schemaPath: tr.nil, topSchemaRef: h, errSchemaPath: r }, v); + e21.mergeEvaluated(y), e21.ok(v); + } + } }; + function hj(e21, t) { + let { gen: r } = e21; + return t.validate ? r.scopeValue("validate", { ref: t.validate }) : (0, tr._)`${r.scopeValue("wrapper", { ref: t })}.validate`; + } + Yi.getValidate = hj; + function $f(e21, t, r, n) { + let { gen: i, it: o } = e21, { allErrors: a, schemaEnv: s, opts: c } = o, u = c.passContext ? Aa.default.this : tr.nil; + n ? l() : p(); + function l() { + if (!s.$async) throw new Error("async schema referenced by sync schema"); + let m = i.let("valid"); + i.try(() => { + i.code((0, tr._)`await ${(0, fj.callValidateCode)(e21, t, u)}`), f(t), a || i.assign(m, true); + }, (h) => { + i.if((0, tr._)`!(${h} instanceof ${o.ValidationError})`, () => i.throw(h)), d(h), a || i.assign(m, false); + }), e21.ok(m); + } + function p() { + e21.result((0, fj.callValidateCode)(e21, t, u), () => f(t), () => d(t)); + } + function d(m) { + let h = (0, tr._)`${m}.errors`; + i.assign(Aa.default.vErrors, (0, tr._)`${Aa.default.vErrors} === null ? ${h} : ${Aa.default.vErrors}.concat(${h})`), i.assign(Aa.default.errors, (0, tr._)`${Aa.default.vErrors}.length`); + } + function f(m) { + var h; + if (!o.opts.unevaluated) return; + let v = (h = r?.validate) === null || h === void 0 ? void 0 : h.evaluated; + if (o.props !== true) if (v && !v.dynamicProps) v.props !== void 0 && (o.props = wf.mergeEvaluated.props(i, v.props, o.props)); + else { + let y = i.var("props", (0, tr._)`${m}.evaluated.props`); + o.props = wf.mergeEvaluated.props(i, y, o.props, tr.Name); + } + if (o.items !== true) if (v && !v.dynamicItems) v.items !== void 0 && (o.items = wf.mergeEvaluated.items(i, v.items, o.items)); + else { + let y = i.var("items", (0, tr._)`${m}.evaluated.items`); + o.items = wf.mergeEvaluated.items(i, y, o.items, tr.Name); + } + } + } + Yi.callRef = $f; + Yi.default = GX; +}); +var gj = g((L0) => { + "use strict"; + Object.defineProperty(L0, "__esModule", { value: true }); + var WX = dj(), KX = vj(), XX = ["$schema", "$id", "$defs", "$vocabulary", { keyword: "$comment" }, "definitions", WX.default, KX.default]; + L0.default = XX; +}); +var yj = g((M0) => { + "use strict"; + Object.defineProperty(M0, "__esModule", { value: true }); + var Sf = ee(), ui = Sf.operators, kf = { maximum: { okStr: "<=", ok: ui.LTE, fail: ui.GT }, minimum: { okStr: ">=", ok: ui.GTE, fail: ui.LT }, exclusiveMaximum: { okStr: "<", ok: ui.LT, fail: ui.GTE }, exclusiveMinimum: { okStr: ">", ok: ui.GT, fail: ui.LTE } }, YX = { message: ({ keyword: e21, schemaCode: t }) => (0, Sf.str)`must be ${kf[e21].okStr} ${t}`, params: ({ keyword: e21, schemaCode: t }) => (0, Sf._)`{comparison: ${kf[e21].okStr}, limit: ${t}}` }, QX = { keyword: Object.keys(kf), type: "number", schemaType: "number", $data: true, error: YX, code(e21) { + let { keyword: t, data: r, schemaCode: n } = e21; + e21.fail$data((0, Sf._)`${r} ${kf[t].fail} ${n} || isNaN(${r})`); + } }; + M0.default = QX; +}); +var xj = g((F0) => { + "use strict"; + Object.defineProperty(F0, "__esModule", { value: true }); + var Cu = ee(), eY = { message: ({ schemaCode: e21 }) => (0, Cu.str)`must be multiple of ${e21}`, params: ({ schemaCode: e21 }) => (0, Cu._)`{multipleOf: ${e21}}` }, tY = { keyword: "multipleOf", type: "number", schemaType: "number", $data: true, error: eY, code(e21) { + let { gen: t, data: r, schemaCode: n, it: i } = e21, o = i.opts.multipleOfPrecision, a = t.let("res"), s = o ? (0, Cu._)`Math.abs(Math.round(${a}) - ${a}) > 1e-${o}` : (0, Cu._)`${a} !== parseInt(${a})`; + e21.fail$data((0, Cu._)`(${n} === 0 || (${a} = ${r}/${n}, ${s}))`); + } }; + F0.default = tY; +}); +var _j = g((Z0) => { + "use strict"; + Object.defineProperty(Z0, "__esModule", { value: true }); + function bj(e21) { + let t = e21.length, r = 0, n = 0, i; + for (; n < t; ) r++, i = e21.charCodeAt(n++), i >= 55296 && i <= 56319 && n < t && (i = e21.charCodeAt(n), (i & 64512) === 56320 && n++); + return r; + } + Z0.default = bj; + bj.code = 'require("ajv/dist/runtime/ucs2length").default'; +}); +var wj = g((B0) => { + "use strict"; + Object.defineProperty(B0, "__esModule", { value: true }); + var Qi = ee(), rY = le(), nY = _j(), iY = { message({ keyword: e21, schemaCode: t }) { + let r = e21 === "maxLength" ? "more" : "fewer"; + return (0, Qi.str)`must NOT have ${r} than ${t} characters`; + }, params: ({ schemaCode: e21 }) => (0, Qi._)`{limit: ${e21}}` }, oY = { keyword: ["maxLength", "minLength"], type: "string", schemaType: "number", $data: true, error: iY, code(e21) { + let { keyword: t, data: r, schemaCode: n, it: i } = e21, o = t === "maxLength" ? Qi.operators.GT : Qi.operators.LT, a = i.opts.unicode === false ? (0, Qi._)`${r}.length` : (0, Qi._)`${(0, rY.useFunc)(e21.gen, nY.default)}(${r})`; + e21.fail$data((0, Qi._)`${a} ${o} ${n}`); + } }; + B0.default = oY; +}); +var $j = g((V0) => { + "use strict"; + Object.defineProperty(V0, "__esModule", { value: true }); + var aY = Er(), sY = le(), Ra = ee(), cY = { message: ({ schemaCode: e21 }) => (0, Ra.str)`must match pattern "${e21}"`, params: ({ schemaCode: e21 }) => (0, Ra._)`{pattern: ${e21}}` }, uY = { keyword: "pattern", type: "string", schemaType: "string", $data: true, error: cY, code(e21) { + let { gen: t, data: r, $data: n, schema: i, schemaCode: o, it: a } = e21, s = a.opts.unicodeRegExp ? "u" : ""; + if (n) { + let { regExp: c } = a.opts.code, u = c.code === "new RegExp" ? (0, Ra._)`new RegExp` : (0, sY.useFunc)(t, c), l = t.let("valid"); + t.try(() => t.assign(l, (0, Ra._)`${u}(${o}, ${s}).test(${r})`), () => t.assign(l, false)), e21.fail$data((0, Ra._)`!${l}`); + } else { + let c = (0, aY.usePattern)(e21, i); + e21.fail$data((0, Ra._)`!${c}.test(${r})`); + } + } }; + V0.default = uY; +}); +var Sj = g((H0) => { + "use strict"; + Object.defineProperty(H0, "__esModule", { value: true }); + var Nu = ee(), lY = { message({ keyword: e21, schemaCode: t }) { + let r = e21 === "maxProperties" ? "more" : "fewer"; + return (0, Nu.str)`must NOT have ${r} than ${t} properties`; + }, params: ({ schemaCode: e21 }) => (0, Nu._)`{limit: ${e21}}` }, pY = { keyword: ["maxProperties", "minProperties"], type: "object", schemaType: "number", $data: true, error: lY, code(e21) { + let { keyword: t, data: r, schemaCode: n } = e21, i = t === "maxProperties" ? Nu.operators.GT : Nu.operators.LT; + e21.fail$data((0, Nu._)`Object.keys(${r}).length ${i} ${n}`); + } }; + H0.default = pY; +}); +var kj = g((J0) => { + "use strict"; + Object.defineProperty(J0, "__esModule", { value: true }); + var Du = Er(), qu = ee(), dY = le(), fY = { message: ({ params: { missingProperty: e21 } }) => (0, qu.str)`must have required property '${e21}'`, params: ({ params: { missingProperty: e21 } }) => (0, qu._)`{missingProperty: ${e21}}` }, mY = { keyword: "required", type: "object", schemaType: "array", $data: true, error: fY, code(e21) { + let { gen: t, schema: r, schemaCode: n, data: i, $data: o, it: a } = e21, { opts: s } = a; + if (!o && r.length === 0) return; + let c = r.length >= s.loopRequired; + if (a.allErrors ? u() : l(), s.strictRequired) { + let f = e21.parentSchema.properties, { definedProperties: m } = e21.it; + for (let h of r) if (f?.[h] === void 0 && !m.has(h)) { + let v = a.schemaEnv.baseId + a.errSchemaPath, y = `required property "${h}" is not defined at "${v}" (strictRequired)`; + (0, dY.checkStrictMode)(a, y, a.opts.strictRequired); + } + } + function u() { + if (c || o) e21.block$data(qu.nil, p); + else for (let f of r) (0, Du.checkReportMissingProp)(e21, f); + } + function l() { + let f = t.let("missing"); + if (c || o) { + let m = t.let("valid", true); + e21.block$data(m, () => d(f, m)), e21.ok(m); + } else t.if((0, Du.checkMissingProp)(e21, r, f)), (0, Du.reportMissingProp)(e21, f), t.else(); + } + function p() { + t.forOf("prop", n, (f) => { + e21.setParams({ missingProperty: f }), t.if((0, Du.noPropertyInData)(t, i, f, s.ownProperties), () => e21.error()); + }); + } + function d(f, m) { + e21.setParams({ missingProperty: f }), t.forOf(f, n, () => { + t.assign(m, (0, Du.propertyInData)(t, i, f, s.ownProperties)), t.if((0, qu.not)(m), () => { + e21.error(), t.break(); + }); + }, qu.nil); + } + } }; + J0.default = mY; +}); +var Ej = g((G0) => { + "use strict"; + Object.defineProperty(G0, "__esModule", { value: true }); + var Uu = ee(), hY = { message({ keyword: e21, schemaCode: t }) { + let r = e21 === "maxItems" ? "more" : "fewer"; + return (0, Uu.str)`must NOT have ${r} than ${t} items`; + }, params: ({ schemaCode: e21 }) => (0, Uu._)`{limit: ${e21}}` }, vY = { keyword: ["maxItems", "minItems"], type: "array", schemaType: "number", $data: true, error: hY, code(e21) { + let { keyword: t, data: r, schemaCode: n } = e21, i = t === "maxItems" ? Uu.operators.GT : Uu.operators.LT; + e21.fail$data((0, Uu._)`${r}.length ${i} ${n}`); + } }; + G0.default = vY; +}); +var Ef = g((W0) => { + "use strict"; + Object.defineProperty(W0, "__esModule", { value: true }); + var Oj = b0(); + Oj.code = 'require("ajv/dist/runtime/equal").default'; + W0.default = Oj; +}); +var Tj = g((X0) => { + "use strict"; + Object.defineProperty(X0, "__esModule", { value: true }); + var K0 = ku(), wt = ee(), gY = le(), yY = Ef(), xY = { message: ({ params: { i: e21, j: t } }) => (0, wt.str)`must NOT have duplicate items (items ## ${t} and ${e21} are identical)`, params: ({ params: { i: e21, j: t } }) => (0, wt._)`{i: ${e21}, j: ${t}}` }, bY = { keyword: "uniqueItems", type: "array", schemaType: "boolean", $data: true, error: xY, code(e21) { + let { gen: t, data: r, $data: n, schema: i, parentSchema: o, schemaCode: a, it: s } = e21; + if (!n && !i) return; + let c = t.let("valid"), u = o.items ? (0, K0.getSchemaTypes)(o.items) : []; + e21.block$data(c, l, (0, wt._)`${a} === false`), e21.ok(c); + function l() { + let m = t.let("i", (0, wt._)`${r}.length`), h = t.let("j"); + e21.setParams({ i: m, j: h }), t.assign(c, true), t.if((0, wt._)`${m} > 1`, () => (p() ? d : f)(m, h)); + } + function p() { + return u.length > 0 && !u.some((m) => m === "object" || m === "array"); + } + function d(m, h) { + let v = t.name("item"), y = (0, K0.checkDataTypes)(u, v, s.opts.strictNumbers, K0.DataType.Wrong), x = t.const("indices", (0, wt._)`{}`); + t.for((0, wt._)`;${m}--;`, () => { + t.let(v, (0, wt._)`${r}[${m}]`), t.if(y, (0, wt._)`continue`), u.length > 1 && t.if((0, wt._)`typeof ${v} == "string"`, (0, wt._)`${v} += "_"`), t.if((0, wt._)`typeof ${x}[${v}] == "number"`, () => { + t.assign(h, (0, wt._)`${x}[${v}]`), e21.error(), t.assign(c, false).break(); + }).code((0, wt._)`${x}[${v}] = ${m}`); + }); + } + function f(m, h) { + let v = (0, gY.useFunc)(t, yY.default), y = t.name("outer"); + t.label(y).for((0, wt._)`;${m}--;`, () => t.for((0, wt._)`${h} = ${m}; ${h}--;`, () => t.if((0, wt._)`${v}(${r}[${m}], ${r}[${h}])`, () => { + e21.error(), t.assign(c, false).break(y); + }))); + } + } }; + X0.default = bY; +}); +var Ij = g((Q0) => { + "use strict"; + Object.defineProperty(Q0, "__esModule", { value: true }); + var Y0 = ee(), _Y = le(), wY = Ef(), $Y = { message: "must be equal to constant", params: ({ schemaCode: e21 }) => (0, Y0._)`{allowedValue: ${e21}}` }, SY = { keyword: "const", $data: true, error: $Y, code(e21) { + let { gen: t, data: r, $data: n, schemaCode: i, schema: o } = e21; + n || o && typeof o == "object" ? e21.fail$data((0, Y0._)`!${(0, _Y.useFunc)(t, wY.default)}(${r}, ${i})`) : e21.fail((0, Y0._)`${o} !== ${r}`); + } }; + Q0.default = SY; +}); +var zj = g((e_) => { + "use strict"; + Object.defineProperty(e_, "__esModule", { value: true }); + var Lu = ee(), kY = le(), EY = Ef(), OY = { message: "must be equal to one of the allowed values", params: ({ schemaCode: e21 }) => (0, Lu._)`{allowedValues: ${e21}}` }, TY = { keyword: "enum", schemaType: "array", $data: true, error: OY, code(e21) { + let { gen: t, data: r, $data: n, schema: i, schemaCode: o, it: a } = e21; + if (!n && i.length === 0) throw new Error("enum must have non-empty array"); + let s = i.length >= a.opts.loopEnum, c, u = () => c ?? (c = (0, kY.useFunc)(t, EY.default)), l; + if (s || n) l = t.let("valid"), e21.block$data(l, p); + else { + if (!Array.isArray(i)) throw new Error("ajv implementation error"); + let f = t.const("vSchema", o); + l = (0, Lu.or)(...i.map((m, h) => d(f, h))); + } + e21.pass(l); + function p() { + t.assign(l, false), t.forOf("v", o, (f) => t.if((0, Lu._)`${u()}(${r}, ${f})`, () => t.assign(l, true).break())); + } + function d(f, m) { + let h = i[m]; + return typeof h == "object" && h !== null ? (0, Lu._)`${u()}(${r}, ${f}[${m}])` : (0, Lu._)`${r} === ${h}`; + } + } }; + e_.default = TY; +}); +var Pj = g((t_) => { + "use strict"; + Object.defineProperty(t_, "__esModule", { value: true }); + var IY = yj(), zY = xj(), PY = wj(), jY = $j(), AY = Sj(), RY = kj(), CY = Ej(), NY = Tj(), DY = Ij(), qY = zj(), UY = [IY.default, zY.default, PY.default, jY.default, AY.default, RY.default, CY.default, NY.default, { keyword: "type", schemaType: ["string", "array"] }, { keyword: "nullable", schemaType: "boolean" }, DY.default, qY.default]; + t_.default = UY; +}); +var n_ = g((Mu) => { + "use strict"; + Object.defineProperty(Mu, "__esModule", { value: true }); + Mu.validateAdditionalItems = void 0; + var eo = ee(), r_ = le(), LY = { message: ({ params: { len: e21 } }) => (0, eo.str)`must NOT have more than ${e21} items`, params: ({ params: { len: e21 } }) => (0, eo._)`{limit: ${e21}}` }, MY = { keyword: "additionalItems", type: "array", schemaType: ["boolean", "object"], before: "uniqueItems", error: LY, code(e21) { + let { parentSchema: t, it: r } = e21, { items: n } = t; + if (!Array.isArray(n)) { + (0, r_.checkStrictMode)(r, '"additionalItems" is ignored when "items" is not an array of schemas'); + return; + } + jj(e21, n); + } }; + function jj(e21, t) { + let { gen: r, schema: n, data: i, keyword: o, it: a } = e21; + a.items = true; + let s = r.const("len", (0, eo._)`${i}.length`); + if (n === false) e21.setParams({ len: t.length }), e21.pass((0, eo._)`${s} <= ${t.length}`); + else if (typeof n == "object" && !(0, r_.alwaysValidSchema)(a, n)) { + let u = r.var("valid", (0, eo._)`${s} <= ${t.length}`); + r.if((0, eo.not)(u), () => c(u)), e21.ok(u); + } + function c(u) { + r.forRange("i", t.length, s, (l) => { + e21.subschema({ keyword: o, dataProp: l, dataPropType: r_.Type.Num }, u), a.allErrors || r.if((0, eo.not)(u), () => r.break()); + }); + } + } + Mu.validateAdditionalItems = jj; + Mu.default = MY; +}); +var i_ = g((Fu) => { + "use strict"; + Object.defineProperty(Fu, "__esModule", { value: true }); + Fu.validateTuple = void 0; + var Aj = ee(), Of = le(), FY = Er(), ZY = { keyword: "items", type: "array", schemaType: ["object", "array", "boolean"], before: "uniqueItems", code(e21) { + let { schema: t, it: r } = e21; + if (Array.isArray(t)) return Rj(e21, "additionalItems", t); + r.items = true, !(0, Of.alwaysValidSchema)(r, t) && e21.ok((0, FY.validateArray)(e21)); + } }; + function Rj(e21, t, r = e21.schema) { + let { gen: n, parentSchema: i, data: o, keyword: a, it: s } = e21; + l(i), s.opts.unevaluated && r.length && s.items !== true && (s.items = Of.mergeEvaluated.items(n, r.length, s.items)); + let c = n.name("valid"), u = n.const("len", (0, Aj._)`${o}.length`); + r.forEach((p, d) => { + (0, Of.alwaysValidSchema)(s, p) || (n.if((0, Aj._)`${u} > ${d}`, () => e21.subschema({ keyword: a, schemaProp: d, dataProp: d }, c)), e21.ok(c)); + }); + function l(p) { + let { opts: d, errSchemaPath: f } = s, m = r.length, h = m === p.minItems && (m === p.maxItems || p[t] === false); + if (d.strictTuples && !h) { + let v = `"${a}" is ${m}-tuple, but minItems or maxItems/${t} are not specified or different at path "${f}"`; + (0, Of.checkStrictMode)(s, v, d.strictTuples); + } + } + } + Fu.validateTuple = Rj; + Fu.default = ZY; +}); +var Cj = g((o_) => { + "use strict"; + Object.defineProperty(o_, "__esModule", { value: true }); + var BY = i_(), VY = { keyword: "prefixItems", type: "array", schemaType: ["array"], before: "uniqueItems", code: (e21) => (0, BY.validateTuple)(e21, "items") }; + o_.default = VY; +}); +var Dj = g((a_) => { + "use strict"; + Object.defineProperty(a_, "__esModule", { value: true }); + var Nj = ee(), HY = le(), JY = Er(), GY = n_(), WY = { message: ({ params: { len: e21 } }) => (0, Nj.str)`must NOT have more than ${e21} items`, params: ({ params: { len: e21 } }) => (0, Nj._)`{limit: ${e21}}` }, KY = { keyword: "items", type: "array", schemaType: ["object", "boolean"], before: "uniqueItems", error: WY, code(e21) { + let { schema: t, parentSchema: r, it: n } = e21, { prefixItems: i } = r; + n.items = true, !(0, HY.alwaysValidSchema)(n, t) && (i ? (0, GY.validateAdditionalItems)(e21, i) : e21.ok((0, JY.validateArray)(e21))); + } }; + a_.default = KY; +}); +var qj = g((s_) => { + "use strict"; + Object.defineProperty(s_, "__esModule", { value: true }); + var Tr = ee(), Tf = le(), XY = { message: ({ params: { min: e21, max: t } }) => t === void 0 ? (0, Tr.str)`must contain at least ${e21} valid item(s)` : (0, Tr.str)`must contain at least ${e21} and no more than ${t} valid item(s)`, params: ({ params: { min: e21, max: t } }) => t === void 0 ? (0, Tr._)`{minContains: ${e21}}` : (0, Tr._)`{minContains: ${e21}, maxContains: ${t}}` }, YY = { keyword: "contains", type: "array", schemaType: ["object", "boolean"], before: "uniqueItems", trackErrors: true, error: XY, code(e21) { + let { gen: t, schema: r, parentSchema: n, data: i, it: o } = e21, a, s, { minContains: c, maxContains: u } = n; + o.opts.next ? (a = c === void 0 ? 1 : c, s = u) : a = 1; + let l = t.const("len", (0, Tr._)`${i}.length`); + if (e21.setParams({ min: a, max: s }), s === void 0 && a === 0) { + (0, Tf.checkStrictMode)(o, '"minContains" == 0 without "maxContains": "contains" keyword ignored'); + return; + } + if (s !== void 0 && a > s) { + (0, Tf.checkStrictMode)(o, '"minContains" > "maxContains" is always invalid'), e21.fail(); + return; + } + if ((0, Tf.alwaysValidSchema)(o, r)) { + let h = (0, Tr._)`${l} >= ${a}`; + s !== void 0 && (h = (0, Tr._)`${h} && ${l} <= ${s}`), e21.pass(h); + return; + } + o.items = true; + let p = t.name("valid"); + s === void 0 && a === 1 ? f(p, () => t.if(p, () => t.break())) : a === 0 ? (t.let(p, true), s !== void 0 && t.if((0, Tr._)`${i}.length > 0`, d)) : (t.let(p, false), d()), e21.result(p, () => e21.reset()); + function d() { + let h = t.name("_valid"), v = t.let("count", 0); + f(h, () => t.if(h, () => m(v))); + } + function f(h, v) { + t.forRange("i", 0, l, (y) => { + e21.subschema({ keyword: "contains", dataProp: y, dataPropType: Tf.Type.Num, compositeRule: true }, h), v(); + }); + } + function m(h) { + t.code((0, Tr._)`${h}++`), s === void 0 ? t.if((0, Tr._)`${h} >= ${a}`, () => t.assign(p, true).break()) : (t.if((0, Tr._)`${h} > ${s}`, () => t.assign(p, false).break()), a === 1 ? t.assign(p, true) : t.if((0, Tr._)`${h} >= ${a}`, () => t.assign(p, true))); + } + } }; + s_.default = YY; +}); +var Mj = g((un) => { + "use strict"; + Object.defineProperty(un, "__esModule", { value: true }); + un.validateSchemaDeps = un.validatePropertyDeps = un.error = void 0; + var c_ = ee(), QY = le(), Zu = Er(); + un.error = { message: ({ params: { property: e21, depsCount: t, deps: r } }) => { + let n = t === 1 ? "property" : "properties"; + return (0, c_.str)`must have ${n} ${r} when property ${e21} is present`; + }, params: ({ params: { property: e21, depsCount: t, deps: r, missingProperty: n } }) => (0, c_._)`{property: ${e21}, + missingProperty: ${n}, + depsCount: ${t}, + deps: ${r}}` }; + var eQ = { keyword: "dependencies", type: "object", schemaType: "object", error: un.error, code(e21) { + let [t, r] = tQ(e21); + Uj(e21, t), Lj(e21, r); + } }; + function tQ({ schema: e21 }) { + let t = {}, r = {}; + for (let n in e21) { + if (n === "__proto__") continue; + let i = Array.isArray(e21[n]) ? t : r; + i[n] = e21[n]; + } + return [t, r]; + } + function Uj(e21, t = e21.schema) { + let { gen: r, data: n, it: i } = e21; + if (Object.keys(t).length === 0) return; + let o = r.let("missing"); + for (let a in t) { + let s = t[a]; + if (s.length === 0) continue; + let c = (0, Zu.propertyInData)(r, n, a, i.opts.ownProperties); + e21.setParams({ property: a, depsCount: s.length, deps: s.join(", ") }), i.allErrors ? r.if(c, () => { + for (let u of s) (0, Zu.checkReportMissingProp)(e21, u); + }) : (r.if((0, c_._)`${c} && (${(0, Zu.checkMissingProp)(e21, s, o)})`), (0, Zu.reportMissingProp)(e21, o), r.else()); + } + } + un.validatePropertyDeps = Uj; + function Lj(e21, t = e21.schema) { + let { gen: r, data: n, keyword: i, it: o } = e21, a = r.name("valid"); + for (let s in t) (0, QY.alwaysValidSchema)(o, t[s]) || (r.if((0, Zu.propertyInData)(r, n, s, o.opts.ownProperties), () => { + let c = e21.subschema({ keyword: i, schemaProp: s }, a); + e21.mergeValidEvaluated(c, a); + }, () => r.var(a, true)), e21.ok(a)); + } + un.validateSchemaDeps = Lj; + un.default = eQ; +}); +var Zj = g((u_) => { + "use strict"; + Object.defineProperty(u_, "__esModule", { value: true }); + var Fj = ee(), rQ = le(), nQ = { message: "property name must be valid", params: ({ params: e21 }) => (0, Fj._)`{propertyName: ${e21.propertyName}}` }, iQ = { keyword: "propertyNames", type: "object", schemaType: ["object", "boolean"], error: nQ, code(e21) { + let { gen: t, schema: r, data: n, it: i } = e21; + if ((0, rQ.alwaysValidSchema)(i, r)) return; + let o = t.name("valid"); + t.forIn("key", n, (a) => { + e21.setParams({ propertyName: a }), e21.subschema({ keyword: "propertyNames", data: a, dataTypes: ["string"], propertyName: a, compositeRule: true }, o), t.if((0, Fj.not)(o), () => { + e21.error(true), i.allErrors || t.break(); + }); + }), e21.ok(o); + } }; + u_.default = iQ; +}); +var p_ = g((l_) => { + "use strict"; + Object.defineProperty(l_, "__esModule", { value: true }); + var If = Er(), Zr = ee(), oQ = In(), zf = le(), aQ = { message: "must NOT have additional properties", params: ({ params: e21 }) => (0, Zr._)`{additionalProperty: ${e21.additionalProperty}}` }, sQ = { keyword: "additionalProperties", type: ["object"], schemaType: ["boolean", "object"], allowUndefined: true, trackErrors: true, error: aQ, code(e21) { + let { gen: t, schema: r, parentSchema: n, data: i, errsCount: o, it: a } = e21; + if (!o) throw new Error("ajv implementation error"); + let { allErrors: s, opts: c } = a; + if (a.props = true, c.removeAdditional !== "all" && (0, zf.alwaysValidSchema)(a, r)) return; + let u = (0, If.allSchemaProperties)(n.properties), l = (0, If.allSchemaProperties)(n.patternProperties); + p(), e21.ok((0, Zr._)`${o} === ${oQ.default.errors}`); + function p() { + t.forIn("key", i, (v) => { + !u.length && !l.length ? m(v) : t.if(d(v), () => m(v)); + }); + } + function d(v) { + let y; + if (u.length > 8) { + let x = (0, zf.schemaRefOrVal)(a, n.properties, "properties"); + y = (0, If.isOwnProperty)(t, x, v); + } else u.length ? y = (0, Zr.or)(...u.map((x) => (0, Zr._)`${v} === ${x}`)) : y = Zr.nil; + return l.length && (y = (0, Zr.or)(y, ...l.map((x) => (0, Zr._)`${(0, If.usePattern)(e21, x)}.test(${v})`))), (0, Zr.not)(y); + } + function f(v) { + t.code((0, Zr._)`delete ${i}[${v}]`); + } + function m(v) { + if (c.removeAdditional === "all" || c.removeAdditional && r === false) { + f(v); + return; + } + if (r === false) { + e21.setParams({ additionalProperty: v }), e21.error(), s || t.break(); + return; + } + if (typeof r == "object" && !(0, zf.alwaysValidSchema)(a, r)) { + let y = t.name("valid"); + c.removeAdditional === "failing" ? (h(v, y, false), t.if((0, Zr.not)(y), () => { + e21.reset(), f(v); + })) : (h(v, y), s || t.if((0, Zr.not)(y), () => t.break())); + } + } + function h(v, y, x) { + let w = { keyword: "additionalProperties", dataProp: v, dataPropType: zf.Type.Str }; + x === false && Object.assign(w, { compositeRule: true, createErrors: false, allErrors: false }), e21.subschema(w, y); + } + } }; + l_.default = sQ; +}); +var Hj = g((f_) => { + "use strict"; + Object.defineProperty(f_, "__esModule", { value: true }); + var cQ = Iu(), Bj = Er(), d_ = le(), Vj = p_(), uQ = { keyword: "properties", type: "object", schemaType: "object", code(e21) { + let { gen: t, schema: r, parentSchema: n, data: i, it: o } = e21; + o.opts.removeAdditional === "all" && n.additionalProperties === void 0 && Vj.default.code(new cQ.KeywordCxt(o, Vj.default, "additionalProperties")); + let a = (0, Bj.allSchemaProperties)(r); + for (let p of a) o.definedProperties.add(p); + o.opts.unevaluated && a.length && o.props !== true && (o.props = d_.mergeEvaluated.props(t, (0, d_.toHash)(a), o.props)); + let s = a.filter((p) => !(0, d_.alwaysValidSchema)(o, r[p])); + if (s.length === 0) return; + let c = t.name("valid"); + for (let p of s) u(p) ? l(p) : (t.if((0, Bj.propertyInData)(t, i, p, o.opts.ownProperties)), l(p), o.allErrors || t.else().var(c, true), t.endIf()), e21.it.definedProperties.add(p), e21.ok(c); + function u(p) { + return o.opts.useDefaults && !o.compositeRule && r[p].default !== void 0; + } + function l(p) { + e21.subschema({ keyword: "properties", schemaProp: p, dataProp: p }, c); + } + } }; + f_.default = uQ; +}); +var Kj = g((m_) => { + "use strict"; + Object.defineProperty(m_, "__esModule", { value: true }); + var Jj = Er(), Pf = ee(), Gj = le(), Wj = le(), lQ = { keyword: "patternProperties", type: "object", schemaType: "object", code(e21) { + let { gen: t, schema: r, data: n, parentSchema: i, it: o } = e21, { opts: a } = o, s = (0, Jj.allSchemaProperties)(r), c = s.filter((h) => (0, Gj.alwaysValidSchema)(o, r[h])); + if (s.length === 0 || c.length === s.length && (!o.opts.unevaluated || o.props === true)) return; + let u = a.strictSchema && !a.allowMatchingProperties && i.properties, l = t.name("valid"); + o.props !== true && !(o.props instanceof Pf.Name) && (o.props = (0, Wj.evaluatedPropsToName)(t, o.props)); + let { props: p } = o; + d(); + function d() { + for (let h of s) u && f(h), o.allErrors ? m(h) : (t.var(l, true), m(h), t.if(l)); + } + function f(h) { + for (let v in u) new RegExp(h).test(v) && (0, Gj.checkStrictMode)(o, `property ${v} matches pattern ${h} (use allowMatchingProperties)`); + } + function m(h) { + t.forIn("key", n, (v) => { + t.if((0, Pf._)`${(0, Jj.usePattern)(e21, h)}.test(${v})`, () => { + let y = c.includes(h); + y || e21.subschema({ keyword: "patternProperties", schemaProp: h, dataProp: v, dataPropType: Wj.Type.Str }, l), o.opts.unevaluated && p !== true ? t.assign((0, Pf._)`${p}[${v}]`, true) : !y && !o.allErrors && t.if((0, Pf.not)(l), () => t.break()); + }); + }); + } + } }; + m_.default = lQ; +}); +var Xj = g((h_) => { + "use strict"; + Object.defineProperty(h_, "__esModule", { value: true }); + var pQ = le(), dQ = { keyword: "not", schemaType: ["object", "boolean"], trackErrors: true, code(e21) { + let { gen: t, schema: r, it: n } = e21; + if ((0, pQ.alwaysValidSchema)(n, r)) { + e21.fail(); + return; + } + let i = t.name("valid"); + e21.subschema({ keyword: "not", compositeRule: true, createErrors: false, allErrors: false }, i), e21.failResult(i, () => e21.reset(), () => e21.error()); + }, error: { message: "must NOT be valid" } }; + h_.default = dQ; +}); +var Yj = g((v_) => { + "use strict"; + Object.defineProperty(v_, "__esModule", { value: true }); + var fQ = Er(), mQ = { keyword: "anyOf", schemaType: "array", trackErrors: true, code: fQ.validateUnion, error: { message: "must match a schema in anyOf" } }; + v_.default = mQ; +}); +var Qj = g((g_) => { + "use strict"; + Object.defineProperty(g_, "__esModule", { value: true }); + var jf = ee(), hQ = le(), vQ = { message: "must match exactly one schema in oneOf", params: ({ params: e21 }) => (0, jf._)`{passingSchemas: ${e21.passing}}` }, gQ = { keyword: "oneOf", schemaType: "array", trackErrors: true, error: vQ, code(e21) { + let { gen: t, schema: r, parentSchema: n, it: i } = e21; + if (!Array.isArray(r)) throw new Error("ajv implementation error"); + if (i.opts.discriminator && n.discriminator) return; + let o = r, a = t.let("valid", false), s = t.let("passing", null), c = t.name("_valid"); + e21.setParams({ passing: s }), t.block(u), e21.result(a, () => e21.reset(), () => e21.error(true)); + function u() { + o.forEach((l, p) => { + let d; + (0, hQ.alwaysValidSchema)(i, l) ? t.var(c, true) : d = e21.subschema({ keyword: "oneOf", schemaProp: p, compositeRule: true }, c), p > 0 && t.if((0, jf._)`${c} && ${a}`).assign(a, false).assign(s, (0, jf._)`[${s}, ${p}]`).else(), t.if(c, () => { + t.assign(a, true), t.assign(s, p), d && e21.mergeEvaluated(d, jf.Name); + }); + }); + } + } }; + g_.default = gQ; +}); +var eA = g((y_) => { + "use strict"; + Object.defineProperty(y_, "__esModule", { value: true }); + var yQ = le(), xQ = { keyword: "allOf", schemaType: "array", code(e21) { + let { gen: t, schema: r, it: n } = e21; + if (!Array.isArray(r)) throw new Error("ajv implementation error"); + let i = t.name("valid"); + r.forEach((o, a) => { + if ((0, yQ.alwaysValidSchema)(n, o)) return; + let s = e21.subschema({ keyword: "allOf", schemaProp: a }, i); + e21.ok(i), e21.mergeEvaluated(s); + }); + } }; + y_.default = xQ; +}); +var nA = g((x_) => { + "use strict"; + Object.defineProperty(x_, "__esModule", { value: true }); + var Af = ee(), rA = le(), bQ = { message: ({ params: e21 }) => (0, Af.str)`must match "${e21.ifClause}" schema`, params: ({ params: e21 }) => (0, Af._)`{failingKeyword: ${e21.ifClause}}` }, _Q = { keyword: "if", schemaType: ["object", "boolean"], trackErrors: true, error: bQ, code(e21) { + let { gen: t, parentSchema: r, it: n } = e21; + r.then === void 0 && r.else === void 0 && (0, rA.checkStrictMode)(n, '"if" without "then" and "else" is ignored'); + let i = tA(n, "then"), o = tA(n, "else"); + if (!i && !o) return; + let a = t.let("valid", true), s = t.name("_valid"); + if (c(), e21.reset(), i && o) { + let l = t.let("ifClause"); + e21.setParams({ ifClause: l }), t.if(s, u("then", l), u("else", l)); + } else i ? t.if(s, u("then")) : t.if((0, Af.not)(s), u("else")); + e21.pass(a, () => e21.error(true)); + function c() { + let l = e21.subschema({ keyword: "if", compositeRule: true, createErrors: false, allErrors: false }, s); + e21.mergeEvaluated(l); + } + function u(l, p) { + return () => { + let d = e21.subschema({ keyword: l }, s); + t.assign(a, s), e21.mergeValidEvaluated(d, a), p ? t.assign(p, (0, Af._)`${l}`) : e21.setParams({ ifClause: l }); + }; + } + } }; + function tA(e21, t) { + let r = e21.schema[t]; + return r !== void 0 && !(0, rA.alwaysValidSchema)(e21, r); + } + x_.default = _Q; +}); +var iA = g((b_) => { + "use strict"; + Object.defineProperty(b_, "__esModule", { value: true }); + var wQ = le(), $Q = { keyword: ["then", "else"], schemaType: ["object", "boolean"], code({ keyword: e21, parentSchema: t, it: r }) { + t.if === void 0 && (0, wQ.checkStrictMode)(r, `"${e21}" without "if" is ignored`); + } }; + b_.default = $Q; +}); +var oA = g((__) => { + "use strict"; + Object.defineProperty(__, "__esModule", { value: true }); + var SQ = n_(), kQ = Cj(), EQ = i_(), OQ = Dj(), TQ = qj(), IQ = Mj(), zQ = Zj(), PQ = p_(), jQ = Hj(), AQ = Kj(), RQ = Xj(), CQ = Yj(), NQ = Qj(), DQ = eA(), qQ = nA(), UQ = iA(); + function LQ(e21 = false) { + let t = [RQ.default, CQ.default, NQ.default, DQ.default, qQ.default, UQ.default, zQ.default, PQ.default, IQ.default, jQ.default, AQ.default]; + return e21 ? t.push(kQ.default, OQ.default) : t.push(SQ.default, EQ.default), t.push(TQ.default), t; + } + __.default = LQ; +}); +var aA = g((w_) => { + "use strict"; + Object.defineProperty(w_, "__esModule", { value: true }); + var Qe = ee(), MQ = { message: ({ schemaCode: e21 }) => (0, Qe.str)`must match format "${e21}"`, params: ({ schemaCode: e21 }) => (0, Qe._)`{format: ${e21}}` }, FQ = { keyword: "format", type: ["number", "string"], schemaType: "string", $data: true, error: MQ, code(e21, t) { + let { gen: r, data: n, $data: i, schema: o, schemaCode: a, it: s } = e21, { opts: c, errSchemaPath: u, schemaEnv: l, self: p } = s; + if (!c.validateFormats) return; + i ? d() : f(); + function d() { + let m = r.scopeValue("formats", { ref: p.formats, code: c.code.formats }), h = r.const("fDef", (0, Qe._)`${m}[${a}]`), v = r.let("fType"), y = r.let("format"); + r.if((0, Qe._)`typeof ${h} == "object" && !(${h} instanceof RegExp)`, () => r.assign(v, (0, Qe._)`${h}.type || "string"`).assign(y, (0, Qe._)`${h}.validate`), () => r.assign(v, (0, Qe._)`"string"`).assign(y, h)), e21.fail$data((0, Qe.or)(x(), w())); + function x() { + return c.strictSchema === false ? Qe.nil : (0, Qe._)`${a} && !${y}`; + } + function w() { + let S = l.$async ? (0, Qe._)`(${h}.async ? await ${y}(${n}) : ${y}(${n}))` : (0, Qe._)`${y}(${n})`, k = (0, Qe._)`(typeof ${y} == "function" ? ${S} : ${y}.test(${n}))`; + return (0, Qe._)`${y} && ${y} !== true && ${v} === ${t} && !${k}`; + } + } + function f() { + let m = p.formats[o]; + if (!m) { + x(); + return; + } + if (m === true) return; + let [h, v, y] = w(m); + h === t && e21.pass(S()); + function x() { + if (c.strictSchema === false) { + p.logger.warn(k()); + return; + } + throw new Error(k()); + function k() { + return `unknown format "${o}" ignored in schema at path "${u}"`; + } + } + function w(k) { + let A = k instanceof RegExp ? (0, Qe.regexpCode)(k) : c.code.formats ? (0, Qe._)`${c.code.formats}${(0, Qe.getProperty)(o)}` : void 0, C = r.scopeValue("formats", { key: o, ref: k, code: A }); + return typeof k == "object" && !(k instanceof RegExp) ? [k.type || "string", k.validate, (0, Qe._)`${C}.validate`] : ["string", k, C]; + } + function S() { + if (typeof m == "object" && !(m instanceof RegExp) && m.async) { + if (!l.$async) throw new Error("async format in sync schema"); + return (0, Qe._)`await ${y}(${n})`; + } + return typeof v == "function" ? (0, Qe._)`${y}(${n})` : (0, Qe._)`${y}.test(${n})`; + } + } + } }; + w_.default = FQ; +}); +var sA = g(($_) => { + "use strict"; + Object.defineProperty($_, "__esModule", { value: true }); + var ZQ = aA(), BQ = [ZQ.default]; + $_.default = BQ; +}); +var cA = g((Ca) => { + "use strict"; + Object.defineProperty(Ca, "__esModule", { value: true }); + Ca.contentVocabulary = Ca.metadataVocabulary = void 0; + Ca.metadataVocabulary = ["title", "description", "default", "deprecated", "readOnly", "writeOnly", "examples"]; + Ca.contentVocabulary = ["contentMediaType", "contentEncoding", "contentSchema"]; +}); +var lA = g((S_) => { + "use strict"; + Object.defineProperty(S_, "__esModule", { value: true }); + var VQ = gj(), HQ = Pj(), JQ = oA(), GQ = sA(), uA = cA(), WQ = [VQ.default, HQ.default, (0, JQ.default)(), GQ.default, uA.metadataVocabulary, uA.contentVocabulary]; + S_.default = WQ; +}); +var dA = g((Rf) => { + "use strict"; + Object.defineProperty(Rf, "__esModule", { value: true }); + Rf.DiscrError = void 0; + var pA; + (function(e21) { + e21.Tag = "tag", e21.Mapping = "mapping"; + })(pA || (Rf.DiscrError = pA = {})); +}); +var mA = g((E_) => { + "use strict"; + Object.defineProperty(E_, "__esModule", { value: true }); + var Na = ee(), k_ = dA(), fA = gf(), KQ = zu(), XQ = le(), YQ = { message: ({ params: { discrError: e21, tagName: t } }) => e21 === k_.DiscrError.Tag ? `tag "${t}" must be string` : `value of tag "${t}" must be in oneOf`, params: ({ params: { discrError: e21, tag: t, tagName: r } }) => (0, Na._)`{error: ${e21}, tag: ${r}, tagValue: ${t}}` }, QQ = { keyword: "discriminator", type: "object", schemaType: "object", error: YQ, code(e21) { + let { gen: t, data: r, schema: n, parentSchema: i, it: o } = e21, { oneOf: a } = i; + if (!o.opts.discriminator) throw new Error("discriminator: requires discriminator option"); + let s = n.propertyName; + if (typeof s != "string") throw new Error("discriminator: requires propertyName"); + if (n.mapping) throw new Error("discriminator: mapping is not supported"); + if (!a) throw new Error("discriminator: requires oneOf keyword"); + let c = t.let("valid", false), u = t.const("tag", (0, Na._)`${r}${(0, Na.getProperty)(s)}`); + t.if((0, Na._)`typeof ${u} == "string"`, () => l(), () => e21.error(false, { discrError: k_.DiscrError.Tag, tag: u, tagName: s })), e21.ok(c); + function l() { + let f = d(); + t.if(false); + for (let m in f) t.elseIf((0, Na._)`${u} === ${m}`), t.assign(c, p(f[m])); + t.else(), e21.error(false, { discrError: k_.DiscrError.Mapping, tag: u, tagName: s }), t.endIf(); + } + function p(f) { + let m = t.name("valid"), h = e21.subschema({ keyword: "oneOf", schemaProp: f }, m); + return e21.mergeEvaluated(h, Na.Name), m; + } + function d() { + var f; + let m = {}, h = y(i), v = true; + for (let S = 0; S < a.length; S++) { + let k = a[S]; + if (k?.$ref && !(0, XQ.schemaHasRulesButRef)(k, o.self.RULES)) { + let C = k.$ref; + if (k = fA.resolveRef.call(o.self, o.schemaEnv.root, o.baseId, C), k instanceof fA.SchemaEnv && (k = k.schema), k === void 0) throw new KQ.default(o.opts.uriResolver, o.baseId, C); + } + let A = (f = k?.properties) === null || f === void 0 ? void 0 : f[s]; + if (typeof A != "object") throw new Error(`discriminator: oneOf subschemas (or referenced schemas) must have "properties/${s}"`); + v = v && (h || y(k)), x(A, S); + } + if (!v) throw new Error(`discriminator: "${s}" must be required`); + return m; + function y({ required: S }) { + return Array.isArray(S) && S.includes(s); + } + function x(S, k) { + if (S.const) w(S.const, k); + else if (S.enum) for (let A of S.enum) w(A, k); + else throw new Error(`discriminator: "properties/${s}" must have "const" or "enum"`); + } + function w(S, k) { + if (typeof S != "string" || S in m) throw new Error(`discriminator: "${s}" values must be unique strings`); + m[S] = k; + } + } + } }; + E_.default = QQ; +}); +var hA = g((zbe, eee) => { + eee.exports = { $schema: "http://json-schema.org/draft-07/schema#", $id: "http://json-schema.org/draft-07/schema#", title: "Core schema meta-schema", definitions: { schemaArray: { type: "array", minItems: 1, items: { $ref: "#" } }, nonNegativeInteger: { type: "integer", minimum: 0 }, nonNegativeIntegerDefault0: { allOf: [{ $ref: "#/definitions/nonNegativeInteger" }, { default: 0 }] }, simpleTypes: { enum: ["array", "boolean", "integer", "null", "number", "object", "string"] }, stringArray: { type: "array", items: { type: "string" }, uniqueItems: true, default: [] } }, type: ["object", "boolean"], properties: { $id: { type: "string", format: "uri-reference" }, $schema: { type: "string", format: "uri" }, $ref: { type: "string", format: "uri-reference" }, $comment: { type: "string" }, title: { type: "string" }, description: { type: "string" }, default: true, readOnly: { type: "boolean", default: false }, examples: { type: "array", items: true }, multipleOf: { type: "number", exclusiveMinimum: 0 }, maximum: { type: "number" }, exclusiveMaximum: { type: "number" }, minimum: { type: "number" }, exclusiveMinimum: { type: "number" }, maxLength: { $ref: "#/definitions/nonNegativeInteger" }, minLength: { $ref: "#/definitions/nonNegativeIntegerDefault0" }, pattern: { type: "string", format: "regex" }, additionalItems: { $ref: "#" }, items: { anyOf: [{ $ref: "#" }, { $ref: "#/definitions/schemaArray" }], default: true }, maxItems: { $ref: "#/definitions/nonNegativeInteger" }, minItems: { $ref: "#/definitions/nonNegativeIntegerDefault0" }, uniqueItems: { type: "boolean", default: false }, contains: { $ref: "#" }, maxProperties: { $ref: "#/definitions/nonNegativeInteger" }, minProperties: { $ref: "#/definitions/nonNegativeIntegerDefault0" }, required: { $ref: "#/definitions/stringArray" }, additionalProperties: { $ref: "#" }, definitions: { type: "object", additionalProperties: { $ref: "#" }, default: {} }, properties: { type: "object", additionalProperties: { $ref: "#" }, default: {} }, patternProperties: { type: "object", additionalProperties: { $ref: "#" }, propertyNames: { format: "regex" }, default: {} }, dependencies: { type: "object", additionalProperties: { anyOf: [{ $ref: "#" }, { $ref: "#/definitions/stringArray" }] } }, propertyNames: { $ref: "#" }, const: true, enum: { type: "array", items: true, minItems: 1, uniqueItems: true }, type: { anyOf: [{ $ref: "#/definitions/simpleTypes" }, { type: "array", items: { $ref: "#/definitions/simpleTypes" }, minItems: 1, uniqueItems: true }] }, format: { type: "string" }, contentMediaType: { type: "string" }, contentEncoding: { type: "string" }, if: { $ref: "#" }, then: { $ref: "#" }, else: { $ref: "#" }, allOf: { $ref: "#/definitions/schemaArray" }, anyOf: { $ref: "#/definitions/schemaArray" }, oneOf: { $ref: "#/definitions/schemaArray" }, not: { $ref: "#" } }, default: true }; +}); +var T_ = g((Be, O_) => { + "use strict"; + Object.defineProperty(Be, "__esModule", { value: true }); + Be.MissingRefError = Be.ValidationError = Be.CodeGen = Be.Name = Be.nil = Be.stringify = Be.str = Be._ = Be.KeywordCxt = Be.Ajv = void 0; + var tee = pj(), ree = lA(), nee = mA(), vA = hA(), iee = ["/properties"], Cf = "http://json-schema.org/draft-07/schema", Da = class extends tee.default { + _addVocabularies() { + super._addVocabularies(), ree.default.forEach((t) => this.addVocabulary(t)), this.opts.discriminator && this.addKeyword(nee.default); + } + _addDefaultMetaSchema() { + if (super._addDefaultMetaSchema(), !this.opts.meta) return; + let t = this.opts.$data ? this.$dataMetaSchema(vA, iee) : vA; + this.addMetaSchema(t, Cf, false), this.refs["http://json-schema.org/schema"] = Cf; + } + defaultMeta() { + return this.opts.defaultMeta = super.defaultMeta() || (this.getSchema(Cf) ? Cf : void 0); + } + }; + Be.Ajv = Da; + O_.exports = Be = Da; + O_.exports.Ajv = Da; + Object.defineProperty(Be, "__esModule", { value: true }); + Be.default = Da; + var oee = Iu(); + Object.defineProperty(Be, "KeywordCxt", { enumerable: true, get: function() { + return oee.KeywordCxt; + } }); + var qa = ee(); + Object.defineProperty(Be, "_", { enumerable: true, get: function() { + return qa._; + } }); + Object.defineProperty(Be, "str", { enumerable: true, get: function() { + return qa.str; + } }); + Object.defineProperty(Be, "stringify", { enumerable: true, get: function() { + return qa.stringify; + } }); + Object.defineProperty(Be, "nil", { enumerable: true, get: function() { + return qa.nil; + } }); + Object.defineProperty(Be, "Name", { enumerable: true, get: function() { + return qa.Name; + } }); + Object.defineProperty(Be, "CodeGen", { enumerable: true, get: function() { + return qa.CodeGen; + } }); + var aee = hf(); + Object.defineProperty(Be, "ValidationError", { enumerable: true, get: function() { + return aee.default; + } }); + var see = zu(); + Object.defineProperty(Be, "MissingRefError", { enumerable: true, get: function() { + return see.default; + } }); +}); +var SA = g((pn) => { + "use strict"; + Object.defineProperty(pn, "__esModule", { value: true }); + pn.formatNames = pn.fastFormats = pn.fullFormats = void 0; + function ln(e21, t) { + return { validate: e21, compare: t }; + } + pn.fullFormats = { date: ln(bA, j_), time: ln(z_(true), A_), "date-time": ln(gA(true), wA), "iso-time": ln(z_(), _A), "iso-date-time": ln(gA(), $A), duration: /^P(?!$)((\d+Y)?(\d+M)?(\d+D)?(T(?=\d)(\d+H)?(\d+M)?(\d+S)?)?|(\d+W)?)$/, uri: fee, "uri-reference": /^(?:[a-z][a-z0-9+\-.]*:)?(?:\/?\/(?:(?:[a-z0-9\-._~!$&'()*+,;=:]|%[0-9a-f]{2})*@)?(?:\[(?:(?:(?:(?:[0-9a-f]{1,4}:){6}|::(?:[0-9a-f]{1,4}:){5}|(?:[0-9a-f]{1,4})?::(?:[0-9a-f]{1,4}:){4}|(?:(?:[0-9a-f]{1,4}:){0,1}[0-9a-f]{1,4})?::(?:[0-9a-f]{1,4}:){3}|(?:(?:[0-9a-f]{1,4}:){0,2}[0-9a-f]{1,4})?::(?:[0-9a-f]{1,4}:){2}|(?:(?:[0-9a-f]{1,4}:){0,3}[0-9a-f]{1,4})?::[0-9a-f]{1,4}:|(?:(?:[0-9a-f]{1,4}:){0,4}[0-9a-f]{1,4})?::)(?:[0-9a-f]{1,4}:[0-9a-f]{1,4}|(?:(?:25[0-5]|2[0-4]\d|[01]?\d\d?)\.){3}(?:25[0-5]|2[0-4]\d|[01]?\d\d?))|(?:(?:[0-9a-f]{1,4}:){0,5}[0-9a-f]{1,4})?::[0-9a-f]{1,4}|(?:(?:[0-9a-f]{1,4}:){0,6}[0-9a-f]{1,4})?::)|[Vv][0-9a-f]+\.[a-z0-9\-._~!$&'()*+,;=:]+)\]|(?:(?:25[0-5]|2[0-4]\d|[01]?\d\d?)\.){3}(?:25[0-5]|2[0-4]\d|[01]?\d\d?)|(?:[a-z0-9\-._~!$&'"()*+,;=]|%[0-9a-f]{2})*)(?::\d*)?(?:\/(?:[a-z0-9\-._~!$&'"()*+,;=:@]|%[0-9a-f]{2})*)*|\/(?:(?:[a-z0-9\-._~!$&'"()*+,;=:@]|%[0-9a-f]{2})+(?:\/(?:[a-z0-9\-._~!$&'"()*+,;=:@]|%[0-9a-f]{2})*)*)?|(?:[a-z0-9\-._~!$&'"()*+,;=:@]|%[0-9a-f]{2})+(?:\/(?:[a-z0-9\-._~!$&'"()*+,;=:@]|%[0-9a-f]{2})*)*)?(?:\?(?:[a-z0-9\-._~!$&'"()*+,;=:@/?]|%[0-9a-f]{2})*)?(?:#(?:[a-z0-9\-._~!$&'"()*+,;=:@/?]|%[0-9a-f]{2})*)?$/i, "uri-template": /^(?:(?:[^\x00-\x20"'<>%\\^`{|}]|%[0-9a-f]{2})|\{[+#./;?&=,!@|]?(?:[a-z0-9_]|%[0-9a-f]{2})+(?::[1-9][0-9]{0,3}|\*)?(?:,(?:[a-z0-9_]|%[0-9a-f]{2})+(?::[1-9][0-9]{0,3}|\*)?)*\})*$/i, url: /^(?:https?|ftp):\/\/(?:\S+(?::\S*)?@)?(?:(?!(?:10|127)(?:\.\d{1,3}){3})(?!(?:169\.254|192\.168)(?:\.\d{1,3}){2})(?!172\.(?:1[6-9]|2\d|3[0-1])(?:\.\d{1,3}){2})(?:[1-9]\d?|1\d\d|2[01]\d|22[0-3])(?:\.(?:1?\d{1,2}|2[0-4]\d|25[0-5])){2}(?:\.(?:[1-9]\d?|1\d\d|2[0-4]\d|25[0-4]))|(?:(?:[a-z0-9\u{00a1}-\u{ffff}]+-)*[a-z0-9\u{00a1}-\u{ffff}]+)(?:\.(?:[a-z0-9\u{00a1}-\u{ffff}]+-)*[a-z0-9\u{00a1}-\u{ffff}]+)*(?:\.(?:[a-z\u{00a1}-\u{ffff}]{2,})))(?::\d{2,5})?(?:\/[^\s]*)?$/iu, email: /^[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?$/i, hostname: /^(?=.{1,253}\.?$)[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?(?:\.[a-z0-9](?:[-0-9a-z]{0,61}[0-9a-z])?)*\.?$/i, ipv4: /^(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)\.){3}(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)$/, ipv6: /^((([0-9a-f]{1,4}:){7}([0-9a-f]{1,4}|:))|(([0-9a-f]{1,4}:){6}(:[0-9a-f]{1,4}|((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3})|:))|(([0-9a-f]{1,4}:){5}(((:[0-9a-f]{1,4}){1,2})|:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3})|:))|(([0-9a-f]{1,4}:){4}(((:[0-9a-f]{1,4}){1,3})|((:[0-9a-f]{1,4})?:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(([0-9a-f]{1,4}:){3}(((:[0-9a-f]{1,4}){1,4})|((:[0-9a-f]{1,4}){0,2}:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(([0-9a-f]{1,4}:){2}(((:[0-9a-f]{1,4}){1,5})|((:[0-9a-f]{1,4}){0,3}:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(([0-9a-f]{1,4}:){1}(((:[0-9a-f]{1,4}){1,6})|((:[0-9a-f]{1,4}){0,4}:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(:(((:[0-9a-f]{1,4}){1,7})|((:[0-9a-f]{1,4}){0,5}:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:)))$/i, regex: bee, uuid: /^(?:urn:uuid:)?[0-9a-f]{8}-(?:[0-9a-f]{4}-){3}[0-9a-f]{12}$/i, "json-pointer": /^(?:\/(?:[^~/]|~0|~1)*)*$/, "json-pointer-uri-fragment": /^#(?:\/(?:[a-z0-9_\-.!$&'()*+,;:=@]|%[0-9a-f]{2}|~0|~1)*)*$/i, "relative-json-pointer": /^(?:0|[1-9][0-9]*)(?:#|(?:\/(?:[^~/]|~0|~1)*)*)$/, byte: mee, int32: { type: "number", validate: gee }, int64: { type: "number", validate: yee }, float: { type: "number", validate: xA }, double: { type: "number", validate: xA }, password: true, binary: true }; + pn.fastFormats = { ...pn.fullFormats, date: ln(/^\d\d\d\d-[0-1]\d-[0-3]\d$/, j_), time: ln(/^(?:[0-2]\d:[0-5]\d:[0-5]\d|23:59:60)(?:\.\d+)?(?:z|[+-]\d\d(?::?\d\d)?)$/i, A_), "date-time": ln(/^\d\d\d\d-[0-1]\d-[0-3]\dt(?:[0-2]\d:[0-5]\d:[0-5]\d|23:59:60)(?:\.\d+)?(?:z|[+-]\d\d(?::?\d\d)?)$/i, wA), "iso-time": ln(/^(?:[0-2]\d:[0-5]\d:[0-5]\d|23:59:60)(?:\.\d+)?(?:z|[+-]\d\d(?::?\d\d)?)?$/i, _A), "iso-date-time": ln(/^\d\d\d\d-[0-1]\d-[0-3]\d[t\s](?:[0-2]\d:[0-5]\d:[0-5]\d|23:59:60)(?:\.\d+)?(?:z|[+-]\d\d(?::?\d\d)?)?$/i, $A), uri: /^(?:[a-z][a-z0-9+\-.]*:)(?:\/?\/)?[^\s]*$/i, "uri-reference": /^(?:(?:[a-z][a-z0-9+\-.]*:)?\/?\/)?(?:[^\\\s#][^\s#]*)?(?:#[^\\\s]*)?$/i, email: /^[a-z0-9.!#$%&'*+/=?^_`{|}~-]+@[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?(?:\.[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?)*$/i }; + pn.formatNames = Object.keys(pn.fullFormats); + function cee(e21) { + return e21 % 4 === 0 && (e21 % 100 !== 0 || e21 % 400 === 0); + } + var uee = /^(\d\d\d\d)-(\d\d)-(\d\d)$/, lee = [0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]; + function bA(e21) { + let t = uee.exec(e21); + if (!t) return false; + let r = +t[1], n = +t[2], i = +t[3]; + return n >= 1 && n <= 12 && i >= 1 && i <= (n === 2 && cee(r) ? 29 : lee[n]); + } + function j_(e21, t) { + if (e21 && t) return e21 > t ? 1 : e21 < t ? -1 : 0; + } + var I_ = /^(\d\d):(\d\d):(\d\d(?:\.\d+)?)(z|([+-])(\d\d)(?::?(\d\d))?)?$/i; + function z_(e21) { + return function(r) { + let n = I_.exec(r); + if (!n) return false; + let i = +n[1], o = +n[2], a = +n[3], s = n[4], c = n[5] === "-" ? -1 : 1, u = +(n[6] || 0), l = +(n[7] || 0); + if (u > 23 || l > 59 || e21 && !s) return false; + if (i <= 23 && o <= 59 && a < 60) return true; + let p = o - l * c, d = i - u * c - (p < 0 ? 1 : 0); + return (d === 23 || d === -1) && (p === 59 || p === -1) && a < 61; + }; + } + function A_(e21, t) { + if (!(e21 && t)) return; + let r = (/* @__PURE__ */ new Date("2020-01-01T" + e21)).valueOf(), n = (/* @__PURE__ */ new Date("2020-01-01T" + t)).valueOf(); + if (r && n) return r - n; + } + function _A(e21, t) { + if (!(e21 && t)) return; + let r = I_.exec(e21), n = I_.exec(t); + if (r && n) return e21 = r[1] + r[2] + r[3], t = n[1] + n[2] + n[3], e21 > t ? 1 : e21 < t ? -1 : 0; + } + var P_ = /t|\s/i; + function gA(e21) { + let t = z_(e21); + return function(n) { + let i = n.split(P_); + return i.length === 2 && bA(i[0]) && t(i[1]); + }; + } + function wA(e21, t) { + if (!(e21 && t)) return; + let r = new Date(e21).valueOf(), n = new Date(t).valueOf(); + if (r && n) return r - n; + } + function $A(e21, t) { + if (!(e21 && t)) return; + let [r, n] = e21.split(P_), [i, o] = t.split(P_), a = j_(r, i); + if (a !== void 0) return a || A_(n, o); + } + var pee = /\/|:/, dee = /^(?:[a-z][a-z0-9+\-.]*:)(?:\/?\/(?:(?:[a-z0-9\-._~!$&'()*+,;=:]|%[0-9a-f]{2})*@)?(?:\[(?:(?:(?:(?:[0-9a-f]{1,4}:){6}|::(?:[0-9a-f]{1,4}:){5}|(?:[0-9a-f]{1,4})?::(?:[0-9a-f]{1,4}:){4}|(?:(?:[0-9a-f]{1,4}:){0,1}[0-9a-f]{1,4})?::(?:[0-9a-f]{1,4}:){3}|(?:(?:[0-9a-f]{1,4}:){0,2}[0-9a-f]{1,4})?::(?:[0-9a-f]{1,4}:){2}|(?:(?:[0-9a-f]{1,4}:){0,3}[0-9a-f]{1,4})?::[0-9a-f]{1,4}:|(?:(?:[0-9a-f]{1,4}:){0,4}[0-9a-f]{1,4})?::)(?:[0-9a-f]{1,4}:[0-9a-f]{1,4}|(?:(?:25[0-5]|2[0-4]\d|[01]?\d\d?)\.){3}(?:25[0-5]|2[0-4]\d|[01]?\d\d?))|(?:(?:[0-9a-f]{1,4}:){0,5}[0-9a-f]{1,4})?::[0-9a-f]{1,4}|(?:(?:[0-9a-f]{1,4}:){0,6}[0-9a-f]{1,4})?::)|[Vv][0-9a-f]+\.[a-z0-9\-._~!$&'()*+,;=:]+)\]|(?:(?:25[0-5]|2[0-4]\d|[01]?\d\d?)\.){3}(?:25[0-5]|2[0-4]\d|[01]?\d\d?)|(?:[a-z0-9\-._~!$&'()*+,;=]|%[0-9a-f]{2})*)(?::\d*)?(?:\/(?:[a-z0-9\-._~!$&'()*+,;=:@]|%[0-9a-f]{2})*)*|\/(?:(?:[a-z0-9\-._~!$&'()*+,;=:@]|%[0-9a-f]{2})+(?:\/(?:[a-z0-9\-._~!$&'()*+,;=:@]|%[0-9a-f]{2})*)*)?|(?:[a-z0-9\-._~!$&'()*+,;=:@]|%[0-9a-f]{2})+(?:\/(?:[a-z0-9\-._~!$&'()*+,;=:@]|%[0-9a-f]{2})*)*)(?:\?(?:[a-z0-9\-._~!$&'()*+,;=:@/?]|%[0-9a-f]{2})*)?(?:#(?:[a-z0-9\-._~!$&'()*+,;=:@/?]|%[0-9a-f]{2})*)?$/i; + function fee(e21) { + return pee.test(e21) && dee.test(e21); + } + var yA = /^(?:[A-Za-z0-9+/]{4})*(?:[A-Za-z0-9+/]{2}==|[A-Za-z0-9+/]{3}=)?$/gm; + function mee(e21) { + return yA.lastIndex = 0, yA.test(e21); + } + var hee = -(2 ** 31), vee = 2 ** 31 - 1; + function gee(e21) { + return Number.isInteger(e21) && e21 <= vee && e21 >= hee; + } + function yee(e21) { + return Number.isInteger(e21); + } + function xA() { + return true; + } + var xee = /[^\\]\\Z/; + function bee(e21) { + if (xee.test(e21)) return false; + try { + return new RegExp(e21), true; + } catch { + return false; + } + } +}); +var kA = g((Ua) => { + "use strict"; + Object.defineProperty(Ua, "__esModule", { value: true }); + Ua.formatLimitDefinition = void 0; + var _ee = T_(), Br = ee(), li = Br.operators, Nf = { formatMaximum: { okStr: "<=", ok: li.LTE, fail: li.GT }, formatMinimum: { okStr: ">=", ok: li.GTE, fail: li.LT }, formatExclusiveMaximum: { okStr: "<", ok: li.LT, fail: li.GTE }, formatExclusiveMinimum: { okStr: ">", ok: li.GT, fail: li.LTE } }, wee = { message: ({ keyword: e21, schemaCode: t }) => (0, Br.str)`should be ${Nf[e21].okStr} ${t}`, params: ({ keyword: e21, schemaCode: t }) => (0, Br._)`{comparison: ${Nf[e21].okStr}, limit: ${t}}` }; + Ua.formatLimitDefinition = { keyword: Object.keys(Nf), type: "string", schemaType: "string", $data: true, error: wee, code(e21) { + let { gen: t, data: r, schemaCode: n, keyword: i, it: o } = e21, { opts: a, self: s } = o; + if (!a.validateFormats) return; + let c = new _ee.KeywordCxt(o, s.RULES.all.format.definition, "format"); + c.$data ? u() : l(); + function u() { + let d = t.scopeValue("formats", { ref: s.formats, code: a.code.formats }), f = t.const("fmt", (0, Br._)`${d}[${c.schemaCode}]`); + e21.fail$data((0, Br.or)((0, Br._)`typeof ${f} != "object"`, (0, Br._)`${f} instanceof RegExp`, (0, Br._)`typeof ${f}.compare != "function"`, p(f))); + } + function l() { + let d = c.schema, f = s.formats[d]; + if (!f || f === true) return; + if (typeof f != "object" || f instanceof RegExp || typeof f.compare != "function") throw new Error(`"${i}": format "${d}" does not define "compare" function`); + let m = t.scopeValue("formats", { key: d, ref: f, code: a.code.formats ? (0, Br._)`${a.code.formats}${(0, Br.getProperty)(d)}` : void 0 }); + e21.fail$data(p(m)); + } + function p(d) { + return (0, Br._)`${d}.compare(${r}, ${n}) ${Nf[i].fail} 0`; + } + }, dependencies: ["format"] }; + var $ee = (e21) => (e21.addKeyword(Ua.formatLimitDefinition), e21); + Ua.default = $ee; +}); +var IA = g((Bu, TA) => { + "use strict"; + Object.defineProperty(Bu, "__esModule", { value: true }); + var La = SA(), See = kA(), R_ = ee(), EA = new R_.Name("fullFormats"), kee = new R_.Name("fastFormats"), C_ = (e21, t = { keywords: true }) => { + if (Array.isArray(t)) return OA(e21, t, La.fullFormats, EA), e21; + let [r, n] = t.mode === "fast" ? [La.fastFormats, kee] : [La.fullFormats, EA], i = t.formats || La.formatNames; + return OA(e21, i, r, n), t.keywords && (0, See.default)(e21), e21; + }; + C_.get = (e21, t = "full") => { + let n = (t === "fast" ? La.fastFormats : La.fullFormats)[e21]; + if (!n) throw new Error(`Unknown format "${e21}"`); + return n; + }; + function OA(e21, t, r, n) { + var i, o; + (i = (o = e21.opts.code).formats) !== null && i !== void 0 || (o.formats = (0, R_._)`require("ajv-formats/dist/formats").${n}`); + for (let a of t) e21.addFormat(a, r[a]); + } + TA.exports = Bu = C_; + Object.defineProperty(Bu, "__esModule", { value: true }); + Bu.default = C_; +}); +var NA = g((Bbe, CA) => { + var RA = O("stream").Stream, Oee = O("util"); + CA.exports = Vr; + function Vr() { + this.source = null, this.dataSize = 0, this.maxDataSize = 1024 * 1024, this.pauseStream = true, this._maxDataSizeExceeded = false, this._released = false, this._bufferedEvents = []; + } + Oee.inherits(Vr, RA); + Vr.create = function(e21, t) { + var r = new this(); + t = t || {}; + for (var n in t) r[n] = t[n]; + r.source = e21; + var i = e21.emit; + return e21.emit = function() { + return r._handleEmit(arguments), i.apply(e21, arguments); + }, e21.on("error", function() { + }), r.pauseStream && e21.pause(), r; + }; + Object.defineProperty(Vr.prototype, "readable", { configurable: true, enumerable: true, get: function() { + return this.source.readable; + } }); + Vr.prototype.setEncoding = function() { + return this.source.setEncoding.apply(this.source, arguments); + }; + Vr.prototype.resume = function() { + this._released || this.release(), this.source.resume(); + }; + Vr.prototype.pause = function() { + this.source.pause(); + }; + Vr.prototype.release = function() { + this._released = true, this._bufferedEvents.forEach(function(e21) { + this.emit.apply(this, e21); + }.bind(this)), this._bufferedEvents = []; + }; + Vr.prototype.pipe = function() { + var e21 = RA.prototype.pipe.apply(this, arguments); + return this.resume(), e21; + }; + Vr.prototype._handleEmit = function(e21) { + if (this._released) { + this.emit.apply(this, e21); + return; + } + e21[0] === "data" && (this.dataSize += e21[1].length, this._checkIfMaxDataSizeExceeded()), this._bufferedEvents.push(e21); + }; + Vr.prototype._checkIfMaxDataSizeExceeded = function() { + if (!this._maxDataSizeExceeded && !(this.dataSize <= this.maxDataSize)) { + this._maxDataSizeExceeded = true; + var e21 = "DelayedStream#maxDataSize of " + this.maxDataSize + " bytes exceeded."; + this.emit("error", new Error(e21)); + } + }; +}); +var LA = g((Vbe, UA) => { + var Tee = O("util"), qA = O("stream").Stream, DA = NA(); + UA.exports = Ke; + function Ke() { + this.writable = false, this.readable = true, this.dataSize = 0, this.maxDataSize = 2 * 1024 * 1024, this.pauseStreams = true, this._released = false, this._streams = [], this._currentStream = null, this._insideLoop = false, this._pendingNext = false; + } + Tee.inherits(Ke, qA); + Ke.create = function(e21) { + var t = new this(); + e21 = e21 || {}; + for (var r in e21) t[r] = e21[r]; + return t; + }; + Ke.isStreamLike = function(e21) { + return typeof e21 != "function" && typeof e21 != "string" && typeof e21 != "boolean" && typeof e21 != "number" && !Buffer.isBuffer(e21); + }; + Ke.prototype.append = function(e21) { + var t = Ke.isStreamLike(e21); + if (t) { + if (!(e21 instanceof DA)) { + var r = DA.create(e21, { maxDataSize: 1 / 0, pauseStream: this.pauseStreams }); + e21.on("data", this._checkDataSize.bind(this)), e21 = r; + } + this._handleErrors(e21), this.pauseStreams && e21.pause(); + } + return this._streams.push(e21), this; + }; + Ke.prototype.pipe = function(e21, t) { + return qA.prototype.pipe.call(this, e21, t), this.resume(), e21; + }; + Ke.prototype._getNext = function() { + if (this._currentStream = null, this._insideLoop) { + this._pendingNext = true; + return; + } + this._insideLoop = true; + try { + do + this._pendingNext = false, this._realGetNext(); + while (this._pendingNext); + } finally { + this._insideLoop = false; + } + }; + Ke.prototype._realGetNext = function() { + var e21 = this._streams.shift(); + if (typeof e21 > "u") { + this.end(); + return; + } + if (typeof e21 != "function") { + this._pipeNext(e21); + return; + } + var t = e21; + t(function(r) { + var n = Ke.isStreamLike(r); + n && (r.on("data", this._checkDataSize.bind(this)), this._handleErrors(r)), this._pipeNext(r); + }.bind(this)); + }; + Ke.prototype._pipeNext = function(e21) { + this._currentStream = e21; + var t = Ke.isStreamLike(e21); + if (t) { + e21.on("end", this._getNext.bind(this)), e21.pipe(this, { end: false }); + return; + } + var r = e21; + this.write(r), this._getNext(); + }; + Ke.prototype._handleErrors = function(e21) { + var t = this; + e21.on("error", function(r) { + t._emitError(r); + }); + }; + Ke.prototype.write = function(e21) { + this.emit("data", e21); + }; + Ke.prototype.pause = function() { + this.pauseStreams && (this.pauseStreams && this._currentStream && typeof this._currentStream.pause == "function" && this._currentStream.pause(), this.emit("pause")); + }; + Ke.prototype.resume = function() { + this._released || (this._released = true, this.writable = true, this._getNext()), this.pauseStreams && this._currentStream && typeof this._currentStream.resume == "function" && this._currentStream.resume(), this.emit("resume"); + }; + Ke.prototype.end = function() { + this._reset(), this.emit("end"); + }; + Ke.prototype.destroy = function() { + this._reset(), this.emit("close"); + }; + Ke.prototype._reset = function() { + this.writable = false, this._streams = [], this._currentStream = null; + }; + Ke.prototype._checkDataSize = function() { + if (this._updateDataSize(), !(this.dataSize <= this.maxDataSize)) { + var e21 = "DelayedStream#maxDataSize of " + this.maxDataSize + " bytes exceeded."; + this._emitError(new Error(e21)); + } + }; + Ke.prototype._updateDataSize = function() { + this.dataSize = 0; + var e21 = this; + this._streams.forEach(function(t) { + t.dataSize && (e21.dataSize += t.dataSize); + }), this._currentStream && this._currentStream.dataSize && (this.dataSize += this._currentStream.dataSize); + }; + Ke.prototype._emitError = function(e21) { + this._reset(), this.emit("error", e21); + }; +}); +var FA = g((Hbe, MA) => { + MA.exports = Iee; + function Iee(e21) { + var t = typeof setImmediate == "function" ? setImmediate : typeof process == "object" && typeof process.nextTick == "function" ? process.nextTick : null; + t ? t(e21) : setTimeout(e21, 0); + } +}); +var N_ = g((Jbe, BA) => { + var ZA = FA(); + BA.exports = zee; + function zee(e21) { + var t = false; + return ZA(function() { + t = true; + }), function(n, i) { + t ? e21(n, i) : ZA(function() { + e21(n, i); + }); + }; + } +}); +var D_ = g((Gbe, VA) => { + VA.exports = Pee; + function Pee(e21) { + Object.keys(e21.jobs).forEach(jee.bind(e21)), e21.jobs = {}; + } + function jee(e21) { + typeof this.jobs[e21] == "function" && this.jobs[e21](); + } +}); +var q_ = g((Wbe, JA) => { + var HA = N_(), Aee = D_(); + JA.exports = Ree; + function Ree(e21, t, r, n) { + var i = r.keyedList ? r.keyedList[r.index] : r.index; + r.jobs[i] = Cee(t, i, e21[i], function(o, a) { + i in r.jobs && (delete r.jobs[i], o ? Aee(r) : r.results[i] = a, n(o, r.results)); + }); + } + function Cee(e21, t, r, n) { + var i; + return e21.length == 2 ? i = e21(r, HA(n)) : i = e21(r, t, HA(n)), i; + } +}); +var U_ = g((Kbe, GA) => { + GA.exports = Nee; + function Nee(e21, t) { + var r = !Array.isArray(e21), n = { index: 0, keyedList: r || t ? Object.keys(e21) : null, jobs: {}, results: r ? {} : [], size: r ? Object.keys(e21).length : e21.length }; + return t && n.keyedList.sort(r ? t : function(i, o) { + return t(e21[i], e21[o]); + }), n; + } +}); +var L_ = g((Xbe, WA) => { + var Dee = D_(), qee = N_(); + WA.exports = Uee; + function Uee(e21) { + Object.keys(this.jobs).length && (this.index = this.size, Dee(this), qee(e21)(null, this.results)); + } +}); +var XA = g((Ybe, KA) => { + var Lee = q_(), Mee = U_(), Fee = L_(); + KA.exports = Zee; + function Zee(e21, t, r) { + for (var n = Mee(e21); n.index < (n.keyedList || e21).length; ) Lee(e21, t, n, function(i, o) { + if (i) { + r(i, o); + return; + } + if (Object.keys(n.jobs).length === 0) { + r(null, n.results); + return; + } + }), n.index++; + return Fee.bind(n, r); + } +}); +var M_ = g((Qbe, Mf) => { + var YA = q_(), Bee = U_(), Vee = L_(); + Mf.exports = Hee; + Mf.exports.ascending = QA; + Mf.exports.descending = Jee; + function Hee(e21, t, r, n) { + var i = Bee(e21, r); + return YA(e21, t, i, function o(a, s) { + if (a) { + n(a, s); + return; + } + if (i.index++, i.index < (i.keyedList || e21).length) { + YA(e21, t, i, o); + return; + } + n(null, i.results); + }), Vee.bind(i, n); + } + function QA(e21, t) { + return e21 < t ? -1 : e21 > t ? 1 : 0; + } + function Jee(e21, t) { + return -1 * QA(e21, t); + } +}); +var tR = g((e0e, eR) => { + var Gee = M_(); + eR.exports = Wee; + function Wee(e21, t, r) { + return Gee(e21, t, null, r); + } +}); +var nR = g((t0e, rR) => { + rR.exports = { parallel: XA(), serial: tR(), serialOrdered: M_() }; +}); +var oR = g((r0e, iR) => { + "use strict"; + var Kee = wx(); + iR.exports = function() { + return Kee() && !!Symbol.toStringTag; + }; +}); +var cR = g((n0e, sR) => { + "use strict"; + var Xee = Tc(), aR = Xee("%Object.defineProperty%", true), Yee = oR()(), Qee = md(), ete = Jn(), Ff = Yee ? Symbol.toStringTag : null; + sR.exports = function(t, r) { + var n = arguments.length > 2 && !!arguments[2] && arguments[2].force, i = arguments.length > 2 && !!arguments[2] && arguments[2].nonConfigurable; + if (typeof n < "u" && typeof n != "boolean" || typeof i < "u" && typeof i != "boolean") throw new ete("if provided, the `overrideIfSet` and `nonConfigurable` options must be booleans"); + Ff && (n || !Qee(t, Ff)) && (aR ? aR(t, Ff, { configurable: !i, enumerable: false, value: r, writable: false }) : t[Ff] = r); + }; +}); +var lR = g((i0e, uR) => { + "use strict"; + uR.exports = function(e21, t) { + return Object.keys(t).forEach(function(r) { + e21[r] = e21[r] || t[r]; + }), e21; + }; +}); +var H_ = g((o0e, pR) => { + "use strict"; + var V_ = LA(), tte = O("util"), F_ = O("path"), rte = O("http"), nte = O("https"), ite = O("url").parse, ote = O("fs"), ate = O("stream").Stream, ste = O("crypto"), Z_ = ad(), cte = nR(), ute = cR(), pi = md(), B_ = lR(); + function de(e21) { + if (!(this instanceof de)) return new de(e21); + this._overheadLength = 0, this._valueLength = 0, this._valuesToMeasure = [], V_.call(this), e21 = e21 || {}; + for (var t in e21) this[t] = e21[t]; + } + tte.inherits(de, V_); + de.LINE_BREAK = `\r +`; + de.DEFAULT_CONTENT_TYPE = "application/octet-stream"; + de.prototype.append = function(e21, t, r) { + r = r || {}, typeof r == "string" && (r = { filename: r }); + var n = V_.prototype.append.bind(this); + if ((typeof t == "number" || t == null) && (t = String(t)), Array.isArray(t)) { + this._error(new Error("Arrays are not supported.")); + return; + } + var i = this._multiPartHeader(e21, t, r), o = this._multiPartFooter(); + n(i), n(t), n(o), this._trackLength(i, t, r); + }; + de.prototype._trackLength = function(e21, t, r) { + var n = 0; + r.knownLength != null ? n += Number(r.knownLength) : Buffer.isBuffer(t) ? n = t.length : typeof t == "string" && (n = Buffer.byteLength(t)), this._valueLength += n, this._overheadLength += Buffer.byteLength(e21) + de.LINE_BREAK.length, !(!t || !t.path && !(t.readable && pi(t, "httpVersion")) && !(t instanceof ate)) && (r.knownLength || this._valuesToMeasure.push(t)); + }; + de.prototype._lengthRetriever = function(e21, t) { + pi(e21, "fd") ? e21.end != null && e21.end != 1 / 0 && e21.start != null ? t(null, e21.end + 1 - (e21.start ? e21.start : 0)) : ote.stat(e21.path, function(r, n) { + if (r) { + t(r); + return; + } + var i = n.size - (e21.start ? e21.start : 0); + t(null, i); + }) : pi(e21, "httpVersion") ? t(null, Number(e21.headers["content-length"])) : pi(e21, "httpModule") ? (e21.on("response", function(r) { + e21.pause(), t(null, Number(r.headers["content-length"])); + }), e21.resume()) : t("Unknown stream"); + }; + de.prototype._multiPartHeader = function(e21, t, r) { + if (typeof r.header == "string") return r.header; + var n = this._getContentDisposition(t, r), i = this._getContentType(t, r), o = "", a = { "Content-Disposition": ["form-data", 'name="' + e21 + '"'].concat(n || []), "Content-Type": [].concat(i || []) }; + typeof r.header == "object" && B_(a, r.header); + var s; + for (var c in a) if (pi(a, c)) { + if (s = a[c], s == null) continue; + Array.isArray(s) || (s = [s]), s.length && (o += c + ": " + s.join("; ") + de.LINE_BREAK); + } + return "--" + this.getBoundary() + de.LINE_BREAK + o + de.LINE_BREAK; + }; + de.prototype._getContentDisposition = function(e21, t) { + var r; + if (typeof t.filepath == "string" ? r = F_.normalize(t.filepath).replace(/\\/g, "/") : t.filename || e21 && (e21.name || e21.path) ? r = F_.basename(t.filename || e21 && (e21.name || e21.path)) : e21 && e21.readable && pi(e21, "httpVersion") && (r = F_.basename(e21.client._httpMessage.path || "")), r) return 'filename="' + r + '"'; + }; + de.prototype._getContentType = function(e21, t) { + var r = t.contentType; + return !r && e21 && e21.name && (r = Z_.lookup(e21.name)), !r && e21 && e21.path && (r = Z_.lookup(e21.path)), !r && e21 && e21.readable && pi(e21, "httpVersion") && (r = e21.headers["content-type"]), !r && (t.filepath || t.filename) && (r = Z_.lookup(t.filepath || t.filename)), !r && e21 && typeof e21 == "object" && (r = de.DEFAULT_CONTENT_TYPE), r; + }; + de.prototype._multiPartFooter = function() { + return function(e21) { + var t = de.LINE_BREAK, r = this._streams.length === 0; + r && (t += this._lastBoundary()), e21(t); + }.bind(this); + }; + de.prototype._lastBoundary = function() { + return "--" + this.getBoundary() + "--" + de.LINE_BREAK; + }; + de.prototype.getHeaders = function(e21) { + var t, r = { "content-type": "multipart/form-data; boundary=" + this.getBoundary() }; + for (t in e21) pi(e21, t) && (r[t.toLowerCase()] = e21[t]); + return r; + }; + de.prototype.setBoundary = function(e21) { + if (typeof e21 != "string") throw new TypeError("FormData boundary must be a string"); + this._boundary = e21; + }; + de.prototype.getBoundary = function() { + return this._boundary || this._generateBoundary(), this._boundary; + }; + de.prototype.getBuffer = function() { + for (var e21 = new Buffer.alloc(0), t = this.getBoundary(), r = 0, n = this._streams.length; r < n; r++) typeof this._streams[r] != "function" && (Buffer.isBuffer(this._streams[r]) ? e21 = Buffer.concat([e21, this._streams[r]]) : e21 = Buffer.concat([e21, Buffer.from(this._streams[r])]), (typeof this._streams[r] != "string" || this._streams[r].substring(2, t.length + 2) !== t) && (e21 = Buffer.concat([e21, Buffer.from(de.LINE_BREAK)]))); + return Buffer.concat([e21, Buffer.from(this._lastBoundary())]); + }; + de.prototype._generateBoundary = function() { + this._boundary = "--------------------------" + ste.randomBytes(12).toString("hex"); + }; + de.prototype.getLengthSync = function() { + var e21 = this._overheadLength + this._valueLength; + return this._streams.length && (e21 += this._lastBoundary().length), this.hasKnownLength() || this._error(new Error("Cannot calculate proper length in synchronous way.")), e21; + }; + de.prototype.hasKnownLength = function() { + var e21 = true; + return this._valuesToMeasure.length && (e21 = false), e21; + }; + de.prototype.getLength = function(e21) { + var t = this._overheadLength + this._valueLength; + if (this._streams.length && (t += this._lastBoundary().length), !this._valuesToMeasure.length) { + process.nextTick(e21.bind(this, null, t)); + return; + } + cte.parallel(this._valuesToMeasure, this._lengthRetriever, function(r, n) { + if (r) { + e21(r); + return; + } + n.forEach(function(i) { + t += i; + }), e21(null, t); + }); + }; + de.prototype.submit = function(e21, t) { + var r, n, i = { method: "post" }; + return typeof e21 == "string" ? (e21 = ite(e21), n = B_({ port: e21.port, path: e21.pathname, host: e21.hostname, protocol: e21.protocol }, i)) : (n = B_(e21, i), n.port || (n.port = n.protocol === "https:" ? 443 : 80)), n.headers = this.getHeaders(e21.headers), n.protocol === "https:" ? r = nte.request(n) : r = rte.request(n), this.getLength(function(o, a) { + if (o && o !== "Unknown stream") { + this._error(o); + return; + } + if (a && r.setHeader("Content-Length", a), this.pipe(r), t) { + var s, c = function(u, l) { + return r.removeListener("error", c), r.removeListener("response", s), t.call(this, u, l); + }; + s = c.bind(this, null), r.on("error", c), r.on("response", s); + } + }.bind(this)), r; + }; + de.prototype._error = function(e21) { + this.error || (this.error = e21, this.pause(), this.emit("error", e21)); + }; + de.prototype.toString = function() { + return "[object FormData]"; + }; + ute(de.prototype, "FormData"); + pR.exports = de; +}); +var fR = g((dR) => { + "use strict"; + var lte = O("url").parse, pte = { ftp: 21, gopher: 70, http: 80, https: 443, ws: 80, wss: 443 }, dte = String.prototype.endsWith || function(e21) { + return e21.length <= this.length && this.indexOf(e21, this.length - e21.length) !== -1; + }; + function fte(e21) { + var t = typeof e21 == "string" ? lte(e21) : e21 || {}, r = t.protocol, n = t.host, i = t.port; + if (typeof n != "string" || !n || typeof r != "string" || (r = r.split(":", 1)[0], n = n.replace(/:\d*$/, ""), i = parseInt(i) || pte[r] || 0, !mte(n, i))) return ""; + var o = Ma("npm_config_" + r + "_proxy") || Ma(r + "_proxy") || Ma("npm_config_proxy") || Ma("all_proxy"); + return o && o.indexOf("://") === -1 && (o = r + "://" + o), o; + } + function mte(e21, t) { + var r = (Ma("npm_config_no_proxy") || Ma("no_proxy")).toLowerCase(); + return r ? r === "*" ? false : r.split(/[,\s]/).every(function(n) { + if (!n) return true; + var i = n.match(/^(.+):(\d+)$/), o = i ? i[1] : n, a = i ? parseInt(i[2]) : 0; + return a && a !== t ? true : /^[.*]/.test(o) ? (o.charAt(0) === "*" && (o = o.slice(1)), !dte.call(e21, o)) : e21 !== o; + }) : true; + } + function Ma(e21) { + return process.env[e21.toLowerCase()] || process.env[e21.toUpperCase()] || ""; + } + dR.getProxyForUrl = fte; +}); +var J_ = g((s0e, mR) => { + function hte(e21) { + r.debug = r, r.default = r, r.coerce = c, r.disable = a, r.enable = i, r.enabled = s, r.humanize = fb(), r.destroy = u, Object.keys(e21).forEach((l) => { + r[l] = e21[l]; + }), r.names = [], r.skips = [], r.formatters = {}; + function t(l) { + let p = 0; + for (let d = 0; d < l.length; d++) p = (p << 5) - p + l.charCodeAt(d), p |= 0; + return r.colors[Math.abs(p) % r.colors.length]; + } + r.selectColor = t; + function r(l) { + let p, d = null, f, m; + function h(...v) { + if (!h.enabled) return; + let y = h, x = Number(/* @__PURE__ */ new Date()), w = x - (p || x); + y.diff = w, y.prev = p, y.curr = x, p = x, v[0] = r.coerce(v[0]), typeof v[0] != "string" && v.unshift("%O"); + let S = 0; + v[0] = v[0].replace(/%([a-zA-Z%])/g, (A, C) => { + if (A === "%%") return "%"; + S++; + let ae = r.formatters[C]; + if (typeof ae == "function") { + let Ie = v[S]; + A = ae.call(y, Ie), v.splice(S, 1), S--; + } + return A; + }), r.formatArgs.call(y, v), (y.log || r.log).apply(y, v); + } + return h.namespace = l, h.useColors = r.useColors(), h.color = r.selectColor(l), h.extend = n, h.destroy = r.destroy, Object.defineProperty(h, "enabled", { enumerable: true, configurable: false, get: () => d !== null ? d : (f !== r.namespaces && (f = r.namespaces, m = r.enabled(l)), m), set: (v) => { + d = v; + } }), typeof r.init == "function" && r.init(h), h; + } + function n(l, p) { + let d = r(this.namespace + (typeof p > "u" ? ":" : p) + l); + return d.log = this.log, d; + } + function i(l) { + r.save(l), r.namespaces = l, r.names = [], r.skips = []; + let p = (typeof l == "string" ? l : "").trim().replace(/\s+/g, ",").split(",").filter(Boolean); + for (let d of p) d[0] === "-" ? r.skips.push(d.slice(1)) : r.names.push(d); + } + function o(l, p) { + let d = 0, f = 0, m = -1, h = 0; + for (; d < l.length; ) if (f < p.length && (p[f] === l[d] || p[f] === "*")) p[f] === "*" ? (m = f, h = d, f++) : (d++, f++); + else if (m !== -1) f = m + 1, h++, d = h; + else return false; + for (; f < p.length && p[f] === "*"; ) f++; + return f === p.length; + } + function a() { + let l = [...r.names, ...r.skips.map((p) => "-" + p)].join(","); + return r.enable(""), l; + } + function s(l) { + for (let p of r.skips) if (o(l, p)) return false; + for (let p of r.names) if (o(l, p)) return true; + return false; + } + function c(l) { + return l instanceof Error ? l.stack || l.message : l; + } + function u() { + console.warn("Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`."); + } + return r.enable(r.load()), r; + } + mR.exports = hte; +}); +var hR = g((rr, Zf) => { + rr.formatArgs = gte; + rr.save = yte; + rr.load = xte; + rr.useColors = vte; + rr.storage = bte(); + rr.destroy = /* @__PURE__ */ (() => { + let e21 = false; + return () => { + e21 || (e21 = true, console.warn("Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`.")); + }; + })(); + rr.colors = ["#0000CC", "#0000FF", "#0033CC", "#0033FF", "#0066CC", "#0066FF", "#0099CC", "#0099FF", "#00CC00", "#00CC33", "#00CC66", "#00CC99", "#00CCCC", "#00CCFF", "#3300CC", "#3300FF", "#3333CC", "#3333FF", "#3366CC", "#3366FF", "#3399CC", "#3399FF", "#33CC00", "#33CC33", "#33CC66", "#33CC99", "#33CCCC", "#33CCFF", "#6600CC", "#6600FF", "#6633CC", "#6633FF", "#66CC00", "#66CC33", "#9900CC", "#9900FF", "#9933CC", "#9933FF", "#99CC00", "#99CC33", "#CC0000", "#CC0033", "#CC0066", "#CC0099", "#CC00CC", "#CC00FF", "#CC3300", "#CC3333", "#CC3366", "#CC3399", "#CC33CC", "#CC33FF", "#CC6600", "#CC6633", "#CC9900", "#CC9933", "#CCCC00", "#CCCC33", "#FF0000", "#FF0033", "#FF0066", "#FF0099", "#FF00CC", "#FF00FF", "#FF3300", "#FF3333", "#FF3366", "#FF3399", "#FF33CC", "#FF33FF", "#FF6600", "#FF6633", "#FF9900", "#FF9933", "#FFCC00", "#FFCC33"]; + function vte() { + if (typeof window < "u" && window.process && (window.process.type === "renderer" || window.process.__nwjs)) return true; + if (typeof navigator < "u" && navigator.userAgent && navigator.userAgent.toLowerCase().match(/(edge|trident)\/(\d+)/)) return false; + let e21; + return typeof document < "u" && document.documentElement && document.documentElement.style && document.documentElement.style.WebkitAppearance || typeof window < "u" && window.console && (window.console.firebug || window.console.exception && window.console.table) || typeof navigator < "u" && navigator.userAgent && (e21 = navigator.userAgent.toLowerCase().match(/firefox\/(\d+)/)) && parseInt(e21[1], 10) >= 31 || typeof navigator < "u" && navigator.userAgent && navigator.userAgent.toLowerCase().match(/applewebkit\/(\d+)/); + } + function gte(e21) { + if (e21[0] = (this.useColors ? "%c" : "") + this.namespace + (this.useColors ? " %c" : " ") + e21[0] + (this.useColors ? "%c " : " ") + "+" + Zf.exports.humanize(this.diff), !this.useColors) return; + let t = "color: " + this.color; + e21.splice(1, 0, t, "color: inherit"); + let r = 0, n = 0; + e21[0].replace(/%[a-zA-Z%]/g, (i) => { + i !== "%%" && (r++, i === "%c" && (n = r)); + }), e21.splice(n, 0, t); + } + rr.log = console.debug || console.log || (() => { + }); + function yte(e21) { + try { + e21 ? rr.storage.setItem("debug", e21) : rr.storage.removeItem("debug"); + } catch { + } + } + function xte() { + let e21; + try { + e21 = rr.storage.getItem("debug") || rr.storage.getItem("DEBUG"); + } catch { + } + return !e21 && typeof process < "u" && "env" in process && (e21 = process.env.DEBUG), e21; + } + function bte() { + try { + return localStorage; + } catch { + } + } + Zf.exports = J_()(rr); + var { formatters: _te } = Zf.exports; + _te.j = function(e21) { + try { + return JSON.stringify(e21); + } catch (t) { + return "[UnexpectedJSONParseError]: " + t.message; + } + }; +}); +var gR = g((c0e, vR) => { + "use strict"; + vR.exports = (e21, t = process.argv) => { + let r = e21.startsWith("-") ? "" : e21.length === 1 ? "-" : "--", n = t.indexOf(r + e21), i = t.indexOf("--"); + return n !== -1 && (i === -1 || n < i); + }; +}); +var bR = g((u0e, xR) => { + "use strict"; + var wte = O("os"), yR = O("tty"), Ir = gR(), { env: ht } = process, di; + Ir("no-color") || Ir("no-colors") || Ir("color=false") || Ir("color=never") ? di = 0 : (Ir("color") || Ir("colors") || Ir("color=true") || Ir("color=always")) && (di = 1); + "FORCE_COLOR" in ht && (ht.FORCE_COLOR === "true" ? di = 1 : ht.FORCE_COLOR === "false" ? di = 0 : di = ht.FORCE_COLOR.length === 0 ? 1 : Math.min(parseInt(ht.FORCE_COLOR, 10), 3)); + function G_(e21) { + return e21 === 0 ? false : { level: e21, hasBasic: true, has256: e21 >= 2, has16m: e21 >= 3 }; + } + function W_(e21, t) { + if (di === 0) return 0; + if (Ir("color=16m") || Ir("color=full") || Ir("color=truecolor")) return 3; + if (Ir("color=256")) return 2; + if (e21 && !t && di === void 0) return 0; + let r = di || 0; + if (ht.TERM === "dumb") return r; + if (process.platform === "win32") { + let n = wte.release().split("."); + return Number(n[0]) >= 10 && Number(n[2]) >= 10586 ? Number(n[2]) >= 14931 ? 3 : 2 : 1; + } + if ("CI" in ht) return ["TRAVIS", "CIRCLECI", "APPVEYOR", "GITLAB_CI", "GITHUB_ACTIONS", "BUILDKITE"].some((n) => n in ht) || ht.CI_NAME === "codeship" ? 1 : r; + if ("TEAMCITY_VERSION" in ht) return /^(9\.(0*[1-9]\d*)\.|\d{2,}\.)/.test(ht.TEAMCITY_VERSION) ? 1 : 0; + if (ht.COLORTERM === "truecolor") return 3; + if ("TERM_PROGRAM" in ht) { + let n = parseInt((ht.TERM_PROGRAM_VERSION || "").split(".")[0], 10); + switch (ht.TERM_PROGRAM) { + case "iTerm.app": + return n >= 3 ? 3 : 2; + case "Apple_Terminal": + return 2; + } + } + return /-256(color)?$/i.test(ht.TERM) ? 2 : /^screen|^xterm|^vt100|^vt220|^rxvt|color|ansi|cygwin|linux/i.test(ht.TERM) || "COLORTERM" in ht ? 1 : r; + } + function $te(e21) { + let t = W_(e21, e21 && e21.isTTY); + return G_(t); + } + xR.exports = { supportsColor: $te, stdout: G_(W_(true, yR.isatty(1))), stderr: G_(W_(true, yR.isatty(2))) }; +}); +var wR = g((vt, Vf) => { + var Ste = O("tty"), Bf = O("util"); + vt.init = Pte; + vt.log = Tte; + vt.formatArgs = Ete; + vt.save = Ite; + vt.load = zte; + vt.useColors = kte; + vt.destroy = Bf.deprecate(() => { + }, "Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`."); + vt.colors = [6, 2, 3, 4, 5, 1]; + try { + let e21 = bR(); + e21 && (e21.stderr || e21).level >= 2 && (vt.colors = [20, 21, 26, 27, 32, 33, 38, 39, 40, 41, 42, 43, 44, 45, 56, 57, 62, 63, 68, 69, 74, 75, 76, 77, 78, 79, 80, 81, 92, 93, 98, 99, 112, 113, 128, 129, 134, 135, 148, 149, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 178, 179, 184, 185, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 214, 215, 220, 221]); + } catch { + } + vt.inspectOpts = Object.keys(process.env).filter((e21) => /^debug_/i.test(e21)).reduce((e21, t) => { + let r = t.substring(6).toLowerCase().replace(/_([a-z])/g, (i, o) => o.toUpperCase()), n = process.env[t]; + return /^(yes|on|true|enabled)$/i.test(n) ? n = true : /^(no|off|false|disabled)$/i.test(n) ? n = false : n === "null" ? n = null : n = Number(n), e21[r] = n, e21; + }, {}); + function kte() { + return "colors" in vt.inspectOpts ? !!vt.inspectOpts.colors : Ste.isatty(process.stderr.fd); + } + function Ete(e21) { + let { namespace: t, useColors: r } = this; + if (r) { + let n = this.color, i = "\x1B[3" + (n < 8 ? n : "8;5;" + n), o = ` ${i};1m${t} \x1B[0m`; + e21[0] = o + e21[0].split(` +`).join(` +` + o), e21.push(i + "m+" + Vf.exports.humanize(this.diff) + "\x1B[0m"); + } else e21[0] = Ote() + t + " " + e21[0]; + } + function Ote() { + return vt.inspectOpts.hideDate ? "" : (/* @__PURE__ */ new Date()).toISOString() + " "; + } + function Tte(...e21) { + return process.stderr.write(Bf.formatWithOptions(vt.inspectOpts, ...e21) + ` +`); + } + function Ite(e21) { + e21 ? process.env.DEBUG = e21 : delete process.env.DEBUG; + } + function zte() { + return process.env.DEBUG; + } + function Pte(e21) { + e21.inspectOpts = {}; + let t = Object.keys(vt.inspectOpts); + for (let r = 0; r < t.length; r++) e21.inspectOpts[t[r]] = vt.inspectOpts[t[r]]; + } + Vf.exports = J_()(vt); + var { formatters: _R } = Vf.exports; + _R.o = function(e21) { + return this.inspectOpts.colors = this.useColors, Bf.inspect(e21, this.inspectOpts).split(` +`).map((t) => t.trim()).join(" "); + }; + _R.O = function(e21) { + return this.inspectOpts.colors = this.useColors, Bf.inspect(e21, this.inspectOpts); + }; +}); +var $R = g((l0e, K_) => { + typeof process > "u" || process.type === "renderer" || process.browser === true || process.__nwjs ? K_.exports = hR() : K_.exports = wR(); +}); +var kR = g((p0e, SR) => { + var Vu; + SR.exports = function() { + if (!Vu) { + try { + Vu = $R()("follow-redirects"); + } catch { + } + typeof Vu != "function" && (Vu = function() { + }); + } + Vu.apply(null, arguments); + }; +}); +var zR = g((d0e, cw) => { + var Ju = O("url"), Hu = Ju.URL, jte = O("http"), Ate = O("https"), tw = O("stream").Writable, rw = O("assert"), ER = kR(); + (function() { + var t = typeof process < "u", r = typeof window < "u" && typeof document < "u", n = ro(Error.captureStackTrace); + !t && (r || !n) && console.warn("The follow-redirects package should be excluded from browser builds."); + })(); + var nw = false; + try { + rw(new Hu("")); + } catch (e21) { + nw = e21.code === "ERR_INVALID_URL"; + } + var Rte = ["auth", "host", "hostname", "href", "path", "pathname", "port", "protocol", "query", "search", "hash"], iw = ["abort", "aborted", "connect", "error", "socket", "timeout"], ow = /* @__PURE__ */ Object.create(null); + iw.forEach(function(e21) { + ow[e21] = function(t, r, n) { + this._redirectable.emit(e21, t, r, n); + }; + }); + var Y_ = Gu("ERR_INVALID_URL", "Invalid URL", TypeError), Q_ = Gu("ERR_FR_REDIRECTION_FAILURE", "Redirected request failed"), Cte = Gu("ERR_FR_TOO_MANY_REDIRECTS", "Maximum number of redirects exceeded", Q_), Nte = Gu("ERR_FR_MAX_BODY_LENGTH_EXCEEDED", "Request body larger than maxBodyLength limit"), Dte = Gu("ERR_STREAM_WRITE_AFTER_END", "write after end"), qte = tw.prototype.destroy || TR; + function nr(e21, t) { + tw.call(this), this._sanitizeOptions(e21), this._options = e21, this._ended = false, this._ending = false, this._redirectCount = 0, this._redirects = [], this._requestBodyLength = 0, this._requestBodyBuffers = [], t && this.on("response", t); + var r = this; + this._onNativeResponse = function(n) { + try { + r._processResponse(n); + } catch (i) { + r.emit("error", i instanceof Q_ ? i : new Q_({ cause: i })); + } + }, this._performRequest(); + } + nr.prototype = Object.create(tw.prototype); + nr.prototype.abort = function() { + sw(this._currentRequest), this._currentRequest.abort(), this.emit("abort"); + }; + nr.prototype.destroy = function(e21) { + return sw(this._currentRequest, e21), qte.call(this, e21), this; + }; + nr.prototype.write = function(e21, t, r) { + if (this._ending) throw new Dte(); + if (!to(e21) && !Mte(e21)) throw new TypeError("data should be a string, Buffer or Uint8Array"); + if (ro(t) && (r = t, t = null), e21.length === 0) { + r && r(); + return; + } + this._requestBodyLength + e21.length <= this._options.maxBodyLength ? (this._requestBodyLength += e21.length, this._requestBodyBuffers.push({ data: e21, encoding: t }), this._currentRequest.write(e21, t, r)) : (this.emit("error", new Nte()), this.abort()); + }; + nr.prototype.end = function(e21, t, r) { + if (ro(e21) ? (r = e21, e21 = t = null) : ro(t) && (r = t, t = null), !e21) this._ended = this._ending = true, this._currentRequest.end(null, null, r); + else { + var n = this, i = this._currentRequest; + this.write(e21, t, function() { + n._ended = true, i.end(null, null, r); + }), this._ending = true; + } + }; + nr.prototype.setHeader = function(e21, t) { + this._options.headers[e21] = t, this._currentRequest.setHeader(e21, t); + }; + nr.prototype.removeHeader = function(e21) { + delete this._options.headers[e21], this._currentRequest.removeHeader(e21); + }; + nr.prototype.setTimeout = function(e21, t) { + var r = this; + function n(a) { + a.setTimeout(e21), a.removeListener("timeout", a.destroy), a.addListener("timeout", a.destroy); + } + function i(a) { + r._timeout && clearTimeout(r._timeout), r._timeout = setTimeout(function() { + r.emit("timeout"), o(); + }, e21), n(a); + } + function o() { + r._timeout && (clearTimeout(r._timeout), r._timeout = null), r.removeListener("abort", o), r.removeListener("error", o), r.removeListener("response", o), r.removeListener("close", o), t && r.removeListener("timeout", t), r.socket || r._currentRequest.removeListener("socket", i); + } + return t && this.on("timeout", t), this.socket ? i(this.socket) : this._currentRequest.once("socket", i), this.on("socket", n), this.on("abort", o), this.on("error", o), this.on("response", o), this.on("close", o), this; + }; + ["flushHeaders", "getHeader", "setNoDelay", "setSocketKeepAlive"].forEach(function(e21) { + nr.prototype[e21] = function(t, r) { + return this._currentRequest[e21](t, r); + }; + }); + ["aborted", "connection", "socket"].forEach(function(e21) { + Object.defineProperty(nr.prototype, e21, { get: function() { + return this._currentRequest[e21]; + } }); + }); + nr.prototype._sanitizeOptions = function(e21) { + if (e21.headers || (e21.headers = {}), e21.host && (e21.hostname || (e21.hostname = e21.host), delete e21.host), !e21.pathname && e21.path) { + var t = e21.path.indexOf("?"); + t < 0 ? e21.pathname = e21.path : (e21.pathname = e21.path.substring(0, t), e21.search = e21.path.substring(t)); + } + }; + nr.prototype._performRequest = function() { + var e21 = this._options.protocol, t = this._options.nativeProtocols[e21]; + if (!t) throw new TypeError("Unsupported protocol " + e21); + if (this._options.agents) { + var r = e21.slice(0, -1); + this._options.agent = this._options.agents[r]; + } + var n = this._currentRequest = t.request(this._options, this._onNativeResponse); + n._redirectable = this; + for (var i of iw) n.on(i, ow[i]); + if (this._currentUrl = /^\//.test(this._options.path) ? Ju.format(this._options) : this._options.path, this._isRedirect) { + var o = 0, a = this, s = this._requestBodyBuffers; + (function c(u) { + if (n === a._currentRequest) if (u) a.emit("error", u); + else if (o < s.length) { + var l = s[o++]; + n.finished || n.write(l.data, l.encoding, c); + } else a._ended && n.end(); + })(); + } + }; + nr.prototype._processResponse = function(e21) { + var t = e21.statusCode; + this._options.trackRedirects && this._redirects.push({ url: this._currentUrl, headers: e21.headers, statusCode: t }); + var r = e21.headers.location; + if (!r || this._options.followRedirects === false || t < 300 || t >= 400) { + e21.responseUrl = this._currentUrl, e21.redirects = this._redirects, this.emit("response", e21), this._requestBodyBuffers = []; + return; + } + if (sw(this._currentRequest), e21.destroy(), ++this._redirectCount > this._options.maxRedirects) throw new Cte(); + var n, i = this._options.beforeRedirect; + i && (n = Object.assign({ Host: e21.req.getHeader("host") }, this._options.headers)); + var o = this._options.method; + ((t === 301 || t === 302) && this._options.method === "POST" || t === 303 && !/^(?:GET|HEAD)$/.test(this._options.method)) && (this._options.method = "GET", this._requestBodyBuffers = [], X_(/^content-/i, this._options.headers)); + var a = X_(/^host$/i, this._options.headers), s = aw(this._currentUrl), c = a || s.host, u = /^\w+:/.test(r) ? this._currentUrl : Ju.format(Object.assign(s, { host: c })), l = Ute(r, u); + if (ER("redirecting to", l.href), this._isRedirect = true, ew(l, this._options), (l.protocol !== s.protocol && l.protocol !== "https:" || l.host !== c && !Lte(l.host, c)) && X_(/^(?:(?:proxy-)?authorization|cookie)$/i, this._options.headers), ro(i)) { + var p = { headers: e21.headers, statusCode: t }, d = { url: u, method: o, headers: n }; + i(this._options, p, d), this._sanitizeOptions(this._options); + } + this._performRequest(); + }; + function OR(e21) { + var t = { maxRedirects: 21, maxBodyLength: 10485760 }, r = {}; + return Object.keys(e21).forEach(function(n) { + var i = n + ":", o = r[i] = e21[n], a = t[n] = Object.create(o); + function s(u, l, p) { + return Fte(u) ? u = ew(u) : to(u) ? u = ew(aw(u)) : (p = l, l = IR(u), u = { protocol: i }), ro(l) && (p = l, l = null), l = Object.assign({ maxRedirects: t.maxRedirects, maxBodyLength: t.maxBodyLength }, u, l), l.nativeProtocols = r, !to(l.host) && !to(l.hostname) && (l.hostname = "::1"), rw.equal(l.protocol, i, "protocol mismatch"), ER("options", l), new nr(l, p); + } + function c(u, l, p) { + var d = a.request(u, l, p); + return d.end(), d; + } + Object.defineProperties(a, { request: { value: s, configurable: true, enumerable: true, writable: true }, get: { value: c, configurable: true, enumerable: true, writable: true } }); + }), t; + } + function TR() { + } + function aw(e21) { + var t; + if (nw) t = new Hu(e21); + else if (t = IR(Ju.parse(e21)), !to(t.protocol)) throw new Y_({ input: e21 }); + return t; + } + function Ute(e21, t) { + return nw ? new Hu(e21, t) : aw(Ju.resolve(t, e21)); + } + function IR(e21) { + if (/^\[/.test(e21.hostname) && !/^\[[:0-9a-f]+\]$/i.test(e21.hostname)) throw new Y_({ input: e21.href || e21 }); + if (/^\[/.test(e21.host) && !/^\[[:0-9a-f]+\](:\d+)?$/i.test(e21.host)) throw new Y_({ input: e21.href || e21 }); + return e21; + } + function ew(e21, t) { + var r = t || {}; + for (var n of Rte) r[n] = e21[n]; + return r.hostname.startsWith("[") && (r.hostname = r.hostname.slice(1, -1)), r.port !== "" && (r.port = Number(r.port)), r.path = r.search ? r.pathname + r.search : r.pathname, r; + } + function X_(e21, t) { + var r; + for (var n in t) e21.test(n) && (r = t[n], delete t[n]); + return r === null || typeof r > "u" ? void 0 : String(r).trim(); + } + function Gu(e21, t, r) { + function n(i) { + ro(Error.captureStackTrace) && Error.captureStackTrace(this, this.constructor), Object.assign(this, i || {}), this.code = e21, this.message = this.cause ? t + ": " + this.cause.message : t; + } + return n.prototype = new (r || Error)(), Object.defineProperties(n.prototype, { constructor: { value: n, enumerable: false }, name: { value: "Error [" + e21 + "]", enumerable: false } }), n; + } + function sw(e21, t) { + for (var r of iw) e21.removeListener(r, ow[r]); + e21.on("error", TR), e21.destroy(t); + } + function Lte(e21, t) { + rw(to(e21) && to(t)); + var r = e21.length - t.length - 1; + return r > 0 && e21[r] === "." && e21.endsWith(t); + } + function to(e21) { + return typeof e21 == "string" || e21 instanceof String; + } + function ro(e21) { + return typeof e21 == "function"; + } + function Mte(e21) { + return typeof e21 == "object" && "length" in e21; + } + function Fte(e21) { + return Hu && e21 instanceof Hu; + } + cw.exports = OR({ http: jte, https: Ate }); + cw.exports.wrap = OR; +}); +var SC = g((f0e, $C) => { + "use strict"; + var Zte = H_(), Bte = O("crypto"), Vte = O("url"), Hte = fR(), Jte = O("http"), Gte = O("https"), Wte = O("http2"), Kte = O("util"), Xte = zR(), Yte = O("zlib"), QR = O("stream"), Qte = O("events"); + function Hr(e21) { + return e21 && typeof e21 == "object" && "default" in e21 ? e21 : { default: e21 }; + } + var eC = Hr(Zte), ere = Hr(Bte), tre = Hr(Vte), rre = Hr(Hte), nre = Hr(Jte), ire = Hr(Gte), tC = Hr(Wte), kw = Hr(Kte), ore = Hr(Xte), fi = Hr(Yte), dn = Hr(QR); + function rC(e21, t) { + return function() { + return e21.apply(t, arguments); + }; + } + var { toString: are } = Object.prototype, { getPrototypeOf: Ew } = Object, { iterator: em, toStringTag: nC } = Symbol, tm = /* @__PURE__ */ ((e21) => (t) => { + let r = are.call(t); + return e21[r] || (e21[r] = r.slice(8, -1).toLowerCase()); + })(/* @__PURE__ */ Object.create(null)), Jr = (e21) => (e21 = e21.toLowerCase(), (t) => tm(t) === e21), rm = (e21) => (t) => typeof t === e21, { isArray: Ja } = Array, Za = rm("undefined"); + function Xu(e21) { + return e21 !== null && !Za(e21) && e21.constructor !== null && !Za(e21.constructor) && ir(e21.constructor.isBuffer) && e21.constructor.isBuffer(e21); + } + var iC = Jr("ArrayBuffer"); + function sre(e21) { + let t; + return typeof ArrayBuffer < "u" && ArrayBuffer.isView ? t = ArrayBuffer.isView(e21) : t = e21 && e21.buffer && iC(e21.buffer), t; + } + var cre = rm("string"), ir = rm("function"), oC = rm("number"), Yu = (e21) => e21 !== null && typeof e21 == "object", ure = (e21) => e21 === true || e21 === false, Jf = (e21) => { + if (tm(e21) !== "object") return false; + let t = Ew(e21); + return (t === null || t === Object.prototype || Object.getPrototypeOf(t) === null) && !(nC in e21) && !(em in e21); + }, lre = (e21) => { + if (!Yu(e21) || Xu(e21)) return false; + try { + return Object.keys(e21).length === 0 && Object.getPrototypeOf(e21) === Object.prototype; + } catch { + return false; + } + }, pre = Jr("Date"), dre = Jr("File"), fre = Jr("Blob"), mre = Jr("FileList"), hre = (e21) => Yu(e21) && ir(e21.pipe), vre = (e21) => { + let t; + return e21 && (typeof FormData == "function" && e21 instanceof FormData || ir(e21.append) && ((t = tm(e21)) === "formdata" || t === "object" && ir(e21.toString) && e21.toString() === "[object FormData]")); + }, gre = Jr("URLSearchParams"), [yre, xre, bre, _re] = ["ReadableStream", "Request", "Response", "Headers"].map(Jr), wre = (e21) => e21.trim ? e21.trim() : e21.replace(/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g, ""); + function Qu(e21, t, { allOwnKeys: r = false } = {}) { + if (e21 === null || typeof e21 > "u") return; + let n, i; + if (typeof e21 != "object" && (e21 = [e21]), Ja(e21)) for (n = 0, i = e21.length; n < i; n++) t.call(null, e21[n], n, e21); + else { + if (Xu(e21)) return; + let o = r ? Object.getOwnPropertyNames(e21) : Object.keys(e21), a = o.length, s; + for (n = 0; n < a; n++) s = o[n], t.call(null, e21[s], s, e21); + } + } + function aC(e21, t) { + if (Xu(e21)) return null; + t = t.toLowerCase(); + let r = Object.keys(e21), n = r.length, i; + for (; n-- > 0; ) if (i = r[n], t === i.toLowerCase()) return i; + return null; + } + var no = typeof globalThis < "u" ? globalThis : typeof self < "u" ? self : typeof window < "u" ? window : global, sC = (e21) => !Za(e21) && e21 !== no; + function mw() { + let { caseless: e21, skipUndefined: t } = sC(this) && this || {}, r = {}, n = (i, o) => { + if (o === "__proto__" || o === "constructor" || o === "prototype") return; + let a = e21 && aC(r, o) || o; + Jf(r[a]) && Jf(i) ? r[a] = mw(r[a], i) : Jf(i) ? r[a] = mw({}, i) : Ja(i) ? r[a] = i.slice() : (!t || !Za(i)) && (r[a] = i); + }; + for (let i = 0, o = arguments.length; i < o; i++) arguments[i] && Qu(arguments[i], n); + return r; + } + var $re = (e21, t, r, { allOwnKeys: n } = {}) => (Qu(t, (i, o) => { + r && ir(i) ? Object.defineProperty(e21, o, { value: rC(i, r), writable: true, enumerable: true, configurable: true }) : Object.defineProperty(e21, o, { value: i, writable: true, enumerable: true, configurable: true }); + }, { allOwnKeys: n }), e21), Sre = (e21) => (e21.charCodeAt(0) === 65279 && (e21 = e21.slice(1)), e21), kre = (e21, t, r, n) => { + e21.prototype = Object.create(t.prototype, n), Object.defineProperty(e21.prototype, "constructor", { value: e21, writable: true, enumerable: false, configurable: true }), Object.defineProperty(e21, "super", { value: t.prototype }), r && Object.assign(e21.prototype, r); + }, Ere = (e21, t, r, n) => { + let i, o, a, s = {}; + if (t = t || {}, e21 == null) return t; + do { + for (i = Object.getOwnPropertyNames(e21), o = i.length; o-- > 0; ) a = i[o], (!n || n(a, e21, t)) && !s[a] && (t[a] = e21[a], s[a] = true); + e21 = r !== false && Ew(e21); + } while (e21 && (!r || r(e21, t)) && e21 !== Object.prototype); + return t; + }, Ore = (e21, t, r) => { + e21 = String(e21), (r === void 0 || r > e21.length) && (r = e21.length), r -= t.length; + let n = e21.indexOf(t, r); + return n !== -1 && n === r; + }, Tre = (e21) => { + if (!e21) return null; + if (Ja(e21)) return e21; + let t = e21.length; + if (!oC(t)) return null; + let r = new Array(t); + for (; t-- > 0; ) r[t] = e21[t]; + return r; + }, Ire = /* @__PURE__ */ ((e21) => (t) => e21 && t instanceof e21)(typeof Uint8Array < "u" && Ew(Uint8Array)), zre = (e21, t) => { + let n = (e21 && e21[em]).call(e21), i; + for (; (i = n.next()) && !i.done; ) { + let o = i.value; + t.call(e21, o[0], o[1]); + } + }, Pre = (e21, t) => { + let r, n = []; + for (; (r = e21.exec(t)) !== null; ) n.push(r); + return n; + }, jre = Jr("HTMLFormElement"), Are = (e21) => e21.toLowerCase().replace(/[-_\s]([a-z\d])(\w*)/g, function(r, n, i) { + return n.toUpperCase() + i; + }), PR = (({ hasOwnProperty: e21 }) => (t, r) => e21.call(t, r))(Object.prototype), Rre = Jr("RegExp"), cC = (e21, t) => { + let r = Object.getOwnPropertyDescriptors(e21), n = {}; + Qu(r, (i, o) => { + let a; + (a = t(i, o, e21)) !== false && (n[o] = a || i); + }), Object.defineProperties(e21, n); + }, Cre = (e21) => { + cC(e21, (t, r) => { + if (ir(e21) && ["arguments", "caller", "callee"].indexOf(r) !== -1) return false; + let n = e21[r]; + if (ir(n)) { + if (t.enumerable = false, "writable" in t) { + t.writable = false; + return; + } + t.set || (t.set = () => { + throw Error("Can not rewrite read-only method '" + r + "'"); + }); + } + }); + }, Nre = (e21, t) => { + let r = {}, n = (i) => { + i.forEach((o) => { + r[o] = true; + }); + }; + return Ja(e21) ? n(e21) : n(String(e21).split(t)), r; + }, Dre = () => { + }, qre = (e21, t) => e21 != null && Number.isFinite(e21 = +e21) ? e21 : t; + function Ure(e21) { + return !!(e21 && ir(e21.append) && e21[nC] === "FormData" && e21[em]); + } + var Lre = (e21) => { + let t = new Array(10), r = (n, i) => { + if (Yu(n)) { + if (t.indexOf(n) >= 0) return; + if (Xu(n)) return n; + if (!("toJSON" in n)) { + t[i] = n; + let o = Ja(n) ? [] : {}; + return Qu(n, (a, s) => { + let c = r(a, i + 1); + !Za(c) && (o[s] = c); + }), t[i] = void 0, o; + } + } + return n; + }; + return r(e21, 0); + }, Mre = Jr("AsyncFunction"), Fre = (e21) => e21 && (Yu(e21) || ir(e21)) && ir(e21.then) && ir(e21.catch), uC = ((e21, t) => e21 ? setImmediate : t ? ((r, n) => (no.addEventListener("message", ({ source: i, data: o }) => { + i === no && o === r && n.length && n.shift()(); + }, false), (i) => { + n.push(i), no.postMessage(r, "*"); + }))(`axios@${Math.random()}`, []) : (r) => setTimeout(r))(typeof setImmediate == "function", ir(no.postMessage)), Zre = typeof queueMicrotask < "u" ? queueMicrotask.bind(no) : typeof process < "u" && process.nextTick || uC, Bre = (e21) => e21 != null && ir(e21[em]), _ = { isArray: Ja, isArrayBuffer: iC, isBuffer: Xu, isFormData: vre, isArrayBufferView: sre, isString: cre, isNumber: oC, isBoolean: ure, isObject: Yu, isPlainObject: Jf, isEmptyObject: lre, isReadableStream: yre, isRequest: xre, isResponse: bre, isHeaders: _re, isUndefined: Za, isDate: pre, isFile: dre, isBlob: fre, isRegExp: Rre, isFunction: ir, isStream: hre, isURLSearchParams: gre, isTypedArray: Ire, isFileList: mre, forEach: Qu, merge: mw, extend: $re, trim: wre, stripBOM: Sre, inherits: kre, toFlatObject: Ere, kindOf: tm, kindOfTest: Jr, endsWith: Ore, toArray: Tre, forEachEntry: zre, matchAll: Pre, isHTMLForm: jre, hasOwnProperty: PR, hasOwnProp: PR, reduceDescriptors: cC, freezeMethods: Cre, toObjectSet: Nre, toCamelCase: Are, noop: Dre, toFiniteNumber: qre, findKey: aC, global: no, isContextDefined: sC, isSpecCompliantForm: Ure, toJSONObject: Lre, isAsyncFn: Mre, isThenable: Fre, setImmediate: uC, asap: Zre, isIterable: Bre }, Bt = class e21 extends Error { + static from(t, r, n, i, o, a) { + let s = new e21(t.message, r || t.code, n, i, o); + return s.cause = t, s.name = t.name, a && Object.assign(s, a), s; + } + constructor(t, r, n, i, o) { + super(t), this.name = "AxiosError", this.isAxiosError = true, r && (this.code = r), n && (this.config = n), i && (this.request = i), o && (this.response = o, this.status = o.status); + } + toJSON() { + return { message: this.message, name: this.name, description: this.description, number: this.number, fileName: this.fileName, lineNumber: this.lineNumber, columnNumber: this.columnNumber, stack: this.stack, config: _.toJSONObject(this.config), code: this.code, status: this.status }; + } + }; + Bt.ERR_BAD_OPTION_VALUE = "ERR_BAD_OPTION_VALUE"; + Bt.ERR_BAD_OPTION = "ERR_BAD_OPTION"; + Bt.ECONNABORTED = "ECONNABORTED"; + Bt.ETIMEDOUT = "ETIMEDOUT"; + Bt.ERR_NETWORK = "ERR_NETWORK"; + Bt.ERR_FR_TOO_MANY_REDIRECTS = "ERR_FR_TOO_MANY_REDIRECTS"; + Bt.ERR_DEPRECATED = "ERR_DEPRECATED"; + Bt.ERR_BAD_RESPONSE = "ERR_BAD_RESPONSE"; + Bt.ERR_BAD_REQUEST = "ERR_BAD_REQUEST"; + Bt.ERR_CANCELED = "ERR_CANCELED"; + Bt.ERR_NOT_SUPPORT = "ERR_NOT_SUPPORT"; + Bt.ERR_INVALID_URL = "ERR_INVALID_URL"; + var R = Bt; + function hw(e21) { + return _.isPlainObject(e21) || _.isArray(e21); + } + function lC(e21) { + return _.endsWith(e21, "[]") ? e21.slice(0, -2) : e21; + } + function jR(e21, t, r) { + return e21 ? e21.concat(t).map(function(i, o) { + return i = lC(i), !r && o ? "[" + i + "]" : i; + }).join(r ? "." : "") : t; + } + function Vre(e21) { + return _.isArray(e21) && !e21.some(hw); + } + var Hre = _.toFlatObject(_, {}, null, function(t) { + return /^is[A-Z]/.test(t); + }); + function nm(e21, t, r) { + if (!_.isObject(e21)) throw new TypeError("target must be an object"); + t = t || new (eC.default || FormData)(), r = _.toFlatObject(r, { metaTokens: true, dots: false, indexes: false }, false, function(h, v) { + return !_.isUndefined(v[h]); + }); + let n = r.metaTokens, i = r.visitor || l, o = r.dots, a = r.indexes, c = (r.Blob || typeof Blob < "u" && Blob) && _.isSpecCompliantForm(t); + if (!_.isFunction(i)) throw new TypeError("visitor must be a function"); + function u(m) { + if (m === null) return ""; + if (_.isDate(m)) return m.toISOString(); + if (_.isBoolean(m)) return m.toString(); + if (!c && _.isBlob(m)) throw new R("Blob is not supported. Use a Buffer instead."); + return _.isArrayBuffer(m) || _.isTypedArray(m) ? c && typeof Blob == "function" ? new Blob([m]) : Buffer.from(m) : m; + } + function l(m, h, v) { + let y = m; + if (m && !v && typeof m == "object") { + if (_.endsWith(h, "{}")) h = n ? h : h.slice(0, -2), m = JSON.stringify(m); + else if (_.isArray(m) && Vre(m) || (_.isFileList(m) || _.endsWith(h, "[]")) && (y = _.toArray(m))) return h = lC(h), y.forEach(function(w, S) { + !(_.isUndefined(w) || w === null) && t.append(a === true ? jR([h], S, o) : a === null ? h : h + "[]", u(w)); + }), false; + } + return hw(m) ? true : (t.append(jR(v, h, o), u(m)), false); + } + let p = [], d = Object.assign(Hre, { defaultVisitor: l, convertValue: u, isVisitable: hw }); + function f(m, h) { + if (!_.isUndefined(m)) { + if (p.indexOf(m) !== -1) throw Error("Circular reference detected in " + h.join(".")); + p.push(m), _.forEach(m, function(y, x) { + (!(_.isUndefined(y) || y === null) && i.call(t, y, _.isString(x) ? x.trim() : x, h, d)) === true && f(y, h ? h.concat(x) : [x]); + }), p.pop(); + } + } + if (!_.isObject(e21)) throw new TypeError("data must be an object"); + return f(e21), t; + } + function AR(e21) { + let t = { "!": "%21", "'": "%27", "(": "%28", ")": "%29", "~": "%7E", "%20": "+", "%00": "\0" }; + return encodeURIComponent(e21).replace(/[!'()~]|%20|%00/g, function(n) { + return t[n]; + }); + } + function pC(e21, t) { + this._pairs = [], e21 && nm(e21, this, t); + } + var dC = pC.prototype; + dC.append = function(t, r) { + this._pairs.push([t, r]); + }; + dC.toString = function(t) { + let r = t ? function(n) { + return t.call(this, n, AR); + } : AR; + return this._pairs.map(function(i) { + return r(i[0]) + "=" + r(i[1]); + }, "").join("&"); + }; + function Jre(e21) { + return encodeURIComponent(e21).replace(/%3A/gi, ":").replace(/%24/g, "$").replace(/%2C/gi, ",").replace(/%20/g, "+"); + } + function Ow(e21, t, r) { + if (!t) return e21; + let n = r && r.encode || Jre, i = _.isFunction(r) ? { serialize: r } : r, o = i && i.serialize, a; + if (o ? a = o(t, i) : a = _.isURLSearchParams(t) ? t.toString() : new pC(t, i).toString(n), a) { + let s = e21.indexOf("#"); + s !== -1 && (e21 = e21.slice(0, s)), e21 += (e21.indexOf("?") === -1 ? "?" : "&") + a; + } + return e21; + } + var vw = class { + constructor() { + this.handlers = []; + } + use(t, r, n) { + return this.handlers.push({ fulfilled: t, rejected: r, synchronous: n ? n.synchronous : false, runWhen: n ? n.runWhen : null }), this.handlers.length - 1; + } + eject(t) { + this.handlers[t] && (this.handlers[t] = null); + } + clear() { + this.handlers && (this.handlers = []); + } + forEach(t) { + _.forEach(this.handlers, function(n) { + n !== null && t(n); + }); + } + }, RR = vw, im = { silentJSONParsing: true, forcedJSONParsing: true, clarifyTimeoutError: false, legacyInterceptorReqResOrdering: true }, Gre = tre.default.URLSearchParams, uw = "abcdefghijklmnopqrstuvwxyz", CR = "0123456789", fC = { DIGIT: CR, ALPHA: uw, ALPHA_DIGIT: uw + uw.toUpperCase() + CR }, Wre = (e21 = 16, t = fC.ALPHA_DIGIT) => { + let r = "", { length: n } = t, i = new Uint32Array(e21); + ere.default.randomFillSync(i); + for (let o = 0; o < e21; o++) r += t[i[o] % n]; + return r; + }, Kre = { isNode: true, classes: { URLSearchParams: Gre, FormData: eC.default, Blob: typeof Blob < "u" && Blob || null }, ALPHABET: fC, generateString: Wre, protocols: ["http", "https", "file", "data"] }, Tw = typeof window < "u" && typeof document < "u", gw = typeof navigator == "object" && navigator || void 0, Xre = Tw && (!gw || ["ReactNative", "NativeScript", "NS"].indexOf(gw.product) < 0), Yre = typeof WorkerGlobalScope < "u" && self instanceof WorkerGlobalScope && typeof self.importScripts == "function", Qre = Tw && window.location.href || "http://localhost", ene = Object.freeze({ __proto__: null, hasBrowserEnv: Tw, hasStandardBrowserWebWorkerEnv: Yre, hasStandardBrowserEnv: Xre, navigator: gw, origin: Qre }), Xe = { ...ene, ...Kre }; + function tne(e21, t) { + return nm(e21, new Xe.classes.URLSearchParams(), { visitor: function(r, n, i, o) { + return Xe.isNode && _.isBuffer(r) ? (this.append(n, r.toString("base64")), false) : o.defaultVisitor.apply(this, arguments); + }, ...t }); + } + function rne(e21) { + return _.matchAll(/\w+|\[(\w*)]/g, e21).map((t) => t[0] === "[]" ? "" : t[1] || t[0]); + } + function nne(e21) { + let t = {}, r = Object.keys(e21), n, i = r.length, o; + for (n = 0; n < i; n++) o = r[n], t[o] = e21[o]; + return t; + } + function mC(e21) { + function t(r, n, i, o) { + let a = r[o++]; + if (a === "__proto__") return true; + let s = Number.isFinite(+a), c = o >= r.length; + return a = !a && _.isArray(i) ? i.length : a, c ? (_.hasOwnProp(i, a) ? i[a] = [i[a], n] : i[a] = n, !s) : ((!i[a] || !_.isObject(i[a])) && (i[a] = []), t(r, n, i[a], o) && _.isArray(i[a]) && (i[a] = nne(i[a])), !s); + } + if (_.isFormData(e21) && _.isFunction(e21.entries)) { + let r = {}; + return _.forEachEntry(e21, (n, i) => { + t(rne(n), i, r, 0); + }), r; + } + return null; + } + function ine(e21, t, r) { + if (_.isString(e21)) try { + return (t || JSON.parse)(e21), _.trim(e21); + } catch (n) { + if (n.name !== "SyntaxError") throw n; + } + return (r || JSON.stringify)(e21); + } + var Iw = { transitional: im, adapter: ["xhr", "http", "fetch"], transformRequest: [function(t, r) { + let n = r.getContentType() || "", i = n.indexOf("application/json") > -1, o = _.isObject(t); + if (o && _.isHTMLForm(t) && (t = new FormData(t)), _.isFormData(t)) return i ? JSON.stringify(mC(t)) : t; + if (_.isArrayBuffer(t) || _.isBuffer(t) || _.isStream(t) || _.isFile(t) || _.isBlob(t) || _.isReadableStream(t)) return t; + if (_.isArrayBufferView(t)) return t.buffer; + if (_.isURLSearchParams(t)) return r.setContentType("application/x-www-form-urlencoded;charset=utf-8", false), t.toString(); + let s; + if (o) { + if (n.indexOf("application/x-www-form-urlencoded") > -1) return tne(t, this.formSerializer).toString(); + if ((s = _.isFileList(t)) || n.indexOf("multipart/form-data") > -1) { + let c = this.env && this.env.FormData; + return nm(s ? { "files[]": t } : t, c && new c(), this.formSerializer); + } + } + return o || i ? (r.setContentType("application/json", false), ine(t)) : t; + }], transformResponse: [function(t) { + let r = this.transitional || Iw.transitional, n = r && r.forcedJSONParsing, i = this.responseType === "json"; + if (_.isResponse(t) || _.isReadableStream(t)) return t; + if (t && _.isString(t) && (n && !this.responseType || i)) { + let a = !(r && r.silentJSONParsing) && i; + try { + return JSON.parse(t, this.parseReviver); + } catch (s) { + if (a) throw s.name === "SyntaxError" ? R.from(s, R.ERR_BAD_RESPONSE, this, null, this.response) : s; + } + } + return t; + }], timeout: 0, xsrfCookieName: "XSRF-TOKEN", xsrfHeaderName: "X-XSRF-TOKEN", maxContentLength: -1, maxBodyLength: -1, env: { FormData: Xe.classes.FormData, Blob: Xe.classes.Blob }, validateStatus: function(t) { + return t >= 200 && t < 300; + }, headers: { common: { Accept: "application/json, text/plain, */*", "Content-Type": void 0 } } }; + _.forEach(["delete", "get", "head", "post", "put", "patch"], (e21) => { + Iw.headers[e21] = {}; + }); + var zw = Iw, one = _.toObjectSet(["age", "authorization", "content-length", "content-type", "etag", "expires", "from", "host", "if-modified-since", "if-unmodified-since", "last-modified", "location", "max-forwards", "proxy-authorization", "referer", "retry-after", "user-agent"]), ane = (e21) => { + let t = {}, r, n, i; + return e21 && e21.split(` +`).forEach(function(a) { + i = a.indexOf(":"), r = a.substring(0, i).trim().toLowerCase(), n = a.substring(i + 1).trim(), !(!r || t[r] && one[r]) && (r === "set-cookie" ? t[r] ? t[r].push(n) : t[r] = [n] : t[r] = t[r] ? t[r] + ", " + n : n); + }), t; + }, NR = /* @__PURE__ */ Symbol("internals"); + function Wu(e21) { + return e21 && String(e21).trim().toLowerCase(); + } + function Gf(e21) { + return e21 === false || e21 == null ? e21 : _.isArray(e21) ? e21.map(Gf) : String(e21); + } + function sne(e21) { + let t = /* @__PURE__ */ Object.create(null), r = /([^\s,;=]+)\s*(?:=\s*([^,;]+))?/g, n; + for (; n = r.exec(e21); ) t[n[1]] = n[2]; + return t; + } + var cne = (e21) => /^[-_a-zA-Z0-9^`|~,!#$%&'*+.]+$/.test(e21.trim()); + function lw(e21, t, r, n, i) { + if (_.isFunction(n)) return n.call(this, t, r); + if (i && (t = r), !!_.isString(t)) { + if (_.isString(n)) return t.indexOf(n) !== -1; + if (_.isRegExp(n)) return n.test(t); + } + } + function une(e21) { + return e21.trim().toLowerCase().replace(/([a-z\d])(\w*)/g, (t, r, n) => r.toUpperCase() + n); + } + function lne(e21, t) { + let r = _.toCamelCase(" " + t); + ["get", "set", "has"].forEach((n) => { + Object.defineProperty(e21, n + r, { value: function(i, o, a) { + return this[n].call(this, t, i, o, a); + }, configurable: true }); + }); + } + var Ba = class { + constructor(t) { + t && this.set(t); + } + set(t, r, n) { + let i = this; + function o(s, c, u) { + let l = Wu(c); + if (!l) throw new Error("header name must be a non-empty string"); + let p = _.findKey(i, l); + (!p || i[p] === void 0 || u === true || u === void 0 && i[p] !== false) && (i[p || c] = Gf(s)); + } + let a = (s, c) => _.forEach(s, (u, l) => o(u, l, c)); + if (_.isPlainObject(t) || t instanceof this.constructor) a(t, r); + else if (_.isString(t) && (t = t.trim()) && !cne(t)) a(ane(t), r); + else if (_.isObject(t) && _.isIterable(t)) { + let s = {}, c, u; + for (let l of t) { + if (!_.isArray(l)) throw TypeError("Object iterator must return a key-value pair"); + s[u = l[0]] = (c = s[u]) ? _.isArray(c) ? [...c, l[1]] : [c, l[1]] : l[1]; + } + a(s, r); + } else t != null && o(r, t, n); + return this; + } + get(t, r) { + if (t = Wu(t), t) { + let n = _.findKey(this, t); + if (n) { + let i = this[n]; + if (!r) return i; + if (r === true) return sne(i); + if (_.isFunction(r)) return r.call(this, i, n); + if (_.isRegExp(r)) return r.exec(i); + throw new TypeError("parser must be boolean|regexp|function"); + } + } + } + has(t, r) { + if (t = Wu(t), t) { + let n = _.findKey(this, t); + return !!(n && this[n] !== void 0 && (!r || lw(this, this[n], n, r))); + } + return false; + } + delete(t, r) { + let n = this, i = false; + function o(a) { + if (a = Wu(a), a) { + let s = _.findKey(n, a); + s && (!r || lw(n, n[s], s, r)) && (delete n[s], i = true); + } + } + return _.isArray(t) ? t.forEach(o) : o(t), i; + } + clear(t) { + let r = Object.keys(this), n = r.length, i = false; + for (; n--; ) { + let o = r[n]; + (!t || lw(this, this[o], o, t, true)) && (delete this[o], i = true); + } + return i; + } + normalize(t) { + let r = this, n = {}; + return _.forEach(this, (i, o) => { + let a = _.findKey(n, o); + if (a) { + r[a] = Gf(i), delete r[o]; + return; + } + let s = t ? une(o) : String(o).trim(); + s !== o && delete r[o], r[s] = Gf(i), n[s] = true; + }), this; + } + concat(...t) { + return this.constructor.concat(this, ...t); + } + toJSON(t) { + let r = /* @__PURE__ */ Object.create(null); + return _.forEach(this, (n, i) => { + n != null && n !== false && (r[i] = t && _.isArray(n) ? n.join(", ") : n); + }), r; + } + [Symbol.iterator]() { + return Object.entries(this.toJSON())[Symbol.iterator](); + } + toString() { + return Object.entries(this.toJSON()).map(([t, r]) => t + ": " + r).join(` +`); + } + getSetCookie() { + return this.get("set-cookie") || []; + } + get [Symbol.toStringTag]() { + return "AxiosHeaders"; + } + static from(t) { + return t instanceof this ? t : new this(t); + } + static concat(t, ...r) { + let n = new this(t); + return r.forEach((i) => n.set(i)), n; + } + static accessor(t) { + let n = (this[NR] = this[NR] = { accessors: {} }).accessors, i = this.prototype; + function o(a) { + let s = Wu(a); + n[s] || (lne(i, a), n[s] = true); + } + return _.isArray(t) ? t.forEach(o) : o(t), this; + } + }; + Ba.accessor(["Content-Type", "Content-Length", "Accept", "Accept-Encoding", "User-Agent", "Authorization"]); + _.reduceDescriptors(Ba.prototype, ({ value: e21 }, t) => { + let r = t[0].toUpperCase() + t.slice(1); + return { get: () => e21, set(n) { + this[r] = n; + } }; + }); + _.freezeMethods(Ba); + var or = Ba; + function pw(e21, t) { + let r = this || zw, n = t || r, i = or.from(n.headers), o = n.data; + return _.forEach(e21, function(s) { + o = s.call(r, o, i.normalize(), t ? t.status : void 0); + }), i.normalize(), o; + } + function hC(e21) { + return !!(e21 && e21.__CANCEL__); + } + var yw = class extends R { + constructor(t, r, n) { + super(t ?? "canceled", R.ERR_CANCELED, r, n), this.name = "CanceledError", this.__CANCEL__ = true; + } + }, oo = yw; + function Fa(e21, t, r) { + let n = r.config.validateStatus; + !r.status || !n || n(r.status) ? e21(r) : t(new R("Request failed with status code " + r.status, [R.ERR_BAD_REQUEST, R.ERR_BAD_RESPONSE][Math.floor(r.status / 100) - 4], r.config, r.request, r)); + } + function pne(e21) { + return typeof e21 != "string" ? false : /^([a-z][a-z\d+\-.]*:)?\/\//i.test(e21); + } + function dne(e21, t) { + return t ? e21.replace(/\/?\/$/, "") + "/" + t.replace(/^\/+/, "") : e21; + } + function Pw(e21, t, r) { + let n = !pne(t); + return e21 && (n || r == false) ? dne(e21, t) : t; + } + var Xf = "1.13.5"; + function vC(e21) { + let t = /^([-+\w]{1,25})(:?\/\/|:)/.exec(e21); + return t && t[1] || ""; + } + var fne = /^(?:([^;]+);)?(?:[^;]+;)?(base64|),([\s\S]*)$/; + function mne(e21, t, r) { + let n = r && r.Blob || Xe.classes.Blob, i = vC(e21); + if (t === void 0 && n && (t = true), i === "data") { + e21 = i.length ? e21.slice(i.length + 1) : e21; + let o = fne.exec(e21); + if (!o) throw new R("Invalid URL", R.ERR_INVALID_URL); + let a = o[1], s = o[2], c = o[3], u = Buffer.from(decodeURIComponent(c), s ? "base64" : "utf8"); + if (t) { + if (!n) throw new R("Blob is not supported", R.ERR_NOT_SUPPORT); + return new n([u], { type: a }); + } + return u; + } + throw new R("Unsupported protocol " + i, R.ERR_NOT_SUPPORT); + } + var dw = /* @__PURE__ */ Symbol("internals"), xw = class extends dn.default.Transform { + constructor(t) { + t = _.toFlatObject(t, { maxRate: 0, chunkSize: 64 * 1024, minChunkSize: 100, timeWindow: 500, ticksRate: 2, samplesCount: 15 }, null, (n, i) => !_.isUndefined(i[n])), super({ readableHighWaterMark: t.chunkSize }); + let r = this[dw] = { timeWindow: t.timeWindow, chunkSize: t.chunkSize, maxRate: t.maxRate, minChunkSize: t.minChunkSize, bytesSeen: 0, isCaptured: false, notifiedBytesLoaded: 0, ts: Date.now(), bytes: 0, onReadCallback: null }; + this.on("newListener", (n) => { + n === "progress" && (r.isCaptured || (r.isCaptured = true)); + }); + } + _read(t) { + let r = this[dw]; + return r.onReadCallback && r.onReadCallback(), super._read(t); + } + _transform(t, r, n) { + let i = this[dw], o = i.maxRate, a = this.readableHighWaterMark, s = i.timeWindow, c = 1e3 / s, u = o / c, l = i.minChunkSize !== false ? Math.max(i.minChunkSize, u * 0.01) : 0, p = (f, m) => { + let h = Buffer.byteLength(f); + i.bytesSeen += h, i.bytes += h, i.isCaptured && this.emit("progress", i.bytesSeen), this.push(f) ? process.nextTick(m) : i.onReadCallback = () => { + i.onReadCallback = null, process.nextTick(m); + }; + }, d = (f, m) => { + let h = Buffer.byteLength(f), v = null, y = a, x, w = 0; + if (o) { + let S = Date.now(); + (!i.ts || (w = S - i.ts) >= s) && (i.ts = S, x = u - i.bytes, i.bytes = x < 0 ? -x : 0, w = 0), x = u - i.bytes; + } + if (o) { + if (x <= 0) return setTimeout(() => { + m(null, f); + }, s - w); + x < y && (y = x); + } + y && h > y && h - y > l && (v = f.subarray(y), f = f.subarray(0, y)), p(f, v ? () => { + process.nextTick(m, null, v); + } : m); + }; + d(t, function f(m, h) { + if (m) return n(m); + h ? d(h, f) : n(null); + }); + } + }, DR = xw, { asyncIterator: qR } = Symbol, hne = async function* (e21) { + e21.stream ? yield* e21.stream() : e21.arrayBuffer ? yield await e21.arrayBuffer() : e21[qR] ? yield* e21[qR]() : yield e21; + }, gC = hne, vne = Xe.ALPHABET.ALPHA_DIGIT + "-_", Ku = typeof TextEncoder == "function" ? new TextEncoder() : new kw.default.TextEncoder(), io = `\r +`, gne = Ku.encode(io), yne = 2, bw = class { + constructor(t, r) { + let { escapeName: n } = this.constructor, i = _.isString(r), o = `Content-Disposition: form-data; name="${n(t)}"${!i && r.name ? `; filename="${n(r.name)}"` : ""}${io}`; + i ? r = Ku.encode(String(r).replace(/\r?\n|\r\n?/g, io)) : o += `Content-Type: ${r.type || "application/octet-stream"}${io}`, this.headers = Ku.encode(o + io), this.contentLength = i ? r.byteLength : r.size, this.size = this.headers.byteLength + this.contentLength + yne, this.name = t, this.value = r; + } + async *encode() { + yield this.headers; + let { value: t } = this; + _.isTypedArray(t) ? yield t : yield* gC(t), yield gne; + } + static escapeName(t) { + return String(t).replace(/[\r\n"]/g, (r) => ({ "\r": "%0D", "\n": "%0A", '"': "%22" })[r]); + } + }, xne = (e21, t, r) => { + let { tag: n = "form-data-boundary", size: i = 25, boundary: o = n + "-" + Xe.generateString(i, vne) } = r || {}; + if (!_.isFormData(e21)) throw TypeError("FormData instance required"); + if (o.length < 1 || o.length > 70) throw Error("boundary must be 10-70 characters long"); + let a = Ku.encode("--" + o + io), s = Ku.encode("--" + o + "--" + io), c = s.byteLength, u = Array.from(e21.entries()).map(([p, d]) => { + let f = new bw(p, d); + return c += f.size, f; + }); + c += a.byteLength * u.length, c = _.toFiniteNumber(c); + let l = { "Content-Type": `multipart/form-data; boundary=${o}` }; + return Number.isFinite(c) && (l["Content-Length"] = c), t && t(l), QR.Readable.from((async function* () { + for (let p of u) yield a, yield* p.encode(); + yield s; + })()); + }, bne = xne, _w = class extends dn.default.Transform { + __transform(t, r, n) { + this.push(t), n(); + } + _transform(t, r, n) { + if (t.length !== 0 && (this._transform = this.__transform, t[0] !== 120)) { + let i = Buffer.alloc(2); + i[0] = 120, i[1] = 156, this.push(i, r); + } + this.__transform(t, r, n); + } + }, _ne = _w, wne = (e21, t) => _.isAsyncFn(e21) ? function(...r) { + let n = r.pop(); + e21.apply(this, r).then((i) => { + try { + t ? n(null, ...t(i)) : n(null, i); + } catch (o) { + n(o); + } + }, n); + } : e21, $ne = wne; + function Sne(e21, t) { + e21 = e21 || 10; + let r = new Array(e21), n = new Array(e21), i = 0, o = 0, a; + return t = t !== void 0 ? t : 1e3, function(c) { + let u = Date.now(), l = n[o]; + a || (a = u), r[i] = c, n[i] = u; + let p = o, d = 0; + for (; p !== i; ) d += r[p++], p = p % e21; + if (i = (i + 1) % e21, i === o && (o = (o + 1) % e21), u - a < t) return; + let f = l && u - l; + return f ? Math.round(d * 1e3 / f) : void 0; + }; + } + function kne(e21, t) { + let r = 0, n = 1e3 / t, i, o, a = (u, l = Date.now()) => { + r = l, i = null, o && (clearTimeout(o), o = null), e21(...u); + }; + return [(...u) => { + let l = Date.now(), p = l - r; + p >= n ? a(u, l) : (i = u, o || (o = setTimeout(() => { + o = null, a(i); + }, n - p))); + }, () => i && a(i)]; + } + var Va = (e21, t, r = 3) => { + let n = 0, i = Sne(50, 250); + return kne((o) => { + let a = o.loaded, s = o.lengthComputable ? o.total : void 0, c = a - n, u = i(c), l = a <= s; + n = a; + let p = { loaded: a, total: s, progress: s ? a / s : void 0, bytes: c, rate: u || void 0, estimated: u && s && l ? (s - a) / u : void 0, event: o, lengthComputable: s != null, [t ? "download" : "upload"]: true }; + e21(p); + }, r); + }, Yf = (e21, t) => { + let r = e21 != null; + return [(n) => t[0]({ lengthComputable: r, total: e21, loaded: n }), t[1]]; + }, Qf = (e21) => (...t) => _.asap(() => e21(...t)); + function Ene(e21) { + if (!e21 || typeof e21 != "string" || !e21.startsWith("data:")) return 0; + let t = e21.indexOf(","); + if (t < 0) return 0; + let r = e21.slice(5, t), n = e21.slice(t + 1); + if (/;base64/i.test(r)) { + let o = n.length, a = n.length; + for (let d = 0; d < a; d++) if (n.charCodeAt(d) === 37 && d + 2 < a) { + let f = n.charCodeAt(d + 1), m = n.charCodeAt(d + 2); + (f >= 48 && f <= 57 || f >= 65 && f <= 70 || f >= 97 && f <= 102) && (m >= 48 && m <= 57 || m >= 65 && m <= 70 || m >= 97 && m <= 102) && (o -= 2, d += 2); + } + let s = 0, c = a - 1, u = (d) => d >= 2 && n.charCodeAt(d - 2) === 37 && n.charCodeAt(d - 1) === 51 && (n.charCodeAt(d) === 68 || n.charCodeAt(d) === 100); + c >= 0 && (n.charCodeAt(c) === 61 ? (s++, c--) : u(c) && (s++, c -= 3)), s === 1 && c >= 0 && (n.charCodeAt(c) === 61 || u(c)) && s++; + let p = Math.floor(o / 4) * 3 - (s || 0); + return p > 0 ? p : 0; + } + return Buffer.byteLength(n, "utf8"); + } + var UR = { flush: fi.default.constants.Z_SYNC_FLUSH, finishFlush: fi.default.constants.Z_SYNC_FLUSH }, One = { flush: fi.default.constants.BROTLI_OPERATION_FLUSH, finishFlush: fi.default.constants.BROTLI_OPERATION_FLUSH }, LR = _.isFunction(fi.default.createBrotliDecompress), { http: Tne, https: Ine } = ore.default, zne = /https:?/, MR = Xe.protocols.map((e21) => e21 + ":"), FR = (e21, [t, r]) => (e21.on("end", r).on("error", r), t), ww = class { + constructor() { + this.sessions = /* @__PURE__ */ Object.create(null); + } + getSession(t, r) { + r = Object.assign({ sessionTimeout: 1e3 }, r); + let n = this.sessions[t]; + if (n) { + let l = n.length; + for (let p = 0; p < l; p++) { + let [d, f] = n[p]; + if (!d.destroyed && !d.closed && kw.default.isDeepStrictEqual(f, r)) return d; + } + } + let i = tC.default.connect(t, r), o, a = () => { + if (o) return; + o = true; + let l = n, p = l.length, d = p; + for (; d--; ) if (l[d][0] === i) { + p === 1 ? delete this.sessions[t] : l.splice(d, 1); + return; + } + }, s = i.request, { sessionTimeout: c } = r; + if (c != null) { + let l, p = 0; + i.request = function() { + let d = s.apply(this, arguments); + return p++, l && (clearTimeout(l), l = null), d.once("close", () => { + --p || (l = setTimeout(() => { + l = null, a(); + }, c)); + }), d; + }; + } + i.once("close", a); + let u = [i, r]; + return n ? n.push(u) : n = this.sessions[t] = [u], i; + } + }, Pne = new ww(); + function jne(e21, t) { + e21.beforeRedirects.proxy && e21.beforeRedirects.proxy(e21), e21.beforeRedirects.config && e21.beforeRedirects.config(e21, t); + } + function yC(e21, t, r) { + let n = t; + if (!n && n !== false) { + let i = rre.default.getProxyForUrl(r); + i && (n = new URL(i)); + } + if (n) { + if (n.username && (n.auth = (n.username || "") + ":" + (n.password || "")), n.auth) { + if (!!(n.auth.username || n.auth.password)) n.auth = (n.auth.username || "") + ":" + (n.auth.password || ""); + else if (typeof n.auth == "object") throw new R("Invalid proxy authorization", R.ERR_BAD_OPTION, { proxy: n }); + let a = Buffer.from(n.auth, "utf8").toString("base64"); + e21.headers["Proxy-Authorization"] = "Basic " + a; + } + e21.headers.host = e21.hostname + (e21.port ? ":" + e21.port : ""); + let i = n.hostname || n.host; + e21.hostname = i, e21.host = i, e21.port = n.port, e21.path = r, n.protocol && (e21.protocol = n.protocol.includes(":") ? n.protocol : `${n.protocol}:`); + } + e21.beforeRedirects.proxy = function(o) { + yC(o, t, o.href); + }; + } + var Ane = typeof process < "u" && _.kindOf(process) === "process", Rne = (e21) => new Promise((t, r) => { + let n, i, o = (c, u) => { + i || (i = true, n && n(c, u)); + }, a = (c) => { + o(c), t(c); + }, s = (c) => { + o(c, true), r(c); + }; + e21(a, s, (c) => n = c).catch(s); + }), Cne = ({ address: e21, family: t }) => { + if (!_.isString(e21)) throw TypeError("address must be a string"); + return { address: e21, family: t || (e21.indexOf(".") < 0 ? 6 : 4) }; + }, ZR = (e21, t) => Cne(_.isObject(e21) ? e21 : { address: e21, family: t }), Nne = { request(e21, t) { + let r = e21.protocol + "//" + e21.hostname + ":" + (e21.port || (e21.protocol === "https:" ? 443 : 80)), { http2Options: n, headers: i } = e21, o = Pne.getSession(r, n), { HTTP2_HEADER_SCHEME: a, HTTP2_HEADER_METHOD: s, HTTP2_HEADER_PATH: c, HTTP2_HEADER_STATUS: u } = tC.default.constants, l = { [a]: e21.protocol.replace(":", ""), [s]: e21.method, [c]: e21.path }; + _.forEach(i, (d, f) => { + f.charAt(0) !== ":" && (l[f] = d); + }); + let p = o.request(l); + return p.once("response", (d) => { + let f = p; + d = Object.assign({}, d); + let m = d[u]; + delete d[u], f.headers = d, f.statusCode = +m, t(f); + }), p; + } }, Dne = Ane && function(t) { + return Rne(async function(n, i, o) { + let { data: a, lookup: s, family: c, httpVersion: u = 1, http2Options: l } = t, { responseType: p, responseEncoding: d } = t, f = t.method.toUpperCase(), m, h = false, v; + if (u = +u, Number.isNaN(u)) throw TypeError(`Invalid protocol version: '${t.httpVersion}' is not a number`); + if (u !== 1 && u !== 2) throw TypeError(`Unsupported protocol version '${u}'`); + let y = u === 2; + if (s) { + let M = $ne(s, (D) => _.isArray(D) ? D : [D]); + s = (D, ge, $t) => { + M(D, ge, (Me, cr, Pr) => { + if (Me) return $t(Me); + let ot = _.isArray(cr) ? cr.map((Gr) => ZR(Gr)) : [ZR(cr, Pr)]; + ge.all ? $t(Me, ot) : $t(Me, ot[0].address, ot[0].family); + }); + }; + } + let x = new Qte.EventEmitter(); + function w(M) { + try { + x.emit("abort", !M || M.type ? new oo(null, t, v) : M); + } catch (D) { + console.warn("emit error", D); + } + } + x.once("abort", i); + let S = () => { + t.cancelToken && t.cancelToken.unsubscribe(w), t.signal && t.signal.removeEventListener("abort", w), x.removeAllListeners(); + }; + (t.cancelToken || t.signal) && (t.cancelToken && t.cancelToken.subscribe(w), t.signal && (t.signal.aborted ? w() : t.signal.addEventListener("abort", w))), o((M, D) => { + if (m = true, D) { + h = true, S(); + return; + } + let { data: ge } = M; + if (ge instanceof dn.default.Readable || ge instanceof dn.default.Duplex) { + let $t = dn.default.finished(ge, () => { + $t(), S(); + }); + } else S(); + }); + let k = Pw(t.baseURL, t.url, t.allowAbsoluteUrls), A = new URL(k, Xe.hasBrowserEnv ? Xe.origin : void 0), C = A.protocol || MR[0]; + if (C === "data:") { + if (t.maxContentLength > -1) { + let D = String(t.url || k || ""); + if (Ene(D) > t.maxContentLength) return i(new R("maxContentLength size of " + t.maxContentLength + " exceeded", R.ERR_BAD_RESPONSE, t)); + } + let M; + if (f !== "GET") return Fa(n, i, { status: 405, statusText: "method not allowed", headers: {}, config: t }); + try { + M = mne(t.url, p === "blob", { Blob: t.env && t.env.Blob }); + } catch (D) { + throw R.from(D, R.ERR_BAD_REQUEST, t); + } + return p === "text" ? (M = M.toString(d), (!d || d === "utf8") && (M = _.stripBOM(M))) : p === "stream" && (M = dn.default.Readable.from(M)), Fa(n, i, { data: M, status: 200, statusText: "OK", headers: new or(), config: t }); + } + if (MR.indexOf(C) === -1) return i(new R("Unsupported protocol " + C, R.ERR_BAD_REQUEST, t)); + let ae = or.from(t.headers).normalize(); + ae.set("User-Agent", "axios/" + Xf, false); + let { onUploadProgress: Ie, onDownloadProgress: Ce } = t, $e = t.maxRate, Ye, ve; + if (_.isSpecCompliantForm(a)) { + let M = ae.getContentType(/boundary=([-_\w\d]{10,70})/i); + a = bne(a, (D) => { + ae.set(D); + }, { tag: `axios-${Xf}-boundary`, boundary: M && M[1] || void 0 }); + } else if (_.isFormData(a) && _.isFunction(a.getHeaders)) { + if (ae.set(a.getHeaders()), !ae.hasContentLength()) try { + let M = await kw.default.promisify(a.getLength).call(a); + Number.isFinite(M) && M >= 0 && ae.setContentLength(M); + } catch { + } + } else if (_.isBlob(a) || _.isFile(a)) a.size && ae.setContentType(a.type || "application/octet-stream"), ae.setContentLength(a.size || 0), a = dn.default.Readable.from(gC(a)); + else if (a && !_.isStream(a)) { + if (!Buffer.isBuffer(a)) if (_.isArrayBuffer(a)) a = Buffer.from(new Uint8Array(a)); + else if (_.isString(a)) a = Buffer.from(a, "utf-8"); + else return i(new R("Data after transformation must be a string, an ArrayBuffer, a Buffer, or a Stream", R.ERR_BAD_REQUEST, t)); + if (ae.setContentLength(a.length, false), t.maxBodyLength > -1 && a.length > t.maxBodyLength) return i(new R("Request body larger than maxBodyLength limit", R.ERR_BAD_REQUEST, t)); + } + let Ne = _.toFiniteNumber(ae.getContentLength()); + _.isArray($e) ? (Ye = $e[0], ve = $e[1]) : Ye = ve = $e, a && (Ie || Ye) && (_.isStream(a) || (a = dn.default.Readable.from(a, { objectMode: false })), a = dn.default.pipeline([a, new DR({ maxRate: _.toFiniteNumber(Ye) })], _.noop), Ie && a.on("progress", FR(a, Yf(Ne, Va(Qf(Ie), false, 3))))); + let He; + if (t.auth) { + let M = t.auth.username || "", D = t.auth.password || ""; + He = M + ":" + D; + } + if (!He && A.username) { + let M = A.username, D = A.password; + He = M + ":" + D; + } + He && ae.delete("authorization"); + let Se; + try { + Se = Ow(A.pathname + A.search, t.params, t.paramsSerializer).replace(/^\?/, ""); + } catch (M) { + let D = new Error(M.message); + return D.config = t, D.url = t.url, D.exists = true, i(D); + } + ae.set("Accept-Encoding", "gzip, compress, deflate" + (LR ? ", br" : ""), false); + let Le = { path: Se, method: f, headers: ae.toJSON(), agents: { http: t.httpAgent, https: t.httpsAgent }, auth: He, protocol: C, family: c, beforeRedirect: jne, beforeRedirects: {}, http2Options: l }; + !_.isUndefined(s) && (Le.lookup = s), t.socketPath ? Le.socketPath = t.socketPath : (Le.hostname = A.hostname.startsWith("[") ? A.hostname.slice(1, -1) : A.hostname, Le.port = A.port, yC(Le, t.proxy, C + "//" + A.hostname + (A.port ? ":" + A.port : "") + Le.path)); + let it, Ht = zne.test(Le.protocol); + if (Le.agent = Ht ? t.httpsAgent : t.httpAgent, y ? it = Nne : t.transport ? it = t.transport : t.maxRedirects === 0 ? it = Ht ? ire.default : nre.default : (t.maxRedirects && (Le.maxRedirects = t.maxRedirects), t.beforeRedirect && (Le.beforeRedirects.config = t.beforeRedirect), it = Ht ? Ine : Tne), t.maxBodyLength > -1 ? Le.maxBodyLength = t.maxBodyLength : Le.maxBodyLength = 1 / 0, t.insecureHTTPParser && (Le.insecureHTTPParser = t.insecureHTTPParser), v = it.request(Le, function(D) { + if (v.destroyed) return; + let ge = [D], $t = _.toFiniteNumber(D.headers["content-length"]); + if (Ce || ve) { + let ot = new DR({ maxRate: _.toFiniteNumber(ve) }); + Ce && ot.on("progress", FR(ot, Yf($t, Va(Qf(Ce), true, 3)))), ge.push(ot); + } + let Me = D, cr = D.req || v; + if (t.decompress !== false && D.headers["content-encoding"]) switch ((f === "HEAD" || D.statusCode === 204) && delete D.headers["content-encoding"], (D.headers["content-encoding"] || "").toLowerCase()) { + case "gzip": + case "x-gzip": + case "compress": + case "x-compress": + ge.push(fi.default.createUnzip(UR)), delete D.headers["content-encoding"]; + break; + case "deflate": + ge.push(new _ne()), ge.push(fi.default.createUnzip(UR)), delete D.headers["content-encoding"]; + break; + case "br": + LR && (ge.push(fi.default.createBrotliDecompress(One)), delete D.headers["content-encoding"]); + } + Me = ge.length > 1 ? dn.default.pipeline(ge, _.noop) : ge[0]; + let Pr = { status: D.statusCode, statusText: D.statusMessage, headers: new or(D.headers), config: t, request: cr }; + if (p === "stream") Pr.data = Me, Fa(n, i, Pr); + else { + let ot = [], Gr = 0; + Me.on("data", function(at) { + ot.push(at), Gr += at.length, t.maxContentLength > -1 && Gr > t.maxContentLength && (h = true, Me.destroy(), w(new R("maxContentLength size of " + t.maxContentLength + " exceeded", R.ERR_BAD_RESPONSE, t, cr))); + }), Me.on("aborted", function() { + if (h) return; + let at = new R("stream has been aborted", R.ERR_BAD_RESPONSE, t, cr); + Me.destroy(at), i(at); + }), Me.on("error", function(at) { + v.destroyed || i(R.from(at, null, t, cr)); + }), Me.on("end", function() { + try { + let at = ot.length === 1 ? ot[0] : Buffer.concat(ot); + p !== "arraybuffer" && (at = at.toString(d), (!d || d === "utf8") && (at = _.stripBOM(at))), Pr.data = at; + } catch (at) { + return i(R.from(at, null, t, Pr.request, Pr)); + } + Fa(n, i, Pr); + }); + } + x.once("abort", (ot) => { + Me.destroyed || (Me.emit("error", ot), Me.destroy()); + }); + }), x.once("abort", (M) => { + v.close ? v.close() : v.destroy(M); + }), v.on("error", function(D) { + i(R.from(D, null, t, v)); + }), v.on("socket", function(D) { + D.setKeepAlive(true, 1e3 * 60); + }), t.timeout) { + let M = parseInt(t.timeout, 10); + if (Number.isNaN(M)) { + w(new R("error trying to parse `config.timeout` to int", R.ERR_BAD_OPTION_VALUE, t, v)); + return; + } + v.setTimeout(M, function() { + if (m) return; + let ge = t.timeout ? "timeout of " + t.timeout + "ms exceeded" : "timeout exceeded", $t = t.transitional || im; + t.timeoutErrorMessage && (ge = t.timeoutErrorMessage), w(new R(ge, $t.clarifyTimeoutError ? R.ETIMEDOUT : R.ECONNABORTED, t, v)); + }); + } else v.setTimeout(0); + if (_.isStream(a)) { + let M = false, D = false; + a.on("end", () => { + M = true; + }), a.once("error", (ge) => { + D = true, v.destroy(ge); + }), a.on("close", () => { + !M && !D && w(new oo("Request stream has been aborted", t, v)); + }), a.pipe(v); + } else a && v.write(a), v.end(); + }); + }, qne = Xe.hasStandardBrowserEnv ? /* @__PURE__ */ ((e21, t) => (r) => (r = new URL(r, Xe.origin), e21.protocol === r.protocol && e21.host === r.host && (t || e21.port === r.port)))(new URL(Xe.origin), Xe.navigator && /(msie|trident)/i.test(Xe.navigator.userAgent)) : () => true, Une = Xe.hasStandardBrowserEnv ? { write(e21, t, r, n, i, o, a) { + if (typeof document > "u") return; + let s = [`${e21}=${encodeURIComponent(t)}`]; + _.isNumber(r) && s.push(`expires=${new Date(r).toUTCString()}`), _.isString(n) && s.push(`path=${n}`), _.isString(i) && s.push(`domain=${i}`), o === true && s.push("secure"), _.isString(a) && s.push(`SameSite=${a}`), document.cookie = s.join("; "); + }, read(e21) { + if (typeof document > "u") return null; + let t = document.cookie.match(new RegExp("(?:^|; )" + e21 + "=([^;]*)")); + return t ? decodeURIComponent(t[1]) : null; + }, remove(e21) { + this.write(e21, "", Date.now() - 864e5, "/"); + } } : { write() { + }, read() { + return null; + }, remove() { + } }, BR = (e21) => e21 instanceof or ? { ...e21 } : e21; + function ao(e21, t) { + t = t || {}; + let r = {}; + function n(u, l, p, d) { + return _.isPlainObject(u) && _.isPlainObject(l) ? _.merge.call({ caseless: d }, u, l) : _.isPlainObject(l) ? _.merge({}, l) : _.isArray(l) ? l.slice() : l; + } + function i(u, l, p, d) { + if (_.isUndefined(l)) { + if (!_.isUndefined(u)) return n(void 0, u, p, d); + } else return n(u, l, p, d); + } + function o(u, l) { + if (!_.isUndefined(l)) return n(void 0, l); + } + function a(u, l) { + if (_.isUndefined(l)) { + if (!_.isUndefined(u)) return n(void 0, u); + } else return n(void 0, l); + } + function s(u, l, p) { + if (p in t) return n(u, l); + if (p in e21) return n(void 0, u); + } + let c = { url: o, method: o, data: o, baseURL: a, transformRequest: a, transformResponse: a, paramsSerializer: a, timeout: a, timeoutMessage: a, withCredentials: a, withXSRFToken: a, adapter: a, responseType: a, xsrfCookieName: a, xsrfHeaderName: a, onUploadProgress: a, onDownloadProgress: a, decompress: a, maxContentLength: a, maxBodyLength: a, beforeRedirect: a, transport: a, httpAgent: a, httpsAgent: a, cancelToken: a, socketPath: a, responseEncoding: a, validateStatus: s, headers: (u, l, p) => i(BR(u), BR(l), p, true) }; + return _.forEach(Object.keys({ ...e21, ...t }), function(l) { + if (l === "__proto__" || l === "constructor" || l === "prototype") return; + let p = _.hasOwnProp(c, l) ? c[l] : i, d = p(e21[l], t[l], l); + _.isUndefined(d) && p !== s || (r[l] = d); + }), r; + } + var xC = (e21) => { + let t = ao({}, e21), { data: r, withXSRFToken: n, xsrfHeaderName: i, xsrfCookieName: o, headers: a, auth: s } = t; + if (t.headers = a = or.from(a), t.url = Ow(Pw(t.baseURL, t.url, t.allowAbsoluteUrls), e21.params, e21.paramsSerializer), s && a.set("Authorization", "Basic " + btoa((s.username || "") + ":" + (s.password ? unescape(encodeURIComponent(s.password)) : ""))), _.isFormData(r)) { + if (Xe.hasStandardBrowserEnv || Xe.hasStandardBrowserWebWorkerEnv) a.setContentType(void 0); + else if (_.isFunction(r.getHeaders)) { + let c = r.getHeaders(), u = ["content-type", "content-length"]; + Object.entries(c).forEach(([l, p]) => { + u.includes(l.toLowerCase()) && a.set(l, p); + }); + } + } + if (Xe.hasStandardBrowserEnv && (n && _.isFunction(n) && (n = n(t)), n || n !== false && qne(t.url))) { + let c = i && o && Une.read(o); + c && a.set(i, c); + } + return t; + }, Lne = typeof XMLHttpRequest < "u", Mne = Lne && function(e21) { + return new Promise(function(r, n) { + let i = xC(e21), o = i.data, a = or.from(i.headers).normalize(), { responseType: s, onUploadProgress: c, onDownloadProgress: u } = i, l, p, d, f, m; + function h() { + f && f(), m && m(), i.cancelToken && i.cancelToken.unsubscribe(l), i.signal && i.signal.removeEventListener("abort", l); + } + let v = new XMLHttpRequest(); + v.open(i.method.toUpperCase(), i.url, true), v.timeout = i.timeout; + function y() { + if (!v) return; + let w = or.from("getAllResponseHeaders" in v && v.getAllResponseHeaders()), k = { data: !s || s === "text" || s === "json" ? v.responseText : v.response, status: v.status, statusText: v.statusText, headers: w, config: e21, request: v }; + Fa(function(C) { + r(C), h(); + }, function(C) { + n(C), h(); + }, k), v = null; + } + "onloadend" in v ? v.onloadend = y : v.onreadystatechange = function() { + !v || v.readyState !== 4 || v.status === 0 && !(v.responseURL && v.responseURL.indexOf("file:") === 0) || setTimeout(y); + }, v.onabort = function() { + v && (n(new R("Request aborted", R.ECONNABORTED, e21, v)), v = null); + }, v.onerror = function(S) { + let k = S && S.message ? S.message : "Network Error", A = new R(k, R.ERR_NETWORK, e21, v); + A.event = S || null, n(A), v = null; + }, v.ontimeout = function() { + let S = i.timeout ? "timeout of " + i.timeout + "ms exceeded" : "timeout exceeded", k = i.transitional || im; + i.timeoutErrorMessage && (S = i.timeoutErrorMessage), n(new R(S, k.clarifyTimeoutError ? R.ETIMEDOUT : R.ECONNABORTED, e21, v)), v = null; + }, o === void 0 && a.setContentType(null), "setRequestHeader" in v && _.forEach(a.toJSON(), function(S, k) { + v.setRequestHeader(k, S); + }), _.isUndefined(i.withCredentials) || (v.withCredentials = !!i.withCredentials), s && s !== "json" && (v.responseType = i.responseType), u && ([d, m] = Va(u, true), v.addEventListener("progress", d)), c && v.upload && ([p, f] = Va(c), v.upload.addEventListener("progress", p), v.upload.addEventListener("loadend", f)), (i.cancelToken || i.signal) && (l = (w) => { + v && (n(!w || w.type ? new oo(null, e21, v) : w), v.abort(), v = null); + }, i.cancelToken && i.cancelToken.subscribe(l), i.signal && (i.signal.aborted ? l() : i.signal.addEventListener("abort", l))); + let x = vC(i.url); + if (x && Xe.protocols.indexOf(x) === -1) { + n(new R("Unsupported protocol " + x + ":", R.ERR_BAD_REQUEST, e21)); + return; + } + v.send(o || null); + }); + }, Fne = (e21, t) => { + let { length: r } = e21 = e21 ? e21.filter(Boolean) : []; + if (t || r) { + let n = new AbortController(), i, o = function(u) { + if (!i) { + i = true, s(); + let l = u instanceof Error ? u : this.reason; + n.abort(l instanceof R ? l : new oo(l instanceof Error ? l.message : l)); + } + }, a = t && setTimeout(() => { + a = null, o(new R(`timeout of ${t}ms exceeded`, R.ETIMEDOUT)); + }, t), s = () => { + e21 && (a && clearTimeout(a), a = null, e21.forEach((u) => { + u.unsubscribe ? u.unsubscribe(o) : u.removeEventListener("abort", o); + }), e21 = null); + }; + e21.forEach((u) => u.addEventListener("abort", o)); + let { signal: c } = n; + return c.unsubscribe = () => _.asap(s), c; + } + }, Zne = Fne, Bne = function* (e21, t) { + let r = e21.byteLength; + if (!t || r < t) { + yield e21; + return; + } + let n = 0, i; + for (; n < r; ) i = n + t, yield e21.slice(n, i), n = i; + }, Vne = async function* (e21, t) { + for await (let r of Hne(e21)) yield* Bne(r, t); + }, Hne = async function* (e21) { + if (e21[Symbol.asyncIterator]) { + yield* e21; + return; + } + let t = e21.getReader(); + try { + for (; ; ) { + let { done: r, value: n } = await t.read(); + if (r) break; + yield n; + } + } finally { + await t.cancel(); + } + }, VR = (e21, t, r, n) => { + let i = Vne(e21, t), o = 0, a, s = (c) => { + a || (a = true, n && n(c)); + }; + return new ReadableStream({ async pull(c) { + try { + let { done: u, value: l } = await i.next(); + if (u) { + s(), c.close(); + return; + } + let p = l.byteLength; + if (r) { + let d = o += p; + r(d); + } + c.enqueue(new Uint8Array(l)); + } catch (u) { + throw s(u), u; + } + }, cancel(c) { + return s(c), i.return(); + } }, { highWaterMark: 2 }); + }, HR = 64 * 1024, { isFunction: Hf } = _, Jne = (({ Request: e21, Response: t }) => ({ Request: e21, Response: t }))(_.global), { ReadableStream: JR, TextEncoder: GR } = _.global, WR = (e21, ...t) => { + try { + return !!e21(...t); + } catch { + return false; + } + }, Gne = (e21) => { + e21 = _.merge.call({ skipUndefined: true }, Jne, e21); + let { fetch: t, Request: r, Response: n } = e21, i = t ? Hf(t) : typeof fetch == "function", o = Hf(r), a = Hf(n); + if (!i) return false; + let s = i && Hf(JR), c = i && (typeof GR == "function" ? /* @__PURE__ */ ((m) => (h) => m.encode(h))(new GR()) : async (m) => new Uint8Array(await new r(m).arrayBuffer())), u = o && s && WR(() => { + let m = false, h = new r(Xe.origin, { body: new JR(), method: "POST", get duplex() { + return m = true, "half"; + } }).headers.has("Content-Type"); + return m && !h; + }), l = a && s && WR(() => _.isReadableStream(new n("").body)), p = { stream: l && ((m) => m.body) }; + i && ["text", "arrayBuffer", "blob", "formData", "stream"].forEach((m) => { + !p[m] && (p[m] = (h, v) => { + let y = h && h[m]; + if (y) return y.call(h); + throw new R(`Response type '${m}' is not supported`, R.ERR_NOT_SUPPORT, v); + }); + }); + let d = async (m) => { + if (m == null) return 0; + if (_.isBlob(m)) return m.size; + if (_.isSpecCompliantForm(m)) return (await new r(Xe.origin, { method: "POST", body: m }).arrayBuffer()).byteLength; + if (_.isArrayBufferView(m) || _.isArrayBuffer(m)) return m.byteLength; + if (_.isURLSearchParams(m) && (m = m + ""), _.isString(m)) return (await c(m)).byteLength; + }, f = async (m, h) => { + let v = _.toFiniteNumber(m.getContentLength()); + return v ?? d(h); + }; + return async (m) => { + let { url: h, method: v, data: y, signal: x, cancelToken: w, timeout: S, onDownloadProgress: k, onUploadProgress: A, responseType: C, headers: ae, withCredentials: Ie = "same-origin", fetchOptions: Ce } = xC(m), $e = t || fetch; + C = C ? (C + "").toLowerCase() : "text"; + let Ye = Zne([x, w && w.toAbortSignal()], S), ve = null, Ne = Ye && Ye.unsubscribe && (() => { + Ye.unsubscribe(); + }), He; + try { + if (A && u && v !== "get" && v !== "head" && (He = await f(ae, y)) !== 0) { + let D = new r(h, { method: "POST", body: y, duplex: "half" }), ge; + if (_.isFormData(y) && (ge = D.headers.get("content-type")) && ae.setContentType(ge), D.body) { + let [$t, Me] = Yf(He, Va(Qf(A))); + y = VR(D.body, HR, $t, Me); + } + } + _.isString(Ie) || (Ie = Ie ? "include" : "omit"); + let Se = o && "credentials" in r.prototype, Le = { ...Ce, signal: Ye, method: v.toUpperCase(), headers: ae.normalize().toJSON(), body: y, duplex: "half", credentials: Se ? Ie : void 0 }; + ve = o && new r(h, Le); + let it = await (o ? $e(ve, Ce) : $e(h, Le)), Ht = l && (C === "stream" || C === "response"); + if (l && (k || Ht && Ne)) { + let D = {}; + ["status", "statusText", "headers"].forEach((cr) => { + D[cr] = it[cr]; + }); + let ge = _.toFiniteNumber(it.headers.get("content-length")), [$t, Me] = k && Yf(ge, Va(Qf(k), true)) || []; + it = new n(VR(it.body, HR, $t, () => { + Me && Me(), Ne && Ne(); + }), D); + } + C = C || "text"; + let M = await p[_.findKey(p, C) || "text"](it, m); + return !Ht && Ne && Ne(), await new Promise((D, ge) => { + Fa(D, ge, { data: M, headers: or.from(it.headers), status: it.status, statusText: it.statusText, config: m, request: ve }); + }); + } catch (Se) { + throw Ne && Ne(), Se && Se.name === "TypeError" && /Load failed|fetch/i.test(Se.message) ? Object.assign(new R("Network Error", R.ERR_NETWORK, m, ve, Se && Se.response), { cause: Se.cause || Se }) : R.from(Se, Se && Se.code, m, ve, Se && Se.response); + } + }; + }, Wne = /* @__PURE__ */ new Map(), bC = (e21) => { + let t = e21 && e21.env || {}, { fetch: r, Request: n, Response: i } = t, o = [n, i, r], a = o.length, s = a, c, u, l = Wne; + for (; s--; ) c = o[s], u = l.get(c), u === void 0 && l.set(c, u = s ? /* @__PURE__ */ new Map() : Gne(t)), l = u; + return u; + }; + bC(); + var jw = { http: Dne, xhr: Mne, fetch: { get: bC } }; + _.forEach(jw, (e21, t) => { + if (e21) { + try { + Object.defineProperty(e21, "name", { value: t }); + } catch { + } + Object.defineProperty(e21, "adapterName", { value: t }); + } + }); + var KR = (e21) => `- ${e21}`, Kne = (e21) => _.isFunction(e21) || e21 === null || e21 === false; + function Xne(e21, t) { + e21 = _.isArray(e21) ? e21 : [e21]; + let { length: r } = e21, n, i, o = {}; + for (let a = 0; a < r; a++) { + n = e21[a]; + let s; + if (i = n, !Kne(n) && (i = jw[(s = String(n)).toLowerCase()], i === void 0)) throw new R(`Unknown adapter '${s}'`); + if (i && (_.isFunction(i) || (i = i.get(t)))) break; + o[s || "#" + a] = i; + } + if (!i) { + let a = Object.entries(o).map(([c, u]) => `adapter ${c} ` + (u === false ? "is not supported by the environment" : "is not available in the build")), s = r ? a.length > 1 ? `since : +` + a.map(KR).join(` +`) : " " + KR(a[0]) : "as no adapter specified"; + throw new R("There is no suitable adapter to dispatch the request " + s, "ERR_NOT_SUPPORT"); + } + return i; + } + var _C = { getAdapter: Xne, adapters: jw }; + function fw(e21) { + if (e21.cancelToken && e21.cancelToken.throwIfRequested(), e21.signal && e21.signal.aborted) throw new oo(null, e21); + } + function XR(e21) { + return fw(e21), e21.headers = or.from(e21.headers), e21.data = pw.call(e21, e21.transformRequest), ["post", "put", "patch"].indexOf(e21.method) !== -1 && e21.headers.setContentType("application/x-www-form-urlencoded", false), _C.getAdapter(e21.adapter || zw.adapter, e21)(e21).then(function(n) { + return fw(e21), n.data = pw.call(e21, e21.transformResponse, n), n.headers = or.from(n.headers), n; + }, function(n) { + return hC(n) || (fw(e21), n && n.response && (n.response.data = pw.call(e21, e21.transformResponse, n.response), n.response.headers = or.from(n.response.headers))), Promise.reject(n); + }); + } + var om = {}; + ["object", "boolean", "number", "function", "string", "symbol"].forEach((e21, t) => { + om[e21] = function(n) { + return typeof n === e21 || "a" + (t < 1 ? "n " : " ") + e21; + }; + }); + var YR = {}; + om.transitional = function(t, r, n) { + function i(o, a) { + return "[Axios v" + Xf + "] Transitional option '" + o + "'" + a + (n ? ". " + n : ""); + } + return (o, a, s) => { + if (t === false) throw new R(i(a, " has been removed" + (r ? " in " + r : "")), R.ERR_DEPRECATED); + return r && !YR[a] && (YR[a] = true, console.warn(i(a, " has been deprecated since v" + r + " and will be removed in the near future"))), t ? t(o, a, s) : true; + }; + }; + om.spelling = function(t) { + return (r, n) => (console.warn(`${n} is likely a misspelling of ${t}`), true); + }; + function Yne(e21, t, r) { + if (typeof e21 != "object") throw new R("options must be an object", R.ERR_BAD_OPTION_VALUE); + let n = Object.keys(e21), i = n.length; + for (; i-- > 0; ) { + let o = n[i], a = t[o]; + if (a) { + let s = e21[o], c = s === void 0 || a(s, o, e21); + if (c !== true) throw new R("option " + o + " must be " + c, R.ERR_BAD_OPTION_VALUE); + continue; + } + if (r !== true) throw new R("Unknown option " + o, R.ERR_BAD_OPTION); + } + } + var Wf = { assertOptions: Yne, validators: om }, zr = Wf.validators, Ha = class { + constructor(t) { + this.defaults = t || {}, this.interceptors = { request: new RR(), response: new RR() }; + } + async request(t, r) { + try { + return await this._request(t, r); + } catch (n) { + if (n instanceof Error) { + let i = {}; + Error.captureStackTrace ? Error.captureStackTrace(i) : i = new Error(); + let o = i.stack ? i.stack.replace(/^.+\n/, "") : ""; + try { + n.stack ? o && !String(n.stack).endsWith(o.replace(/^.+\n.+\n/, "")) && (n.stack += ` +` + o) : n.stack = o; + } catch { + } + } + throw n; + } + } + _request(t, r) { + typeof t == "string" ? (r = r || {}, r.url = t) : r = t || {}, r = ao(this.defaults, r); + let { transitional: n, paramsSerializer: i, headers: o } = r; + n !== void 0 && Wf.assertOptions(n, { silentJSONParsing: zr.transitional(zr.boolean), forcedJSONParsing: zr.transitional(zr.boolean), clarifyTimeoutError: zr.transitional(zr.boolean), legacyInterceptorReqResOrdering: zr.transitional(zr.boolean) }, false), i != null && (_.isFunction(i) ? r.paramsSerializer = { serialize: i } : Wf.assertOptions(i, { encode: zr.function, serialize: zr.function }, true)), r.allowAbsoluteUrls !== void 0 || (this.defaults.allowAbsoluteUrls !== void 0 ? r.allowAbsoluteUrls = this.defaults.allowAbsoluteUrls : r.allowAbsoluteUrls = true), Wf.assertOptions(r, { baseUrl: zr.spelling("baseURL"), withXsrfToken: zr.spelling("withXSRFToken") }, true), r.method = (r.method || this.defaults.method || "get").toLowerCase(); + let a = o && _.merge(o.common, o[r.method]); + o && _.forEach(["delete", "get", "head", "post", "put", "patch", "common"], (m) => { + delete o[m]; + }), r.headers = or.concat(a, o); + let s = [], c = true; + this.interceptors.request.forEach(function(h) { + if (typeof h.runWhen == "function" && h.runWhen(r) === false) return; + c = c && h.synchronous; + let v = r.transitional || im; + v && v.legacyInterceptorReqResOrdering ? s.unshift(h.fulfilled, h.rejected) : s.push(h.fulfilled, h.rejected); + }); + let u = []; + this.interceptors.response.forEach(function(h) { + u.push(h.fulfilled, h.rejected); + }); + let l, p = 0, d; + if (!c) { + let m = [XR.bind(this), void 0]; + for (m.unshift(...s), m.push(...u), d = m.length, l = Promise.resolve(r); p < d; ) l = l.then(m[p++], m[p++]); + return l; + } + d = s.length; + let f = r; + for (; p < d; ) { + let m = s[p++], h = s[p++]; + try { + f = m(f); + } catch (v) { + h.call(this, v); + break; + } + } + try { + l = XR.call(this, f); + } catch (m) { + return Promise.reject(m); + } + for (p = 0, d = u.length; p < d; ) l = l.then(u[p++], u[p++]); + return l; + } + getUri(t) { + t = ao(this.defaults, t); + let r = Pw(t.baseURL, t.url, t.allowAbsoluteUrls); + return Ow(r, t.params, t.paramsSerializer); + } + }; + _.forEach(["delete", "get", "head", "options"], function(t) { + Ha.prototype[t] = function(r, n) { + return this.request(ao(n || {}, { method: t, url: r, data: (n || {}).data })); + }; + }); + _.forEach(["post", "put", "patch"], function(t) { + function r(n) { + return function(o, a, s) { + return this.request(ao(s || {}, { method: t, headers: n ? { "Content-Type": "multipart/form-data" } : {}, url: o, data: a })); + }; + } + Ha.prototype[t] = r(), Ha.prototype[t + "Form"] = r(true); + }); + var Kf = Ha, $w = class e21 { + constructor(t) { + if (typeof t != "function") throw new TypeError("executor must be a function."); + let r; + this.promise = new Promise(function(o) { + r = o; + }); + let n = this; + this.promise.then((i) => { + if (!n._listeners) return; + let o = n._listeners.length; + for (; o-- > 0; ) n._listeners[o](i); + n._listeners = null; + }), this.promise.then = (i) => { + let o, a = new Promise((s) => { + n.subscribe(s), o = s; + }).then(i); + return a.cancel = function() { + n.unsubscribe(o); + }, a; + }, t(function(o, a, s) { + n.reason || (n.reason = new oo(o, a, s), r(n.reason)); + }); + } + throwIfRequested() { + if (this.reason) throw this.reason; + } + subscribe(t) { + if (this.reason) { + t(this.reason); + return; + } + this._listeners ? this._listeners.push(t) : this._listeners = [t]; + } + unsubscribe(t) { + if (!this._listeners) return; + let r = this._listeners.indexOf(t); + r !== -1 && this._listeners.splice(r, 1); + } + toAbortSignal() { + let t = new AbortController(), r = (n) => { + t.abort(n); + }; + return this.subscribe(r), t.signal.unsubscribe = () => this.unsubscribe(r), t.signal; + } + static source() { + let t; + return { token: new e21(function(i) { + t = i; + }), cancel: t }; + } + }, Qne = $w; + function eie(e21) { + return function(r) { + return e21.apply(null, r); + }; + } + function tie(e21) { + return _.isObject(e21) && e21.isAxiosError === true; + } + var Sw = { Continue: 100, SwitchingProtocols: 101, Processing: 102, EarlyHints: 103, Ok: 200, Created: 201, Accepted: 202, NonAuthoritativeInformation: 203, NoContent: 204, ResetContent: 205, PartialContent: 206, MultiStatus: 207, AlreadyReported: 208, ImUsed: 226, MultipleChoices: 300, MovedPermanently: 301, Found: 302, SeeOther: 303, NotModified: 304, UseProxy: 305, Unused: 306, TemporaryRedirect: 307, PermanentRedirect: 308, BadRequest: 400, Unauthorized: 401, PaymentRequired: 402, Forbidden: 403, NotFound: 404, MethodNotAllowed: 405, NotAcceptable: 406, ProxyAuthenticationRequired: 407, RequestTimeout: 408, Conflict: 409, Gone: 410, LengthRequired: 411, PreconditionFailed: 412, PayloadTooLarge: 413, UriTooLong: 414, UnsupportedMediaType: 415, RangeNotSatisfiable: 416, ExpectationFailed: 417, ImATeapot: 418, MisdirectedRequest: 421, UnprocessableEntity: 422, Locked: 423, FailedDependency: 424, TooEarly: 425, UpgradeRequired: 426, PreconditionRequired: 428, TooManyRequests: 429, RequestHeaderFieldsTooLarge: 431, UnavailableForLegalReasons: 451, InternalServerError: 500, NotImplemented: 501, BadGateway: 502, ServiceUnavailable: 503, GatewayTimeout: 504, HttpVersionNotSupported: 505, VariantAlsoNegotiates: 506, InsufficientStorage: 507, LoopDetected: 508, NotExtended: 510, NetworkAuthenticationRequired: 511, WebServerIsDown: 521, ConnectionTimedOut: 522, OriginIsUnreachable: 523, TimeoutOccurred: 524, SslHandshakeFailed: 525, InvalidSslCertificate: 526 }; + Object.entries(Sw).forEach(([e21, t]) => { + Sw[t] = e21; + }); + var rie = Sw; + function wC(e21) { + let t = new Kf(e21), r = rC(Kf.prototype.request, t); + return _.extend(r, Kf.prototype, t, { allOwnKeys: true }), _.extend(r, t, null, { allOwnKeys: true }), r.create = function(i) { + return wC(ao(e21, i)); + }, r; + } + var rt = wC(zw); + rt.Axios = Kf; + rt.CanceledError = oo; + rt.CancelToken = Qne; + rt.isCancel = hC; + rt.VERSION = Xf; + rt.toFormData = nm; + rt.AxiosError = R; + rt.Cancel = rt.CanceledError; + rt.all = function(t) { + return Promise.all(t); + }; + rt.spread = eie; + rt.isAxiosError = tie; + rt.mergeConfig = ao; + rt.AxiosHeaders = or; + rt.formToJSON = (e21) => mC(_.isHTMLForm(e21) ? new FormData(e21) : e21); + rt.getAdapter = _C.getAdapter; + rt.HttpStatusCode = rie; + rt.default = rt; + $C.exports = rt; +}); +var sm = g((am) => { + "use strict"; + Object.defineProperty(am, "__esModule", { value: true }); + am.pathTempalteToParameterNames = void 0; + var nie = (e21) => { + let t = e21.match(/\{[A-Za-z0-9_-]+\}/g); + return t === null ? [] : t.map((r) => r.substring(1, r.length - 1)); + }; + am.pathTempalteToParameterNames = nie; +}); +var kC = g((cm) => { + "use strict"; + Object.defineProperty(cm, "__esModule", { value: true }); + cm.names = void 0; + var iie = sm(), oie = (e21) => (0, iie.pathTempalteToParameterNames)(e21).filter((r, n, i) => i.indexOf(r) === n); + cm.names = oie; +}); +var Aw = g((um) => { + "use strict"; + Object.defineProperty(um, "__esModule", { value: true }); + um.toParameterPattern = void 0; + var aie = sm(), sie = (e21, t) => { + let r = typeof t > "u" ? [] : Object.keys(t).map((o) => { + let a = t[o]; + return { name: o, pattern: typeof a > "u" ? null : a }; + }); + return (0, aie.pathTempalteToParameterNames)(e21).map((o) => { + let a = r.find(({ name: c }) => c === o), s = typeof a > "u" ? null : a.pattern; + return { name: o, pattern: s }; + }); + }; + um.toParameterPattern = sie; +}); +var EC = g((lm) => { + "use strict"; + Object.defineProperty(lm, "__esModule", { value: true }); + lm.params = void 0; + var cie = Aw(), uie = (e21, t) => { + let n = fie(e21), i = (0, cie.toParameterPattern)(e21, t); + return (o) => { + let a = die(o, n); + if (a === null) return null; + let s = pie(a, i); + return s === null ? null : lie(s); + }; + }; + lm.params = uie; + var lie = (e21) => e21.map(({ name: t, value: r }) => ({ [t]: r })).reduce((t, r) => Object.assign(t, r), {}), pie = (e21, t) => { + let r = e21.map(({ value: o }) => decodeURIComponent(o)).map((o, a) => { + let { name: s, pattern: c } = t[a]; + return { name: s, pattern: c, value: o }; + }); + return r.some(({ pattern: o, value: a }) => o !== null && a.match(o) === null) || r.some(({ name: o, value: a }) => r.some(({ name: s, value: c }) => s === o && c !== a)) ? null : r; + }, die = (e21, t) => { + let r = e21.match(t); + return r === null ? null : r.slice(1).map((i) => ({ value: i })); + }, fie = (e21) => new RegExp("^" + e21.replace(/\{[A-Za-z0-9_-]+\}/g, "([^\\/]*)") + "$"); +}); +var OC = g((pm) => { + "use strict"; + Object.defineProperty(pm, "__esModule", { value: true }); + pm.path = void 0; + var mie = sm(), hie = Aw(), vie = (e21, t) => { + let r = (0, mie.pathTempalteToParameterNames)(e21); + return (n) => r.some((o) => typeof n[o] != "string") || (0, hie.toParameterPattern)(e21, t).some(({ name: o, pattern: a }) => a !== null && n[o].match(a) === null) ? null : r.reduce((o, a) => o.split("{" + a + "}").join(encodeURIComponent(n[a])), e21); + }; + pm.path = vie; +}); +var jC = g((jn) => { + "use strict"; + Object.defineProperty(jn, "__esModule", { value: true }); + Object.defineProperty(jn, "names", { enumerable: true, get: function() { + return TC.names; + } }); + Object.defineProperty(jn, "params", { enumerable: true, get: function() { + return IC.params; + } }); + Object.defineProperty(jn, "path", { enumerable: true, get: function() { + return zC.path; + } }); + jn.bath = jn.default = void 0; + var TC = kC(), IC = EC(), zC = OC(), PC = (e21, t) => { + let r = (0, TC.names)(e21), n = (0, zC.path)(e21, t), i = (0, IC.params)(e21, t); + return { names: r, path: n, params: i }; + }; + jn.bath = PC; + var gie = PC; + jn.default = gie; +}); +var RC = g((AC) => { + "use strict"; + Object.defineProperty(AC, "__esModule", { value: true }); +}); +var CC = g((Rw) => { + "use strict"; + Object.defineProperty(Rw, "__esModule", { value: true }); + Object.defineProperty(Rw, "klona", { enumerable: true, get: function() { + return dm; + } }); + function dm(e21) { + var t, r, n; + if (Array.isArray(e21)) { + for (r = Array(t = e21.length); t--; ) r[t] = (n = e21[t]) && typeof n == "object" ? dm(n) : n; + return r; + } + if (Object.prototype.toString.call(e21) === "[object Object]") { + r = {}; + for (t in e21) t === "__proto__" ? Object.defineProperty(r, t, { value: dm(e21[t]), configurable: true, enumerable: true, writable: true }) : r[t] = (n = e21[t]) && typeof n == "object" ? dm(n) : n; + return r; + } + return e21; + } +}); +var Dw = g((Nw) => { + "use strict"; + Object.defineProperty(Nw, "__esModule", { value: true }); + Object.defineProperty(Nw, "resolveRefSync", { enumerable: true, get: function() { + return yie; + } }); + var Cw = /* @__PURE__ */ new Map(), yie = function(e21, t) { + Cw.has(e21) || Cw.set(e21, /* @__PURE__ */ new Map()); + var r = Cw.get(e21); + if (r.has(t)) return r.get(t); + var n = t.split("/").slice(1), i = e21, o = true, a = false, s = void 0; + try { + for (var c = n[Symbol.iterator](), u; !(o = (u = c.next()).done); o = true) { + var l = u.value; + (!i || typeof i != "object") && (i = null); + var p; + i = (p = i[l]) !== null && p !== void 0 ? p : null; + } + } catch (d) { + a = true, s = d; + } finally { + try { + !o && c.return != null && c.return(); + } finally { + if (a) throw s; + } + } + return r.set(t, i), i; + }; +}); +var NC = g((Uw) => { + "use strict"; + Object.defineProperty(Uw, "__esModule", { value: true }); + Object.defineProperty(Uw, "dereferenceSync", { enumerable: true, get: function() { + return _ie; + } }); + var xie = CC(), bie = Dw(), qw = /* @__PURE__ */ new Map(), _ie = function(e21) { + if (qw.has(e21)) return qw.get(e21); + var t = /* @__PURE__ */ new Set(), r = (0, xie.klona)(e21), n = function(o, a) { + if (typeof o == "object" && o !== null) { + if (t.has(o)) return o; + if (t.add(o), Array.isArray(o)) for (var s = 0; s < o.length; s++) o[s] = n(o[s], "".concat(a, "/").concat(s)); + else { + if ("$ref" in o && typeof o.$ref == "string") return (0, bie.resolveRefSync)(r, o.$ref); + for (var c in o) o[c] = n(o[c], "".concat(a, "/").concat(c)); + } + } + return o; + }, i = n(r, "#"); + return qw.set(e21, i), i; + }; +}); +var DC = g((el) => { + "use strict"; + Object.defineProperty(el, "__esModule", { value: true }); + Lw(RC(), el); + Lw(NC(), el); + Lw(Dw(), el); + function Lw(e21, t) { + return Object.keys(e21).forEach(function(r) { + r !== "default" && !Object.prototype.hasOwnProperty.call(t, r) && Object.defineProperty(t, r, { enumerable: true, get: function() { + return e21[r]; + } }); + }), e21; + } +}); +var Mw = g((mi) => { + "use strict"; + Object.defineProperty(mi, "__esModule", { value: true }); + mi.ParamType = mi.HttpMethod = void 0; + var wie; + (function(e21) { + e21.Get = "get", e21.Put = "put", e21.Post = "post", e21.Patch = "patch", e21.Delete = "delete", e21.Options = "options", e21.Head = "head", e21.Trace = "trace"; + })(wie = mi.HttpMethod || (mi.HttpMethod = {})); + var $ie; + (function(e21) { + e21.Query = "query", e21.Header = "header", e21.Path = "path", e21.Cookie = "cookie"; + })($ie = mi.ParamType || (mi.ParamType = {})); +}); +var Ga = g((E0e, so) => { + "use strict"; + function qC(e21) { + return typeof e21 > "u" || e21 === null; + } + function Sie(e21) { + return typeof e21 == "object" && e21 !== null; + } + function kie(e21) { + return Array.isArray(e21) ? e21 : qC(e21) ? [] : [e21]; + } + function Eie(e21, t) { + var r, n, i, o; + if (t) for (o = Object.keys(t), r = 0, n = o.length; r < n; r += 1) i = o[r], e21[i] = t[i]; + return e21; + } + function Oie(e21, t) { + var r = "", n; + for (n = 0; n < t; n += 1) r += e21; + return r; + } + function Tie(e21) { + return e21 === 0 && Number.NEGATIVE_INFINITY === 1 / e21; + } + so.exports.isNothing = qC; + so.exports.isObject = Sie; + so.exports.toArray = kie; + so.exports.repeat = Oie; + so.exports.isNegativeZero = Tie; + so.exports.extend = Eie; +}); +var Wa = g((O0e, LC) => { + "use strict"; + function UC(e21, t) { + var r = "", n = e21.reason || "(unknown reason)"; + return e21.mark ? (e21.mark.name && (r += 'in "' + e21.mark.name + '" '), r += "(" + (e21.mark.line + 1) + ":" + (e21.mark.column + 1) + ")", !t && e21.mark.snippet && (r += ` + +` + e21.mark.snippet), n + " " + r) : n; + } + function tl(e21, t) { + Error.call(this), this.name = "YAMLException", this.reason = e21, this.mark = t, this.message = UC(this, false), Error.captureStackTrace ? Error.captureStackTrace(this, this.constructor) : this.stack = new Error().stack || ""; + } + tl.prototype = Object.create(Error.prototype); + tl.prototype.constructor = tl; + tl.prototype.toString = function(t) { + return this.name + ": " + UC(this, t); + }; + LC.exports = tl; +}); +var FC = g((T0e, MC) => { + "use strict"; + var rl = Ga(); + function Fw(e21, t, r, n, i) { + var o = "", a = "", s = Math.floor(i / 2) - 1; + return n - t > s && (o = " ... ", t = n - s + o.length), r - n > s && (a = " ...", r = n + s - a.length), { str: o + e21.slice(t, r).replace(/\t/g, "\u2192") + a, pos: n - t + o.length }; + } + function Zw(e21, t) { + return rl.repeat(" ", t - e21.length) + e21; + } + function Iie(e21, t) { + if (t = Object.create(t || null), !e21.buffer) return null; + t.maxLength || (t.maxLength = 79), typeof t.indent != "number" && (t.indent = 1), typeof t.linesBefore != "number" && (t.linesBefore = 3), typeof t.linesAfter != "number" && (t.linesAfter = 2); + for (var r = /\r?\n|\r|\0/g, n = [0], i = [], o, a = -1; o = r.exec(e21.buffer); ) i.push(o.index), n.push(o.index + o[0].length), e21.position <= o.index && a < 0 && (a = n.length - 2); + a < 0 && (a = n.length - 1); + var s = "", c, u, l = Math.min(e21.line + t.linesAfter, i.length).toString().length, p = t.maxLength - (t.indent + l + 3); + for (c = 1; c <= t.linesBefore && !(a - c < 0); c++) u = Fw(e21.buffer, n[a - c], i[a - c], e21.position - (n[a] - n[a - c]), p), s = rl.repeat(" ", t.indent) + Zw((e21.line - c + 1).toString(), l) + " | " + u.str + ` +` + s; + for (u = Fw(e21.buffer, n[a], i[a], e21.position, p), s += rl.repeat(" ", t.indent) + Zw((e21.line + 1).toString(), l) + " | " + u.str + ` +`, s += rl.repeat("-", t.indent + l + 3 + u.pos) + `^ +`, c = 1; c <= t.linesAfter && !(a + c >= i.length); c++) u = Fw(e21.buffer, n[a + c], i[a + c], e21.position - (n[a] - n[a + c]), p), s += rl.repeat(" ", t.indent) + Zw((e21.line + c + 1).toString(), l) + " | " + u.str + ` +`; + return s.replace(/\n$/, ""); + } + MC.exports = Iie; +}); +var zt = g((I0e, BC) => { + "use strict"; + var ZC = Wa(), zie = ["kind", "multi", "resolve", "construct", "instanceOf", "predicate", "represent", "representName", "defaultStyle", "styleAliases"], Pie = ["scalar", "sequence", "mapping"]; + function jie(e21) { + var t = {}; + return e21 !== null && Object.keys(e21).forEach(function(r) { + e21[r].forEach(function(n) { + t[String(n)] = r; + }); + }), t; + } + function Aie(e21, t) { + if (t = t || {}, Object.keys(t).forEach(function(r) { + if (zie.indexOf(r) === -1) throw new ZC('Unknown option "' + r + '" is met in definition of "' + e21 + '" YAML type.'); + }), this.options = t, this.tag = e21, this.kind = t.kind || null, this.resolve = t.resolve || function() { + return true; + }, this.construct = t.construct || function(r) { + return r; + }, this.instanceOf = t.instanceOf || null, this.predicate = t.predicate || null, this.represent = t.represent || null, this.representName = t.representName || null, this.defaultStyle = t.defaultStyle || null, this.multi = t.multi || false, this.styleAliases = jie(t.styleAliases || null), Pie.indexOf(this.kind) === -1) throw new ZC('Unknown kind "' + this.kind + '" is specified for "' + e21 + '" YAML type.'); + } + BC.exports = Aie; +}); +var Hw = g((z0e, HC) => { + "use strict"; + var nl = Wa(), Bw = zt(); + function VC(e21, t) { + var r = []; + return e21[t].forEach(function(n) { + var i = r.length; + r.forEach(function(o, a) { + o.tag === n.tag && o.kind === n.kind && o.multi === n.multi && (i = a); + }), r[i] = n; + }), r; + } + function Rie() { + var e21 = { scalar: {}, sequence: {}, mapping: {}, fallback: {}, multi: { scalar: [], sequence: [], mapping: [], fallback: [] } }, t, r; + function n(i) { + i.multi ? (e21.multi[i.kind].push(i), e21.multi.fallback.push(i)) : e21[i.kind][i.tag] = e21.fallback[i.tag] = i; + } + for (t = 0, r = arguments.length; t < r; t += 1) arguments[t].forEach(n); + return e21; + } + function Vw(e21) { + return this.extend(e21); + } + Vw.prototype.extend = function(t) { + var r = [], n = []; + if (t instanceof Bw) n.push(t); + else if (Array.isArray(t)) n = n.concat(t); + else if (t && (Array.isArray(t.implicit) || Array.isArray(t.explicit))) t.implicit && (r = r.concat(t.implicit)), t.explicit && (n = n.concat(t.explicit)); + else throw new nl("Schema.extend argument should be a Type, [ Type ], or a schema definition ({ implicit: [...], explicit: [...] })"); + r.forEach(function(o) { + if (!(o instanceof Bw)) throw new nl("Specified list of YAML types (or a single Type object) contains a non-Type object."); + if (o.loadKind && o.loadKind !== "scalar") throw new nl("There is a non-scalar type in the implicit list of a schema. Implicit resolving of such types is not supported."); + if (o.multi) throw new nl("There is a multi type in the implicit list of a schema. Multi tags can only be listed as explicit."); + }), n.forEach(function(o) { + if (!(o instanceof Bw)) throw new nl("Specified list of YAML types (or a single Type object) contains a non-Type object."); + }); + var i = Object.create(Vw.prototype); + return i.implicit = (this.implicit || []).concat(r), i.explicit = (this.explicit || []).concat(n), i.compiledImplicit = VC(i, "implicit"), i.compiledExplicit = VC(i, "explicit"), i.compiledTypeMap = Rie(i.compiledImplicit, i.compiledExplicit), i; + }; + HC.exports = Vw; +}); +var Jw = g((P0e, JC) => { + "use strict"; + var Cie = zt(); + JC.exports = new Cie("tag:yaml.org,2002:str", { kind: "scalar", construct: function(e21) { + return e21 !== null ? e21 : ""; + } }); +}); +var Gw = g((j0e, GC) => { + "use strict"; + var Nie = zt(); + GC.exports = new Nie("tag:yaml.org,2002:seq", { kind: "sequence", construct: function(e21) { + return e21 !== null ? e21 : []; + } }); +}); +var Ww = g((A0e, WC) => { + "use strict"; + var Die = zt(); + WC.exports = new Die("tag:yaml.org,2002:map", { kind: "mapping", construct: function(e21) { + return e21 !== null ? e21 : {}; + } }); +}); +var Kw = g((R0e, KC) => { + "use strict"; + var qie = Hw(); + KC.exports = new qie({ explicit: [Jw(), Gw(), Ww()] }); +}); +var Xw = g((C0e, XC) => { + "use strict"; + var Uie = zt(); + function Lie(e21) { + if (e21 === null) return true; + var t = e21.length; + return t === 1 && e21 === "~" || t === 4 && (e21 === "null" || e21 === "Null" || e21 === "NULL"); + } + function Mie() { + return null; + } + function Fie(e21) { + return e21 === null; + } + XC.exports = new Uie("tag:yaml.org,2002:null", { kind: "scalar", resolve: Lie, construct: Mie, predicate: Fie, represent: { canonical: function() { + return "~"; + }, lowercase: function() { + return "null"; + }, uppercase: function() { + return "NULL"; + }, camelcase: function() { + return "Null"; + }, empty: function() { + return ""; + } }, defaultStyle: "lowercase" }); +}); +var Yw = g((N0e, YC) => { + "use strict"; + var Zie = zt(); + function Bie(e21) { + if (e21 === null) return false; + var t = e21.length; + return t === 4 && (e21 === "true" || e21 === "True" || e21 === "TRUE") || t === 5 && (e21 === "false" || e21 === "False" || e21 === "FALSE"); + } + function Vie(e21) { + return e21 === "true" || e21 === "True" || e21 === "TRUE"; + } + function Hie(e21) { + return Object.prototype.toString.call(e21) === "[object Boolean]"; + } + YC.exports = new Zie("tag:yaml.org,2002:bool", { kind: "scalar", resolve: Bie, construct: Vie, predicate: Hie, represent: { lowercase: function(e21) { + return e21 ? "true" : "false"; + }, uppercase: function(e21) { + return e21 ? "TRUE" : "FALSE"; + }, camelcase: function(e21) { + return e21 ? "True" : "False"; + } }, defaultStyle: "lowercase" }); +}); +var Qw = g((D0e, QC) => { + "use strict"; + var Jie = Ga(), Gie = zt(); + function Wie(e21) { + return 48 <= e21 && e21 <= 57 || 65 <= e21 && e21 <= 70 || 97 <= e21 && e21 <= 102; + } + function Kie(e21) { + return 48 <= e21 && e21 <= 55; + } + function Xie(e21) { + return 48 <= e21 && e21 <= 57; + } + function Yie(e21) { + if (e21 === null) return false; + var t = e21.length, r = 0, n = false, i; + if (!t) return false; + if (i = e21[r], (i === "-" || i === "+") && (i = e21[++r]), i === "0") { + if (r + 1 === t) return true; + if (i = e21[++r], i === "b") { + for (r++; r < t; r++) if (i = e21[r], i !== "_") { + if (i !== "0" && i !== "1") return false; + n = true; + } + return n && i !== "_"; + } + if (i === "x") { + for (r++; r < t; r++) if (i = e21[r], i !== "_") { + if (!Wie(e21.charCodeAt(r))) return false; + n = true; + } + return n && i !== "_"; + } + if (i === "o") { + for (r++; r < t; r++) if (i = e21[r], i !== "_") { + if (!Kie(e21.charCodeAt(r))) return false; + n = true; + } + return n && i !== "_"; + } + } + if (i === "_") return false; + for (; r < t; r++) if (i = e21[r], i !== "_") { + if (!Xie(e21.charCodeAt(r))) return false; + n = true; + } + return !(!n || i === "_"); + } + function Qie(e21) { + var t = e21, r = 1, n; + if (t.indexOf("_") !== -1 && (t = t.replace(/_/g, "")), n = t[0], (n === "-" || n === "+") && (n === "-" && (r = -1), t = t.slice(1), n = t[0]), t === "0") return 0; + if (n === "0") { + if (t[1] === "b") return r * parseInt(t.slice(2), 2); + if (t[1] === "x") return r * parseInt(t.slice(2), 16); + if (t[1] === "o") return r * parseInt(t.slice(2), 8); + } + return r * parseInt(t, 10); + } + function eoe(e21) { + return Object.prototype.toString.call(e21) === "[object Number]" && e21 % 1 === 0 && !Jie.isNegativeZero(e21); + } + QC.exports = new Gie("tag:yaml.org,2002:int", { kind: "scalar", resolve: Yie, construct: Qie, predicate: eoe, represent: { binary: function(e21) { + return e21 >= 0 ? "0b" + e21.toString(2) : "-0b" + e21.toString(2).slice(1); + }, octal: function(e21) { + return e21 >= 0 ? "0o" + e21.toString(8) : "-0o" + e21.toString(8).slice(1); + }, decimal: function(e21) { + return e21.toString(10); + }, hexadecimal: function(e21) { + return e21 >= 0 ? "0x" + e21.toString(16).toUpperCase() : "-0x" + e21.toString(16).toUpperCase().slice(1); + } }, defaultStyle: "decimal", styleAliases: { binary: [2, "bin"], octal: [8, "oct"], decimal: [10, "dec"], hexadecimal: [16, "hex"] } }); +}); +var e1 = g((q0e, t8) => { + "use strict"; + var e82 = Ga(), toe = zt(), roe = new RegExp("^(?:[-+]?(?:[0-9][0-9_]*)(?:\\.[0-9_]*)?(?:[eE][-+]?[0-9]+)?|\\.[0-9_]+(?:[eE][-+]?[0-9]+)?|[-+]?\\.(?:inf|Inf|INF)|\\.(?:nan|NaN|NAN))$"); + function noe(e21) { + return !(e21 === null || !roe.test(e21) || e21[e21.length - 1] === "_"); + } + function ioe(e21) { + var t, r; + return t = e21.replace(/_/g, "").toLowerCase(), r = t[0] === "-" ? -1 : 1, "+-".indexOf(t[0]) >= 0 && (t = t.slice(1)), t === ".inf" ? r === 1 ? Number.POSITIVE_INFINITY : Number.NEGATIVE_INFINITY : t === ".nan" ? NaN : r * parseFloat(t, 10); + } + var ooe = /^[-+]?[0-9]+e/; + function aoe(e21, t) { + var r; + if (isNaN(e21)) switch (t) { + case "lowercase": + return ".nan"; + case "uppercase": + return ".NAN"; + case "camelcase": + return ".NaN"; + } + else if (Number.POSITIVE_INFINITY === e21) switch (t) { + case "lowercase": + return ".inf"; + case "uppercase": + return ".INF"; + case "camelcase": + return ".Inf"; + } + else if (Number.NEGATIVE_INFINITY === e21) switch (t) { + case "lowercase": + return "-.inf"; + case "uppercase": + return "-.INF"; + case "camelcase": + return "-.Inf"; + } + else if (e82.isNegativeZero(e21)) return "-0.0"; + return r = e21.toString(10), ooe.test(r) ? r.replace("e", ".e") : r; + } + function soe(e21) { + return Object.prototype.toString.call(e21) === "[object Number]" && (e21 % 1 !== 0 || e82.isNegativeZero(e21)); + } + t8.exports = new toe("tag:yaml.org,2002:float", { kind: "scalar", resolve: noe, construct: ioe, predicate: soe, represent: aoe, defaultStyle: "lowercase" }); +}); +var t1 = g((U0e, r8) => { + "use strict"; + r8.exports = Kw().extend({ implicit: [Xw(), Yw(), Qw(), e1()] }); +}); +var r1 = g((L0e, n8) => { + "use strict"; + n8.exports = t1(); +}); +var n1 = g((M0e, a8) => { + "use strict"; + var coe = zt(), i8 = new RegExp("^([0-9][0-9][0-9][0-9])-([0-9][0-9])-([0-9][0-9])$"), o8 = new RegExp("^([0-9][0-9][0-9][0-9])-([0-9][0-9]?)-([0-9][0-9]?)(?:[Tt]|[ \\t]+)([0-9][0-9]?):([0-9][0-9]):([0-9][0-9])(?:\\.([0-9]*))?(?:[ \\t]*(Z|([-+])([0-9][0-9]?)(?::([0-9][0-9]))?))?$"); + function uoe(e21) { + return e21 === null ? false : i8.exec(e21) !== null || o8.exec(e21) !== null; + } + function loe(e21) { + var t, r, n, i, o, a, s, c = 0, u = null, l, p, d; + if (t = i8.exec(e21), t === null && (t = o8.exec(e21)), t === null) throw new Error("Date resolve error"); + if (r = +t[1], n = +t[2] - 1, i = +t[3], !t[4]) return new Date(Date.UTC(r, n, i)); + if (o = +t[4], a = +t[5], s = +t[6], t[7]) { + for (c = t[7].slice(0, 3); c.length < 3; ) c += "0"; + c = +c; + } + return t[9] && (l = +t[10], p = +(t[11] || 0), u = (l * 60 + p) * 6e4, t[9] === "-" && (u = -u)), d = new Date(Date.UTC(r, n, i, o, a, s, c)), u && d.setTime(d.getTime() - u), d; + } + function poe(e21) { + return e21.toISOString(); + } + a8.exports = new coe("tag:yaml.org,2002:timestamp", { kind: "scalar", resolve: uoe, construct: loe, instanceOf: Date, represent: poe }); +}); +var i1 = g((F0e, s8) => { + "use strict"; + var doe = zt(); + function foe(e21) { + return e21 === "<<" || e21 === null; + } + s8.exports = new doe("tag:yaml.org,2002:merge", { kind: "scalar", resolve: foe }); +}); +var a1 = g((Z0e, c8) => { + "use strict"; + var moe = zt(), o1 = `ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/= +\r`; + function hoe(e21) { + if (e21 === null) return false; + var t, r, n = 0, i = e21.length, o = o1; + for (r = 0; r < i; r++) if (t = o.indexOf(e21.charAt(r)), !(t > 64)) { + if (t < 0) return false; + n += 6; + } + return n % 8 === 0; + } + function voe(e21) { + var t, r, n = e21.replace(/[\r\n=]/g, ""), i = n.length, o = o1, a = 0, s = []; + for (t = 0; t < i; t++) t % 4 === 0 && t && (s.push(a >> 16 & 255), s.push(a >> 8 & 255), s.push(a & 255)), a = a << 6 | o.indexOf(n.charAt(t)); + return r = i % 4 * 6, r === 0 ? (s.push(a >> 16 & 255), s.push(a >> 8 & 255), s.push(a & 255)) : r === 18 ? (s.push(a >> 10 & 255), s.push(a >> 2 & 255)) : r === 12 && s.push(a >> 4 & 255), new Uint8Array(s); + } + function goe(e21) { + var t = "", r = 0, n, i, o = e21.length, a = o1; + for (n = 0; n < o; n++) n % 3 === 0 && n && (t += a[r >> 18 & 63], t += a[r >> 12 & 63], t += a[r >> 6 & 63], t += a[r & 63]), r = (r << 8) + e21[n]; + return i = o % 3, i === 0 ? (t += a[r >> 18 & 63], t += a[r >> 12 & 63], t += a[r >> 6 & 63], t += a[r & 63]) : i === 2 ? (t += a[r >> 10 & 63], t += a[r >> 4 & 63], t += a[r << 2 & 63], t += a[64]) : i === 1 && (t += a[r >> 2 & 63], t += a[r << 4 & 63], t += a[64], t += a[64]), t; + } + function yoe(e21) { + return Object.prototype.toString.call(e21) === "[object Uint8Array]"; + } + c8.exports = new moe("tag:yaml.org,2002:binary", { kind: "scalar", resolve: hoe, construct: voe, predicate: yoe, represent: goe }); +}); +var s1 = g((B0e, u8) => { + "use strict"; + var xoe = zt(), boe = Object.prototype.hasOwnProperty, _oe = Object.prototype.toString; + function woe(e21) { + if (e21 === null) return true; + var t = [], r, n, i, o, a, s = e21; + for (r = 0, n = s.length; r < n; r += 1) { + if (i = s[r], a = false, _oe.call(i) !== "[object Object]") return false; + for (o in i) if (boe.call(i, o)) if (!a) a = true; + else return false; + if (!a) return false; + if (t.indexOf(o) === -1) t.push(o); + else return false; + } + return true; + } + function $oe(e21) { + return e21 !== null ? e21 : []; + } + u8.exports = new xoe("tag:yaml.org,2002:omap", { kind: "sequence", resolve: woe, construct: $oe }); +}); +var c1 = g((V0e, l8) => { + "use strict"; + var Soe = zt(), koe = Object.prototype.toString; + function Eoe(e21) { + if (e21 === null) return true; + var t, r, n, i, o, a = e21; + for (o = new Array(a.length), t = 0, r = a.length; t < r; t += 1) { + if (n = a[t], koe.call(n) !== "[object Object]" || (i = Object.keys(n), i.length !== 1)) return false; + o[t] = [i[0], n[i[0]]]; + } + return true; + } + function Ooe(e21) { + if (e21 === null) return []; + var t, r, n, i, o, a = e21; + for (o = new Array(a.length), t = 0, r = a.length; t < r; t += 1) n = a[t], i = Object.keys(n), o[t] = [i[0], n[i[0]]]; + return o; + } + l8.exports = new Soe("tag:yaml.org,2002:pairs", { kind: "sequence", resolve: Eoe, construct: Ooe }); +}); +var u1 = g((H0e, p8) => { + "use strict"; + var Toe = zt(), Ioe = Object.prototype.hasOwnProperty; + function zoe(e21) { + if (e21 === null) return true; + var t, r = e21; + for (t in r) if (Ioe.call(r, t) && r[t] !== null) return false; + return true; + } + function Poe(e21) { + return e21 !== null ? e21 : {}; + } + p8.exports = new Toe("tag:yaml.org,2002:set", { kind: "mapping", resolve: zoe, construct: Poe }); +}); +var fm = g((J0e, d8) => { + "use strict"; + d8.exports = r1().extend({ implicit: [n1(), i1()], explicit: [a1(), s1(), c1(), u1()] }); +}); +var I8 = g((G0e, f1) => { + "use strict"; + var uo = Ga(), x8 = Wa(), joe = FC(), Aoe = fm(), vi = Object.prototype.hasOwnProperty, mm = 1, b8 = 2, _8 = 3, hm = 4, l1 = 1, Roe = 2, f8 = 3, Coe = /[\x00-\x08\x0B\x0C\x0E-\x1F\x7F-\x84\x86-\x9F\uFFFE\uFFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF]/, Noe = /[\x85\u2028\u2029]/, Doe = /[,\[\]\{\}]/, w8 = /^(?:!|!!|![a-z\-]+!)$/i, $8 = /^(?:!|[^,\[\]\{\}])(?:%[0-9a-f]{2}|[0-9a-z\-#;\/\?:@&=\+\$,_\.!~\*'\(\)\[\]])*$/i; + function m8(e21) { + return Object.prototype.toString.call(e21); + } + function fn(e21) { + return e21 === 10 || e21 === 13; + } + function lo(e21) { + return e21 === 9 || e21 === 32; + } + function ar(e21) { + return e21 === 9 || e21 === 32 || e21 === 10 || e21 === 13; + } + function Ka(e21) { + return e21 === 44 || e21 === 91 || e21 === 93 || e21 === 123 || e21 === 125; + } + function qoe(e21) { + var t; + return 48 <= e21 && e21 <= 57 ? e21 - 48 : (t = e21 | 32, 97 <= t && t <= 102 ? t - 97 + 10 : -1); + } + function Uoe(e21) { + return e21 === 120 ? 2 : e21 === 117 ? 4 : e21 === 85 ? 8 : 0; + } + function Loe(e21) { + return 48 <= e21 && e21 <= 57 ? e21 - 48 : -1; + } + function h8(e21) { + return e21 === 48 ? "\0" : e21 === 97 ? "\x07" : e21 === 98 ? "\b" : e21 === 116 || e21 === 9 ? " " : e21 === 110 ? ` +` : e21 === 118 ? "\v" : e21 === 102 ? "\f" : e21 === 114 ? "\r" : e21 === 101 ? "\x1B" : e21 === 32 ? " " : e21 === 34 ? '"' : e21 === 47 ? "/" : e21 === 92 ? "\\" : e21 === 78 ? "\x85" : e21 === 95 ? "\xA0" : e21 === 76 ? "\u2028" : e21 === 80 ? "\u2029" : ""; + } + function Moe(e21) { + return e21 <= 65535 ? String.fromCharCode(e21) : String.fromCharCode((e21 - 65536 >> 10) + 55296, (e21 - 65536 & 1023) + 56320); + } + function S8(e21, t, r) { + t === "__proto__" ? Object.defineProperty(e21, t, { configurable: true, enumerable: true, writable: true, value: r }) : e21[t] = r; + } + var k8 = new Array(256), E8 = new Array(256); + for (co = 0; co < 256; co++) k8[co] = h8(co) ? 1 : 0, E8[co] = h8(co); + var co; + function Foe(e21, t) { + this.input = e21, this.filename = t.filename || null, this.schema = t.schema || Aoe, this.onWarning = t.onWarning || null, this.legacy = t.legacy || false, this.json = t.json || false, this.listener = t.listener || null, this.implicitTypes = this.schema.compiledImplicit, this.typeMap = this.schema.compiledTypeMap, this.length = e21.length, this.position = 0, this.line = 0, this.lineStart = 0, this.lineIndent = 0, this.firstTabInLine = -1, this.documents = []; + } + function O8(e21, t) { + var r = { name: e21.filename, buffer: e21.input.slice(0, -1), position: e21.position, line: e21.line, column: e21.position - e21.lineStart }; + return r.snippet = joe(r), new x8(t, r); + } + function L(e21, t) { + throw O8(e21, t); + } + function vm(e21, t) { + e21.onWarning && e21.onWarning.call(null, O8(e21, t)); + } + var v8 = { YAML: function(t, r, n) { + var i, o, a; + t.version !== null && L(t, "duplication of %YAML directive"), n.length !== 1 && L(t, "YAML directive accepts exactly one argument"), i = /^([0-9]+)\.([0-9]+)$/.exec(n[0]), i === null && L(t, "ill-formed argument of the YAML directive"), o = parseInt(i[1], 10), a = parseInt(i[2], 10), o !== 1 && L(t, "unacceptable YAML version of the document"), t.version = n[0], t.checkLineBreaks = a < 2, a !== 1 && a !== 2 && vm(t, "unsupported YAML version of the document"); + }, TAG: function(t, r, n) { + var i, o; + n.length !== 2 && L(t, "TAG directive accepts exactly two arguments"), i = n[0], o = n[1], w8.test(i) || L(t, "ill-formed tag handle (first argument) of the TAG directive"), vi.call(t.tagMap, i) && L(t, 'there is a previously declared suffix for "' + i + '" tag handle'), $8.test(o) || L(t, "ill-formed tag prefix (second argument) of the TAG directive"); + try { + o = decodeURIComponent(o); + } catch { + L(t, "tag prefix is malformed: " + o); + } + t.tagMap[i] = o; + } }; + function hi(e21, t, r, n) { + var i, o, a, s; + if (t < r) { + if (s = e21.input.slice(t, r), n) for (i = 0, o = s.length; i < o; i += 1) a = s.charCodeAt(i), a === 9 || 32 <= a && a <= 1114111 || L(e21, "expected valid JSON character"); + else Coe.test(s) && L(e21, "the stream contains non-printable characters"); + e21.result += s; + } + } + function g8(e21, t, r, n) { + var i, o, a, s; + for (uo.isObject(r) || L(e21, "cannot merge mappings; the provided source object is unacceptable"), i = Object.keys(r), a = 0, s = i.length; a < s; a += 1) o = i[a], vi.call(t, o) || (S8(t, o, r[o]), n[o] = true); + } + function Xa(e21, t, r, n, i, o, a, s, c) { + var u, l; + if (Array.isArray(i)) for (i = Array.prototype.slice.call(i), u = 0, l = i.length; u < l; u += 1) Array.isArray(i[u]) && L(e21, "nested arrays are not supported inside keys"), typeof i == "object" && m8(i[u]) === "[object Object]" && (i[u] = "[object Object]"); + if (typeof i == "object" && m8(i) === "[object Object]" && (i = "[object Object]"), i = String(i), t === null && (t = {}), n === "tag:yaml.org,2002:merge") if (Array.isArray(o)) for (u = 0, l = o.length; u < l; u += 1) g8(e21, t, o[u], r); + else g8(e21, t, o, r); + else !e21.json && !vi.call(r, i) && vi.call(t, i) && (e21.line = a || e21.line, e21.lineStart = s || e21.lineStart, e21.position = c || e21.position, L(e21, "duplicated mapping key")), S8(t, i, o), delete r[i]; + return t; + } + function p1(e21) { + var t; + t = e21.input.charCodeAt(e21.position), t === 10 ? e21.position++ : t === 13 ? (e21.position++, e21.input.charCodeAt(e21.position) === 10 && e21.position++) : L(e21, "a line break is expected"), e21.line += 1, e21.lineStart = e21.position, e21.firstTabInLine = -1; + } + function nt(e21, t, r) { + for (var n = 0, i = e21.input.charCodeAt(e21.position); i !== 0; ) { + for (; lo(i); ) i === 9 && e21.firstTabInLine === -1 && (e21.firstTabInLine = e21.position), i = e21.input.charCodeAt(++e21.position); + if (t && i === 35) do + i = e21.input.charCodeAt(++e21.position); + while (i !== 10 && i !== 13 && i !== 0); + if (fn(i)) for (p1(e21), i = e21.input.charCodeAt(e21.position), n++, e21.lineIndent = 0; i === 32; ) e21.lineIndent++, i = e21.input.charCodeAt(++e21.position); + else break; + } + return r !== -1 && n !== 0 && e21.lineIndent < r && vm(e21, "deficient indentation"), n; + } + function gm(e21) { + var t = e21.position, r; + return r = e21.input.charCodeAt(t), !!((r === 45 || r === 46) && r === e21.input.charCodeAt(t + 1) && r === e21.input.charCodeAt(t + 2) && (t += 3, r = e21.input.charCodeAt(t), r === 0 || ar(r))); + } + function d1(e21, t) { + t === 1 ? e21.result += " " : t > 1 && (e21.result += uo.repeat(` +`, t - 1)); + } + function Zoe(e21, t, r) { + var n, i, o, a, s, c, u, l, p = e21.kind, d = e21.result, f; + if (f = e21.input.charCodeAt(e21.position), ar(f) || Ka(f) || f === 35 || f === 38 || f === 42 || f === 33 || f === 124 || f === 62 || f === 39 || f === 34 || f === 37 || f === 64 || f === 96 || (f === 63 || f === 45) && (i = e21.input.charCodeAt(e21.position + 1), ar(i) || r && Ka(i))) return false; + for (e21.kind = "scalar", e21.result = "", o = a = e21.position, s = false; f !== 0; ) { + if (f === 58) { + if (i = e21.input.charCodeAt(e21.position + 1), ar(i) || r && Ka(i)) break; + } else if (f === 35) { + if (n = e21.input.charCodeAt(e21.position - 1), ar(n)) break; + } else { + if (e21.position === e21.lineStart && gm(e21) || r && Ka(f)) break; + if (fn(f)) if (c = e21.line, u = e21.lineStart, l = e21.lineIndent, nt(e21, false, -1), e21.lineIndent >= t) { + s = true, f = e21.input.charCodeAt(e21.position); + continue; + } else { + e21.position = a, e21.line = c, e21.lineStart = u, e21.lineIndent = l; + break; + } + } + s && (hi(e21, o, a, false), d1(e21, e21.line - c), o = a = e21.position, s = false), lo(f) || (a = e21.position + 1), f = e21.input.charCodeAt(++e21.position); + } + return hi(e21, o, a, false), e21.result ? true : (e21.kind = p, e21.result = d, false); + } + function Boe(e21, t) { + var r, n, i; + if (r = e21.input.charCodeAt(e21.position), r !== 39) return false; + for (e21.kind = "scalar", e21.result = "", e21.position++, n = i = e21.position; (r = e21.input.charCodeAt(e21.position)) !== 0; ) if (r === 39) if (hi(e21, n, e21.position, true), r = e21.input.charCodeAt(++e21.position), r === 39) n = e21.position, e21.position++, i = e21.position; + else return true; + else fn(r) ? (hi(e21, n, i, true), d1(e21, nt(e21, false, t)), n = i = e21.position) : e21.position === e21.lineStart && gm(e21) ? L(e21, "unexpected end of the document within a single quoted scalar") : (e21.position++, i = e21.position); + L(e21, "unexpected end of the stream within a single quoted scalar"); + } + function Voe(e21, t) { + var r, n, i, o, a, s; + if (s = e21.input.charCodeAt(e21.position), s !== 34) return false; + for (e21.kind = "scalar", e21.result = "", e21.position++, r = n = e21.position; (s = e21.input.charCodeAt(e21.position)) !== 0; ) { + if (s === 34) return hi(e21, r, e21.position, true), e21.position++, true; + if (s === 92) { + if (hi(e21, r, e21.position, true), s = e21.input.charCodeAt(++e21.position), fn(s)) nt(e21, false, t); + else if (s < 256 && k8[s]) e21.result += E8[s], e21.position++; + else if ((a = Uoe(s)) > 0) { + for (i = a, o = 0; i > 0; i--) s = e21.input.charCodeAt(++e21.position), (a = qoe(s)) >= 0 ? o = (o << 4) + a : L(e21, "expected hexadecimal character"); + e21.result += Moe(o), e21.position++; + } else L(e21, "unknown escape sequence"); + r = n = e21.position; + } else fn(s) ? (hi(e21, r, n, true), d1(e21, nt(e21, false, t)), r = n = e21.position) : e21.position === e21.lineStart && gm(e21) ? L(e21, "unexpected end of the document within a double quoted scalar") : (e21.position++, n = e21.position); + } + L(e21, "unexpected end of the stream within a double quoted scalar"); + } + function Hoe(e21, t) { + var r = true, n, i, o, a = e21.tag, s, c = e21.anchor, u, l, p, d, f, m = /* @__PURE__ */ Object.create(null), h, v, y, x; + if (x = e21.input.charCodeAt(e21.position), x === 91) l = 93, f = false, s = []; + else if (x === 123) l = 125, f = true, s = {}; + else return false; + for (e21.anchor !== null && (e21.anchorMap[e21.anchor] = s), x = e21.input.charCodeAt(++e21.position); x !== 0; ) { + if (nt(e21, true, t), x = e21.input.charCodeAt(e21.position), x === l) return e21.position++, e21.tag = a, e21.anchor = c, e21.kind = f ? "mapping" : "sequence", e21.result = s, true; + r ? x === 44 && L(e21, "expected the node content, but found ','") : L(e21, "missed comma between flow collection entries"), v = h = y = null, p = d = false, x === 63 && (u = e21.input.charCodeAt(e21.position + 1), ar(u) && (p = d = true, e21.position++, nt(e21, true, t))), n = e21.line, i = e21.lineStart, o = e21.position, Ya(e21, t, mm, false, true), v = e21.tag, h = e21.result, nt(e21, true, t), x = e21.input.charCodeAt(e21.position), (d || e21.line === n) && x === 58 && (p = true, x = e21.input.charCodeAt(++e21.position), nt(e21, true, t), Ya(e21, t, mm, false, true), y = e21.result), f ? Xa(e21, s, m, v, h, y, n, i, o) : p ? s.push(Xa(e21, null, m, v, h, y, n, i, o)) : s.push(h), nt(e21, true, t), x = e21.input.charCodeAt(e21.position), x === 44 ? (r = true, x = e21.input.charCodeAt(++e21.position)) : r = false; + } + L(e21, "unexpected end of the stream within a flow collection"); + } + function Joe(e21, t) { + var r, n, i = l1, o = false, a = false, s = t, c = 0, u = false, l, p; + if (p = e21.input.charCodeAt(e21.position), p === 124) n = false; + else if (p === 62) n = true; + else return false; + for (e21.kind = "scalar", e21.result = ""; p !== 0; ) if (p = e21.input.charCodeAt(++e21.position), p === 43 || p === 45) l1 === i ? i = p === 43 ? f8 : Roe : L(e21, "repeat of a chomping mode identifier"); + else if ((l = Loe(p)) >= 0) l === 0 ? L(e21, "bad explicit indentation width of a block scalar; it cannot be less than one") : a ? L(e21, "repeat of an indentation width identifier") : (s = t + l - 1, a = true); + else break; + if (lo(p)) { + do + p = e21.input.charCodeAt(++e21.position); + while (lo(p)); + if (p === 35) do + p = e21.input.charCodeAt(++e21.position); + while (!fn(p) && p !== 0); + } + for (; p !== 0; ) { + for (p1(e21), e21.lineIndent = 0, p = e21.input.charCodeAt(e21.position); (!a || e21.lineIndent < s) && p === 32; ) e21.lineIndent++, p = e21.input.charCodeAt(++e21.position); + if (!a && e21.lineIndent > s && (s = e21.lineIndent), fn(p)) { + c++; + continue; + } + if (e21.lineIndent < s) { + i === f8 ? e21.result += uo.repeat(` +`, o ? 1 + c : c) : i === l1 && o && (e21.result += ` +`); + break; + } + for (n ? lo(p) ? (u = true, e21.result += uo.repeat(` +`, o ? 1 + c : c)) : u ? (u = false, e21.result += uo.repeat(` +`, c + 1)) : c === 0 ? o && (e21.result += " ") : e21.result += uo.repeat(` +`, c) : e21.result += uo.repeat(` +`, o ? 1 + c : c), o = true, a = true, c = 0, r = e21.position; !fn(p) && p !== 0; ) p = e21.input.charCodeAt(++e21.position); + hi(e21, r, e21.position, false); + } + return true; + } + function y8(e21, t) { + var r, n = e21.tag, i = e21.anchor, o = [], a, s = false, c; + if (e21.firstTabInLine !== -1) return false; + for (e21.anchor !== null && (e21.anchorMap[e21.anchor] = o), c = e21.input.charCodeAt(e21.position); c !== 0 && (e21.firstTabInLine !== -1 && (e21.position = e21.firstTabInLine, L(e21, "tab characters must not be used in indentation")), !(c !== 45 || (a = e21.input.charCodeAt(e21.position + 1), !ar(a)))); ) { + if (s = true, e21.position++, nt(e21, true, -1) && e21.lineIndent <= t) { + o.push(null), c = e21.input.charCodeAt(e21.position); + continue; + } + if (r = e21.line, Ya(e21, t, _8, false, true), o.push(e21.result), nt(e21, true, -1), c = e21.input.charCodeAt(e21.position), (e21.line === r || e21.lineIndent > t) && c !== 0) L(e21, "bad indentation of a sequence entry"); + else if (e21.lineIndent < t) break; + } + return s ? (e21.tag = n, e21.anchor = i, e21.kind = "sequence", e21.result = o, true) : false; + } + function Goe(e21, t, r) { + var n, i, o, a, s, c, u = e21.tag, l = e21.anchor, p = {}, d = /* @__PURE__ */ Object.create(null), f = null, m = null, h = null, v = false, y = false, x; + if (e21.firstTabInLine !== -1) return false; + for (e21.anchor !== null && (e21.anchorMap[e21.anchor] = p), x = e21.input.charCodeAt(e21.position); x !== 0; ) { + if (!v && e21.firstTabInLine !== -1 && (e21.position = e21.firstTabInLine, L(e21, "tab characters must not be used in indentation")), n = e21.input.charCodeAt(e21.position + 1), o = e21.line, (x === 63 || x === 58) && ar(n)) x === 63 ? (v && (Xa(e21, p, d, f, m, null, a, s, c), f = m = h = null), y = true, v = true, i = true) : v ? (v = false, i = true) : L(e21, "incomplete explicit mapping pair; a key node is missed; or followed by a non-tabulated empty line"), e21.position += 1, x = n; + else { + if (a = e21.line, s = e21.lineStart, c = e21.position, !Ya(e21, r, b8, false, true)) break; + if (e21.line === o) { + for (x = e21.input.charCodeAt(e21.position); lo(x); ) x = e21.input.charCodeAt(++e21.position); + if (x === 58) x = e21.input.charCodeAt(++e21.position), ar(x) || L(e21, "a whitespace character is expected after the key-value separator within a block mapping"), v && (Xa(e21, p, d, f, m, null, a, s, c), f = m = h = null), y = true, v = false, i = false, f = e21.tag, m = e21.result; + else if (y) L(e21, "can not read an implicit mapping pair; a colon is missed"); + else return e21.tag = u, e21.anchor = l, true; + } else if (y) L(e21, "can not read a block mapping entry; a multiline key may not be an implicit key"); + else return e21.tag = u, e21.anchor = l, true; + } + if ((e21.line === o || e21.lineIndent > t) && (v && (a = e21.line, s = e21.lineStart, c = e21.position), Ya(e21, t, hm, true, i) && (v ? m = e21.result : h = e21.result), v || (Xa(e21, p, d, f, m, h, a, s, c), f = m = h = null), nt(e21, true, -1), x = e21.input.charCodeAt(e21.position)), (e21.line === o || e21.lineIndent > t) && x !== 0) L(e21, "bad indentation of a mapping entry"); + else if (e21.lineIndent < t) break; + } + return v && Xa(e21, p, d, f, m, null, a, s, c), y && (e21.tag = u, e21.anchor = l, e21.kind = "mapping", e21.result = p), y; + } + function Woe(e21) { + var t, r = false, n = false, i, o, a; + if (a = e21.input.charCodeAt(e21.position), a !== 33) return false; + if (e21.tag !== null && L(e21, "duplication of a tag property"), a = e21.input.charCodeAt(++e21.position), a === 60 ? (r = true, a = e21.input.charCodeAt(++e21.position)) : a === 33 ? (n = true, i = "!!", a = e21.input.charCodeAt(++e21.position)) : i = "!", t = e21.position, r) { + do + a = e21.input.charCodeAt(++e21.position); + while (a !== 0 && a !== 62); + e21.position < e21.length ? (o = e21.input.slice(t, e21.position), a = e21.input.charCodeAt(++e21.position)) : L(e21, "unexpected end of the stream within a verbatim tag"); + } else { + for (; a !== 0 && !ar(a); ) a === 33 && (n ? L(e21, "tag suffix cannot contain exclamation marks") : (i = e21.input.slice(t - 1, e21.position + 1), w8.test(i) || L(e21, "named tag handle cannot contain such characters"), n = true, t = e21.position + 1)), a = e21.input.charCodeAt(++e21.position); + o = e21.input.slice(t, e21.position), Doe.test(o) && L(e21, "tag suffix cannot contain flow indicator characters"); + } + o && !$8.test(o) && L(e21, "tag name cannot contain such characters: " + o); + try { + o = decodeURIComponent(o); + } catch { + L(e21, "tag name is malformed: " + o); + } + return r ? e21.tag = o : vi.call(e21.tagMap, i) ? e21.tag = e21.tagMap[i] + o : i === "!" ? e21.tag = "!" + o : i === "!!" ? e21.tag = "tag:yaml.org,2002:" + o : L(e21, 'undeclared tag handle "' + i + '"'), true; + } + function Koe(e21) { + var t, r; + if (r = e21.input.charCodeAt(e21.position), r !== 38) return false; + for (e21.anchor !== null && L(e21, "duplication of an anchor property"), r = e21.input.charCodeAt(++e21.position), t = e21.position; r !== 0 && !ar(r) && !Ka(r); ) r = e21.input.charCodeAt(++e21.position); + return e21.position === t && L(e21, "name of an anchor node must contain at least one character"), e21.anchor = e21.input.slice(t, e21.position), true; + } + function Xoe(e21) { + var t, r, n; + if (n = e21.input.charCodeAt(e21.position), n !== 42) return false; + for (n = e21.input.charCodeAt(++e21.position), t = e21.position; n !== 0 && !ar(n) && !Ka(n); ) n = e21.input.charCodeAt(++e21.position); + return e21.position === t && L(e21, "name of an alias node must contain at least one character"), r = e21.input.slice(t, e21.position), vi.call(e21.anchorMap, r) || L(e21, 'unidentified alias "' + r + '"'), e21.result = e21.anchorMap[r], nt(e21, true, -1), true; + } + function Ya(e21, t, r, n, i) { + var o, a, s, c = 1, u = false, l = false, p, d, f, m, h, v; + if (e21.listener !== null && e21.listener("open", e21), e21.tag = null, e21.anchor = null, e21.kind = null, e21.result = null, o = a = s = hm === r || _8 === r, n && nt(e21, true, -1) && (u = true, e21.lineIndent > t ? c = 1 : e21.lineIndent === t ? c = 0 : e21.lineIndent < t && (c = -1)), c === 1) for (; Woe(e21) || Koe(e21); ) nt(e21, true, -1) ? (u = true, s = o, e21.lineIndent > t ? c = 1 : e21.lineIndent === t ? c = 0 : e21.lineIndent < t && (c = -1)) : s = false; + if (s && (s = u || i), (c === 1 || hm === r) && (mm === r || b8 === r ? h = t : h = t + 1, v = e21.position - e21.lineStart, c === 1 ? s && (y8(e21, v) || Goe(e21, v, h)) || Hoe(e21, h) ? l = true : (a && Joe(e21, h) || Boe(e21, h) || Voe(e21, h) ? l = true : Xoe(e21) ? (l = true, (e21.tag !== null || e21.anchor !== null) && L(e21, "alias node should not have any properties")) : Zoe(e21, h, mm === r) && (l = true, e21.tag === null && (e21.tag = "?")), e21.anchor !== null && (e21.anchorMap[e21.anchor] = e21.result)) : c === 0 && (l = s && y8(e21, v))), e21.tag === null) e21.anchor !== null && (e21.anchorMap[e21.anchor] = e21.result); + else if (e21.tag === "?") { + for (e21.result !== null && e21.kind !== "scalar" && L(e21, 'unacceptable node kind for ! tag; it should be "scalar", not "' + e21.kind + '"'), p = 0, d = e21.implicitTypes.length; p < d; p += 1) if (m = e21.implicitTypes[p], m.resolve(e21.result)) { + e21.result = m.construct(e21.result), e21.tag = m.tag, e21.anchor !== null && (e21.anchorMap[e21.anchor] = e21.result); + break; + } + } else if (e21.tag !== "!") { + if (vi.call(e21.typeMap[e21.kind || "fallback"], e21.tag)) m = e21.typeMap[e21.kind || "fallback"][e21.tag]; + else for (m = null, f = e21.typeMap.multi[e21.kind || "fallback"], p = 0, d = f.length; p < d; p += 1) if (e21.tag.slice(0, f[p].tag.length) === f[p].tag) { + m = f[p]; + break; + } + m || L(e21, "unknown tag !<" + e21.tag + ">"), e21.result !== null && m.kind !== e21.kind && L(e21, "unacceptable node kind for !<" + e21.tag + '> tag; it should be "' + m.kind + '", not "' + e21.kind + '"'), m.resolve(e21.result, e21.tag) ? (e21.result = m.construct(e21.result, e21.tag), e21.anchor !== null && (e21.anchorMap[e21.anchor] = e21.result)) : L(e21, "cannot resolve a node with !<" + e21.tag + "> explicit tag"); + } + return e21.listener !== null && e21.listener("close", e21), e21.tag !== null || e21.anchor !== null || l; + } + function Yoe(e21) { + var t = e21.position, r, n, i, o = false, a; + for (e21.version = null, e21.checkLineBreaks = e21.legacy, e21.tagMap = /* @__PURE__ */ Object.create(null), e21.anchorMap = /* @__PURE__ */ Object.create(null); (a = e21.input.charCodeAt(e21.position)) !== 0 && (nt(e21, true, -1), a = e21.input.charCodeAt(e21.position), !(e21.lineIndent > 0 || a !== 37)); ) { + for (o = true, a = e21.input.charCodeAt(++e21.position), r = e21.position; a !== 0 && !ar(a); ) a = e21.input.charCodeAt(++e21.position); + for (n = e21.input.slice(r, e21.position), i = [], n.length < 1 && L(e21, "directive name must not be less than one character in length"); a !== 0; ) { + for (; lo(a); ) a = e21.input.charCodeAt(++e21.position); + if (a === 35) { + do + a = e21.input.charCodeAt(++e21.position); + while (a !== 0 && !fn(a)); + break; + } + if (fn(a)) break; + for (r = e21.position; a !== 0 && !ar(a); ) a = e21.input.charCodeAt(++e21.position); + i.push(e21.input.slice(r, e21.position)); + } + a !== 0 && p1(e21), vi.call(v8, n) ? v8[n](e21, n, i) : vm(e21, 'unknown document directive "' + n + '"'); + } + if (nt(e21, true, -1), e21.lineIndent === 0 && e21.input.charCodeAt(e21.position) === 45 && e21.input.charCodeAt(e21.position + 1) === 45 && e21.input.charCodeAt(e21.position + 2) === 45 ? (e21.position += 3, nt(e21, true, -1)) : o && L(e21, "directives end mark is expected"), Ya(e21, e21.lineIndent - 1, hm, false, true), nt(e21, true, -1), e21.checkLineBreaks && Noe.test(e21.input.slice(t, e21.position)) && vm(e21, "non-ASCII line breaks are interpreted as content"), e21.documents.push(e21.result), e21.position === e21.lineStart && gm(e21)) { + e21.input.charCodeAt(e21.position) === 46 && (e21.position += 3, nt(e21, true, -1)); + return; + } + if (e21.position < e21.length - 1) L(e21, "end of the stream or a document separator is expected"); + else return; + } + function T8(e21, t) { + e21 = String(e21), t = t || {}, e21.length !== 0 && (e21.charCodeAt(e21.length - 1) !== 10 && e21.charCodeAt(e21.length - 1) !== 13 && (e21 += ` +`), e21.charCodeAt(0) === 65279 && (e21 = e21.slice(1))); + var r = new Foe(e21, t), n = e21.indexOf("\0"); + for (n !== -1 && (r.position = n, L(r, "null byte is not allowed in input")), r.input += "\0"; r.input.charCodeAt(r.position) === 32; ) r.lineIndent += 1, r.position += 1; + for (; r.position < r.length - 1; ) Yoe(r); + return r.documents; + } + function Qoe(e21, t, r) { + t !== null && typeof t == "object" && typeof r > "u" && (r = t, t = null); + var n = T8(e21, r); + if (typeof t != "function") return n; + for (var i = 0, o = n.length; i < o; i += 1) t(n[i]); + } + function eae(e21, t) { + var r = T8(e21, t); + if (r.length !== 0) { + if (r.length === 1) return r[0]; + throw new x8("expected a single document in the stream, but found more"); + } + } + f1.exports.loadAll = Qoe; + f1.exports.load = eae; +}); +var K8 = g((W0e, W8) => { + "use strict"; + var bm = Ga(), cl = Wa(), tae = fm(), q8 = Object.prototype.toString, U8 = Object.prototype.hasOwnProperty, y1 = 65279, rae = 9, ol = 10, nae = 13, iae = 32, oae = 33, aae = 34, m1 = 35, sae = 37, cae = 38, uae = 39, lae = 42, L8 = 44, pae = 45, ym = 58, dae = 61, fae = 62, mae = 63, hae = 64, M8 = 91, F8 = 93, vae = 96, Z8 = 123, gae = 124, B8 = 125, Pt = {}; + Pt[0] = "\\0"; + Pt[7] = "\\a"; + Pt[8] = "\\b"; + Pt[9] = "\\t"; + Pt[10] = "\\n"; + Pt[11] = "\\v"; + Pt[12] = "\\f"; + Pt[13] = "\\r"; + Pt[27] = "\\e"; + Pt[34] = '\\"'; + Pt[92] = "\\\\"; + Pt[133] = "\\N"; + Pt[160] = "\\_"; + Pt[8232] = "\\L"; + Pt[8233] = "\\P"; + var yae = ["y", "Y", "yes", "Yes", "YES", "on", "On", "ON", "n", "N", "no", "No", "NO", "off", "Off", "OFF"], xae = /^[-+]?[0-9_]+(?::[0-9_]+)+(?:\.[0-9_]*)?$/; + function bae(e21, t) { + var r, n, i, o, a, s, c; + if (t === null) return {}; + for (r = {}, n = Object.keys(t), i = 0, o = n.length; i < o; i += 1) a = n[i], s = String(t[a]), a.slice(0, 2) === "!!" && (a = "tag:yaml.org,2002:" + a.slice(2)), c = e21.compiledTypeMap.fallback[a], c && U8.call(c.styleAliases, s) && (s = c.styleAliases[s]), r[a] = s; + return r; + } + function _ae(e21) { + var t, r, n; + if (t = e21.toString(16).toUpperCase(), e21 <= 255) r = "x", n = 2; + else if (e21 <= 65535) r = "u", n = 4; + else if (e21 <= 4294967295) r = "U", n = 8; + else throw new cl("code point within a string may not be greater than 0xFFFFFFFF"); + return "\\" + r + bm.repeat("0", n - t.length) + t; + } + var wae = 1, al = 2; + function $ae(e21) { + this.schema = e21.schema || tae, this.indent = Math.max(1, e21.indent || 2), this.noArrayIndent = e21.noArrayIndent || false, this.skipInvalid = e21.skipInvalid || false, this.flowLevel = bm.isNothing(e21.flowLevel) ? -1 : e21.flowLevel, this.styleMap = bae(this.schema, e21.styles || null), this.sortKeys = e21.sortKeys || false, this.lineWidth = e21.lineWidth || 80, this.noRefs = e21.noRefs || false, this.noCompatMode = e21.noCompatMode || false, this.condenseFlow = e21.condenseFlow || false, this.quotingType = e21.quotingType === '"' ? al : wae, this.forceQuotes = e21.forceQuotes || false, this.replacer = typeof e21.replacer == "function" ? e21.replacer : null, this.implicitTypes = this.schema.compiledImplicit, this.explicitTypes = this.schema.compiledExplicit, this.tag = null, this.result = "", this.duplicates = [], this.usedDuplicates = null; + } + function z8(e21, t) { + for (var r = bm.repeat(" ", t), n = 0, i = -1, o = "", a, s = e21.length; n < s; ) i = e21.indexOf(` +`, n), i === -1 ? (a = e21.slice(n), n = s) : (a = e21.slice(n, i + 1), n = i + 1), a.length && a !== ` +` && (o += r), o += a; + return o; + } + function h1(e21, t) { + return ` +` + bm.repeat(" ", e21.indent * t); + } + function Sae(e21, t) { + var r, n, i; + for (r = 0, n = e21.implicitTypes.length; r < n; r += 1) if (i = e21.implicitTypes[r], i.resolve(t)) return true; + return false; + } + function xm(e21) { + return e21 === iae || e21 === rae; + } + function sl(e21) { + return 32 <= e21 && e21 <= 126 || 161 <= e21 && e21 <= 55295 && e21 !== 8232 && e21 !== 8233 || 57344 <= e21 && e21 <= 65533 && e21 !== y1 || 65536 <= e21 && e21 <= 1114111; + } + function P8(e21) { + return sl(e21) && e21 !== y1 && e21 !== nae && e21 !== ol; + } + function j8(e21, t, r) { + var n = P8(e21), i = n && !xm(e21); + return (r ? n : n && e21 !== L8 && e21 !== M8 && e21 !== F8 && e21 !== Z8 && e21 !== B8) && e21 !== m1 && !(t === ym && !i) || P8(t) && !xm(t) && e21 === m1 || t === ym && i; + } + function kae(e21) { + return sl(e21) && e21 !== y1 && !xm(e21) && e21 !== pae && e21 !== mae && e21 !== ym && e21 !== L8 && e21 !== M8 && e21 !== F8 && e21 !== Z8 && e21 !== B8 && e21 !== m1 && e21 !== cae && e21 !== lae && e21 !== oae && e21 !== gae && e21 !== dae && e21 !== fae && e21 !== uae && e21 !== aae && e21 !== sae && e21 !== hae && e21 !== vae; + } + function Eae(e21) { + return !xm(e21) && e21 !== ym; + } + function il(e21, t) { + var r = e21.charCodeAt(t), n; + return r >= 55296 && r <= 56319 && t + 1 < e21.length && (n = e21.charCodeAt(t + 1), n >= 56320 && n <= 57343) ? (r - 55296) * 1024 + n - 56320 + 65536 : r; + } + function V8(e21) { + var t = /^\n* /; + return t.test(e21); + } + var H8 = 1, v1 = 2, J8 = 3, G8 = 4, Qa = 5; + function Oae(e21, t, r, n, i, o, a, s) { + var c, u = 0, l = null, p = false, d = false, f = n !== -1, m = -1, h = kae(il(e21, 0)) && Eae(il(e21, e21.length - 1)); + if (t || a) for (c = 0; c < e21.length; u >= 65536 ? c += 2 : c++) { + if (u = il(e21, c), !sl(u)) return Qa; + h = h && j8(u, l, s), l = u; + } + else { + for (c = 0; c < e21.length; u >= 65536 ? c += 2 : c++) { + if (u = il(e21, c), u === ol) p = true, f && (d = d || c - m - 1 > n && e21[m + 1] !== " ", m = c); + else if (!sl(u)) return Qa; + h = h && j8(u, l, s), l = u; + } + d = d || f && c - m - 1 > n && e21[m + 1] !== " "; + } + return !p && !d ? h && !a && !i(e21) ? H8 : o === al ? Qa : v1 : r > 9 && V8(e21) ? Qa : a ? o === al ? Qa : v1 : d ? G8 : J8; + } + function Tae(e21, t, r, n, i) { + e21.dump = (function() { + if (t.length === 0) return e21.quotingType === al ? '""' : "''"; + if (!e21.noCompatMode && (yae.indexOf(t) !== -1 || xae.test(t))) return e21.quotingType === al ? '"' + t + '"' : "'" + t + "'"; + var o = e21.indent * Math.max(1, r), a = e21.lineWidth === -1 ? -1 : Math.max(Math.min(e21.lineWidth, 40), e21.lineWidth - o), s = n || e21.flowLevel > -1 && r >= e21.flowLevel; + function c(u) { + return Sae(e21, u); + } + switch (Oae(t, s, e21.indent, a, c, e21.quotingType, e21.forceQuotes && !n, i)) { + case H8: + return t; + case v1: + return "'" + t.replace(/'/g, "''") + "'"; + case J8: + return "|" + A8(t, e21.indent) + R8(z8(t, o)); + case G8: + return ">" + A8(t, e21.indent) + R8(z8(Iae(t, a), o)); + case Qa: + return '"' + zae(t, a) + '"'; + default: + throw new cl("impossible error: invalid scalar style"); + } + })(); + } + function A8(e21, t) { + var r = V8(e21) ? String(t) : "", n = e21[e21.length - 1] === ` +`, i = n && (e21[e21.length - 2] === ` +` || e21 === ` +`), o = i ? "+" : n ? "" : "-"; + return r + o + ` +`; + } + function R8(e21) { + return e21[e21.length - 1] === ` +` ? e21.slice(0, -1) : e21; + } + function Iae(e21, t) { + for (var r = /(\n+)([^\n]*)/g, n = (function() { + var u = e21.indexOf(` +`); + return u = u !== -1 ? u : e21.length, r.lastIndex = u, C8(e21.slice(0, u), t); + })(), i = e21[0] === ` +` || e21[0] === " ", o, a; a = r.exec(e21); ) { + var s = a[1], c = a[2]; + o = c[0] === " ", n += s + (!i && !o && c !== "" ? ` +` : "") + C8(c, t), i = o; + } + return n; + } + function C8(e21, t) { + if (e21 === "" || e21[0] === " ") return e21; + for (var r = / [^ ]/g, n, i = 0, o, a = 0, s = 0, c = ""; n = r.exec(e21); ) s = n.index, s - i > t && (o = a > i ? a : s, c += ` +` + e21.slice(i, o), i = o + 1), a = s; + return c += ` +`, e21.length - i > t && a > i ? c += e21.slice(i, a) + ` +` + e21.slice(a + 1) : c += e21.slice(i), c.slice(1); + } + function zae(e21) { + for (var t = "", r = 0, n, i = 0; i < e21.length; r >= 65536 ? i += 2 : i++) r = il(e21, i), n = Pt[r], !n && sl(r) ? (t += e21[i], r >= 65536 && (t += e21[i + 1])) : t += n || _ae(r); + return t; + } + function Pae(e21, t, r) { + var n = "", i = e21.tag, o, a, s; + for (o = 0, a = r.length; o < a; o += 1) s = r[o], e21.replacer && (s = e21.replacer.call(r, String(o), s)), (An(e21, t, s, false, false) || typeof s > "u" && An(e21, t, null, false, false)) && (n !== "" && (n += "," + (e21.condenseFlow ? "" : " ")), n += e21.dump); + e21.tag = i, e21.dump = "[" + n + "]"; + } + function N8(e21, t, r, n) { + var i = "", o = e21.tag, a, s, c; + for (a = 0, s = r.length; a < s; a += 1) c = r[a], e21.replacer && (c = e21.replacer.call(r, String(a), c)), (An(e21, t + 1, c, true, true, false, true) || typeof c > "u" && An(e21, t + 1, null, true, true, false, true)) && ((!n || i !== "") && (i += h1(e21, t)), e21.dump && ol === e21.dump.charCodeAt(0) ? i += "-" : i += "- ", i += e21.dump); + e21.tag = o, e21.dump = i || "[]"; + } + function jae(e21, t, r) { + var n = "", i = e21.tag, o = Object.keys(r), a, s, c, u, l; + for (a = 0, s = o.length; a < s; a += 1) l = "", n !== "" && (l += ", "), e21.condenseFlow && (l += '"'), c = o[a], u = r[c], e21.replacer && (u = e21.replacer.call(r, c, u)), An(e21, t, c, false, false) && (e21.dump.length > 1024 && (l += "? "), l += e21.dump + (e21.condenseFlow ? '"' : "") + ":" + (e21.condenseFlow ? "" : " "), An(e21, t, u, false, false) && (l += e21.dump, n += l)); + e21.tag = i, e21.dump = "{" + n + "}"; + } + function Aae(e21, t, r, n) { + var i = "", o = e21.tag, a = Object.keys(r), s, c, u, l, p, d; + if (e21.sortKeys === true) a.sort(); + else if (typeof e21.sortKeys == "function") a.sort(e21.sortKeys); + else if (e21.sortKeys) throw new cl("sortKeys must be a boolean or a function"); + for (s = 0, c = a.length; s < c; s += 1) d = "", (!n || i !== "") && (d += h1(e21, t)), u = a[s], l = r[u], e21.replacer && (l = e21.replacer.call(r, u, l)), An(e21, t + 1, u, true, true, true) && (p = e21.tag !== null && e21.tag !== "?" || e21.dump && e21.dump.length > 1024, p && (e21.dump && ol === e21.dump.charCodeAt(0) ? d += "?" : d += "? "), d += e21.dump, p && (d += h1(e21, t)), An(e21, t + 1, l, true, p) && (e21.dump && ol === e21.dump.charCodeAt(0) ? d += ":" : d += ": ", d += e21.dump, i += d)); + e21.tag = o, e21.dump = i || "{}"; + } + function D8(e21, t, r) { + var n, i, o, a, s, c; + for (i = r ? e21.explicitTypes : e21.implicitTypes, o = 0, a = i.length; o < a; o += 1) if (s = i[o], (s.instanceOf || s.predicate) && (!s.instanceOf || typeof t == "object" && t instanceof s.instanceOf) && (!s.predicate || s.predicate(t))) { + if (r ? s.multi && s.representName ? e21.tag = s.representName(t) : e21.tag = s.tag : e21.tag = "?", s.represent) { + if (c = e21.styleMap[s.tag] || s.defaultStyle, q8.call(s.represent) === "[object Function]") n = s.represent(t, c); + else if (U8.call(s.represent, c)) n = s.represent[c](t, c); + else throw new cl("!<" + s.tag + '> tag resolver accepts not "' + c + '" style'); + e21.dump = n; + } + return true; + } + return false; + } + function An(e21, t, r, n, i, o, a) { + e21.tag = null, e21.dump = r, D8(e21, r, false) || D8(e21, r, true); + var s = q8.call(e21.dump), c = n, u; + n && (n = e21.flowLevel < 0 || e21.flowLevel > t); + var l = s === "[object Object]" || s === "[object Array]", p, d; + if (l && (p = e21.duplicates.indexOf(r), d = p !== -1), (e21.tag !== null && e21.tag !== "?" || d || e21.indent !== 2 && t > 0) && (i = false), d && e21.usedDuplicates[p]) e21.dump = "*ref_" + p; + else { + if (l && d && !e21.usedDuplicates[p] && (e21.usedDuplicates[p] = true), s === "[object Object]") n && Object.keys(e21.dump).length !== 0 ? (Aae(e21, t, e21.dump, i), d && (e21.dump = "&ref_" + p + e21.dump)) : (jae(e21, t, e21.dump), d && (e21.dump = "&ref_" + p + " " + e21.dump)); + else if (s === "[object Array]") n && e21.dump.length !== 0 ? (e21.noArrayIndent && !a && t > 0 ? N8(e21, t - 1, e21.dump, i) : N8(e21, t, e21.dump, i), d && (e21.dump = "&ref_" + p + e21.dump)) : (Pae(e21, t, e21.dump), d && (e21.dump = "&ref_" + p + " " + e21.dump)); + else if (s === "[object String]") e21.tag !== "?" && Tae(e21, e21.dump, t, o, c); + else { + if (s === "[object Undefined]") return false; + if (e21.skipInvalid) return false; + throw new cl("unacceptable kind of an object to dump " + s); + } + e21.tag !== null && e21.tag !== "?" && (u = encodeURI(e21.tag[0] === "!" ? e21.tag.slice(1) : e21.tag).replace(/!/g, "%21"), e21.tag[0] === "!" ? u = "!" + u : u.slice(0, 18) === "tag:yaml.org,2002:" ? u = "!!" + u.slice(18) : u = "!<" + u + ">", e21.dump = u + " " + e21.dump); + } + return true; + } + function Rae(e21, t) { + var r = [], n = [], i, o; + for (g1(e21, r, n), i = 0, o = n.length; i < o; i += 1) t.duplicates.push(r[n[i]]); + t.usedDuplicates = new Array(o); + } + function g1(e21, t, r) { + var n, i, o; + if (e21 !== null && typeof e21 == "object") if (i = t.indexOf(e21), i !== -1) r.indexOf(i) === -1 && r.push(i); + else if (t.push(e21), Array.isArray(e21)) for (i = 0, o = e21.length; i < o; i += 1) g1(e21[i], t, r); + else for (n = Object.keys(e21), i = 0, o = n.length; i < o; i += 1) g1(e21[n[i]], t, r); + } + function Cae(e21, t) { + t = t || {}; + var r = new $ae(t); + r.noRefs || Rae(e21, r); + var n = e21; + return r.replacer && (n = r.replacer.call({ "": n }, "", n)), An(r, 0, n, true, true) ? r.dump + ` +` : ""; + } + W8.exports.dump = Cae; +}); +var Y8 = g((K0e, Vt) => { + "use strict"; + var X8 = I8(), Nae = K8(); + function x1(e21, t) { + return function() { + throw new Error("Function yaml." + e21 + " is removed in js-yaml 4. Use yaml." + t + " instead, which is now safe by default."); + }; + } + Vt.exports.Type = zt(); + Vt.exports.Schema = Hw(); + Vt.exports.FAILSAFE_SCHEMA = Kw(); + Vt.exports.JSON_SCHEMA = t1(); + Vt.exports.CORE_SCHEMA = r1(); + Vt.exports.DEFAULT_SCHEMA = fm(); + Vt.exports.load = X8.load; + Vt.exports.loadAll = X8.loadAll; + Vt.exports.dump = Nae.dump; + Vt.exports.YAMLException = Wa(); + Vt.exports.types = { binary: a1(), float: e1(), map: Ww(), null: Xw(), pairs: c1(), set: u1(), timestamp: n1(), bool: Yw(), int: Qw(), merge: i1(), omap: s1(), seq: Gw(), str: Jw() }; + Vt.exports.safeLoad = x1("safeLoad", "load"); + Vt.exports.safeLoadAll = x1("safeLoadAll", "loadAll"); + Vt.exports.safeDump = x1("safeDump", "dump"); +}); +var _1 = g((Ve) => { + "use strict"; + var sr = Ve && Ve.__assign || function() { + return sr = Object.assign || function(e21) { + for (var t, r = 1, n = arguments.length; r < n; r++) { + t = arguments[r]; + for (var i in t) Object.prototype.hasOwnProperty.call(t, i) && (e21[i] = t[i]); + } + return e21; + }, sr.apply(this, arguments); + }, Dae = Ve && Ve.__createBinding || (Object.create ? function(e21, t, r, n) { + n === void 0 && (n = r); + var i = Object.getOwnPropertyDescriptor(t, r); + (!i || ("get" in i ? !t.__esModule : i.writable || i.configurable)) && (i = { enumerable: true, get: function() { + return t[r]; + } }), Object.defineProperty(e21, n, i); + } : function(e21, t, r, n) { + n === void 0 && (n = r), e21[n] = t[r]; + }), qae = Ve && Ve.__setModuleDefault || (Object.create ? function(e21, t) { + Object.defineProperty(e21, "default", { enumerable: true, value: t }); + } : function(e21, t) { + e21.default = t; + }), Uae = Ve && Ve.__importStar || function(e21) { + if (e21 && e21.__esModule) return e21; + var t = {}; + if (e21 != null) for (var r in e21) r !== "default" && Object.prototype.hasOwnProperty.call(e21, r) && Dae(t, e21, r); + return qae(t, e21), t; + }, _m = Ve && Ve.__awaiter || function(e21, t, r, n) { + function i(o) { + return o instanceof r ? o : new r(function(a) { + a(o); + }); + } + return new (r || (r = Promise))(function(o, a) { + function s(l) { + try { + u(n.next(l)); + } catch (p) { + a(p); + } + } + function c(l) { + try { + u(n.throw(l)); + } catch (p) { + a(p); + } + } + function u(l) { + l.done ? o(l.value) : i(l.value).then(s, c); + } + u((n = n.apply(e21, t || [])).next()); + }); + }, wm = Ve && Ve.__generator || function(e21, t) { + var r = { label: 0, sent: function() { + if (o[0] & 1) throw o[1]; + return o[1]; + }, trys: [], ops: [] }, n, i, o, a; + return a = { next: s(0), throw: s(1), return: s(2) }, typeof Symbol == "function" && (a[Symbol.iterator] = function() { + return this; + }), a; + function s(u) { + return function(l) { + return c([u, l]); + }; + } + function c(u) { + if (n) throw new TypeError("Generator is already executing."); + for (; a && (a = 0, u[0] && (r = 0)), r; ) try { + if (n = 1, i && (o = u[0] & 2 ? i.return : u[0] ? i.throw || ((o = i.return) && o.call(i), 0) : i.next) && !(o = o.call(i, u[1])).done) return o; + switch (i = 0, o && (u = [u[0] & 2, o.value]), u[0]) { + case 0: + case 1: + o = u; + break; + case 4: + return r.label++, { value: u[1], done: false }; + case 5: + r.label++, i = u[1], u = [0]; + continue; + case 7: + u = r.ops.pop(), r.trys.pop(); + continue; + default: + if (o = r.trys, !(o = o.length > 0 && o[o.length - 1]) && (u[0] === 6 || u[0] === 2)) { + r = 0; + continue; + } + if (u[0] === 3 && (!o || u[1] > o[0] && u[1] < o[3])) { + r.label = u[1]; + break; + } + if (u[0] === 6 && r.label < o[1]) { + r.label = o[1], o = u; + break; + } + if (o && r.label < o[2]) { + r.label = o[2], r.ops.push(u); + break; + } + o[2] && r.ops.pop(), r.trys.pop(); + continue; + } + u = t.call(e21, r); + } catch (l) { + u = [6, l], i = 0; + } finally { + n = o = 0; + } + if (u[0] & 5) throw u[1]; + return { value: u[0] ? u[1] : void 0, done: true }; + } + }, gi = Ve && Ve.__values || function(e21) { + var t = typeof Symbol == "function" && Symbol.iterator, r = t && e21[t], n = 0; + if (r) return r.call(e21); + if (e21 && typeof e21.length == "number") return { next: function() { + return e21 && n >= e21.length && (e21 = void 0), { value: e21 && e21[n++], done: !e21 }; + } }; + throw new TypeError(t ? "Object is not iterable." : "Symbol.iterator is not defined."); + }, Rn = Ve && Ve.__read || function(e21, t) { + var r = typeof Symbol == "function" && e21[Symbol.iterator]; + if (!r) return e21; + var n = r.call(e21), i, o = [], a; + try { + for (; (t === void 0 || t-- > 0) && !(i = n.next()).done; ) o.push(i.value); + } catch (s) { + a = { error: s }; + } finally { + try { + i && !i.done && (r = n.return) && r.call(n); + } finally { + if (a) throw a.error; + } + } + return o; + }, $m = Ve && Ve.__spreadArray || function(e21, t, r) { + if (r || arguments.length === 2) for (var n = 0, i = t.length, o; n < i; n++) (o || !(n in t)) && (o || (o = Array.prototype.slice.call(t, 0, n)), o[n] = t[n]); + return e21.concat(o || Array.prototype.slice.call(t)); + }, tN = Ve && Ve.__importDefault || function(e21) { + return e21 && e21.__esModule ? e21 : { default: e21 }; + }; + Object.defineProperty(Ve, "__esModule", { value: true }); + Ve.OpenAPIClientAxios = void 0; + var Lae = tN(SC()), Q8 = tN(jC()), eN = DC(), po = Mw(), b1 = "default", Mae = (function() { + function e21(t) { + var r, n = this; + this.getClient = function() { + return _m(n, void 0, void 0, function() { + return wm(this, function(o) { + return this.initialized ? [2, this.instance] : [2, this.init()]; + }); + }); + }, this.init = function() { + return _m(n, void 0, void 0, function() { + return wm(this, function(o) { + switch (o.label) { + case 0: + return [4, this.loadDocument()]; + case 1: + return o.sent(), this.definition = (0, eN.dereferenceSync)(this.document), this.instance = this.createAxiosInstance(), this.initialized = true, [2, this.instance]; + } + }); + }); + }, this.initSync = function() { + if (typeof n.inputDocument != "object") throw new Error(".initSync() can't be called with a non-object definition. Please use .init()"); + return n.document = n.inputDocument, n.definition = (0, eN.dereferenceSync)(n.document), n.instance = n.createAxiosInstance(), n.initialized = true, n.instance; + }, this.getAxiosInstance = function() { + var o = Lae.default.create(n.axiosConfigDefaults); + return o; + }, this.createAxiosInstance = function() { + var o, a, s = n.getAxiosInstance(), c = n.getBaseURL(); + c && !n.axiosConfigDefaults.baseURL && (s.defaults.baseURL = c); + var u = n.getOperations(); + try { + for (var l = gi(u), p = l.next(); !p.done; p = l.next()) { + var d = p.value, f = d.operationId; + f && (s[n.transformOperationName(f)] = n.createOperationMethod(d)); + } + } catch (v) { + o = { error: v }; + } finally { + try { + p && !p.done && (a = l.return) && a.call(l); + } finally { + if (o) throw o.error; + } + } + s.paths = {}; + var m = function(v) { + if (n.definition.paths[v]) { + s.paths[v] || (s.paths[v] = {}); + var y = n.definition.paths[v], x = function(S) { + if (y[S] && Object.values(po.HttpMethod).includes(S)) { + var k = S, A = n.getOperations().find(function(C) { + return C.method === k && C.path === v; + }); + s.paths[v][k] = n.createOperationMethod(A); + } + }; + for (var w in y) x(w); + } + }; + for (var h in n.definition.paths) m(h); + return s.api = n, s; + }, this.getBaseURL = function(o) { + var a, s, c, u; + if (n.definition) { + if (o && (typeof o == "string" && (o = n.getOperation(o)), o.servers && o.servers[0])) return o.servers[0].url; + var l; + if (typeof n.defaultServer == "number") n.definition.servers && n.definition.servers[n.defaultServer] && (l = n.definition.servers[n.defaultServer]); + else if (typeof n.defaultServer == "string") try { + for (var p = gi(n.definition.servers), d = p.next(); !d.done; d = p.next()) { + var f = d.value; + if (f.description === n.defaultServer) { + l = f; + break; + } + } + } catch (C) { + a = { error: C }; + } finally { + try { + d && !d.done && (s = p.return) && s.call(p); + } finally { + if (a) throw a.error; + } + } + else n.defaultServer.url && (l = n.defaultServer); + if (l) { + var m = l.url, h = l.variables, v = (0, Q8.default)(m); + if (!v.names.length) return m; + var y = {}; + try { + for (var x = gi(v.names), w = x.next(); !w.done; w = x.next()) { + var S = w.value, k = n.baseURLVariables[S]; + if (k !== void 0 && h[S].enum) { + if (typeof k == "number") { + var A = h[S].enum[k]; + if (A) y[S] = A; + else throw new Error("index ".concat(k, " out of range for enum of baseURL variable: ").concat(S, "; enum max index is ").concat(h[S].enum.length - 1)); + } else if (typeof k == "string") if (h[S].enum.includes(k)) y[S] = k; + else throw new Error("".concat(k, " is not a valid entry for baseURL variable ").concat(S, "; variable must be of the following: ").concat(h[S].enum.join(", "))); + } else y[S] = h[S].default; + } + } catch (C) { + c = { error: C }; + } finally { + try { + w && !w.done && (u = x.return) && u.call(x); + } finally { + if (c) throw c.error; + } + } + return v.path(y); + } + } + }, this.getAxiosConfigForOperation = function(o, a) { + typeof o == "string" && (o = n.getOperation(o)); + var s = n.getRequestConfigForOperation(o, a), c = { method: s.method, url: s.path, data: s.payload, params: s.query, headers: s.headers }, u = o.servers; + u && u[0] && (c.baseURL = u[0].url); + var l = Rn(a, 3), p = l[2]; + return sr(sr(sr({}, c), p), { params: sr(sr({}, c?.params), p?.params), headers: sr(sr({}, c?.headers), p?.headers) }); + }, this.getRequestConfigForOperation = function(o, a) { + var s, c, u, l, p, d, f, m, h, v; + typeof o == "string" && (o = n.getOperation(o)); + var y = {}, x = new URLSearchParams(), w = {}, S = {}, k = {}, A = o.parameters || [], C = function(st, ur, ts) { + var yi, I1; + switch (ts) { + case po.ParamType.Path: + y[st] = ur; + break; + case po.ParamType.Query: + if (Array.isArray(ur)) try { + for (var dl = gi(ur), rs = dl.next(); !rs.done; rs = dl.next()) { + var uN = rs.value; + x.append(st, uN); + } + } catch (lN) { + yi = { error: lN }; + } finally { + try { + rs && !rs.done && (I1 = dl.return) && I1.call(dl); + } finally { + if (yi) throw yi.error; + } + } + else x.append(st, ur); + w[st] = ur; + break; + case po.ParamType.Header: + S[st] = ur; + break; + case po.ParamType.Cookie: + k[st] = ur; + break; + } + }, ae = function(st) { + var ur = A.find(function(ts) { + var yi = ts.name; + return yi === st; + }); + return ur ? ur.in : po.ParamType.Query; + }, Ie = function() { + var st = A.find(function(ts) { + var yi = ts.required; + return yi === true; + }); + if (st) return st; + var ur = A[0]; + if (ur) return ur; + }, Ce = Rn(a, 2), $e = Ce[0], Ye = Ce[1]; + if (Array.isArray($e)) try { + for (var ve = gi($e), Ne = ve.next(); !Ne.done; Ne = ve.next()) { + var He = Ne.value; + C(He.name, He.value, He.in || ae(He.name)); + } + } catch (st) { + s = { error: st }; + } finally { + try { + Ne && !Ne.done && (c = ve.return) && c.call(ve); + } finally { + if (s) throw s.error; + } + } + else if (typeof $e == "object") for (var Se in $e) $e[Se] !== void 0 && C(Se, $e[Se], ae(Se)); + else if ($e) { + var Le = Ie(); + if (!Le) throw new Error("No parameters found for operation ".concat(o.operationId)); + C(Le.name, $e, Le.in); + } + var it = (0, Q8.default)(o.path); + try { + for (var Ht = gi(it.names), M = Ht.next(); !M.done; M = Ht.next()) { + var D = M.value, ge = y[D]; + y[D] = "".concat(ge); + } + } catch (st) { + u = { error: st }; + } finally { + try { + M && !M.done && (l = Ht.return) && l.call(Ht); + } finally { + if (u) throw u.error; + } + } + var $t = it.path(y), Me = x.toString(), cr = "".concat(n.getBaseURL(o)).concat($t).concat(Me ? "?".concat(Me) : ""), Pr = n.client.defaults.headers; + try { + for (var ot = gi(Object.entries((h = Pr.common) !== null && h !== void 0 ? h : {})), Gr = ot.next(); !Gr.done; Gr = ot.next()) { + var fo = Rn(Gr.value, 2), at = fo[0], Em = fo[1]; + S[at] = Em; + } + } catch (st) { + p = { error: st }; + } finally { + try { + Gr && !Gr.done && (d = ot.return) && d.call(ot); + } finally { + if (p) throw p.error; + } + } + if (n.applyMethodCommonHeaders) { + var sN = (v = Pr[o.method]) !== null && v !== void 0 ? v : {}; + try { + for (var pl = gi(Object.entries(sN)), es = pl.next(); !es.done; es = pl.next()) { + var T1 = Rn(es.value, 2), at = T1[0], Em = T1[1]; + S[at] = Em; + } + } catch (st) { + f = { error: st }; + } finally { + try { + es && !es.done && (m = pl.return) && m.call(pl); + } finally { + if (f) throw f.error; + } + } + } + var cN = { method: o.method, url: cr, path: $t, pathParams: y, query: w, queryString: Me, headers: S, cookies: k, payload: Ye }; + return cN; + }, this.getOperations = function() { + var o, a = ((o = n.definition) === null || o === void 0 ? void 0 : o.paths) || {}; + return Object.entries(a).flatMap(function(s) { + var c = Rn(s, 2), u = c[0], l = c[1]; + return Object.values(po.HttpMethod).map(function(p) { + return { path: u, method: p, operation: l[p] }; + }).filter(function(p) { + var d = p.operation; + return d; + }).map(function(p) { + var d, f = p.operation, m = p.method, h = sr(sr({}, typeof f == "object" ? f : {}), { path: u, method: m }); + return l.parameters && (h.parameters = $m($m([], Rn(h.parameters || []), false), Rn(l.parameters), false)), l.servers && (h.servers = $m($m([], Rn(h.servers || []), false), Rn(l.servers), false)), h.security = (d = h.security) !== null && d !== void 0 ? d : n.definition.security, h; + }); + }); + }, this.getOperation = function(o) { + return n.getOperations().find(function(a) { + return a.operationId === o; + }); + }, this.createOperationMethod = function(o) { + var a = function() { + for (var s = [], c = 0; c < arguments.length; c++) s[c] = arguments[c]; + return _m(n, void 0, void 0, function() { + var u, l; + return wm(this, function(p) { + return u = this.getAxiosConfigForOperation(o, s), l = this.getRunner(o.operationId), [2, l.runRequest(u, o, l.context)]; + }); + }); + }; + return n.transformOperationMethod(a, o); + }; + var i = sr(sr({ quick: false, withServer: 0, baseURLVariables: {}, transformOperationName: function(o) { + return o; + }, transformOperationMethod: function(o) { + return o; + }, axiosRunner: function(o) { + return n.client.request(o); + }, applyMethodCommonHeaders: false }, t), { axiosConfigDefaults: sr({}, t.axiosConfigDefaults || {}) }); + this.inputDocument = i.definition, this.quick = i.quick, this.axiosConfigDefaults = i.axiosConfigDefaults, this.defaultServer = i.withServer, this.baseURLVariables = i.baseURLVariables, this.applyMethodCommonHeaders = i.applyMethodCommonHeaders, this.transformOperationName = i.transformOperationName, this.transformOperationMethod = i.transformOperationMethod, this.runners = (r = {}, r[b1] = { runRequest: i.axiosRunner }, r); + } + return Object.defineProperty(e21.prototype, "client", { get: function() { + return this.instance; + }, enumerable: false, configurable: true }), e21.prototype.withServer = function(t, r) { + r === void 0 && (r = {}), this.defaultServer = t, this.baseURLVariables = r; + }, e21.prototype.loadDocument = function() { + var t; + return _m(this, void 0, void 0, function() { + var r, n, i, o; + return wm(this, function(a) { + switch (a.label) { + case 0: + return typeof this.inputDocument != "object" ? [3, 1] : (this.document = this.inputDocument, [3, 6]); + case 1: + return r = this.getAxiosInstance(), [4, r.get(this.inputDocument)]; + case 2: + return n = a.sent(), typeof n.data != "object" ? [3, 3] : (this.document = n.data, [3, 6]); + case 3: + return typeof n.data == "string" && (!((t = n.headers["content-type"]) === null || t === void 0) && t.match(/ya?ml/)) ? [4, Promise.resolve().then(function() { + return Uae(Y8()); + })] : [3, 5]; + case 4: + return i = a.sent(), this.document = i.load(n.data), [3, 6]; + case 5: + throw o = new Error("Invalid response fetching OpenAPI definition: ".concat(n)), o.response = n, o; + case 6: + return [2, this.document]; + } + }); + }); + }, e21.prototype.registerRunner = function(t, r) { + this.runners[r ?? b1] = t; + }, e21.prototype.getRunner = function(t) { + var r; + return (r = this.runners[t]) !== null && r !== void 0 ? r : this.runners[b1]; + }, e21; + })(); + Ve.OpenAPIClientAxios = Mae; +}); +var nN = g((Cn) => { + "use strict"; + var Fae = Cn && Cn.__createBinding || (Object.create ? function(e21, t, r, n) { + n === void 0 && (n = r); + var i = Object.getOwnPropertyDescriptor(t, r); + (!i || ("get" in i ? !t.__esModule : i.writable || i.configurable)) && (i = { enumerable: true, get: function() { + return t[r]; + } }), Object.defineProperty(e21, n, i); + } : function(e21, t, r, n) { + n === void 0 && (n = r), e21[n] = t[r]; + }), rN = Cn && Cn.__exportStar || function(e21, t) { + for (var r in e21) r !== "default" && !Object.prototype.hasOwnProperty.call(t, r) && Fae(t, e21, r); + }; + Object.defineProperty(Cn, "__esModule", { value: true }); + var Zae = _1(); + Cn.default = Zae.OpenAPIClientAxios; + rN(_1(), Cn); + rN(Mw(), Cn); +}); +var z1 = Object.freeze({ status: "aborted" }); +function b(e21, t, r) { + function n(s, c) { + if (s._zod || Object.defineProperty(s, "_zod", { value: { def: c, constr: a, traits: /* @__PURE__ */ new Set() }, enumerable: false }), s._zod.traits.has(e21)) return; + s._zod.traits.add(e21), t(s, c); + let u = a.prototype, l = Object.keys(u); + for (let p = 0; p < l.length; p++) { + let d = l[p]; + d in s || (s[d] = u[d].bind(s)); + } + } + let i = r?.Parent ?? Object; + class o extends i { + } + Object.defineProperty(o, "name", { value: e21 }); + function a(s) { + var c; + let u = r?.Parent ? new o() : this; + n(u, s), (c = u._zod).deferred ?? (c.deferred = []); + for (let l of u._zod.deferred) l(); + return u; + } + return Object.defineProperty(a, "init", { value: n }), Object.defineProperty(a, Symbol.hasInstance, { value: (s) => r?.Parent && s instanceof r.Parent ? true : s?._zod?.traits?.has(e21) }), Object.defineProperty(a, "name", { value: e21 }), a; +} +var Wr = class extends Error { + constructor() { + super("Encountered Promise during synchronous parse. Use .parseAsync() instead."); + } +}; +var xi = class extends Error { + constructor(t) { + super(`Encountered unidirectional transform during encode: ${t}`), this.name = "ZodEncodeError"; + } +}; +var fl = {}; +function ct(e21) { + return e21 && Object.assign(fl, e21), fl; +} +var T = {}; +ns(T, { BIGINT_FORMAT_RANGES: () => qm, Class: () => zm, NUMBER_FORMAT_RANGES: () => Dm, aborted: () => Un, allowsEval: () => Am, assert: () => _N, assertEqual: () => gN, assertIs: () => xN, assertNever: () => bN, assertNotEqual: () => yN, assignProp: () => Dn, base64ToUint8Array: () => q1, base64urlToUint8Array: () => jN, cached: () => ho, captureStackTrace: () => hl, cleanEnum: () => PN, cleanRegex: () => ss, clone: () => jt, cloneDef: () => $N, createTransparentProxy: () => IN, defineLazy: () => K, esc: () => ml, escapeRegex: () => gr, extend: () => R1, finalizeIssue: () => Jt, floatSafeRemainder: () => Pm, getElementAtPath: () => SN, getEnumValues: () => as, getLengthableOrigin: () => ls, getParsedType: () => TN, getSizableOrigin: () => us, hexToUint8Array: () => RN, isObject: () => bi, isPlainObject: () => qn, issue: () => vo, joinValues: () => Z, jsonStringifyReplacer: () => mo, merge: () => zN, mergeDefs: () => mn, normalizeParams: () => I, nullish: () => Nn, numKeys: () => ON, objectClone: () => wN, omit: () => A1, optionalKeys: () => Nm, parsedType: () => V, partial: () => N1, pick: () => j1, prefixIssues: () => lr, primitiveTypes: () => Cm, promiseAllObject: () => kN, propertyKeyTypes: () => cs, randomString: () => EN, required: () => D1, safeExtend: () => C1, shallowClone: () => Rm, slugify: () => jm, stringifyPrimitive: () => B, uint8ArrayToBase64: () => U1, uint8ArrayToBase64url: () => AN, uint8ArrayToHex: () => CN, unwrapMessage: () => os }); +function gN(e21) { + return e21; +} +function yN(e21) { + return e21; +} +function xN(e21) { +} +function bN(e21) { + throw new Error("Unexpected value in exhaustive check"); +} +function _N(e21) { +} +function as(e21) { + let t = Object.values(e21).filter((n) => typeof n == "number"); + return Object.entries(e21).filter(([n, i]) => t.indexOf(+n) === -1).map(([n, i]) => i); +} +function Z(e21, t = "|") { + return e21.map((r) => B(r)).join(t); +} +function mo(e21, t) { + return typeof t == "bigint" ? t.toString() : t; +} +function ho(e21) { + return { get value() { + { + let r = e21(); + return Object.defineProperty(this, "value", { value: r }), r; + } + throw new Error("cached value already set"); + } }; +} +function Nn(e21) { + return e21 == null; +} +function ss(e21) { + let t = e21.startsWith("^") ? 1 : 0, r = e21.endsWith("$") ? e21.length - 1 : e21.length; + return e21.slice(t, r); +} +function Pm(e21, t) { + let r = (e21.toString().split(".")[1] || "").length, n = t.toString(), i = (n.split(".")[1] || "").length; + if (i === 0 && /\d?e-\d?/.test(n)) { + let c = n.match(/\d?e-(\d?)/); + c?.[1] && (i = Number.parseInt(c[1])); + } + let o = r > i ? r : i, a = Number.parseInt(e21.toFixed(o).replace(".", "")), s = Number.parseInt(t.toFixed(o).replace(".", "")); + return a % s / 10 ** o; +} +var P1 = /* @__PURE__ */ Symbol("evaluating"); +function K(e21, t, r) { + let n; + Object.defineProperty(e21, t, { get() { + if (n !== P1) return n === void 0 && (n = P1, n = r()), n; + }, set(i) { + Object.defineProperty(e21, t, { value: i }); + }, configurable: true }); +} +function wN(e21) { + return Object.create(Object.getPrototypeOf(e21), Object.getOwnPropertyDescriptors(e21)); +} +function Dn(e21, t, r) { + Object.defineProperty(e21, t, { value: r, writable: true, enumerable: true, configurable: true }); +} +function mn(...e21) { + let t = {}; + for (let r of e21) { + let n = Object.getOwnPropertyDescriptors(r); + Object.assign(t, n); + } + return Object.defineProperties({}, t); +} +function $N(e21) { + return mn(e21._zod.def); +} +function SN(e21, t) { + return t ? t.reduce((r, n) => r?.[n], e21) : e21; +} +function kN(e21) { + let t = Object.keys(e21), r = t.map((n) => e21[n]); + return Promise.all(r).then((n) => { + let i = {}; + for (let o = 0; o < t.length; o++) i[t[o]] = n[o]; + return i; + }); +} +function EN(e21 = 10) { + let t = "abcdefghijklmnopqrstuvwxyz", r = ""; + for (let n = 0; n < e21; n++) r += t[Math.floor(Math.random() * t.length)]; + return r; +} +function ml(e21) { + return JSON.stringify(e21); +} +function jm(e21) { + return e21.toLowerCase().trim().replace(/[^\w\s-]/g, "").replace(/[\s_-]+/g, "-").replace(/^-+|-+$/g, ""); +} +var hl = "captureStackTrace" in Error ? Error.captureStackTrace : (...e21) => { +}; +function bi(e21) { + return typeof e21 == "object" && e21 !== null && !Array.isArray(e21); +} +var Am = ho(() => { + if (typeof navigator < "u" && navigator?.userAgent?.includes("Cloudflare")) return false; + try { + let e21 = Function; + return new e21(""), true; + } catch { + return false; + } +}); +function qn(e21) { + if (bi(e21) === false) return false; + let t = e21.constructor; + if (t === void 0 || typeof t != "function") return true; + let r = t.prototype; + return !(bi(r) === false || Object.prototype.hasOwnProperty.call(r, "isPrototypeOf") === false); +} +function Rm(e21) { + return qn(e21) ? { ...e21 } : Array.isArray(e21) ? [...e21] : e21; +} +function ON(e21) { + let t = 0; + for (let r in e21) Object.prototype.hasOwnProperty.call(e21, r) && t++; + return t; +} +var TN = (e21) => { + let t = typeof e21; + switch (t) { + case "undefined": + return "undefined"; + case "string": + return "string"; + case "number": + return Number.isNaN(e21) ? "nan" : "number"; + case "boolean": + return "boolean"; + case "function": + return "function"; + case "bigint": + return "bigint"; + case "symbol": + return "symbol"; + case "object": + return Array.isArray(e21) ? "array" : e21 === null ? "null" : e21.then && typeof e21.then == "function" && e21.catch && typeof e21.catch == "function" ? "promise" : typeof Map < "u" && e21 instanceof Map ? "map" : typeof Set < "u" && e21 instanceof Set ? "set" : typeof Date < "u" && e21 instanceof Date ? "date" : typeof File < "u" && e21 instanceof File ? "file" : "object"; + default: + throw new Error(`Unknown data type: ${t}`); + } +}; +var cs = /* @__PURE__ */ new Set(["string", "number", "symbol"]); +var Cm = /* @__PURE__ */ new Set(["string", "number", "bigint", "boolean", "symbol", "undefined"]); +function gr(e21) { + return e21.replace(/[.*+?^${}()|[\]\\]/g, "\\$&"); +} +function jt(e21, t, r) { + let n = new e21._zod.constr(t ?? e21._zod.def); + return (!t || r?.parent) && (n._zod.parent = e21), n; +} +function I(e21) { + let t = e21; + if (!t) return {}; + if (typeof t == "string") return { error: () => t }; + if (t?.message !== void 0) { + if (t?.error !== void 0) throw new Error("Cannot specify both `message` and `error` params"); + t.error = t.message; + } + return delete t.message, typeof t.error == "string" ? { ...t, error: () => t.error } : t; +} +function IN(e21) { + let t; + return new Proxy({}, { get(r, n, i) { + return t ?? (t = e21()), Reflect.get(t, n, i); + }, set(r, n, i, o) { + return t ?? (t = e21()), Reflect.set(t, n, i, o); + }, has(r, n) { + return t ?? (t = e21()), Reflect.has(t, n); + }, deleteProperty(r, n) { + return t ?? (t = e21()), Reflect.deleteProperty(t, n); + }, ownKeys(r) { + return t ?? (t = e21()), Reflect.ownKeys(t); + }, getOwnPropertyDescriptor(r, n) { + return t ?? (t = e21()), Reflect.getOwnPropertyDescriptor(t, n); + }, defineProperty(r, n, i) { + return t ?? (t = e21()), Reflect.defineProperty(t, n, i); + } }); +} +function B(e21) { + return typeof e21 == "bigint" ? e21.toString() + "n" : typeof e21 == "string" ? `"${e21}"` : `${e21}`; +} +function Nm(e21) { + return Object.keys(e21).filter((t) => e21[t]._zod.optin === "optional" && e21[t]._zod.optout === "optional"); +} +var Dm = { safeint: [Number.MIN_SAFE_INTEGER, Number.MAX_SAFE_INTEGER], int32: [-2147483648, 2147483647], uint32: [0, 4294967295], float32: [-34028234663852886e22, 34028234663852886e22], float64: [-Number.MAX_VALUE, Number.MAX_VALUE] }; +var qm = { int64: [BigInt("-9223372036854775808"), BigInt("9223372036854775807")], uint64: [BigInt(0), BigInt("18446744073709551615")] }; +function j1(e21, t) { + let r = e21._zod.def, n = r.checks; + if (n && n.length > 0) throw new Error(".pick() cannot be used on object schemas containing refinements"); + let o = mn(e21._zod.def, { get shape() { + let a = {}; + for (let s in t) { + if (!(s in r.shape)) throw new Error(`Unrecognized key: "${s}"`); + t[s] && (a[s] = r.shape[s]); + } + return Dn(this, "shape", a), a; + }, checks: [] }); + return jt(e21, o); +} +function A1(e21, t) { + let r = e21._zod.def, n = r.checks; + if (n && n.length > 0) throw new Error(".omit() cannot be used on object schemas containing refinements"); + let o = mn(e21._zod.def, { get shape() { + let a = { ...e21._zod.def.shape }; + for (let s in t) { + if (!(s in r.shape)) throw new Error(`Unrecognized key: "${s}"`); + t[s] && delete a[s]; + } + return Dn(this, "shape", a), a; + }, checks: [] }); + return jt(e21, o); +} +function R1(e21, t) { + if (!qn(t)) throw new Error("Invalid input to extend: expected a plain object"); + let r = e21._zod.def.checks; + if (r && r.length > 0) { + let o = e21._zod.def.shape; + for (let a in t) if (Object.getOwnPropertyDescriptor(o, a) !== void 0) throw new Error("Cannot overwrite keys on object schemas containing refinements. Use `.safeExtend()` instead."); + } + let i = mn(e21._zod.def, { get shape() { + let o = { ...e21._zod.def.shape, ...t }; + return Dn(this, "shape", o), o; + } }); + return jt(e21, i); +} +function C1(e21, t) { + if (!qn(t)) throw new Error("Invalid input to safeExtend: expected a plain object"); + let r = mn(e21._zod.def, { get shape() { + let n = { ...e21._zod.def.shape, ...t }; + return Dn(this, "shape", n), n; + } }); + return jt(e21, r); +} +function zN(e21, t) { + let r = mn(e21._zod.def, { get shape() { + let n = { ...e21._zod.def.shape, ...t._zod.def.shape }; + return Dn(this, "shape", n), n; + }, get catchall() { + return t._zod.def.catchall; + }, checks: [] }); + return jt(e21, r); +} +function N1(e21, t, r) { + let i = t._zod.def.checks; + if (i && i.length > 0) throw new Error(".partial() cannot be used on object schemas containing refinements"); + let a = mn(t._zod.def, { get shape() { + let s = t._zod.def.shape, c = { ...s }; + if (r) for (let u in r) { + if (!(u in s)) throw new Error(`Unrecognized key: "${u}"`); + r[u] && (c[u] = e21 ? new e21({ type: "optional", innerType: s[u] }) : s[u]); + } + else for (let u in s) c[u] = e21 ? new e21({ type: "optional", innerType: s[u] }) : s[u]; + return Dn(this, "shape", c), c; + }, checks: [] }); + return jt(t, a); +} +function D1(e21, t, r) { + let n = mn(t._zod.def, { get shape() { + let i = t._zod.def.shape, o = { ...i }; + if (r) for (let a in r) { + if (!(a in o)) throw new Error(`Unrecognized key: "${a}"`); + r[a] && (o[a] = new e21({ type: "nonoptional", innerType: i[a] })); + } + else for (let a in i) o[a] = new e21({ type: "nonoptional", innerType: i[a] }); + return Dn(this, "shape", o), o; + } }); + return jt(t, n); +} +function Un(e21, t = 0) { + if (e21.aborted === true) return true; + for (let r = t; r < e21.issues.length; r++) if (e21.issues[r]?.continue !== true) return true; + return false; +} +function lr(e21, t) { + return t.map((r) => { + var n; + return (n = r).path ?? (n.path = []), r.path.unshift(e21), r; + }); +} +function os(e21) { + return typeof e21 == "string" ? e21 : e21?.message; +} +function Jt(e21, t, r) { + let n = { ...e21, path: e21.path ?? [] }; + if (!e21.message) { + let i = os(e21.inst?._zod.def?.error?.(e21)) ?? os(t?.error?.(e21)) ?? os(r.customError?.(e21)) ?? os(r.localeError?.(e21)) ?? "Invalid input"; + n.message = i; + } + return delete n.inst, delete n.continue, t?.reportInput || delete n.input, n; +} +function us(e21) { + return e21 instanceof Set ? "set" : e21 instanceof Map ? "map" : e21 instanceof File ? "file" : "unknown"; +} +function ls(e21) { + return Array.isArray(e21) ? "array" : typeof e21 == "string" ? "string" : "unknown"; +} +function V(e21) { + let t = typeof e21; + switch (t) { + case "number": + return Number.isNaN(e21) ? "nan" : "number"; + case "object": { + if (e21 === null) return "null"; + if (Array.isArray(e21)) return "array"; + let r = e21; + if (r && Object.getPrototypeOf(r) !== Object.prototype && "constructor" in r && r.constructor) return r.constructor.name; + } + } + return t; +} +function vo(...e21) { + let [t, r, n] = e21; + return typeof t == "string" ? { message: t, code: "custom", input: r, inst: n } : { ...t }; +} +function PN(e21) { + return Object.entries(e21).filter(([t, r]) => Number.isNaN(Number.parseInt(t, 10))).map((t) => t[1]); +} +function q1(e21) { + let t = atob(e21), r = new Uint8Array(t.length); + for (let n = 0; n < t.length; n++) r[n] = t.charCodeAt(n); + return r; +} +function U1(e21) { + let t = ""; + for (let r = 0; r < e21.length; r++) t += String.fromCharCode(e21[r]); + return btoa(t); +} +function jN(e21) { + let t = e21.replace(/-/g, "+").replace(/_/g, "/"), r = "=".repeat((4 - t.length % 4) % 4); + return q1(t + r); +} +function AN(e21) { + return U1(e21).replace(/\+/g, "-").replace(/\//g, "_").replace(/=/g, ""); +} +function RN(e21) { + let t = e21.replace(/^0x/, ""); + if (t.length % 2 !== 0) throw new Error("Invalid hex string length"); + let r = new Uint8Array(t.length / 2); + for (let n = 0; n < t.length; n += 2) r[n / 2] = Number.parseInt(t.slice(n, n + 2), 16); + return r; +} +function CN(e21) { + return Array.from(e21).map((t) => t.toString(16).padStart(2, "0")).join(""); +} +var zm = class { + constructor(...t) { + } +}; +var L1 = (e21, t) => { + e21.name = "$ZodError", Object.defineProperty(e21, "_zod", { value: e21._zod, enumerable: false }), Object.defineProperty(e21, "issues", { value: t, enumerable: false }), e21.message = JSON.stringify(t, mo, 2), Object.defineProperty(e21, "toString", { value: () => e21.message, enumerable: false }); +}; +var vl = b("$ZodError", L1); +var ps = b("$ZodError", L1, { Parent: Error }); +function gl(e21, t = (r) => r.message) { + let r = {}, n = []; + for (let i of e21.issues) i.path.length > 0 ? (r[i.path[0]] = r[i.path[0]] || [], r[i.path[0]].push(t(i))) : n.push(t(i)); + return { formErrors: n, fieldErrors: r }; +} +function yl(e21, t = (r) => r.message) { + let r = { _errors: [] }, n = (i) => { + for (let o of i.issues) if (o.code === "invalid_union" && o.errors.length) o.errors.map((a) => n({ issues: a })); + else if (o.code === "invalid_key") n({ issues: o.issues }); + else if (o.code === "invalid_element") n({ issues: o.issues }); + else if (o.path.length === 0) r._errors.push(t(o)); + else { + let a = r, s = 0; + for (; s < o.path.length; ) { + let c = o.path[s]; + s === o.path.length - 1 ? (a[c] = a[c] || { _errors: [] }, a[c]._errors.push(t(o))) : a[c] = a[c] || { _errors: [] }, a = a[c], s++; + } + } + }; + return n(e21), r; +} +var ds = (e21) => (t, r, n, i) => { + let o = n ? Object.assign(n, { async: false }) : { async: false }, a = t._zod.run({ value: r, issues: [] }, o); + if (a instanceof Promise) throw new Wr(); + if (a.issues.length) { + let s = new (i?.Err ?? e21)(a.issues.map((c) => Jt(c, o, ct()))); + throw hl(s, i?.callee), s; + } + return a.value; +}; +var fs = ds(ps); +var ms = (e21) => async (t, r, n, i) => { + let o = n ? Object.assign(n, { async: true }) : { async: true }, a = t._zod.run({ value: r, issues: [] }, o); + if (a instanceof Promise && (a = await a), a.issues.length) { + let s = new (i?.Err ?? e21)(a.issues.map((c) => Jt(c, o, ct()))); + throw hl(s, i?.callee), s; + } + return a.value; +}; +var hs = ms(ps); +var vs = (e21) => (t, r, n) => { + let i = n ? { ...n, async: false } : { async: false }, o = t._zod.run({ value: r, issues: [] }, i); + if (o instanceof Promise) throw new Wr(); + return o.issues.length ? { success: false, error: new (e21 ?? vl)(o.issues.map((a) => Jt(a, i, ct()))) } : { success: true, data: o.value }; +}; +var go = vs(ps); +var gs = (e21) => async (t, r, n) => { + let i = n ? Object.assign(n, { async: true }) : { async: true }, o = t._zod.run({ value: r, issues: [] }, i); + return o instanceof Promise && (o = await o), o.issues.length ? { success: false, error: new e21(o.issues.map((a) => Jt(a, i, ct()))) } : { success: true, data: o.value }; +}; +var ys = gs(ps); +var M1 = (e21) => (t, r, n) => { + let i = n ? Object.assign(n, { direction: "backward" }) : { direction: "backward" }; + return ds(e21)(t, r, i); +}; +var F1 = (e21) => (t, r, n) => ds(e21)(t, r, n); +var Z1 = (e21) => async (t, r, n) => { + let i = n ? Object.assign(n, { direction: "backward" }) : { direction: "backward" }; + return ms(e21)(t, r, i); +}; +var B1 = (e21) => async (t, r, n) => ms(e21)(t, r, n); +var V1 = (e21) => (t, r, n) => { + let i = n ? Object.assign(n, { direction: "backward" }) : { direction: "backward" }; + return vs(e21)(t, r, i); +}; +var H1 = (e21) => (t, r, n) => vs(e21)(t, r, n); +var J1 = (e21) => async (t, r, n) => { + let i = n ? Object.assign(n, { direction: "backward" }) : { direction: "backward" }; + return gs(e21)(t, r, i); +}; +var G1 = (e21) => async (t, r, n) => gs(e21)(t, r, n); +var yr = {}; +ns(yr, { base64: () => eh, base64url: () => xl, bigint: () => ah, boolean: () => ch, browserEmail: () => BN, cidrv4: () => Ym, cidrv6: () => Qm, cuid: () => Um, cuid2: () => Lm, date: () => rh, datetime: () => ih, domain: () => JN, duration: () => Vm, e164: () => th, email: () => Jm, emoji: () => Gm, extendedDuration: () => DN, guid: () => Hm, hex: () => GN, hostname: () => HN, html5Email: () => MN, idnEmail: () => ZN, integer: () => sh, ipv4: () => Wm, ipv6: () => Km, ksuid: () => Zm, lowercase: () => ph, mac: () => Xm, md5_base64: () => KN, md5_base64url: () => XN, md5_hex: () => WN, nanoid: () => Bm, null: () => uh, number: () => bl, rfc5322Email: () => FN, sha1_base64: () => QN, sha1_base64url: () => eD, sha1_hex: () => YN, sha256_base64: () => rD, sha256_base64url: () => nD, sha256_hex: () => tD, sha384_base64: () => oD, sha384_base64url: () => aD, sha384_hex: () => iD, sha512_base64: () => cD, sha512_base64url: () => uD, sha512_hex: () => sD, string: () => oh, time: () => nh, ulid: () => Mm, undefined: () => lh, unicodeEmail: () => W1, uppercase: () => dh, uuid: () => _i, uuid4: () => qN, uuid6: () => UN, uuid7: () => LN, xid: () => Fm }); +var Um = /^[cC][^\s-]{8,}$/; +var Lm = /^[0-9a-z]+$/; +var Mm = /^[0-9A-HJKMNP-TV-Za-hjkmnp-tv-z]{26}$/; +var Fm = /^[0-9a-vA-V]{20}$/; +var Zm = /^[A-Za-z0-9]{27}$/; +var Bm = /^[a-zA-Z0-9_-]{21}$/; +var Vm = /^P(?:(\d+W)|(?!.*W)(?=\d|T\d)(\d+Y)?(\d+M)?(\d+D)?(T(?=\d)(\d+H)?(\d+M)?(\d+([.,]\d+)?S)?)?)$/; +var DN = /^[-+]?P(?!$)(?:(?:[-+]?\d+Y)|(?:[-+]?\d+[.,]\d+Y$))?(?:(?:[-+]?\d+M)|(?:[-+]?\d+[.,]\d+M$))?(?:(?:[-+]?\d+W)|(?:[-+]?\d+[.,]\d+W$))?(?:(?:[-+]?\d+D)|(?:[-+]?\d+[.,]\d+D$))?(?:T(?=[\d+-])(?:(?:[-+]?\d+H)|(?:[-+]?\d+[.,]\d+H$))?(?:(?:[-+]?\d+M)|(?:[-+]?\d+[.,]\d+M$))?(?:[-+]?\d+(?:[.,]\d+)?S)?)??$/; +var Hm = /^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$/; +var _i = (e21) => e21 ? new RegExp(`^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-${e21}[0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12})$`) : /^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$/; +var qN = _i(4); +var UN = _i(6); +var LN = _i(7); +var Jm = /^(?!\.)(?!.*\.\.)([A-Za-z0-9_'+\-\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\-]*\.)+[A-Za-z]{2,}$/; +var MN = /^[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$/; +var FN = /^(([^<>()\[\]\\.,;:\s@"]+(\.[^<>()\[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/; +var W1 = /^[^\s@"]{1,64}@[^\s@]{1,255}$/u; +var ZN = W1; +var BN = /^[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$/; +var VN = "^(\\p{Extended_Pictographic}|\\p{Emoji_Component})+$"; +function Gm() { + return new RegExp(VN, "u"); +} +var Wm = /^(?:(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\.){3}(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])$/; +var Km = /^(([0-9a-fA-F]{1,4}:){7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:))$/; +var Xm = (e21) => { + let t = gr(e21 ?? ":"); + return new RegExp(`^(?:[0-9A-F]{2}${t}){5}[0-9A-F]{2}$|^(?:[0-9a-f]{2}${t}){5}[0-9a-f]{2}$`); +}; +var Ym = /^((25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\.){3}(25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\/([0-9]|[1-2][0-9]|3[0-2])$/; +var Qm = /^(([0-9a-fA-F]{1,4}:){7}[0-9a-fA-F]{1,4}|::|([0-9a-fA-F]{1,4})?::([0-9a-fA-F]{1,4}:?){0,6})\/(12[0-8]|1[01][0-9]|[1-9]?[0-9])$/; +var eh = /^$|^(?:[0-9a-zA-Z+/]{4})*(?:(?:[0-9a-zA-Z+/]{2}==)|(?:[0-9a-zA-Z+/]{3}=))?$/; +var xl = /^[A-Za-z0-9_-]*$/; +var HN = /^(?=.{1,253}\.?$)[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[-0-9a-zA-Z]{0,61}[0-9a-zA-Z])?)*\.?$/; +var JN = /^([a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?\.)+[a-zA-Z]{2,}$/; +var th = /^\+[1-9]\d{6,14}$/; +var K1 = "(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))"; +var rh = new RegExp(`^${K1}$`); +function X1(e21) { + let t = "(?:[01]\\d|2[0-3]):[0-5]\\d"; + return typeof e21.precision == "number" ? e21.precision === -1 ? `${t}` : e21.precision === 0 ? `${t}:[0-5]\\d` : `${t}:[0-5]\\d\\.\\d{${e21.precision}}` : `${t}(?::[0-5]\\d(?:\\.\\d+)?)?`; +} +function nh(e21) { + return new RegExp(`^${X1(e21)}$`); +} +function ih(e21) { + let t = X1({ precision: e21.precision }), r = ["Z"]; + e21.local && r.push(""), e21.offset && r.push("([+-](?:[01]\\d|2[0-3]):[0-5]\\d)"); + let n = `${t}(?:${r.join("|")})`; + return new RegExp(`^${K1}T(?:${n})$`); +} +var oh = (e21) => { + let t = e21 ? `[\\s\\S]{${e21?.minimum ?? 0},${e21?.maximum ?? ""}}` : "[\\s\\S]*"; + return new RegExp(`^${t}$`); +}; +var ah = /^-?\d+n?$/; +var sh = /^-?\d+$/; +var bl = /^-?\d+(?:\.\d+)?$/; +var ch = /^(?:true|false)$/i; +var uh = /^null$/i; +var lh = /^undefined$/i; +var ph = /^[^A-Z]*$/; +var dh = /^[^a-z]*$/; +var GN = /^[0-9a-fA-F]*$/; +function xs(e21, t) { + return new RegExp(`^[A-Za-z0-9+/]{${e21}}${t}$`); +} +function bs(e21) { + return new RegExp(`^[A-Za-z0-9_-]{${e21}}$`); +} +var WN = /^[0-9a-fA-F]{32}$/; +var KN = xs(22, "=="); +var XN = bs(22); +var YN = /^[0-9a-fA-F]{40}$/; +var QN = xs(27, "="); +var eD = bs(27); +var tD = /^[0-9a-fA-F]{64}$/; +var rD = xs(43, "="); +var nD = bs(43); +var iD = /^[0-9a-fA-F]{96}$/; +var oD = xs(64, ""); +var aD = bs(64); +var sD = /^[0-9a-fA-F]{128}$/; +var cD = xs(86, "=="); +var uD = bs(86); +var ze = b("$ZodCheck", (e21, t) => { + var r; + e21._zod ?? (e21._zod = {}), e21._zod.def = t, (r = e21._zod).onattach ?? (r.onattach = []); +}); +var Q1 = { number: "number", bigint: "bigint", object: "date" }; +var fh = b("$ZodCheckLessThan", (e21, t) => { + ze.init(e21, t); + let r = Q1[typeof t.value]; + e21._zod.onattach.push((n) => { + let i = n._zod.bag, o = (t.inclusive ? i.maximum : i.exclusiveMaximum) ?? Number.POSITIVE_INFINITY; + t.value < o && (t.inclusive ? i.maximum = t.value : i.exclusiveMaximum = t.value); + }), e21._zod.check = (n) => { + (t.inclusive ? n.value <= t.value : n.value < t.value) || n.issues.push({ origin: r, code: "too_big", maximum: typeof t.value == "object" ? t.value.getTime() : t.value, input: n.value, inclusive: t.inclusive, inst: e21, continue: !t.abort }); + }; +}); +var mh = b("$ZodCheckGreaterThan", (e21, t) => { + ze.init(e21, t); + let r = Q1[typeof t.value]; + e21._zod.onattach.push((n) => { + let i = n._zod.bag, o = (t.inclusive ? i.minimum : i.exclusiveMinimum) ?? Number.NEGATIVE_INFINITY; + t.value > o && (t.inclusive ? i.minimum = t.value : i.exclusiveMinimum = t.value); + }), e21._zod.check = (n) => { + (t.inclusive ? n.value >= t.value : n.value > t.value) || n.issues.push({ origin: r, code: "too_small", minimum: typeof t.value == "object" ? t.value.getTime() : t.value, input: n.value, inclusive: t.inclusive, inst: e21, continue: !t.abort }); + }; +}); +var e$ = b("$ZodCheckMultipleOf", (e21, t) => { + ze.init(e21, t), e21._zod.onattach.push((r) => { + var n; + (n = r._zod.bag).multipleOf ?? (n.multipleOf = t.value); + }), e21._zod.check = (r) => { + if (typeof r.value != typeof t.value) throw new Error("Cannot mix number and bigint in multiple_of check."); + (typeof r.value == "bigint" ? r.value % t.value === BigInt(0) : Pm(r.value, t.value) === 0) || r.issues.push({ origin: typeof r.value, code: "not_multiple_of", divisor: t.value, input: r.value, inst: e21, continue: !t.abort }); + }; +}); +var t$ = b("$ZodCheckNumberFormat", (e21, t) => { + ze.init(e21, t), t.format = t.format || "float64"; + let r = t.format?.includes("int"), n = r ? "int" : "number", [i, o] = Dm[t.format]; + e21._zod.onattach.push((a) => { + let s = a._zod.bag; + s.format = t.format, s.minimum = i, s.maximum = o, r && (s.pattern = sh); + }), e21._zod.check = (a) => { + let s = a.value; + if (r) { + if (!Number.isInteger(s)) { + a.issues.push({ expected: n, format: t.format, code: "invalid_type", continue: false, input: s, inst: e21 }); + return; + } + if (!Number.isSafeInteger(s)) { + s > 0 ? a.issues.push({ input: s, code: "too_big", maximum: Number.MAX_SAFE_INTEGER, note: "Integers must be within the safe integer range.", inst: e21, origin: n, inclusive: true, continue: !t.abort }) : a.issues.push({ input: s, code: "too_small", minimum: Number.MIN_SAFE_INTEGER, note: "Integers must be within the safe integer range.", inst: e21, origin: n, inclusive: true, continue: !t.abort }); + return; + } + } + s < i && a.issues.push({ origin: "number", input: s, code: "too_small", minimum: i, inclusive: true, inst: e21, continue: !t.abort }), s > o && a.issues.push({ origin: "number", input: s, code: "too_big", maximum: o, inclusive: true, inst: e21, continue: !t.abort }); + }; +}); +var r$ = b("$ZodCheckBigIntFormat", (e21, t) => { + ze.init(e21, t); + let [r, n] = qm[t.format]; + e21._zod.onattach.push((i) => { + let o = i._zod.bag; + o.format = t.format, o.minimum = r, o.maximum = n; + }), e21._zod.check = (i) => { + let o = i.value; + o < r && i.issues.push({ origin: "bigint", input: o, code: "too_small", minimum: r, inclusive: true, inst: e21, continue: !t.abort }), o > n && i.issues.push({ origin: "bigint", input: o, code: "too_big", maximum: n, inclusive: true, inst: e21, continue: !t.abort }); + }; +}); +var n$ = b("$ZodCheckMaxSize", (e21, t) => { + var r; + ze.init(e21, t), (r = e21._zod.def).when ?? (r.when = (n) => { + let i = n.value; + return !Nn(i) && i.size !== void 0; + }), e21._zod.onattach.push((n) => { + let i = n._zod.bag.maximum ?? Number.POSITIVE_INFINITY; + t.maximum < i && (n._zod.bag.maximum = t.maximum); + }), e21._zod.check = (n) => { + let i = n.value; + i.size <= t.maximum || n.issues.push({ origin: us(i), code: "too_big", maximum: t.maximum, inclusive: true, input: i, inst: e21, continue: !t.abort }); + }; +}); +var i$ = b("$ZodCheckMinSize", (e21, t) => { + var r; + ze.init(e21, t), (r = e21._zod.def).when ?? (r.when = (n) => { + let i = n.value; + return !Nn(i) && i.size !== void 0; + }), e21._zod.onattach.push((n) => { + let i = n._zod.bag.minimum ?? Number.NEGATIVE_INFINITY; + t.minimum > i && (n._zod.bag.minimum = t.minimum); + }), e21._zod.check = (n) => { + let i = n.value; + i.size >= t.minimum || n.issues.push({ origin: us(i), code: "too_small", minimum: t.minimum, inclusive: true, input: i, inst: e21, continue: !t.abort }); + }; +}); +var o$ = b("$ZodCheckSizeEquals", (e21, t) => { + var r; + ze.init(e21, t), (r = e21._zod.def).when ?? (r.when = (n) => { + let i = n.value; + return !Nn(i) && i.size !== void 0; + }), e21._zod.onattach.push((n) => { + let i = n._zod.bag; + i.minimum = t.size, i.maximum = t.size, i.size = t.size; + }), e21._zod.check = (n) => { + let i = n.value, o = i.size; + if (o === t.size) return; + let a = o > t.size; + n.issues.push({ origin: us(i), ...a ? { code: "too_big", maximum: t.size } : { code: "too_small", minimum: t.size }, inclusive: true, exact: true, input: n.value, inst: e21, continue: !t.abort }); + }; +}); +var a$ = b("$ZodCheckMaxLength", (e21, t) => { + var r; + ze.init(e21, t), (r = e21._zod.def).when ?? (r.when = (n) => { + let i = n.value; + return !Nn(i) && i.length !== void 0; + }), e21._zod.onattach.push((n) => { + let i = n._zod.bag.maximum ?? Number.POSITIVE_INFINITY; + t.maximum < i && (n._zod.bag.maximum = t.maximum); + }), e21._zod.check = (n) => { + let i = n.value; + if (i.length <= t.maximum) return; + let a = ls(i); + n.issues.push({ origin: a, code: "too_big", maximum: t.maximum, inclusive: true, input: i, inst: e21, continue: !t.abort }); + }; +}); +var s$ = b("$ZodCheckMinLength", (e21, t) => { + var r; + ze.init(e21, t), (r = e21._zod.def).when ?? (r.when = (n) => { + let i = n.value; + return !Nn(i) && i.length !== void 0; + }), e21._zod.onattach.push((n) => { + let i = n._zod.bag.minimum ?? Number.NEGATIVE_INFINITY; + t.minimum > i && (n._zod.bag.minimum = t.minimum); + }), e21._zod.check = (n) => { + let i = n.value; + if (i.length >= t.minimum) return; + let a = ls(i); + n.issues.push({ origin: a, code: "too_small", minimum: t.minimum, inclusive: true, input: i, inst: e21, continue: !t.abort }); + }; +}); +var c$ = b("$ZodCheckLengthEquals", (e21, t) => { + var r; + ze.init(e21, t), (r = e21._zod.def).when ?? (r.when = (n) => { + let i = n.value; + return !Nn(i) && i.length !== void 0; + }), e21._zod.onattach.push((n) => { + let i = n._zod.bag; + i.minimum = t.length, i.maximum = t.length, i.length = t.length; + }), e21._zod.check = (n) => { + let i = n.value, o = i.length; + if (o === t.length) return; + let a = ls(i), s = o > t.length; + n.issues.push({ origin: a, ...s ? { code: "too_big", maximum: t.length } : { code: "too_small", minimum: t.length }, inclusive: true, exact: true, input: n.value, inst: e21, continue: !t.abort }); + }; +}); +var _s = b("$ZodCheckStringFormat", (e21, t) => { + var r, n; + ze.init(e21, t), e21._zod.onattach.push((i) => { + let o = i._zod.bag; + o.format = t.format, t.pattern && (o.patterns ?? (o.patterns = /* @__PURE__ */ new Set()), o.patterns.add(t.pattern)); + }), t.pattern ? (r = e21._zod).check ?? (r.check = (i) => { + t.pattern.lastIndex = 0, !t.pattern.test(i.value) && i.issues.push({ origin: "string", code: "invalid_format", format: t.format, input: i.value, ...t.pattern ? { pattern: t.pattern.toString() } : {}, inst: e21, continue: !t.abort }); + }) : (n = e21._zod).check ?? (n.check = () => { + }); +}); +var u$ = b("$ZodCheckRegex", (e21, t) => { + _s.init(e21, t), e21._zod.check = (r) => { + t.pattern.lastIndex = 0, !t.pattern.test(r.value) && r.issues.push({ origin: "string", code: "invalid_format", format: "regex", input: r.value, pattern: t.pattern.toString(), inst: e21, continue: !t.abort }); + }; +}); +var l$ = b("$ZodCheckLowerCase", (e21, t) => { + t.pattern ?? (t.pattern = ph), _s.init(e21, t); +}); +var p$ = b("$ZodCheckUpperCase", (e21, t) => { + t.pattern ?? (t.pattern = dh), _s.init(e21, t); +}); +var d$ = b("$ZodCheckIncludes", (e21, t) => { + ze.init(e21, t); + let r = gr(t.includes), n = new RegExp(typeof t.position == "number" ? `^.{${t.position}}${r}` : r); + t.pattern = n, e21._zod.onattach.push((i) => { + let o = i._zod.bag; + o.patterns ?? (o.patterns = /* @__PURE__ */ new Set()), o.patterns.add(n); + }), e21._zod.check = (i) => { + i.value.includes(t.includes, t.position) || i.issues.push({ origin: "string", code: "invalid_format", format: "includes", includes: t.includes, input: i.value, inst: e21, continue: !t.abort }); + }; +}); +var f$ = b("$ZodCheckStartsWith", (e21, t) => { + ze.init(e21, t); + let r = new RegExp(`^${gr(t.prefix)}.*`); + t.pattern ?? (t.pattern = r), e21._zod.onattach.push((n) => { + let i = n._zod.bag; + i.patterns ?? (i.patterns = /* @__PURE__ */ new Set()), i.patterns.add(r); + }), e21._zod.check = (n) => { + n.value.startsWith(t.prefix) || n.issues.push({ origin: "string", code: "invalid_format", format: "starts_with", prefix: t.prefix, input: n.value, inst: e21, continue: !t.abort }); + }; +}); +var m$ = b("$ZodCheckEndsWith", (e21, t) => { + ze.init(e21, t); + let r = new RegExp(`.*${gr(t.suffix)}$`); + t.pattern ?? (t.pattern = r), e21._zod.onattach.push((n) => { + let i = n._zod.bag; + i.patterns ?? (i.patterns = /* @__PURE__ */ new Set()), i.patterns.add(r); + }), e21._zod.check = (n) => { + n.value.endsWith(t.suffix) || n.issues.push({ origin: "string", code: "invalid_format", format: "ends_with", suffix: t.suffix, input: n.value, inst: e21, continue: !t.abort }); + }; +}); +function Y1(e21, t, r) { + e21.issues.length && t.issues.push(...lr(r, e21.issues)); +} +var h$ = b("$ZodCheckProperty", (e21, t) => { + ze.init(e21, t), e21._zod.check = (r) => { + let n = t.schema._zod.run({ value: r.value[t.property], issues: [] }, {}); + if (n instanceof Promise) return n.then((i) => Y1(i, r, t.property)); + Y1(n, r, t.property); + }; +}); +var v$ = b("$ZodCheckMimeType", (e21, t) => { + ze.init(e21, t); + let r = new Set(t.mime); + e21._zod.onattach.push((n) => { + n._zod.bag.mime = t.mime; + }), e21._zod.check = (n) => { + r.has(n.value.type) || n.issues.push({ code: "invalid_value", values: t.mime, input: n.value.type, inst: e21, continue: !t.abort }); + }; +}); +var g$ = b("$ZodCheckOverwrite", (e21, t) => { + ze.init(e21, t), e21._zod.check = (r) => { + r.value = t.tx(r.value); + }; +}); +var _l = class { + constructor(t = []) { + this.content = [], this.indent = 0, this && (this.args = t); + } + indented(t) { + this.indent += 1, t(this), this.indent -= 1; + } + write(t) { + if (typeof t == "function") { + t(this, { execution: "sync" }), t(this, { execution: "async" }); + return; + } + let n = t.split(` +`).filter((a) => a), i = Math.min(...n.map((a) => a.length - a.trimStart().length)), o = n.map((a) => a.slice(i)).map((a) => " ".repeat(this.indent * 2) + a); + for (let a of o) this.content.push(a); + } + compile() { + let t = Function, r = this?.args, i = [...(this?.content ?? [""]).map((o) => ` ${o}`)]; + return new t(...r, i.join(` +`)); + } +}; +var x$ = { major: 4, minor: 3, patch: 6 }; +var G = b("$ZodType", (e21, t) => { + var r; + e21 ?? (e21 = {}), e21._zod.def = t, e21._zod.bag = e21._zod.bag || {}, e21._zod.version = x$; + let n = [...e21._zod.def.checks ?? []]; + e21._zod.traits.has("$ZodCheck") && n.unshift(e21); + for (let i of n) for (let o of i._zod.onattach) o(e21); + if (n.length === 0) (r = e21._zod).deferred ?? (r.deferred = []), e21._zod.deferred?.push(() => { + e21._zod.run = e21._zod.parse; + }); + else { + let i = (a, s, c) => { + let u = Un(a), l; + for (let p of s) { + if (p._zod.def.when) { + if (!p._zod.def.when(a)) continue; + } else if (u) continue; + let d = a.issues.length, f = p._zod.check(a); + if (f instanceof Promise && c?.async === false) throw new Wr(); + if (l || f instanceof Promise) l = (l ?? Promise.resolve()).then(async () => { + await f, a.issues.length !== d && (u || (u = Un(a, d))); + }); + else { + if (a.issues.length === d) continue; + u || (u = Un(a, d)); + } + } + return l ? l.then(() => a) : a; + }, o = (a, s, c) => { + if (Un(a)) return a.aborted = true, a; + let u = i(s, n, c); + if (u instanceof Promise) { + if (c.async === false) throw new Wr(); + return u.then((l) => e21._zod.parse(l, c)); + } + return e21._zod.parse(u, c); + }; + e21._zod.run = (a, s) => { + if (s.skipChecks) return e21._zod.parse(a, s); + if (s.direction === "backward") { + let u = e21._zod.parse({ value: a.value, issues: [] }, { ...s, skipChecks: true }); + return u instanceof Promise ? u.then((l) => o(l, a, s)) : o(u, a, s); + } + let c = e21._zod.parse(a, s); + if (c instanceof Promise) { + if (s.async === false) throw new Wr(); + return c.then((u) => i(u, n, s)); + } + return i(c, n, s); + }; + } + K(e21, "~standard", () => ({ validate: (i) => { + try { + let o = go(e21, i); + return o.success ? { value: o.data } : { issues: o.error?.issues }; + } catch { + return ys(e21, i).then((a) => a.success ? { value: a.data } : { issues: a.error?.issues }); + } + }, vendor: "zod", version: 1 })); +}); +var wi = b("$ZodString", (e21, t) => { + G.init(e21, t), e21._zod.pattern = [...e21?._zod.bag?.patterns ?? []].pop() ?? oh(e21._zod.bag), e21._zod.parse = (r, n) => { + if (t.coerce) try { + r.value = String(r.value); + } catch { + } + return typeof r.value == "string" || r.issues.push({ expected: "string", code: "invalid_type", input: r.value, inst: e21 }), r; + }; +}); +var ke = b("$ZodStringFormat", (e21, t) => { + _s.init(e21, t), wi.init(e21, t); +}); +var vh = b("$ZodGUID", (e21, t) => { + t.pattern ?? (t.pattern = Hm), ke.init(e21, t); +}); +var gh = b("$ZodUUID", (e21, t) => { + if (t.version) { + let n = { v1: 1, v2: 2, v3: 3, v4: 4, v5: 5, v6: 6, v7: 7, v8: 8 }[t.version]; + if (n === void 0) throw new Error(`Invalid UUID version: "${t.version}"`); + t.pattern ?? (t.pattern = _i(n)); + } else t.pattern ?? (t.pattern = _i()); + ke.init(e21, t); +}); +var yh = b("$ZodEmail", (e21, t) => { + t.pattern ?? (t.pattern = Jm), ke.init(e21, t); +}); +var xh = b("$ZodURL", (e21, t) => { + ke.init(e21, t), e21._zod.check = (r) => { + try { + let n = r.value.trim(), i = new URL(n); + t.hostname && (t.hostname.lastIndex = 0, t.hostname.test(i.hostname) || r.issues.push({ code: "invalid_format", format: "url", note: "Invalid hostname", pattern: t.hostname.source, input: r.value, inst: e21, continue: !t.abort })), t.protocol && (t.protocol.lastIndex = 0, t.protocol.test(i.protocol.endsWith(":") ? i.protocol.slice(0, -1) : i.protocol) || r.issues.push({ code: "invalid_format", format: "url", note: "Invalid protocol", pattern: t.protocol.source, input: r.value, inst: e21, continue: !t.abort })), t.normalize ? r.value = i.href : r.value = n; + return; + } catch { + r.issues.push({ code: "invalid_format", format: "url", input: r.value, inst: e21, continue: !t.abort }); + } + }; +}); +var bh = b("$ZodEmoji", (e21, t) => { + t.pattern ?? (t.pattern = Gm()), ke.init(e21, t); +}); +var _h = b("$ZodNanoID", (e21, t) => { + t.pattern ?? (t.pattern = Bm), ke.init(e21, t); +}); +var wh = b("$ZodCUID", (e21, t) => { + t.pattern ?? (t.pattern = Um), ke.init(e21, t); +}); +var $h = b("$ZodCUID2", (e21, t) => { + t.pattern ?? (t.pattern = Lm), ke.init(e21, t); +}); +var Sh = b("$ZodULID", (e21, t) => { + t.pattern ?? (t.pattern = Mm), ke.init(e21, t); +}); +var kh = b("$ZodXID", (e21, t) => { + t.pattern ?? (t.pattern = Fm), ke.init(e21, t); +}); +var Eh = b("$ZodKSUID", (e21, t) => { + t.pattern ?? (t.pattern = Zm), ke.init(e21, t); +}); +var Oh = b("$ZodISODateTime", (e21, t) => { + t.pattern ?? (t.pattern = ih(t)), ke.init(e21, t); +}); +var Th = b("$ZodISODate", (e21, t) => { + t.pattern ?? (t.pattern = rh), ke.init(e21, t); +}); +var Ih = b("$ZodISOTime", (e21, t) => { + t.pattern ?? (t.pattern = nh(t)), ke.init(e21, t); +}); +var zh = b("$ZodISODuration", (e21, t) => { + t.pattern ?? (t.pattern = Vm), ke.init(e21, t); +}); +var Ph = b("$ZodIPv4", (e21, t) => { + t.pattern ?? (t.pattern = Wm), ke.init(e21, t), e21._zod.bag.format = "ipv4"; +}); +var jh = b("$ZodIPv6", (e21, t) => { + t.pattern ?? (t.pattern = Km), ke.init(e21, t), e21._zod.bag.format = "ipv6", e21._zod.check = (r) => { + try { + new URL(`http://[${r.value}]`); + } catch { + r.issues.push({ code: "invalid_format", format: "ipv6", input: r.value, inst: e21, continue: !t.abort }); + } + }; +}); +var Ah = b("$ZodMAC", (e21, t) => { + t.pattern ?? (t.pattern = Xm(t.delimiter)), ke.init(e21, t), e21._zod.bag.format = "mac"; +}); +var Rh = b("$ZodCIDRv4", (e21, t) => { + t.pattern ?? (t.pattern = Ym), ke.init(e21, t); +}); +var Ch = b("$ZodCIDRv6", (e21, t) => { + t.pattern ?? (t.pattern = Qm), ke.init(e21, t), e21._zod.check = (r) => { + let n = r.value.split("/"); + try { + if (n.length !== 2) throw new Error(); + let [i, o] = n; + if (!o) throw new Error(); + let a = Number(o); + if (`${a}` !== o) throw new Error(); + if (a < 0 || a > 128) throw new Error(); + new URL(`http://[${i}]`); + } catch { + r.issues.push({ code: "invalid_format", format: "cidrv6", input: r.value, inst: e21, continue: !t.abort }); + } + }; +}); +function P$(e21) { + if (e21 === "") return true; + if (e21.length % 4 !== 0) return false; + try { + return atob(e21), true; + } catch { + return false; + } +} +var Nh = b("$ZodBase64", (e21, t) => { + t.pattern ?? (t.pattern = eh), ke.init(e21, t), e21._zod.bag.contentEncoding = "base64", e21._zod.check = (r) => { + P$(r.value) || r.issues.push({ code: "invalid_format", format: "base64", input: r.value, inst: e21, continue: !t.abort }); + }; +}); +function lD(e21) { + if (!xl.test(e21)) return false; + let t = e21.replace(/[-_]/g, (n) => n === "-" ? "+" : "/"), r = t.padEnd(Math.ceil(t.length / 4) * 4, "="); + return P$(r); +} +var Dh = b("$ZodBase64URL", (e21, t) => { + t.pattern ?? (t.pattern = xl), ke.init(e21, t), e21._zod.bag.contentEncoding = "base64url", e21._zod.check = (r) => { + lD(r.value) || r.issues.push({ code: "invalid_format", format: "base64url", input: r.value, inst: e21, continue: !t.abort }); + }; +}); +var qh = b("$ZodE164", (e21, t) => { + t.pattern ?? (t.pattern = th), ke.init(e21, t); +}); +function pD(e21, t = null) { + try { + let r = e21.split("."); + if (r.length !== 3) return false; + let [n] = r; + if (!n) return false; + let i = JSON.parse(atob(n)); + return !("typ" in i && i?.typ !== "JWT" || !i.alg || t && (!("alg" in i) || i.alg !== t)); + } catch { + return false; + } +} +var Uh = b("$ZodJWT", (e21, t) => { + ke.init(e21, t), e21._zod.check = (r) => { + pD(r.value, t.alg) || r.issues.push({ code: "invalid_format", format: "jwt", input: r.value, inst: e21, continue: !t.abort }); + }; +}); +var Lh = b("$ZodCustomStringFormat", (e21, t) => { + ke.init(e21, t), e21._zod.check = (r) => { + t.fn(r.value) || r.issues.push({ code: "invalid_format", format: t.format, input: r.value, inst: e21, continue: !t.abort }); + }; +}); +var Ol = b("$ZodNumber", (e21, t) => { + G.init(e21, t), e21._zod.pattern = e21._zod.bag.pattern ?? bl, e21._zod.parse = (r, n) => { + if (t.coerce) try { + r.value = Number(r.value); + } catch { + } + let i = r.value; + if (typeof i == "number" && !Number.isNaN(i) && Number.isFinite(i)) return r; + let o = typeof i == "number" ? Number.isNaN(i) ? "NaN" : Number.isFinite(i) ? void 0 : "Infinity" : void 0; + return r.issues.push({ expected: "number", code: "invalid_type", input: i, inst: e21, ...o ? { received: o } : {} }), r; + }; +}); +var Mh = b("$ZodNumberFormat", (e21, t) => { + t$.init(e21, t), Ol.init(e21, t); +}); +var ws = b("$ZodBoolean", (e21, t) => { + G.init(e21, t), e21._zod.pattern = ch, e21._zod.parse = (r, n) => { + if (t.coerce) try { + r.value = !!r.value; + } catch { + } + let i = r.value; + return typeof i == "boolean" || r.issues.push({ expected: "boolean", code: "invalid_type", input: i, inst: e21 }), r; + }; +}); +var Tl = b("$ZodBigInt", (e21, t) => { + G.init(e21, t), e21._zod.pattern = ah, e21._zod.parse = (r, n) => { + if (t.coerce) try { + r.value = BigInt(r.value); + } catch { + } + return typeof r.value == "bigint" || r.issues.push({ expected: "bigint", code: "invalid_type", input: r.value, inst: e21 }), r; + }; +}); +var Fh = b("$ZodBigIntFormat", (e21, t) => { + r$.init(e21, t), Tl.init(e21, t); +}); +var Zh = b("$ZodSymbol", (e21, t) => { + G.init(e21, t), e21._zod.parse = (r, n) => { + let i = r.value; + return typeof i == "symbol" || r.issues.push({ expected: "symbol", code: "invalid_type", input: i, inst: e21 }), r; + }; +}); +var Bh = b("$ZodUndefined", (e21, t) => { + G.init(e21, t), e21._zod.pattern = lh, e21._zod.values = /* @__PURE__ */ new Set([void 0]), e21._zod.optin = "optional", e21._zod.optout = "optional", e21._zod.parse = (r, n) => { + let i = r.value; + return typeof i > "u" || r.issues.push({ expected: "undefined", code: "invalid_type", input: i, inst: e21 }), r; + }; +}); +var Vh = b("$ZodNull", (e21, t) => { + G.init(e21, t), e21._zod.pattern = uh, e21._zod.values = /* @__PURE__ */ new Set([null]), e21._zod.parse = (r, n) => { + let i = r.value; + return i === null || r.issues.push({ expected: "null", code: "invalid_type", input: i, inst: e21 }), r; + }; +}); +var Hh = b("$ZodAny", (e21, t) => { + G.init(e21, t), e21._zod.parse = (r) => r; +}); +var Jh = b("$ZodUnknown", (e21, t) => { + G.init(e21, t), e21._zod.parse = (r) => r; +}); +var Gh = b("$ZodNever", (e21, t) => { + G.init(e21, t), e21._zod.parse = (r, n) => (r.issues.push({ expected: "never", code: "invalid_type", input: r.value, inst: e21 }), r); +}); +var Wh = b("$ZodVoid", (e21, t) => { + G.init(e21, t), e21._zod.parse = (r, n) => { + let i = r.value; + return typeof i > "u" || r.issues.push({ expected: "void", code: "invalid_type", input: i, inst: e21 }), r; + }; +}); +var Kh = b("$ZodDate", (e21, t) => { + G.init(e21, t), e21._zod.parse = (r, n) => { + if (t.coerce) try { + r.value = new Date(r.value); + } catch { + } + let i = r.value, o = i instanceof Date; + return o && !Number.isNaN(i.getTime()) || r.issues.push({ expected: "date", code: "invalid_type", input: i, ...o ? { received: "Invalid Date" } : {}, inst: e21 }), r; + }; +}); +function b$(e21, t, r) { + e21.issues.length && t.issues.push(...lr(r, e21.issues)), t.value[r] = e21.value; +} +var Xh = b("$ZodArray", (e21, t) => { + G.init(e21, t), e21._zod.parse = (r, n) => { + let i = r.value; + if (!Array.isArray(i)) return r.issues.push({ expected: "array", code: "invalid_type", input: i, inst: e21 }), r; + r.value = Array(i.length); + let o = []; + for (let a = 0; a < i.length; a++) { + let s = i[a], c = t.element._zod.run({ value: s, issues: [] }, n); + c instanceof Promise ? o.push(c.then((u) => b$(u, r, a))) : b$(c, r, a); + } + return o.length ? Promise.all(o).then(() => r) : r; + }; +}); +function El(e21, t, r, n, i) { + if (e21.issues.length) { + if (i && !(r in n)) return; + t.issues.push(...lr(r, e21.issues)); + } + e21.value === void 0 ? r in n && (t.value[r] = void 0) : t.value[r] = e21.value; +} +function j$(e21) { + let t = Object.keys(e21.shape); + for (let n of t) if (!e21.shape?.[n]?._zod?.traits?.has("$ZodType")) throw new Error(`Invalid element at key "${n}": expected a Zod schema`); + let r = Nm(e21.shape); + return { ...e21, keys: t, keySet: new Set(t), numKeys: t.length, optionalKeys: new Set(r) }; +} +function A$(e21, t, r, n, i, o) { + let a = [], s = i.keySet, c = i.catchall._zod, u = c.def.type, l = c.optout === "optional"; + for (let p in t) { + if (s.has(p)) continue; + if (u === "never") { + a.push(p); + continue; + } + let d = c.run({ value: t[p], issues: [] }, n); + d instanceof Promise ? e21.push(d.then((f) => El(f, r, p, t, l))) : El(d, r, p, t, l); + } + return a.length && r.issues.push({ code: "unrecognized_keys", keys: a, input: t, inst: o }), e21.length ? Promise.all(e21).then(() => r) : r; +} +var R$ = b("$ZodObject", (e21, t) => { + if (G.init(e21, t), !Object.getOwnPropertyDescriptor(t, "shape")?.get) { + let s = t.shape; + Object.defineProperty(t, "shape", { get: () => { + let c = { ...s }; + return Object.defineProperty(t, "shape", { value: c }), c; + } }); + } + let n = ho(() => j$(t)); + K(e21._zod, "propValues", () => { + let s = t.shape, c = {}; + for (let u in s) { + let l = s[u]._zod; + if (l.values) { + c[u] ?? (c[u] = /* @__PURE__ */ new Set()); + for (let p of l.values) c[u].add(p); + } + } + return c; + }); + let i = bi, o = t.catchall, a; + e21._zod.parse = (s, c) => { + a ?? (a = n.value); + let u = s.value; + if (!i(u)) return s.issues.push({ expected: "object", code: "invalid_type", input: u, inst: e21 }), s; + s.value = {}; + let l = [], p = a.shape; + for (let d of a.keys) { + let f = p[d], m = f._zod.optout === "optional", h = f._zod.run({ value: u[d], issues: [] }, c); + h instanceof Promise ? l.push(h.then((v) => El(v, s, d, u, m))) : El(h, s, d, u, m); + } + return o ? A$(l, u, s, c, n.value, e21) : l.length ? Promise.all(l).then(() => s) : s; + }; +}); +var C$ = b("$ZodObjectJIT", (e21, t) => { + R$.init(e21, t); + let r = e21._zod.parse, n = ho(() => j$(t)), i = (d) => { + let f = new _l(["shape", "payload", "ctx"]), m = n.value, h = (w) => { + let S = ml(w); + return `shape[${S}]._zod.run({ value: input[${S}], issues: [] }, ctx)`; + }; + f.write("const input = payload.value;"); + let v = /* @__PURE__ */ Object.create(null), y = 0; + for (let w of m.keys) v[w] = `key_${y++}`; + f.write("const newResult = {};"); + for (let w of m.keys) { + let S = v[w], k = ml(w), C = d[w]?._zod?.optout === "optional"; + f.write(`const ${S} = ${h(w)};`), C ? f.write(` + if (${S}.issues.length) { + if (${k} in input) { + payload.issues = payload.issues.concat(${S}.issues.map(iss => ({ + ...iss, + path: iss.path ? [${k}, ...iss.path] : [${k}] + }))); + } + } + + if (${S}.value === undefined) { + if (${k} in input) { + newResult[${k}] = undefined; + } + } else { + newResult[${k}] = ${S}.value; + } + + `) : f.write(` + if (${S}.issues.length) { + payload.issues = payload.issues.concat(${S}.issues.map(iss => ({ + ...iss, + path: iss.path ? [${k}, ...iss.path] : [${k}] + }))); + } + + if (${S}.value === undefined) { + if (${k} in input) { + newResult[${k}] = undefined; + } + } else { + newResult[${k}] = ${S}.value; + } + + `); + } + f.write("payload.value = newResult;"), f.write("return payload;"); + let x = f.compile(); + return (w, S) => x(d, w, S); + }, o, a = bi, s = !fl.jitless, u = s && Am.value, l = t.catchall, p; + e21._zod.parse = (d, f) => { + p ?? (p = n.value); + let m = d.value; + return a(m) ? s && u && f?.async === false && f.jitless !== true ? (o || (o = i(t.shape)), d = o(d, f), l ? A$([], m, d, f, p, e21) : d) : r(d, f) : (d.issues.push({ expected: "object", code: "invalid_type", input: m, inst: e21 }), d); + }; +}); +function _$(e21, t, r, n) { + for (let o of e21) if (o.issues.length === 0) return t.value = o.value, t; + let i = e21.filter((o) => !Un(o)); + return i.length === 1 ? (t.value = i[0].value, i[0]) : (t.issues.push({ code: "invalid_union", input: t.value, inst: r, errors: e21.map((o) => o.issues.map((a) => Jt(a, n, ct()))) }), t); +} +var $s = b("$ZodUnion", (e21, t) => { + G.init(e21, t), K(e21._zod, "optin", () => t.options.some((i) => i._zod.optin === "optional") ? "optional" : void 0), K(e21._zod, "optout", () => t.options.some((i) => i._zod.optout === "optional") ? "optional" : void 0), K(e21._zod, "values", () => { + if (t.options.every((i) => i._zod.values)) return new Set(t.options.flatMap((i) => Array.from(i._zod.values))); + }), K(e21._zod, "pattern", () => { + if (t.options.every((i) => i._zod.pattern)) { + let i = t.options.map((o) => o._zod.pattern); + return new RegExp(`^(${i.map((o) => ss(o.source)).join("|")})$`); + } + }); + let r = t.options.length === 1, n = t.options[0]._zod.run; + e21._zod.parse = (i, o) => { + if (r) return n(i, o); + let a = false, s = []; + for (let c of t.options) { + let u = c._zod.run({ value: i.value, issues: [] }, o); + if (u instanceof Promise) s.push(u), a = true; + else { + if (u.issues.length === 0) return u; + s.push(u); + } + } + return a ? Promise.all(s).then((c) => _$(c, i, e21, o)) : _$(s, i, e21, o); + }; +}); +function w$(e21, t, r, n) { + let i = e21.filter((o) => o.issues.length === 0); + return i.length === 1 ? (t.value = i[0].value, t) : (i.length === 0 ? t.issues.push({ code: "invalid_union", input: t.value, inst: r, errors: e21.map((o) => o.issues.map((a) => Jt(a, n, ct()))) }) : t.issues.push({ code: "invalid_union", input: t.value, inst: r, errors: [], inclusive: false }), t); +} +var Yh = b("$ZodXor", (e21, t) => { + $s.init(e21, t), t.inclusive = false; + let r = t.options.length === 1, n = t.options[0]._zod.run; + e21._zod.parse = (i, o) => { + if (r) return n(i, o); + let a = false, s = []; + for (let c of t.options) { + let u = c._zod.run({ value: i.value, issues: [] }, o); + u instanceof Promise ? (s.push(u), a = true) : s.push(u); + } + return a ? Promise.all(s).then((c) => w$(c, i, e21, o)) : w$(s, i, e21, o); + }; +}); +var Qh = b("$ZodDiscriminatedUnion", (e21, t) => { + t.inclusive = false, $s.init(e21, t); + let r = e21._zod.parse; + K(e21._zod, "propValues", () => { + let i = {}; + for (let o of t.options) { + let a = o._zod.propValues; + if (!a || Object.keys(a).length === 0) throw new Error(`Invalid discriminated union option at index "${t.options.indexOf(o)}"`); + for (let [s, c] of Object.entries(a)) { + i[s] || (i[s] = /* @__PURE__ */ new Set()); + for (let u of c) i[s].add(u); + } + } + return i; + }); + let n = ho(() => { + let i = t.options, o = /* @__PURE__ */ new Map(); + for (let a of i) { + let s = a._zod.propValues?.[t.discriminator]; + if (!s || s.size === 0) throw new Error(`Invalid discriminated union option at index "${t.options.indexOf(a)}"`); + for (let c of s) { + if (o.has(c)) throw new Error(`Duplicate discriminator value "${String(c)}"`); + o.set(c, a); + } + } + return o; + }); + e21._zod.parse = (i, o) => { + let a = i.value; + if (!bi(a)) return i.issues.push({ code: "invalid_type", expected: "object", input: a, inst: e21 }), i; + let s = n.value.get(a?.[t.discriminator]); + return s ? s._zod.run(i, o) : t.unionFallback ? r(i, o) : (i.issues.push({ code: "invalid_union", errors: [], note: "No matching discriminator", discriminator: t.discriminator, input: a, path: [t.discriminator], inst: e21 }), i); + }; +}); +var ev = b("$ZodIntersection", (e21, t) => { + G.init(e21, t), e21._zod.parse = (r, n) => { + let i = r.value, o = t.left._zod.run({ value: i, issues: [] }, n), a = t.right._zod.run({ value: i, issues: [] }, n); + return o instanceof Promise || a instanceof Promise ? Promise.all([o, a]).then(([c, u]) => $$(r, c, u)) : $$(r, o, a); + }; +}); +function hh(e21, t) { + if (e21 === t) return { valid: true, data: e21 }; + if (e21 instanceof Date && t instanceof Date && +e21 == +t) return { valid: true, data: e21 }; + if (qn(e21) && qn(t)) { + let r = Object.keys(t), n = Object.keys(e21).filter((o) => r.indexOf(o) !== -1), i = { ...e21, ...t }; + for (let o of n) { + let a = hh(e21[o], t[o]); + if (!a.valid) return { valid: false, mergeErrorPath: [o, ...a.mergeErrorPath] }; + i[o] = a.data; + } + return { valid: true, data: i }; + } + if (Array.isArray(e21) && Array.isArray(t)) { + if (e21.length !== t.length) return { valid: false, mergeErrorPath: [] }; + let r = []; + for (let n = 0; n < e21.length; n++) { + let i = e21[n], o = t[n], a = hh(i, o); + if (!a.valid) return { valid: false, mergeErrorPath: [n, ...a.mergeErrorPath] }; + r.push(a.data); + } + return { valid: true, data: r }; + } + return { valid: false, mergeErrorPath: [] }; +} +function $$(e21, t, r) { + let n = /* @__PURE__ */ new Map(), i; + for (let s of t.issues) if (s.code === "unrecognized_keys") { + i ?? (i = s); + for (let c of s.keys) n.has(c) || n.set(c, {}), n.get(c).l = true; + } else e21.issues.push(s); + for (let s of r.issues) if (s.code === "unrecognized_keys") for (let c of s.keys) n.has(c) || n.set(c, {}), n.get(c).r = true; + else e21.issues.push(s); + let o = [...n].filter(([, s]) => s.l && s.r).map(([s]) => s); + if (o.length && i && e21.issues.push({ ...i, keys: o }), Un(e21)) return e21; + let a = hh(t.value, r.value); + if (!a.valid) throw new Error(`Unmergable intersection. Error path: ${JSON.stringify(a.mergeErrorPath)}`); + return e21.value = a.data, e21; +} +var Il = b("$ZodTuple", (e21, t) => { + G.init(e21, t); + let r = t.items; + e21._zod.parse = (n, i) => { + let o = n.value; + if (!Array.isArray(o)) return n.issues.push({ input: o, inst: e21, expected: "tuple", code: "invalid_type" }), n; + n.value = []; + let a = [], s = [...r].reverse().findIndex((l) => l._zod.optin !== "optional"), c = s === -1 ? 0 : r.length - s; + if (!t.rest) { + let l = o.length > r.length, p = o.length < c - 1; + if (l || p) return n.issues.push({ ...l ? { code: "too_big", maximum: r.length, inclusive: true } : { code: "too_small", minimum: r.length }, input: o, inst: e21, origin: "array" }), n; + } + let u = -1; + for (let l of r) { + if (u++, u >= o.length && u >= c) continue; + let p = l._zod.run({ value: o[u], issues: [] }, i); + p instanceof Promise ? a.push(p.then((d) => wl(d, n, u))) : wl(p, n, u); + } + if (t.rest) { + let l = o.slice(r.length); + for (let p of l) { + u++; + let d = t.rest._zod.run({ value: p, issues: [] }, i); + d instanceof Promise ? a.push(d.then((f) => wl(f, n, u))) : wl(d, n, u); + } + } + return a.length ? Promise.all(a).then(() => n) : n; + }; +}); +function wl(e21, t, r) { + e21.issues.length && t.issues.push(...lr(r, e21.issues)), t.value[r] = e21.value; +} +var tv = b("$ZodRecord", (e21, t) => { + G.init(e21, t), e21._zod.parse = (r, n) => { + let i = r.value; + if (!qn(i)) return r.issues.push({ expected: "record", code: "invalid_type", input: i, inst: e21 }), r; + let o = [], a = t.keyType._zod.values; + if (a) { + r.value = {}; + let s = /* @__PURE__ */ new Set(); + for (let u of a) if (typeof u == "string" || typeof u == "number" || typeof u == "symbol") { + s.add(typeof u == "number" ? u.toString() : u); + let l = t.valueType._zod.run({ value: i[u], issues: [] }, n); + l instanceof Promise ? o.push(l.then((p) => { + p.issues.length && r.issues.push(...lr(u, p.issues)), r.value[u] = p.value; + })) : (l.issues.length && r.issues.push(...lr(u, l.issues)), r.value[u] = l.value); + } + let c; + for (let u in i) s.has(u) || (c = c ?? [], c.push(u)); + c && c.length > 0 && r.issues.push({ code: "unrecognized_keys", input: i, inst: e21, keys: c }); + } else { + r.value = {}; + for (let s of Reflect.ownKeys(i)) { + if (s === "__proto__") continue; + let c = t.keyType._zod.run({ value: s, issues: [] }, n); + if (c instanceof Promise) throw new Error("Async schemas not supported in object keys currently"); + if (typeof s == "string" && bl.test(s) && c.issues.length) { + let p = t.keyType._zod.run({ value: Number(s), issues: [] }, n); + if (p instanceof Promise) throw new Error("Async schemas not supported in object keys currently"); + p.issues.length === 0 && (c = p); + } + if (c.issues.length) { + t.mode === "loose" ? r.value[s] = i[s] : r.issues.push({ code: "invalid_key", origin: "record", issues: c.issues.map((p) => Jt(p, n, ct())), input: s, path: [s], inst: e21 }); + continue; + } + let l = t.valueType._zod.run({ value: i[s], issues: [] }, n); + l instanceof Promise ? o.push(l.then((p) => { + p.issues.length && r.issues.push(...lr(s, p.issues)), r.value[c.value] = p.value; + })) : (l.issues.length && r.issues.push(...lr(s, l.issues)), r.value[c.value] = l.value); + } + } + return o.length ? Promise.all(o).then(() => r) : r; + }; +}); +var rv = b("$ZodMap", (e21, t) => { + G.init(e21, t), e21._zod.parse = (r, n) => { + let i = r.value; + if (!(i instanceof Map)) return r.issues.push({ expected: "map", code: "invalid_type", input: i, inst: e21 }), r; + let o = []; + r.value = /* @__PURE__ */ new Map(); + for (let [a, s] of i) { + let c = t.keyType._zod.run({ value: a, issues: [] }, n), u = t.valueType._zod.run({ value: s, issues: [] }, n); + c instanceof Promise || u instanceof Promise ? o.push(Promise.all([c, u]).then(([l, p]) => { + S$(l, p, r, a, i, e21, n); + })) : S$(c, u, r, a, i, e21, n); + } + return o.length ? Promise.all(o).then(() => r) : r; + }; +}); +function S$(e21, t, r, n, i, o, a) { + e21.issues.length && (cs.has(typeof n) ? r.issues.push(...lr(n, e21.issues)) : r.issues.push({ code: "invalid_key", origin: "map", input: i, inst: o, issues: e21.issues.map((s) => Jt(s, a, ct())) })), t.issues.length && (cs.has(typeof n) ? r.issues.push(...lr(n, t.issues)) : r.issues.push({ origin: "map", code: "invalid_element", input: i, inst: o, key: n, issues: t.issues.map((s) => Jt(s, a, ct())) })), r.value.set(e21.value, t.value); +} +var nv = b("$ZodSet", (e21, t) => { + G.init(e21, t), e21._zod.parse = (r, n) => { + let i = r.value; + if (!(i instanceof Set)) return r.issues.push({ input: i, inst: e21, expected: "set", code: "invalid_type" }), r; + let o = []; + r.value = /* @__PURE__ */ new Set(); + for (let a of i) { + let s = t.valueType._zod.run({ value: a, issues: [] }, n); + s instanceof Promise ? o.push(s.then((c) => k$(c, r))) : k$(s, r); + } + return o.length ? Promise.all(o).then(() => r) : r; + }; +}); +function k$(e21, t) { + e21.issues.length && t.issues.push(...e21.issues), t.value.add(e21.value); +} +var iv = b("$ZodEnum", (e21, t) => { + G.init(e21, t); + let r = as(t.entries), n = new Set(r); + e21._zod.values = n, e21._zod.pattern = new RegExp(`^(${r.filter((i) => cs.has(typeof i)).map((i) => typeof i == "string" ? gr(i) : i.toString()).join("|")})$`), e21._zod.parse = (i, o) => { + let a = i.value; + return n.has(a) || i.issues.push({ code: "invalid_value", values: r, input: a, inst: e21 }), i; + }; +}); +var ov = b("$ZodLiteral", (e21, t) => { + if (G.init(e21, t), t.values.length === 0) throw new Error("Cannot create literal schema with no valid values"); + let r = new Set(t.values); + e21._zod.values = r, e21._zod.pattern = new RegExp(`^(${t.values.map((n) => typeof n == "string" ? gr(n) : n ? gr(n.toString()) : String(n)).join("|")})$`), e21._zod.parse = (n, i) => { + let o = n.value; + return r.has(o) || n.issues.push({ code: "invalid_value", values: t.values, input: o, inst: e21 }), n; + }; +}); +var av = b("$ZodFile", (e21, t) => { + G.init(e21, t), e21._zod.parse = (r, n) => { + let i = r.value; + return i instanceof File || r.issues.push({ expected: "file", code: "invalid_type", input: i, inst: e21 }), r; + }; +}); +var sv = b("$ZodTransform", (e21, t) => { + G.init(e21, t), e21._zod.parse = (r, n) => { + if (n.direction === "backward") throw new xi(e21.constructor.name); + let i = t.transform(r.value, r); + if (n.async) return (i instanceof Promise ? i : Promise.resolve(i)).then((a) => (r.value = a, r)); + if (i instanceof Promise) throw new Wr(); + return r.value = i, r; + }; +}); +function E$(e21, t) { + return e21.issues.length && t === void 0 ? { issues: [], value: void 0 } : e21; +} +var zl = b("$ZodOptional", (e21, t) => { + G.init(e21, t), e21._zod.optin = "optional", e21._zod.optout = "optional", K(e21._zod, "values", () => t.innerType._zod.values ? /* @__PURE__ */ new Set([...t.innerType._zod.values, void 0]) : void 0), K(e21._zod, "pattern", () => { + let r = t.innerType._zod.pattern; + return r ? new RegExp(`^(${ss(r.source)})?$`) : void 0; + }), e21._zod.parse = (r, n) => { + if (t.innerType._zod.optin === "optional") { + let i = t.innerType._zod.run(r, n); + return i instanceof Promise ? i.then((o) => E$(o, r.value)) : E$(i, r.value); + } + return r.value === void 0 ? r : t.innerType._zod.run(r, n); + }; +}); +var cv = b("$ZodExactOptional", (e21, t) => { + zl.init(e21, t), K(e21._zod, "values", () => t.innerType._zod.values), K(e21._zod, "pattern", () => t.innerType._zod.pattern), e21._zod.parse = (r, n) => t.innerType._zod.run(r, n); +}); +var uv = b("$ZodNullable", (e21, t) => { + G.init(e21, t), K(e21._zod, "optin", () => t.innerType._zod.optin), K(e21._zod, "optout", () => t.innerType._zod.optout), K(e21._zod, "pattern", () => { + let r = t.innerType._zod.pattern; + return r ? new RegExp(`^(${ss(r.source)}|null)$`) : void 0; + }), K(e21._zod, "values", () => t.innerType._zod.values ? /* @__PURE__ */ new Set([...t.innerType._zod.values, null]) : void 0), e21._zod.parse = (r, n) => r.value === null ? r : t.innerType._zod.run(r, n); +}); +var lv = b("$ZodDefault", (e21, t) => { + G.init(e21, t), e21._zod.optin = "optional", K(e21._zod, "values", () => t.innerType._zod.values), e21._zod.parse = (r, n) => { + if (n.direction === "backward") return t.innerType._zod.run(r, n); + if (r.value === void 0) return r.value = t.defaultValue, r; + let i = t.innerType._zod.run(r, n); + return i instanceof Promise ? i.then((o) => O$(o, t)) : O$(i, t); + }; +}); +function O$(e21, t) { + return e21.value === void 0 && (e21.value = t.defaultValue), e21; +} +var pv = b("$ZodPrefault", (e21, t) => { + G.init(e21, t), e21._zod.optin = "optional", K(e21._zod, "values", () => t.innerType._zod.values), e21._zod.parse = (r, n) => (n.direction === "backward" || r.value === void 0 && (r.value = t.defaultValue), t.innerType._zod.run(r, n)); +}); +var dv = b("$ZodNonOptional", (e21, t) => { + G.init(e21, t), K(e21._zod, "values", () => { + let r = t.innerType._zod.values; + return r ? new Set([...r].filter((n) => n !== void 0)) : void 0; + }), e21._zod.parse = (r, n) => { + let i = t.innerType._zod.run(r, n); + return i instanceof Promise ? i.then((o) => T$(o, e21)) : T$(i, e21); + }; +}); +function T$(e21, t) { + return !e21.issues.length && e21.value === void 0 && e21.issues.push({ code: "invalid_type", expected: "nonoptional", input: e21.value, inst: t }), e21; +} +var fv = b("$ZodSuccess", (e21, t) => { + G.init(e21, t), e21._zod.parse = (r, n) => { + if (n.direction === "backward") throw new xi("ZodSuccess"); + let i = t.innerType._zod.run(r, n); + return i instanceof Promise ? i.then((o) => (r.value = o.issues.length === 0, r)) : (r.value = i.issues.length === 0, r); + }; +}); +var mv = b("$ZodCatch", (e21, t) => { + G.init(e21, t), K(e21._zod, "optin", () => t.innerType._zod.optin), K(e21._zod, "optout", () => t.innerType._zod.optout), K(e21._zod, "values", () => t.innerType._zod.values), e21._zod.parse = (r, n) => { + if (n.direction === "backward") return t.innerType._zod.run(r, n); + let i = t.innerType._zod.run(r, n); + return i instanceof Promise ? i.then((o) => (r.value = o.value, o.issues.length && (r.value = t.catchValue({ ...r, error: { issues: o.issues.map((a) => Jt(a, n, ct())) }, input: r.value }), r.issues = []), r)) : (r.value = i.value, i.issues.length && (r.value = t.catchValue({ ...r, error: { issues: i.issues.map((o) => Jt(o, n, ct())) }, input: r.value }), r.issues = []), r); + }; +}); +var hv = b("$ZodNaN", (e21, t) => { + G.init(e21, t), e21._zod.parse = (r, n) => ((typeof r.value != "number" || !Number.isNaN(r.value)) && r.issues.push({ input: r.value, inst: e21, expected: "nan", code: "invalid_type" }), r); +}); +var vv = b("$ZodPipe", (e21, t) => { + G.init(e21, t), K(e21._zod, "values", () => t.in._zod.values), K(e21._zod, "optin", () => t.in._zod.optin), K(e21._zod, "optout", () => t.out._zod.optout), K(e21._zod, "propValues", () => t.in._zod.propValues), e21._zod.parse = (r, n) => { + if (n.direction === "backward") { + let o = t.out._zod.run(r, n); + return o instanceof Promise ? o.then((a) => $l(a, t.in, n)) : $l(o, t.in, n); + } + let i = t.in._zod.run(r, n); + return i instanceof Promise ? i.then((o) => $l(o, t.out, n)) : $l(i, t.out, n); + }; +}); +function $l(e21, t, r) { + return e21.issues.length ? (e21.aborted = true, e21) : t._zod.run({ value: e21.value, issues: e21.issues }, r); +} +var Ss = b("$ZodCodec", (e21, t) => { + G.init(e21, t), K(e21._zod, "values", () => t.in._zod.values), K(e21._zod, "optin", () => t.in._zod.optin), K(e21._zod, "optout", () => t.out._zod.optout), K(e21._zod, "propValues", () => t.in._zod.propValues), e21._zod.parse = (r, n) => { + if ((n.direction || "forward") === "forward") { + let o = t.in._zod.run(r, n); + return o instanceof Promise ? o.then((a) => Sl(a, t, n)) : Sl(o, t, n); + } else { + let o = t.out._zod.run(r, n); + return o instanceof Promise ? o.then((a) => Sl(a, t, n)) : Sl(o, t, n); + } + }; +}); +function Sl(e21, t, r) { + if (e21.issues.length) return e21.aborted = true, e21; + if ((r.direction || "forward") === "forward") { + let i = t.transform(e21.value, e21); + return i instanceof Promise ? i.then((o) => kl(e21, o, t.out, r)) : kl(e21, i, t.out, r); + } else { + let i = t.reverseTransform(e21.value, e21); + return i instanceof Promise ? i.then((o) => kl(e21, o, t.in, r)) : kl(e21, i, t.in, r); + } +} +function kl(e21, t, r, n) { + return e21.issues.length ? (e21.aborted = true, e21) : r._zod.run({ value: t, issues: e21.issues }, n); +} +var gv = b("$ZodReadonly", (e21, t) => { + G.init(e21, t), K(e21._zod, "propValues", () => t.innerType._zod.propValues), K(e21._zod, "values", () => t.innerType._zod.values), K(e21._zod, "optin", () => t.innerType?._zod?.optin), K(e21._zod, "optout", () => t.innerType?._zod?.optout), e21._zod.parse = (r, n) => { + if (n.direction === "backward") return t.innerType._zod.run(r, n); + let i = t.innerType._zod.run(r, n); + return i instanceof Promise ? i.then(I$) : I$(i); + }; +}); +function I$(e21) { + return e21.value = Object.freeze(e21.value), e21; +} +var yv = b("$ZodTemplateLiteral", (e21, t) => { + G.init(e21, t); + let r = []; + for (let n of t.parts) if (typeof n == "object" && n !== null) { + if (!n._zod.pattern) throw new Error(`Invalid template literal part, no pattern found: ${[...n._zod.traits].shift()}`); + let i = n._zod.pattern instanceof RegExp ? n._zod.pattern.source : n._zod.pattern; + if (!i) throw new Error(`Invalid template literal part: ${n._zod.traits}`); + let o = i.startsWith("^") ? 1 : 0, a = i.endsWith("$") ? i.length - 1 : i.length; + r.push(i.slice(o, a)); + } else if (n === null || Cm.has(typeof n)) r.push(gr(`${n}`)); + else throw new Error(`Invalid template literal part: ${n}`); + e21._zod.pattern = new RegExp(`^${r.join("")}$`), e21._zod.parse = (n, i) => typeof n.value != "string" ? (n.issues.push({ input: n.value, inst: e21, expected: "string", code: "invalid_type" }), n) : (e21._zod.pattern.lastIndex = 0, e21._zod.pattern.test(n.value) || n.issues.push({ input: n.value, inst: e21, code: "invalid_format", format: t.format ?? "template_literal", pattern: e21._zod.pattern.source }), n); +}); +var xv = b("$ZodFunction", (e21, t) => (G.init(e21, t), e21._def = t, e21._zod.def = t, e21.implement = (r) => { + if (typeof r != "function") throw new Error("implement() must be called with a function"); + return function(...n) { + let i = e21._def.input ? fs(e21._def.input, n) : n, o = Reflect.apply(r, this, i); + return e21._def.output ? fs(e21._def.output, o) : o; + }; +}, e21.implementAsync = (r) => { + if (typeof r != "function") throw new Error("implementAsync() must be called with a function"); + return async function(...n) { + let i = e21._def.input ? await hs(e21._def.input, n) : n, o = await Reflect.apply(r, this, i); + return e21._def.output ? await hs(e21._def.output, o) : o; + }; +}, e21._zod.parse = (r, n) => typeof r.value != "function" ? (r.issues.push({ code: "invalid_type", expected: "function", input: r.value, inst: e21 }), r) : (e21._def.output && e21._def.output._zod.def.type === "promise" ? r.value = e21.implementAsync(r.value) : r.value = e21.implement(r.value), r), e21.input = (...r) => { + let n = e21.constructor; + return Array.isArray(r[0]) ? new n({ type: "function", input: new Il({ type: "tuple", items: r[0], rest: r[1] }), output: e21._def.output }) : new n({ type: "function", input: r[0], output: e21._def.output }); +}, e21.output = (r) => { + let n = e21.constructor; + return new n({ type: "function", input: e21._def.input, output: r }); +}, e21)); +var bv = b("$ZodPromise", (e21, t) => { + G.init(e21, t), e21._zod.parse = (r, n) => Promise.resolve(r.value).then((i) => t.innerType._zod.run({ value: i, issues: [] }, n)); +}); +var _v = b("$ZodLazy", (e21, t) => { + G.init(e21, t), K(e21._zod, "innerType", () => t.getter()), K(e21._zod, "pattern", () => e21._zod.innerType?._zod?.pattern), K(e21._zod, "propValues", () => e21._zod.innerType?._zod?.propValues), K(e21._zod, "optin", () => e21._zod.innerType?._zod?.optin ?? void 0), K(e21._zod, "optout", () => e21._zod.innerType?._zod?.optout ?? void 0), e21._zod.parse = (r, n) => e21._zod.innerType._zod.run(r, n); +}); +var wv = b("$ZodCustom", (e21, t) => { + ze.init(e21, t), G.init(e21, t), e21._zod.parse = (r, n) => r, e21._zod.check = (r) => { + let n = r.value, i = t.fn(n); + if (i instanceof Promise) return i.then((o) => z$(o, r, n, e21)); + z$(i, r, n, e21); + }; +}); +function z$(e21, t, r, n) { + if (!e21) { + let i = { code: "custom", input: r, inst: n, path: [...n._zod.def.path ?? []], continue: !n._zod.def.abort }; + n._zod.def.params && (i.params = n._zod.def.params), t.issues.push(vo(i)); + } +} +var fD = () => { + let e21 = { string: { unit: "characters", verb: "to have" }, file: { unit: "bytes", verb: "to have" }, array: { unit: "items", verb: "to have" }, set: { unit: "items", verb: "to have" }, map: { unit: "entries", verb: "to have" } }; + function t(i) { + return e21[i] ?? null; + } + let r = { regex: "input", email: "email address", url: "URL", emoji: "emoji", uuid: "UUID", uuidv4: "UUIDv4", uuidv6: "UUIDv6", nanoid: "nanoid", guid: "GUID", cuid: "cuid", cuid2: "cuid2", ulid: "ULID", xid: "XID", ksuid: "KSUID", datetime: "ISO datetime", date: "ISO date", time: "ISO time", duration: "ISO duration", ipv4: "IPv4 address", ipv6: "IPv6 address", mac: "MAC address", cidrv4: "IPv4 range", cidrv6: "IPv6 range", base64: "base64-encoded string", base64url: "base64url-encoded string", json_string: "JSON string", e164: "E.164 number", jwt: "JWT", template_literal: "input" }, n = { nan: "NaN" }; + return (i) => { + switch (i.code) { + case "invalid_type": { + let o = n[i.expected] ?? i.expected, a = V(i.input), s = n[a] ?? a; + return `Invalid input: expected ${o}, received ${s}`; + } + case "invalid_value": + return i.values.length === 1 ? `Invalid input: expected ${B(i.values[0])}` : `Invalid option: expected one of ${Z(i.values, "|")}`; + case "too_big": { + let o = i.inclusive ? "<=" : "<", a = t(i.origin); + return a ? `Too big: expected ${i.origin ?? "value"} to have ${o}${i.maximum.toString()} ${a.unit ?? "elements"}` : `Too big: expected ${i.origin ?? "value"} to be ${o}${i.maximum.toString()}`; + } + case "too_small": { + let o = i.inclusive ? ">=" : ">", a = t(i.origin); + return a ? `Too small: expected ${i.origin} to have ${o}${i.minimum.toString()} ${a.unit}` : `Too small: expected ${i.origin} to be ${o}${i.minimum.toString()}`; + } + case "invalid_format": { + let o = i; + return o.format === "starts_with" ? `Invalid string: must start with "${o.prefix}"` : o.format === "ends_with" ? `Invalid string: must end with "${o.suffix}"` : o.format === "includes" ? `Invalid string: must include "${o.includes}"` : o.format === "regex" ? `Invalid string: must match pattern ${o.pattern}` : `Invalid ${r[o.format] ?? i.format}`; + } + case "not_multiple_of": + return `Invalid number: must be a multiple of ${i.divisor}`; + case "unrecognized_keys": + return `Unrecognized key${i.keys.length > 1 ? "s" : ""}: ${Z(i.keys, ", ")}`; + case "invalid_key": + return `Invalid key in ${i.origin}`; + case "invalid_union": + return "Invalid input"; + case "invalid_element": + return `Invalid value in ${i.origin}`; + default: + return "Invalid input"; + } + }; +}; +function $v() { + return { localeError: fD() }; +} +var N$; +var kv = class { + constructor() { + this._map = /* @__PURE__ */ new WeakMap(), this._idmap = /* @__PURE__ */ new Map(); + } + add(t, ...r) { + let n = r[0]; + return this._map.set(t, n), n && typeof n == "object" && "id" in n && this._idmap.set(n.id, t), this; + } + clear() { + return this._map = /* @__PURE__ */ new WeakMap(), this._idmap = /* @__PURE__ */ new Map(), this; + } + remove(t) { + let r = this._map.get(t); + return r && typeof r == "object" && "id" in r && this._idmap.delete(r.id), this._map.delete(t), this; + } + get(t) { + let r = t._zod.parent; + if (r) { + let n = { ...this.get(r) ?? {} }; + delete n.id; + let i = { ...n, ...this._map.get(t) }; + return Object.keys(i).length ? i : void 0; + } + return this._map.get(t); + } + has(t) { + return this._map.has(t); + } +}; +function Ev() { + return new kv(); +} +(N$ = globalThis).__zod_globalRegistry ?? (N$.__zod_globalRegistry = Ev()); +var At = globalThis.__zod_globalRegistry; +function Ov(e21, t) { + return new e21({ type: "string", ...I(t) }); +} +function Pl(e21, t) { + return new e21({ type: "string", format: "email", check: "string_format", abort: false, ...I(t) }); +} +function ks(e21, t) { + return new e21({ type: "string", format: "guid", check: "string_format", abort: false, ...I(t) }); +} +function jl(e21, t) { + return new e21({ type: "string", format: "uuid", check: "string_format", abort: false, ...I(t) }); +} +function Al(e21, t) { + return new e21({ type: "string", format: "uuid", check: "string_format", abort: false, version: "v4", ...I(t) }); +} +function Rl(e21, t) { + return new e21({ type: "string", format: "uuid", check: "string_format", abort: false, version: "v6", ...I(t) }); +} +function Cl(e21, t) { + return new e21({ type: "string", format: "uuid", check: "string_format", abort: false, version: "v7", ...I(t) }); +} +function Es(e21, t) { + return new e21({ type: "string", format: "url", check: "string_format", abort: false, ...I(t) }); +} +function Nl(e21, t) { + return new e21({ type: "string", format: "emoji", check: "string_format", abort: false, ...I(t) }); +} +function Dl(e21, t) { + return new e21({ type: "string", format: "nanoid", check: "string_format", abort: false, ...I(t) }); +} +function ql(e21, t) { + return new e21({ type: "string", format: "cuid", check: "string_format", abort: false, ...I(t) }); +} +function Ul(e21, t) { + return new e21({ type: "string", format: "cuid2", check: "string_format", abort: false, ...I(t) }); +} +function Ll(e21, t) { + return new e21({ type: "string", format: "ulid", check: "string_format", abort: false, ...I(t) }); +} +function Ml(e21, t) { + return new e21({ type: "string", format: "xid", check: "string_format", abort: false, ...I(t) }); +} +function Fl(e21, t) { + return new e21({ type: "string", format: "ksuid", check: "string_format", abort: false, ...I(t) }); +} +function Zl(e21, t) { + return new e21({ type: "string", format: "ipv4", check: "string_format", abort: false, ...I(t) }); +} +function Bl(e21, t) { + return new e21({ type: "string", format: "ipv6", check: "string_format", abort: false, ...I(t) }); +} +function Tv(e21, t) { + return new e21({ type: "string", format: "mac", check: "string_format", abort: false, ...I(t) }); +} +function Vl(e21, t) { + return new e21({ type: "string", format: "cidrv4", check: "string_format", abort: false, ...I(t) }); +} +function Hl(e21, t) { + return new e21({ type: "string", format: "cidrv6", check: "string_format", abort: false, ...I(t) }); +} +function Jl(e21, t) { + return new e21({ type: "string", format: "base64", check: "string_format", abort: false, ...I(t) }); +} +function Gl(e21, t) { + return new e21({ type: "string", format: "base64url", check: "string_format", abort: false, ...I(t) }); +} +function Wl(e21, t) { + return new e21({ type: "string", format: "e164", check: "string_format", abort: false, ...I(t) }); +} +function Kl(e21, t) { + return new e21({ type: "string", format: "jwt", check: "string_format", abort: false, ...I(t) }); +} +function Iv(e21, t) { + return new e21({ type: "string", format: "datetime", check: "string_format", offset: false, local: false, precision: null, ...I(t) }); +} +function zv(e21, t) { + return new e21({ type: "string", format: "date", check: "string_format", ...I(t) }); +} +function Pv(e21, t) { + return new e21({ type: "string", format: "time", check: "string_format", precision: null, ...I(t) }); +} +function jv(e21, t) { + return new e21({ type: "string", format: "duration", check: "string_format", ...I(t) }); +} +function Av(e21, t) { + return new e21({ type: "number", checks: [], ...I(t) }); +} +function Rv(e21, t) { + return new e21({ type: "number", check: "number_format", abort: false, format: "safeint", ...I(t) }); +} +function Cv(e21, t) { + return new e21({ type: "number", check: "number_format", abort: false, format: "float32", ...I(t) }); +} +function Nv(e21, t) { + return new e21({ type: "number", check: "number_format", abort: false, format: "float64", ...I(t) }); +} +function Dv(e21, t) { + return new e21({ type: "number", check: "number_format", abort: false, format: "int32", ...I(t) }); +} +function qv(e21, t) { + return new e21({ type: "number", check: "number_format", abort: false, format: "uint32", ...I(t) }); +} +function Uv(e21, t) { + return new e21({ type: "boolean", ...I(t) }); +} +function Lv(e21, t) { + return new e21({ type: "bigint", ...I(t) }); +} +function Mv(e21, t) { + return new e21({ type: "bigint", check: "bigint_format", abort: false, format: "int64", ...I(t) }); +} +function Fv(e21, t) { + return new e21({ type: "bigint", check: "bigint_format", abort: false, format: "uint64", ...I(t) }); +} +function Zv(e21, t) { + return new e21({ type: "symbol", ...I(t) }); +} +function Bv(e21, t) { + return new e21({ type: "undefined", ...I(t) }); +} +function Vv(e21, t) { + return new e21({ type: "null", ...I(t) }); +} +function Hv(e21) { + return new e21({ type: "any" }); +} +function Jv(e21) { + return new e21({ type: "unknown" }); +} +function Gv(e21, t) { + return new e21({ type: "never", ...I(t) }); +} +function Wv(e21, t) { + return new e21({ type: "void", ...I(t) }); +} +function Kv(e21, t) { + return new e21({ type: "date", ...I(t) }); +} +function Xv(e21, t) { + return new e21({ type: "nan", ...I(t) }); +} +function hn(e21, t) { + return new fh({ check: "less_than", ...I(t), value: e21, inclusive: false }); +} +function pr(e21, t) { + return new fh({ check: "less_than", ...I(t), value: e21, inclusive: true }); +} +function vn(e21, t) { + return new mh({ check: "greater_than", ...I(t), value: e21, inclusive: false }); +} +function Rt(e21, t) { + return new mh({ check: "greater_than", ...I(t), value: e21, inclusive: true }); +} +function Yv(e21) { + return vn(0, e21); +} +function Qv(e21) { + return hn(0, e21); +} +function eg(e21) { + return pr(0, e21); +} +function tg(e21) { + return Rt(0, e21); +} +function $i(e21, t) { + return new e$({ check: "multiple_of", ...I(t), value: e21 }); +} +function Si(e21, t) { + return new n$({ check: "max_size", ...I(t), maximum: e21 }); +} +function gn(e21, t) { + return new i$({ check: "min_size", ...I(t), minimum: e21 }); +} +function yo(e21, t) { + return new o$({ check: "size_equals", ...I(t), size: e21 }); +} +function xo(e21, t) { + return new a$({ check: "max_length", ...I(t), maximum: e21 }); +} +function Ln(e21, t) { + return new s$({ check: "min_length", ...I(t), minimum: e21 }); +} +function bo(e21, t) { + return new c$({ check: "length_equals", ...I(t), length: e21 }); +} +function Os(e21, t) { + return new u$({ check: "string_format", format: "regex", ...I(t), pattern: e21 }); +} +function Ts(e21) { + return new l$({ check: "string_format", format: "lowercase", ...I(e21) }); +} +function Is(e21) { + return new p$({ check: "string_format", format: "uppercase", ...I(e21) }); +} +function zs(e21, t) { + return new d$({ check: "string_format", format: "includes", ...I(t), includes: e21 }); +} +function Ps(e21, t) { + return new f$({ check: "string_format", format: "starts_with", ...I(t), prefix: e21 }); +} +function js(e21, t) { + return new m$({ check: "string_format", format: "ends_with", ...I(t), suffix: e21 }); +} +function rg(e21, t, r) { + return new h$({ check: "property", property: e21, schema: t, ...I(r) }); +} +function As(e21, t) { + return new v$({ check: "mime_type", mime: e21, ...I(t) }); +} +function Kr(e21) { + return new g$({ check: "overwrite", tx: e21 }); +} +function Rs(e21) { + return Kr((t) => t.normalize(e21)); +} +function Cs() { + return Kr((e21) => e21.trim()); +} +function Ns() { + return Kr((e21) => e21.toLowerCase()); +} +function Ds() { + return Kr((e21) => e21.toUpperCase()); +} +function Xl() { + return Kr((e21) => jm(e21)); +} +function U$(e21, t, r) { + return new e21({ type: "array", element: t, ...I(r) }); +} +function ng(e21, t) { + return new e21({ type: "file", ...I(t) }); +} +function ig(e21, t, r) { + let n = I(r); + return n.abort ?? (n.abort = true), new e21({ type: "custom", check: "custom", fn: t, ...n }); +} +function og(e21, t, r) { + return new e21({ type: "custom", check: "custom", fn: t, ...I(r) }); +} +function ag(e21) { + let t = gD((r) => (r.addIssue = (n) => { + if (typeof n == "string") r.issues.push(vo(n, r.value, t._zod.def)); + else { + let i = n; + i.fatal && (i.continue = false), i.code ?? (i.code = "custom"), i.input ?? (i.input = r.value), i.inst ?? (i.inst = t), i.continue ?? (i.continue = !t._zod.def.abort), r.issues.push(vo(i)); + } + }, e21(r.value, r))); + return t; +} +function gD(e21, t) { + let r = new ze({ check: "custom", ...I(t) }); + return r._zod.check = e21, r; +} +function sg(e21) { + let t = new ze({ check: "describe" }); + return t._zod.onattach = [(r) => { + let n = At.get(r) ?? {}; + At.add(r, { ...n, description: e21 }); + }], t._zod.check = () => { + }, t; +} +function cg(e21) { + let t = new ze({ check: "meta" }); + return t._zod.onattach = [(r) => { + let n = At.get(r) ?? {}; + At.add(r, { ...n, ...e21 }); + }], t._zod.check = () => { + }, t; +} +function ug(e21, t) { + let r = I(t), n = r.truthy ?? ["true", "1", "yes", "on", "y", "enabled"], i = r.falsy ?? ["false", "0", "no", "off", "n", "disabled"]; + r.case !== "sensitive" && (n = n.map((f) => typeof f == "string" ? f.toLowerCase() : f), i = i.map((f) => typeof f == "string" ? f.toLowerCase() : f)); + let o = new Set(n), a = new Set(i), s = e21.Codec ?? Ss, c = e21.Boolean ?? ws, u = e21.String ?? wi, l = new u({ type: "string", error: r.error }), p = new c({ type: "boolean", error: r.error }), d = new s({ type: "pipe", in: l, out: p, transform: (f, m) => { + let h = f; + return r.case !== "sensitive" && (h = h.toLowerCase()), o.has(h) ? true : a.has(h) ? false : (m.issues.push({ code: "invalid_value", expected: "stringbool", values: [...o, ...a], input: m.value, inst: d, continue: false }), {}); + }, reverseTransform: (f, m) => f === true ? n[0] || "true" : i[0] || "false", error: r.error }); + return d; +} +function _o(e21, t, r, n = {}) { + let i = I(n), o = { ...I(n), check: "string_format", type: "string", format: t, fn: typeof r == "function" ? r : (s) => r.test(s), ...i }; + return r instanceof RegExp && (o.pattern = r), new e21(o); +} +function Yl(e21) { + let t = e21?.target ?? "draft-2020-12"; + return t === "draft-4" && (t = "draft-04"), t === "draft-7" && (t = "draft-07"), { processors: e21.processors ?? {}, metadataRegistry: e21?.metadata ?? At, target: t, unrepresentable: e21?.unrepresentable ?? "throw", override: e21?.override ?? (() => { + }), io: e21?.io ?? "output", counter: 0, seen: /* @__PURE__ */ new Map(), cycles: e21?.cycles ?? "ref", reused: e21?.reused ?? "inline", external: e21?.external ?? void 0 }; +} +function De(e21, t, r = { path: [], schemaPath: [] }) { + var n; + let i = e21._zod.def, o = t.seen.get(e21); + if (o) return o.count++, r.schemaPath.includes(e21) && (o.cycle = r.path), o.schema; + let a = { schema: {}, count: 1, cycle: void 0, path: r.path }; + t.seen.set(e21, a); + let s = e21._zod.toJSONSchema?.(); + if (s) a.schema = s; + else { + let l = { ...r, schemaPath: [...r.schemaPath, e21], path: r.path }; + if (e21._zod.processJSONSchema) e21._zod.processJSONSchema(t, a.schema, l); + else { + let d = a.schema, f = t.processors[i.type]; + if (!f) throw new Error(`[toJSONSchema]: Non-representable type encountered: ${i.type}`); + f(e21, t, d, l); + } + let p = e21._zod.parent; + p && (a.ref || (a.ref = p), De(p, t, l), t.seen.get(p).isParent = true); + } + let c = t.metadataRegistry.get(e21); + return c && Object.assign(a.schema, c), t.io === "input" && Ct(e21) && (delete a.schema.examples, delete a.schema.default), t.io === "input" && a.schema._prefault && ((n = a.schema).default ?? (n.default = a.schema._prefault)), delete a.schema._prefault, t.seen.get(e21).schema; +} +function Ql(e21, t) { + let r = e21.seen.get(t); + if (!r) throw new Error("Unprocessed schema. This is a bug in Zod."); + let n = /* @__PURE__ */ new Map(); + for (let a of e21.seen.entries()) { + let s = e21.metadataRegistry.get(a[0])?.id; + if (s) { + let c = n.get(s); + if (c && c !== a[0]) throw new Error(`Duplicate schema id "${s}" detected during JSON Schema conversion. Two different schemas cannot share the same id when converted together.`); + n.set(s, a[0]); + } + } + let i = (a) => { + let s = e21.target === "draft-2020-12" ? "$defs" : "definitions"; + if (e21.external) { + let p = e21.external.registry.get(a[0])?.id, d = e21.external.uri ?? ((m) => m); + if (p) return { ref: d(p) }; + let f = a[1].defId ?? a[1].schema.id ?? `schema${e21.counter++}`; + return a[1].defId = f, { defId: f, ref: `${d("__shared")}#/${s}/${f}` }; + } + if (a[1] === r) return { ref: "#" }; + let u = `#/${s}/`, l = a[1].schema.id ?? `__schema${e21.counter++}`; + return { defId: l, ref: u + l }; + }, o = (a) => { + if (a[1].schema.$ref) return; + let s = a[1], { ref: c, defId: u } = i(a); + s.def = { ...s.schema }, u && (s.defId = u); + let l = s.schema; + for (let p in l) delete l[p]; + l.$ref = c; + }; + if (e21.cycles === "throw") for (let a of e21.seen.entries()) { + let s = a[1]; + if (s.cycle) throw new Error(`Cycle detected: #/${s.cycle?.join("/")}/ + +Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.`); + } + for (let a of e21.seen.entries()) { + let s = a[1]; + if (t === a[0]) { + o(a); + continue; + } + if (e21.external) { + let u = e21.external.registry.get(a[0])?.id; + if (t !== a[0] && u) { + o(a); + continue; + } + } + if (e21.metadataRegistry.get(a[0])?.id) { + o(a); + continue; + } + if (s.cycle) { + o(a); + continue; + } + if (s.count > 1 && e21.reused === "ref") { + o(a); + continue; + } + } +} +function ep(e21, t) { + let r = e21.seen.get(t); + if (!r) throw new Error("Unprocessed schema. This is a bug in Zod."); + let n = (a) => { + let s = e21.seen.get(a); + if (s.ref === null) return; + let c = s.def ?? s.schema, u = { ...c }, l = s.ref; + if (s.ref = null, l) { + n(l); + let d = e21.seen.get(l), f = d.schema; + if (f.$ref && (e21.target === "draft-07" || e21.target === "draft-04" || e21.target === "openapi-3.0") ? (c.allOf = c.allOf ?? [], c.allOf.push(f)) : Object.assign(c, f), Object.assign(c, u), a._zod.parent === l) for (let h in c) h === "$ref" || h === "allOf" || h in u || delete c[h]; + if (f.$ref && d.def) for (let h in c) h === "$ref" || h === "allOf" || h in d.def && JSON.stringify(c[h]) === JSON.stringify(d.def[h]) && delete c[h]; + } + let p = a._zod.parent; + if (p && p !== l) { + n(p); + let d = e21.seen.get(p); + if (d?.schema.$ref && (c.$ref = d.schema.$ref, d.def)) for (let f in c) f === "$ref" || f === "allOf" || f in d.def && JSON.stringify(c[f]) === JSON.stringify(d.def[f]) && delete c[f]; + } + e21.override({ zodSchema: a, jsonSchema: c, path: s.path ?? [] }); + }; + for (let a of [...e21.seen.entries()].reverse()) n(a[0]); + let i = {}; + if (e21.target === "draft-2020-12" ? i.$schema = "https://json-schema.org/draft/2020-12/schema" : e21.target === "draft-07" ? i.$schema = "http://json-schema.org/draft-07/schema#" : e21.target === "draft-04" ? i.$schema = "http://json-schema.org/draft-04/schema#" : e21.target, e21.external?.uri) { + let a = e21.external.registry.get(t)?.id; + if (!a) throw new Error("Schema is missing an `id` property"); + i.$id = e21.external.uri(a); + } + Object.assign(i, r.def ?? r.schema); + let o = e21.external?.defs ?? {}; + for (let a of e21.seen.entries()) { + let s = a[1]; + s.def && s.defId && (o[s.defId] = s.def); + } + e21.external || Object.keys(o).length > 0 && (e21.target === "draft-2020-12" ? i.$defs = o : i.definitions = o); + try { + let a = JSON.parse(JSON.stringify(i)); + return Object.defineProperty(a, "~standard", { value: { ...t["~standard"], jsonSchema: { input: qs(t, "input", e21.processors), output: qs(t, "output", e21.processors) } }, enumerable: false, writable: false }), a; + } catch { + throw new Error("Error converting schema to JSON."); + } +} +function Ct(e21, t) { + let r = t ?? { seen: /* @__PURE__ */ new Set() }; + if (r.seen.has(e21)) return false; + r.seen.add(e21); + let n = e21._zod.def; + if (n.type === "transform") return true; + if (n.type === "array") return Ct(n.element, r); + if (n.type === "set") return Ct(n.valueType, r); + if (n.type === "lazy") return Ct(n.getter(), r); + if (n.type === "promise" || n.type === "optional" || n.type === "nonoptional" || n.type === "nullable" || n.type === "readonly" || n.type === "default" || n.type === "prefault") return Ct(n.innerType, r); + if (n.type === "intersection") return Ct(n.left, r) || Ct(n.right, r); + if (n.type === "record" || n.type === "map") return Ct(n.keyType, r) || Ct(n.valueType, r); + if (n.type === "pipe") return Ct(n.in, r) || Ct(n.out, r); + if (n.type === "object") { + for (let i in n.shape) if (Ct(n.shape[i], r)) return true; + return false; + } + if (n.type === "union") { + for (let i of n.options) if (Ct(i, r)) return true; + return false; + } + if (n.type === "tuple") { + for (let i of n.items) if (Ct(i, r)) return true; + return !!(n.rest && Ct(n.rest, r)); + } + return false; +} +var L$ = (e21, t = {}) => (r) => { + let n = Yl({ ...r, processors: t }); + return De(e21, n), Ql(n, e21), ep(n, e21); +}; +var qs = (e21, t, r = {}) => (n) => { + let { libraryOptions: i, target: o } = n ?? {}, a = Yl({ ...i ?? {}, target: o, io: t, processors: r }); + return De(e21, a), Ql(a, e21), ep(a, e21); +}; +var yD = { guid: "uuid", url: "uri", datetime: "date-time", json_string: "json-string", regex: "" }; +var M$ = (e21, t, r, n) => { + let i = r; + i.type = "string"; + let { minimum: o, maximum: a, format: s, patterns: c, contentEncoding: u } = e21._zod.bag; + if (typeof o == "number" && (i.minLength = o), typeof a == "number" && (i.maxLength = a), s && (i.format = yD[s] ?? s, i.format === "" && delete i.format, s === "time" && delete i.format), u && (i.contentEncoding = u), c && c.size > 0) { + let l = [...c]; + l.length === 1 ? i.pattern = l[0].source : l.length > 1 && (i.allOf = [...l.map((p) => ({ ...t.target === "draft-07" || t.target === "draft-04" || t.target === "openapi-3.0" ? { type: "string" } : {}, pattern: p.source }))]); + } +}; +var F$ = (e21, t, r, n) => { + let i = r, { minimum: o, maximum: a, format: s, multipleOf: c, exclusiveMaximum: u, exclusiveMinimum: l } = e21._zod.bag; + typeof s == "string" && s.includes("int") ? i.type = "integer" : i.type = "number", typeof l == "number" && (t.target === "draft-04" || t.target === "openapi-3.0" ? (i.minimum = l, i.exclusiveMinimum = true) : i.exclusiveMinimum = l), typeof o == "number" && (i.minimum = o, typeof l == "number" && t.target !== "draft-04" && (l >= o ? delete i.minimum : delete i.exclusiveMinimum)), typeof u == "number" && (t.target === "draft-04" || t.target === "openapi-3.0" ? (i.maximum = u, i.exclusiveMaximum = true) : i.exclusiveMaximum = u), typeof a == "number" && (i.maximum = a, typeof u == "number" && t.target !== "draft-04" && (u <= a ? delete i.maximum : delete i.exclusiveMaximum)), typeof c == "number" && (i.multipleOf = c); +}; +var Z$ = (e21, t, r, n) => { + r.type = "boolean"; +}; +var B$ = (e21, t, r, n) => { + if (t.unrepresentable === "throw") throw new Error("BigInt cannot be represented in JSON Schema"); +}; +var V$ = (e21, t, r, n) => { + if (t.unrepresentable === "throw") throw new Error("Symbols cannot be represented in JSON Schema"); +}; +var H$ = (e21, t, r, n) => { + t.target === "openapi-3.0" ? (r.type = "string", r.nullable = true, r.enum = [null]) : r.type = "null"; +}; +var J$ = (e21, t, r, n) => { + if (t.unrepresentable === "throw") throw new Error("Undefined cannot be represented in JSON Schema"); +}; +var G$ = (e21, t, r, n) => { + if (t.unrepresentable === "throw") throw new Error("Void cannot be represented in JSON Schema"); +}; +var W$ = (e21, t, r, n) => { + r.not = {}; +}; +var K$ = (e21, t, r, n) => { +}; +var X$ = (e21, t, r, n) => { +}; +var Y$ = (e21, t, r, n) => { + if (t.unrepresentable === "throw") throw new Error("Date cannot be represented in JSON Schema"); +}; +var Q$ = (e21, t, r, n) => { + let i = e21._zod.def, o = as(i.entries); + o.every((a) => typeof a == "number") && (r.type = "number"), o.every((a) => typeof a == "string") && (r.type = "string"), r.enum = o; +}; +var eS = (e21, t, r, n) => { + let i = e21._zod.def, o = []; + for (let a of i.values) if (a === void 0) { + if (t.unrepresentable === "throw") throw new Error("Literal `undefined` cannot be represented in JSON Schema"); + } else if (typeof a == "bigint") { + if (t.unrepresentable === "throw") throw new Error("BigInt literals cannot be represented in JSON Schema"); + o.push(Number(a)); + } else o.push(a); + if (o.length !== 0) if (o.length === 1) { + let a = o[0]; + r.type = a === null ? "null" : typeof a, t.target === "draft-04" || t.target === "openapi-3.0" ? r.enum = [a] : r.const = a; + } else o.every((a) => typeof a == "number") && (r.type = "number"), o.every((a) => typeof a == "string") && (r.type = "string"), o.every((a) => typeof a == "boolean") && (r.type = "boolean"), o.every((a) => a === null) && (r.type = "null"), r.enum = o; +}; +var tS = (e21, t, r, n) => { + if (t.unrepresentable === "throw") throw new Error("NaN cannot be represented in JSON Schema"); +}; +var rS = (e21, t, r, n) => { + let i = r, o = e21._zod.pattern; + if (!o) throw new Error("Pattern not found in template literal"); + i.type = "string", i.pattern = o.source; +}; +var nS = (e21, t, r, n) => { + let i = r, o = { type: "string", format: "binary", contentEncoding: "binary" }, { minimum: a, maximum: s, mime: c } = e21._zod.bag; + a !== void 0 && (o.minLength = a), s !== void 0 && (o.maxLength = s), c ? c.length === 1 ? (o.contentMediaType = c[0], Object.assign(i, o)) : (Object.assign(i, o), i.anyOf = c.map((u) => ({ contentMediaType: u }))) : Object.assign(i, o); +}; +var iS = (e21, t, r, n) => { + r.type = "boolean"; +}; +var oS = (e21, t, r, n) => { + if (t.unrepresentable === "throw") throw new Error("Custom types cannot be represented in JSON Schema"); +}; +var aS = (e21, t, r, n) => { + if (t.unrepresentable === "throw") throw new Error("Function types cannot be represented in JSON Schema"); +}; +var sS = (e21, t, r, n) => { + if (t.unrepresentable === "throw") throw new Error("Transforms cannot be represented in JSON Schema"); +}; +var cS = (e21, t, r, n) => { + if (t.unrepresentable === "throw") throw new Error("Map cannot be represented in JSON Schema"); +}; +var uS = (e21, t, r, n) => { + if (t.unrepresentable === "throw") throw new Error("Set cannot be represented in JSON Schema"); +}; +var lS = (e21, t, r, n) => { + let i = r, o = e21._zod.def, { minimum: a, maximum: s } = e21._zod.bag; + typeof a == "number" && (i.minItems = a), typeof s == "number" && (i.maxItems = s), i.type = "array", i.items = De(o.element, t, { ...n, path: [...n.path, "items"] }); +}; +var pS = (e21, t, r, n) => { + let i = r, o = e21._zod.def; + i.type = "object", i.properties = {}; + let a = o.shape; + for (let u in a) i.properties[u] = De(a[u], t, { ...n, path: [...n.path, "properties", u] }); + let s = new Set(Object.keys(a)), c = new Set([...s].filter((u) => { + let l = o.shape[u]._zod; + return t.io === "input" ? l.optin === void 0 : l.optout === void 0; + })); + c.size > 0 && (i.required = Array.from(c)), o.catchall?._zod.def.type === "never" ? i.additionalProperties = false : o.catchall ? o.catchall && (i.additionalProperties = De(o.catchall, t, { ...n, path: [...n.path, "additionalProperties"] })) : t.io === "output" && (i.additionalProperties = false); +}; +var lg = (e21, t, r, n) => { + let i = e21._zod.def, o = i.inclusive === false, a = i.options.map((s, c) => De(s, t, { ...n, path: [...n.path, o ? "oneOf" : "anyOf", c] })); + o ? r.oneOf = a : r.anyOf = a; +}; +var dS = (e21, t, r, n) => { + let i = e21._zod.def, o = De(i.left, t, { ...n, path: [...n.path, "allOf", 0] }), a = De(i.right, t, { ...n, path: [...n.path, "allOf", 1] }), s = (u) => "allOf" in u && Object.keys(u).length === 1, c = [...s(o) ? o.allOf : [o], ...s(a) ? a.allOf : [a]]; + r.allOf = c; +}; +var fS = (e21, t, r, n) => { + let i = r, o = e21._zod.def; + i.type = "array"; + let a = t.target === "draft-2020-12" ? "prefixItems" : "items", s = t.target === "draft-2020-12" || t.target === "openapi-3.0" ? "items" : "additionalItems", c = o.items.map((d, f) => De(d, t, { ...n, path: [...n.path, a, f] })), u = o.rest ? De(o.rest, t, { ...n, path: [...n.path, s, ...t.target === "openapi-3.0" ? [o.items.length] : []] }) : null; + t.target === "draft-2020-12" ? (i.prefixItems = c, u && (i.items = u)) : t.target === "openapi-3.0" ? (i.items = { anyOf: c }, u && i.items.anyOf.push(u), i.minItems = c.length, u || (i.maxItems = c.length)) : (i.items = c, u && (i.additionalItems = u)); + let { minimum: l, maximum: p } = e21._zod.bag; + typeof l == "number" && (i.minItems = l), typeof p == "number" && (i.maxItems = p); +}; +var mS = (e21, t, r, n) => { + let i = r, o = e21._zod.def; + i.type = "object"; + let a = o.keyType, c = a._zod.bag?.patterns; + if (o.mode === "loose" && c && c.size > 0) { + let l = De(o.valueType, t, { ...n, path: [...n.path, "patternProperties", "*"] }); + i.patternProperties = {}; + for (let p of c) i.patternProperties[p.source] = l; + } else (t.target === "draft-07" || t.target === "draft-2020-12") && (i.propertyNames = De(o.keyType, t, { ...n, path: [...n.path, "propertyNames"] })), i.additionalProperties = De(o.valueType, t, { ...n, path: [...n.path, "additionalProperties"] }); + let u = a._zod.values; + if (u) { + let l = [...u].filter((p) => typeof p == "string" || typeof p == "number"); + l.length > 0 && (i.required = l); + } +}; +var hS = (e21, t, r, n) => { + let i = e21._zod.def, o = De(i.innerType, t, n), a = t.seen.get(e21); + t.target === "openapi-3.0" ? (a.ref = i.innerType, r.nullable = true) : r.anyOf = [o, { type: "null" }]; +}; +var vS = (e21, t, r, n) => { + let i = e21._zod.def; + De(i.innerType, t, n); + let o = t.seen.get(e21); + o.ref = i.innerType; +}; +var gS = (e21, t, r, n) => { + let i = e21._zod.def; + De(i.innerType, t, n); + let o = t.seen.get(e21); + o.ref = i.innerType, r.default = JSON.parse(JSON.stringify(i.defaultValue)); +}; +var yS = (e21, t, r, n) => { + let i = e21._zod.def; + De(i.innerType, t, n); + let o = t.seen.get(e21); + o.ref = i.innerType, t.io === "input" && (r._prefault = JSON.parse(JSON.stringify(i.defaultValue))); +}; +var xS = (e21, t, r, n) => { + let i = e21._zod.def; + De(i.innerType, t, n); + let o = t.seen.get(e21); + o.ref = i.innerType; + let a; + try { + a = i.catchValue(void 0); + } catch { + throw new Error("Dynamic catch values are not supported in JSON Schema"); + } + r.default = a; +}; +var bS = (e21, t, r, n) => { + let i = e21._zod.def, o = t.io === "input" ? i.in._zod.def.type === "transform" ? i.out : i.in : i.out; + De(o, t, n); + let a = t.seen.get(e21); + a.ref = o; +}; +var _S = (e21, t, r, n) => { + let i = e21._zod.def; + De(i.innerType, t, n); + let o = t.seen.get(e21); + o.ref = i.innerType, r.readOnly = true; +}; +var wS = (e21, t, r, n) => { + let i = e21._zod.def; + De(i.innerType, t, n); + let o = t.seen.get(e21); + o.ref = i.innerType; +}; +var pg = (e21, t, r, n) => { + let i = e21._zod.def; + De(i.innerType, t, n); + let o = t.seen.get(e21); + o.ref = i.innerType; +}; +var $S = (e21, t, r, n) => { + let i = e21._zod.innerType; + De(i, t, n); + let o = t.seen.get(e21); + o.ref = i; +}; +var Us = {}; +ns(Us, { ZodAny: () => MS, ZodArray: () => VS, ZodBase64: () => Cg, ZodBase64URL: () => Ng, ZodBigInt: () => up, ZodBigIntFormat: () => Ug, ZodBoolean: () => cp, ZodCIDRv4: () => Ag, ZodCIDRv6: () => Rg, ZodCUID: () => Eg, ZodCUID2: () => Og, ZodCatch: () => pk, ZodCodec: () => Hg, ZodCustom: () => mp, ZodCustomStringFormat: () => Ms, ZodDate: () => Mg, ZodDefault: () => ok, ZodDiscriminatedUnion: () => JS, ZodE164: () => Dg, ZodEmail: () => $g, ZodEmoji: () => Sg, ZodEnum: () => Ls, ZodExactOptional: () => rk, ZodFile: () => ek, ZodFunction: () => bk, ZodGUID: () => rp, ZodIPv4: () => Pg, ZodIPv6: () => jg, ZodIntersection: () => GS, ZodJWT: () => qg, ZodKSUID: () => zg, ZodLazy: () => gk, ZodLiteral: () => QS, ZodMAC: () => DS, ZodMap: () => XS, ZodNaN: () => fk, ZodNanoID: () => kg, ZodNever: () => ZS, ZodNonOptional: () => Bg, ZodNull: () => LS, ZodNullable: () => ik, ZodNumber: () => sp, ZodNumberFormat: () => wo, ZodObject: () => lp, ZodOptional: () => Zg, ZodPipe: () => Vg, ZodPrefault: () => sk, ZodPromise: () => xk, ZodReadonly: () => mk, ZodRecord: () => fp, ZodSet: () => YS, ZodString: () => op, ZodStringFormat: () => Pe, ZodSuccess: () => lk, ZodSymbol: () => qS, ZodTemplateLiteral: () => vk, ZodTransform: () => tk, ZodTuple: () => WS, ZodType: () => X, ZodULID: () => Tg, ZodURL: () => ap, ZodUUID: () => yn, ZodUndefined: () => US, ZodUnion: () => pp, ZodUnknown: () => FS, ZodVoid: () => BS, ZodXID: () => Ig, ZodXor: () => HS, _ZodString: () => wg, _default: () => ak, _function: () => w9, any: () => i9, array: () => ne, base64: () => MD, base64url: () => FD, bigint: () => QD, boolean: () => et, catch: () => dk, check: () => $9, cidrv4: () => UD, cidrv6: () => LD, codec: () => x9, cuid: () => PD, cuid2: () => jD, custom: () => Jg, date: () => a9, describe: () => S9, discriminatedUnion: () => dp, e164: () => ZD, email: () => _D, emoji: () => ID, enum: () => kt, exactOptional: () => nk, file: () => h9, float32: () => WD, float64: () => KD, function: () => w9, guid: () => wD, hash: () => GD, hex: () => JD, hostname: () => HD, httpUrl: () => TD, instanceof: () => E9, int: () => _g, int32: () => XD, int64: () => e9, intersection: () => Zs, ipv4: () => ND, ipv6: () => qD, json: () => T9, jwt: () => BD, keyof: () => s9, ksuid: () => CD, lazy: () => yk, literal: () => q, looseObject: () => St, looseRecord: () => p9, mac: () => DD, map: () => d9, meta: () => k9, nan: () => y9, nanoid: () => zD, nativeEnum: () => m9, never: () => Lg, nonoptional: () => uk, null: () => Fs, nullable: () => np, nullish: () => v9, number: () => me, object: () => P, optional: () => Fe, partialRecord: () => l9, pipe: () => ip, prefault: () => ck, preprocess: () => hp, promise: () => _9, readonly: () => hk, record: () => qe, refine: () => _k, set: () => f9, strictObject: () => c9, string: () => $, stringFormat: () => VD, stringbool: () => O9, success: () => g9, superRefine: () => wk, symbol: () => r9, templateLiteral: () => b9, transform: () => Fg, tuple: () => KS, uint32: () => YD, uint64: () => t9, ulid: () => AD, undefined: () => n9, union: () => Ee, unknown: () => je, url: () => OD, uuid: () => $D, uuidv4: () => SD, uuidv6: () => kD, uuidv7: () => ED, void: () => o9, xid: () => RD, xor: () => u9 }); +var tp = {}; +ns(tp, { endsWith: () => js, gt: () => vn, gte: () => Rt, includes: () => zs, length: () => bo, lowercase: () => Ts, lt: () => hn, lte: () => pr, maxLength: () => xo, maxSize: () => Si, mime: () => As, minLength: () => Ln, minSize: () => gn, multipleOf: () => $i, negative: () => Qv, nonnegative: () => tg, nonpositive: () => eg, normalize: () => Rs, overwrite: () => Kr, positive: () => Yv, property: () => rg, regex: () => Os, size: () => yo, slugify: () => Xl, startsWith: () => Ps, toLowerCase: () => Ns, toUpperCase: () => Ds, trim: () => Cs, uppercase: () => Is }); +var ki = {}; +ns(ki, { ZodISODate: () => hg, ZodISODateTime: () => fg, ZodISODuration: () => xg, ZodISOTime: () => gg, date: () => vg, datetime: () => mg, duration: () => bg, time: () => yg }); +var fg = b("ZodISODateTime", (e21, t) => { + Oh.init(e21, t), Pe.init(e21, t); +}); +function mg(e21) { + return Iv(fg, e21); +} +var hg = b("ZodISODate", (e21, t) => { + Th.init(e21, t), Pe.init(e21, t); +}); +function vg(e21) { + return zv(hg, e21); +} +var gg = b("ZodISOTime", (e21, t) => { + Ih.init(e21, t), Pe.init(e21, t); +}); +function yg(e21) { + return Pv(gg, e21); +} +var xg = b("ZodISODuration", (e21, t) => { + zh.init(e21, t), Pe.init(e21, t); +}); +function bg(e21) { + return jv(xg, e21); +} +var SS = (e21, t) => { + vl.init(e21, t), e21.name = "ZodError", Object.defineProperties(e21, { format: { value: (r) => yl(e21, r) }, flatten: { value: (r) => gl(e21, r) }, addIssue: { value: (r) => { + e21.issues.push(r), e21.message = JSON.stringify(e21.issues, mo, 2); + } }, addIssues: { value: (r) => { + e21.issues.push(...r), e21.message = JSON.stringify(e21.issues, mo, 2); + } }, isEmpty: { get() { + return e21.issues.length === 0; + } } }); +}; +var xle = b("ZodError", SS); +var dr = b("ZodError", SS, { Parent: Error }); +var kS = ds(dr); +var ES = ms(dr); +var OS = vs(dr); +var TS = gs(dr); +var IS = M1(dr); +var zS = F1(dr); +var PS = Z1(dr); +var jS = B1(dr); +var AS = V1(dr); +var RS = H1(dr); +var CS = J1(dr); +var NS = G1(dr); +var X = b("ZodType", (e21, t) => (G.init(e21, t), Object.assign(e21["~standard"], { jsonSchema: { input: qs(e21, "input"), output: qs(e21, "output") } }), e21.toJSONSchema = L$(e21, {}), e21.def = t, e21.type = t.type, Object.defineProperty(e21, "_def", { value: t }), e21.check = (...r) => e21.clone(T.mergeDefs(t, { checks: [...t.checks ?? [], ...r.map((n) => typeof n == "function" ? { _zod: { check: n, def: { check: "custom" }, onattach: [] } } : n)] }), { parent: true }), e21.with = e21.check, e21.clone = (r, n) => jt(e21, r, n), e21.brand = () => e21, e21.register = (r, n) => (r.add(e21, n), e21), e21.parse = (r, n) => kS(e21, r, n, { callee: e21.parse }), e21.safeParse = (r, n) => OS(e21, r, n), e21.parseAsync = async (r, n) => ES(e21, r, n, { callee: e21.parseAsync }), e21.safeParseAsync = async (r, n) => TS(e21, r, n), e21.spa = e21.safeParseAsync, e21.encode = (r, n) => IS(e21, r, n), e21.decode = (r, n) => zS(e21, r, n), e21.encodeAsync = async (r, n) => PS(e21, r, n), e21.decodeAsync = async (r, n) => jS(e21, r, n), e21.safeEncode = (r, n) => AS(e21, r, n), e21.safeDecode = (r, n) => RS(e21, r, n), e21.safeEncodeAsync = async (r, n) => CS(e21, r, n), e21.safeDecodeAsync = async (r, n) => NS(e21, r, n), e21.refine = (r, n) => e21.check(_k(r, n)), e21.superRefine = (r) => e21.check(wk(r)), e21.overwrite = (r) => e21.check(Kr(r)), e21.optional = () => Fe(e21), e21.exactOptional = () => nk(e21), e21.nullable = () => np(e21), e21.nullish = () => Fe(np(e21)), e21.nonoptional = (r) => uk(e21, r), e21.array = () => ne(e21), e21.or = (r) => Ee([e21, r]), e21.and = (r) => Zs(e21, r), e21.transform = (r) => ip(e21, Fg(r)), e21.default = (r) => ak(e21, r), e21.prefault = (r) => ck(e21, r), e21.catch = (r) => dk(e21, r), e21.pipe = (r) => ip(e21, r), e21.readonly = () => hk(e21), e21.describe = (r) => { + let n = e21.clone(); + return At.add(n, { description: r }), n; +}, Object.defineProperty(e21, "description", { get() { + return At.get(e21)?.description; +}, configurable: true }), e21.meta = (...r) => { + if (r.length === 0) return At.get(e21); + let n = e21.clone(); + return At.add(n, r[0]), n; +}, e21.isOptional = () => e21.safeParse(void 0).success, e21.isNullable = () => e21.safeParse(null).success, e21.apply = (r) => r(e21), e21)); +var wg = b("_ZodString", (e21, t) => { + wi.init(e21, t), X.init(e21, t), e21._zod.processJSONSchema = (n, i, o) => M$(e21, n, i, o); + let r = e21._zod.bag; + e21.format = r.format ?? null, e21.minLength = r.minimum ?? null, e21.maxLength = r.maximum ?? null, e21.regex = (...n) => e21.check(Os(...n)), e21.includes = (...n) => e21.check(zs(...n)), e21.startsWith = (...n) => e21.check(Ps(...n)), e21.endsWith = (...n) => e21.check(js(...n)), e21.min = (...n) => e21.check(Ln(...n)), e21.max = (...n) => e21.check(xo(...n)), e21.length = (...n) => e21.check(bo(...n)), e21.nonempty = (...n) => e21.check(Ln(1, ...n)), e21.lowercase = (n) => e21.check(Ts(n)), e21.uppercase = (n) => e21.check(Is(n)), e21.trim = () => e21.check(Cs()), e21.normalize = (...n) => e21.check(Rs(...n)), e21.toLowerCase = () => e21.check(Ns()), e21.toUpperCase = () => e21.check(Ds()), e21.slugify = () => e21.check(Xl()); +}); +var op = b("ZodString", (e21, t) => { + wi.init(e21, t), wg.init(e21, t), e21.email = (r) => e21.check(Pl($g, r)), e21.url = (r) => e21.check(Es(ap, r)), e21.jwt = (r) => e21.check(Kl(qg, r)), e21.emoji = (r) => e21.check(Nl(Sg, r)), e21.guid = (r) => e21.check(ks(rp, r)), e21.uuid = (r) => e21.check(jl(yn, r)), e21.uuidv4 = (r) => e21.check(Al(yn, r)), e21.uuidv6 = (r) => e21.check(Rl(yn, r)), e21.uuidv7 = (r) => e21.check(Cl(yn, r)), e21.nanoid = (r) => e21.check(Dl(kg, r)), e21.guid = (r) => e21.check(ks(rp, r)), e21.cuid = (r) => e21.check(ql(Eg, r)), e21.cuid2 = (r) => e21.check(Ul(Og, r)), e21.ulid = (r) => e21.check(Ll(Tg, r)), e21.base64 = (r) => e21.check(Jl(Cg, r)), e21.base64url = (r) => e21.check(Gl(Ng, r)), e21.xid = (r) => e21.check(Ml(Ig, r)), e21.ksuid = (r) => e21.check(Fl(zg, r)), e21.ipv4 = (r) => e21.check(Zl(Pg, r)), e21.ipv6 = (r) => e21.check(Bl(jg, r)), e21.cidrv4 = (r) => e21.check(Vl(Ag, r)), e21.cidrv6 = (r) => e21.check(Hl(Rg, r)), e21.e164 = (r) => e21.check(Wl(Dg, r)), e21.datetime = (r) => e21.check(mg(r)), e21.date = (r) => e21.check(vg(r)), e21.time = (r) => e21.check(yg(r)), e21.duration = (r) => e21.check(bg(r)); +}); +function $(e21) { + return Ov(op, e21); +} +var Pe = b("ZodStringFormat", (e21, t) => { + ke.init(e21, t), wg.init(e21, t); +}); +var $g = b("ZodEmail", (e21, t) => { + yh.init(e21, t), Pe.init(e21, t); +}); +function _D(e21) { + return Pl($g, e21); +} +var rp = b("ZodGUID", (e21, t) => { + vh.init(e21, t), Pe.init(e21, t); +}); +function wD(e21) { + return ks(rp, e21); +} +var yn = b("ZodUUID", (e21, t) => { + gh.init(e21, t), Pe.init(e21, t); +}); +function $D(e21) { + return jl(yn, e21); +} +function SD(e21) { + return Al(yn, e21); +} +function kD(e21) { + return Rl(yn, e21); +} +function ED(e21) { + return Cl(yn, e21); +} +var ap = b("ZodURL", (e21, t) => { + xh.init(e21, t), Pe.init(e21, t); +}); +function OD(e21) { + return Es(ap, e21); +} +function TD(e21) { + return Es(ap, { protocol: /^https?$/, hostname: yr.domain, ...T.normalizeParams(e21) }); +} +var Sg = b("ZodEmoji", (e21, t) => { + bh.init(e21, t), Pe.init(e21, t); +}); +function ID(e21) { + return Nl(Sg, e21); +} +var kg = b("ZodNanoID", (e21, t) => { + _h.init(e21, t), Pe.init(e21, t); +}); +function zD(e21) { + return Dl(kg, e21); +} +var Eg = b("ZodCUID", (e21, t) => { + wh.init(e21, t), Pe.init(e21, t); +}); +function PD(e21) { + return ql(Eg, e21); +} +var Og = b("ZodCUID2", (e21, t) => { + $h.init(e21, t), Pe.init(e21, t); +}); +function jD(e21) { + return Ul(Og, e21); +} +var Tg = b("ZodULID", (e21, t) => { + Sh.init(e21, t), Pe.init(e21, t); +}); +function AD(e21) { + return Ll(Tg, e21); +} +var Ig = b("ZodXID", (e21, t) => { + kh.init(e21, t), Pe.init(e21, t); +}); +function RD(e21) { + return Ml(Ig, e21); +} +var zg = b("ZodKSUID", (e21, t) => { + Eh.init(e21, t), Pe.init(e21, t); +}); +function CD(e21) { + return Fl(zg, e21); +} +var Pg = b("ZodIPv4", (e21, t) => { + Ph.init(e21, t), Pe.init(e21, t); +}); +function ND(e21) { + return Zl(Pg, e21); +} +var DS = b("ZodMAC", (e21, t) => { + Ah.init(e21, t), Pe.init(e21, t); +}); +function DD(e21) { + return Tv(DS, e21); +} +var jg = b("ZodIPv6", (e21, t) => { + jh.init(e21, t), Pe.init(e21, t); +}); +function qD(e21) { + return Bl(jg, e21); +} +var Ag = b("ZodCIDRv4", (e21, t) => { + Rh.init(e21, t), Pe.init(e21, t); +}); +function UD(e21) { + return Vl(Ag, e21); +} +var Rg = b("ZodCIDRv6", (e21, t) => { + Ch.init(e21, t), Pe.init(e21, t); +}); +function LD(e21) { + return Hl(Rg, e21); +} +var Cg = b("ZodBase64", (e21, t) => { + Nh.init(e21, t), Pe.init(e21, t); +}); +function MD(e21) { + return Jl(Cg, e21); +} +var Ng = b("ZodBase64URL", (e21, t) => { + Dh.init(e21, t), Pe.init(e21, t); +}); +function FD(e21) { + return Gl(Ng, e21); +} +var Dg = b("ZodE164", (e21, t) => { + qh.init(e21, t), Pe.init(e21, t); +}); +function ZD(e21) { + return Wl(Dg, e21); +} +var qg = b("ZodJWT", (e21, t) => { + Uh.init(e21, t), Pe.init(e21, t); +}); +function BD(e21) { + return Kl(qg, e21); +} +var Ms = b("ZodCustomStringFormat", (e21, t) => { + Lh.init(e21, t), Pe.init(e21, t); +}); +function VD(e21, t, r = {}) { + return _o(Ms, e21, t, r); +} +function HD(e21) { + return _o(Ms, "hostname", yr.hostname, e21); +} +function JD(e21) { + return _o(Ms, "hex", yr.hex, e21); +} +function GD(e21, t) { + let r = t?.enc ?? "hex", n = `${e21}_${r}`, i = yr[n]; + if (!i) throw new Error(`Unrecognized hash format: ${n}`); + return _o(Ms, n, i, t); +} +var sp = b("ZodNumber", (e21, t) => { + Ol.init(e21, t), X.init(e21, t), e21._zod.processJSONSchema = (n, i, o) => F$(e21, n, i, o), e21.gt = (n, i) => e21.check(vn(n, i)), e21.gte = (n, i) => e21.check(Rt(n, i)), e21.min = (n, i) => e21.check(Rt(n, i)), e21.lt = (n, i) => e21.check(hn(n, i)), e21.lte = (n, i) => e21.check(pr(n, i)), e21.max = (n, i) => e21.check(pr(n, i)), e21.int = (n) => e21.check(_g(n)), e21.safe = (n) => e21.check(_g(n)), e21.positive = (n) => e21.check(vn(0, n)), e21.nonnegative = (n) => e21.check(Rt(0, n)), e21.negative = (n) => e21.check(hn(0, n)), e21.nonpositive = (n) => e21.check(pr(0, n)), e21.multipleOf = (n, i) => e21.check($i(n, i)), e21.step = (n, i) => e21.check($i(n, i)), e21.finite = () => e21; + let r = e21._zod.bag; + e21.minValue = Math.max(r.minimum ?? Number.NEGATIVE_INFINITY, r.exclusiveMinimum ?? Number.NEGATIVE_INFINITY) ?? null, e21.maxValue = Math.min(r.maximum ?? Number.POSITIVE_INFINITY, r.exclusiveMaximum ?? Number.POSITIVE_INFINITY) ?? null, e21.isInt = (r.format ?? "").includes("int") || Number.isSafeInteger(r.multipleOf ?? 0.5), e21.isFinite = true, e21.format = r.format ?? null; +}); +function me(e21) { + return Av(sp, e21); +} +var wo = b("ZodNumberFormat", (e21, t) => { + Mh.init(e21, t), sp.init(e21, t); +}); +function _g(e21) { + return Rv(wo, e21); +} +function WD(e21) { + return Cv(wo, e21); +} +function KD(e21) { + return Nv(wo, e21); +} +function XD(e21) { + return Dv(wo, e21); +} +function YD(e21) { + return qv(wo, e21); +} +var cp = b("ZodBoolean", (e21, t) => { + ws.init(e21, t), X.init(e21, t), e21._zod.processJSONSchema = (r, n, i) => Z$(e21, r, n, i); +}); +function et(e21) { + return Uv(cp, e21); +} +var up = b("ZodBigInt", (e21, t) => { + Tl.init(e21, t), X.init(e21, t), e21._zod.processJSONSchema = (n, i, o) => B$(e21, n, i, o), e21.gte = (n, i) => e21.check(Rt(n, i)), e21.min = (n, i) => e21.check(Rt(n, i)), e21.gt = (n, i) => e21.check(vn(n, i)), e21.gte = (n, i) => e21.check(Rt(n, i)), e21.min = (n, i) => e21.check(Rt(n, i)), e21.lt = (n, i) => e21.check(hn(n, i)), e21.lte = (n, i) => e21.check(pr(n, i)), e21.max = (n, i) => e21.check(pr(n, i)), e21.positive = (n) => e21.check(vn(BigInt(0), n)), e21.negative = (n) => e21.check(hn(BigInt(0), n)), e21.nonpositive = (n) => e21.check(pr(BigInt(0), n)), e21.nonnegative = (n) => e21.check(Rt(BigInt(0), n)), e21.multipleOf = (n, i) => e21.check($i(n, i)); + let r = e21._zod.bag; + e21.minValue = r.minimum ?? null, e21.maxValue = r.maximum ?? null, e21.format = r.format ?? null; +}); +function QD(e21) { + return Lv(up, e21); +} +var Ug = b("ZodBigIntFormat", (e21, t) => { + Fh.init(e21, t), up.init(e21, t); +}); +function e9(e21) { + return Mv(Ug, e21); +} +function t9(e21) { + return Fv(Ug, e21); +} +var qS = b("ZodSymbol", (e21, t) => { + Zh.init(e21, t), X.init(e21, t), e21._zod.processJSONSchema = (r, n, i) => V$(e21, r, n, i); +}); +function r9(e21) { + return Zv(qS, e21); +} +var US = b("ZodUndefined", (e21, t) => { + Bh.init(e21, t), X.init(e21, t), e21._zod.processJSONSchema = (r, n, i) => J$(e21, r, n, i); +}); +function n9(e21) { + return Bv(US, e21); +} +var LS = b("ZodNull", (e21, t) => { + Vh.init(e21, t), X.init(e21, t), e21._zod.processJSONSchema = (r, n, i) => H$(e21, r, n, i); +}); +function Fs(e21) { + return Vv(LS, e21); +} +var MS = b("ZodAny", (e21, t) => { + Hh.init(e21, t), X.init(e21, t), e21._zod.processJSONSchema = (r, n, i) => K$(e21, r, n, i); +}); +function i9() { + return Hv(MS); +} +var FS = b("ZodUnknown", (e21, t) => { + Jh.init(e21, t), X.init(e21, t), e21._zod.processJSONSchema = (r, n, i) => X$(e21, r, n, i); +}); +function je() { + return Jv(FS); +} +var ZS = b("ZodNever", (e21, t) => { + Gh.init(e21, t), X.init(e21, t), e21._zod.processJSONSchema = (r, n, i) => W$(e21, r, n, i); +}); +function Lg(e21) { + return Gv(ZS, e21); +} +var BS = b("ZodVoid", (e21, t) => { + Wh.init(e21, t), X.init(e21, t), e21._zod.processJSONSchema = (r, n, i) => G$(e21, r, n, i); +}); +function o9(e21) { + return Wv(BS, e21); +} +var Mg = b("ZodDate", (e21, t) => { + Kh.init(e21, t), X.init(e21, t), e21._zod.processJSONSchema = (n, i, o) => Y$(e21, n, i, o), e21.min = (n, i) => e21.check(Rt(n, i)), e21.max = (n, i) => e21.check(pr(n, i)); + let r = e21._zod.bag; + e21.minDate = r.minimum ? new Date(r.minimum) : null, e21.maxDate = r.maximum ? new Date(r.maximum) : null; +}); +function a9(e21) { + return Kv(Mg, e21); +} +var VS = b("ZodArray", (e21, t) => { + Xh.init(e21, t), X.init(e21, t), e21._zod.processJSONSchema = (r, n, i) => lS(e21, r, n, i), e21.element = t.element, e21.min = (r, n) => e21.check(Ln(r, n)), e21.nonempty = (r) => e21.check(Ln(1, r)), e21.max = (r, n) => e21.check(xo(r, n)), e21.length = (r, n) => e21.check(bo(r, n)), e21.unwrap = () => e21.element; +}); +function ne(e21, t) { + return U$(VS, e21, t); +} +function s9(e21) { + let t = e21._zod.def.shape; + return kt(Object.keys(t)); +} +var lp = b("ZodObject", (e21, t) => { + C$.init(e21, t), X.init(e21, t), e21._zod.processJSONSchema = (r, n, i) => pS(e21, r, n, i), T.defineLazy(e21, "shape", () => t.shape), e21.keyof = () => kt(Object.keys(e21._zod.def.shape)), e21.catchall = (r) => e21.clone({ ...e21._zod.def, catchall: r }), e21.passthrough = () => e21.clone({ ...e21._zod.def, catchall: je() }), e21.loose = () => e21.clone({ ...e21._zod.def, catchall: je() }), e21.strict = () => e21.clone({ ...e21._zod.def, catchall: Lg() }), e21.strip = () => e21.clone({ ...e21._zod.def, catchall: void 0 }), e21.extend = (r) => T.extend(e21, r), e21.safeExtend = (r) => T.safeExtend(e21, r), e21.merge = (r) => T.merge(e21, r), e21.pick = (r) => T.pick(e21, r), e21.omit = (r) => T.omit(e21, r), e21.partial = (...r) => T.partial(Zg, e21, r[0]), e21.required = (...r) => T.required(Bg, e21, r[0]); +}); +function P(e21, t) { + let r = { type: "object", shape: e21 ?? {}, ...T.normalizeParams(t) }; + return new lp(r); +} +function c9(e21, t) { + return new lp({ type: "object", shape: e21, catchall: Lg(), ...T.normalizeParams(t) }); +} +function St(e21, t) { + return new lp({ type: "object", shape: e21, catchall: je(), ...T.normalizeParams(t) }); +} +var pp = b("ZodUnion", (e21, t) => { + $s.init(e21, t), X.init(e21, t), e21._zod.processJSONSchema = (r, n, i) => lg(e21, r, n, i), e21.options = t.options; +}); +function Ee(e21, t) { + return new pp({ type: "union", options: e21, ...T.normalizeParams(t) }); +} +var HS = b("ZodXor", (e21, t) => { + pp.init(e21, t), Yh.init(e21, t), e21._zod.processJSONSchema = (r, n, i) => lg(e21, r, n, i), e21.options = t.options; +}); +function u9(e21, t) { + return new HS({ type: "union", options: e21, inclusive: false, ...T.normalizeParams(t) }); +} +var JS = b("ZodDiscriminatedUnion", (e21, t) => { + pp.init(e21, t), Qh.init(e21, t); +}); +function dp(e21, t, r) { + return new JS({ type: "union", options: t, discriminator: e21, ...T.normalizeParams(r) }); +} +var GS = b("ZodIntersection", (e21, t) => { + ev.init(e21, t), X.init(e21, t), e21._zod.processJSONSchema = (r, n, i) => dS(e21, r, n, i); +}); +function Zs(e21, t) { + return new GS({ type: "intersection", left: e21, right: t }); +} +var WS = b("ZodTuple", (e21, t) => { + Il.init(e21, t), X.init(e21, t), e21._zod.processJSONSchema = (r, n, i) => fS(e21, r, n, i), e21.rest = (r) => e21.clone({ ...e21._zod.def, rest: r }); +}); +function KS(e21, t, r) { + let n = t instanceof G, i = n ? r : t, o = n ? t : null; + return new WS({ type: "tuple", items: e21, rest: o, ...T.normalizeParams(i) }); +} +var fp = b("ZodRecord", (e21, t) => { + tv.init(e21, t), X.init(e21, t), e21._zod.processJSONSchema = (r, n, i) => mS(e21, r, n, i), e21.keyType = t.keyType, e21.valueType = t.valueType; +}); +function qe(e21, t, r) { + return new fp({ type: "record", keyType: e21, valueType: t, ...T.normalizeParams(r) }); +} +function l9(e21, t, r) { + let n = jt(e21); + return n._zod.values = void 0, new fp({ type: "record", keyType: n, valueType: t, ...T.normalizeParams(r) }); +} +function p9(e21, t, r) { + return new fp({ type: "record", keyType: e21, valueType: t, mode: "loose", ...T.normalizeParams(r) }); +} +var XS = b("ZodMap", (e21, t) => { + rv.init(e21, t), X.init(e21, t), e21._zod.processJSONSchema = (r, n, i) => cS(e21, r, n, i), e21.keyType = t.keyType, e21.valueType = t.valueType, e21.min = (...r) => e21.check(gn(...r)), e21.nonempty = (r) => e21.check(gn(1, r)), e21.max = (...r) => e21.check(Si(...r)), e21.size = (...r) => e21.check(yo(...r)); +}); +function d9(e21, t, r) { + return new XS({ type: "map", keyType: e21, valueType: t, ...T.normalizeParams(r) }); +} +var YS = b("ZodSet", (e21, t) => { + nv.init(e21, t), X.init(e21, t), e21._zod.processJSONSchema = (r, n, i) => uS(e21, r, n, i), e21.min = (...r) => e21.check(gn(...r)), e21.nonempty = (r) => e21.check(gn(1, r)), e21.max = (...r) => e21.check(Si(...r)), e21.size = (...r) => e21.check(yo(...r)); +}); +function f9(e21, t) { + return new YS({ type: "set", valueType: e21, ...T.normalizeParams(t) }); +} +var Ls = b("ZodEnum", (e21, t) => { + iv.init(e21, t), X.init(e21, t), e21._zod.processJSONSchema = (n, i, o) => Q$(e21, n, i, o), e21.enum = t.entries, e21.options = Object.values(t.entries); + let r = new Set(Object.keys(t.entries)); + e21.extract = (n, i) => { + let o = {}; + for (let a of n) if (r.has(a)) o[a] = t.entries[a]; + else throw new Error(`Key ${a} not found in enum`); + return new Ls({ ...t, checks: [], ...T.normalizeParams(i), entries: o }); + }, e21.exclude = (n, i) => { + let o = { ...t.entries }; + for (let a of n) if (r.has(a)) delete o[a]; + else throw new Error(`Key ${a} not found in enum`); + return new Ls({ ...t, checks: [], ...T.normalizeParams(i), entries: o }); + }; +}); +function kt(e21, t) { + let r = Array.isArray(e21) ? Object.fromEntries(e21.map((n) => [n, n])) : e21; + return new Ls({ type: "enum", entries: r, ...T.normalizeParams(t) }); +} +function m9(e21, t) { + return new Ls({ type: "enum", entries: e21, ...T.normalizeParams(t) }); +} +var QS = b("ZodLiteral", (e21, t) => { + ov.init(e21, t), X.init(e21, t), e21._zod.processJSONSchema = (r, n, i) => eS(e21, r, n, i), e21.values = new Set(t.values), Object.defineProperty(e21, "value", { get() { + if (t.values.length > 1) throw new Error("This schema contains multiple valid literal values. Use `.values` instead."); + return t.values[0]; + } }); +}); +function q(e21, t) { + return new QS({ type: "literal", values: Array.isArray(e21) ? e21 : [e21], ...T.normalizeParams(t) }); +} +var ek = b("ZodFile", (e21, t) => { + av.init(e21, t), X.init(e21, t), e21._zod.processJSONSchema = (r, n, i) => nS(e21, r, n, i), e21.min = (r, n) => e21.check(gn(r, n)), e21.max = (r, n) => e21.check(Si(r, n)), e21.mime = (r, n) => e21.check(As(Array.isArray(r) ? r : [r], n)); +}); +function h9(e21) { + return ng(ek, e21); +} +var tk = b("ZodTransform", (e21, t) => { + sv.init(e21, t), X.init(e21, t), e21._zod.processJSONSchema = (r, n, i) => sS(e21, r, n, i), e21._zod.parse = (r, n) => { + if (n.direction === "backward") throw new xi(e21.constructor.name); + r.addIssue = (o) => { + if (typeof o == "string") r.issues.push(T.issue(o, r.value, t)); + else { + let a = o; + a.fatal && (a.continue = false), a.code ?? (a.code = "custom"), a.input ?? (a.input = r.value), a.inst ?? (a.inst = e21), r.issues.push(T.issue(a)); + } + }; + let i = t.transform(r.value, r); + return i instanceof Promise ? i.then((o) => (r.value = o, r)) : (r.value = i, r); + }; +}); +function Fg(e21) { + return new tk({ type: "transform", transform: e21 }); +} +var Zg = b("ZodOptional", (e21, t) => { + zl.init(e21, t), X.init(e21, t), e21._zod.processJSONSchema = (r, n, i) => pg(e21, r, n, i), e21.unwrap = () => e21._zod.def.innerType; +}); +function Fe(e21) { + return new Zg({ type: "optional", innerType: e21 }); +} +var rk = b("ZodExactOptional", (e21, t) => { + cv.init(e21, t), X.init(e21, t), e21._zod.processJSONSchema = (r, n, i) => pg(e21, r, n, i), e21.unwrap = () => e21._zod.def.innerType; +}); +function nk(e21) { + return new rk({ type: "optional", innerType: e21 }); +} +var ik = b("ZodNullable", (e21, t) => { + uv.init(e21, t), X.init(e21, t), e21._zod.processJSONSchema = (r, n, i) => hS(e21, r, n, i), e21.unwrap = () => e21._zod.def.innerType; +}); +function np(e21) { + return new ik({ type: "nullable", innerType: e21 }); +} +function v9(e21) { + return Fe(np(e21)); +} +var ok = b("ZodDefault", (e21, t) => { + lv.init(e21, t), X.init(e21, t), e21._zod.processJSONSchema = (r, n, i) => gS(e21, r, n, i), e21.unwrap = () => e21._zod.def.innerType, e21.removeDefault = e21.unwrap; +}); +function ak(e21, t) { + return new ok({ type: "default", innerType: e21, get defaultValue() { + return typeof t == "function" ? t() : T.shallowClone(t); + } }); +} +var sk = b("ZodPrefault", (e21, t) => { + pv.init(e21, t), X.init(e21, t), e21._zod.processJSONSchema = (r, n, i) => yS(e21, r, n, i), e21.unwrap = () => e21._zod.def.innerType; +}); +function ck(e21, t) { + return new sk({ type: "prefault", innerType: e21, get defaultValue() { + return typeof t == "function" ? t() : T.shallowClone(t); + } }); +} +var Bg = b("ZodNonOptional", (e21, t) => { + dv.init(e21, t), X.init(e21, t), e21._zod.processJSONSchema = (r, n, i) => vS(e21, r, n, i), e21.unwrap = () => e21._zod.def.innerType; +}); +function uk(e21, t) { + return new Bg({ type: "nonoptional", innerType: e21, ...T.normalizeParams(t) }); +} +var lk = b("ZodSuccess", (e21, t) => { + fv.init(e21, t), X.init(e21, t), e21._zod.processJSONSchema = (r, n, i) => iS(e21, r, n, i), e21.unwrap = () => e21._zod.def.innerType; +}); +function g9(e21) { + return new lk({ type: "success", innerType: e21 }); +} +var pk = b("ZodCatch", (e21, t) => { + mv.init(e21, t), X.init(e21, t), e21._zod.processJSONSchema = (r, n, i) => xS(e21, r, n, i), e21.unwrap = () => e21._zod.def.innerType, e21.removeCatch = e21.unwrap; +}); +function dk(e21, t) { + return new pk({ type: "catch", innerType: e21, catchValue: typeof t == "function" ? t : () => t }); +} +var fk = b("ZodNaN", (e21, t) => { + hv.init(e21, t), X.init(e21, t), e21._zod.processJSONSchema = (r, n, i) => tS(e21, r, n, i); +}); +function y9(e21) { + return Xv(fk, e21); +} +var Vg = b("ZodPipe", (e21, t) => { + vv.init(e21, t), X.init(e21, t), e21._zod.processJSONSchema = (r, n, i) => bS(e21, r, n, i), e21.in = t.in, e21.out = t.out; +}); +function ip(e21, t) { + return new Vg({ type: "pipe", in: e21, out: t }); +} +var Hg = b("ZodCodec", (e21, t) => { + Vg.init(e21, t), Ss.init(e21, t); +}); +function x9(e21, t, r) { + return new Hg({ type: "pipe", in: e21, out: t, transform: r.decode, reverseTransform: r.encode }); +} +var mk = b("ZodReadonly", (e21, t) => { + gv.init(e21, t), X.init(e21, t), e21._zod.processJSONSchema = (r, n, i) => _S(e21, r, n, i), e21.unwrap = () => e21._zod.def.innerType; +}); +function hk(e21) { + return new mk({ type: "readonly", innerType: e21 }); +} +var vk = b("ZodTemplateLiteral", (e21, t) => { + yv.init(e21, t), X.init(e21, t), e21._zod.processJSONSchema = (r, n, i) => rS(e21, r, n, i); +}); +function b9(e21, t) { + return new vk({ type: "template_literal", parts: e21, ...T.normalizeParams(t) }); +} +var gk = b("ZodLazy", (e21, t) => { + _v.init(e21, t), X.init(e21, t), e21._zod.processJSONSchema = (r, n, i) => $S(e21, r, n, i), e21.unwrap = () => e21._zod.def.getter(); +}); +function yk(e21) { + return new gk({ type: "lazy", getter: e21 }); +} +var xk = b("ZodPromise", (e21, t) => { + bv.init(e21, t), X.init(e21, t), e21._zod.processJSONSchema = (r, n, i) => wS(e21, r, n, i), e21.unwrap = () => e21._zod.def.innerType; +}); +function _9(e21) { + return new xk({ type: "promise", innerType: e21 }); +} +var bk = b("ZodFunction", (e21, t) => { + xv.init(e21, t), X.init(e21, t), e21._zod.processJSONSchema = (r, n, i) => aS(e21, r, n, i); +}); +function w9(e21) { + return new bk({ type: "function", input: Array.isArray(e21?.input) ? KS(e21?.input) : e21?.input ?? ne(je()), output: e21?.output ?? je() }); +} +var mp = b("ZodCustom", (e21, t) => { + wv.init(e21, t), X.init(e21, t), e21._zod.processJSONSchema = (r, n, i) => oS(e21, r, n, i); +}); +function $9(e21) { + let t = new ze({ check: "custom" }); + return t._zod.check = e21, t; +} +function Jg(e21, t) { + return ig(mp, e21 ?? (() => true), t); +} +function _k(e21, t = {}) { + return og(mp, e21, t); +} +function wk(e21) { + return ag(e21); +} +var S9 = sg; +var k9 = cg; +function E9(e21, t = {}) { + let r = new mp({ type: "custom", check: "custom", fn: (n) => n instanceof e21, abort: true, ...T.normalizeParams(t) }); + return r._zod.bag.Class = e21, r._zod.check = (n) => { + n.value instanceof e21 || n.issues.push({ code: "invalid_type", expected: e21.name, input: n.value, inst: r, path: [...r._zod.def.path ?? []] }); + }, r; +} +var O9 = (...e21) => ug({ Codec: Hg, Boolean: cp, String: op }, ...e21); +function T9(e21) { + let t = yk(() => Ee([$(e21), me(), et(), Fs(), ne(t), qe($(), t)])); + return t; +} +function hp(e21, t) { + return ip(Fg(e21), t); +} +var $k; +$k || ($k = {}); +var Ole = { ...Us, ...tp, iso: ki }; +ct($v()); +var Wg = "2025-11-25"; +var Sk = "2025-03-26"; +var Bs = [Wg, "2025-06-18", "2025-03-26", "2024-11-05", "2024-10-07"]; +var Mn = "io.modelcontextprotocol/related-task"; +var gp = "2.0"; +var gt = Jg((e21) => e21 !== null && (typeof e21 == "object" || typeof e21 == "function")); +var kk = Ee([$(), me().int()]); +var Ek = $(); +var Hle = St({ ttl: Ee([me(), Fs()]).optional(), pollInterval: me().optional() }); +var L9 = P({ ttl: me().optional() }); +var M9 = P({ taskId: $() }); +var Kg = St({ progressToken: kk.optional(), [Mn]: M9.optional() }); +var fr = P({ _meta: Kg.optional() }); +var Vs = fr.extend({ task: L9.optional() }); +var Ok = (e21) => Vs.safeParse(e21).success; +var yt = P({ method: $(), params: fr.loose().optional() }); +var xr = P({ _meta: Kg.optional() }); +var br = P({ method: $(), params: xr.loose().optional() }); +var xt = St({ _meta: Kg.optional() }); +var yp = Ee([$(), me().int()]); +var Tk = P({ jsonrpc: q(gp), id: yp, ...yt.shape }).strict(); +var Fn = (e21) => Tk.safeParse(e21).success; +var Ik = P({ jsonrpc: q(gp), ...br.shape }).strict(); +var zk = (e21) => Ik.safeParse(e21).success; +var Xg = P({ jsonrpc: q(gp), id: yp, result: xt }).strict(); +var xn = (e21) => Xg.safeParse(e21).success; +var se; +(function(e21) { + e21[e21.ConnectionClosed = -32e3] = "ConnectionClosed", e21[e21.RequestTimeout = -32001] = "RequestTimeout", e21[e21.ParseError = -32700] = "ParseError", e21[e21.InvalidRequest = -32600] = "InvalidRequest", e21[e21.MethodNotFound = -32601] = "MethodNotFound", e21[e21.InvalidParams = -32602] = "InvalidParams", e21[e21.InternalError = -32603] = "InternalError", e21[e21.UrlElicitationRequired = -32042] = "UrlElicitationRequired"; +})(se || (se = {})); +var Yg = P({ jsonrpc: q(gp), id: yp.optional(), error: P({ code: me().int(), message: $(), data: je().optional() }) }).strict(); +var So = (e21) => Yg.safeParse(e21).success; +var Hs = Ee([Tk, Ik, Xg, Yg]); +var Jle = Ee([Xg, Yg]); +var xp = xt.strict(); +var F9 = xr.extend({ requestId: yp.optional(), reason: $().optional() }); +var bp = br.extend({ method: q("notifications/cancelled"), params: F9 }); +var Z9 = P({ src: $(), mimeType: $().optional(), sizes: ne($()).optional(), theme: kt(["light", "dark"]).optional() }); +var Js = P({ icons: ne(Z9).optional() }); +var $o = P({ name: $(), title: $().optional() }); +var Pk = $o.extend({ ...$o.shape, ...Js.shape, version: $(), websiteUrl: $().optional(), description: $().optional() }); +var B9 = Zs(P({ applyDefaults: et().optional() }), qe($(), je())); +var V9 = hp((e21) => e21 && typeof e21 == "object" && !Array.isArray(e21) && Object.keys(e21).length === 0 ? { form: {} } : e21, Zs(P({ form: B9.optional(), url: gt.optional() }), qe($(), je()).optional())); +var H9 = St({ list: gt.optional(), cancel: gt.optional(), requests: St({ sampling: St({ createMessage: gt.optional() }).optional(), elicitation: St({ create: gt.optional() }).optional() }).optional() }); +var J9 = St({ list: gt.optional(), cancel: gt.optional(), requests: St({ tools: St({ call: gt.optional() }).optional() }).optional() }); +var G9 = P({ experimental: qe($(), gt).optional(), sampling: P({ context: gt.optional(), tools: gt.optional() }).optional(), elicitation: V9.optional(), roots: P({ listChanged: et().optional() }).optional(), tasks: H9.optional() }); +var W9 = fr.extend({ protocolVersion: $(), capabilities: G9, clientInfo: Pk }); +var _p = yt.extend({ method: q("initialize"), params: W9 }); +var Gs = (e21) => _p.safeParse(e21).success; +var K9 = P({ experimental: qe($(), gt).optional(), logging: gt.optional(), completions: gt.optional(), prompts: P({ listChanged: et().optional() }).optional(), resources: P({ subscribe: et().optional(), listChanged: et().optional() }).optional(), tools: P({ listChanged: et().optional() }).optional(), tasks: J9.optional() }); +var X9 = xt.extend({ protocolVersion: $(), capabilities: K9, serverInfo: Pk, instructions: $().optional() }); +var Qg = br.extend({ method: q("notifications/initialized"), params: xr.optional() }); +var wp = yt.extend({ method: q("ping"), params: fr.optional() }); +var Y9 = P({ progress: me(), total: Fe(me()), message: Fe($()) }); +var Q9 = P({ ...xr.shape, ...Y9.shape, progressToken: kk }); +var $p = br.extend({ method: q("notifications/progress"), params: Q9 }); +var eq = fr.extend({ cursor: Ek.optional() }); +var Ws = yt.extend({ params: eq.optional() }); +var Ks = xt.extend({ nextCursor: Ek.optional() }); +var tq = kt(["working", "input_required", "completed", "failed", "cancelled"]); +var Xs = P({ taskId: $(), status: tq, ttl: Ee([me(), Fs()]), createdAt: $(), lastUpdatedAt: $(), pollInterval: Fe(me()), statusMessage: Fe($()) }); +var ko = xt.extend({ task: Xs }); +var rq = xr.merge(Xs); +var Ys = br.extend({ method: q("notifications/tasks/status"), params: rq }); +var Sp = yt.extend({ method: q("tasks/get"), params: fr.extend({ taskId: $() }) }); +var kp = xt.merge(Xs); +var Ep = yt.extend({ method: q("tasks/result"), params: fr.extend({ taskId: $() }) }); +var Gle = xt.loose(); +var Op = Ws.extend({ method: q("tasks/list") }); +var Tp = Ks.extend({ tasks: ne(Xs) }); +var Ip = yt.extend({ method: q("tasks/cancel"), params: fr.extend({ taskId: $() }) }); +var jk = xt.merge(Xs); +var Ak = P({ uri: $(), mimeType: Fe($()), _meta: qe($(), je()).optional() }); +var Rk = Ak.extend({ text: $() }); +var ey = $().refine((e21) => { + try { + return atob(e21), true; + } catch { + return false; + } +}, { message: "Invalid Base64 string" }); +var Ck = Ak.extend({ blob: ey }); +var Qs = kt(["user", "assistant"]); +var Eo = P({ audience: ne(Qs).optional(), priority: me().min(0).max(1).optional(), lastModified: ki.datetime({ offset: true }).optional() }); +var Nk = P({ ...$o.shape, ...Js.shape, uri: $(), description: Fe($()), mimeType: Fe($()), annotations: Eo.optional(), _meta: Fe(St({})) }); +var nq = P({ ...$o.shape, ...Js.shape, uriTemplate: $(), description: Fe($()), mimeType: Fe($()), annotations: Eo.optional(), _meta: Fe(St({})) }); +var iq = Ws.extend({ method: q("resources/list") }); +var oq = Ks.extend({ resources: ne(Nk) }); +var aq = Ws.extend({ method: q("resources/templates/list") }); +var sq = Ks.extend({ resourceTemplates: ne(nq) }); +var ty = fr.extend({ uri: $() }); +var cq = ty; +var uq = yt.extend({ method: q("resources/read"), params: cq }); +var lq = xt.extend({ contents: ne(Ee([Rk, Ck])) }); +var pq = br.extend({ method: q("notifications/resources/list_changed"), params: xr.optional() }); +var dq = ty; +var fq = yt.extend({ method: q("resources/subscribe"), params: dq }); +var mq = ty; +var hq = yt.extend({ method: q("resources/unsubscribe"), params: mq }); +var vq = xr.extend({ uri: $() }); +var gq = br.extend({ method: q("notifications/resources/updated"), params: vq }); +var yq = P({ name: $(), description: Fe($()), required: Fe(et()) }); +var xq = P({ ...$o.shape, ...Js.shape, description: Fe($()), arguments: Fe(ne(yq)), _meta: Fe(St({})) }); +var bq = Ws.extend({ method: q("prompts/list") }); +var _q = Ks.extend({ prompts: ne(xq) }); +var wq = fr.extend({ name: $(), arguments: qe($(), $()).optional() }); +var $q = yt.extend({ method: q("prompts/get"), params: wq }); +var ry = P({ type: q("text"), text: $(), annotations: Eo.optional(), _meta: qe($(), je()).optional() }); +var ny = P({ type: q("image"), data: ey, mimeType: $(), annotations: Eo.optional(), _meta: qe($(), je()).optional() }); +var iy = P({ type: q("audio"), data: ey, mimeType: $(), annotations: Eo.optional(), _meta: qe($(), je()).optional() }); +var Sq = P({ type: q("tool_use"), name: $(), id: $(), input: qe($(), je()), _meta: qe($(), je()).optional() }); +var kq = P({ type: q("resource"), resource: Ee([Rk, Ck]), annotations: Eo.optional(), _meta: qe($(), je()).optional() }); +var Eq = Nk.extend({ type: q("resource_link") }); +var oy = Ee([ry, ny, iy, Eq, kq]); +var Oq = P({ role: Qs, content: oy }); +var Tq = xt.extend({ description: $().optional(), messages: ne(Oq) }); +var Iq = br.extend({ method: q("notifications/prompts/list_changed"), params: xr.optional() }); +var zq = P({ title: $().optional(), readOnlyHint: et().optional(), destructiveHint: et().optional(), idempotentHint: et().optional(), openWorldHint: et().optional() }); +var Pq = P({ taskSupport: kt(["required", "optional", "forbidden"]).optional() }); +var Dk = P({ ...$o.shape, ...Js.shape, description: $().optional(), inputSchema: P({ type: q("object"), properties: qe($(), gt).optional(), required: ne($()).optional() }).catchall(je()), outputSchema: P({ type: q("object"), properties: qe($(), gt).optional(), required: ne($()).optional() }).catchall(je()).optional(), annotations: zq.optional(), execution: Pq.optional(), _meta: qe($(), je()).optional() }); +var ay = Ws.extend({ method: q("tools/list") }); +var jq = Ks.extend({ tools: ne(Dk) }); +var zp = xt.extend({ content: ne(oy).default([]), structuredContent: qe($(), je()).optional(), isError: et().optional() }); +var Wle = zp.or(xt.extend({ toolResult: je() })); +var Aq = Vs.extend({ name: $(), arguments: qe($(), je()).optional() }); +var ec = yt.extend({ method: q("tools/call"), params: Aq }); +var Rq = br.extend({ method: q("notifications/tools/list_changed"), params: xr.optional() }); +var Kle = P({ autoRefresh: et().default(true), debounceMs: me().int().nonnegative().default(300) }); +var tc = kt(["debug", "info", "notice", "warning", "error", "critical", "alert", "emergency"]); +var Cq = fr.extend({ level: tc }); +var sy = yt.extend({ method: q("logging/setLevel"), params: Cq }); +var Nq = xr.extend({ level: tc, logger: $().optional(), data: je() }); +var Dq = br.extend({ method: q("notifications/message"), params: Nq }); +var qq = P({ name: $().optional() }); +var Uq = P({ hints: ne(qq).optional(), costPriority: me().min(0).max(1).optional(), speedPriority: me().min(0).max(1).optional(), intelligencePriority: me().min(0).max(1).optional() }); +var Lq = P({ mode: kt(["auto", "required", "none"]).optional() }); +var Mq = P({ type: q("tool_result"), toolUseId: $().describe("The unique identifier for the corresponding tool call."), content: ne(oy).default([]), structuredContent: P({}).loose().optional(), isError: et().optional(), _meta: qe($(), je()).optional() }); +var Fq = dp("type", [ry, ny, iy]); +var vp = dp("type", [ry, ny, iy, Sq, Mq]); +var Zq = P({ role: Qs, content: Ee([vp, ne(vp)]), _meta: qe($(), je()).optional() }); +var Bq = Vs.extend({ messages: ne(Zq), modelPreferences: Uq.optional(), systemPrompt: $().optional(), includeContext: kt(["none", "thisServer", "allServers"]).optional(), temperature: me().optional(), maxTokens: me().int(), stopSequences: ne($()).optional(), metadata: gt.optional(), tools: ne(Dk).optional(), toolChoice: Lq.optional() }); +var Vq = yt.extend({ method: q("sampling/createMessage"), params: Bq }); +var cy = xt.extend({ model: $(), stopReason: Fe(kt(["endTurn", "stopSequence", "maxTokens"]).or($())), role: Qs, content: Fq }); +var uy = xt.extend({ model: $(), stopReason: Fe(kt(["endTurn", "stopSequence", "maxTokens", "toolUse"]).or($())), role: Qs, content: Ee([vp, ne(vp)]) }); +var Hq = P({ type: q("boolean"), title: $().optional(), description: $().optional(), default: et().optional() }); +var Jq = P({ type: q("string"), title: $().optional(), description: $().optional(), minLength: me().optional(), maxLength: me().optional(), format: kt(["email", "uri", "date", "date-time"]).optional(), default: $().optional() }); +var Gq = P({ type: kt(["number", "integer"]), title: $().optional(), description: $().optional(), minimum: me().optional(), maximum: me().optional(), default: me().optional() }); +var Wq = P({ type: q("string"), title: $().optional(), description: $().optional(), enum: ne($()), default: $().optional() }); +var Kq = P({ type: q("string"), title: $().optional(), description: $().optional(), oneOf: ne(P({ const: $(), title: $() })), default: $().optional() }); +var Xq = P({ type: q("string"), title: $().optional(), description: $().optional(), enum: ne($()), enumNames: ne($()).optional(), default: $().optional() }); +var Yq = Ee([Wq, Kq]); +var Qq = P({ type: q("array"), title: $().optional(), description: $().optional(), minItems: me().optional(), maxItems: me().optional(), items: P({ type: q("string"), enum: ne($()) }), default: ne($()).optional() }); +var e3 = P({ type: q("array"), title: $().optional(), description: $().optional(), minItems: me().optional(), maxItems: me().optional(), items: P({ anyOf: ne(P({ const: $(), title: $() })) }), default: ne($()).optional() }); +var t3 = Ee([Qq, e3]); +var r3 = Ee([Xq, Yq, t3]); +var n3 = Ee([r3, Hq, Jq, Gq]); +var i3 = Vs.extend({ mode: q("form").optional(), message: $(), requestedSchema: P({ type: q("object"), properties: qe($(), n3), required: ne($()).optional() }) }); +var o3 = Vs.extend({ mode: q("url"), message: $(), elicitationId: $(), url: $().url() }); +var a3 = Ee([i3, o3]); +var s3 = yt.extend({ method: q("elicitation/create"), params: a3 }); +var c3 = xr.extend({ elicitationId: $() }); +var u3 = br.extend({ method: q("notifications/elicitation/complete"), params: c3 }); +var Pp = xt.extend({ action: kt(["accept", "decline", "cancel"]), content: hp((e21) => e21 === null ? void 0 : e21, qe($(), Ee([$(), me(), et(), ne($())])).optional()) }); +var l3 = P({ type: q("ref/resource"), uri: $() }); +var p3 = P({ type: q("ref/prompt"), name: $() }); +var d3 = fr.extend({ ref: Ee([p3, l3]), argument: P({ name: $(), value: $() }), context: P({ arguments: qe($(), $()).optional() }).optional() }); +var f3 = yt.extend({ method: q("completion/complete"), params: d3 }); +var m3 = xt.extend({ completion: St({ values: ne($()).max(100), total: Fe(me().int()), hasMore: Fe(et()) }) }); +var h3 = P({ uri: $().startsWith("file://"), name: $().optional(), _meta: qe($(), je()).optional() }); +var v3 = yt.extend({ method: q("roots/list"), params: fr.optional() }); +var ly = xt.extend({ roots: ne(h3) }); +var g3 = br.extend({ method: q("notifications/roots/list_changed"), params: xr.optional() }); +var Xle = Ee([wp, _p, f3, sy, $q, bq, iq, aq, uq, fq, hq, ec, ay, Sp, Ep, Op, Ip]); +var Yle = Ee([bp, $p, Qg, g3, Ys]); +var Qle = Ee([xp, cy, uy, Pp, ly, kp, Tp, ko]); +var epe = Ee([wp, Vq, s3, v3, Sp, Ep, Op, Ip]); +var tpe = Ee([bp, $p, Dq, gq, pq, Rq, Iq, Ys, u3]); +var rpe = Ee([xp, X9, m3, Tq, _q, oq, sq, lq, zp, jq, kp, Tp, ko]); +var Y = class e extends Error { + constructor(t, r, n) { + super(`MCP error ${t}: ${r}`), this.code = t, this.data = n, this.name = "McpError"; + } + static fromError(t, r, n) { + if (t === se.UrlElicitationRequired && n) { + let i = n; + if (i.elicitations) return new Gg(i.elicitations, r); + } + return new e(t, r, n); + } +}; +var Gg = class extends Y { + constructor(t, r = `URL elicitation${t.length > 1 ? "s" : ""} required`) { + super(se.UrlElicitationRequired, r, { elicitations: t }); + } + get elicitations() { + return this.data?.elicitations ?? []; + } +}; +var jp = class { + append(t) { + this._buffer = this._buffer ? Buffer.concat([this._buffer, t]) : t; + } + readMessage() { + if (!this._buffer) return null; + let t = this._buffer.indexOf(` +`); + if (t === -1) return null; + let r = this._buffer.toString("utf8", 0, t).replace(/\r$/, ""); + return this._buffer = this._buffer.subarray(t + 1), y3(r); + } + clear() { + this._buffer = void 0; + } +}; +function y3(e21) { + return Hs.parse(JSON.parse(e21)); +} +function qk(e21) { + return JSON.stringify(e21) + ` +`; +} +var Ap = class { + constructor(t = import_node_process.default.stdin, r = import_node_process.default.stdout) { + this._stdin = t, this._stdout = r, this._readBuffer = new jp(), this._started = false, this._ondata = (n) => { + this._readBuffer.append(n), this.processReadBuffer(); + }, this._onerror = (n) => { + this.onerror?.(n); + }; + } + async start() { + if (this._started) throw new Error("StdioServerTransport already started! If using Server class, note that connect() calls start() automatically."); + this._started = true, this._stdin.on("data", this._ondata), this._stdin.on("error", this._onerror); + } + processReadBuffer() { + for (; ; ) try { + let t = this._readBuffer.readMessage(); + if (t === null) break; + this.onmessage?.(t); + } catch (t) { + this.onerror?.(t); + } + } + async close() { + this._stdin.off("data", this._ondata), this._stdin.off("error", this._onerror), this._stdin.listenerCount("data") === 0 && this._stdin.pause(), this._readBuffer.clear(), this.onclose?.(); + } + send(t) { + return new Promise((r) => { + let n = qk(t); + this._stdout.write(n) ? r() : this._stdout.once("drain", r); + }); + } +}; +var Ei = class extends Error { + constructor(e21, t) { + super(e21, t), this.name = "RequestError"; + } +}; +var b3 = (e21) => e21 instanceof Ei ? e21 : new Ei(e21.message, { cause: e21 }); +var _3 = global.Request; +var rc = class extends _3 { + constructor(e21, t) { + typeof e21 == "object" && Io in e21 && (e21 = e21[Io]()), typeof t?.body?.getReader < "u" && (t.duplex ??= "half"), super(e21, t); + } +}; +var w3 = (e21) => { + let t = [], r = e21.rawHeaders; + for (let n = 0; n < r.length; n += 2) { + let { [n]: i, [n + 1]: o } = r; + i.charCodeAt(0) !== 58 && t.push([i, o]); + } + return new Headers(t); +}; +var Fk = /* @__PURE__ */ Symbol("wrapBodyStream"); +var $3 = (e21, t, r, n, i) => { + let o = { method: e21, headers: r, signal: i.signal }; + if (e21 === "TRACE") { + o.method = "GET"; + let a = new rc(t, o); + return Object.defineProperty(a, "method", { get() { + return "TRACE"; + } }), a; + } + if (!(e21 === "GET" || e21 === "HEAD")) if ("rawBody" in n && n.rawBody instanceof Buffer) o.body = new ReadableStream({ start(a) { + a.enqueue(n.rawBody), a.close(); + } }); + else if (n[Fk]) { + let a; + o.body = new ReadableStream({ async pull(s) { + try { + a ||= import_stream.Readable.toWeb(n).getReader(); + let { done: c, value: u } = await a.read(); + c ? s.close() : s.enqueue(u); + } catch (c) { + s.error(c); + } + } }); + } else o.body = import_stream.Readable.toWeb(n); + return new rc(t, o); +}; +var Io = /* @__PURE__ */ Symbol("getRequestCache"); +var S3 = /* @__PURE__ */ Symbol("requestCache"); +var Rp = /* @__PURE__ */ Symbol("incomingKey"); +var Cp = /* @__PURE__ */ Symbol("urlKey"); +var k3 = /* @__PURE__ */ Symbol("headersKey"); +var To = /* @__PURE__ */ Symbol("abortControllerKey"); +var E3 = /* @__PURE__ */ Symbol("getAbortController"); +var Np = { get method() { + return this[Rp].method || "GET"; +}, get url() { + return this[Cp]; +}, get headers() { + return this[k3] ||= w3(this[Rp]); +}, [E3]() { + return this[Io](), this[To]; +}, [Io]() { + return this[To] ||= new AbortController(), this[S3] ||= $3(this.method, this[Cp], this.headers, this[Rp], this[To]); +} }; +["body", "bodyUsed", "cache", "credentials", "destination", "integrity", "mode", "redirect", "referrer", "referrerPolicy", "signal", "keepalive"].forEach((e21) => { + Object.defineProperty(Np, e21, { get() { + return this[Io]()[e21]; + } }); +}); +["arrayBuffer", "blob", "clone", "formData", "json", "text"].forEach((e21) => { + Object.defineProperty(Np, e21, { value: function() { + return this[Io]()[e21](); + } }); +}); +Object.setPrototypeOf(Np, rc.prototype); +var O3 = (e21, t) => { + let r = Object.create(Np); + r[Rp] = e21; + let n = e21.url || ""; + if (n[0] !== "/" && (n.startsWith("http://") || n.startsWith("https://"))) { + if (e21 instanceof import_http22.Http2ServerRequest) throw new Ei("Absolute URL for :path is not allowed in HTTP/2"); + try { + let s = new URL(n); + r[Cp] = s.href; + } catch (s) { + throw new Ei("Invalid absolute URL", { cause: s }); + } + return r; + } + let i = (e21 instanceof import_http22.Http2ServerRequest ? e21.authority : e21.headers.host) || t; + if (!i) throw new Ei("Missing host header"); + let o; + if (e21 instanceof import_http22.Http2ServerRequest) { + if (o = e21.scheme, !(o === "http" || o === "https")) throw new Ei("Unsupported scheme"); + } else o = e21.socket && e21.socket.encrypted ? "https" : "http"; + let a = new URL(`${o}://${i}${n}`); + if (a.hostname.length !== i.length && a.hostname !== i.replace(/:\d+$/, "")) throw new Ei("Invalid host header"); + return r[Cp] = a.href, r; +}; +var Mk = /* @__PURE__ */ Symbol("responseCache"); +var Oo = /* @__PURE__ */ Symbol("getResponseCache"); +var Oi = /* @__PURE__ */ Symbol("cache"); +var my = global.Response; +var nc = class Zk { + #t; + #e; + [Oo]() { + return delete this[Oi], this[Mk] ||= new my(this.#t, this.#e); + } + constructor(t, r) { + let n; + if (this.#t = t, r instanceof Zk) { + let i = r[Mk]; + if (i) { + this.#e = i, this[Oo](); + return; + } else this.#e = r.#e, n = new Headers(r.#e.headers); + } else this.#e = r; + (typeof t == "string" || typeof t?.getReader < "u" || t instanceof Blob || t instanceof Uint8Array) && (this[Oi] = [r?.status || 200, t, n || r?.headers]); + } + get headers() { + let t = this[Oi]; + return t ? (t[2] instanceof Headers || (t[2] = new Headers(t[2] || { "content-type": "text/plain; charset=UTF-8" })), t[2]) : this[Oo]().headers; + } + get status() { + return this[Oi]?.[0] ?? this[Oo]().status; + } + get ok() { + let t = this.status; + return t >= 200 && t < 300; + } +}; +["body", "bodyUsed", "redirected", "statusText", "trailers", "type", "url"].forEach((e21) => { + Object.defineProperty(nc.prototype, e21, { get() { + return this[Oo]()[e21]; + } }); +}); +["arrayBuffer", "blob", "clone", "formData", "json", "text"].forEach((e21) => { + Object.defineProperty(nc.prototype, e21, { value: function() { + return this[Oo]()[e21](); + } }); +}); +Object.setPrototypeOf(nc, my); +Object.setPrototypeOf(nc.prototype, my.prototype); +async function T3(e21) { + return Promise.race([e21, Promise.resolve().then(() => Promise.resolve(void 0))]); +} +function Bk(e21, t, r) { + let n = (s) => { + e21.cancel(s).catch(() => { + }); + }; + return t.on("close", n), t.on("error", n), (r ?? e21.read()).then(a, i), e21.closed.finally(() => { + t.off("close", n), t.off("error", n); + }); + function i(s) { + s && t.destroy(s); + } + function o() { + e21.read().then(a, i); + } + function a({ done: s, value: c }) { + try { + if (s) t.end(); + else if (!t.write(c)) t.once("drain", o); + else return e21.read().then(a, i); + } catch (u) { + i(u); + } + } +} +function I3(e21, t) { + if (e21.locked) throw new TypeError("ReadableStream is locked."); + return t.destroyed ? void 0 : Bk(e21.getReader(), t); +} +var dy = (e21) => { + let t = {}; + e21 instanceof Headers || (e21 = new Headers(e21 ?? void 0)); + let r = []; + for (let [n, i] of e21) n === "set-cookie" ? r.push(i) : t[n] = i; + return r.length > 0 && (t["set-cookie"] = r), t["content-type"] ??= "text/plain; charset=UTF-8", t; +}; +var z3 = "x-hono-already-sent"; +typeof global.crypto > "u" && (global.crypto = import_crypto.default); +var hy = /* @__PURE__ */ Symbol("outgoingEnded"); +var j3 = () => new Response(null, { status: 400 }); +var Vk = (e21) => new Response(null, { status: e21 instanceof Error && (e21.name === "TimeoutError" || e21.constructor.name === "TimeoutError") ? 504 : 500 }); +var fy = (e21, t) => { + let r = e21 instanceof Error ? e21 : new Error("unknown error", { cause: e21 }); + r.code === "ERR_STREAM_PREMATURE_CLOSE" ? console.info("The user aborted a request.") : (console.error(e21), t.headersSent || t.writeHead(500, { "Content-Type": "text/plain" }), t.end(`Error: ${r.message}`), t.destroy(r)); +}; +var Hk = (e21) => { + "flushHeaders" in e21 && e21.writable && e21.flushHeaders(); +}; +var Jk = async (e21, t) => { + let [r, n, i] = e21[Oi], o = false; + if (!i) i = { "content-type": "text/plain; charset=UTF-8" }; + else if (i instanceof Headers) o = i.has("content-length"), i = dy(i); + else if (Array.isArray(i)) { + let a = new Headers(i); + o = a.has("content-length"), i = dy(a); + } else for (let a in i) if (a.length === 14 && a.toLowerCase() === "content-length") { + o = true; + break; + } + o || (typeof n == "string" ? i["Content-Length"] = Buffer.byteLength(n) : n instanceof Uint8Array ? i["Content-Length"] = n.byteLength : n instanceof Blob && (i["Content-Length"] = n.size)), t.writeHead(r, i), typeof n == "string" || n instanceof Uint8Array ? t.end(n) : n instanceof Blob ? t.end(new Uint8Array(await n.arrayBuffer())) : (Hk(t), await I3(n, t)?.catch((a) => fy(a, t))), t[hy]?.(); +}; +var A3 = (e21) => typeof e21.then == "function"; +var R3 = async (e21, t, r = {}) => { + if (A3(e21)) if (r.errorHandler) try { + e21 = await e21; + } catch (i) { + let o = await r.errorHandler(i); + if (!o) return; + e21 = o; + } + else e21 = await e21.catch(Vk); + if (Oi in e21) return Jk(e21, t); + let n = dy(e21.headers); + if (e21.body) { + let i = e21.body.getReader(), o = [], a = false, s; + if (n["transfer-encoding"] !== "chunked") { + let c = 2; + for (let u = 0; u < c; u++) { + s ||= i.read(); + let l = await T3(s).catch((p) => { + console.error(p), a = true; + }); + if (!l) { + if (u === 1) { + await new Promise((p) => setTimeout(p)), c = 3; + continue; + } + break; + } + if (s = void 0, l.value && o.push(l.value), l.done) { + a = true; + break; + } + } + a && !("content-length" in n) && (n["content-length"] = o.reduce((u, l) => u + l.length, 0)); + } + t.writeHead(e21.status, n), o.forEach((c) => { + t.write(c); + }), a ? t.end() : (o.length === 0 && Hk(t), await Bk(i, t, s)); + } else n[z3] || (t.writeHead(e21.status, n), t.end()); + t[hy]?.(); +}; +var vy = (e21, t = {}) => { + let r = t.autoCleanupIncoming ?? true; + return t.overrideGlobalObjects !== false && global.Request !== rc && (Object.defineProperty(global, "Request", { value: rc }), Object.defineProperty(global, "Response", { value: nc })), async (n, i) => { + let o, a; + try { + a = O3(n, t.hostname); + let s = !r || n.method === "GET" || n.method === "HEAD"; + if (s || (n[Fk] = true, n.on("end", () => { + s = true; + }), n instanceof import_http2.Http2ServerRequest && (i[hy] = () => { + s || setTimeout(() => { + s || setTimeout(() => { + n.destroy(), i.destroy(); + }); + }); + })), i.on("close", () => { + a[To] && (n.errored ? a[To].abort(n.errored.toString()) : i.writableFinished || a[To].abort("Client connection prematurely closed.")), s || setTimeout(() => { + s || setTimeout(() => { + n.destroy(); + }); + }); + }), o = e21(a, { incoming: n, outgoing: i }), Oi in o) return Jk(o, i); + } catch (s) { + if (o) return fy(s, i); + if (t.errorHandler) { + if (o = await t.errorHandler(a ? s : b3(s)), !o) return; + } else a ? o = Vk(s) : o = j3(); + } + try { + return await R3(o, i, t); + } catch (s) { + return fy(s, i); + } + }; +}; +var Dp = class { + constructor(t = {}) { + this._started = false, this._hasHandledRequest = false, this._streamMapping = /* @__PURE__ */ new Map(), this._requestToStreamMapping = /* @__PURE__ */ new Map(), this._requestResponseMap = /* @__PURE__ */ new Map(), this._initialized = false, this._enableJsonResponse = false, this._standaloneSseStreamId = "_GET_stream", this.sessionIdGenerator = t.sessionIdGenerator, this._enableJsonResponse = t.enableJsonResponse ?? false, this._eventStore = t.eventStore, this._onsessioninitialized = t.onsessioninitialized, this._onsessionclosed = t.onsessionclosed, this._allowedHosts = t.allowedHosts, this._allowedOrigins = t.allowedOrigins, this._enableDnsRebindingProtection = t.enableDnsRebindingProtection ?? false, this._retryInterval = t.retryInterval; + } + async start() { + if (this._started) throw new Error("Transport already started"); + this._started = true; + } + createJsonErrorResponse(t, r, n, i) { + let o = { code: r, message: n }; + return i?.data !== void 0 && (o.data = i.data), new Response(JSON.stringify({ jsonrpc: "2.0", error: o, id: null }), { status: t, headers: { "Content-Type": "application/json", ...i?.headers } }); + } + validateRequestHeaders(t) { + if (this._enableDnsRebindingProtection) { + if (this._allowedHosts && this._allowedHosts.length > 0) { + let r = t.headers.get("host"); + if (!r || !this._allowedHosts.includes(r)) { + let n = `Invalid Host header: ${r}`; + return this.onerror?.(new Error(n)), this.createJsonErrorResponse(403, -32e3, n); + } + } + if (this._allowedOrigins && this._allowedOrigins.length > 0) { + let r = t.headers.get("origin"); + if (r && !this._allowedOrigins.includes(r)) { + let n = `Invalid Origin header: ${r}`; + return this.onerror?.(new Error(n)), this.createJsonErrorResponse(403, -32e3, n); + } + } + } + } + async handleRequest(t, r) { + if (!this.sessionIdGenerator && this._hasHandledRequest) throw new Error("Stateless transport cannot be reused across requests. Create a new transport per request."); + this._hasHandledRequest = true; + let n = this.validateRequestHeaders(t); + if (n) return n; + switch (t.method) { + case "POST": + return this.handlePostRequest(t, r); + case "GET": + return this.handleGetRequest(t); + case "DELETE": + return this.handleDeleteRequest(t); + default: + return this.handleUnsupportedRequest(); + } + } + async writePrimingEvent(t, r, n, i) { + if (!this._eventStore || i < "2025-11-25") return; + let o = await this._eventStore.storeEvent(n, {}), a = `id: ${o} +data: + +`; + this._retryInterval !== void 0 && (a = `id: ${o} +retry: ${this._retryInterval} +data: + +`), t.enqueue(r.encode(a)); + } + async handleGetRequest(t) { + if (!t.headers.get("accept")?.includes("text/event-stream")) return this.createJsonErrorResponse(406, -32e3, "Not Acceptable: Client must accept text/event-stream"); + let n = this.validateSession(t); + if (n) return n; + let i = this.validateProtocolVersion(t); + if (i) return i; + if (this._eventStore) { + let u = t.headers.get("last-event-id"); + if (u) return this.replayEvents(u); + } + if (this._streamMapping.get(this._standaloneSseStreamId) !== void 0) return this.createJsonErrorResponse(409, -32e3, "Conflict: Only one SSE stream is allowed per session"); + let o = new TextEncoder(), a, s = new ReadableStream({ start: (u) => { + a = u; + }, cancel: () => { + this._streamMapping.delete(this._standaloneSseStreamId); + } }), c = { "Content-Type": "text/event-stream", "Cache-Control": "no-cache, no-transform", Connection: "keep-alive" }; + return this.sessionId !== void 0 && (c["mcp-session-id"] = this.sessionId), this._streamMapping.set(this._standaloneSseStreamId, { controller: a, encoder: o, cleanup: () => { + this._streamMapping.delete(this._standaloneSseStreamId); + try { + a.close(); + } catch { + } + } }), new Response(s, { headers: c }); + } + async replayEvents(t) { + if (!this._eventStore) return this.createJsonErrorResponse(400, -32e3, "Event store not configured"); + try { + let r; + if (this._eventStore.getStreamIdForEventId) { + if (r = await this._eventStore.getStreamIdForEventId(t), !r) return this.createJsonErrorResponse(400, -32e3, "Invalid event ID format"); + if (this._streamMapping.get(r) !== void 0) return this.createJsonErrorResponse(409, -32e3, "Conflict: Stream already has an active connection"); + } + let n = { "Content-Type": "text/event-stream", "Cache-Control": "no-cache, no-transform", Connection: "keep-alive" }; + this.sessionId !== void 0 && (n["mcp-session-id"] = this.sessionId); + let i = new TextEncoder(), o, a = new ReadableStream({ start: (c) => { + o = c; + }, cancel: () => { + } }), s = await this._eventStore.replayEventsAfter(t, { send: async (c, u) => { + if (!this.writeSSEEvent(o, i, u, c)) { + this.onerror?.(new Error("Failed replay events")); + try { + o.close(); + } catch { + } + } + } }); + return this._streamMapping.set(s, { controller: o, encoder: i, cleanup: () => { + this._streamMapping.delete(s); + try { + o.close(); + } catch { + } + } }), new Response(a, { headers: n }); + } catch (r) { + return this.onerror?.(r), this.createJsonErrorResponse(500, -32e3, "Error replaying events"); + } + } + writeSSEEvent(t, r, n, i) { + try { + let o = `event: message +`; + return i && (o += `id: ${i} +`), o += `data: ${JSON.stringify(n)} + +`, t.enqueue(r.encode(o)), true; + } catch { + return false; + } + } + handleUnsupportedRequest() { + return new Response(JSON.stringify({ jsonrpc: "2.0", error: { code: -32e3, message: "Method not allowed." }, id: null }), { status: 405, headers: { Allow: "GET, POST, DELETE", "Content-Type": "application/json" } }); + } + async handlePostRequest(t, r) { + try { + let n = t.headers.get("accept"); + if (!n?.includes("application/json") || !n.includes("text/event-stream")) return this.createJsonErrorResponse(406, -32e3, "Not Acceptable: Client must accept both application/json and text/event-stream"); + let i = t.headers.get("content-type"); + if (!i || !i.includes("application/json")) return this.createJsonErrorResponse(415, -32e3, "Unsupported Media Type: Content-Type must be application/json"); + let o = { headers: Object.fromEntries(t.headers.entries()) }, a; + if (r?.parsedBody !== void 0) a = r.parsedBody; + else try { + a = await t.json(); + } catch { + return this.createJsonErrorResponse(400, -32700, "Parse error: Invalid JSON"); + } + let s; + try { + Array.isArray(a) ? s = a.map((y) => Hs.parse(y)) : s = [Hs.parse(a)]; + } catch { + return this.createJsonErrorResponse(400, -32700, "Parse error: Invalid JSON-RPC message"); + } + let c = s.some(Gs); + if (c) { + if (this._initialized && this.sessionId !== void 0) return this.createJsonErrorResponse(400, -32600, "Invalid Request: Server already initialized"); + if (s.length > 1) return this.createJsonErrorResponse(400, -32600, "Invalid Request: Only one initialization request is allowed"); + this.sessionId = this.sessionIdGenerator?.(), this._initialized = true, this.sessionId && this._onsessioninitialized && await Promise.resolve(this._onsessioninitialized(this.sessionId)); + } + if (!c) { + let y = this.validateSession(t); + if (y) return y; + let x = this.validateProtocolVersion(t); + if (x) return x; + } + if (!s.some(Fn)) { + for (let y of s) this.onmessage?.(y, { authInfo: r?.authInfo, requestInfo: o }); + return new Response(null, { status: 202 }); + } + let l = crypto.randomUUID(), p = s.find((y) => Gs(y)), d = p ? p.params.protocolVersion : t.headers.get("mcp-protocol-version") ?? Sk; + if (this._enableJsonResponse) return new Promise((y) => { + this._streamMapping.set(l, { resolveJson: y, cleanup: () => { + this._streamMapping.delete(l); + } }); + for (let x of s) Fn(x) && this._requestToStreamMapping.set(x.id, l); + for (let x of s) this.onmessage?.(x, { authInfo: r?.authInfo, requestInfo: o }); + }); + let f = new TextEncoder(), m, h = new ReadableStream({ start: (y) => { + m = y; + }, cancel: () => { + this._streamMapping.delete(l); + } }), v = { "Content-Type": "text/event-stream", "Cache-Control": "no-cache", Connection: "keep-alive" }; + this.sessionId !== void 0 && (v["mcp-session-id"] = this.sessionId); + for (let y of s) Fn(y) && (this._streamMapping.set(l, { controller: m, encoder: f, cleanup: () => { + this._streamMapping.delete(l); + try { + m.close(); + } catch { + } + } }), this._requestToStreamMapping.set(y.id, l)); + await this.writePrimingEvent(m, f, l, d); + for (let y of s) { + let x, w; + Fn(y) && this._eventStore && d >= "2025-11-25" && (x = () => { + this.closeSSEStream(y.id); + }, w = () => { + this.closeStandaloneSSEStream(); + }), this.onmessage?.(y, { authInfo: r?.authInfo, requestInfo: o, closeSSEStream: x, closeStandaloneSSEStream: w }); + } + return new Response(h, { status: 200, headers: v }); + } catch (n) { + return this.onerror?.(n), this.createJsonErrorResponse(400, -32700, "Parse error", { data: String(n) }); + } + } + async handleDeleteRequest(t) { + let r = this.validateSession(t); + if (r) return r; + let n = this.validateProtocolVersion(t); + return n || (await Promise.resolve(this._onsessionclosed?.(this.sessionId)), await this.close(), new Response(null, { status: 200 })); + } + validateSession(t) { + if (this.sessionIdGenerator === void 0) return; + if (!this._initialized) return this.createJsonErrorResponse(400, -32e3, "Bad Request: Server not initialized"); + let r = t.headers.get("mcp-session-id"); + if (!r) return this.createJsonErrorResponse(400, -32e3, "Bad Request: Mcp-Session-Id header is required"); + if (r !== this.sessionId) return this.createJsonErrorResponse(404, -32001, "Session not found"); + } + validateProtocolVersion(t) { + let r = t.headers.get("mcp-protocol-version"); + if (r !== null && !Bs.includes(r)) return this.createJsonErrorResponse(400, -32e3, `Bad Request: Unsupported protocol version: ${r} (supported versions: ${Bs.join(", ")})`); + } + async close() { + this._streamMapping.forEach(({ cleanup: t }) => { + t(); + }), this._streamMapping.clear(), this._requestResponseMap.clear(), this.onclose?.(); + } + closeSSEStream(t) { + let r = this._requestToStreamMapping.get(t); + if (!r) return; + let n = this._streamMapping.get(r); + n && n.cleanup(); + } + closeStandaloneSSEStream() { + let t = this._streamMapping.get(this._standaloneSseStreamId); + t && t.cleanup(); + } + async send(t, r) { + let n = r?.relatedRequestId; + if ((xn(t) || So(t)) && (n = t.id), n === void 0) { + if (xn(t) || So(t)) throw new Error("Cannot send a response on a standalone SSE stream unless resuming a previous client request"); + let a; + this._eventStore && (a = await this._eventStore.storeEvent(this._standaloneSseStreamId, t)); + let s = this._streamMapping.get(this._standaloneSseStreamId); + if (s === void 0) return; + s.controller && s.encoder && this.writeSSEEvent(s.controller, s.encoder, t, a); + return; + } + let i = this._requestToStreamMapping.get(n); + if (!i) throw new Error(`No connection established for request ID: ${String(n)}`); + let o = this._streamMapping.get(i); + if (!this._enableJsonResponse && o?.controller && o?.encoder) { + let a; + this._eventStore && (a = await this._eventStore.storeEvent(i, t)), this.writeSSEEvent(o.controller, o.encoder, t, a); + } + if (xn(t) || So(t)) { + this._requestResponseMap.set(n, t); + let a = Array.from(this._requestToStreamMapping.entries()).filter(([c, u]) => u === i).map(([c]) => c); + if (a.every((c) => this._requestResponseMap.has(c))) { + if (!o) throw new Error(`No connection established for request ID: ${String(n)}`); + if (this._enableJsonResponse && o.resolveJson) { + let c = { "Content-Type": "application/json" }; + this.sessionId !== void 0 && (c["mcp-session-id"] = this.sessionId); + let u = a.map((l) => this._requestResponseMap.get(l)); + u.length === 1 ? o.resolveJson(new Response(JSON.stringify(u[0]), { status: 200, headers: c })) : o.resolveJson(new Response(JSON.stringify(u), { status: 200, headers: c })); + } else o.cleanup(); + for (let c of a) this._requestResponseMap.delete(c), this._requestToStreamMapping.delete(c); + } + } + } +}; +var qp = class { + constructor(t = {}) { + this._requestContext = /* @__PURE__ */ new WeakMap(), this._webStandardTransport = new Dp(t), this._requestListener = vy(async (r) => { + let n = this._requestContext.get(r); + return this._webStandardTransport.handleRequest(r, { authInfo: n?.authInfo, parsedBody: n?.parsedBody }); + }, { overrideGlobalObjects: false }); + } + get sessionId() { + return this._webStandardTransport.sessionId; + } + set onclose(t) { + this._webStandardTransport.onclose = t; + } + get onclose() { + return this._webStandardTransport.onclose; + } + set onerror(t) { + this._webStandardTransport.onerror = t; + } + get onerror() { + return this._webStandardTransport.onerror; + } + set onmessage(t) { + this._webStandardTransport.onmessage = t; + } + get onmessage() { + return this._webStandardTransport.onmessage; + } + async start() { + return this._webStandardTransport.start(); + } + async close() { + return this._webStandardTransport.close(); + } + async send(t, r) { + return this._webStandardTransport.send(t, r); + } + async handleRequest(t, r, n) { + let i = t.auth; + await vy(async (a) => this._webStandardTransport.handleRequest(a, { authInfo: i, parsedBody: n }), { overrideGlobalObjects: false })(t, r); + } + closeSSEStream(t) { + this._webStandardTransport.closeSSEStream(t); + } + closeStandaloneSSEStream() { + this._webStandardTransport.closeStandaloneSSEStream(); + } +}; +var O1 = is(T2(), 1); +var ce; +(function(e21) { + e21.assertEqual = (i) => { + }; + function t(i) { + } + e21.assertIs = t; + function r(i) { + throw new Error(); + } + e21.assertNever = r, e21.arrayToEnum = (i) => { + let o = {}; + for (let a of i) o[a] = a; + return o; + }, e21.getValidEnumValues = (i) => { + let o = e21.objectKeys(i).filter((s) => typeof i[i[s]] != "number"), a = {}; + for (let s of o) a[s] = i[s]; + return e21.objectValues(a); + }, e21.objectValues = (i) => e21.objectKeys(i).map(function(o) { + return i[o]; + }), e21.objectKeys = typeof Object.keys == "function" ? (i) => Object.keys(i) : (i) => { + let o = []; + for (let a in i) Object.prototype.hasOwnProperty.call(i, a) && o.push(a); + return o; + }, e21.find = (i, o) => { + for (let a of i) if (o(a)) return a; + }, e21.isInteger = typeof Number.isInteger == "function" ? (i) => Number.isInteger(i) : (i) => typeof i == "number" && Number.isFinite(i) && Math.floor(i) === i; + function n(i, o = " | ") { + return i.map((a) => typeof a == "string" ? `'${a}'` : a).join(o); + } + e21.joinValues = n, e21.jsonStringifyReplacer = (i, o) => typeof o == "bigint" ? o.toString() : o; +})(ce || (ce = {})); +var I2; +(function(e21) { + e21.mergeShapes = (t, r) => ({ ...t, ...r }); +})(I2 || (I2 = {})); +var j = ce.arrayToEnum(["string", "nan", "number", "integer", "float", "boolean", "date", "bigint", "symbol", "function", "undefined", "null", "array", "object", "unknown", "promise", "void", "never", "map", "set"]); +var wn = (e21) => { + switch (typeof e21) { + case "undefined": + return j.undefined; + case "string": + return j.string; + case "number": + return Number.isNaN(e21) ? j.nan : j.number; + case "boolean": + return j.boolean; + case "function": + return j.function; + case "bigint": + return j.bigint; + case "symbol": + return j.symbol; + case "object": + return Array.isArray(e21) ? j.array : e21 === null ? j.null : e21.then && typeof e21.then == "function" && e21.catch && typeof e21.catch == "function" ? j.promise : typeof Map < "u" && e21 instanceof Map ? j.map : typeof Set < "u" && e21 instanceof Set ? j.set : typeof Date < "u" && e21 instanceof Date ? j.date : j.object; + default: + return j.unknown; + } +}; +var E = ce.arrayToEnum(["invalid_type", "invalid_literal", "custom", "invalid_union", "invalid_union_discriminator", "invalid_enum_value", "unrecognized_keys", "invalid_arguments", "invalid_return_type", "invalid_date", "invalid_string", "too_small", "too_big", "invalid_intersection_types", "not_multiple_of", "not_finite"]); +var hr = class e2 extends Error { + get errors() { + return this.issues; + } + constructor(t) { + super(), this.issues = [], this.addIssue = (n) => { + this.issues = [...this.issues, n]; + }, this.addIssues = (n = []) => { + this.issues = [...this.issues, ...n]; + }; + let r = new.target.prototype; + Object.setPrototypeOf ? Object.setPrototypeOf(this, r) : this.__proto__ = r, this.name = "ZodError", this.issues = t; + } + format(t) { + let r = t || function(o) { + return o.message; + }, n = { _errors: [] }, i = (o) => { + for (let a of o.issues) if (a.code === "invalid_union") a.unionErrors.map(i); + else if (a.code === "invalid_return_type") i(a.returnTypeError); + else if (a.code === "invalid_arguments") i(a.argumentsError); + else if (a.path.length === 0) n._errors.push(r(a)); + else { + let s = n, c = 0; + for (; c < a.path.length; ) { + let u = a.path[c]; + c === a.path.length - 1 ? (s[u] = s[u] || { _errors: [] }, s[u]._errors.push(r(a))) : s[u] = s[u] || { _errors: [] }, s = s[u], c++; + } + } + }; + return i(this), n; + } + static assert(t) { + if (!(t instanceof e2)) throw new Error(`Not a ZodError: ${t}`); + } + toString() { + return this.message; + } + get message() { + return JSON.stringify(this.issues, ce.jsonStringifyReplacer, 2); + } + get isEmpty() { + return this.issues.length === 0; + } + flatten(t = (r) => r.message) { + let r = /* @__PURE__ */ Object.create(null), n = []; + for (let i of this.issues) if (i.path.length > 0) { + let o = i.path[0]; + r[o] = r[o] || [], r[o].push(t(i)); + } else n.push(t(i)); + return { formErrors: n, fieldErrors: r }; + } + get formErrors() { + return this.flatten(); + } +}; +hr.create = (e21) => new hr(e21); +var QJ = (e21, t) => { + let r; + switch (e21.code) { + case E.invalid_type: + e21.received === j.undefined ? r = "Required" : r = `Expected ${e21.expected}, received ${e21.received}`; + break; + case E.invalid_literal: + r = `Invalid literal value, expected ${JSON.stringify(e21.expected, ce.jsonStringifyReplacer)}`; + break; + case E.unrecognized_keys: + r = `Unrecognized key(s) in object: ${ce.joinValues(e21.keys, ", ")}`; + break; + case E.invalid_union: + r = "Invalid input"; + break; + case E.invalid_union_discriminator: + r = `Invalid discriminator value. Expected ${ce.joinValues(e21.options)}`; + break; + case E.invalid_enum_value: + r = `Invalid enum value. Expected ${ce.joinValues(e21.options)}, received '${e21.received}'`; + break; + case E.invalid_arguments: + r = "Invalid function arguments"; + break; + case E.invalid_return_type: + r = "Invalid function return type"; + break; + case E.invalid_date: + r = "Invalid date"; + break; + case E.invalid_string: + typeof e21.validation == "object" ? "includes" in e21.validation ? (r = `Invalid input: must include "${e21.validation.includes}"`, typeof e21.validation.position == "number" && (r = `${r} at one or more positions greater than or equal to ${e21.validation.position}`)) : "startsWith" in e21.validation ? r = `Invalid input: must start with "${e21.validation.startsWith}"` : "endsWith" in e21.validation ? r = `Invalid input: must end with "${e21.validation.endsWith}"` : ce.assertNever(e21.validation) : e21.validation !== "regex" ? r = `Invalid ${e21.validation}` : r = "Invalid"; + break; + case E.too_small: + e21.type === "array" ? r = `Array must contain ${e21.exact ? "exactly" : e21.inclusive ? "at least" : "more than"} ${e21.minimum} element(s)` : e21.type === "string" ? r = `String must contain ${e21.exact ? "exactly" : e21.inclusive ? "at least" : "over"} ${e21.minimum} character(s)` : e21.type === "number" ? r = `Number must be ${e21.exact ? "exactly equal to " : e21.inclusive ? "greater than or equal to " : "greater than "}${e21.minimum}` : e21.type === "bigint" ? r = `Number must be ${e21.exact ? "exactly equal to " : e21.inclusive ? "greater than or equal to " : "greater than "}${e21.minimum}` : e21.type === "date" ? r = `Date must be ${e21.exact ? "exactly equal to " : e21.inclusive ? "greater than or equal to " : "greater than "}${new Date(Number(e21.minimum))}` : r = "Invalid input"; + break; + case E.too_big: + e21.type === "array" ? r = `Array must contain ${e21.exact ? "exactly" : e21.inclusive ? "at most" : "less than"} ${e21.maximum} element(s)` : e21.type === "string" ? r = `String must contain ${e21.exact ? "exactly" : e21.inclusive ? "at most" : "under"} ${e21.maximum} character(s)` : e21.type === "number" ? r = `Number must be ${e21.exact ? "exactly" : e21.inclusive ? "less than or equal to" : "less than"} ${e21.maximum}` : e21.type === "bigint" ? r = `BigInt must be ${e21.exact ? "exactly" : e21.inclusive ? "less than or equal to" : "less than"} ${e21.maximum}` : e21.type === "date" ? r = `Date must be ${e21.exact ? "exactly" : e21.inclusive ? "smaller than or equal to" : "smaller than"} ${new Date(Number(e21.maximum))}` : r = "Invalid input"; + break; + case E.custom: + r = "Invalid input"; + break; + case E.invalid_intersection_types: + r = "Intersection results could not be merged"; + break; + case E.not_multiple_of: + r = `Number must be a multiple of ${e21.multipleOf}`; + break; + case E.not_finite: + r = "Number must be finite"; + break; + default: + r = t.defaultError, ce.assertNever(e21); + } + return { message: r }; +}; +var Yn = QJ; +var eG = Yn; +function nu() { + return eG; +} +var Xd = (e21) => { + let { data: t, path: r, errorMaps: n, issueData: i } = e21, o = [...r, ...i.path || []], a = { ...i, path: o }; + if (i.message !== void 0) return { ...i, path: o, message: i.message }; + let s = "", c = n.filter((u) => !!u).slice().reverse(); + for (let u of c) s = u(a, { data: t, defaultError: s }).message; + return { ...i, path: o, message: s }; +}; +function z(e21, t) { + let r = nu(), n = Xd({ issueData: t, data: e21.data, path: e21.path, errorMaps: [e21.common.contextualErrorMap, e21.schemaErrorMap, r, r === Yn ? void 0 : Yn].filter((i) => !!i) }); + e21.common.issues.push(n); +} +var Et = class e5 { + constructor() { + this.value = "valid"; + } + dirty() { + this.value === "valid" && (this.value = "dirty"); + } + abort() { + this.value !== "aborted" && (this.value = "aborted"); + } + static mergeArray(t, r) { + let n = []; + for (let i of r) { + if (i.status === "aborted") return H; + i.status === "dirty" && t.dirty(), n.push(i.value); + } + return { status: t.value, value: n }; + } + static async mergeObjectAsync(t, r) { + let n = []; + for (let i of r) { + let o = await i.key, a = await i.value; + n.push({ key: o, value: a }); + } + return e5.mergeObjectSync(t, n); + } + static mergeObjectSync(t, r) { + let n = {}; + for (let i of r) { + let { key: o, value: a } = i; + if (o.status === "aborted" || a.status === "aborted") return H; + o.status === "dirty" && t.dirty(), a.status === "dirty" && t.dirty(), o.value !== "__proto__" && (typeof a.value < "u" || i.alwaysSet) && (n[o.value] = a.value); + } + return { status: t.value, value: n }; + } +}; +var H = Object.freeze({ status: "aborted" }); +var ua = (e21) => ({ status: "dirty", value: e21 }); +var Mt = (e21) => ({ status: "valid", value: e21 }); +var Nb = (e21) => e21.status === "aborted"; +var Db = (e21) => e21.status === "dirty"; +var Zi = (e21) => e21.status === "valid"; +var iu = (e21) => typeof Promise < "u" && e21 instanceof Promise; +var N; +(function(e21) { + e21.errToObj = (t) => typeof t == "string" ? { message: t } : t || {}, e21.toString = (t) => typeof t == "string" ? t : t?.message; +})(N || (N = {})); +var Sr = class { + constructor(t, r, n, i) { + this._cachedPath = [], this.parent = t, this.data = r, this._path = n, this._key = i; + } + get path() { + return this._cachedPath.length || (Array.isArray(this._key) ? this._cachedPath.push(...this._path, ...this._key) : this._cachedPath.push(...this._path, this._key)), this._cachedPath; + } +}; +var z2 = (e21, t) => { + if (Zi(t)) return { success: true, data: t.value }; + if (!e21.common.issues.length) throw new Error("Validation failed but no issues detected."); + return { success: false, get error() { + if (this._error) return this._error; + let r = new hr(e21.common.issues); + return this._error = r, this._error; + } }; +}; +function W(e21) { + if (!e21) return {}; + let { errorMap: t, invalid_type_error: r, required_error: n, description: i } = e21; + if (t && (r || n)) throw new Error(`Can't use "invalid_type_error" or "required_error" in conjunction with custom error map.`); + return t ? { errorMap: t, description: i } : { errorMap: (a, s) => { + let { message: c } = e21; + return a.code === "invalid_enum_value" ? { message: c ?? s.defaultError } : typeof s.data > "u" ? { message: c ?? n ?? s.defaultError } : a.code !== "invalid_type" ? { message: s.defaultError } : { message: c ?? r ?? s.defaultError }; + }, description: i }; +} +var te = class { + get description() { + return this._def.description; + } + _getType(t) { + return wn(t.data); + } + _getOrReturnCtx(t, r) { + return r || { common: t.parent.common, data: t.data, parsedType: wn(t.data), schemaErrorMap: this._def.errorMap, path: t.path, parent: t.parent }; + } + _processInputParams(t) { + return { status: new Et(), ctx: { common: t.parent.common, data: t.data, parsedType: wn(t.data), schemaErrorMap: this._def.errorMap, path: t.path, parent: t.parent } }; + } + _parseSync(t) { + let r = this._parse(t); + if (iu(r)) throw new Error("Synchronous parse encountered promise."); + return r; + } + _parseAsync(t) { + let r = this._parse(t); + return Promise.resolve(r); + } + parse(t, r) { + let n = this.safeParse(t, r); + if (n.success) return n.data; + throw n.error; + } + safeParse(t, r) { + let n = { common: { issues: [], async: r?.async ?? false, contextualErrorMap: r?.errorMap }, path: r?.path || [], schemaErrorMap: this._def.errorMap, parent: null, data: t, parsedType: wn(t) }, i = this._parseSync({ data: t, path: n.path, parent: n }); + return z2(n, i); + } + "~validate"(t) { + let r = { common: { issues: [], async: !!this["~standard"].async }, path: [], schemaErrorMap: this._def.errorMap, parent: null, data: t, parsedType: wn(t) }; + if (!this["~standard"].async) try { + let n = this._parseSync({ data: t, path: [], parent: r }); + return Zi(n) ? { value: n.value } : { issues: r.common.issues }; + } catch (n) { + n?.message?.toLowerCase()?.includes("encountered") && (this["~standard"].async = true), r.common = { issues: [], async: true }; + } + return this._parseAsync({ data: t, path: [], parent: r }).then((n) => Zi(n) ? { value: n.value } : { issues: r.common.issues }); + } + async parseAsync(t, r) { + let n = await this.safeParseAsync(t, r); + if (n.success) return n.data; + throw n.error; + } + async safeParseAsync(t, r) { + let n = { common: { issues: [], contextualErrorMap: r?.errorMap, async: true }, path: r?.path || [], schemaErrorMap: this._def.errorMap, parent: null, data: t, parsedType: wn(t) }, i = this._parse({ data: t, path: n.path, parent: n }), o = await (iu(i) ? i : Promise.resolve(i)); + return z2(n, o); + } + refine(t, r) { + let n = (i) => typeof r == "string" || typeof r > "u" ? { message: r } : typeof r == "function" ? r(i) : r; + return this._refinement((i, o) => { + let a = t(i), s = () => o.addIssue({ code: E.custom, ...n(i) }); + return typeof Promise < "u" && a instanceof Promise ? a.then((c) => c ? true : (s(), false)) : a ? true : (s(), false); + }); + } + refinement(t, r) { + return this._refinement((n, i) => t(n) ? true : (i.addIssue(typeof r == "function" ? r(n, i) : r), false)); + } + _refinement(t) { + return new Ur({ schema: this, typeName: F.ZodEffects, effect: { type: "refinement", refinement: t } }); + } + superRefine(t) { + return this._refinement(t); + } + constructor(t) { + this.spa = this.safeParseAsync, this._def = t, this.parse = this.parse.bind(this), this.safeParse = this.safeParse.bind(this), this.parseAsync = this.parseAsync.bind(this), this.safeParseAsync = this.safeParseAsync.bind(this), this.spa = this.spa.bind(this), this.refine = this.refine.bind(this), this.refinement = this.refinement.bind(this), this.superRefine = this.superRefine.bind(this), this.optional = this.optional.bind(this), this.nullable = this.nullable.bind(this), this.nullish = this.nullish.bind(this), this.array = this.array.bind(this), this.promise = this.promise.bind(this), this.or = this.or.bind(this), this.and = this.and.bind(this), this.transform = this.transform.bind(this), this.brand = this.brand.bind(this), this.default = this.default.bind(this), this.catch = this.catch.bind(this), this.describe = this.describe.bind(this), this.pipe = this.pipe.bind(this), this.readonly = this.readonly.bind(this), this.isNullable = this.isNullable.bind(this), this.isOptional = this.isOptional.bind(this), this["~standard"] = { version: 1, vendor: "zod", validate: (r) => this["~validate"](r) }; + } + optional() { + return qr.create(this, this._def); + } + nullable() { + return kn.create(this, this._def); + } + nullish() { + return this.nullable().optional(); + } + array() { + return ei.create(this); + } + promise() { + return Bi.create(this, this._def); + } + or(t) { + return ma.create([this, t], this._def); + } + and(t) { + return ha.create(this, t, this._def); + } + transform(t) { + return new Ur({ ...W(this._def), schema: this, typeName: F.ZodEffects, effect: { type: "transform", transform: t } }); + } + default(t) { + let r = typeof t == "function" ? t : () => t; + return new ba({ ...W(this._def), innerType: this, defaultValue: r, typeName: F.ZodDefault }); + } + brand() { + return new Yd({ typeName: F.ZodBranded, type: this, ...W(this._def) }); + } + catch(t) { + let r = typeof t == "function" ? t : () => t; + return new _a({ ...W(this._def), innerType: this, catchValue: r, typeName: F.ZodCatch }); + } + describe(t) { + let r = this.constructor; + return new r({ ...this._def, description: t }); + } + pipe(t) { + return Qd.create(this, t); + } + readonly() { + return wa.create(this); + } + isOptional() { + return this.safeParse(void 0).success; + } + isNullable() { + return this.safeParse(null).success; + } +}; +var tG = /^c[^\s-]{8,}$/i; +var rG = /^[0-9a-z]+$/; +var nG = /^[0-9A-HJKMNP-TV-Z]{26}$/i; +var iG = /^[0-9a-fA-F]{8}\b-[0-9a-fA-F]{4}\b-[0-9a-fA-F]{4}\b-[0-9a-fA-F]{4}\b-[0-9a-fA-F]{12}$/i; +var oG = /^[a-z0-9_-]{21}$/i; +var aG = /^[A-Za-z0-9-_]+\.[A-Za-z0-9-_]+\.[A-Za-z0-9-_]*$/; +var sG = /^[-+]?P(?!$)(?:(?:[-+]?\d+Y)|(?:[-+]?\d+[.,]\d+Y$))?(?:(?:[-+]?\d+M)|(?:[-+]?\d+[.,]\d+M$))?(?:(?:[-+]?\d+W)|(?:[-+]?\d+[.,]\d+W$))?(?:(?:[-+]?\d+D)|(?:[-+]?\d+[.,]\d+D$))?(?:T(?=[\d+-])(?:(?:[-+]?\d+H)|(?:[-+]?\d+[.,]\d+H$))?(?:(?:[-+]?\d+M)|(?:[-+]?\d+[.,]\d+M$))?(?:[-+]?\d+(?:[.,]\d+)?S)?)??$/; +var cG = /^(?!\.)(?!.*\.\.)([A-Z0-9_'+\-\.]*)[A-Z0-9_+-]@([A-Z0-9][A-Z0-9\-]*\.)+[A-Z]{2,}$/i; +var uG = "^(\\p{Extended_Pictographic}|\\p{Emoji_Component})+$"; +var qb; +var lG = /^(?:(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\.){3}(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])$/; +var pG = /^(?:(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\.){3}(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\/(3[0-2]|[12]?[0-9])$/; +var dG = /^(([0-9a-fA-F]{1,4}:){7,7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:)|fe80:(:[0-9a-fA-F]{0,4}){0,4}%[0-9a-zA-Z]{1,}|::(ffff(:0{1,4}){0,1}:){0,1}((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])|([0-9a-fA-F]{1,4}:){1,4}:((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9]))$/; +var fG = /^(([0-9a-fA-F]{1,4}:){7,7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:)|fe80:(:[0-9a-fA-F]{0,4}){0,4}%[0-9a-zA-Z]{1,}|::(ffff(:0{1,4}){0,1}:){0,1}((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])|([0-9a-fA-F]{1,4}:){1,4}:((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9]))\/(12[0-8]|1[01][0-9]|[1-9]?[0-9])$/; +var mG = /^([0-9a-zA-Z+/]{4})*(([0-9a-zA-Z+/]{2}==)|([0-9a-zA-Z+/]{3}=))?$/; +var hG = /^([0-9a-zA-Z-_]{4})*(([0-9a-zA-Z-_]{2}(==)?)|([0-9a-zA-Z-_]{3}(=)?))?$/; +var P2 = "((\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-((0[13578]|1[02])-(0[1-9]|[12]\\d|3[01])|(0[469]|11)-(0[1-9]|[12]\\d|30)|(02)-(0[1-9]|1\\d|2[0-8])))"; +var vG = new RegExp(`^${P2}$`); +function j2(e21) { + let t = "[0-5]\\d"; + e21.precision ? t = `${t}\\.\\d{${e21.precision}}` : e21.precision == null && (t = `${t}(\\.\\d+)?`); + let r = e21.precision ? "+" : "?"; + return `([01]\\d|2[0-3]):[0-5]\\d(:${t})${r}`; +} +function gG(e21) { + return new RegExp(`^${j2(e21)}$`); +} +function yG(e21) { + let t = `${P2}T${j2(e21)}`, r = []; + return r.push(e21.local ? "Z?" : "Z"), e21.offset && r.push("([+-]\\d{2}:?\\d{2})"), t = `${t}(${r.join("|")})`, new RegExp(`^${t}$`); +} +function xG(e21, t) { + return !!((t === "v4" || !t) && lG.test(e21) || (t === "v6" || !t) && dG.test(e21)); +} +function bG(e21, t) { + if (!aG.test(e21)) return false; + try { + let [r] = e21.split("."); + if (!r) return false; + let n = r.replace(/-/g, "+").replace(/_/g, "/").padEnd(r.length + (4 - r.length % 4) % 4, "="), i = JSON.parse(atob(n)); + return !(typeof i != "object" || i === null || "typ" in i && i?.typ !== "JWT" || !i.alg || t && i.alg !== t); + } catch { + return false; + } +} +function _G(e21, t) { + return !!((t === "v4" || !t) && pG.test(e21) || (t === "v6" || !t) && fG.test(e21)); +} +var pa = class e7 extends te { + _parse(t) { + if (this._def.coerce && (t.data = String(t.data)), this._getType(t) !== j.string) { + let o = this._getOrReturnCtx(t); + return z(o, { code: E.invalid_type, expected: j.string, received: o.parsedType }), H; + } + let n = new Et(), i; + for (let o of this._def.checks) if (o.kind === "min") t.data.length < o.value && (i = this._getOrReturnCtx(t, i), z(i, { code: E.too_small, minimum: o.value, type: "string", inclusive: true, exact: false, message: o.message }), n.dirty()); + else if (o.kind === "max") t.data.length > o.value && (i = this._getOrReturnCtx(t, i), z(i, { code: E.too_big, maximum: o.value, type: "string", inclusive: true, exact: false, message: o.message }), n.dirty()); + else if (o.kind === "length") { + let a = t.data.length > o.value, s = t.data.length < o.value; + (a || s) && (i = this._getOrReturnCtx(t, i), a ? z(i, { code: E.too_big, maximum: o.value, type: "string", inclusive: true, exact: true, message: o.message }) : s && z(i, { code: E.too_small, minimum: o.value, type: "string", inclusive: true, exact: true, message: o.message }), n.dirty()); + } else if (o.kind === "email") cG.test(t.data) || (i = this._getOrReturnCtx(t, i), z(i, { validation: "email", code: E.invalid_string, message: o.message }), n.dirty()); + else if (o.kind === "emoji") qb || (qb = new RegExp(uG, "u")), qb.test(t.data) || (i = this._getOrReturnCtx(t, i), z(i, { validation: "emoji", code: E.invalid_string, message: o.message }), n.dirty()); + else if (o.kind === "uuid") iG.test(t.data) || (i = this._getOrReturnCtx(t, i), z(i, { validation: "uuid", code: E.invalid_string, message: o.message }), n.dirty()); + else if (o.kind === "nanoid") oG.test(t.data) || (i = this._getOrReturnCtx(t, i), z(i, { validation: "nanoid", code: E.invalid_string, message: o.message }), n.dirty()); + else if (o.kind === "cuid") tG.test(t.data) || (i = this._getOrReturnCtx(t, i), z(i, { validation: "cuid", code: E.invalid_string, message: o.message }), n.dirty()); + else if (o.kind === "cuid2") rG.test(t.data) || (i = this._getOrReturnCtx(t, i), z(i, { validation: "cuid2", code: E.invalid_string, message: o.message }), n.dirty()); + else if (o.kind === "ulid") nG.test(t.data) || (i = this._getOrReturnCtx(t, i), z(i, { validation: "ulid", code: E.invalid_string, message: o.message }), n.dirty()); + else if (o.kind === "url") try { + new URL(t.data); + } catch { + i = this._getOrReturnCtx(t, i), z(i, { validation: "url", code: E.invalid_string, message: o.message }), n.dirty(); + } + else o.kind === "regex" ? (o.regex.lastIndex = 0, o.regex.test(t.data) || (i = this._getOrReturnCtx(t, i), z(i, { validation: "regex", code: E.invalid_string, message: o.message }), n.dirty())) : o.kind === "trim" ? t.data = t.data.trim() : o.kind === "includes" ? t.data.includes(o.value, o.position) || (i = this._getOrReturnCtx(t, i), z(i, { code: E.invalid_string, validation: { includes: o.value, position: o.position }, message: o.message }), n.dirty()) : o.kind === "toLowerCase" ? t.data = t.data.toLowerCase() : o.kind === "toUpperCase" ? t.data = t.data.toUpperCase() : o.kind === "startsWith" ? t.data.startsWith(o.value) || (i = this._getOrReturnCtx(t, i), z(i, { code: E.invalid_string, validation: { startsWith: o.value }, message: o.message }), n.dirty()) : o.kind === "endsWith" ? t.data.endsWith(o.value) || (i = this._getOrReturnCtx(t, i), z(i, { code: E.invalid_string, validation: { endsWith: o.value }, message: o.message }), n.dirty()) : o.kind === "datetime" ? yG(o).test(t.data) || (i = this._getOrReturnCtx(t, i), z(i, { code: E.invalid_string, validation: "datetime", message: o.message }), n.dirty()) : o.kind === "date" ? vG.test(t.data) || (i = this._getOrReturnCtx(t, i), z(i, { code: E.invalid_string, validation: "date", message: o.message }), n.dirty()) : o.kind === "time" ? gG(o).test(t.data) || (i = this._getOrReturnCtx(t, i), z(i, { code: E.invalid_string, validation: "time", message: o.message }), n.dirty()) : o.kind === "duration" ? sG.test(t.data) || (i = this._getOrReturnCtx(t, i), z(i, { validation: "duration", code: E.invalid_string, message: o.message }), n.dirty()) : o.kind === "ip" ? xG(t.data, o.version) || (i = this._getOrReturnCtx(t, i), z(i, { validation: "ip", code: E.invalid_string, message: o.message }), n.dirty()) : o.kind === "jwt" ? bG(t.data, o.alg) || (i = this._getOrReturnCtx(t, i), z(i, { validation: "jwt", code: E.invalid_string, message: o.message }), n.dirty()) : o.kind === "cidr" ? _G(t.data, o.version) || (i = this._getOrReturnCtx(t, i), z(i, { validation: "cidr", code: E.invalid_string, message: o.message }), n.dirty()) : o.kind === "base64" ? mG.test(t.data) || (i = this._getOrReturnCtx(t, i), z(i, { validation: "base64", code: E.invalid_string, message: o.message }), n.dirty()) : o.kind === "base64url" ? hG.test(t.data) || (i = this._getOrReturnCtx(t, i), z(i, { validation: "base64url", code: E.invalid_string, message: o.message }), n.dirty()) : ce.assertNever(o); + return { status: n.value, value: t.data }; + } + _regex(t, r, n) { + return this.refinement((i) => t.test(i), { validation: r, code: E.invalid_string, ...N.errToObj(n) }); + } + _addCheck(t) { + return new e7({ ...this._def, checks: [...this._def.checks, t] }); + } + email(t) { + return this._addCheck({ kind: "email", ...N.errToObj(t) }); + } + url(t) { + return this._addCheck({ kind: "url", ...N.errToObj(t) }); + } + emoji(t) { + return this._addCheck({ kind: "emoji", ...N.errToObj(t) }); + } + uuid(t) { + return this._addCheck({ kind: "uuid", ...N.errToObj(t) }); + } + nanoid(t) { + return this._addCheck({ kind: "nanoid", ...N.errToObj(t) }); + } + cuid(t) { + return this._addCheck({ kind: "cuid", ...N.errToObj(t) }); + } + cuid2(t) { + return this._addCheck({ kind: "cuid2", ...N.errToObj(t) }); + } + ulid(t) { + return this._addCheck({ kind: "ulid", ...N.errToObj(t) }); + } + base64(t) { + return this._addCheck({ kind: "base64", ...N.errToObj(t) }); + } + base64url(t) { + return this._addCheck({ kind: "base64url", ...N.errToObj(t) }); + } + jwt(t) { + return this._addCheck({ kind: "jwt", ...N.errToObj(t) }); + } + ip(t) { + return this._addCheck({ kind: "ip", ...N.errToObj(t) }); + } + cidr(t) { + return this._addCheck({ kind: "cidr", ...N.errToObj(t) }); + } + datetime(t) { + return typeof t == "string" ? this._addCheck({ kind: "datetime", precision: null, offset: false, local: false, message: t }) : this._addCheck({ kind: "datetime", precision: typeof t?.precision > "u" ? null : t?.precision, offset: t?.offset ?? false, local: t?.local ?? false, ...N.errToObj(t?.message) }); + } + date(t) { + return this._addCheck({ kind: "date", message: t }); + } + time(t) { + return typeof t == "string" ? this._addCheck({ kind: "time", precision: null, message: t }) : this._addCheck({ kind: "time", precision: typeof t?.precision > "u" ? null : t?.precision, ...N.errToObj(t?.message) }); + } + duration(t) { + return this._addCheck({ kind: "duration", ...N.errToObj(t) }); + } + regex(t, r) { + return this._addCheck({ kind: "regex", regex: t, ...N.errToObj(r) }); + } + includes(t, r) { + return this._addCheck({ kind: "includes", value: t, position: r?.position, ...N.errToObj(r?.message) }); + } + startsWith(t, r) { + return this._addCheck({ kind: "startsWith", value: t, ...N.errToObj(r) }); + } + endsWith(t, r) { + return this._addCheck({ kind: "endsWith", value: t, ...N.errToObj(r) }); + } + min(t, r) { + return this._addCheck({ kind: "min", value: t, ...N.errToObj(r) }); + } + max(t, r) { + return this._addCheck({ kind: "max", value: t, ...N.errToObj(r) }); + } + length(t, r) { + return this._addCheck({ kind: "length", value: t, ...N.errToObj(r) }); + } + nonempty(t) { + return this.min(1, N.errToObj(t)); + } + trim() { + return new e7({ ...this._def, checks: [...this._def.checks, { kind: "trim" }] }); + } + toLowerCase() { + return new e7({ ...this._def, checks: [...this._def.checks, { kind: "toLowerCase" }] }); + } + toUpperCase() { + return new e7({ ...this._def, checks: [...this._def.checks, { kind: "toUpperCase" }] }); + } + get isDatetime() { + return !!this._def.checks.find((t) => t.kind === "datetime"); + } + get isDate() { + return !!this._def.checks.find((t) => t.kind === "date"); + } + get isTime() { + return !!this._def.checks.find((t) => t.kind === "time"); + } + get isDuration() { + return !!this._def.checks.find((t) => t.kind === "duration"); + } + get isEmail() { + return !!this._def.checks.find((t) => t.kind === "email"); + } + get isURL() { + return !!this._def.checks.find((t) => t.kind === "url"); + } + get isEmoji() { + return !!this._def.checks.find((t) => t.kind === "emoji"); + } + get isUUID() { + return !!this._def.checks.find((t) => t.kind === "uuid"); + } + get isNANOID() { + return !!this._def.checks.find((t) => t.kind === "nanoid"); + } + get isCUID() { + return !!this._def.checks.find((t) => t.kind === "cuid"); + } + get isCUID2() { + return !!this._def.checks.find((t) => t.kind === "cuid2"); + } + get isULID() { + return !!this._def.checks.find((t) => t.kind === "ulid"); + } + get isIP() { + return !!this._def.checks.find((t) => t.kind === "ip"); + } + get isCIDR() { + return !!this._def.checks.find((t) => t.kind === "cidr"); + } + get isBase64() { + return !!this._def.checks.find((t) => t.kind === "base64"); + } + get isBase64url() { + return !!this._def.checks.find((t) => t.kind === "base64url"); + } + get minLength() { + let t = null; + for (let r of this._def.checks) r.kind === "min" && (t === null || r.value > t) && (t = r.value); + return t; + } + get maxLength() { + let t = null; + for (let r of this._def.checks) r.kind === "max" && (t === null || r.value < t) && (t = r.value); + return t; + } +}; +pa.create = (e21) => new pa({ checks: [], typeName: F.ZodString, coerce: e21?.coerce ?? false, ...W(e21) }); +function wG(e21, t) { + let r = (e21.toString().split(".")[1] || "").length, n = (t.toString().split(".")[1] || "").length, i = r > n ? r : n, o = Number.parseInt(e21.toFixed(i).replace(".", "")), a = Number.parseInt(t.toFixed(i).replace(".", "")); + return o % a / 10 ** i; +} +var ou = class e8 extends te { + constructor() { + super(...arguments), this.min = this.gte, this.max = this.lte, this.step = this.multipleOf; + } + _parse(t) { + if (this._def.coerce && (t.data = Number(t.data)), this._getType(t) !== j.number) { + let o = this._getOrReturnCtx(t); + return z(o, { code: E.invalid_type, expected: j.number, received: o.parsedType }), H; + } + let n, i = new Et(); + for (let o of this._def.checks) o.kind === "int" ? ce.isInteger(t.data) || (n = this._getOrReturnCtx(t, n), z(n, { code: E.invalid_type, expected: "integer", received: "float", message: o.message }), i.dirty()) : o.kind === "min" ? (o.inclusive ? t.data < o.value : t.data <= o.value) && (n = this._getOrReturnCtx(t, n), z(n, { code: E.too_small, minimum: o.value, type: "number", inclusive: o.inclusive, exact: false, message: o.message }), i.dirty()) : o.kind === "max" ? (o.inclusive ? t.data > o.value : t.data >= o.value) && (n = this._getOrReturnCtx(t, n), z(n, { code: E.too_big, maximum: o.value, type: "number", inclusive: o.inclusive, exact: false, message: o.message }), i.dirty()) : o.kind === "multipleOf" ? wG(t.data, o.value) !== 0 && (n = this._getOrReturnCtx(t, n), z(n, { code: E.not_multiple_of, multipleOf: o.value, message: o.message }), i.dirty()) : o.kind === "finite" ? Number.isFinite(t.data) || (n = this._getOrReturnCtx(t, n), z(n, { code: E.not_finite, message: o.message }), i.dirty()) : ce.assertNever(o); + return { status: i.value, value: t.data }; + } + gte(t, r) { + return this.setLimit("min", t, true, N.toString(r)); + } + gt(t, r) { + return this.setLimit("min", t, false, N.toString(r)); + } + lte(t, r) { + return this.setLimit("max", t, true, N.toString(r)); + } + lt(t, r) { + return this.setLimit("max", t, false, N.toString(r)); + } + setLimit(t, r, n, i) { + return new e8({ ...this._def, checks: [...this._def.checks, { kind: t, value: r, inclusive: n, message: N.toString(i) }] }); + } + _addCheck(t) { + return new e8({ ...this._def, checks: [...this._def.checks, t] }); + } + int(t) { + return this._addCheck({ kind: "int", message: N.toString(t) }); + } + positive(t) { + return this._addCheck({ kind: "min", value: 0, inclusive: false, message: N.toString(t) }); + } + negative(t) { + return this._addCheck({ kind: "max", value: 0, inclusive: false, message: N.toString(t) }); + } + nonpositive(t) { + return this._addCheck({ kind: "max", value: 0, inclusive: true, message: N.toString(t) }); + } + nonnegative(t) { + return this._addCheck({ kind: "min", value: 0, inclusive: true, message: N.toString(t) }); + } + multipleOf(t, r) { + return this._addCheck({ kind: "multipleOf", value: t, message: N.toString(r) }); + } + finite(t) { + return this._addCheck({ kind: "finite", message: N.toString(t) }); + } + safe(t) { + return this._addCheck({ kind: "min", inclusive: true, value: Number.MIN_SAFE_INTEGER, message: N.toString(t) })._addCheck({ kind: "max", inclusive: true, value: Number.MAX_SAFE_INTEGER, message: N.toString(t) }); + } + get minValue() { + let t = null; + for (let r of this._def.checks) r.kind === "min" && (t === null || r.value > t) && (t = r.value); + return t; + } + get maxValue() { + let t = null; + for (let r of this._def.checks) r.kind === "max" && (t === null || r.value < t) && (t = r.value); + return t; + } + get isInt() { + return !!this._def.checks.find((t) => t.kind === "int" || t.kind === "multipleOf" && ce.isInteger(t.value)); + } + get isFinite() { + let t = null, r = null; + for (let n of this._def.checks) { + if (n.kind === "finite" || n.kind === "int" || n.kind === "multipleOf") return true; + n.kind === "min" ? (r === null || n.value > r) && (r = n.value) : n.kind === "max" && (t === null || n.value < t) && (t = n.value); + } + return Number.isFinite(r) && Number.isFinite(t); + } +}; +ou.create = (e21) => new ou({ checks: [], typeName: F.ZodNumber, coerce: e21?.coerce || false, ...W(e21) }); +var au = class e10 extends te { + constructor() { + super(...arguments), this.min = this.gte, this.max = this.lte; + } + _parse(t) { + if (this._def.coerce) try { + t.data = BigInt(t.data); + } catch { + return this._getInvalidInput(t); + } + if (this._getType(t) !== j.bigint) return this._getInvalidInput(t); + let n, i = new Et(); + for (let o of this._def.checks) o.kind === "min" ? (o.inclusive ? t.data < o.value : t.data <= o.value) && (n = this._getOrReturnCtx(t, n), z(n, { code: E.too_small, type: "bigint", minimum: o.value, inclusive: o.inclusive, message: o.message }), i.dirty()) : o.kind === "max" ? (o.inclusive ? t.data > o.value : t.data >= o.value) && (n = this._getOrReturnCtx(t, n), z(n, { code: E.too_big, type: "bigint", maximum: o.value, inclusive: o.inclusive, message: o.message }), i.dirty()) : o.kind === "multipleOf" ? t.data % o.value !== BigInt(0) && (n = this._getOrReturnCtx(t, n), z(n, { code: E.not_multiple_of, multipleOf: o.value, message: o.message }), i.dirty()) : ce.assertNever(o); + return { status: i.value, value: t.data }; + } + _getInvalidInput(t) { + let r = this._getOrReturnCtx(t); + return z(r, { code: E.invalid_type, expected: j.bigint, received: r.parsedType }), H; + } + gte(t, r) { + return this.setLimit("min", t, true, N.toString(r)); + } + gt(t, r) { + return this.setLimit("min", t, false, N.toString(r)); + } + lte(t, r) { + return this.setLimit("max", t, true, N.toString(r)); + } + lt(t, r) { + return this.setLimit("max", t, false, N.toString(r)); + } + setLimit(t, r, n, i) { + return new e10({ ...this._def, checks: [...this._def.checks, { kind: t, value: r, inclusive: n, message: N.toString(i) }] }); + } + _addCheck(t) { + return new e10({ ...this._def, checks: [...this._def.checks, t] }); + } + positive(t) { + return this._addCheck({ kind: "min", value: BigInt(0), inclusive: false, message: N.toString(t) }); + } + negative(t) { + return this._addCheck({ kind: "max", value: BigInt(0), inclusive: false, message: N.toString(t) }); + } + nonpositive(t) { + return this._addCheck({ kind: "max", value: BigInt(0), inclusive: true, message: N.toString(t) }); + } + nonnegative(t) { + return this._addCheck({ kind: "min", value: BigInt(0), inclusive: true, message: N.toString(t) }); + } + multipleOf(t, r) { + return this._addCheck({ kind: "multipleOf", value: t, message: N.toString(r) }); + } + get minValue() { + let t = null; + for (let r of this._def.checks) r.kind === "min" && (t === null || r.value > t) && (t = r.value); + return t; + } + get maxValue() { + let t = null; + for (let r of this._def.checks) r.kind === "max" && (t === null || r.value < t) && (t = r.value); + return t; + } +}; +au.create = (e21) => new au({ checks: [], typeName: F.ZodBigInt, coerce: e21?.coerce ?? false, ...W(e21) }); +var su = class extends te { + _parse(t) { + if (this._def.coerce && (t.data = !!t.data), this._getType(t) !== j.boolean) { + let n = this._getOrReturnCtx(t); + return z(n, { code: E.invalid_type, expected: j.boolean, received: n.parsedType }), H; + } + return Mt(t.data); + } +}; +su.create = (e21) => new su({ typeName: F.ZodBoolean, coerce: e21?.coerce || false, ...W(e21) }); +var cu = class e11 extends te { + _parse(t) { + if (this._def.coerce && (t.data = new Date(t.data)), this._getType(t) !== j.date) { + let o = this._getOrReturnCtx(t); + return z(o, { code: E.invalid_type, expected: j.date, received: o.parsedType }), H; + } + if (Number.isNaN(t.data.getTime())) { + let o = this._getOrReturnCtx(t); + return z(o, { code: E.invalid_date }), H; + } + let n = new Et(), i; + for (let o of this._def.checks) o.kind === "min" ? t.data.getTime() < o.value && (i = this._getOrReturnCtx(t, i), z(i, { code: E.too_small, message: o.message, inclusive: true, exact: false, minimum: o.value, type: "date" }), n.dirty()) : o.kind === "max" ? t.data.getTime() > o.value && (i = this._getOrReturnCtx(t, i), z(i, { code: E.too_big, message: o.message, inclusive: true, exact: false, maximum: o.value, type: "date" }), n.dirty()) : ce.assertNever(o); + return { status: n.value, value: new Date(t.data.getTime()) }; + } + _addCheck(t) { + return new e11({ ...this._def, checks: [...this._def.checks, t] }); + } + min(t, r) { + return this._addCheck({ kind: "min", value: t.getTime(), message: N.toString(r) }); + } + max(t, r) { + return this._addCheck({ kind: "max", value: t.getTime(), message: N.toString(r) }); + } + get minDate() { + let t = null; + for (let r of this._def.checks) r.kind === "min" && (t === null || r.value > t) && (t = r.value); + return t != null ? new Date(t) : null; + } + get maxDate() { + let t = null; + for (let r of this._def.checks) r.kind === "max" && (t === null || r.value < t) && (t = r.value); + return t != null ? new Date(t) : null; + } +}; +cu.create = (e21) => new cu({ checks: [], coerce: e21?.coerce || false, typeName: F.ZodDate, ...W(e21) }); +var uu = class extends te { + _parse(t) { + if (this._getType(t) !== j.symbol) { + let n = this._getOrReturnCtx(t); + return z(n, { code: E.invalid_type, expected: j.symbol, received: n.parsedType }), H; + } + return Mt(t.data); + } +}; +uu.create = (e21) => new uu({ typeName: F.ZodSymbol, ...W(e21) }); +var da = class extends te { + _parse(t) { + if (this._getType(t) !== j.undefined) { + let n = this._getOrReturnCtx(t); + return z(n, { code: E.invalid_type, expected: j.undefined, received: n.parsedType }), H; + } + return Mt(t.data); + } +}; +da.create = (e21) => new da({ typeName: F.ZodUndefined, ...W(e21) }); +var fa = class extends te { + _parse(t) { + if (this._getType(t) !== j.null) { + let n = this._getOrReturnCtx(t); + return z(n, { code: E.invalid_type, expected: j.null, received: n.parsedType }), H; + } + return Mt(t.data); + } +}; +fa.create = (e21) => new fa({ typeName: F.ZodNull, ...W(e21) }); +var lu = class extends te { + constructor() { + super(...arguments), this._any = true; + } + _parse(t) { + return Mt(t.data); + } +}; +lu.create = (e21) => new lu({ typeName: F.ZodAny, ...W(e21) }); +var Qn = class extends te { + constructor() { + super(...arguments), this._unknown = true; + } + _parse(t) { + return Mt(t.data); + } +}; +Qn.create = (e21) => new Qn({ typeName: F.ZodUnknown, ...W(e21) }); +var on = class extends te { + _parse(t) { + let r = this._getOrReturnCtx(t); + return z(r, { code: E.invalid_type, expected: j.never, received: r.parsedType }), H; + } +}; +on.create = (e21) => new on({ typeName: F.ZodNever, ...W(e21) }); +var pu = class extends te { + _parse(t) { + if (this._getType(t) !== j.undefined) { + let n = this._getOrReturnCtx(t); + return z(n, { code: E.invalid_type, expected: j.void, received: n.parsedType }), H; + } + return Mt(t.data); + } +}; +pu.create = (e21) => new pu({ typeName: F.ZodVoid, ...W(e21) }); +var ei = class e12 extends te { + _parse(t) { + let { ctx: r, status: n } = this._processInputParams(t), i = this._def; + if (r.parsedType !== j.array) return z(r, { code: E.invalid_type, expected: j.array, received: r.parsedType }), H; + if (i.exactLength !== null) { + let a = r.data.length > i.exactLength.value, s = r.data.length < i.exactLength.value; + (a || s) && (z(r, { code: a ? E.too_big : E.too_small, minimum: s ? i.exactLength.value : void 0, maximum: a ? i.exactLength.value : void 0, type: "array", inclusive: true, exact: true, message: i.exactLength.message }), n.dirty()); + } + if (i.minLength !== null && r.data.length < i.minLength.value && (z(r, { code: E.too_small, minimum: i.minLength.value, type: "array", inclusive: true, exact: false, message: i.minLength.message }), n.dirty()), i.maxLength !== null && r.data.length > i.maxLength.value && (z(r, { code: E.too_big, maximum: i.maxLength.value, type: "array", inclusive: true, exact: false, message: i.maxLength.message }), n.dirty()), r.common.async) return Promise.all([...r.data].map((a, s) => i.type._parseAsync(new Sr(r, a, r.path, s)))).then((a) => Et.mergeArray(n, a)); + let o = [...r.data].map((a, s) => i.type._parseSync(new Sr(r, a, r.path, s))); + return Et.mergeArray(n, o); + } + get element() { + return this._def.type; + } + min(t, r) { + return new e12({ ...this._def, minLength: { value: t, message: N.toString(r) } }); + } + max(t, r) { + return new e12({ ...this._def, maxLength: { value: t, message: N.toString(r) } }); + } + length(t, r) { + return new e12({ ...this._def, exactLength: { value: t, message: N.toString(r) } }); + } + nonempty(t) { + return this.min(1, t); + } +}; +ei.create = (e21, t) => new ei({ type: e21, minLength: null, maxLength: null, exactLength: null, typeName: F.ZodArray, ...W(t) }); +function la(e21) { + if (e21 instanceof vr) { + let t = {}; + for (let r in e21.shape) { + let n = e21.shape[r]; + t[r] = qr.create(la(n)); + } + return new vr({ ...e21._def, shape: () => t }); + } else return e21 instanceof ei ? new ei({ ...e21._def, type: la(e21.element) }) : e21 instanceof qr ? qr.create(la(e21.unwrap())) : e21 instanceof kn ? kn.create(la(e21.unwrap())) : e21 instanceof Sn ? Sn.create(e21.items.map((t) => la(t))) : e21; +} +var vr = class e13 extends te { + constructor() { + super(...arguments), this._cached = null, this.nonstrict = this.passthrough, this.augment = this.extend; + } + _getCached() { + if (this._cached !== null) return this._cached; + let t = this._def.shape(), r = ce.objectKeys(t); + return this._cached = { shape: t, keys: r }, this._cached; + } + _parse(t) { + if (this._getType(t) !== j.object) { + let u = this._getOrReturnCtx(t); + return z(u, { code: E.invalid_type, expected: j.object, received: u.parsedType }), H; + } + let { status: n, ctx: i } = this._processInputParams(t), { shape: o, keys: a } = this._getCached(), s = []; + if (!(this._def.catchall instanceof on && this._def.unknownKeys === "strip")) for (let u in i.data) a.includes(u) || s.push(u); + let c = []; + for (let u of a) { + let l = o[u], p = i.data[u]; + c.push({ key: { status: "valid", value: u }, value: l._parse(new Sr(i, p, i.path, u)), alwaysSet: u in i.data }); + } + if (this._def.catchall instanceof on) { + let u = this._def.unknownKeys; + if (u === "passthrough") for (let l of s) c.push({ key: { status: "valid", value: l }, value: { status: "valid", value: i.data[l] } }); + else if (u === "strict") s.length > 0 && (z(i, { code: E.unrecognized_keys, keys: s }), n.dirty()); + else if (u !== "strip") throw new Error("Internal ZodObject error: invalid unknownKeys value."); + } else { + let u = this._def.catchall; + for (let l of s) { + let p = i.data[l]; + c.push({ key: { status: "valid", value: l }, value: u._parse(new Sr(i, p, i.path, l)), alwaysSet: l in i.data }); + } + } + return i.common.async ? Promise.resolve().then(async () => { + let u = []; + for (let l of c) { + let p = await l.key, d = await l.value; + u.push({ key: p, value: d, alwaysSet: l.alwaysSet }); + } + return u; + }).then((u) => Et.mergeObjectSync(n, u)) : Et.mergeObjectSync(n, c); + } + get shape() { + return this._def.shape(); + } + strict(t) { + return N.errToObj, new e13({ ...this._def, unknownKeys: "strict", ...t !== void 0 ? { errorMap: (r, n) => { + let i = this._def.errorMap?.(r, n).message ?? n.defaultError; + return r.code === "unrecognized_keys" ? { message: N.errToObj(t).message ?? i } : { message: i }; + } } : {} }); + } + strip() { + return new e13({ ...this._def, unknownKeys: "strip" }); + } + passthrough() { + return new e13({ ...this._def, unknownKeys: "passthrough" }); + } + extend(t) { + return new e13({ ...this._def, shape: () => ({ ...this._def.shape(), ...t }) }); + } + merge(t) { + return new e13({ unknownKeys: t._def.unknownKeys, catchall: t._def.catchall, shape: () => ({ ...this._def.shape(), ...t._def.shape() }), typeName: F.ZodObject }); + } + setKey(t, r) { + return this.augment({ [t]: r }); + } + catchall(t) { + return new e13({ ...this._def, catchall: t }); + } + pick(t) { + let r = {}; + for (let n of ce.objectKeys(t)) t[n] && this.shape[n] && (r[n] = this.shape[n]); + return new e13({ ...this._def, shape: () => r }); + } + omit(t) { + let r = {}; + for (let n of ce.objectKeys(this.shape)) t[n] || (r[n] = this.shape[n]); + return new e13({ ...this._def, shape: () => r }); + } + deepPartial() { + return la(this); + } + partial(t) { + let r = {}; + for (let n of ce.objectKeys(this.shape)) { + let i = this.shape[n]; + t && !t[n] ? r[n] = i : r[n] = i.optional(); + } + return new e13({ ...this._def, shape: () => r }); + } + required(t) { + let r = {}; + for (let n of ce.objectKeys(this.shape)) if (t && !t[n]) r[n] = this.shape[n]; + else { + let o = this.shape[n]; + for (; o instanceof qr; ) o = o._def.innerType; + r[n] = o; + } + return new e13({ ...this._def, shape: () => r }); + } + keyof() { + return A2(ce.objectKeys(this.shape)); + } +}; +vr.create = (e21, t) => new vr({ shape: () => e21, unknownKeys: "strip", catchall: on.create(), typeName: F.ZodObject, ...W(t) }); +vr.strictCreate = (e21, t) => new vr({ shape: () => e21, unknownKeys: "strict", catchall: on.create(), typeName: F.ZodObject, ...W(t) }); +vr.lazycreate = (e21, t) => new vr({ shape: e21, unknownKeys: "strip", catchall: on.create(), typeName: F.ZodObject, ...W(t) }); +var ma = class extends te { + _parse(t) { + let { ctx: r } = this._processInputParams(t), n = this._def.options; + function i(o) { + for (let s of o) if (s.result.status === "valid") return s.result; + for (let s of o) if (s.result.status === "dirty") return r.common.issues.push(...s.ctx.common.issues), s.result; + let a = o.map((s) => new hr(s.ctx.common.issues)); + return z(r, { code: E.invalid_union, unionErrors: a }), H; + } + if (r.common.async) return Promise.all(n.map(async (o) => { + let a = { ...r, common: { ...r.common, issues: [] }, parent: null }; + return { result: await o._parseAsync({ data: r.data, path: r.path, parent: a }), ctx: a }; + })).then(i); + { + let o, a = []; + for (let c of n) { + let u = { ...r, common: { ...r.common, issues: [] }, parent: null }, l = c._parseSync({ data: r.data, path: r.path, parent: u }); + if (l.status === "valid") return l; + l.status === "dirty" && !o && (o = { result: l, ctx: u }), u.common.issues.length && a.push(u.common.issues); + } + if (o) return r.common.issues.push(...o.ctx.common.issues), o.result; + let s = a.map((c) => new hr(c)); + return z(r, { code: E.invalid_union, unionErrors: s }), H; + } + } + get options() { + return this._def.options; + } +}; +ma.create = (e21, t) => new ma({ options: e21, typeName: F.ZodUnion, ...W(t) }); +var $n = (e21) => e21 instanceof va ? $n(e21.schema) : e21 instanceof Ur ? $n(e21.innerType()) : e21 instanceof ga ? [e21.value] : e21 instanceof ya ? e21.options : e21 instanceof xa ? ce.objectValues(e21.enum) : e21 instanceof ba ? $n(e21._def.innerType) : e21 instanceof da ? [void 0] : e21 instanceof fa ? [null] : e21 instanceof qr ? [void 0, ...$n(e21.unwrap())] : e21 instanceof kn ? [null, ...$n(e21.unwrap())] : e21 instanceof Yd || e21 instanceof wa ? $n(e21.unwrap()) : e21 instanceof _a ? $n(e21._def.innerType) : []; +var Ub = class e14 extends te { + _parse(t) { + let { ctx: r } = this._processInputParams(t); + if (r.parsedType !== j.object) return z(r, { code: E.invalid_type, expected: j.object, received: r.parsedType }), H; + let n = this.discriminator, i = r.data[n], o = this.optionsMap.get(i); + return o ? r.common.async ? o._parseAsync({ data: r.data, path: r.path, parent: r }) : o._parseSync({ data: r.data, path: r.path, parent: r }) : (z(r, { code: E.invalid_union_discriminator, options: Array.from(this.optionsMap.keys()), path: [n] }), H); + } + get discriminator() { + return this._def.discriminator; + } + get options() { + return this._def.options; + } + get optionsMap() { + return this._def.optionsMap; + } + static create(t, r, n) { + let i = /* @__PURE__ */ new Map(); + for (let o of r) { + let a = $n(o.shape[t]); + if (!a.length) throw new Error(`A discriminator value for key \`${t}\` could not be extracted from all schema options`); + for (let s of a) { + if (i.has(s)) throw new Error(`Discriminator property ${String(t)} has duplicate value ${String(s)}`); + i.set(s, o); + } + } + return new e14({ typeName: F.ZodDiscriminatedUnion, discriminator: t, options: r, optionsMap: i, ...W(n) }); + } +}; +function Lb(e21, t) { + let r = wn(e21), n = wn(t); + if (e21 === t) return { valid: true, data: e21 }; + if (r === j.object && n === j.object) { + let i = ce.objectKeys(t), o = ce.objectKeys(e21).filter((s) => i.indexOf(s) !== -1), a = { ...e21, ...t }; + for (let s of o) { + let c = Lb(e21[s], t[s]); + if (!c.valid) return { valid: false }; + a[s] = c.data; + } + return { valid: true, data: a }; + } else if (r === j.array && n === j.array) { + if (e21.length !== t.length) return { valid: false }; + let i = []; + for (let o = 0; o < e21.length; o++) { + let a = e21[o], s = t[o], c = Lb(a, s); + if (!c.valid) return { valid: false }; + i.push(c.data); + } + return { valid: true, data: i }; + } else return r === j.date && n === j.date && +e21 == +t ? { valid: true, data: e21 } : { valid: false }; +} +var ha = class extends te { + _parse(t) { + let { status: r, ctx: n } = this._processInputParams(t), i = (o, a) => { + if (Nb(o) || Nb(a)) return H; + let s = Lb(o.value, a.value); + return s.valid ? ((Db(o) || Db(a)) && r.dirty(), { status: r.value, value: s.data }) : (z(n, { code: E.invalid_intersection_types }), H); + }; + return n.common.async ? Promise.all([this._def.left._parseAsync({ data: n.data, path: n.path, parent: n }), this._def.right._parseAsync({ data: n.data, path: n.path, parent: n })]).then(([o, a]) => i(o, a)) : i(this._def.left._parseSync({ data: n.data, path: n.path, parent: n }), this._def.right._parseSync({ data: n.data, path: n.path, parent: n })); + } +}; +ha.create = (e21, t, r) => new ha({ left: e21, right: t, typeName: F.ZodIntersection, ...W(r) }); +var Sn = class e15 extends te { + _parse(t) { + let { status: r, ctx: n } = this._processInputParams(t); + if (n.parsedType !== j.array) return z(n, { code: E.invalid_type, expected: j.array, received: n.parsedType }), H; + if (n.data.length < this._def.items.length) return z(n, { code: E.too_small, minimum: this._def.items.length, inclusive: true, exact: false, type: "array" }), H; + !this._def.rest && n.data.length > this._def.items.length && (z(n, { code: E.too_big, maximum: this._def.items.length, inclusive: true, exact: false, type: "array" }), r.dirty()); + let o = [...n.data].map((a, s) => { + let c = this._def.items[s] || this._def.rest; + return c ? c._parse(new Sr(n, a, n.path, s)) : null; + }).filter((a) => !!a); + return n.common.async ? Promise.all(o).then((a) => Et.mergeArray(r, a)) : Et.mergeArray(r, o); + } + get items() { + return this._def.items; + } + rest(t) { + return new e15({ ...this._def, rest: t }); + } +}; +Sn.create = (e21, t) => { + if (!Array.isArray(e21)) throw new Error("You must pass an array of schemas to z.tuple([ ... ])"); + return new Sn({ items: e21, typeName: F.ZodTuple, rest: null, ...W(t) }); +}; +var Mb = class e16 extends te { + get keySchema() { + return this._def.keyType; + } + get valueSchema() { + return this._def.valueType; + } + _parse(t) { + let { status: r, ctx: n } = this._processInputParams(t); + if (n.parsedType !== j.object) return z(n, { code: E.invalid_type, expected: j.object, received: n.parsedType }), H; + let i = [], o = this._def.keyType, a = this._def.valueType; + for (let s in n.data) i.push({ key: o._parse(new Sr(n, s, n.path, s)), value: a._parse(new Sr(n, n.data[s], n.path, s)), alwaysSet: s in n.data }); + return n.common.async ? Et.mergeObjectAsync(r, i) : Et.mergeObjectSync(r, i); + } + get element() { + return this._def.valueType; + } + static create(t, r, n) { + return r instanceof te ? new e16({ keyType: t, valueType: r, typeName: F.ZodRecord, ...W(n) }) : new e16({ keyType: pa.create(), valueType: t, typeName: F.ZodRecord, ...W(r) }); + } +}; +var du = class extends te { + get keySchema() { + return this._def.keyType; + } + get valueSchema() { + return this._def.valueType; + } + _parse(t) { + let { status: r, ctx: n } = this._processInputParams(t); + if (n.parsedType !== j.map) return z(n, { code: E.invalid_type, expected: j.map, received: n.parsedType }), H; + let i = this._def.keyType, o = this._def.valueType, a = [...n.data.entries()].map(([s, c], u) => ({ key: i._parse(new Sr(n, s, n.path, [u, "key"])), value: o._parse(new Sr(n, c, n.path, [u, "value"])) })); + if (n.common.async) { + let s = /* @__PURE__ */ new Map(); + return Promise.resolve().then(async () => { + for (let c of a) { + let u = await c.key, l = await c.value; + if (u.status === "aborted" || l.status === "aborted") return H; + (u.status === "dirty" || l.status === "dirty") && r.dirty(), s.set(u.value, l.value); + } + return { status: r.value, value: s }; + }); + } else { + let s = /* @__PURE__ */ new Map(); + for (let c of a) { + let u = c.key, l = c.value; + if (u.status === "aborted" || l.status === "aborted") return H; + (u.status === "dirty" || l.status === "dirty") && r.dirty(), s.set(u.value, l.value); + } + return { status: r.value, value: s }; + } + } +}; +du.create = (e21, t, r) => new du({ valueType: t, keyType: e21, typeName: F.ZodMap, ...W(r) }); +var fu = class e17 extends te { + _parse(t) { + let { status: r, ctx: n } = this._processInputParams(t); + if (n.parsedType !== j.set) return z(n, { code: E.invalid_type, expected: j.set, received: n.parsedType }), H; + let i = this._def; + i.minSize !== null && n.data.size < i.minSize.value && (z(n, { code: E.too_small, minimum: i.minSize.value, type: "set", inclusive: true, exact: false, message: i.minSize.message }), r.dirty()), i.maxSize !== null && n.data.size > i.maxSize.value && (z(n, { code: E.too_big, maximum: i.maxSize.value, type: "set", inclusive: true, exact: false, message: i.maxSize.message }), r.dirty()); + let o = this._def.valueType; + function a(c) { + let u = /* @__PURE__ */ new Set(); + for (let l of c) { + if (l.status === "aborted") return H; + l.status === "dirty" && r.dirty(), u.add(l.value); + } + return { status: r.value, value: u }; + } + let s = [...n.data.values()].map((c, u) => o._parse(new Sr(n, c, n.path, u))); + return n.common.async ? Promise.all(s).then((c) => a(c)) : a(s); + } + min(t, r) { + return new e17({ ...this._def, minSize: { value: t, message: N.toString(r) } }); + } + max(t, r) { + return new e17({ ...this._def, maxSize: { value: t, message: N.toString(r) } }); + } + size(t, r) { + return this.min(t, r).max(t, r); + } + nonempty(t) { + return this.min(1, t); + } +}; +fu.create = (e21, t) => new fu({ valueType: e21, minSize: null, maxSize: null, typeName: F.ZodSet, ...W(t) }); +var Fb = class e18 extends te { + constructor() { + super(...arguments), this.validate = this.implement; + } + _parse(t) { + let { ctx: r } = this._processInputParams(t); + if (r.parsedType !== j.function) return z(r, { code: E.invalid_type, expected: j.function, received: r.parsedType }), H; + function n(s, c) { + return Xd({ data: s, path: r.path, errorMaps: [r.common.contextualErrorMap, r.schemaErrorMap, nu(), Yn].filter((u) => !!u), issueData: { code: E.invalid_arguments, argumentsError: c } }); + } + function i(s, c) { + return Xd({ data: s, path: r.path, errorMaps: [r.common.contextualErrorMap, r.schemaErrorMap, nu(), Yn].filter((u) => !!u), issueData: { code: E.invalid_return_type, returnTypeError: c } }); + } + let o = { errorMap: r.common.contextualErrorMap }, a = r.data; + if (this._def.returns instanceof Bi) { + let s = this; + return Mt(async function(...c) { + let u = new hr([]), l = await s._def.args.parseAsync(c, o).catch((f) => { + throw u.addIssue(n(c, f)), u; + }), p = await Reflect.apply(a, this, l); + return await s._def.returns._def.type.parseAsync(p, o).catch((f) => { + throw u.addIssue(i(p, f)), u; + }); + }); + } else { + let s = this; + return Mt(function(...c) { + let u = s._def.args.safeParse(c, o); + if (!u.success) throw new hr([n(c, u.error)]); + let l = Reflect.apply(a, this, u.data), p = s._def.returns.safeParse(l, o); + if (!p.success) throw new hr([i(l, p.error)]); + return p.data; + }); + } + } + parameters() { + return this._def.args; + } + returnType() { + return this._def.returns; + } + args(...t) { + return new e18({ ...this._def, args: Sn.create(t).rest(Qn.create()) }); + } + returns(t) { + return new e18({ ...this._def, returns: t }); + } + implement(t) { + return this.parse(t); + } + strictImplement(t) { + return this.parse(t); + } + static create(t, r, n) { + return new e18({ args: t || Sn.create([]).rest(Qn.create()), returns: r || Qn.create(), typeName: F.ZodFunction, ...W(n) }); + } +}; +var va = class extends te { + get schema() { + return this._def.getter(); + } + _parse(t) { + let { ctx: r } = this._processInputParams(t); + return this._def.getter()._parse({ data: r.data, path: r.path, parent: r }); + } +}; +va.create = (e21, t) => new va({ getter: e21, typeName: F.ZodLazy, ...W(t) }); +var ga = class extends te { + _parse(t) { + if (t.data !== this._def.value) { + let r = this._getOrReturnCtx(t); + return z(r, { received: r.data, code: E.invalid_literal, expected: this._def.value }), H; + } + return { status: "valid", value: t.data }; + } + get value() { + return this._def.value; + } +}; +ga.create = (e21, t) => new ga({ value: e21, typeName: F.ZodLiteral, ...W(t) }); +function A2(e21, t) { + return new ya({ values: e21, typeName: F.ZodEnum, ...W(t) }); +} +var ya = class e19 extends te { + _parse(t) { + if (typeof t.data != "string") { + let r = this._getOrReturnCtx(t), n = this._def.values; + return z(r, { expected: ce.joinValues(n), received: r.parsedType, code: E.invalid_type }), H; + } + if (this._cache || (this._cache = new Set(this._def.values)), !this._cache.has(t.data)) { + let r = this._getOrReturnCtx(t), n = this._def.values; + return z(r, { received: r.data, code: E.invalid_enum_value, options: n }), H; + } + return Mt(t.data); + } + get options() { + return this._def.values; + } + get enum() { + let t = {}; + for (let r of this._def.values) t[r] = r; + return t; + } + get Values() { + let t = {}; + for (let r of this._def.values) t[r] = r; + return t; + } + get Enum() { + let t = {}; + for (let r of this._def.values) t[r] = r; + return t; + } + extract(t, r = this._def) { + return e19.create(t, { ...this._def, ...r }); + } + exclude(t, r = this._def) { + return e19.create(this.options.filter((n) => !t.includes(n)), { ...this._def, ...r }); + } +}; +ya.create = A2; +var xa = class extends te { + _parse(t) { + let r = ce.getValidEnumValues(this._def.values), n = this._getOrReturnCtx(t); + if (n.parsedType !== j.string && n.parsedType !== j.number) { + let i = ce.objectValues(r); + return z(n, { expected: ce.joinValues(i), received: n.parsedType, code: E.invalid_type }), H; + } + if (this._cache || (this._cache = new Set(ce.getValidEnumValues(this._def.values))), !this._cache.has(t.data)) { + let i = ce.objectValues(r); + return z(n, { received: n.data, code: E.invalid_enum_value, options: i }), H; + } + return Mt(t.data); + } + get enum() { + return this._def.values; + } +}; +xa.create = (e21, t) => new xa({ values: e21, typeName: F.ZodNativeEnum, ...W(t) }); +var Bi = class extends te { + unwrap() { + return this._def.type; + } + _parse(t) { + let { ctx: r } = this._processInputParams(t); + if (r.parsedType !== j.promise && r.common.async === false) return z(r, { code: E.invalid_type, expected: j.promise, received: r.parsedType }), H; + let n = r.parsedType === j.promise ? r.data : Promise.resolve(r.data); + return Mt(n.then((i) => this._def.type.parseAsync(i, { path: r.path, errorMap: r.common.contextualErrorMap }))); + } +}; +Bi.create = (e21, t) => new Bi({ type: e21, typeName: F.ZodPromise, ...W(t) }); +var Ur = class extends te { + innerType() { + return this._def.schema; + } + sourceType() { + return this._def.schema._def.typeName === F.ZodEffects ? this._def.schema.sourceType() : this._def.schema; + } + _parse(t) { + let { status: r, ctx: n } = this._processInputParams(t), i = this._def.effect || null, o = { addIssue: (a) => { + z(n, a), a.fatal ? r.abort() : r.dirty(); + }, get path() { + return n.path; + } }; + if (o.addIssue = o.addIssue.bind(o), i.type === "preprocess") { + let a = i.transform(n.data, o); + if (n.common.async) return Promise.resolve(a).then(async (s) => { + if (r.value === "aborted") return H; + let c = await this._def.schema._parseAsync({ data: s, path: n.path, parent: n }); + return c.status === "aborted" ? H : c.status === "dirty" ? ua(c.value) : r.value === "dirty" ? ua(c.value) : c; + }); + { + if (r.value === "aborted") return H; + let s = this._def.schema._parseSync({ data: a, path: n.path, parent: n }); + return s.status === "aborted" ? H : s.status === "dirty" ? ua(s.value) : r.value === "dirty" ? ua(s.value) : s; + } + } + if (i.type === "refinement") { + let a = (s) => { + let c = i.refinement(s, o); + if (n.common.async) return Promise.resolve(c); + if (c instanceof Promise) throw new Error("Async refinement encountered during synchronous parse operation. Use .parseAsync instead."); + return s; + }; + if (n.common.async === false) { + let s = this._def.schema._parseSync({ data: n.data, path: n.path, parent: n }); + return s.status === "aborted" ? H : (s.status === "dirty" && r.dirty(), a(s.value), { status: r.value, value: s.value }); + } else return this._def.schema._parseAsync({ data: n.data, path: n.path, parent: n }).then((s) => s.status === "aborted" ? H : (s.status === "dirty" && r.dirty(), a(s.value).then(() => ({ status: r.value, value: s.value })))); + } + if (i.type === "transform") if (n.common.async === false) { + let a = this._def.schema._parseSync({ data: n.data, path: n.path, parent: n }); + if (!Zi(a)) return H; + let s = i.transform(a.value, o); + if (s instanceof Promise) throw new Error("Asynchronous transform encountered during synchronous parse operation. Use .parseAsync instead."); + return { status: r.value, value: s }; + } else return this._def.schema._parseAsync({ data: n.data, path: n.path, parent: n }).then((a) => Zi(a) ? Promise.resolve(i.transform(a.value, o)).then((s) => ({ status: r.value, value: s })) : H); + ce.assertNever(i); + } +}; +Ur.create = (e21, t, r) => new Ur({ schema: e21, typeName: F.ZodEffects, effect: t, ...W(r) }); +Ur.createWithPreprocess = (e21, t, r) => new Ur({ schema: t, effect: { type: "preprocess", transform: e21 }, typeName: F.ZodEffects, ...W(r) }); +var qr = class extends te { + _parse(t) { + return this._getType(t) === j.undefined ? Mt(void 0) : this._def.innerType._parse(t); + } + unwrap() { + return this._def.innerType; + } +}; +qr.create = (e21, t) => new qr({ innerType: e21, typeName: F.ZodOptional, ...W(t) }); +var kn = class extends te { + _parse(t) { + return this._getType(t) === j.null ? Mt(null) : this._def.innerType._parse(t); + } + unwrap() { + return this._def.innerType; + } +}; +kn.create = (e21, t) => new kn({ innerType: e21, typeName: F.ZodNullable, ...W(t) }); +var ba = class extends te { + _parse(t) { + let { ctx: r } = this._processInputParams(t), n = r.data; + return r.parsedType === j.undefined && (n = this._def.defaultValue()), this._def.innerType._parse({ data: n, path: r.path, parent: r }); + } + removeDefault() { + return this._def.innerType; + } +}; +ba.create = (e21, t) => new ba({ innerType: e21, typeName: F.ZodDefault, defaultValue: typeof t.default == "function" ? t.default : () => t.default, ...W(t) }); +var _a = class extends te { + _parse(t) { + let { ctx: r } = this._processInputParams(t), n = { ...r, common: { ...r.common, issues: [] } }, i = this._def.innerType._parse({ data: n.data, path: n.path, parent: { ...n } }); + return iu(i) ? i.then((o) => ({ status: "valid", value: o.status === "valid" ? o.value : this._def.catchValue({ get error() { + return new hr(n.common.issues); + }, input: n.data }) })) : { status: "valid", value: i.status === "valid" ? i.value : this._def.catchValue({ get error() { + return new hr(n.common.issues); + }, input: n.data }) }; + } + removeCatch() { + return this._def.innerType; + } +}; +_a.create = (e21, t) => new _a({ innerType: e21, typeName: F.ZodCatch, catchValue: typeof t.catch == "function" ? t.catch : () => t.catch, ...W(t) }); +var mu = class extends te { + _parse(t) { + if (this._getType(t) !== j.nan) { + let n = this._getOrReturnCtx(t); + return z(n, { code: E.invalid_type, expected: j.nan, received: n.parsedType }), H; + } + return { status: "valid", value: t.data }; + } +}; +mu.create = (e21) => new mu({ typeName: F.ZodNaN, ...W(e21) }); +var Yd = class extends te { + _parse(t) { + let { ctx: r } = this._processInputParams(t), n = r.data; + return this._def.type._parse({ data: n, path: r.path, parent: r }); + } + unwrap() { + return this._def.type; + } +}; +var Qd = class e20 extends te { + _parse(t) { + let { status: r, ctx: n } = this._processInputParams(t); + if (n.common.async) return (async () => { + let o = await this._def.in._parseAsync({ data: n.data, path: n.path, parent: n }); + return o.status === "aborted" ? H : o.status === "dirty" ? (r.dirty(), ua(o.value)) : this._def.out._parseAsync({ data: o.value, path: n.path, parent: n }); + })(); + { + let i = this._def.in._parseSync({ data: n.data, path: n.path, parent: n }); + return i.status === "aborted" ? H : i.status === "dirty" ? (r.dirty(), { status: "dirty", value: i.value }) : this._def.out._parseSync({ data: i.value, path: n.path, parent: n }); + } + } + static create(t, r) { + return new e20({ in: t, out: r, typeName: F.ZodPipeline }); + } +}; +var wa = class extends te { + _parse(t) { + let r = this._def.innerType._parse(t), n = (i) => (Zi(i) && (i.value = Object.freeze(i.value)), i); + return iu(r) ? r.then((i) => n(i)) : n(r); + } + unwrap() { + return this._def.innerType; + } +}; +wa.create = (e21, t) => new wa({ innerType: e21, typeName: F.ZodReadonly, ...W(t) }); +var _me = { object: vr.lazycreate }; +var F; +(function(e21) { + e21.ZodString = "ZodString", e21.ZodNumber = "ZodNumber", e21.ZodNaN = "ZodNaN", e21.ZodBigInt = "ZodBigInt", e21.ZodBoolean = "ZodBoolean", e21.ZodDate = "ZodDate", e21.ZodSymbol = "ZodSymbol", e21.ZodUndefined = "ZodUndefined", e21.ZodNull = "ZodNull", e21.ZodAny = "ZodAny", e21.ZodUnknown = "ZodUnknown", e21.ZodNever = "ZodNever", e21.ZodVoid = "ZodVoid", e21.ZodArray = "ZodArray", e21.ZodObject = "ZodObject", e21.ZodUnion = "ZodUnion", e21.ZodDiscriminatedUnion = "ZodDiscriminatedUnion", e21.ZodIntersection = "ZodIntersection", e21.ZodTuple = "ZodTuple", e21.ZodRecord = "ZodRecord", e21.ZodMap = "ZodMap", e21.ZodSet = "ZodSet", e21.ZodFunction = "ZodFunction", e21.ZodLazy = "ZodLazy", e21.ZodLiteral = "ZodLiteral", e21.ZodEnum = "ZodEnum", e21.ZodEffects = "ZodEffects", e21.ZodNativeEnum = "ZodNativeEnum", e21.ZodOptional = "ZodOptional", e21.ZodNullable = "ZodNullable", e21.ZodDefault = "ZodDefault", e21.ZodCatch = "ZodCatch", e21.ZodPromise = "ZodPromise", e21.ZodBranded = "ZodBranded", e21.ZodPipeline = "ZodPipeline", e21.ZodReadonly = "ZodReadonly"; +})(F || (F = {})); +var wme = pa.create; +var $me = ou.create; +var Sme = mu.create; +var kme = au.create; +var Eme = su.create; +var Ome = cu.create; +var Tme = uu.create; +var Ime = da.create; +var zme = fa.create; +var Pme = lu.create; +var jme = Qn.create; +var Ame = on.create; +var Rme = pu.create; +var Cme = ei.create; +var $G = vr.create; +var Nme = vr.strictCreate; +var Dme = ma.create; +var qme = Ub.create; +var Ume = ha.create; +var Lme = Sn.create; +var Mme = Mb.create; +var Fme = du.create; +var Zme = fu.create; +var Bme = Fb.create; +var Vme = va.create; +var Hme = ga.create; +var Jme = ya.create; +var Gme = xa.create; +var Wme = Bi.create; +var Kme = Ur.create; +var Xme = qr.create; +var Yme = kn.create; +var Qme = Ur.createWithPreprocess; +var ehe = Qd.create; +function $a(e21) { + return !!e21._zod; +} +function ti(e21, t) { + return $a(e21) ? go(e21, t) : e21.safeParse(t); +} +function ef(e21) { + if (!e21) return; + let t; + if ($a(e21) ? t = e21._zod?.def?.shape : t = e21.shape, !!t) { + if (typeof t == "function") try { + return t(); + } catch { + return; + } + return t; + } +} +function N2(e21) { + if ($a(e21)) { + let o = e21._zod?.def; + if (o) { + if (o.value !== void 0) return o.value; + if (Array.isArray(o.values) && o.values.length > 0) return o.values[0]; + } + } + let r = e21._def; + if (r) { + if (r.value !== void 0) return r.value; + if (Array.isArray(r.values) && r.values.length > 0) return r.values[0]; + } + let n = e21.value; + if (n !== void 0) return n; +} +function ri(e21) { + return e21 === "completed" || e21 === "failed" || e21 === "cancelled"; +} +var gve = new Set("ABCDEFGHIJKLMNOPQRSTUVXYZabcdefghijklmnopqrstuvxyz0123456789"); +function Zb(e21) { + let r = ef(e21)?.method; + if (!r) throw new Error("Schema is missing a method literal"); + let n = N2(r); + if (typeof n != "string") throw new Error("Schema method literal must be a string"); + return n; +} +function Bb(e21, t) { + let r = ti(e21, t); + if (!r.success) throw r.error; + return r.data; +} +var NG = 6e4; +var tf = class { + constructor(t) { + this._options = t, this._requestMessageId = 0, this._requestHandlers = /* @__PURE__ */ new Map(), this._requestHandlerAbortControllers = /* @__PURE__ */ new Map(), this._notificationHandlers = /* @__PURE__ */ new Map(), this._responseHandlers = /* @__PURE__ */ new Map(), this._progressHandlers = /* @__PURE__ */ new Map(), this._timeoutInfo = /* @__PURE__ */ new Map(), this._pendingDebouncedNotifications = /* @__PURE__ */ new Set(), this._taskProgressTokens = /* @__PURE__ */ new Map(), this._requestResolvers = /* @__PURE__ */ new Map(), this.setNotificationHandler(bp, (r) => { + this._oncancel(r); + }), this.setNotificationHandler($p, (r) => { + this._onprogress(r); + }), this.setRequestHandler(wp, (r) => ({})), this._taskStore = t?.taskStore, this._taskMessageQueue = t?.taskMessageQueue, this._taskStore && (this.setRequestHandler(Sp, async (r, n) => { + let i = await this._taskStore.getTask(r.params.taskId, n.sessionId); + if (!i) throw new Y(se.InvalidParams, "Failed to retrieve task: Task not found"); + return { ...i }; + }), this.setRequestHandler(Ep, async (r, n) => { + let i = async () => { + let o = r.params.taskId; + if (this._taskMessageQueue) { + let s; + for (; s = await this._taskMessageQueue.dequeue(o, n.sessionId); ) { + if (s.type === "response" || s.type === "error") { + let c = s.message, u = c.id, l = this._requestResolvers.get(u); + if (l) if (this._requestResolvers.delete(u), s.type === "response") l(c); + else { + let p = c, d = new Y(p.error.code, p.error.message, p.error.data); + l(d); + } + else { + let p = s.type === "response" ? "Response" : "Error"; + this._onerror(new Error(`${p} handler missing for request ${u}`)); + } + continue; + } + await this._transport?.send(s.message, { relatedRequestId: n.requestId }); + } + } + let a = await this._taskStore.getTask(o, n.sessionId); + if (!a) throw new Y(se.InvalidParams, `Task not found: ${o}`); + if (!ri(a.status)) return await this._waitForTaskUpdate(o, n.signal), await i(); + if (ri(a.status)) { + let s = await this._taskStore.getTaskResult(o, n.sessionId); + return this._clearTaskQueue(o), { ...s, _meta: { ...s._meta, [Mn]: { taskId: o } } }; + } + return await i(); + }; + return await i(); + }), this.setRequestHandler(Op, async (r, n) => { + try { + let { tasks: i, nextCursor: o } = await this._taskStore.listTasks(r.params?.cursor, n.sessionId); + return { tasks: i, nextCursor: o, _meta: {} }; + } catch (i) { + throw new Y(se.InvalidParams, `Failed to list tasks: ${i instanceof Error ? i.message : String(i)}`); + } + }), this.setRequestHandler(Ip, async (r, n) => { + try { + let i = await this._taskStore.getTask(r.params.taskId, n.sessionId); + if (!i) throw new Y(se.InvalidParams, `Task not found: ${r.params.taskId}`); + if (ri(i.status)) throw new Y(se.InvalidParams, `Cannot cancel task in terminal status: ${i.status}`); + await this._taskStore.updateTaskStatus(r.params.taskId, "cancelled", "Client cancelled task execution.", n.sessionId), this._clearTaskQueue(r.params.taskId); + let o = await this._taskStore.getTask(r.params.taskId, n.sessionId); + if (!o) throw new Y(se.InvalidParams, `Task not found after cancellation: ${r.params.taskId}`); + return { _meta: {}, ...o }; + } catch (i) { + throw i instanceof Y ? i : new Y(se.InvalidRequest, `Failed to cancel task: ${i instanceof Error ? i.message : String(i)}`); + } + })); + } + async _oncancel(t) { + if (!t.params.requestId) return; + this._requestHandlerAbortControllers.get(t.params.requestId)?.abort(t.params.reason); + } + _setupTimeout(t, r, n, i, o = false) { + this._timeoutInfo.set(t, { timeoutId: setTimeout(i, r), startTime: Date.now(), timeout: r, maxTotalTimeout: n, resetTimeoutOnProgress: o, onTimeout: i }); + } + _resetTimeout(t) { + let r = this._timeoutInfo.get(t); + if (!r) return false; + let n = Date.now() - r.startTime; + if (r.maxTotalTimeout && n >= r.maxTotalTimeout) throw this._timeoutInfo.delete(t), Y.fromError(se.RequestTimeout, "Maximum total timeout exceeded", { maxTotalTimeout: r.maxTotalTimeout, totalElapsed: n }); + return clearTimeout(r.timeoutId), r.timeoutId = setTimeout(r.onTimeout, r.timeout), true; + } + _cleanupTimeout(t) { + let r = this._timeoutInfo.get(t); + r && (clearTimeout(r.timeoutId), this._timeoutInfo.delete(t)); + } + async connect(t) { + if (this._transport) throw new Error("Already connected to a transport. Call close() before connecting to a new transport, or use a separate Protocol instance per connection."); + this._transport = t; + let r = this.transport?.onclose; + this._transport.onclose = () => { + r?.(), this._onclose(); + }; + let n = this.transport?.onerror; + this._transport.onerror = (o) => { + n?.(o), this._onerror(o); + }; + let i = this._transport?.onmessage; + this._transport.onmessage = (o, a) => { + i?.(o, a), xn(o) || So(o) ? this._onresponse(o) : Fn(o) ? this._onrequest(o, a) : zk(o) ? this._onnotification(o) : this._onerror(new Error(`Unknown message type: ${JSON.stringify(o)}`)); + }, await this._transport.start(); + } + _onclose() { + let t = this._responseHandlers; + this._responseHandlers = /* @__PURE__ */ new Map(), this._progressHandlers.clear(), this._taskProgressTokens.clear(), this._pendingDebouncedNotifications.clear(); + for (let n of this._requestHandlerAbortControllers.values()) n.abort(); + this._requestHandlerAbortControllers.clear(); + let r = Y.fromError(se.ConnectionClosed, "Connection closed"); + this._transport = void 0, this.onclose?.(); + for (let n of t.values()) n(r); + } + _onerror(t) { + this.onerror?.(t); + } + _onnotification(t) { + let r = this._notificationHandlers.get(t.method) ?? this.fallbackNotificationHandler; + r !== void 0 && Promise.resolve().then(() => r(t)).catch((n) => this._onerror(new Error(`Uncaught error in notification handler: ${n}`))); + } + _onrequest(t, r) { + let n = this._requestHandlers.get(t.method) ?? this.fallbackRequestHandler, i = this._transport, o = t.params?._meta?.[Mn]?.taskId; + if (n === void 0) { + let l = { jsonrpc: "2.0", id: t.id, error: { code: se.MethodNotFound, message: "Method not found" } }; + o && this._taskMessageQueue ? this._enqueueTaskMessage(o, { type: "error", message: l, timestamp: Date.now() }, i?.sessionId).catch((p) => this._onerror(new Error(`Failed to enqueue error response: ${p}`))) : i?.send(l).catch((p) => this._onerror(new Error(`Failed to send an error response: ${p}`))); + return; + } + let a = new AbortController(); + this._requestHandlerAbortControllers.set(t.id, a); + let s = Ok(t.params) ? t.params.task : void 0, c = this._taskStore ? this.requestTaskStore(t, i?.sessionId) : void 0, u = { signal: a.signal, sessionId: i?.sessionId, _meta: t.params?._meta, sendNotification: async (l) => { + if (a.signal.aborted) return; + let p = { relatedRequestId: t.id }; + o && (p.relatedTask = { taskId: o }), await this.notification(l, p); + }, sendRequest: async (l, p, d) => { + if (a.signal.aborted) throw new Y(se.ConnectionClosed, "Request was cancelled"); + let f = { ...d, relatedRequestId: t.id }; + o && !f.relatedTask && (f.relatedTask = { taskId: o }); + let m = f.relatedTask?.taskId ?? o; + return m && c && await c.updateTaskStatus(m, "input_required"), await this.request(l, p, f); + }, authInfo: r?.authInfo, requestId: t.id, requestInfo: r?.requestInfo, taskId: o, taskStore: c, taskRequestedTtl: s?.ttl, closeSSEStream: r?.closeSSEStream, closeStandaloneSSEStream: r?.closeStandaloneSSEStream }; + Promise.resolve().then(() => { + s && this.assertTaskHandlerCapability(t.method); + }).then(() => n(t, u)).then(async (l) => { + if (a.signal.aborted) return; + let p = { result: l, jsonrpc: "2.0", id: t.id }; + o && this._taskMessageQueue ? await this._enqueueTaskMessage(o, { type: "response", message: p, timestamp: Date.now() }, i?.sessionId) : await i?.send(p); + }, async (l) => { + if (a.signal.aborted) return; + let p = { jsonrpc: "2.0", id: t.id, error: { code: Number.isSafeInteger(l.code) ? l.code : se.InternalError, message: l.message ?? "Internal error", ...l.data !== void 0 && { data: l.data } } }; + o && this._taskMessageQueue ? await this._enqueueTaskMessage(o, { type: "error", message: p, timestamp: Date.now() }, i?.sessionId) : await i?.send(p); + }).catch((l) => this._onerror(new Error(`Failed to send response: ${l}`))).finally(() => { + this._requestHandlerAbortControllers.delete(t.id); + }); + } + _onprogress(t) { + let { progressToken: r, ...n } = t.params, i = Number(r), o = this._progressHandlers.get(i); + if (!o) { + this._onerror(new Error(`Received a progress notification for an unknown token: ${JSON.stringify(t)}`)); + return; + } + let a = this._responseHandlers.get(i), s = this._timeoutInfo.get(i); + if (s && a && s.resetTimeoutOnProgress) try { + this._resetTimeout(i); + } catch (c) { + this._responseHandlers.delete(i), this._progressHandlers.delete(i), this._cleanupTimeout(i), a(c); + return; + } + o(n); + } + _onresponse(t) { + let r = Number(t.id), n = this._requestResolvers.get(r); + if (n) { + if (this._requestResolvers.delete(r), xn(t)) n(t); + else { + let a = new Y(t.error.code, t.error.message, t.error.data); + n(a); + } + return; + } + let i = this._responseHandlers.get(r); + if (i === void 0) { + this._onerror(new Error(`Received a response for an unknown message ID: ${JSON.stringify(t)}`)); + return; + } + this._responseHandlers.delete(r), this._cleanupTimeout(r); + let o = false; + if (xn(t) && t.result && typeof t.result == "object") { + let a = t.result; + if (a.task && typeof a.task == "object") { + let s = a.task; + typeof s.taskId == "string" && (o = true, this._taskProgressTokens.set(s.taskId, r)); + } + } + if (o || this._progressHandlers.delete(r), xn(t)) i(t); + else { + let a = Y.fromError(t.error.code, t.error.message, t.error.data); + i(a); + } + } + get transport() { + return this._transport; + } + async close() { + await this._transport?.close(); + } + async *requestStream(t, r, n) { + let { task: i } = n ?? {}; + if (!i) { + try { + yield { type: "result", result: await this.request(t, r, n) }; + } catch (a) { + yield { type: "error", error: a instanceof Y ? a : new Y(se.InternalError, String(a)) }; + } + return; + } + let o; + try { + let a = await this.request(t, ko, n); + if (a.task) o = a.task.taskId, yield { type: "taskCreated", task: a.task }; + else throw new Y(se.InternalError, "Task creation did not return a task"); + for (; ; ) { + let s = await this.getTask({ taskId: o }, n); + if (yield { type: "taskStatus", task: s }, ri(s.status)) { + s.status === "completed" ? yield { type: "result", result: await this.getTaskResult({ taskId: o }, r, n) } : s.status === "failed" ? yield { type: "error", error: new Y(se.InternalError, `Task ${o} failed`) } : s.status === "cancelled" && (yield { type: "error", error: new Y(se.InternalError, `Task ${o} was cancelled`) }); + return; + } + if (s.status === "input_required") { + yield { type: "result", result: await this.getTaskResult({ taskId: o }, r, n) }; + return; + } + let c = s.pollInterval ?? this._options?.defaultTaskPollInterval ?? 1e3; + await new Promise((u) => setTimeout(u, c)), n?.signal?.throwIfAborted(); + } + } catch (a) { + yield { type: "error", error: a instanceof Y ? a : new Y(se.InternalError, String(a)) }; + } + } + request(t, r, n) { + let { relatedRequestId: i, resumptionToken: o, onresumptiontoken: a, task: s, relatedTask: c } = n ?? {}; + return new Promise((u, l) => { + let p = (x) => { + l(x); + }; + if (!this._transport) { + p(new Error("Not connected")); + return; + } + if (this._options?.enforceStrictCapabilities === true) try { + this.assertCapabilityForMethod(t.method), s && this.assertTaskCapability(t.method); + } catch (x) { + p(x); + return; + } + n?.signal?.throwIfAborted(); + let d = this._requestMessageId++, f = { ...t, jsonrpc: "2.0", id: d }; + n?.onprogress && (this._progressHandlers.set(d, n.onprogress), f.params = { ...t.params, _meta: { ...t.params?._meta || {}, progressToken: d } }), s && (f.params = { ...f.params, task: s }), c && (f.params = { ...f.params, _meta: { ...f.params?._meta || {}, [Mn]: c } }); + let m = (x) => { + this._responseHandlers.delete(d), this._progressHandlers.delete(d), this._cleanupTimeout(d), this._transport?.send({ jsonrpc: "2.0", method: "notifications/cancelled", params: { requestId: d, reason: String(x) } }, { relatedRequestId: i, resumptionToken: o, onresumptiontoken: a }).catch((S) => this._onerror(new Error(`Failed to send cancellation: ${S}`))); + let w = x instanceof Y ? x : new Y(se.RequestTimeout, String(x)); + l(w); + }; + this._responseHandlers.set(d, (x) => { + if (!n?.signal?.aborted) { + if (x instanceof Error) return l(x); + try { + let w = ti(r, x.result); + w.success ? u(w.data) : l(w.error); + } catch (w) { + l(w); + } + } + }), n?.signal?.addEventListener("abort", () => { + m(n?.signal?.reason); + }); + let h = n?.timeout ?? NG, v = () => m(Y.fromError(se.RequestTimeout, "Request timed out", { timeout: h })); + this._setupTimeout(d, h, n?.maxTotalTimeout, v, n?.resetTimeoutOnProgress ?? false); + let y = c?.taskId; + if (y) { + let x = (w) => { + let S = this._responseHandlers.get(d); + S ? S(w) : this._onerror(new Error(`Response handler missing for side-channeled request ${d}`)); + }; + this._requestResolvers.set(d, x), this._enqueueTaskMessage(y, { type: "request", message: f, timestamp: Date.now() }).catch((w) => { + this._cleanupTimeout(d), l(w); + }); + } else this._transport.send(f, { relatedRequestId: i, resumptionToken: o, onresumptiontoken: a }).catch((x) => { + this._cleanupTimeout(d), l(x); + }); + }); + } + async getTask(t, r) { + return this.request({ method: "tasks/get", params: t }, kp, r); + } + async getTaskResult(t, r, n) { + return this.request({ method: "tasks/result", params: t }, r, n); + } + async listTasks(t, r) { + return this.request({ method: "tasks/list", params: t }, Tp, r); + } + async cancelTask(t, r) { + return this.request({ method: "tasks/cancel", params: t }, jk, r); + } + async notification(t, r) { + if (!this._transport) throw new Error("Not connected"); + this.assertNotificationCapability(t.method); + let n = r?.relatedTask?.taskId; + if (n) { + let s = { ...t, jsonrpc: "2.0", params: { ...t.params, _meta: { ...t.params?._meta || {}, [Mn]: r.relatedTask } } }; + await this._enqueueTaskMessage(n, { type: "notification", message: s, timestamp: Date.now() }); + return; + } + if ((this._options?.debouncedNotificationMethods ?? []).includes(t.method) && !t.params && !r?.relatedRequestId && !r?.relatedTask) { + if (this._pendingDebouncedNotifications.has(t.method)) return; + this._pendingDebouncedNotifications.add(t.method), Promise.resolve().then(() => { + if (this._pendingDebouncedNotifications.delete(t.method), !this._transport) return; + let s = { ...t, jsonrpc: "2.0" }; + r?.relatedTask && (s = { ...s, params: { ...s.params, _meta: { ...s.params?._meta || {}, [Mn]: r.relatedTask } } }), this._transport?.send(s, r).catch((c) => this._onerror(c)); + }); + return; + } + let a = { ...t, jsonrpc: "2.0" }; + r?.relatedTask && (a = { ...a, params: { ...a.params, _meta: { ...a.params?._meta || {}, [Mn]: r.relatedTask } } }), await this._transport.send(a, r); + } + setRequestHandler(t, r) { + let n = Zb(t); + this.assertRequestHandlerCapability(n), this._requestHandlers.set(n, (i, o) => { + let a = Bb(t, i); + return Promise.resolve(r(a, o)); + }); + } + removeRequestHandler(t) { + this._requestHandlers.delete(t); + } + assertCanSetRequestHandler(t) { + if (this._requestHandlers.has(t)) throw new Error(`A request handler for ${t} already exists, which would be overridden`); + } + setNotificationHandler(t, r) { + let n = Zb(t); + this._notificationHandlers.set(n, (i) => { + let o = Bb(t, i); + return Promise.resolve(r(o)); + }); + } + removeNotificationHandler(t) { + this._notificationHandlers.delete(t); + } + _cleanupTaskProgressHandler(t) { + let r = this._taskProgressTokens.get(t); + r !== void 0 && (this._progressHandlers.delete(r), this._taskProgressTokens.delete(t)); + } + async _enqueueTaskMessage(t, r, n) { + if (!this._taskStore || !this._taskMessageQueue) throw new Error("Cannot enqueue task message: taskStore and taskMessageQueue are not configured"); + let i = this._options?.maxTaskQueueSize; + await this._taskMessageQueue.enqueue(t, r, n, i); + } + async _clearTaskQueue(t, r) { + if (this._taskMessageQueue) { + let n = await this._taskMessageQueue.dequeueAll(t, r); + for (let i of n) if (i.type === "request" && Fn(i.message)) { + let o = i.message.id, a = this._requestResolvers.get(o); + a ? (a(new Y(se.InternalError, "Task cancelled or completed")), this._requestResolvers.delete(o)) : this._onerror(new Error(`Resolver missing for request ${o} during task ${t} cleanup`)); + } + } + } + async _waitForTaskUpdate(t, r) { + let n = this._options?.defaultTaskPollInterval ?? 1e3; + try { + let i = await this._taskStore?.getTask(t); + i?.pollInterval && (n = i.pollInterval); + } catch { + } + return new Promise((i, o) => { + if (r.aborted) { + o(new Y(se.InvalidRequest, "Request cancelled")); + return; + } + let a = setTimeout(i, n); + r.addEventListener("abort", () => { + clearTimeout(a), o(new Y(se.InvalidRequest, "Request cancelled")); + }, { once: true }); + }); + } + requestTaskStore(t, r) { + let n = this._taskStore; + if (!n) throw new Error("No task store configured"); + return { createTask: async (i) => { + if (!t) throw new Error("No request provided"); + return await n.createTask(i, t.id, { method: t.method, params: t.params }, r); + }, getTask: async (i) => { + let o = await n.getTask(i, r); + if (!o) throw new Y(se.InvalidParams, "Failed to retrieve task: Task not found"); + return o; + }, storeTaskResult: async (i, o, a) => { + await n.storeTaskResult(i, o, a, r); + let s = await n.getTask(i, r); + if (s) { + let c = Ys.parse({ method: "notifications/tasks/status", params: s }); + await this.notification(c), ri(s.status) && this._cleanupTaskProgressHandler(i); + } + }, getTaskResult: (i) => n.getTaskResult(i, r), updateTaskStatus: async (i, o, a) => { + let s = await n.getTask(i, r); + if (!s) throw new Y(se.InvalidParams, `Task "${i}" not found - it may have been cleaned up`); + if (ri(s.status)) throw new Y(se.InvalidParams, `Cannot update task "${i}" from terminal status "${s.status}" to "${o}". Terminal states (completed, failed, cancelled) cannot transition to other states.`); + await n.updateTaskStatus(i, o, a, r); + let c = await n.getTask(i, r); + if (c) { + let u = Ys.parse({ method: "notifications/tasks/status", params: c }); + await this.notification(u), ri(c.status) && this._cleanupTaskProgressHandler(i); + } + }, listTasks: (i) => n.listTasks(i, r) }; + } +}; +function D2(e21) { + return e21 !== null && typeof e21 == "object" && !Array.isArray(e21); +} +function q2(e21, t) { + let r = { ...e21 }; + for (let n in t) { + let i = n, o = t[i]; + if (o === void 0) continue; + let a = r[i]; + D2(a) && D2(o) ? r[i] = { ...a, ...o } : r[i] = o; + } + return r; +} +var zA = is(T_(), 1); +var PA = is(IA(), 1); +function Eee() { + let e21 = new zA.default({ strict: false, validateFormats: true, validateSchema: false, allErrors: true }); + return (0, PA.default)(e21), e21; +} +var Df = class { + constructor(t) { + this._ajv = t ?? Eee(); + } + getValidator(t) { + let r = "$id" in t && typeof t.$id == "string" ? this._ajv.getSchema(t.$id) ?? this._ajv.compile(t) : this._ajv.compile(t); + return (n) => r(n) ? { valid: true, data: n, errorMessage: void 0 } : { valid: false, data: void 0, errorMessage: this._ajv.errorsText(r.errors) }; + } +}; +var qf = class { + constructor(t) { + this._server = t; + } + requestStream(t, r, n) { + return this._server.requestStream(t, r, n); + } + async getTask(t, r) { + return this._server.getTask({ taskId: t }, r); + } + async getTaskResult(t, r, n) { + return this._server.getTaskResult({ taskId: t }, r, n); + } + async listTasks(t, r) { + return this._server.listTasks(t ? { cursor: t } : void 0, r); + } + async cancelTask(t, r) { + return this._server.cancelTask({ taskId: t }, r); + } +}; +function jA(e21, t, r) { + if (!e21) throw new Error(`${r} does not support task creation (required for ${t})`); + switch (t) { + case "tools/call": + if (!e21.tools?.call) throw new Error(`${r} does not support task creation for tools/call (required for ${t})`); + break; + default: + break; + } +} +function AA(e21, t, r) { + if (!e21) throw new Error(`${r} does not support task creation (required for ${t})`); + switch (t) { + case "sampling/createMessage": + if (!e21.sampling?.createMessage) throw new Error(`${r} does not support task creation for sampling/createMessage (required for ${t})`); + break; + case "elicitation/create": + if (!e21.elicitation?.create) throw new Error(`${r} does not support task creation for elicitation/create (required for ${t})`); + break; + default: + break; + } +} +var Uf = class extends tf { + constructor(t, r) { + super(r), this._serverInfo = t, this._loggingLevels = /* @__PURE__ */ new Map(), this.LOG_LEVEL_SEVERITY = new Map(tc.options.map((n, i) => [n, i])), this.isMessageIgnored = (n, i) => { + let o = this._loggingLevels.get(i); + return o ? this.LOG_LEVEL_SEVERITY.get(n) < this.LOG_LEVEL_SEVERITY.get(o) : false; + }, this._capabilities = r?.capabilities ?? {}, this._instructions = r?.instructions, this._jsonSchemaValidator = r?.jsonSchemaValidator ?? new Df(), this.setRequestHandler(_p, (n) => this._oninitialize(n)), this.setNotificationHandler(Qg, () => this.oninitialized?.()), this._capabilities.logging && this.setRequestHandler(sy, async (n, i) => { + let o = i.sessionId || i.requestInfo?.headers["mcp-session-id"] || void 0, { level: a } = n.params, s = tc.safeParse(a); + return s.success && this._loggingLevels.set(o, s.data), {}; + }); + } + get experimental() { + return this._experimental || (this._experimental = { tasks: new qf(this) }), this._experimental; + } + registerCapabilities(t) { + if (this.transport) throw new Error("Cannot register capabilities after connecting to transport"); + this._capabilities = q2(this._capabilities, t); + } + setRequestHandler(t, r) { + let i = ef(t)?.method; + if (!i) throw new Error("Schema is missing a method literal"); + let o; + if ($a(i)) { + let s = i; + o = s._zod?.def?.value ?? s.value; + } else { + let s = i; + o = s._def?.value ?? s.value; + } + if (typeof o != "string") throw new Error("Schema method literal must be a string"); + if (o === "tools/call") { + let s = async (c, u) => { + let l = ti(ec, c); + if (!l.success) { + let m = l.error instanceof Error ? l.error.message : String(l.error); + throw new Y(se.InvalidParams, `Invalid tools/call request: ${m}`); + } + let { params: p } = l.data, d = await Promise.resolve(r(c, u)); + if (p.task) { + let m = ti(ko, d); + if (!m.success) { + let h = m.error instanceof Error ? m.error.message : String(m.error); + throw new Y(se.InvalidParams, `Invalid task creation result: ${h}`); + } + return m.data; + } + let f = ti(zp, d); + if (!f.success) { + let m = f.error instanceof Error ? f.error.message : String(f.error); + throw new Y(se.InvalidParams, `Invalid tools/call result: ${m}`); + } + return f.data; + }; + return super.setRequestHandler(t, s); + } + return super.setRequestHandler(t, r); + } + assertCapabilityForMethod(t) { + switch (t) { + case "sampling/createMessage": + if (!this._clientCapabilities?.sampling) throw new Error(`Client does not support sampling (required for ${t})`); + break; + case "elicitation/create": + if (!this._clientCapabilities?.elicitation) throw new Error(`Client does not support elicitation (required for ${t})`); + break; + case "roots/list": + if (!this._clientCapabilities?.roots) throw new Error(`Client does not support listing roots (required for ${t})`); + break; + case "ping": + break; + } + } + assertNotificationCapability(t) { + switch (t) { + case "notifications/message": + if (!this._capabilities.logging) throw new Error(`Server does not support logging (required for ${t})`); + break; + case "notifications/resources/updated": + case "notifications/resources/list_changed": + if (!this._capabilities.resources) throw new Error(`Server does not support notifying about resources (required for ${t})`); + break; + case "notifications/tools/list_changed": + if (!this._capabilities.tools) throw new Error(`Server does not support notifying of tool list changes (required for ${t})`); + break; + case "notifications/prompts/list_changed": + if (!this._capabilities.prompts) throw new Error(`Server does not support notifying of prompt list changes (required for ${t})`); + break; + case "notifications/elicitation/complete": + if (!this._clientCapabilities?.elicitation?.url) throw new Error(`Client does not support URL elicitation (required for ${t})`); + break; + case "notifications/cancelled": + break; + case "notifications/progress": + break; + } + } + assertRequestHandlerCapability(t) { + if (this._capabilities) switch (t) { + case "completion/complete": + if (!this._capabilities.completions) throw new Error(`Server does not support completions (required for ${t})`); + break; + case "logging/setLevel": + if (!this._capabilities.logging) throw new Error(`Server does not support logging (required for ${t})`); + break; + case "prompts/get": + case "prompts/list": + if (!this._capabilities.prompts) throw new Error(`Server does not support prompts (required for ${t})`); + break; + case "resources/list": + case "resources/templates/list": + case "resources/read": + if (!this._capabilities.resources) throw new Error(`Server does not support resources (required for ${t})`); + break; + case "tools/call": + case "tools/list": + if (!this._capabilities.tools) throw new Error(`Server does not support tools (required for ${t})`); + break; + case "tasks/get": + case "tasks/list": + case "tasks/result": + case "tasks/cancel": + if (!this._capabilities.tasks) throw new Error(`Server does not support tasks capability (required for ${t})`); + break; + case "ping": + case "initialize": + break; + } + } + assertTaskCapability(t) { + AA(this._clientCapabilities?.tasks?.requests, t, "Client"); + } + assertTaskHandlerCapability(t) { + this._capabilities && jA(this._capabilities.tasks?.requests, t, "Server"); + } + async _oninitialize(t) { + let r = t.params.protocolVersion; + return this._clientCapabilities = t.params.capabilities, this._clientVersion = t.params.clientInfo, { protocolVersion: Bs.includes(r) ? r : Wg, capabilities: this.getCapabilities(), serverInfo: this._serverInfo, ...this._instructions && { instructions: this._instructions } }; + } + getClientCapabilities() { + return this._clientCapabilities; + } + getClientVersion() { + return this._clientVersion; + } + getCapabilities() { + return this._capabilities; + } + async ping() { + return this.request({ method: "ping" }, xp); + } + async createMessage(t, r) { + if ((t.tools || t.toolChoice) && !this._clientCapabilities?.sampling?.tools) throw new Error("Client does not support sampling tools capability."); + if (t.messages.length > 0) { + let n = t.messages[t.messages.length - 1], i = Array.isArray(n.content) ? n.content : [n.content], o = i.some((u) => u.type === "tool_result"), a = t.messages.length > 1 ? t.messages[t.messages.length - 2] : void 0, s = a ? Array.isArray(a.content) ? a.content : [a.content] : [], c = s.some((u) => u.type === "tool_use"); + if (o) { + if (i.some((u) => u.type !== "tool_result")) throw new Error("The last message must contain only tool_result content if any is present"); + if (!c) throw new Error("tool_result blocks are not matching any tool_use from the previous message"); + } + if (c) { + let u = new Set(s.filter((p) => p.type === "tool_use").map((p) => p.id)), l = new Set(i.filter((p) => p.type === "tool_result").map((p) => p.toolUseId)); + if (u.size !== l.size || ![...u].every((p) => l.has(p))) throw new Error("ids of tool_result blocks and tool_use blocks from previous message do not match"); + } + } + return t.tools ? this.request({ method: "sampling/createMessage", params: t }, uy, r) : this.request({ method: "sampling/createMessage", params: t }, cy, r); + } + async elicitInput(t, r) { + switch (t.mode ?? "form") { + case "url": { + if (!this._clientCapabilities?.elicitation?.url) throw new Error("Client does not support url elicitation."); + let i = t; + return this.request({ method: "elicitation/create", params: i }, Pp, r); + } + case "form": { + if (!this._clientCapabilities?.elicitation?.form) throw new Error("Client does not support form elicitation."); + let i = t.mode === "form" ? t : { ...t, mode: "form" }, o = await this.request({ method: "elicitation/create", params: i }, Pp, r); + if (o.action === "accept" && o.content && i.requestedSchema) try { + let s = this._jsonSchemaValidator.getValidator(i.requestedSchema)(o.content); + if (!s.valid) throw new Y(se.InvalidParams, `Elicitation response content does not match requested schema: ${s.errorMessage}`); + } catch (a) { + throw a instanceof Y ? a : new Y(se.InternalError, `Error validating elicitation response: ${a instanceof Error ? a.message : String(a)}`); + } + return o; + } + } + } + createElicitationCompletionNotifier(t, r) { + if (!this._clientCapabilities?.elicitation?.url) throw new Error("Client does not support URL elicitation (required for notifications/elicitation/complete)"); + return () => this.notification({ method: "notifications/elicitation/complete", params: { elicitationId: t } }, r); + } + async listRoots(t, r) { + return this.request({ method: "roots/list", params: t }, ly, r); + } + async sendLoggingMessage(t, r) { + if (this._capabilities.logging && !this.isMessageIgnored(t.level, r)) return this.notification({ method: "notifications/message", params: t }); + } + async sendResourceUpdated(t) { + return this.notification({ method: "notifications/resources/updated", params: t }); + } + async sendResourceListChanged() { + return this.notification({ method: "notifications/resources/list_changed" }); + } + async sendToolListChanged() { + return this.notification({ method: "notifications/tools/list_changed" }); + } + async sendPromptListChanged() { + return this.notification({ method: "notifications/prompts/list_changed" }); + } +}; +var Lf = class { + constructor(t) { + this.openApiSpec = t; + this.schemaCache = {}; + this.nameCounter = 0; + } + internalResolveRef(t, r) { + if (!t.startsWith("#/") || r.has(t)) return null; + let n = t.replace(/^#\//, "").split("/"), i = this.openApiSpec; + for (let o of n) if (i = i[o], !i) return null; + return r.add(t), i; + } + convertOpenApiSchemaToJsonSchema(t, r, n = false) { + if ("$ref" in t) { + let o = t.$ref; + if (!n) { + if (o.startsWith("#/components/schemas/")) return { $ref: o.replace(/^#\/components\/schemas\//, "#/$defs/"), ..."description" in t ? { description: t.description } : {} }; + console.error(`Attempting to resolve ref ${o} not found in components collection.`); + } + let a = { $ref: o }; + if ("description" in t && t.description && (a.description = t.description), this.schemaCache[o]) return this.schemaCache[o]; + let s = this.internalResolveRef(o, r); + if (s) { + let c = this.convertOpenApiSchemaToJsonSchema(s, r, n); + return this.schemaCache[o] = c, c; + } else return console.error(`Failed to resolve ref ${o}`), { $ref: o.replace(/^#\/components\/schemas\//, "#/$defs/"), description: "description" in t ? t.description ?? "" : "" }; + } + let i = {}; + if (t.type && (i.type = t.type), t.format === "binary") { + i.format = "uri-reference"; + let o = "absolute paths to local files"; + i.description = t.description ? `${t.description} (${o})` : o; + } else t.format && (i.format = t.format), t.description && (i.description = t.description); + if (t.enum && (i.enum = t.enum), "const" in t && t.const !== void 0 && (i.const = t.const), t.default !== void 0 && (i.default = t.default), t.type === "object") { + if (i.type = "object", t.properties) { + i.properties = {}; + for (let [o, a] of Object.entries(t.properties)) i.properties[o] = this.convertOpenApiSchemaToJsonSchema(a, r, n); + } + t.required && (i.required = t.required), t.additionalProperties === true || t.additionalProperties === void 0 ? i.additionalProperties = true : t.additionalProperties && typeof t.additionalProperties == "object" ? i.additionalProperties = this.convertOpenApiSchemaToJsonSchema(t.additionalProperties, r, n) : i.additionalProperties = false; + } + return t.type === "array" && t.items && (i.type = "array", i.items = this.convertOpenApiSchemaToJsonSchema(t.items, r, n)), t.oneOf && (i.oneOf = t.oneOf.map((o) => this.convertOpenApiSchemaToJsonSchema(o, r, n))), t.anyOf && (i.anyOf = t.anyOf.map((o) => this.convertOpenApiSchemaToJsonSchema(o, r, n))), t.allOf && (i.allOf = t.allOf.map((o) => this.convertOpenApiSchemaToJsonSchema(o, r, n))), i; + } + convertToMCPTools() { + let t = "API", r = {}, n = { [t]: { methods: [] } }, i = {}; + for (let [o, a] of Object.entries(this.openApiSpec.paths || {})) if (a) for (let [s, c] of Object.entries(a)) { + if (!this.isOperation(s, c)) continue; + let u = this.convertOperationToMCPMethod(c, s, o); + if (u) { + let l = this.ensureUniqueName(u.name); + u.name = l, u.description = this.getDescription(u.description), n[t].methods.push(u), r[t + "-" + l] = { ...c, method: s, path: o }, i[t + "-" + l] = { openApi: { ...c, method: s, path: o }, mcp: u }; + } + } + return { tools: n, openApiLookup: r, zip: i }; + } + convertToOpenAITools() { + let t = []; + for (let [r, n] of Object.entries(this.openApiSpec.paths || {})) if (n) for (let [i, o] of Object.entries(n)) { + if (!this.isOperation(i, o)) continue; + let a = this.convertOperationToJsonSchema(o, i, r), s = { type: "function", function: { name: o.operationId, description: this.getDescription(o.summary || o.description || ""), parameters: a } }; + t.push(s); + } + return t; + } + convertToAnthropicTools() { + let t = []; + for (let [r, n] of Object.entries(this.openApiSpec.paths || {})) if (n) for (let [i, o] of Object.entries(n)) { + if (!this.isOperation(i, o)) continue; + let a = this.convertOperationToJsonSchema(o, i, r), s = { name: o.operationId, description: this.getDescription(o.summary || o.description || ""), input_schema: a }; + t.push(s); + } + return t; + } + convertComponentsToJsonSchema() { + let t = this.openApiSpec.components || {}, r = {}; + for (let [n, i] of Object.entries(t.schemas || {})) r[n] = this.convertOpenApiSchemaToJsonSchema(i, /* @__PURE__ */ new Set()); + return r; + } + convertOperationToJsonSchema(t, r, n) { + let i = { type: "object", properties: {}, required: [], $defs: this.convertComponentsToJsonSchema() }; + if (t.parameters) for (let o of t.parameters) { + let a = this.resolveParameter(o); + if (a && a.schema) { + let s = this.convertOpenApiSchemaToJsonSchema(a.schema, /* @__PURE__ */ new Set()); + a.description && (s.description = a.description), i.properties[a.name] = s, a.required && i.required.push(a.name); + } + } + if (t.requestBody) { + let o = this.resolveRequestBody(t.requestBody); + if (o?.content && o.content["application/json"]?.schema) { + let a = this.convertOpenApiSchemaToJsonSchema(o.content["application/json"].schema, /* @__PURE__ */ new Set()); + if (a.type === "object" && a.properties) { + for (let [s, c] of Object.entries(a.properties)) i.properties[s] = c; + a.required && i.required.push(...a.required); + } + } + } + return i; + } + isOperation(t, r) { + return ["get", "post", "put", "delete", "patch"].includes(t.toLowerCase()); + } + isParameterObject(t) { + return !("$ref" in t); + } + isRequestBodyObject(t) { + return !("$ref" in t); + } + resolveParameter(t) { + if (this.isParameterObject(t)) return t; + { + let r = this.internalResolveRef(t.$ref, /* @__PURE__ */ new Set()); + if (r && r.name) return r; + } + return null; + } + resolveRequestBody(t) { + if (this.isRequestBodyObject(t)) return t; + { + let r = this.internalResolveRef(t.$ref, /* @__PURE__ */ new Set()); + if (r) return r; + } + return null; + } + resolveResponse(t) { + if ("$ref" in t) { + let r = this.internalResolveRef(t.$ref, /* @__PURE__ */ new Set()); + return r || null; + } + return t; + } + convertOperationToMCPMethod(t, r, n) { + if (!t.operationId) return console.warn(`Operation without operationId at ${r} ${n}`), null; + let i = t.operationId, o = { $defs: this.convertComponentsToJsonSchema(), type: "object", properties: {}, required: [] }; + if (t.parameters) for (let c of t.parameters) { + let u = this.resolveParameter(c); + if (u && u.schema) { + let l = this.convertOpenApiSchemaToJsonSchema(u.schema, /* @__PURE__ */ new Set(), false); + u.description && (l.description = u.description), o.properties[u.name] = l, u.required && o.required.push(u.name); + } + } + if (t.requestBody) { + let c = this.resolveRequestBody(t.requestBody); + if (c?.content) { + if (c.content["multipart/form-data"]?.schema) { + let u = this.convertOpenApiSchemaToJsonSchema(c.content["multipart/form-data"].schema, /* @__PURE__ */ new Set(), false); + if (u.type === "object" && u.properties) { + for (let [l, p] of Object.entries(u.properties)) o.properties[l] = p; + u.required && o.required.push(...u.required); + } + } else if (c.content["application/json"]?.schema) { + let u = this.convertOpenApiSchemaToJsonSchema(c.content["application/json"].schema, /* @__PURE__ */ new Set(), false); + if (u.type === "object" && u.properties) { + for (let [l, p] of Object.entries(u.properties)) o.properties[l] = p; + u.required && o.required.push(...u.required); + } else o.properties.body = u, o.required.push("body"); + } + } + } + let a = t.summary || t.description || ""; + if (t.responses) { + let c = Object.entries(t.responses).filter(([u]) => u.startsWith("4") || u.startsWith("5")).map(([u, l]) => { + let d = this.resolveResponse(l)?.description || ""; + return `${u}: ${d}`; + }); + c.length > 0 && (a += ` +Error Responses: +` + c.join(` +`)); + } + let s = this.extractResponseType(t.responses); + try { + return { name: i, description: a, inputSchema: o, ...s ? { returnSchema: s } : {} }; + } catch (c) { + return console.warn(`Failed to generate Zod schema for ${i}:`, c), { name: i, description: a, inputSchema: o, ...s ? { returnSchema: s } : {} }; + } + } + extractResponseType(t) { + let r = t?.["200"] || t?.["201"] || t?.["202"] || t?.["204"]; + if (!r) return null; + let n = this.resolveResponse(r); + if (!n || !n.content) return null; + if (n.content["application/json"]?.schema) { + let i = this.convertOpenApiSchemaToJsonSchema(n.content["application/json"].schema, /* @__PURE__ */ new Set(), false); + return i.$defs = this.convertComponentsToJsonSchema(), n.description && !i.description && (i.description = n.description), i; + } + return n.content["image/png"] || n.content["image/jpeg"] ? { type: "string", format: "binary", description: n.description || "" } : { type: "string", description: n.description || "" }; + } + ensureUniqueName(t) { + if (t.length <= 64) return t; + let r = t.slice(0, 59), n = this.generateUniqueSuffix(); + return `${r}-${n}`; + } + generateUniqueSuffix() { + return this.nameCounter += 1, this.nameCounter.toString().padStart(4, "0"); + } + getDescription(t) { + return this.openApiSpec.info.title === "Notion API" ? "Notion | " + t : t; + } +}; +var S1 = is(nN(), 1); +var oN = is(H_(), 1); +var w1 = class { + constructor(t) { + this.headers = /* @__PURE__ */ new Map(); + t && Object.entries(t).forEach(([r, n]) => { + this.append(r, n); + }); + } + append(t, r) { + let n = t.toLowerCase(); + this.headers.has(n) || this.headers.set(n, []), this.headers.get(n).push(r); + } + get(t) { + let r = t.toLowerCase(); + return this.headers.has(r) ? this.headers.get(r).join(", ") : null; + } +}; +var Bae = typeof global < "u" && "Headers" in global ? global.Headers : void 0; +var $1 = Bae || w1; +function iN(e21) { + let t = []; + if (!e21.requestBody) return t; + let i = (e21.requestBody.content || {})["multipart/form-data"]; + if (!i?.schema) return t; + let o = i.schema; + return o.type !== "object" || !o.properties || Object.entries(o.properties).forEach(([a, s]) => { + let c = s; + if (c.type === "string" && c.format === "binary" && t.push(a), c.type === "array" && c.items) { + let u = c.items; + u.type === "string" && u.format === "binary" && t.push(a); + } + }), t; +} +var ul = class extends Error { + constructor(r, n, i, o) { + super(`${n} ${r}`); + this.status = n; + this.data = i; + this.headers = o; + this.name = "HttpClientError"; + } +}; +var Sm = class { + constructor(t, r) { + this.client = new (S1.default.default ?? S1.default)({ definition: r, axiosConfigDefaults: { baseURL: t.baseUrl, headers: { "Content-Type": "application/json", "User-Agent": "notion-mcp-server", ...t.headers } } }), this.api = this.client.init(); + } + async prepareFileUpload(t, r) { + let n = iN(t); + if (n.length === 0) return null; + let i = new oN.default(); + for (let a of n) { + let c = function(u, l) { + try { + let p = import_fs.default.createReadStream(l); + i.append(u, p); + } catch (p) { + throw new Error(`Failed to read file at ${l}: ${p}`); + } + }; + var o = c; + let s = r[a]; + if (!s) throw new Error(`File path must be provided for parameter: ${a}`); + switch (typeof s) { + case "string": + c(a, s); + break; + case "object": + if (Array.isArray(s)) { + let u = 0; + for (let l of s) c(a, l), u++; + break; + } + default: + throw new Error(`Unsupported file type: ${typeof s}`); + } + } + for (let [a, s] of Object.entries(r)) n.includes(a) || i.append(a, s); + return i; + } + async executeOperation(t, r = {}) { + let n = await this.api, i = t.operationId; + if (!i) throw new Error("Operation ID is required"); + let o = await this.prepareFileUpload(t, r), a = {}, s = o || { ...r }; + if (t.parameters) for (let u of t.parameters) "name" in u && u.name && u.in && (u.in === "path" || u.in === "query") && r[u.name] !== void 0 && (a[u.name] = r[u.name], o || delete s[u.name]); + if (!t.requestBody && !o) for (let u in s) s[u] !== void 0 && (a[u] = s[u], delete s[u]); + let c = n[i]; + if (!c) throw new Error(`Operation ${i} not found`); + try { + let u = Object.keys(s).length > 0, p = { headers: { ...o ? o.getHeaders() : { ...u ? { "Content-Type": "application/json" } : { "Content-Type": null } } } }, d = await c(a, u ? s : void 0, p), f = new $1(); + return Object.entries(d.headers).forEach(([m, h]) => { + h && f.append(m, h.toString()); + }), { data: d.data, status: d.status, headers: f }; + } catch (u) { + if (u.response) { + process.env.NODE_ENV !== "test" && console.error("Error in http client", { status: u.response.status, statusText: u.response.statusText }); + let l = new $1(); + throw Object.entries(u.response.headers).forEach(([p, d]) => { + d && l.append(p, d.toString()); + }), new ul(u.response.statusText || "Request failed", u.response.status, u.response.data, l); + } + throw u; + } + } +}; +function aN(e21) { + let t = {}; + for (let [r, n] of Object.entries(e21)) { + if (typeof n == "string") { + let i = n.trim(); + if (i.startsWith("{") && i.endsWith("}") || i.startsWith("[") && i.endsWith("]")) try { + let o = JSON.parse(n); + if (typeof o == "object" && o !== null) { + t[r] = Array.isArray(o) ? o : aN(o); + continue; + } + } catch { + } + } + t[r] = n; + } + return t; +} +var km = class { + constructor(t, r) { + this.server = new Uf({ name: t, version: "1.0.0" }, { capabilities: { tools: {} } }); + let n = r.servers?.[0].url; + if (!n) throw new Error("No base URL found in OpenAPI spec"); + this.httpClient = new Sm({ baseUrl: n, headers: this.parseHeadersFromEnv() }, r); + let i = new Lf(r), { tools: o, openApiLookup: a } = i.convertToMCPTools(); + this.tools = o, this.openApiLookup = a, this.setupHandlers(); + } + setupHandlers() { + this.server.setRequestHandler(ay, async () => { + let t = []; + return Object.entries(this.tools).forEach(([r, n]) => { + n.methods.forEach((i) => { + let o = `${r}-${i.name}`, a = this.truncateToolName(o), u = this.openApiLookup[o]?.method?.toLowerCase() === "get"; + t.push({ name: a, description: i.description, inputSchema: i.inputSchema, annotations: { title: this.operationIdToTitle(i.name), ...u ? { readOnlyHint: true } : { destructiveHint: true } } }); + }); + }), { tools: t }; + }), this.server.setRequestHandler(ec, async (t) => { + let { name: r, arguments: n } = t.params, i = this.findOperation(r); + if (!i) throw new Error(`Method ${r} not found`); + let o = n ? aN(n) : {}; + try { + let a = await this.httpClient.executeOperation(i, o); + return { content: [{ type: "text", text: JSON.stringify(a.data) }] }; + } catch (a) { + if (console.error("Error in tool call", a instanceof Error ? a.message : "Unknown error"), a instanceof ul) { + console.error("HttpClientError encountered, returning structured error", { status: a.status }); + let s = a.data?.response?.data ?? a.data ?? {}; + return { content: [{ type: "text", text: JSON.stringify({ status: "error", ...typeof s == "object" ? s : { data: s } }) }] }; + } + throw a; + } + }); + } + findOperation(t) { + return this.openApiLookup[t] ?? null; + } + parseHeadersFromEnv() { + let t = process.env.OPENAPI_MCP_HEADERS; + if (t) try { + let n = JSON.parse(t); + if (typeof n != "object" || n === null) console.warn("OPENAPI_MCP_HEADERS environment variable must be a JSON object, got:", typeof n); + else if (Object.keys(n).length > 0) return n; + } catch (n) { + console.warn("Failed to parse OPENAPI_MCP_HEADERS environment variable:", n); + } + let r = process.env.NOTION_TOKEN; + return r ? { Authorization: `Bearer ${r}`, "Notion-Version": "2025-09-03" } : {}; + } + getContentType(t) { + let r = t.get("content-type"); + return r ? r.includes("text") || r.includes("json") ? "text" : r.includes("image") ? "image" : "binary" : "binary"; + } + truncateToolName(t) { + return t.length <= 64 ? t : t.slice(0, 64); + } + operationIdToTitle(t) { + return t.replace(/([a-z])([A-Z])/g, "$1 $2").replace(/([A-Z]+)([A-Z][a-z])/g, "$1 $2").split(/[\s_-]+/).map((r) => r.charAt(0).toUpperCase() + r.slice(1)).join(" "); + } + async connect(t) { + await this.server.connect(t); + } + getServer() { + return this.server; + } +}; +var ll = class extends Error { + constructor(r) { + super("OpenAPI validation failed"); + this.errors = r; + this.name = "ValidationError"; + } +}; +async function Gae(e21, t) { + let r; + try { + r = import_node_fs2.default.readFileSync(import_node_path2.default.resolve(process.cwd(), e21), "utf-8"); + } catch (n) { + console.error("Failed to read OpenAPI specification file:", n.message), process.exit(1); + } + try { + let n = JSON.parse(r); + return t && (n.servers[0].url = t), n; + } catch (n) { + if (n instanceof ll) throw n; + console.error("Failed to parse OpenAPI spec:", n.message), process.exit(1); + } +} +async function k1(e21, t) { + let r = await Gae(e21, t); + return new km("Notion API", r); +} +async function ese(e21 = process.argv) { + let t = (0, import_url.fileURLToPath)(__OPENSWARM_IMPORT_META_URL__), r = import_node_path.default.dirname(t), n = import_node_path.default.resolve(r, "../scripts/notion-openapi.json"), i = process.env.BASE_URL ?? void 0; + function o() { + let c = process.argv.slice(2), u = "stdio", l = 3e3, p, d = false; + for (let f = 0; f < c.length; f++) c[f] === "--transport" && f + 1 < c.length ? (u = c[f + 1], f++) : c[f] === "--port" && f + 1 < c.length ? (l = parseInt(c[f + 1], 10), f++) : c[f] === "--auth-token" && f + 1 < c.length ? (p = c[f + 1], f++) : c[f] === "--disable-auth" ? d = true : (c[f] === "--help" || c[f] === "-h") && (console.log(` +Usage: notion-mcp-server [options] + +Options: + --transport Transport type: 'stdio' or 'http' (default: stdio) + --port Port for HTTP server when using Streamable HTTP transport (default: 3000) + --auth-token Bearer token for HTTP transport authentication (auto-generated if not provided) + --disable-auth Disable bearer token authentication for HTTP transport + --help, -h Show this help message + +Environment Variables: + NOTION_TOKEN Notion integration token (recommended) + OPENAPI_MCP_HEADERS JSON string with Notion API headers (alternative) + AUTH_TOKEN Bearer token for HTTP transport authentication (alternative to --auth-token) + +Examples: + notion-mcp-server # Use stdio transport (default) + notion-mcp-server --transport stdio # Use stdio transport explicitly + notion-mcp-server --transport http # Use Streamable HTTP transport on port 3000 + notion-mcp-server --transport http --port 8080 # Use Streamable HTTP transport on port 8080 + notion-mcp-server --transport http --auth-token mytoken # Use Streamable HTTP transport with custom auth token + notion-mcp-server --transport http --disable-auth # Use Streamable HTTP transport without authentication + AUTH_TOKEN=mytoken notion-mcp-server --transport http # Use Streamable HTTP transport with auth token from env var +`), process.exit(0)); + return { transport: u.toLowerCase(), port: l, authToken: p, disableAuth: d }; + } + let a = o(), s = a.transport; + if (s === "stdio") { + let c = await k1(n, i); + return await c.connect(new Ap()), c.getServer(); + } else if (s === "http") { + let c = (0, O1.default)(); + c.use(O1.default.json()); + let u, l; + a.disableAuth || (u = a.authToken || process.env.AUTH_TOKEN || (0, import_node_crypto.randomBytes)(32).toString("hex"), !a.authToken && !process.env.AUTH_TOKEN && (l = import_node_path.default.join(import_node_os.default.tmpdir(), `.notion-mcp-auth-token-${process.pid}`), import_node_fs.default.writeFileSync(l, u, { mode: 384 }), console.log(`Generated auth token written to: ${l}`))); + let p = (m, h, v) => { + let y = m.headers.authorization, x = y && y.split(" ")[1]; + if (!x) { + h.status(401).json({ jsonrpc: "2.0", error: { code: -32001, message: "Unauthorized: Missing bearer token" }, id: null }); + return; + } + if (x !== u) { + h.status(403).json({ jsonrpc: "2.0", error: { code: -32002, message: "Forbidden: Invalid bearer token" }, id: null }); + return; + } + v(); + }; + c.get("/health", (m, h) => { + h.status(200).json({ status: "healthy", timestamp: (/* @__PURE__ */ new Date()).toISOString(), transport: "http", port: a.port }); + }), a.disableAuth || c.use("/mcp", p); + let d = {}; + c.post("/mcp", async (m, h) => { + try { + let v = m.headers["mcp-session-id"], y; + if (v && d[v]) y = d[v]; + else if (!v && Gs(m.body)) y = new qp({ sessionIdGenerator: () => (0, import_node_crypto.randomUUID)(), onsessioninitialized: (w) => { + d[w] = y; + } }), y.onclose = () => { + y.sessionId && delete d[y.sessionId]; + }, await (await k1(n, i)).connect(y); + else { + h.status(400).json({ jsonrpc: "2.0", error: { code: -32e3, message: "Bad Request: No valid session ID provided" }, id: null }); + return; + } + await y.handleRequest(m, h, m.body); + } catch (v) { + console.error("Error handling MCP request:", v), h.headersSent || h.status(500).json({ jsonrpc: "2.0", error: { code: -32603, message: "Internal server error" }, id: null }); + } + }), c.get("/mcp", async (m, h) => { + let v = m.headers["mcp-session-id"]; + if (!v || !d[v]) { + h.status(400).send("Invalid or missing session ID"); + return; + } + await d[v].handleRequest(m, h); + }), c.delete("/mcp", async (m, h) => { + let v = m.headers["mcp-session-id"]; + if (!v || !d[v]) { + h.status(400).send("Invalid or missing session ID"); + return; + } + await d[v].handleRequest(m, h); + }); + let f = a.port; + return c.listen(f, "0.0.0.0", async () => { + console.log(`MCP Server listening on port ${f}`), console.log(`Endpoint: http://0.0.0.0:${f}/mcp`), console.log(`Health check: http://0.0.0.0:${f}/health`), a.disableAuth ? console.log("Authentication: Disabled") : (console.log("Authentication: Bearer token required"), l && console.log(`Read your auth token from: ${l}`)); + let m = process.env.NOTION_TOKEN; + if (m) try { + let h = await fetch("https://api.notion.com/v1/users/me", { headers: { Authorization: `Bearer ${m}`, "Notion-Version": "2022-06-28" } }); + if (h.ok) { + let v = await h.json(); + v.id && v.type === "bot" && console.log(`Notion integration settings: https://www.notion.so/profile/integrations/internal/${v.id}`); + } + } catch { + } + }), { close: () => { + } }; + } else throw new Error(`Unsupported transport: ${s}. Use 'stdio' or 'http'.`); +} +ese(process.argv).catch((e21) => { + e21 instanceof ll ? (console.error("Invalid OpenAPI 3.1 specification:"), e21.errors.forEach((t) => console.error(t))) : console.error("Error:", e21), process.exit(1); +}); +// Annotate the CommonJS export names for ESM import in node: +0 && (module.exports = { + startServer +}); diff --git a/backend/mcp-bundles/notionhq-notion-mcp-server/package.json b/backend/mcp-bundles/notionhq-notion-mcp-server/package.json new file mode 100644 index 00000000..cf4d6f30 --- /dev/null +++ b/backend/mcp-bundles/notionhq-notion-mcp-server/package.json @@ -0,0 +1 @@ +{"name":"@notionhq/notion-mcp-server","version":"2.2.1"} \ No newline at end of file diff --git a/backend/mcp-bundles/notionhq-notion-mcp-server/scripts/notion-openapi.json b/backend/mcp-bundles/notionhq-notion-mcp-server/scripts/notion-openapi.json new file mode 100644 index 00000000..18669f22 --- /dev/null +++ b/backend/mcp-bundles/notionhq-notion-mcp-server/scripts/notion-openapi.json @@ -0,0 +1,2217 @@ +{ + "openapi": "3.1.0", + "info": { + "title": "Notion API", + "version": "2.0.0", + "description": "Notion API 2025-09-03 - Data Source Edition. Breaking change: Database endpoints replaced with data source endpoints.", + "license": { + "name": "MIT", + "url": "https://github.com/makenotion/notion-sdk-js/blob/main/LICENSE" + } + }, + "servers": [ + { + "url": "https://api.notion.com" + } + ], + "components": { + "securitySchemes": { + "bearerAuth": { + "type": "http", + "scheme": "bearer" + }, + "basicAuth": { + "type": "http", + "scheme": "basic" + } + }, + "parameters": { + "notionVersion": { + "name": "Notion-Version", + "in": "header", + "required": false, + "schema": { + "type": "string", + "default": "2025-09-03" + }, + "description": "The Notion API version" + } + }, + "schemas": { + "richTextRequest": { + "type": "object", + "required": [ + "text" + ], + "properties": { + "text": { + "type": "object", + "required": [ + "content" + ], + "properties": { + "content": { + "type": "string" + }, + "link": { + "type": [ + "object", + "null" + ], + "properties": { + "url": { + "type": "string" + } + }, + "required": [ + "url" + ] + } + }, + "additionalProperties": false + }, + "type": { + "enum": [ + "text" + ], + "type": "string" + } + }, + "additionalProperties": false + }, + "pageIdParentRequest": { + "type": "object", + "properties": { + "page_id": { + "type": "string", + "format": "uuid" + } + }, + "required": [ + "page_id" + ] + }, + "dataSourceIdParentRequest": { + "type": "object", + "properties": { + "type": { + "type": "string", + "const": "database_id" + }, + "database_id": { + "type": "string", + "format": "uuid" + } + }, + "required": [ + "database_id" + ] + }, + "parentRequest": { + "oneOf": [ + { + "$ref": "#/components/schemas/pageIdParentRequest" + }, + { + "$ref": "#/components/schemas/dataSourceIdParentRequest" + }, + { + "type": "object", + "properties": { + "type": { + "const": "workspace" + } + }, + "required": [ + "type" + ] + } + ] + }, + "movePageParentRequest": { + "oneOf": [ + { + "type": "object", + "properties": { + "type": { + "const": "page_id" + }, + "page_id": { + "type": "string", + "format": "uuid" + } + }, + "required": [ + "type", + "page_id" + ] + }, + { + "type": "object", + "properties": { + "type": { + "const": "database_id" + }, + "database_id": { + "type": "string", + "format": "uuid" + } + }, + "required": [ + "type", + "database_id" + ] + }, + { + "type": "object", + "properties": { + "type": { + "const": "workspace" + } + }, + "required": [ + "type" + ] + } + ] + }, + "sortObject": { + "type": "object", + "required": [ + "property", + "direction" + ], + "properties": { + "property": { + "type": "string" + }, + "direction": { + "enum": [ + "ascending", + "descending" + ], + "type": "string" + } + } + }, + "paragraphBlockRequest": { + "type": "object", + "properties": { + "paragraph": { + "type": "object", + "properties": { + "rich_text": { + "type": "array", + "items": { + "$ref": "#/components/schemas/richTextRequest" + }, + "maxItems": 100 + } + }, + "additionalProperties": false, + "required": [ + "rich_text" + ] + }, + "type": { + "enum": [ + "paragraph" + ], + "type": "string" + } + }, + "additionalProperties": false + }, + "bulletedListItemBlockRequest": { + "type": "object", + "properties": { + "bulleted_list_item": { + "type": "object", + "properties": { + "rich_text": { + "type": "array", + "items": { + "$ref": "#/components/schemas/richTextRequest" + }, + "maxItems": 100 + } + }, + "additionalProperties": false, + "required": [ + "rich_text" + ] + }, + "type": { + "enum": [ + "bulleted_list_item" + ], + "type": "string" + } + }, + "additionalProperties": false + }, + "blockObjectRequest": { + "anyOf": [ + { + "$ref": "#/components/schemas/paragraphBlockRequest" + }, + { + "$ref": "#/components/schemas/bulletedListItemBlockRequest" + } + ] + } + } + }, + "security": [ + { + "bearerAuth": [] + } + ], + "tags": [ + { + "name": "Databases", + "description": "Database endpoints for retrieving database metadata" + }, + { + "name": "Data sources", + "description": "Data source endpoints for querying and managing databases" + }, + { + "name": "Pages", + "description": "Page endpoints for creating and managing pages" + }, + { + "name": "Blocks", + "description": "Block endpoints for managing page content" + }, + { + "name": "Users", + "description": "User endpoints" + }, + { + "name": "Search", + "description": "Search endpoints" + }, + { + "name": "Comments", + "description": "Comment endpoints" + } + ], + "paths": { + "/v1/users/{user_id}": { + "get": { + "summary": "Retrieve a user", + "description": "", + "operationId": "get-user", + "parameters": [ + { + "name": "user_id", + "in": "path", + "required": true, + "schema": { + "type": "string", + "format": "uuid" + } + }, + { + "$ref": "#/components/parameters/notionVersion" + } + ], + "responses": { + "200": { + "description": "200", + "content": { + "application/json": { + "examples": {} + } + } + }, + "400": { + "description": "400", + "content": { + "application/json": { + "examples": { + "Result": { + "value": {} + } + }, + "schema": { + "type": "object", + "properties": {} + } + } + } + } + }, + "deprecated": false, + "security": [] + } + }, + "/v1/users": { + "get": { + "summary": "List all users", + "operationId": "get-users", + "parameters": [ + { + "name": "start_cursor", + "in": "query", + "description": "If supplied, this endpoint will return a page of results starting after the cursor provided. If not supplied, this endpoint will return the first page of results.", + "schema": { + "type": "string" + } + }, + { + "name": "page_size", + "in": "query", + "description": "The number of items from the full list desired in the response. Maximum: 100", + "schema": { + "type": "integer", + "default": 100 + } + }, + { + "$ref": "#/components/parameters/notionVersion" + } + ], + "responses": { + "400": { + "description": "400", + "content": { + "application/json": { + "examples": { + "Result": { + "value": {} + } + }, + "schema": { + "type": "object", + "properties": {} + } + } + } + }, + "200": { + "description": "Successful response", + "content": { + "application/json": { + "schema": { + "type": "object" + } + } + } + } + }, + "deprecated": false + } + }, + "/v1/users/me": { + "get": { + "summary": "Retrieve your token's bot user", + "description": "", + "operationId": "get-self", + "parameters": [ + { + "$ref": "#/components/parameters/notionVersion" + } + ], + "responses": { + "200": { + "description": "200", + "content": { + "application/json": { + "examples": { + "Result": { + "value": { + "object": "user", + "id": "16d84278-ab0e-484c-9bdd-b35da3bd8905", + "name": "pied piper", + "avatar_url": null, + "type": "bot", + "bot": { + "owner": { + "type": "user", + "user": { + "object": "user", + "id": "5389a034-eb5c-47b5-8a9e-f79c99ef166c", + "name": "christine makenotion", + "avatar_url": null, + "type": "person", + "person": { + "email": "christine@makenotion.com" + } + } + } + } + } + } + }, + "schema": { + "type": "object", + "properties": { + "object": { + "type": "string", + "example": "user" + }, + "id": { + "type": "string", + "example": "16d84278-ab0e-484c-9bdd-b35da3bd8905" + }, + "name": { + "type": "string", + "example": "pied piper" + }, + "avatar_url": {}, + "type": { + "type": "string", + "example": "bot" + }, + "bot": { + "type": "object", + "properties": { + "owner": { + "type": "object", + "properties": { + "type": { + "type": "string", + "example": "user" + }, + "user": { + "type": "object", + "properties": { + "object": { + "type": "string", + "example": "user" + }, + "id": { + "type": "string", + "example": "5389a034-eb5c-47b5-8a9e-f79c99ef166c" + }, + "name": { + "type": "string", + "example": "christine makenotion" + }, + "avatar_url": {}, + "type": { + "type": "string", + "example": "person" + }, + "person": { + "type": "object", + "properties": { + "email": { + "type": "string", + "example": "christine@makenotion.com" + } + } + } + } + } + } + } + } + } + } + } + } + } + }, + "400": { + "description": "Bad request", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "object": { + "type": "string", + "example": "error" + }, + "status": { + "type": "integer", + "example": 400 + }, + "code": { + "type": "string" + }, + "message": { + "type": "string" + } + } + } + } + } + } + }, + "deprecated": false, + "security": [] + } + }, + "/v1/search": { + "post": { + "summary": "Search by title", + "description": "", + "operationId": "post-search", + "parameters": [ + { + "$ref": "#/components/parameters/notionVersion" + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "query": { + "type": "string", + "description": "The text that the API compares page and database titles against." + }, + "sort": { + "type": "object", + "description": "A set of criteria, `direction` and `timestamp` keys, that orders the results. The **only** supported timestamp value is `\"last_edited_time\"`. Supported `direction` values are `\"ascending\"` and `\"descending\"`. If `sort` is not provided, then the most recently edited results are returned first.", + "properties": { + "direction": { + "type": "string", + "description": "The direction to sort. Possible values include `ascending` and `descending`." + }, + "timestamp": { + "type": "string", + "description": "The name of the timestamp to sort against. Possible values include `last_edited_time`." + } + } + }, + "filter": { + "type": "object", + "description": "A set of criteria, `value` and `property` keys, that limits the results to either only pages or only data sources. Possible `value` values are `\"page\"` or `\"data_source\"`. The only supported `property` value is `\"object\"`.", + "properties": { + "value": { + "type": "string", + "description": "The value of the property to filter the results by. Possible values for object type include `page` or `data_source`. **Limitation**: Currently the only filter allowed is `object` which will filter by type of object (either `page` or `data_source`)", + "enum": [ + "page", + "data_source" + ] + }, + "property": { + "type": "string", + "description": "The name of the property to filter by. Currently the only property you can filter by is the object type. Possible values include `object`. Limitation: Currently the only filter allowed is `object` which will filter by type of object (either `page` or `data_source`)" + } + } + }, + "start_cursor": { + "type": "string", + "description": "A `cursor` value returned in a previous response that If supplied, limits the response to results starting after the `cursor`. If not supplied, then the first page of results is returned. Refer to [pagination](https://developers.notion.com/reference/intro#pagination) for more details." + }, + "page_size": { + "type": "integer", + "description": "The number of items from the full list to include in the response. Maximum: `100`.", + "default": 100, + "format": "int32" + } + } + } + } + } + }, + "responses": { + "200": { + "description": "Successful response", + "content": { + "application/json": { + "schema": { + "type": "object" + } + } + } + }, + "400": { + "description": "Bad request", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "object": { + "type": "string", + "example": "error" + }, + "status": { + "type": "integer", + "example": 400 + }, + "code": { + "type": "string" + }, + "message": { + "type": "string" + } + } + } + } + } + } + }, + "deprecated": false, + "security": [] + } + }, + "/v1/blocks/{block_id}/children": { + "get": { + "summary": "Retrieve block children", + "description": "", + "operationId": "get-block-children", + "parameters": [ + { + "name": "block_id", + "in": "path", + "description": "Identifier for a [block](ref:block)", + "schema": { + "type": "string" + }, + "required": true + }, + { + "name": "start_cursor", + "in": "query", + "description": "If supplied, this endpoint will return a page of results starting after the cursor provided. If not supplied, this endpoint will return the first page of results.", + "schema": { + "type": "string" + } + }, + { + "name": "page_size", + "in": "query", + "description": "The number of items from the full list desired in the response. Maximum: 100", + "schema": { + "type": "integer", + "format": "int32", + "default": 100 + } + }, + { + "$ref": "#/components/parameters/notionVersion" + } + ], + "responses": { + "200": { + "description": "Successful response", + "content": { + "application/json": { + "schema": { + "type": "object" + } + } + } + }, + "400": { + "description": "Bad request", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "object": { + "type": "string", + "example": "error" + }, + "status": { + "type": "integer", + "example": 400 + }, + "code": { + "type": "string" + }, + "message": { + "type": "string" + } + } + } + } + } + } + }, + "deprecated": false, + "security": [] + }, + "patch": { + "summary": "Append block children", + "description": "", + "operationId": "patch-block-children", + "parameters": [ + { + "name": "block_id", + "in": "path", + "description": "Identifier for a [block](ref:block). Also accepts a [page](ref:page) ID.", + "schema": { + "type": "string" + }, + "required": true + }, + { + "$ref": "#/components/parameters/notionVersion" + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "type": "object", + "required": [ + "children" + ], + "properties": { + "children": { + "type": "array", + "items": { + "$ref": "#/components/schemas/blockObjectRequest" + }, + "description": "Child content to append to a container block as an array of [block objects](ref:block)" + }, + "after": { + "type": "string", + "description": "The ID of the existing block that the new block should be appended after." + } + } + } + } + } + }, + "responses": { + "200": { + "description": "Successful response", + "content": { + "application/json": { + "schema": { + "type": "object" + } + } + } + }, + "400": { + "description": "Bad request", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "object": { + "type": "string", + "example": "error" + }, + "status": { + "type": "integer", + "example": 400 + }, + "code": { + "type": "string" + }, + "message": { + "type": "string" + } + } + } + } + } + } + }, + "deprecated": false, + "security": [] + } + }, + "/v1/blocks/{block_id}": { + "get": { + "summary": "Retrieve a block", + "description": "", + "operationId": "retrieve-a-block", + "parameters": [ + { + "name": "block_id", + "in": "path", + "description": "Identifier for a Notion block", + "schema": { + "type": "string" + }, + "required": true + }, + { + "$ref": "#/components/parameters/notionVersion" + } + ], + "responses": { + "200": { + "description": "Successful response", + "content": { + "application/json": { + "schema": { + "type": "object" + } + } + } + }, + "400": { + "description": "Bad request", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "object": { + "type": "string", + "example": "error" + }, + "status": { + "type": "integer", + "example": 400 + }, + "code": { + "type": "string" + }, + "message": { + "type": "string" + } + } + } + } + } + } + }, + "deprecated": false, + "security": [] + }, + "patch": { + "summary": "Update a block", + "description": "", + "operationId": "update-a-block", + "parameters": [ + { + "name": "block_id", + "in": "path", + "description": "Identifier for a Notion block", + "schema": { + "type": "string" + }, + "required": true + }, + { + "$ref": "#/components/parameters/notionVersion" + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "object", + "description": "The [block object `type`](ref:block#block-object-keys) value with the properties to be updated. Currently only `text` (for supported block types) and `checked` (for `to_do` blocks) fields can be updated.", + "properties": {} + }, + "archived": { + "type": "boolean", + "description": "Set to true to archive (delete) a block. Set to false to un-archive (restore) a block.", + "default": true + } + } + } + } + } + }, + "responses": { + "200": { + "description": "Successful response", + "content": { + "application/json": { + "schema": { + "type": "object" + } + } + } + }, + "400": { + "description": "Bad request", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "object": { + "type": "string", + "example": "error" + }, + "status": { + "type": "integer", + "example": 400 + }, + "code": { + "type": "string" + }, + "message": { + "type": "string" + } + } + } + } + } + } + }, + "deprecated": false, + "security": [] + }, + "delete": { + "summary": "Delete a block", + "description": "", + "operationId": "delete-a-block", + "parameters": [ + { + "name": "block_id", + "in": "path", + "description": "Identifier for a Notion block", + "schema": { + "type": "string" + }, + "required": true + }, + { + "$ref": "#/components/parameters/notionVersion" + } + ], + "responses": { + "200": { + "description": "Successful response", + "content": { + "application/json": { + "schema": { + "type": "object" + } + } + } + }, + "400": { + "description": "Bad request", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "object": { + "type": "string", + "example": "error" + }, + "status": { + "type": "integer", + "example": 400 + }, + "code": { + "type": "string" + }, + "message": { + "type": "string" + } + } + } + } + } + } + }, + "deprecated": false, + "security": [] + } + }, + "/v1/pages/{page_id}": { + "get": { + "summary": "Retrieve a page", + "description": "", + "operationId": "retrieve-a-page", + "parameters": [ + { + "name": "page_id", + "in": "path", + "description": "Identifier for a Notion page", + "schema": { + "type": "string" + }, + "required": true + }, + { + "name": "filter_properties", + "in": "query", + "description": "A list of page property value IDs associated with the page. Use this param to limit the response to a specific page property value or values. To retrieve multiple properties, specify each page property ID. For example: `?filter_properties=iAk8&filter_properties=b7dh`.", + "schema": { + "type": "string" + } + }, + { + "$ref": "#/components/parameters/notionVersion" + } + ], + "responses": { + "200": { + "description": "Successful response", + "content": { + "application/json": { + "schema": { + "type": "object" + } + } + } + }, + "400": { + "description": "Bad request", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "object": { + "type": "string", + "example": "error" + }, + "status": { + "type": "integer", + "example": 400 + }, + "code": { + "type": "string" + }, + "message": { + "type": "string" + } + } + } + } + } + } + }, + "deprecated": false, + "security": [] + }, + "patch": { + "summary": "Update page properties", + "description": "", + "operationId": "patch-page", + "parameters": [ + { + "name": "page_id", + "in": "path", + "description": "The identifier for the Notion page to be updated.", + "schema": { + "type": "string" + }, + "required": true + }, + { + "$ref": "#/components/parameters/notionVersion" + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "properties": { + "description": "The property values to update for the page. The keys are the names or IDs of the property and the values are property values. If a page property ID is not included, then it is not changed.", + "type": "object", + "additionalProperties": true + }, + "in_trash": { + "type": "boolean", + "description": "Set to true to delete a block. Set to false to restore a block.", + "default": false + }, + "archived": { + "type": "boolean" + }, + "icon": { + "description": "A page icon for the page. Supported types are [external file object](https://developers.notion.com/reference/file-object) or [emoji object](https://developers.notion.com/reference/emoji-object).", + "type": "object", + "properties": { + "emoji": { + "type": "string" + } + }, + "additionalProperties": false, + "required": [ + "emoji" + ] + }, + "cover": { + "type": "object", + "description": "A cover image for the page. Only [external file objects](https://developers.notion.com/reference/file-object) are supported.", + "properties": { + "external": { + "type": "object", + "properties": { + "url": { + "type": "string" + } + }, + "additionalProperties": false, + "required": [ + "url" + ] + }, + "type": { + "enum": [ + "external" + ], + "type": "string" + } + }, + "required": [ + "external" + ], + "additionalProperties": false + } + } + } + } + } + }, + "responses": { + "200": { + "description": "Successful response", + "content": { + "application/json": { + "schema": { + "type": "object" + } + } + } + }, + "400": { + "description": "Bad request", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "object": { + "type": "string", + "example": "error" + }, + "status": { + "type": "integer", + "example": 400 + }, + "code": { + "type": "string" + }, + "message": { + "type": "string" + } + } + } + } + } + } + }, + "deprecated": false, + "security": [] + } + }, + "/v1/pages": { + "post": { + "summary": "Create a page", + "description": "", + "operationId": "post-page", + "parameters": [ + { + "$ref": "#/components/parameters/notionVersion" + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "type": "object", + "required": [ + "parent", + "properties" + ], + "properties": { + "parent": { + "$ref": "#/components/schemas/parentRequest" + }, + "properties": { + "description": "The property values for the new page. The keys are the names or IDs of the property and the values are property values.", + "type": "object", + "additionalProperties": true + }, + "children": { + "type": "array", + "description": "The content to be rendered on the new page, represented as an array of [block objects](https://developers.notion.com/reference/block).", + "items": { + "type": "string" + } + }, + "icon": { + "type": "string", + "description": "The icon of the new page. Either an [emoji object](https://developers.notion.com/reference/emoji-object) or an [external file object](https://developers.notion.com/reference/file-object)..", + "format": "json" + }, + "cover": { + "type": "string", + "description": "The cover image of the new page, represented as a [file object](https://developers.notion.com/reference/file-object).", + "format": "json" + } + } + } + } + } + }, + "responses": { + "200": { + "description": "Successful response", + "content": { + "application/json": { + "schema": { + "type": "object" + } + } + } + }, + "400": { + "description": "Bad request", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "object": { + "type": "string", + "example": "error" + }, + "status": { + "type": "integer", + "example": 400 + }, + "code": { + "type": "string" + }, + "message": { + "type": "string" + } + } + } + } + } + } + }, + "deprecated": false, + "security": [] + } + }, + "/v1/pages/{page_id}/properties/{property_id}": { + "get": { + "summary": "Retrieve a page property item", + "description": "", + "operationId": "retrieve-a-page-property", + "parameters": [ + { + "name": "page_id", + "in": "path", + "description": "Identifier for a Notion page", + "schema": { + "type": "string" + }, + "required": true + }, + { + "name": "property_id", + "in": "path", + "description": "Identifier for a page [property](https://developers.notion.com/reference/page#all-property-values)", + "schema": { + "type": "string" + }, + "required": true + }, + { + "name": "page_size", + "in": "query", + "description": "For paginated properties. The max number of property item objects on a page. The default size is 100", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "start_cursor", + "in": "query", + "description": "For paginated properties.", + "schema": { + "type": "string" + } + }, + { + "$ref": "#/components/parameters/notionVersion" + } + ], + "responses": { + "200": { + "description": "200", + "content": { + "application/json": { + "examples": {} + } + } + }, + "400": { + "description": "Bad request", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "object": { + "type": "string", + "example": "error" + }, + "status": { + "type": "integer", + "example": 400 + }, + "code": { + "type": "string" + }, + "message": { + "type": "string" + } + } + } + } + } + } + }, + "deprecated": false, + "security": [] + } + }, + "/v1/comments": { + "get": { + "summary": "Retrieve comments", + "description": "Retrieves a list of un-resolved [Comment objects](ref:comment-object) from a page or block.", + "operationId": "retrieve-a-comment", + "parameters": [ + { + "name": "block_id", + "in": "query", + "description": "Identifier for a Notion block or page", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "start_cursor", + "in": "query", + "description": "If supplied, this endpoint will return a page of results starting after the cursor provided. If not supplied, this endpoint will return the first page of results.", + "schema": { + "type": "string" + } + }, + { + "name": "page_size", + "in": "query", + "description": "The number of items from the full list desired in the response. Maximum: 100", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "$ref": "#/components/parameters/notionVersion" + } + ], + "responses": { + "200": { + "description": "200", + "content": { + "application/json": { + "examples": { + "OK": { + "value": { + "object": "list", + "results": [ + { + "object": "comment", + "id": "94cc56ab-9f02-409d-9f99-1037e9fe502f", + "parent": { + "type": "page_id", + "page_id": "5c6a2821-6bb1-4a7e-b6e1-c50111515c3d" + }, + "discussion_id": "f1407351-36f5-4c49-a13c-49f8ba11776d", + "created_time": "2022-07-15T16:52:00.000Z", + "last_edited_time": "2022-07-15T19:16:00.000Z", + "created_by": { + "object": "user", + "id": "9b15170a-9941-4297-8ee6-83fa7649a87a" + }, + "rich_text": [ + { + "type": "text", + "text": { + "content": "Single comment", + "link": null + }, + "annotations": { + "bold": false, + "italic": false, + "strikethrough": false, + "underline": false, + "code": false, + "color": "default" + }, + "plain_text": "Single comment", + "href": null + } + ] + } + ], + "next_cursor": null, + "has_more": false, + "type": "comment", + "comment": {} + } + } + } + } + } + }, + "400": { + "description": "Bad request", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "object": { + "type": "string", + "example": "error" + }, + "status": { + "type": "integer", + "example": 400 + }, + "code": { + "type": "string" + }, + "message": { + "type": "string" + } + } + } + } + } + } + }, + "deprecated": false, + "security": [] + }, + "post": { + "summary": "Create comment", + "description": "Creates a comment in a page or existing discussion thread.", + "operationId": "create-a-comment", + "requestBody": { + "content": { + "application/json": { + "schema": { + "type": "object", + "required": [ + "parent", + "rich_text" + ], + "properties": { + "parent": { + "type": "object", + "description": "The page that contains the comment", + "required": [ + "page_id" + ], + "properties": { + "page_id": { + "type": "string", + "description": "the page ID" + } + } + }, + "rich_text": { + "type": "array", + "items": { + "type": "object", + "required": [ + "text" + ], + "properties": { + "text": { + "type": "object", + "required": [ + "content" + ], + "properties": { + "content": { + "type": "string", + "description": "The content of the comment" + } + } + } + } + } + } + } + } + } + } + }, + "responses": { + "200": { + "description": "200", + "content": { + "application/json": { + "examples": { + "Result": { + "value": { + "object": "comment", + "id": "b52b8ed6-e029-4707-a671-832549c09de3", + "parent": { + "type": "page_id", + "page_id": "5c6a2821-6bb1-4a7e-b6e1-c50111515c3d" + }, + "discussion_id": "f1407351-36f5-4c49-a13c-49f8ba11776d", + "created_time": "2022-07-15T20:53:00.000Z", + "last_edited_time": "2022-07-15T20:53:00.000Z", + "created_by": { + "object": "user", + "id": "067dee40-6ebd-496f-b446-093c715fb5ec" + }, + "rich_text": [ + { + "type": "text", + "text": { + "content": "Hello world", + "link": null + }, + "annotations": { + "bold": false, + "italic": false, + "strikethrough": false, + "underline": false, + "code": false, + "color": "default" + }, + "plain_text": "Hello world", + "href": null + } + ] + } + } + } + } + } + }, + "400": { + "description": "Bad request", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "object": { + "type": "string", + "example": "error" + }, + "status": { + "type": "integer", + "example": 400 + }, + "code": { + "type": "string" + }, + "message": { + "type": "string" + } + } + } + } + } + } + }, + "deprecated": false, + "security": [] + } + }, + "/v1/data_sources/{data_source_id}/query": { + "post": { + "summary": "Query a data source", + "description": "Query a data source (database) using filters and sorts", + "operationId": "query-data-source", + "tags": [ + "Data sources" + ], + "parameters": [ + { + "name": "data_source_id", + "in": "path", + "description": "Identifier for a Notion data source (database)", + "schema": { + "type": "string" + }, + "required": true + }, + { + "name": "filter_properties", + "in": "query", + "description": "A list of page property value IDs to limit the response", + "schema": { + "type": "array", + "items": { + "type": "string" + } + } + }, + { + "$ref": "#/components/parameters/notionVersion" + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "filter": { + "type": "object", + "description": "Filter conditions for querying the data source" + }, + "sorts": { + "type": "array", + "items": { + "$ref": "#/components/schemas/sortObject" + } + }, + "start_cursor": { + "type": "string" + }, + "page_size": { + "type": "integer", + "default": 100 + }, + "archived": { + "type": "boolean" + }, + "in_trash": { + "type": "boolean" + } + } + } + } + } + }, + "responses": { + "200": { + "description": "Successful response", + "content": { + "application/json": { + "schema": { + "type": "object" + } + } + } + }, + "400": { + "description": "Bad request", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "object": { + "type": "string", + "example": "error" + }, + "status": { + "type": "integer", + "example": 400 + }, + "code": { + "type": "string" + }, + "message": { + "type": "string" + } + } + } + } + } + } + }, + "deprecated": false, + "security": [] + } + }, + "/v1/data_sources/{data_source_id}": { + "get": { + "summary": "Retrieve a data source", + "description": "Retrieve metadata and schema for a data source", + "operationId": "retrieve-a-data-source", + "tags": [ + "Data sources" + ], + "parameters": [ + { + "name": "data_source_id", + "in": "path", + "description": "Identifier for a Notion data source", + "schema": { + "type": "string" + }, + "required": true + }, + { + "$ref": "#/components/parameters/notionVersion" + } + ], + "responses": { + "200": { + "description": "Successful response", + "content": { + "application/json": { + "schema": { + "type": "object" + } + } + } + }, + "400": { + "description": "Bad request", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "object": { + "type": "string", + "example": "error" + }, + "status": { + "type": "integer", + "example": 400 + }, + "code": { + "type": "string" + }, + "message": { + "type": "string" + } + } + } + } + } + } + }, + "deprecated": false, + "security": [] + }, + "patch": { + "summary": "Update a data source", + "description": "Update properties of a data source", + "operationId": "update-a-data-source", + "tags": [ + "Data sources" + ], + "parameters": [ + { + "name": "data_source_id", + "in": "path", + "description": "Identifier for a Notion data source", + "schema": { + "type": "string" + }, + "required": true + }, + { + "$ref": "#/components/parameters/notionVersion" + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "title": { + "type": "array", + "items": { + "$ref": "#/components/schemas/richTextRequest" + } + }, + "description": { + "type": "array", + "items": { + "$ref": "#/components/schemas/richTextRequest" + }, + "maxItems": 100 + }, + "properties": { + "type": "object", + "description": "Property schema updates" + } + } + } + } + } + }, + "responses": { + "200": { + "description": "Successful response", + "content": { + "application/json": { + "schema": { + "type": "object" + } + } + } + }, + "400": { + "description": "Bad request", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "object": { + "type": "string", + "example": "error" + }, + "status": { + "type": "integer", + "example": 400 + }, + "code": { + "type": "string" + }, + "message": { + "type": "string" + } + } + } + } + } + } + }, + "deprecated": false, + "security": [] + } + }, + "/v1/data_sources": { + "post": { + "summary": "Create a data source", + "description": "Create a new data source (database)", + "operationId": "create-a-data-source", + "tags": [ + "Data sources" + ], + "parameters": [ + { + "$ref": "#/components/parameters/notionVersion" + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "type": "object", + "required": [ + "parent", + "properties" + ], + "properties": { + "parent": { + "$ref": "#/components/schemas/pageIdParentRequest" + }, + "properties": { + "type": "object", + "description": "Property schema of data source" + }, + "title": { + "type": "array", + "items": { + "$ref": "#/components/schemas/richTextRequest" + }, + "maxItems": 100 + } + } + } + } + } + }, + "responses": { + "200": { + "description": "Successful response", + "content": { + "application/json": { + "schema": { + "type": "object" + } + } + } + }, + "400": { + "description": "Bad request", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "object": { + "type": "string", + "example": "error" + }, + "status": { + "type": "integer", + "example": 400 + }, + "code": { + "type": "string" + }, + "message": { + "type": "string" + } + } + } + } + } + } + }, + "deprecated": false, + "security": [] + } + }, + "/v1/data_sources/{data_source_id}/templates": { + "get": { + "summary": "List templates in a data source", + "description": "List available templates for a data source", + "operationId": "list-data-source-templates", + "tags": [ + "Data sources" + ], + "parameters": [ + { + "name": "data_source_id", + "in": "path", + "description": "Identifier for a Notion data source", + "schema": { + "type": "string" + }, + "required": true + }, + { + "name": "start_cursor", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "page_size", + "in": "query", + "schema": { + "type": "integer", + "default": 100 + } + }, + { + "$ref": "#/components/parameters/notionVersion" + } + ], + "responses": { + "200": { + "description": "Successful response", + "content": { + "application/json": { + "schema": { + "type": "object" + } + } + } + }, + "400": { + "description": "Bad request", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "object": { + "type": "string", + "example": "error" + }, + "status": { + "type": "integer", + "example": 400 + }, + "code": { + "type": "string" + }, + "message": { + "type": "string" + } + } + } + } + } + } + }, + "deprecated": false, + "security": [] + } + }, + "/v1/databases/{database_id}": { + "get": { + "summary": "Retrieve a database", + "description": "Retrieves a database object using the ID specified. Returns database metadata including the list of data source IDs contained in the database.", + "operationId": "retrieve-a-database", + "tags": [ + "Databases" + ], + "parameters": [ + { + "name": "database_id", + "in": "path", + "description": "Identifier for a Notion database", + "schema": { + "type": "string" + }, + "required": true + }, + { + "$ref": "#/components/parameters/notionVersion" + } + ], + "responses": { + "200": { + "description": "Successful response", + "content": { + "application/json": { + "schema": { + "type": "object" + } + } + } + }, + "400": { + "description": "Bad request", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "object": { + "type": "string", + "example": "error" + }, + "status": { + "type": "integer", + "example": 400 + }, + "code": { + "type": "string" + }, + "message": { + "type": "string" + } + } + } + } + } + } + }, + "deprecated": false, + "security": [] + } + }, + "/v1/pages/{page_id}/move": { + "post": { + "summary": "Move a page", + "description": "Move a page to a different parent location", + "operationId": "move-page", + "tags": [ + "Pages" + ], + "parameters": [ + { + "name": "page_id", + "in": "path", + "description": "Identifier for a Notion page", + "schema": { + "type": "string", + "format": "uuid" + }, + "required": true + }, + { + "$ref": "#/components/parameters/notionVersion" + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "type": "object", + "required": [ + "parent" + ], + "properties": { + "parent": { + "$ref": "#/components/schemas/movePageParentRequest" + } + } + } + } + } + }, + "responses": { + "200": { + "description": "Successful response", + "content": { + "application/json": { + "schema": { + "type": "object" + } + } + } + }, + "400": { + "description": "Bad request", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "object": { + "type": "string", + "example": "error" + }, + "status": { + "type": "integer", + "example": 400 + }, + "code": { + "type": "string" + }, + "message": { + "type": "string" + } + } + } + } + } + } + }, + "deprecated": false, + "security": [] + } + } + } +} \ No newline at end of file diff --git a/backend/mcp-bundles/reddit-mcp-buddy.js b/backend/mcp-bundles/reddit-mcp-buddy.js index 81e9149e..e47c5d5f 100644 --- a/backend/mcp-bundles/reddit-mcp-buddy.js +++ b/backend/mcp-bundles/reddit-mcp-buddy.js @@ -1,3 +1,4 @@ +const __OPENSWARM_IMPORT_META_URL__ = require("url").pathToFileURL(__filename).href; var __create = Object.create; var __defProp = Object.defineProperty; var __getOwnPropDesc = Object.getOwnPropertyDescriptor; diff --git a/backend/mcp-bundles/softeria-ms-365-mcp-server/dist/endpoints.json b/backend/mcp-bundles/softeria-ms-365-mcp-server/dist/endpoints.json new file mode 100644 index 00000000..d6dcc737 --- /dev/null +++ b/backend/mcp-bundles/softeria-ms-365-mcp-server/dist/endpoints.json @@ -0,0 +1,1551 @@ +[ + { + "pathPattern": "/me/messages", + "method": "get", + "toolName": "list-mail-messages", + "scopes": ["Mail.Read"], + "llmTip": "CRITICAL: When searching emails, the $search parameter value MUST be wrapped in double quotes. Format: $search=\"your search query here\". Use KQL (Keyword Query Language) syntax to search specific properties: 'from:', 'subject:', 'body:', 'to:', 'cc:', 'bcc:', 'attachment:', 'hasAttachments:', 'importance:', 'received:', 'sent:'. Examples: $search=\"from:john@example.com\" | $search=\"subject:meeting AND hasAttachments:true\" | $search=\"body:urgent AND received>=2024-01-01\" | $search=\"from:john AND importance:high\". Remember: ALWAYS wrap the entire search expression in double quotes! Reference: https://learn.microsoft.com/en-us/graph/search-query-parameter IMPORTANT: Always use $select to limit returned fields and reduce response size. Recommended default: $select=id,subject,from,toRecipients,receivedDateTime,bodyPreview,isRead,hasAttachments. Use bodyPreview instead of body for listings. To read the full email body, use get-mail-message with the specific message id." + }, + { + "pathPattern": "/me/mailFolders", + "method": "get", + "toolName": "list-mail-folders", + "scopes": ["Mail.Read"] + }, + { + "pathPattern": "/me/mailFolders/{mailFolder-id}/childFolders", + "method": "get", + "toolName": "list-mail-child-folders", + "scopes": ["Mail.Read"] + }, + { + "pathPattern": "/me/mailFolders", + "method": "post", + "toolName": "create-mail-folder", + "scopes": ["Mail.ReadWrite"], + "llmTip": "Creates a top-level mail folder. Use create-mail-child-folder to create a subfolder inside an existing folder. Use list-mail-folders to find existing folder IDs." + }, + { + "pathPattern": "/me/mailFolders/{mailFolder-id}/childFolders", + "method": "post", + "toolName": "create-mail-child-folder", + "scopes": ["Mail.ReadWrite"], + "llmTip": "Creates a subfolder inside an existing mail folder. Use list-mail-folders or list-mail-child-folders to find the parent folder ID." + }, + { + "pathPattern": "/me/mailFolders/{mailFolder-id}", + "method": "patch", + "toolName": "update-mail-folder", + "scopes": ["Mail.ReadWrite"], + "llmTip": "Renames a mail folder by updating its displayName. Use list-mail-folders to find the folder ID." + }, + { + "pathPattern": "/me/mailFolders/{mailFolder-id}", + "method": "delete", + "toolName": "delete-mail-folder", + "scopes": ["Mail.ReadWrite"], + "llmTip": "Deletes a mail folder and all its contents. This action is irreversible. Use list-mail-folders to find the folder ID." + }, + { + "pathPattern": "/me/mailFolders/{mailFolder-id}/messages", + "method": "get", + "toolName": "list-mail-folder-messages", + "scopes": ["Mail.Read"], + "llmTip": "CRITICAL: When searching emails, the $search parameter value MUST be wrapped in double quotes. Format: $search=\"your search query here\". Use KQL (Keyword Query Language) syntax to search specific properties: 'from:', 'subject:', 'body:', 'to:', 'cc:', 'bcc:', 'attachment:', 'hasAttachments:', 'importance:', 'received:', 'sent:'. Examples: $search=\"from:john@example.com\" | $search=\"subject:meeting AND hasAttachments:true\" | $search=\"body:urgent AND received>=2024-01-01\" | $search=\"from:alice AND importance:high\". Remember: ALWAYS wrap the entire search expression in double quotes! Reference: https://learn.microsoft.com/en-us/graph/search-query-parameter IMPORTANT: Always use $select to limit returned fields and reduce response size. Recommended default: $select=id,subject,from,toRecipients,receivedDateTime,bodyPreview,isRead,hasAttachments. Use bodyPreview instead of body for listings. To read the full email body, use get-mail-message with the specific message id." + }, + { + "pathPattern": "/me/messages/{message-id}", + "method": "get", + "toolName": "get-mail-message", + "scopes": ["Mail.Read"] + }, + { + "pathPattern": "/me/sendMail", + "method": "post", + "toolName": "send-mail", + "scopes": ["Mail.Send"], + "llmTip": "CRITICAL: Do not try to guess the email address of the recipients. Use the list-users tool to find the email address of the recipients." + }, + { + "pathPattern": "/users/{user-id}/messages", + "method": "get", + "toolName": "list-shared-mailbox-messages", + "workScopes": ["Mail.Read.Shared"], + "llmTip": "CRITICAL: When searching emails, the $search parameter value MUST be wrapped in double quotes. Format: $search=\"your search query here\". Use KQL (Keyword Query Language) syntax to search specific properties: 'from:', 'subject:', 'body:', 'to:', 'cc:', 'bcc:', 'attachment:', 'hasAttachments:', 'importance:', 'received:', 'sent:'. Examples: $search=\"from:john@example.com\" | $search=\"subject:meeting AND hasAttachments:true\" | $search=\"body:urgent AND received>=2024-01-01\" | $search=\"from:alice AND importance:high\". Remember: ALWAYS wrap the entire search expression in double quotes! Reference: https://learn.microsoft.com/en-us/graph/search-query-parameter IMPORTANT: Always use $select to limit returned fields and reduce response size. Recommended default: $select=id,subject,from,toRecipients,receivedDateTime,bodyPreview,isRead,hasAttachments. Use bodyPreview instead of body for listings. To read the full email body, use get-shared-mailbox-message with the specific message id." + }, + { + "pathPattern": "/users/{user-id}/mailFolders/{mailFolder-id}/messages", + "method": "get", + "toolName": "list-shared-mailbox-folder-messages", + "workScopes": ["Mail.Read.Shared"], + "llmTip": "CRITICAL: When searching emails, the $search parameter value MUST be wrapped in double quotes. Format: $search=\"your search query here\". Use KQL (Keyword Query Language) syntax to search specific properties: 'from:', 'subject:', 'body:', 'to:', 'cc:', 'bcc:', 'attachment:', 'hasAttachments:', 'importance:', 'received:', 'sent:'. Examples: $search=\"from:john@example.com\" | $search=\"subject:meeting AND hasAttachments:true\" | $search=\"body:urgent AND received>=2024-01-01\" | $search=\"from:alice AND importance:high\". Remember: ALWAYS wrap the entire search expression in double quotes! Reference: https://learn.microsoft.com/en-us/graph/search-query-parameter IMPORTANT: Always use $select to limit returned fields and reduce response size. Recommended default: $select=id,subject,from,toRecipients,receivedDateTime,bodyPreview,isRead,hasAttachments. Use bodyPreview instead of body for listings. To read the full email body, use get-shared-mailbox-message with the specific message id." + }, + { + "pathPattern": "/users/{user-id}/messages/{message-id}", + "method": "get", + "toolName": "get-shared-mailbox-message", + "workScopes": ["Mail.Read.Shared"] + }, + { + "pathPattern": "/users/{user-id}/sendMail", + "method": "post", + "toolName": "send-shared-mailbox-mail", + "workScopes": ["Mail.Send.Shared"], + "llmTip": "CRITICAL: Do not try to guess the email address of the recipients. Use the list-users tool to find the email address of the recipients." + }, + { + "pathPattern": "/users", + "method": "get", + "toolName": "list-users", + "workScopes": ["User.Read.All"], + "llmTip": "CRITICAL: This request requires the ConsistencyLevel header set to eventual. When searching users, the $search parameter value MUST be wrapped in double quotes. Format: $search=\"your search query here\". Use KQL (Keyword Query Language) syntax to search specific properties: 'displayName:'. Examples: $search=\"displayName:john\" | $search=\"displayName:john\" OR \"displayName:jane\". Remember: ALWAYS wrap the entire search expression in double quotes and set the ConsistencyLevel header to eventual! Reference: https://learn.microsoft.com/en-us/graph/search-query-parameter" + }, + { + "pathPattern": "/me/messages", + "method": "post", + "toolName": "create-draft-email", + "scopes": ["Mail.ReadWrite"] + }, + { + "pathPattern": "/me/messages/{message-id}", + "method": "delete", + "toolName": "delete-mail-message", + "scopes": ["Mail.ReadWrite"], + "llmTip": "Soft delete — moves to Deleted Items. To permanently delete, delete again from Deleted Items." + }, + { + "pathPattern": "/me/messages/{message-id}/move", + "method": "post", + "toolName": "move-mail-message", + "scopes": ["Mail.ReadWrite"], + "llmTip": "destinationId accepts folder ID or well-known name (inbox, drafts, sentitems, deleteditems, junkemail, archive)." + }, + { + "pathPattern": "/me/messages/{message-id}", + "method": "patch", + "toolName": "update-mail-message", + "scopes": ["Mail.ReadWrite"] + }, + { + "pathPattern": "/me/messages/{message-id}/attachments", + "method": "post", + "toolName": "add-mail-attachment", + "scopes": ["Mail.ReadWrite"], + "llmTip": "Max 3MB. Body requires @odata.type: {\"@odata.type\": \"#microsoft.graph.fileAttachment\", \"name\": \"file.pdf\", \"contentBytes\": \"\"}." + }, + { + "pathPattern": "/me/messages/{message-id}/attachments/createUploadSession", + "method": "post", + "toolName": "create-mail-attachment-upload-session", + "scopes": ["Mail.ReadWrite"], + "llmTip": "For large attachments (3-150MB). Body: { AttachmentItem: { attachmentType: 'file', name: 'report.pdf', size: 5000000 } }. Returns a pre-authenticated uploadUrl for direct PUT of file bytes." + }, + { + "pathPattern": "/me/messages/{message-id}/attachments", + "method": "get", + "toolName": "list-mail-attachments", + "scopes": ["Mail.Read"] + }, + { + "pathPattern": "/me/messages/{message-id}/attachments/{attachment-id}", + "method": "get", + "toolName": "get-mail-attachment", + "scopes": ["Mail.Read"] + }, + { + "pathPattern": "/me/messages/{message-id}/attachments/{attachment-id}", + "method": "delete", + "toolName": "delete-mail-attachment", + "scopes": ["Mail.ReadWrite"] + }, + { + "pathPattern": "/me/messages/{message-id}/forward", + "method": "post", + "toolName": "forward-mail-message", + "scopes": ["Mail.Send"], + "llmTip": "Forward an email preserving full HTML formatting and attachments. The 'comment' field adds text above the forwarded content. toRecipients is required. Do NOT reconstruct the email manually - this endpoint handles everything server-side." + }, + { + "pathPattern": "/me/messages/{message-id}/reply", + "method": "post", + "toolName": "reply-mail-message", + "scopes": ["Mail.Send"], + "llmTip": "Reply to an email preserving full HTML formatting. The 'comment' field is your reply text. Do NOT reconstruct the email manually." + }, + { + "pathPattern": "/me/messages/{message-id}/replyAll", + "method": "post", + "toolName": "reply-all-mail-message", + "scopes": ["Mail.Send"], + "llmTip": "Reply-all preserving full HTML formatting. The 'comment' field is your reply text." + }, + { + "pathPattern": "/me/messages/{message-id}/createForward", + "method": "post", + "toolName": "create-forward-draft", + "scopes": ["Mail.ReadWrite"], + "llmTip": "Create a forward draft (does not send). Useful when user wants to review before sending." + }, + { + "pathPattern": "/me/messages/{message-id}/createReply", + "method": "post", + "toolName": "create-reply-draft", + "scopes": ["Mail.ReadWrite"] + }, + { + "pathPattern": "/me/messages/{message-id}/createReplyAll", + "method": "post", + "toolName": "create-reply-all-draft", + "scopes": ["Mail.ReadWrite"] + }, + { + "pathPattern": "/me/messages/{message-id}/send", + "method": "post", + "toolName": "send-draft-message", + "scopes": ["Mail.Send"], + "llmTip": "No request body needed — just call with the message ID. Draft must exist in Drafts folder." + }, + { + "pathPattern": "/me/mailFolders/{mailFolder-id}/messageRules", + "method": "get", + "toolName": "list-mail-rules", + "scopes": ["MailboxSettings.Read"], + "llmTip": "Lists all message rules for a mail folder. Use the Inbox folder ID (get it from list-mail-folders) for inbox rules. Each rule has displayName, sequence, isEnabled, conditions (fromAddresses, subjectContains, etc.), actions (moveToFolder, forwardTo, delete, etc.), and exceptions." + }, + { + "pathPattern": "/me/mailFolders/{mailFolder-id}/messageRules", + "method": "post", + "toolName": "create-mail-rule", + "scopes": ["MailboxSettings.ReadWrite"], + "llmTip": "Creates a message rule for a mail folder. Use the Inbox folder ID (get it from list-mail-folders) for inbox rules. Body: { displayName: 'Rule name', sequence: 1, isEnabled: true, conditions: { fromAddresses: [{ emailAddress: { address: 'user@example.com' } }] }, actions: { moveToFolder: 'folder-id' } }. Actions: moveToFolder, copyToFolder, forwardTo, forwardAsAttachmentTo, delete, markAsRead, markImportance, stopProcessingRules." + }, + { + "pathPattern": "/me/mailFolders/{mailFolder-id}/messageRules/{messageRule-id}", + "method": "patch", + "toolName": "update-mail-rule", + "scopes": ["MailboxSettings.ReadWrite"], + "llmTip": "Updates an existing message rule. Use the Inbox folder ID (get it from list-mail-folders) for inbox rules. Send only the properties to change. Common use: { isEnabled: false } to disable a rule, or update conditions/actions." + }, + { + "pathPattern": "/me/mailFolders/{mailFolder-id}/messageRules/{messageRule-id}", + "method": "delete", + "toolName": "delete-mail-rule", + "scopes": ["MailboxSettings.ReadWrite"], + "llmTip": "Deletes a message rule permanently. Use the Inbox folder ID (get it from list-mail-folders) for inbox rules." + }, + { + "pathPattern": "/me/events", + "method": "get", + "toolName": "list-calendar-events", + "scopes": ["Calendars.Read"], + "supportsTimezone": true, + "supportsExpandExtendedProperties": true, + "llmTip": "WARNING: Does NOT expand recurring events — only returns seriesMaster. Use get-calendar-view instead to see individual occurrences within a date range." + }, + { + "pathPattern": "/me/events/{event-id}", + "method": "get", + "toolName": "get-calendar-event", + "scopes": ["Calendars.Read"], + "supportsTimezone": true, + "supportsExpandExtendedProperties": true + }, + { + "pathPattern": "/me/events", + "method": "post", + "toolName": "create-calendar-event", + "scopes": ["Calendars.ReadWrite"], + "llmTip": "CRITICAL: Do not try to guess the email address of the recipients. Use the list-users tool to find the email address of the recipients." + }, + { + "pathPattern": "/me/events/{event-id}", + "method": "patch", + "toolName": "update-calendar-event", + "scopes": ["Calendars.ReadWrite"], + "llmTip": "CRITICAL: Do not try to guess the email address of the recipients. Use the list-users tool to find the email address of the recipients. WARNING: Setting attendees replaces the entire attendee list — include all attendees, not just new ones." + }, + { + "pathPattern": "/me/events/{event-id}", + "method": "delete", + "toolName": "delete-calendar-event", + "scopes": ["Calendars.ReadWrite"], + "llmTip": "Deleting a seriesMaster deletes ALL occurrences of the recurring event. To cancel a single occurrence, delete that specific instance ID from list-calendar-event-instances." + }, + { + "pathPattern": "/me/events/{event-id}/accept", + "method": "post", + "toolName": "accept-calendar-event", + "scopes": ["Calendars.ReadWrite"], + "llmTip": "Accepts a meeting invitation. Optional body: { sendResponse: true, comment: 'I will attend.' }. Set sendResponse to false to accept silently without notifying the organizer." + }, + { + "pathPattern": "/me/events/{event-id}/decline", + "method": "post", + "toolName": "decline-calendar-event", + "scopes": ["Calendars.ReadWrite"], + "llmTip": "Declines a meeting invitation. Optional body: { sendResponse: true, comment: 'Cannot attend, conflict.' }. The event remains in the calendar as declined unless the user deletes it." + }, + { + "pathPattern": "/me/events/{event-id}/tentativelyAccept", + "method": "post", + "toolName": "tentatively-accept-calendar-event", + "scopes": ["Calendars.ReadWrite"], + "llmTip": "Tentatively accepts a meeting invitation. Optional body: { sendResponse: true, comment: 'I might be able to attend.' }. Use proposedNewTime to suggest an alternative: { proposedNewTime: { start: { dateTime, timeZone }, end: { dateTime, timeZone } } }." + }, + { + "pathPattern": "/me/calendars/{calendar-id}/events", + "method": "get", + "toolName": "list-specific-calendar-events", + "scopes": ["Calendars.Read"], + "supportsTimezone": true, + "supportsExpandExtendedProperties": true, + "llmTip": "WARNING: Does NOT expand recurring events — only returns seriesMaster. Use get-specific-calendar-view instead." + }, + { + "pathPattern": "/me/calendars/{calendar-id}/events/{event-id}", + "method": "get", + "toolName": "get-specific-calendar-event", + "scopes": ["Calendars.Read"], + "supportsTimezone": true, + "supportsExpandExtendedProperties": true + }, + { + "pathPattern": "/me/calendars/{calendar-id}/events", + "method": "post", + "toolName": "create-specific-calendar-event", + "scopes": ["Calendars.ReadWrite"], + "llmTip": "CRITICAL: Do not try to guess the email address of the recipients. Use the list-users tool to find the email address of the recipients." + }, + { + "pathPattern": "/me/calendars/{calendar-id}/events/{event-id}", + "method": "patch", + "toolName": "update-specific-calendar-event", + "scopes": ["Calendars.ReadWrite"], + "llmTip": "CRITICAL: Do not try to guess the email address of the recipients. Use the list-users tool to find the email address of the recipients. WARNING: Setting attendees replaces the entire attendee list — include all attendees, not just new ones." + }, + { + "pathPattern": "/me/calendars/{calendar-id}/events/{event-id}", + "method": "delete", + "toolName": "delete-specific-calendar-event", + "scopes": ["Calendars.ReadWrite"], + "llmTip": "Deleting a seriesMaster deletes ALL occurrences. To cancel a single occurrence, use the specific instance ID." + }, + { + "pathPattern": "/me/calendarView", + "method": "get", + "toolName": "get-calendar-view", + "scopes": ["Calendars.Read"], + "supportsTimezone": true, + "supportsExpandExtendedProperties": true, + "llmTip": "Returns expanded recurring event instances (not just seriesMaster) within a date range for the default calendar. Requires startDateTime and endDateTime query parameters in ISO 8601 format (e.g., 2024-01-01T00:00:00Z). Use get-specific-calendar-view if you need a non-default calendar. To find Teams meetings, use $filter=isOnlineMeeting eq true. To search by subject, use $filter=contains(subject,'keyword'). Teams meetings include a joinWebUrl property needed for transcript access via list-online-meetings." + }, + { + "pathPattern": "/me/calendars/{calendar-id}/calendarView", + "method": "get", + "toolName": "get-specific-calendar-view", + "scopes": ["Calendars.Read"], + "supportsTimezone": true, + "supportsExpandExtendedProperties": true, + "llmTip": "Returns expanded recurring event instances (not just seriesMaster) within a date range for a specific calendar. Requires startDateTime and endDateTime query parameters in ISO 8601 format (e.g., 2024-01-01T00:00:00Z). Each instance includes seriesMasterId and type (occurrence/exception) fields for recurring event linkage. Use fetchAllPages=true to retrieve all results when there are many events. To find Teams meetings, use $filter=isOnlineMeeting eq true. Teams meetings include a joinWebUrl property needed for transcript access via list-online-meetings." + }, + { + "pathPattern": "/me/calendar/getSchedule", + "method": "post", + "toolName": "get-schedule", + "readOnly": true, + "workScopes": ["Calendars.Read"] + }, + { + "pathPattern": "/users/{user-id}/calendar/events", + "method": "get", + "toolName": "list-shared-calendar-events", + "workScopes": ["Calendars.Read.Shared"] + }, + { + "pathPattern": "/users/{user-id}/calendarView", + "method": "get", + "toolName": "get-shared-calendar-view", + "workScopes": ["Calendars.Read.Shared"], + "supportsTimezone": true + }, + { + "pathPattern": "/me/calendars/{calendar-id}/events/{event-id}/instances", + "method": "get", + "toolName": "list-calendar-event-instances", + "scopes": ["Calendars.Read"], + "supportsTimezone": true, + "supportsExpandExtendedProperties": true, + "llmTip": "Expand a recurring event into individual instances within a date range. Requires startDateTime and endDateTime query parameters in ISO 8601 format (e.g., 2024-01-01T00:00:00Z). Use this to see all occurrences of a recurring event." + }, + { + "pathPattern": "/me/calendars", + "method": "get", + "toolName": "list-calendars", + "scopes": ["Calendars.Read"] + }, + { + "pathPattern": "/me/calendars", + "method": "post", + "toolName": "create-calendar", + "scopes": ["Calendars.ReadWrite"], + "llmTip": "Creates a new personal calendar. Body: { name: 'My Calendar', color: 'auto' }. Available colors: auto, lightBlue, lightGreen, lightOrange, lightGray, lightYellow, lightTeal, lightPink, lightBrown, lightRed, maxColor." + }, + { + "pathPattern": "/me/calendars/{calendar-id}", + "method": "patch", + "toolName": "update-calendar", + "scopes": ["Calendars.ReadWrite"], + "llmTip": "Updates a calendar's properties. Body: { name: 'New Name', color: 'lightBlue' }. Cannot update the default calendar's name." + }, + { + "pathPattern": "/me/calendars/{calendar-id}", + "method": "delete", + "toolName": "delete-calendar", + "scopes": ["Calendars.ReadWrite"], + "llmTip": "Deletes a calendar and all its events. The default calendar cannot be deleted. This action cannot be undone." + }, + { + "pathPattern": "/me/findMeetingTimes", + "method": "post", + "toolName": "find-meeting-times", + "readOnly": true, + "workScopes": ["Calendars.Read.Shared"] + }, + { + "pathPattern": "/me/drives", + "method": "get", + "toolName": "list-drives", + "scopes": ["Files.Read"] + }, + { + "pathPattern": "/drives/{drive-id}/items/{driveItem-id}/delta()", + "method": "get", + "toolName": "get-drive-delta", + "scopes": ["Files.Read"], + "llmTip": "Tracks changes to a driveItem and its children over time. Returns a collection of driveItems that have been created, modified, or deleted. Use get-drive-root-item first to get the root driveItem-id, then pass it here. Supports $select and delta tokens for incremental sync via @odata.deltaLink." + }, + { + "pathPattern": "/drives/{drive-id}/root", + "method": "get", + "toolName": "get-drive-root-item", + "scopes": ["Files.Read"] + }, + { + "pathPattern": "/drives/{drive-id}/root", + "method": "get", + "toolName": "get-drive-root-item", + "scopes": ["Files.Read"] + }, + { + "pathPattern": "/drives/{drive-id}/items/{driveItem-id}/children", + "method": "get", + "toolName": "list-folder-files", + "scopes": ["Files.Read"] + }, + { + "pathPattern": "/drives/{drive-id}/items/{driveItem-id}/content", + "method": "get", + "toolName": "download-onedrive-file-content", + "scopes": ["Files.Read"], + "returnDownloadUrl": true, + "llmTip": "Returns a temporary download URL, NOT the file content directly." + }, + { + "pathPattern": "/drives/{drive-id}/items/{driveItem-id}", + "method": "delete", + "toolName": "delete-onedrive-file", + "scopes": ["Files.ReadWrite"] + }, + { + "pathPattern": "/drives/{drive-id}/items/{driveItem-id}/content", + "method": "put", + "toolName": "upload-file-content", + "scopes": ["Files.ReadWrite"], + "llmTip": "Max 4MB. For new files use path format: /items/root:/path/to/file.txt:/content. Overwrites existing files without warning." + }, + { + "pathPattern": "/drives/{drive-id}/items/{driveItem-id}/createUploadSession", + "method": "post", + "toolName": "create-upload-session", + "scopes": ["Files.ReadWrite"], + "llmTip": "For large file uploads (no size limit). Returns a pre-authenticated uploadUrl for direct PUT of file bytes. For new files use path: /items/{parentId}:/{fileName}:/createUploadSession. Body (optional): { item: { '@microsoft.graph.conflictBehavior': 'rename' } }." + }, + { + "pathPattern": "/drives/{drive-id}/items/{driveItem-id}", + "method": "get", + "toolName": "get-drive-item", + "scopes": ["Files.Read"], + "llmTip": "Gets metadata for a file or folder: name, size, lastModifiedDateTime, createdBy, webUrl, file (mimeType, hashes), folder (childCount), parentReference. Does not return content — use download-onedrive-file-content for that." + }, + { + "pathPattern": "/drives/{drive-id}/items/{driveItem-id}", + "method": "patch", + "toolName": "move-rename-onedrive-item", + "scopes": ["Files.ReadWrite"], + "llmTip": "Move and/or rename a file or folder. To move, provide parentReference with the target folder's id. To rename, provide a new name. Both can be done in a single request." + }, + { + "pathPattern": "/drives/{drive-id}/items/{driveItem-id}/children", + "method": "post", + "toolName": "create-onedrive-folder", + "scopes": ["Files.ReadWrite"], + "llmTip": "Creates a new folder inside the specified drive item. Body must include name (string) and folder ({}) fields. Use @microsoft.graph.conflictBehavior to control behavior on name conflict: 'rename' (default), 'replace', or 'fail'." + }, + { + "pathPattern": "/drives/{drive-id}/items/{driveItem-id}/invite", + "method": "post", + "toolName": "share-drive-item", + "scopes": ["Files.ReadWrite"], + "llmTip": "Shares a file or folder with specific users. Body: { recipients: [{ email: 'user@example.com' }], roles: ['read'], sendInvitation: true, message: 'Please review this file.' }. Roles: 'read', 'write', 'owner'. Set requireSignIn to true to require authentication." + }, + { + "pathPattern": "/drives/{drive-id}/items/{driveItem-id}/permissions", + "method": "get", + "toolName": "list-drive-item-permissions", + "scopes": ["Files.Read"], + "llmTip": "Lists all permissions (sharing links, direct access, inherited) on a file or folder. Each permission has roles, grantedTo (user), link (sharing URL), and inheritedFrom." + }, + { + "pathPattern": "/drives/{drive-id}/items/{driveItem-id}/permissions/{permission-id}", + "method": "delete", + "toolName": "delete-drive-item-permission", + "scopes": ["Files.ReadWrite"], + "llmTip": "Removes a specific permission from a file or folder. Only permissions that are not inherited can be deleted. Use list-drive-item-permissions first to find the permission ID." + }, + { + "pathPattern": "/drives/{drive-id}/items/{driveItem-id}/versions", + "method": "get", + "toolName": "list-drive-item-versions", + "scopes": ["Files.Read"], + "llmTip": "Lists version history of a file. Each version has id, lastModifiedDateTime, lastModifiedBy, and size. Use the version id with /versions/{id}/content to download a specific version." + }, + { + "pathPattern": "/drives/{drive-id}/search(q='{q}')", + "method": "get", + "toolName": "search-onedrive-files", + "scopes": ["Files.Read"], + "skipEncoding": ["q"], + "llmTip": "Searches for files in a drive by name or content. The q parameter searches file names, metadata, and file content. Returns matching driveItems with id, name, webUrl, size, lastModifiedDateTime. Use list-drives first to get the drive-id." + }, + { + "pathPattern": "/drives/{drive-id}/items/{driveItem-id}/workbook/worksheets/{workbookWorksheet-id}/charts/add", + "method": "post", + "toolName": "create-excel-chart", + "isExcelOp": true, + "scopes": ["Files.ReadWrite"] + }, + { + "pathPattern": "/drives/{drive-id}/items/{driveItem-id}/workbook/worksheets/{workbookWorksheet-id}/range()/format", + "method": "patch", + "toolName": "format-excel-range", + "isExcelOp": true, + "scopes": ["Files.ReadWrite"] + }, + { + "pathPattern": "/drives/{drive-id}/items/{driveItem-id}/workbook/worksheets/{workbookWorksheet-id}/range()/sort", + "method": "patch", + "toolName": "sort-excel-range", + "isExcelOp": true, + "scopes": ["Files.ReadWrite"] + }, + { + "pathPattern": "/drives/{drive-id}/items/{driveItem-id}/workbook/worksheets/{workbookWorksheet-id}/range(address='{address}')", + "method": "get", + "toolName": "get-excel-range", + "isExcelOp": true, + "scopes": ["Files.Read"], + "skipEncoding": ["address"] + }, + { + "pathPattern": "/drives/{drive-id}/items/{driveItem-id}/workbook/worksheets", + "method": "get", + "toolName": "list-excel-worksheets", + "isExcelOp": true, + "scopes": ["Files.Read"] + }, + { + "pathPattern": "/drives/{drive-id}/items/{driveItem-id}/workbook/tables", + "method": "get", + "toolName": "list-excel-tables", + "isExcelOp": true, + "scopes": ["Files.Read"], + "llmTip": "Lists all named tables in a workbook. Each table has id, name, showHeaders, showTotals, columns, and style. Use the table name or id with other table endpoints." + }, + { + "pathPattern": "/drives/{drive-id}/items/{driveItem-id}/workbook/tables/{workbookTable-id}", + "method": "get", + "toolName": "get-excel-table", + "isExcelOp": true, + "scopes": ["Files.Read"], + "llmTip": "Gets a specific table by name or ID. Returns table properties including columns, showHeaders, showTotals, and style." + }, + { + "pathPattern": "/drives/{drive-id}/items/{driveItem-id}/workbook/tables/{workbookTable-id}/rows", + "method": "get", + "toolName": "list-excel-table-rows", + "isExcelOp": true, + "scopes": ["Files.Read"], + "llmTip": "Lists all rows in a table. Each row has index and values (array of cell values). Use $top and $skip for pagination on large tables." + }, + { + "pathPattern": "/drives/{drive-id}/items/{driveItem-id}/workbook/tables/{workbookTable-id}/rows", + "method": "post", + "toolName": "add-excel-table-rows", + "isExcelOp": true, + "scopes": ["Files.ReadWrite"], + "llmTip": "Adds rows to a table. Body: { values: [['col1val', 'col2val', 'col3val'], ['row2col1', 'row2col2', 'row2col3']] }. Each inner array is one row. Values must match the number of columns in the table." + }, + { + "pathPattern": "/me/onenote/notebooks", + "method": "get", + "toolName": "list-onenote-notebooks", + "scopes": ["Notes.Read"] + }, + { + "pathPattern": "/me/onenote/notebooks", + "method": "post", + "toolName": "create-onenote-notebook", + "scopes": ["Notes.Create"], + "llmTip": "Creates a new OneNote notebook. Body: { displayName: 'Notebook Name' }. The name must be unique across the user's notebooks." + }, + { + "pathPattern": "/me/onenote/notebooks/{notebook-id}/sections", + "method": "get", + "toolName": "list-onenote-notebook-sections", + "scopes": ["Notes.Read"] + }, + { + "pathPattern": "/me/onenote/notebooks/{notebook-id}/sections", + "method": "post", + "toolName": "create-onenote-section", + "scopes": ["Notes.Create"], + "llmTip": "Creates a new section in a notebook. Body: { displayName: 'Section Name' }." + }, + { + "pathPattern": "/me/onenote/sections", + "method": "get", + "toolName": "list-all-onenote-sections", + "scopes": ["Notes.Read"], + "llmTip": "Lists all sections across all notebooks. Use list-onenote-notebook-sections to list sections within a specific notebook instead." + }, + { + "pathPattern": "/me/onenote/sections/{onenoteSection-id}/pages", + "method": "get", + "toolName": "list-onenote-section-pages", + "scopes": ["Notes.Read"] + }, + { + "pathPattern": "/me/onenote/pages/{onenotePage-id}/content", + "method": "get", + "toolName": "get-onenote-page-content", + "scopes": ["Notes.Read"] + }, + { + "pathPattern": "/me/onenote/pages", + "method": "post", + "toolName": "create-onenote-page", + "scopes": ["Notes.Create"], + "contentType": "text/html", + "llmTip": "Body must be a full HTML document (with ......). Partial HTML or plain text fails silently or creates malformed pages." + }, + { + "pathPattern": "/me/onenote/sections/{onenoteSection-id}/pages", + "method": "post", + "toolName": "create-onenote-section-page", + "scopes": ["Notes.Create"], + "contentType": "text/html", + "llmTip": "Body must be a full HTML document (with ......). Partial HTML fails silently." + }, + { + "pathPattern": "/me/onenote/pages/{onenotePage-id}", + "method": "delete", + "toolName": "delete-onenote-page", + "scopes": ["Notes.ReadWrite"], + "llmTip": "Deletes a OneNote page permanently. This cannot be undone." + }, + { + "pathPattern": "/me/todo/lists", + "method": "get", + "toolName": "list-todo-task-lists", + "scopes": ["Tasks.Read"], + "llmTip": "Lists all To Do task lists. Returns todoTaskList-id needed for all task operations. The default list is typically called 'Tasks'. NOTE: $select is NOT supported by this endpoint — do not pass select parameter, Graph returns 400." + }, + { + "pathPattern": "/me/todo/lists/{todoTaskList-id}/tasks", + "method": "get", + "toolName": "list-todo-tasks", + "scopes": ["Tasks.Read"], + "llmTip": "Lists tasks in a To Do list. Requires todoTaskList-id — use list-todo-task-lists to find it. NOTE: $select is NOT supported — do not pass select, Graph returns 400. Use $filter=status eq 'notStarted' or $filter=status eq 'completed' to filter by status. Use $top to limit results. Status values: 'notStarted', 'inProgress', 'completed', 'waitingOnOthers', 'deferred'." + }, + { + "pathPattern": "/me/todo/lists/{todoTaskList-id}/tasks/{todoTask-id}", + "method": "get", + "toolName": "get-todo-task", + "scopes": ["Tasks.Read"], + "llmTip": "Returns a single To Do task. NOTE: $select is NOT supported — do not pass select parameter, Graph returns RequestBroker--ParseUri (400). Use $expand=linkedResources to include linked email/resource. Returns body content (HTML format), checklist items, and linked resources." + }, + { + "pathPattern": "/me/todo/lists/{todoTaskList-id}/tasks", + "method": "post", + "toolName": "create-todo-task", + "scopes": ["Tasks.ReadWrite"] + }, + { + "pathPattern": "/me/todo/lists/{todoTaskList-id}/tasks/{todoTask-id}", + "method": "patch", + "toolName": "update-todo-task", + "scopes": ["Tasks.ReadWrite"] + }, + { + "pathPattern": "/me/todo/lists/{todoTaskList-id}/tasks/{todoTask-id}", + "method": "delete", + "toolName": "delete-todo-task", + "scopes": ["Tasks.ReadWrite"] + }, + { + "pathPattern": "/me/todo/lists/{todoTaskList-id}/tasks/{todoTask-id}/linkedResources", + "method": "get", + "toolName": "list-todo-linked-resources", + "scopes": ["Tasks.Read"], + "llmTip": "Lists resources linked to a To Do task (emails, URLs, etc.). Each linked resource has displayName, webUrl, applicationName, and externalId." + }, + { + "pathPattern": "/me/todo/lists/{todoTaskList-id}/tasks/{todoTask-id}/linkedResources", + "method": "post", + "toolName": "create-todo-linked-resource", + "scopes": ["Tasks.ReadWrite"], + "llmTip": "Links a resource to a To Do task. Body: { webUrl: 'https://...', applicationName: 'Mail', displayName: 'Related email', externalId: 'optional-id' }. Use to link tasks to emails, files, or web pages for context." + }, + { + "pathPattern": "/me/todo/lists/{todoTaskList-id}/tasks/{todoTask-id}/linkedResources/{linkedResource-id}", + "method": "delete", + "toolName": "delete-todo-linked-resource", + "scopes": ["Tasks.ReadWrite"], + "llmTip": "Removes a linked resource from a To Do task." + }, + { + "pathPattern": "/me/planner/tasks", + "method": "get", + "toolName": "list-planner-tasks", + "scopes": ["Tasks.Read"], + "llmTip": "Priority values: 0=Urgent, 1=Important, 3=Medium, 5=Low, 9=unset." + }, + { + "pathPattern": "/planner/plans/{plannerPlan-id}", + "method": "get", + "toolName": "get-planner-plan", + "scopes": ["Tasks.Read"] + }, + { + "pathPattern": "/planner/plans/{plannerPlan-id}/tasks", + "method": "get", + "toolName": "list-plan-tasks", + "scopes": ["Tasks.Read"], + "llmTip": "Priority values: 0=Urgent, 1=Important, 3=Medium, 5=Low, 9=unset." + }, + { + "pathPattern": "/planner/tasks/{plannerTask-id}", + "method": "get", + "toolName": "get-planner-task", + "scopes": ["Tasks.Read"], + "llmTip": "Response includes @odata.etag — save it, required as If-Match header for update-planner-task. Use includeHeaders=true to capture it." + }, + { + "pathPattern": "/planner/tasks", + "method": "post", + "toolName": "create-planner-task", + "scopes": ["Tasks.ReadWrite"] + }, + { + "pathPattern": "/planner/tasks/{plannerTask-id}", + "method": "patch", + "toolName": "update-planner-task", + "scopes": ["Tasks.ReadWrite"], + "llmTip": "CRITICAL: Requires If-Match header with the task's @odata.etag value, otherwise returns 412 Precondition Failed. Get the ETag from get-planner-task with includeHeaders=true. Priority values: 0=Urgent, 1=Important, 3=Medium, 5=Low, 9=unset." + }, + { + "pathPattern": "/planner/tasks/{plannerTask-id}/details", + "method": "get", + "toolName": "get-planner-task-details", + "scopes": ["Tasks.Read"], + "llmTip": "Response includes @odata.etag — required for update-planner-task-details. Use includeHeaders=true." + }, + { + "pathPattern": "/planner/tasks/{plannerTask-id}/details", + "method": "patch", + "toolName": "update-planner-task-details", + "scopes": ["Tasks.ReadWrite"], + "llmTip": "CRITICAL: Requires If-Match header with ETag from get-planner-task-details (use includeHeaders=true). Checklist items use GUID keys: {\"checklist\": {\"\": {\"title\": \"...\", \"isChecked\": false}}}." + }, + { + "pathPattern": "/me/contacts", + "method": "get", + "toolName": "list-outlook-contacts", + "scopes": ["Contacts.Read"], + "llmTip": "$filter only supports startswith() — contains() and eq on emailAddresses do not work. Use $search as alternative for broader matching." + }, + { + "pathPattern": "/me/contacts/{contact-id}", + "method": "get", + "toolName": "get-outlook-contact", + "scopes": ["Contacts.Read"] + }, + { + "pathPattern": "/me/contacts", + "method": "post", + "toolName": "create-outlook-contact", + "scopes": ["Contacts.ReadWrite"] + }, + { + "pathPattern": "/me/contacts/{contact-id}", + "method": "patch", + "toolName": "update-outlook-contact", + "scopes": ["Contacts.ReadWrite"], + "llmTip": "emailAddresses array is replaced entirely — include all addresses, not just new ones." + }, + { + "pathPattern": "/me/contacts/{contact-id}", + "method": "delete", + "toolName": "delete-outlook-contact", + "scopes": ["Contacts.ReadWrite"] + }, + { + "pathPattern": "/me", + "method": "get", + "toolName": "get-current-user", + "scopes": ["User.Read"] + }, + { + "pathPattern": "/me/mailboxSettings", + "method": "get", + "toolName": "get-mailbox-settings", + "scopes": ["MailboxSettings.Read"], + "llmTip": "Gets the current user's mailbox settings including automaticRepliesSetting (out-of-office status, message, scheduledStartDateTime/EndDateTime, externalAudience), language, timeZone, dateFormat, timeFormat, delegateMeetingMessageDeliveryOptions, and userPurpose." + }, + { + "pathPattern": "/me/mailboxSettings", + "method": "patch", + "toolName": "update-mailbox-settings", + "scopes": ["MailboxSettings.ReadWrite"], + "llmTip": "Updates mailbox settings. Common use: configure Out-of-Office (automatic replies). Body example: { automaticRepliesSetting: { status: 'scheduled', scheduledStartDateTime: { dateTime: '2026-03-28T17:00:00', timeZone: 'Eastern Standard Time' }, scheduledEndDateTime: { dateTime: '2026-04-01T08:00:00', timeZone: 'Eastern Standard Time' }, internalReplyMessage: 'I am OOO.', externalReplyMessage: 'I am out of office.' } }. Status values: disabled, alwaysEnabled, scheduled." + }, + { + "pathPattern": "/me/manager", + "method": "get", + "toolName": "get-my-manager", + "workScopes": ["User.Read.All"], + "llmTip": "Gets the current user's manager. Returns a directoryObject with displayName, mail, jobTitle, id. Use the id to chain further queries (e.g. get their direct reports or presence)." + }, + { + "pathPattern": "/me/directReports", + "method": "get", + "toolName": "list-my-direct-reports", + "workScopes": ["User.Read.All"], + "llmTip": "Lists users who report directly to the current user. Returns directoryObjects with displayName, mail, jobTitle, id. Useful for building org charts or sending team-wide communications." + }, + { + "pathPattern": "/users/{user-id}/manager", + "method": "get", + "toolName": "get-user-manager", + "workScopes": ["User.Read.All"], + "llmTip": "Gets the manager of a specific user by user ID or UPN (email). Returns a directoryObject with displayName, mail, jobTitle." + }, + { + "pathPattern": "/users/{user-id}/directReports", + "method": "get", + "toolName": "list-user-direct-reports", + "workScopes": ["User.Read.All"], + "llmTip": "Lists users who report directly to a specific user. Use with get-user-manager to traverse the org hierarchy." + }, + { + "pathPattern": "/me/photo/$value", + "method": "get", + "toolName": "get-my-profile-photo", + "scopes": ["User.Read"], + "returnDownloadUrl": true, + "llmTip": "Returns the current user's profile photo as binary image data. The photo is typically in JPEG format." + }, + { + "pathPattern": "/users/{user-id}/photo/$value", + "method": "get", + "toolName": "get-user-profile-photo", + "workScopes": ["User.Read.All"], + "returnDownloadUrl": true, + "llmTip": "Returns a specific user's profile photo as binary image data. Use the user ID or UPN (email)." + }, + { + "pathPattern": "/me/people", + "method": "get", + "toolName": "list-relevant-people", + "workScopes": ["People.Read"], + "llmTip": "Lists people most relevant to the current user, ordered by relevance. Based on communication patterns, collaboration, and business relationships. Each person has displayName, emailAddresses, jobTitle, department, officeLocation. Use $search to find specific people by name. Use $top to limit results." + }, + { + "pathPattern": "/me/memberOf", + "method": "get", + "toolName": "list-my-memberships", + "workScopes": ["Directory.Read.All"], + "llmTip": "Lists all groups, directory roles, and administrative units the current user is a member of. Returns directoryObjects — use $filter=isof('microsoft.graph.group') to filter to groups only. Each group has displayName, mail, groupTypes, membershipRule." + }, + { + "pathPattern": "/groups", + "method": "get", + "toolName": "list-groups", + "workScopes": ["Group.Read.All"], + "llmTip": "Lists organization groups (Microsoft 365 groups, security groups, distribution lists). Use $filter=groupTypes/any(g:g eq 'Unified') for M365 groups only. Use $filter=mailEnabled eq true and securityEnabled eq false for distribution lists. Use $search=\"displayName:keyword\" to search by name (requires ConsistencyLevel: eventual header). Use $select to limit fields." + }, + { + "pathPattern": "/groups/{group-id}", + "method": "get", + "toolName": "get-group", + "workScopes": ["Group.Read.All"], + "llmTip": "Gets a specific group's details: displayName, description, mail, visibility, groupTypes, membershipRule, createdDateTime. Use $select to limit returned properties." + }, + { + "pathPattern": "/groups/{group-id}/members", + "method": "get", + "toolName": "list-group-members", + "workScopes": ["GroupMember.Read.All"], + "llmTip": "Lists members of a group. Returns directoryObjects with displayName, mail, jobTitle, userPrincipalName. Use $select to limit fields. Use $top and pagination for large groups." + }, + { + "pathPattern": "/groups/{group-id}/owners", + "method": "get", + "toolName": "list-group-owners", + "workScopes": ["GroupMember.Read.All"], + "llmTip": "Lists owners of a group. Owners can manage group settings and membership. Returns directoryObjects with displayName, mail, userPrincipalName." + }, + { + "pathPattern": "/me/chats", + "method": "get", + "toolName": "list-chats", + "workScopes": ["Chat.Read"] + }, + { + "pathPattern": "/chats/{chat-id}", + "method": "get", + "toolName": "get-chat", + "workScopes": ["Chat.Read"] + }, + { + "pathPattern": "/chats/{chat-id}/members", + "method": "get", + "toolName": "list-chat-members", + "workScopes": ["ChatMember.Read"], + "llmTip": "Lists members of a chat. Each member has displayName, email, roles (owner/guest), and visibleHistoryStartDateTime. For meeting chats, use the chatInfo.threadId from get-online-meeting as the chat-id to see who participated in the meeting chat." + }, + { + "pathPattern": "/chats/{chat-id}/messages", + "method": "get", + "toolName": "list-chat-messages", + "workScopes": ["ChatMessage.Read"] + }, + { + "pathPattern": "/chats/{chat-id}/messages/{chatMessage-id}", + "method": "get", + "toolName": "get-chat-message", + "workScopes": ["ChatMessage.Read"] + }, + { + "pathPattern": "/chats/{chat-id}/messages/{chatMessage-id}/hostedContents", + "method": "get", + "toolName": "list-chat-message-hosted-contents", + "workScopes": ["ChatMessage.Read"], + "llmTip": "Lists hosted-content references (inline images, code snippets) attached to a Teams chat message. Returns an array of { id, contentType }. Use get-chat-message-hosted-content with the id to download the bytes. Hosted content IDs can also be parsed from the URL in the message body between /hostedContents/ and /$value." + }, + { + "pathPattern": "/chats/{chat-id}/messages/{chatMessage-id}/hostedContents/{chatMessageHostedContent-id}/$value", + "method": "get", + "toolName": "get-chat-message-hosted-content", + "workScopes": ["ChatMessage.Read"], + "returnDownloadUrl": true, + "llmTip": "Returns raw bytes of a hosted content item (typically image/png or image/jpeg) attached to a Teams 1:1 or group chat message. Use list-chat-message-hosted-contents to discover IDs, or extract the ID from the URL in the message body." + }, + { + "pathPattern": "/chats/{chat-id}/messages", + "method": "post", + "toolName": "send-chat-message", + "workScopes": ["ChatMessage.Send"], + "llmTip": "Use contentType 'html' in the body — plain text contentType gets mangled by Graph API." + }, + { + "pathPattern": "/me/joinedTeams", + "method": "get", + "toolName": "list-joined-teams", + "workScopes": ["Team.ReadBasic.All"] + }, + { + "pathPattern": "/teams/{team-id}", + "method": "get", + "toolName": "get-team", + "workScopes": ["Team.ReadBasic.All"] + }, + { + "pathPattern": "/teams/{team-id}/channels", + "method": "get", + "toolName": "list-team-channels", + "workScopes": ["Channel.ReadBasic.All"] + }, + { + "pathPattern": "/teams/{team-id}/channels/{channel-id}", + "method": "get", + "toolName": "get-team-channel", + "workScopes": ["Channel.ReadBasic.All"] + }, + { + "pathPattern": "/teams/{team-id}/channels", + "method": "post", + "toolName": "create-team-channel", + "workScopes": ["Channel.Create"] + }, + { + "pathPattern": "/teams/{team-id}/channels/{channel-id}", + "method": "patch", + "toolName": "update-team-channel", + "workScopes": ["ChannelSettings.ReadWrite.All"] + }, + { + "pathPattern": "/teams/{team-id}/channels/{channel-id}", + "method": "delete", + "toolName": "delete-team-channel", + "workScopes": ["Channel.Delete.All"] + }, + { + "pathPattern": "/teams/{team-id}/channels/{channel-id}/messages", + "method": "get", + "toolName": "list-channel-messages", + "workScopes": ["ChannelMessage.Read.All"] + }, + { + "pathPattern": "/teams/{team-id}/channels/{channel-id}/messages/{chatMessage-id}", + "method": "get", + "toolName": "get-channel-message", + "workScopes": ["ChannelMessage.Read.All"] + }, + { + "pathPattern": "/teams/{team-id}/channels/{channel-id}/messages/{chatMessage-id}/hostedContents", + "method": "get", + "toolName": "list-channel-message-hosted-contents", + "workScopes": ["ChannelMessage.Read.All"], + "llmTip": "Lists hosted-content references (inline images, code snippets) attached to a Teams channel message. Returns an array of { id, contentType }. Use get-channel-message-hosted-content with the id to download bytes." + }, + { + "pathPattern": "/teams/{team-id}/channels/{channel-id}/messages/{chatMessage-id}/hostedContents/{chatMessageHostedContent-id}/$value", + "method": "get", + "toolName": "get-channel-message-hosted-content", + "workScopes": ["ChannelMessage.Read.All"], + "returnDownloadUrl": true, + "llmTip": "Returns raw bytes of a hosted content item attached to a Teams channel message. Use list-channel-message-hosted-contents to discover IDs." + }, + { + "pathPattern": "/teams/{team-id}/channels/{channel-id}/messages", + "method": "post", + "toolName": "send-channel-message", + "workScopes": ["ChannelMessage.Send"], + "llmTip": "Use contentType 'html' in the body — plain text contentType gets mangled by Graph API." + }, + { + "pathPattern": "/teams/{team-id}/channels/{channel-id}/messages/{chatMessage-id}/replies", + "method": "post", + "toolName": "reply-to-channel-message", + "workScopes": ["ChannelMessage.Send"], + "llmTip": "Use contentType 'html' in the body — plain text contentType gets mangled by Graph API." + }, + { + "pathPattern": "/teams/{team-id}/channels/{channel-id}/messages/{chatMessage-id}/replies", + "method": "get", + "toolName": "list-channel-message-replies", + "workScopes": ["ChannelMessage.Read.All"] + }, + { + "pathPattern": "/teams/{team-id}/members", + "method": "post", + "toolName": "add-team-member", + "workScopes": ["TeamMember.ReadWrite.All"] + }, + { + "pathPattern": "/teams/{team-id}/members/{conversationMember-id}", + "method": "delete", + "toolName": "remove-team-member", + "workScopes": ["TeamMember.ReadWrite.All"] + }, + { + "pathPattern": "/teams/{team-id}/channels/{channel-id}/tabs", + "method": "get", + "toolName": "list-channel-tabs", + "workScopes": ["TeamsTab.Read.All"] + }, + { + "pathPattern": "/teams/{team-id}/channels/{channel-id}/messages/{chatMessage-id}/setReaction", + "method": "post", + "toolName": "set-channel-message-reaction", + "workScopes": ["ChannelMessage.Send"] + }, + { + "pathPattern": "/teams/{team-id}/channels/{channel-id}/messages/{chatMessage-id}/unsetReaction", + "method": "post", + "toolName": "unset-channel-message-reaction", + "workScopes": ["ChannelMessage.Send"] + }, + { + "pathPattern": "/teams/{team-id}/members", + "method": "get", + "toolName": "list-team-members", + "workScopes": ["TeamMember.Read.All"] + }, + { + "pathPattern": "/teams/{team-id}/channels/{channel-id}/filesFolder", + "method": "get", + "toolName": "get-channel-files-folder", + "workScopes": ["ChannelSettings.Read.All"], + "llmTip": "Gets the SharePoint driveItem (folder) that contains the files for a Teams channel. Returns id, name, webUrl, and parentReference with driveId. Use the driveId and id with OneDrive/SharePoint endpoints (list-folder-files) to browse and download channel files." + }, + { + "pathPattern": "/chats/{chat-id}/messages/{chatMessage-id}/replies", + "method": "get", + "toolName": "list-chat-message-replies", + "workScopes": ["ChatMessage.Read"] + }, + { + "pathPattern": "/chats/{chat-id}/messages/{chatMessage-id}/replies", + "method": "post", + "toolName": "reply-to-chat-message", + "workScopes": ["ChatMessage.Send"], + "llmTip": "Use contentType 'html' in the body — plain text contentType gets mangled by Graph API." + }, + { + "pathPattern": "/chats/{chat-id}/messages/{chatMessage-id}/setReaction", + "method": "post", + "toolName": "set-chat-message-reaction", + "workScopes": ["ChatMessage.Send"] + }, + { + "pathPattern": "/chats/{chat-id}/messages/{chatMessage-id}/unsetReaction", + "method": "post", + "toolName": "unset-chat-message-reaction", + "workScopes": ["ChatMessage.Send"] + }, + { + "pathPattern": "/chats/{chat-id}/pinnedMessages", + "method": "get", + "toolName": "list-pinned-chat-messages", + "workScopes": ["Chat.Read"] + }, + { + "pathPattern": "/chats/{chat-id}/pinnedMessages", + "method": "post", + "toolName": "pin-chat-message", + "workScopes": ["ChatMessage.Send"] + }, + { + "pathPattern": "/chats/{chat-id}/pinnedMessages/{pinnedChatMessageInfo-id}", + "method": "delete", + "toolName": "unpin-chat-message", + "workScopes": ["Chat.ReadWrite"] + }, + { + "pathPattern": "/sites", + "method": "get", + "toolName": "search-sharepoint-sites", + "workScopes": ["Sites.Read.All"] + }, + { + "pathPattern": "/sites/{site-id}", + "method": "get", + "toolName": "get-sharepoint-site", + "workScopes": ["Sites.Read.All"] + }, + { + "pathPattern": "/sites/{site-id}/drives", + "method": "get", + "toolName": "list-sharepoint-site-drives", + "workScopes": ["Sites.Read.All"] + }, + { + "pathPattern": "/sites/{site-id}/drives/{drive-id}", + "method": "get", + "toolName": "get-sharepoint-site-drive-by-id", + "workScopes": ["Sites.Read.All"] + }, + { + "pathPattern": "/sites/{site-id}/items", + "method": "get", + "toolName": "list-sharepoint-site-items", + "workScopes": ["Sites.Read.All"] + }, + { + "pathPattern": "/sites/{site-id}/items/{baseItem-id}", + "method": "get", + "toolName": "get-sharepoint-site-item", + "workScopes": ["Sites.Read.All"] + }, + { + "pathPattern": "/sites/{site-id}/lists", + "method": "get", + "toolName": "list-sharepoint-site-lists", + "workScopes": ["Sites.Read.All"] + }, + { + "pathPattern": "/sites/{site-id}/lists/{list-id}", + "method": "get", + "toolName": "get-sharepoint-site-list", + "workScopes": ["Sites.Read.All"] + }, + { + "pathPattern": "/sites/{site-id}/lists/{list-id}/items", + "method": "get", + "toolName": "list-sharepoint-site-list-items", + "workScopes": ["Sites.Read.All"], + "llmTip": "Add $expand=fields to include actual column values. Without it, only metadata is returned." + }, + { + "pathPattern": "/sites/{site-id}/lists/{list-id}/items/{listItem-id}", + "method": "get", + "toolName": "get-sharepoint-site-list-item", + "workScopes": ["Sites.Read.All"], + "llmTip": "Add $expand=fields to include actual column values. Without it, only metadata is returned." + }, + { + "pathPattern": "/sites/{site-id}/lists/{list-id}/items", + "method": "post", + "toolName": "create-sharepoint-list-item", + "workScopes": ["Sites.ReadWrite.All"], + "llmTip": "Creates a new item in a SharePoint list. Body: { fields: { Title: 'Item name', ColumnName: 'value', ... } }. Use list-sharepoint-site-lists to find the list ID and get-sharepoint-site-list to discover available columns." + }, + { + "pathPattern": "/sites/{site-id}/lists/{list-id}/items/{listItem-id}", + "method": "patch", + "toolName": "update-sharepoint-list-item", + "workScopes": ["Sites.ReadWrite.All"], + "llmTip": "Updates fields on an existing list item. Body: { fields: { ColumnName: 'new value' } }. Send only the fields you want to change. Use $expand=fields on get-sharepoint-site-list-item to see current values first." + }, + { + "pathPattern": "/sites/{site-id}/lists/{list-id}/items/{listItem-id}", + "method": "delete", + "toolName": "delete-sharepoint-list-item", + "workScopes": ["Sites.ReadWrite.All"], + "llmTip": "Deletes a list item permanently. This cannot be undone — the item is moved to the site recycle bin." + }, + { + "pathPattern": "/sites/{site-id}/getByPath(path='{path}')", + "method": "get", + "toolName": "get-sharepoint-site-by-path", + "workScopes": ["Sites.Read.All"] + }, + { + "pathPattern": "/sites/delta()", + "method": "get", + "toolName": "get-sharepoint-sites-delta", + "workScopes": ["Sites.Read.All"] + }, + { + "pathPattern": "/search/query", + "method": "post", + "toolName": "search-query", + "workScopes": [ + "Mail.Read", + "Calendars.Read", + "Files.Read.All", + "People.Read", + "Sites.Read.All", + "Chat.Read", + "ChannelMessage.Read.All" + ] + }, + { + "pathPattern": "/me/onlineMeetings", + "method": "get", + "toolName": "list-online-meetings", + "workScopes": ["OnlineMeetings.Read"], + "llmTip": "List online meetings. Use $filter=joinWebUrl eq '{url}' to find a specific meeting by its Teams join link. Returns meeting IDs needed for transcript access." + }, + { + "pathPattern": "/me/onlineMeetings/{onlineMeeting-id}", + "method": "get", + "toolName": "get-online-meeting", + "workScopes": ["OnlineMeetings.Read"], + "llmTip": "Gets a specific online meeting by ID. Returns full details including subject, startDateTime, endDateTime, joinWebUrl, chatInfo (threadId for meeting chat), participants (organizer, attendees), lobbyBypassSettings, and videoTeleconferenceId. Use list-online-meetings first to find the meeting ID." + }, + { + "pathPattern": "/me/onlineMeetings", + "method": "post", + "toolName": "create-online-meeting", + "workScopes": ["OnlineMeetings.ReadWrite"], + "llmTip": "Creates a new online meeting. Required body: { subject, startDateTime, endDateTime }. Optional: participants (with organizer and attendees), lobbyBypassSettings, isEntryExitAnnounced, allowedPresenters (everyone/organization/roleIsPresenter/organizer). Returns the created meeting with joinWebUrl and meeting ID." + }, + { + "pathPattern": "/me/onlineMeetings/{onlineMeeting-id}", + "method": "patch", + "toolName": "update-online-meeting", + "workScopes": ["OnlineMeetings.ReadWrite"], + "llmTip": "Updates an existing online meeting. Updatable properties: subject, startDateTime, endDateTime, participants, lobbyBypassSettings, isEntryExitAnnounced, allowedPresenters. Send only the properties you want to change." + }, + { + "pathPattern": "/me/onlineMeetings/{onlineMeeting-id}", + "method": "delete", + "toolName": "delete-online-meeting", + "workScopes": ["OnlineMeetings.ReadWrite"], + "llmTip": "Deletes an online meeting. This cannot be undone. The meeting join link will no longer work after deletion." + }, + { + "pathPattern": "/me/onlineMeetings/{onlineMeeting-id}/transcripts", + "method": "get", + "toolName": "list-meeting-transcripts", + "workScopes": ["OnlineMeetingTranscript.Read.All"], + "llmTip": "Lists available transcripts for a meeting. Get the meeting ID first via list-online-meetings." + }, + { + "pathPattern": "/me/onlineMeetings/{onlineMeeting-id}/transcripts/{callTranscript-id}", + "method": "get", + "toolName": "get-meeting-transcript", + "workScopes": ["OnlineMeetingTranscript.Read.All"], + "llmTip": "Gets metadata for a specific transcript: createdDateTime, contentCorrelationId (links transcript to its recording), meetingId, meetingOrganizer. Use contentCorrelationId to match a transcript with its recording. For the actual transcript text, use get-meeting-transcript-content instead." + }, + { + "pathPattern": "/me/onlineMeetings/{onlineMeeting-id}/transcripts/{callTranscript-id}/content", + "method": "get", + "toolName": "get-meeting-transcript-content", + "workScopes": ["OnlineMeetingTranscript.Read.All"], + "acceptType": "text/vtt", + "llmTip": "Returns the transcript content in WebVTT format with speaker identification and timestamps." + }, + { + "pathPattern": "/me/onlineMeetings/{onlineMeeting-id}/recordings", + "method": "get", + "toolName": "list-meeting-recordings", + "workScopes": ["OnlineMeetingRecording.Read.All"], + "llmTip": "Lists recordings for a meeting. Each recording has createdDateTime, endDateTime, meetingOrganizer, contentCorrelationId (links to corresponding transcript). For recurring meetings, there is one recording per occurrence." + }, + { + "pathPattern": "/me/onlineMeetings/{onlineMeeting-id}/recordings/{callRecording-id}", + "method": "get", + "toolName": "get-meeting-recording", + "workScopes": ["OnlineMeetingRecording.Read.All"], + "llmTip": "Gets metadata for a specific recording: createdDateTime, endDateTime, contentCorrelationId (links recording to its transcript), meetingOrganizer, callId. Use contentCorrelationId to match a recording with its transcript. For the actual video file, use get-meeting-recording-content instead." + }, + { + "pathPattern": "/me/onlineMeetings/{onlineMeeting-id}/recordings/{callRecording-id}/content", + "method": "get", + "toolName": "get-meeting-recording-content", + "workScopes": ["OnlineMeetingRecording.Read.All"], + "returnDownloadUrl": true, + "llmTip": "Returns a temporary download URL for the meeting recording in MP4 format. Use the download URL to access the video file. The recording may be large — do not attempt to stream it inline." + }, + { + "pathPattern": "/me/onlineMeetings/{onlineMeeting-id}/attendanceReports", + "method": "get", + "toolName": "list-meeting-attendance-reports", + "workScopes": ["OnlineMeetingArtifact.Read.All"], + "llmTip": "Lists attendance reports for a meeting. Each report has meetingStartDateTime, meetingEndDateTime, totalParticipantCount. For recurring meetings, there is one report per occurrence. Get the meeting ID first via list-online-meetings." + }, + { + "pathPattern": "/me/onlineMeetings/{onlineMeeting-id}/attendanceReports/{meetingAttendanceReport-id}", + "method": "get", + "toolName": "get-meeting-attendance-report", + "workScopes": ["OnlineMeetingArtifact.Read.All"], + "llmTip": "Gets a specific attendance report with totalParticipantCount, meetingStartDateTime, meetingEndDateTime." + }, + { + "pathPattern": "/me/onlineMeetings/{onlineMeeting-id}/attendanceReports/{meetingAttendanceReport-id}/attendanceRecords", + "method": "get", + "toolName": "list-meeting-attendance-records", + "workScopes": ["OnlineMeetingArtifact.Read.All"], + "llmTip": "Lists individual attendance records for a meeting report. Each record has: identity (displayName), emailAddress, role (Organizer/Presenter/Attendee), totalAttendanceInSeconds, and attendanceIntervals with joinDateTime/leaveDateTime. Use to determine who attended, how long, and when they joined/left." + }, + { + "pathPattern": "/groups/{group-id}/conversations", + "method": "get", + "toolName": "list-group-conversations", + "workScopes": ["Group.Read.All"], + "llmTip": "Legacy — Microsoft recommends Teams channels instead of group conversations." + }, + { + "pathPattern": "/groups/{group-id}/threads", + "method": "get", + "toolName": "list-group-threads", + "workScopes": ["Group.Read.All"], + "llmTip": "Legacy — Microsoft recommends Teams channels instead of group threads." + }, + { + "pathPattern": "/groups/{group-id}/threads/{conversationThread-id}/reply", + "method": "post", + "toolName": "reply-to-group-thread", + "workScopes": ["Group.ReadWrite.All"], + "llmTip": "Legacy — Microsoft recommends Teams channels instead of group threads." + }, + { + "pathPattern": "/me/presence", + "method": "get", + "toolName": "get-my-presence", + "workScopes": ["Presence.Read"], + "llmTip": "Gets the current user's presence status. Returns availability (Available, Busy, DoNotDisturb, BeRightBack, Away, Offline) and activity (InACall, InAMeeting, Presenting, OutOfOffice, etc.). Useful to check your own status before scheduling." + }, + { + "pathPattern": "/users/{user-id}/presence", + "method": "get", + "toolName": "get-user-presence", + "workScopes": ["Presence.Read.All"], + "llmTip": "Gets presence status for a specific user by their user ID or UPN (email). Returns availability and activity. Use list-users to find the user ID first." + }, + { + "pathPattern": "/communications/presences", + "method": "post", + "toolName": "get-presences-by-user-id", + "workScopes": ["Presence.Read.All"], + "llmTip": "Gets presence for multiple users in a single call. Body: { ids: ['user-id-1', 'user-id-2', ...] }. Returns array of presence objects. More efficient than calling get-user-presence for each user. Maximum 650 user IDs per request." + }, + { + "pathPattern": "/solutions/virtualEvents/webinars/{virtualEventWebinar-id}", + "method": "get", + "toolName": "get-virtual-event-webinar", + "workScopes": ["VirtualEvent.Read"], + "llmTip": "Gets a specific webinar with full details: displayName, description, startDateTime, endDateTime, audience, coOrganizers, presenters, registrationConfiguration, and status." + }, + { + "pathPattern": "/solutions/virtualEvents/webinars/{virtualEventWebinar-id}/sessions", + "method": "get", + "toolName": "list-webinar-sessions", + "workScopes": ["VirtualEvent.Read"], + "llmTip": "Lists sessions for a webinar. Each session has startDateTime, endDateTime, joinWebUrl, subject, and is essentially an online meeting associated with the webinar." + }, + { + "pathPattern": "/places/{place-id}/graph.room", + "method": "get", + "toolName": "get-room", + "workScopes": ["Place.Read.All"], + "llmTip": "Gets a place cast as a room, returning room-specific properties: displayName, emailAddress (for booking), capacity, building, floorNumber, floorLabel, isWheelChairAccessible, audioDeviceName, videoDeviceName, displayDeviceName. The place-id can be the room's ID or email address." + }, + { + "pathPattern": "/places/{place-id}/graph.roomList", + "method": "get", + "toolName": "get-room-list", + "workScopes": ["Place.Read.All"], + "llmTip": "Gets a place cast as a room list, returning room list properties: displayName, emailAddress, address. Use the place-id (ID or email address) of the room list. Then use list-room-list-rooms to get the rooms within this list." + }, + { + "pathPattern": "/places/{place-id}/graph.roomList/rooms", + "method": "get", + "toolName": "list-room-list-rooms", + "workScopes": ["Place.Read.All"], + "llmTip": "Lists rooms belonging to a specific room list. The place-id is the ID or email address of the room list (from get-room-list). Returns rooms with displayName, emailAddress, capacity, building, floorNumber, floorLabel, and AV equipment details. Combine with find-meeting-times to find available rooms for booking." + }, + { + "pathPattern": "/places/{place-id}/graph.roomList/rooms/{room-id}", + "method": "get", + "toolName": "get-room-list-room", + "workScopes": ["Place.Read.All"], + "llmTip": "Gets a specific room within a room list. The place-id is the room list ID or email, and room-id is the specific room ID. Returns full room details including capacity, building, floor, and AV equipment." + }, + { + "pathPattern": "/places/{place-id}", + "method": "patch", + "toolName": "update-place", + "workScopes": ["Place.ReadWrite.All"], + "llmTip": "Updates properties of a place (room, room list, building, floor, section, desk, workspace). Body can include: displayName, phone, capacity, building, floorNumber, floorLabel, tags, audioDeviceName, videoDeviceName, displayDeviceName, isWheelChairAccessible. Use get-room or get-room-list to verify current values before updating." + }, + { + "pathPattern": "/me/insights/trending", + "method": "get", + "toolName": "list-trending-insights", + "workScopes": ["Sites.Read.All"], + "llmTip": "Lists documents trending around the current user. Each item has resourceVisualization (title, type, previewImageUrl, containerDisplayName), resourceReference (webUrl, id, type), and weight (relevance score). Use $filter=resourceVisualization/type eq 'PowerPoint' to filter by file type. Use $orderby=weight/value desc to sort by relevance." + }, + { + "pathPattern": "/me/events/{event-id}/cancel", + "method": "post", + "toolName": "cancel-calendar-event", + "scopes": ["Calendars.ReadWrite"], + "llmTip": "Cancels a meeting (organizer only) and sends a cancellation message to all attendees. Body: { Comment (optional string, custom message) }. Use this instead of delete-calendar-event when you want attendees to see 'Canceled' in their calendar. Attendees calling this get HTTP 400 — they should use decline-calendar-event instead." + }, + { + "pathPattern": "/me/events/{event-id}/forward", + "method": "post", + "toolName": "forward-calendar-event", + "scopes": ["Calendars.ReadWrite"], + "llmTip": "Forwards a meeting invitation to additional recipients. Body: { ToRecipients: [{ emailAddress: { address, name } }], Comment (optional) }. If the forwarder is an attendee (not organizer), the organizer is also notified and the new recipient is added to the organizer's attendee list." + }, + { + "pathPattern": "/me/events/{event-id}/snoozeReminder", + "method": "post", + "toolName": "snooze-calendar-event-reminder", + "scopes": ["Calendars.ReadWrite"], + "llmTip": "Postpones a triggered event reminder. Body: { NewReminderTime: { dateTime (ISO 8601), timeZone (IANA or Windows, e.g. 'Pacific Standard Time') } }. The reminder will re-fire at the new time." + }, + { + "pathPattern": "/me/events/{event-id}/dismissReminder", + "method": "post", + "toolName": "dismiss-calendar-event-reminder", + "scopes": ["Calendars.ReadWrite"], + "llmTip": "Dismisses a triggered event reminder so it won't re-fire. No request body required. Pair with list-calendar-events or get-schedule to find active reminders." + }, + { + "pathPattern": "/me/events/delta()", + "method": "get", + "toolName": "list-calendar-events-delta", + "scopes": ["Calendars.Read"], + "llmTip": "Incremental sync of events across the default calendar. First call returns all events plus @odata.deltaLink. Subsequent calls with that link return only additions/updates/removals. Use $select to limit fields. Deltas expire after ~30 days — start over if the server returns 410 Gone. For a time-bounded view with delta semantics, use list-calendar-view-delta instead." + }, + { + "pathPattern": "/me/calendarView/delta()", + "method": "get", + "toolName": "list-calendar-view-delta", + "scopes": ["Calendars.Read"], + "llmTip": "Incremental sync of events within a time window. Required query params on first call: startDateTime, endDateTime (ISO 8601). Returns events in the window plus @odata.deltaLink; subsequent calls with that link return only changes. Expands recurring events to individual occurrences (unlike list-calendar-events-delta which returns the series master). Use this for calendar UIs showing a week/month view." + }, + { + "pathPattern": "/groups", + "method": "post", + "toolName": "create-group", + "workScopes": ["Group.ReadWrite.All"], + "llmTip": "Creates a new group. Required body: { displayName, mailEnabled (bool), mailNickname (no spaces), securityEnabled (bool) }. For Microsoft 365 group: mailEnabled=true, securityEnabled=false, groupTypes=['Unified']. For security group: mailEnabled=false, securityEnabled=true, groupTypes=[]. Optional: description, visibility ('Public' or 'Private'), owners@odata.bind and members@odata.bind arrays with user directoryObject URLs." + }, + { + "pathPattern": "/groups/{group-id}", + "method": "patch", + "toolName": "update-group", + "workScopes": ["Group.ReadWrite.All"], + "llmTip": "Updates group properties. Body can include: displayName, description, visibility ('Public' or 'Private'), mailNickname. Use get-group to verify current values before updating." + }, + { + "pathPattern": "/groups/{group-id}", + "method": "delete", + "toolName": "delete-group", + "workScopes": ["Group.ReadWrite.All"], + "llmTip": "Permanently deletes a group and all its associated resources (conversations, files, calendar, planner). This action is irreversible. Use get-group to verify the group before deleting." + }, + { + "pathPattern": "/groups/{group-id}/members/$ref", + "method": "post", + "toolName": "add-group-member", + "workScopes": ["GroupMember.ReadWrite.All"], + "llmTip": "Adds a member to a group. Body: { '@odata.id': 'https://graph.microsoft.com/v1.0/directoryObjects/{user-id}' }. Use list-users to find the user ID first. The user must not already be a member." + }, + { + "pathPattern": "/groups/{group-id}/members/{directoryObject-id}/$ref", + "method": "delete", + "toolName": "remove-group-member", + "workScopes": ["GroupMember.ReadWrite.All"], + "llmTip": "Removes a member from a group. Use list-group-members to find the member's directory object ID first. Cannot remove the last owner of a group." + }, + { + "pathPattern": "/groups/{group-id}/owners/$ref", + "method": "post", + "toolName": "add-group-owner", + "workScopes": ["Group.ReadWrite.All"], + "llmTip": "Adds an owner to a group. Body: { '@odata.id': 'https://graph.microsoft.com/v1.0/users/{user-id}' }. Use list-users to find the user ID. A group can have a maximum of 100 owners." + }, + { + "pathPattern": "/groups/{group-id}/owners/{directoryObject-id}/$ref", + "method": "delete", + "toolName": "remove-group-owner", + "workScopes": ["Group.ReadWrite.All"], + "llmTip": "Removes an owner from a group. A group must have at least one owner — this call fails if you try to remove the last owner. Use list-group-owners to find the owner's ID." + }, + { + "pathPattern": "/chats", + "method": "post", + "toolName": "create-chat", + "workScopes": ["Chat.Create", "Chat.ReadWrite"], + "llmTip": "Creates a new 1:1 or group Teams chat. Body: { chatType ('oneOnOne' or 'group'), topic (optional, group only), members: [{ '@odata.type': '#microsoft.graph.aadUserConversationMember', roles: ['owner' | 'guest'], 'user@odata.bind': 'https://graph.microsoft.com/v1.0/users({id})' }] }. A oneOnOne chat requires exactly 2 members (self + other), both with role 'owner'. For group chats, include all participants. The signed-in user must be one of the members. Returns the created chat with its id — use that id with send-chat-message, list-chat-members, etc." + } +] diff --git a/backend/mcp-bundles/softeria-ms-365-mcp-server/dist/index.js b/backend/mcp-bundles/softeria-ms-365-mcp-server/dist/index.js new file mode 100755 index 00000000..d7cda6cd --- /dev/null +++ b/backend/mcp-bundles/softeria-ms-365-mcp-server/dist/index.js @@ -0,0 +1,116746 @@ +#!/usr/bin/env node +const __OPENSWARM_IMPORT_META_URL__ = require("url").pathToFileURL(__filename).href; +var __create = Object.create; +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __getProtoOf = Object.getPrototypeOf; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __esm = (fn, res) => function __init() { + return fn && (res = (0, fn[__getOwnPropNames(fn)[0]])(fn = 0)), res; +}; +var __commonJS = (cb, mod) => function __require() { + return mod || (0, cb[__getOwnPropNames(cb)[0]])((mod = { exports: {} }).exports, mod), mod.exports; +}; +var __export = (target, all) => { + for (var name5 in all) + __defProp(target, name5, { get: all[name5], enumerable: true }); +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps( + // If the importer is in node compatibility mode or this is not an ESM + // file that has been converted to a CommonJS file using a Babel- + // compatible transform (i.e. "__esModule" has not been set), then set + // "default" to the CommonJS "module.exports" for node compatibility. + isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target, + mod +)); + +// node_modules/dotenv/lib/main.js +var require_main = __commonJS({ + "node_modules/dotenv/lib/main.js"(exports2, module2) { + var fs10 = require("fs"); + var path9 = require("path"); + var os5 = require("os"); + var crypto11 = require("crypto"); + var TIPS = [ + "\u25C8 encrypted .env [www.dotenvx.com]", + "\u25C8 secrets for agents [www.dotenvx.com]", + "\u2301 auth for agents [www.vestauth.com]", + "\u2318 custom filepath { path: '/custom/path/.env' }", + "\u2318 enable debugging { debug: true }", + "\u2318 override existing { override: true }", + "\u2318 suppress logs { quiet: true }", + "\u2318 multiple files { path: ['.env.local', '.env'] }" + ]; + function _getRandomTip() { + return TIPS[Math.floor(Math.random() * TIPS.length)]; + } + function parseBoolean(value) { + if (typeof value === "string") { + return !["false", "0", "no", "off", ""].includes(value.toLowerCase()); + } + return Boolean(value); + } + function supportsAnsi() { + return process.stdout.isTTY; + } + function dim(text) { + return supportsAnsi() ? `\x1B[2m${text}\x1B[0m` : text; + } + var LINE = /(?:^|^)\s*(?:export\s+)?([\w.-]+)(?:\s*=\s*?|:\s+?)(\s*'(?:\\'|[^'])*'|\s*"(?:\\"|[^"])*"|\s*`(?:\\`|[^`])*`|[^#\r\n]+)?\s*(?:#.*)?(?:$|$)/mg; + function parse4(src) { + const obj = {}; + let lines = src.toString(); + lines = lines.replace(/\r\n?/mg, "\n"); + let match; + while ((match = LINE.exec(lines)) != null) { + const key = match[1]; + let value = match[2] || ""; + value = value.trim(); + const maybeQuote = value[0]; + value = value.replace(/^(['"`])([\s\S]*)\1$/mg, "$2"); + if (maybeQuote === '"') { + value = value.replace(/\\n/g, "\n"); + value = value.replace(/\\r/g, "\r"); + } + obj[key] = value; + } + return obj; + } + function _parseVault(options) { + options = options || {}; + const vaultPath = _vaultPath(options); + options.path = vaultPath; + const result = DotenvModule.configDotenv(options); + if (!result.parsed) { + const err = new Error(`MISSING_DATA: Cannot parse ${vaultPath} for an unknown reason`); + err.code = "MISSING_DATA"; + throw err; + } + const keys = _dotenvKey(options).split(","); + const length = keys.length; + let decrypted; + for (let i = 0; i < length; i++) { + try { + const key = keys[i].trim(); + const attrs = _instructions(result, key); + decrypted = DotenvModule.decrypt(attrs.ciphertext, attrs.key); + break; + } catch (error2) { + if (i + 1 >= length) { + throw error2; + } + } + } + return DotenvModule.parse(decrypted); + } + function _warn(message) { + console.error(`\u26A0 ${message}`); + } + function _debug(message) { + console.log(`\u2506 ${message}`); + } + function _log(message) { + console.log(`\u25C7 ${message}`); + } + function _dotenvKey(options) { + if (options && options.DOTENV_KEY && options.DOTENV_KEY.length > 0) { + return options.DOTENV_KEY; + } + if (process.env.DOTENV_KEY && process.env.DOTENV_KEY.length > 0) { + return process.env.DOTENV_KEY; + } + return ""; + } + function _instructions(result, dotenvKey) { + let uri; + try { + uri = new URL(dotenvKey); + } catch (error2) { + if (error2.code === "ERR_INVALID_URL") { + const err = new Error("INVALID_DOTENV_KEY: Wrong format. Must be in valid uri format like dotenv://:key_1234@dotenvx.com/vault/.env.vault?environment=development"); + err.code = "INVALID_DOTENV_KEY"; + throw err; + } + throw error2; + } + const key = uri.password; + if (!key) { + const err = new Error("INVALID_DOTENV_KEY: Missing key part"); + err.code = "INVALID_DOTENV_KEY"; + throw err; + } + const environment = uri.searchParams.get("environment"); + if (!environment) { + const err = new Error("INVALID_DOTENV_KEY: Missing environment part"); + err.code = "INVALID_DOTENV_KEY"; + throw err; + } + const environmentKey = `DOTENV_VAULT_${environment.toUpperCase()}`; + const ciphertext = result.parsed[environmentKey]; + if (!ciphertext) { + const err = new Error(`NOT_FOUND_DOTENV_ENVIRONMENT: Cannot locate environment ${environmentKey} in your .env.vault file.`); + err.code = "NOT_FOUND_DOTENV_ENVIRONMENT"; + throw err; + } + return { ciphertext, key }; + } + function _vaultPath(options) { + let possibleVaultPath = null; + if (options && options.path && options.path.length > 0) { + if (Array.isArray(options.path)) { + for (const filepath of options.path) { + if (fs10.existsSync(filepath)) { + possibleVaultPath = filepath.endsWith(".vault") ? filepath : `${filepath}.vault`; + } + } + } else { + possibleVaultPath = options.path.endsWith(".vault") ? options.path : `${options.path}.vault`; + } + } else { + possibleVaultPath = path9.resolve(process.cwd(), ".env.vault"); + } + if (fs10.existsSync(possibleVaultPath)) { + return possibleVaultPath; + } + return null; + } + function _resolveHome(envPath) { + return envPath[0] === "~" ? path9.join(os5.homedir(), envPath.slice(1)) : envPath; + } + function _configVault(options) { + const debug = parseBoolean(process.env.DOTENV_CONFIG_DEBUG || options && options.debug); + const quiet = parseBoolean(process.env.DOTENV_CONFIG_QUIET || options && options.quiet); + if (debug || !quiet) { + _log("loading env from encrypted .env.vault"); + } + const parsed = DotenvModule._parseVault(options); + let processEnv = process.env; + if (options && options.processEnv != null) { + processEnv = options.processEnv; + } + DotenvModule.populate(processEnv, parsed, options); + return { parsed }; + } + function configDotenv(options) { + const dotenvPath = path9.resolve(process.cwd(), ".env"); + let encoding = "utf8"; + let processEnv = process.env; + if (options && options.processEnv != null) { + processEnv = options.processEnv; + } + let debug = parseBoolean(processEnv.DOTENV_CONFIG_DEBUG || options && options.debug); + let quiet = parseBoolean(processEnv.DOTENV_CONFIG_QUIET || options && options.quiet); + if (options && options.encoding) { + encoding = options.encoding; + } else { + if (debug) { + _debug("no encoding is specified (UTF-8 is used by default)"); + } + } + let optionPaths = [dotenvPath]; + if (options && options.path) { + if (!Array.isArray(options.path)) { + optionPaths = [_resolveHome(options.path)]; + } else { + optionPaths = []; + for (const filepath of options.path) { + optionPaths.push(_resolveHome(filepath)); + } + } + } + let lastError; + const parsedAll = {}; + for (const path10 of optionPaths) { + try { + const parsed = DotenvModule.parse(fs10.readFileSync(path10, { encoding })); + DotenvModule.populate(parsedAll, parsed, options); + } catch (e) { + if (debug) { + _debug(`failed to load ${path10} ${e.message}`); + } + lastError = e; + } + } + const populated = DotenvModule.populate(processEnv, parsedAll, options); + debug = parseBoolean(processEnv.DOTENV_CONFIG_DEBUG || debug); + quiet = parseBoolean(processEnv.DOTENV_CONFIG_QUIET || quiet); + if (debug || !quiet) { + const keysCount = Object.keys(populated).length; + const shortPaths = []; + for (const filePath of optionPaths) { + try { + const relative = path9.relative(process.cwd(), filePath); + shortPaths.push(relative); + } catch (e) { + if (debug) { + _debug(`failed to load ${filePath} ${e.message}`); + } + lastError = e; + } + } + _log(`injected env (${keysCount}) from ${shortPaths.join(",")} ${dim(`// tip: ${_getRandomTip()}`)}`); + } + if (lastError) { + return { parsed: parsedAll, error: lastError }; + } else { + return { parsed: parsedAll }; + } + } + function config2(options) { + if (_dotenvKey(options).length === 0) { + return DotenvModule.configDotenv(options); + } + const vaultPath = _vaultPath(options); + if (!vaultPath) { + _warn(`you set DOTENV_KEY but you are missing a .env.vault file at ${vaultPath}`); + return DotenvModule.configDotenv(options); + } + return DotenvModule._configVault(options); + } + function decrypt(encrypted, keyStr) { + const key = Buffer.from(keyStr.slice(-64), "hex"); + let ciphertext = Buffer.from(encrypted, "base64"); + const nonce = ciphertext.subarray(0, 12); + const authTag = ciphertext.subarray(-16); + ciphertext = ciphertext.subarray(12, -16); + try { + const aesgcm = crypto11.createDecipheriv("aes-256-gcm", key, nonce); + aesgcm.setAuthTag(authTag); + return `${aesgcm.update(ciphertext)}${aesgcm.final()}`; + } catch (error2) { + const isRange = error2 instanceof RangeError; + const invalidKeyLength = error2.message === "Invalid key length"; + const decryptionFailed = error2.message === "Unsupported state or unable to authenticate data"; + if (isRange || invalidKeyLength) { + const err = new Error("INVALID_DOTENV_KEY: It must be 64 characters long (or more)"); + err.code = "INVALID_DOTENV_KEY"; + throw err; + } else if (decryptionFailed) { + const err = new Error("DECRYPTION_FAILED: Please check your DOTENV_KEY"); + err.code = "DECRYPTION_FAILED"; + throw err; + } else { + throw error2; + } + } + } + function populate(processEnv, parsed, options = {}) { + const debug = Boolean(options && options.debug); + const override = Boolean(options && options.override); + const populated = {}; + if (typeof parsed !== "object") { + const err = new Error("OBJECT_REQUIRED: Please check the processEnv argument being passed to populate"); + err.code = "OBJECT_REQUIRED"; + throw err; + } + for (const key of Object.keys(parsed)) { + if (Object.prototype.hasOwnProperty.call(processEnv, key)) { + if (override === true) { + processEnv[key] = parsed[key]; + populated[key] = parsed[key]; + } + if (debug) { + if (override === true) { + _debug(`"${key}" is already defined and WAS overwritten`); + } else { + _debug(`"${key}" is already defined and was NOT overwritten`); + } + } + } else { + processEnv[key] = parsed[key]; + populated[key] = parsed[key]; + } + } + return populated; + } + var DotenvModule = { + configDotenv, + _configVault, + _parseVault, + config: config2, + decrypt, + parse: parse4, + populate + }; + module2.exports.configDotenv = DotenvModule.configDotenv; + module2.exports._configVault = DotenvModule._configVault; + module2.exports._parseVault = DotenvModule._parseVault; + module2.exports.config = DotenvModule.config; + module2.exports.decrypt = DotenvModule.decrypt; + module2.exports.parse = DotenvModule.parse; + module2.exports.populate = DotenvModule.populate; + module2.exports = DotenvModule; + } +}); + +// node_modules/dotenv/lib/env-options.js +var require_env_options = __commonJS({ + "node_modules/dotenv/lib/env-options.js"(exports2, module2) { + var options = {}; + if (process.env.DOTENV_CONFIG_ENCODING != null) { + options.encoding = process.env.DOTENV_CONFIG_ENCODING; + } + if (process.env.DOTENV_CONFIG_PATH != null) { + options.path = process.env.DOTENV_CONFIG_PATH; + } + if (process.env.DOTENV_CONFIG_QUIET != null) { + options.quiet = process.env.DOTENV_CONFIG_QUIET; + } + if (process.env.DOTENV_CONFIG_DEBUG != null) { + options.debug = process.env.DOTENV_CONFIG_DEBUG; + } + if (process.env.DOTENV_CONFIG_OVERRIDE != null) { + options.override = process.env.DOTENV_CONFIG_OVERRIDE; + } + if (process.env.DOTENV_CONFIG_DOTENV_KEY != null) { + options.DOTENV_KEY = process.env.DOTENV_CONFIG_DOTENV_KEY; + } + module2.exports = options; + } +}); + +// node_modules/dotenv/lib/cli-options.js +var require_cli_options = __commonJS({ + "node_modules/dotenv/lib/cli-options.js"(exports2, module2) { + var re = /^dotenv_config_(encoding|path|quiet|debug|override|DOTENV_KEY)=(.+)$/; + module2.exports = function optionMatcher(args) { + const options = args.reduce(function(acc, cur) { + const matches = cur.match(re); + if (matches) { + acc[matches[1]] = matches[2]; + } + return acc; + }, {}); + if (!("quiet" in options)) { + options.quiet = "true"; + } + return options; + }; + } +}); + +// node_modules/commander/lib/error.js +var require_error = __commonJS({ + "node_modules/commander/lib/error.js"(exports2) { + var CommanderError2 = class extends Error { + /** + * Constructs the CommanderError class + * @param {number} exitCode suggested exit code which could be used with process.exit + * @param {string} code an id string representing the error + * @param {string} message human-readable description of the error + * @constructor + */ + constructor(exitCode, code, message) { + super(message); + Error.captureStackTrace(this, this.constructor); + this.name = this.constructor.name; + this.code = code; + this.exitCode = exitCode; + this.nestedError = void 0; + } + }; + var InvalidArgumentError2 = class extends CommanderError2 { + /** + * Constructs the InvalidArgumentError class + * @param {string} [message] explanation of why argument is invalid + * @constructor + */ + constructor(message) { + super(1, "commander.invalidArgument", message); + Error.captureStackTrace(this, this.constructor); + this.name = this.constructor.name; + } + }; + exports2.CommanderError = CommanderError2; + exports2.InvalidArgumentError = InvalidArgumentError2; + } +}); + +// node_modules/commander/lib/argument.js +var require_argument = __commonJS({ + "node_modules/commander/lib/argument.js"(exports2) { + var { InvalidArgumentError: InvalidArgumentError2 } = require_error(); + var Argument2 = class { + /** + * Initialize a new command argument with the given name and description. + * The default is that the argument is required, and you can explicitly + * indicate this with <> around the name. Put [] around the name for an optional argument. + * + * @param {string} name + * @param {string} [description] + */ + constructor(name5, description) { + this.description = description || ""; + this.variadic = false; + this.parseArg = void 0; + this.defaultValue = void 0; + this.defaultValueDescription = void 0; + this.argChoices = void 0; + switch (name5[0]) { + case "<": + this.required = true; + this._name = name5.slice(1, -1); + break; + case "[": + this.required = false; + this._name = name5.slice(1, -1); + break; + default: + this.required = true; + this._name = name5; + break; + } + if (this._name.length > 3 && this._name.slice(-3) === "...") { + this.variadic = true; + this._name = this._name.slice(0, -3); + } + } + /** + * Return argument name. + * + * @return {string} + */ + name() { + return this._name; + } + /** + * @api private + */ + _concatValue(value, previous) { + if (previous === this.defaultValue || !Array.isArray(previous)) { + return [value]; + } + return previous.concat(value); + } + /** + * Set the default value, and optionally supply the description to be displayed in the help. + * + * @param {*} value + * @param {string} [description] + * @return {Argument} + */ + default(value, description) { + this.defaultValue = value; + this.defaultValueDescription = description; + return this; + } + /** + * Set the custom handler for processing CLI command arguments into argument values. + * + * @param {Function} [fn] + * @return {Argument} + */ + argParser(fn) { + this.parseArg = fn; + return this; + } + /** + * Only allow argument value to be one of choices. + * + * @param {string[]} values + * @return {Argument} + */ + choices(values) { + this.argChoices = values.slice(); + this.parseArg = (arg, previous) => { + if (!this.argChoices.includes(arg)) { + throw new InvalidArgumentError2(`Allowed choices are ${this.argChoices.join(", ")}.`); + } + if (this.variadic) { + return this._concatValue(arg, previous); + } + return arg; + }; + return this; + } + /** + * Make argument required. + */ + argRequired() { + this.required = true; + return this; + } + /** + * Make argument optional. + */ + argOptional() { + this.required = false; + return this; + } + }; + function humanReadableArgName(arg) { + const nameOutput = arg.name() + (arg.variadic === true ? "..." : ""); + return arg.required ? "<" + nameOutput + ">" : "[" + nameOutput + "]"; + } + exports2.Argument = Argument2; + exports2.humanReadableArgName = humanReadableArgName; + } +}); + +// node_modules/commander/lib/help.js +var require_help = __commonJS({ + "node_modules/commander/lib/help.js"(exports2) { + var { humanReadableArgName } = require_argument(); + var Help2 = class { + constructor() { + this.helpWidth = void 0; + this.sortSubcommands = false; + this.sortOptions = false; + this.showGlobalOptions = false; + } + /** + * Get an array of the visible subcommands. Includes a placeholder for the implicit help command, if there is one. + * + * @param {Command} cmd + * @returns {Command[]} + */ + visibleCommands(cmd) { + const visibleCommands = cmd.commands.filter((cmd2) => !cmd2._hidden); + if (cmd._hasImplicitHelpCommand()) { + const [, helpName, helpArgs] = cmd._helpCommandnameAndArgs.match(/([^ ]+) *(.*)/); + const helpCommand = cmd.createCommand(helpName).helpOption(false); + helpCommand.description(cmd._helpCommandDescription); + if (helpArgs) helpCommand.arguments(helpArgs); + visibleCommands.push(helpCommand); + } + if (this.sortSubcommands) { + visibleCommands.sort((a, b) => { + return a.name().localeCompare(b.name()); + }); + } + return visibleCommands; + } + /** + * Compare options for sort. + * + * @param {Option} a + * @param {Option} b + * @returns number + */ + compareOptions(a, b) { + const getSortKey = (option) => { + return option.short ? option.short.replace(/^-/, "") : option.long.replace(/^--/, ""); + }; + return getSortKey(a).localeCompare(getSortKey(b)); + } + /** + * Get an array of the visible options. Includes a placeholder for the implicit help option, if there is one. + * + * @param {Command} cmd + * @returns {Option[]} + */ + visibleOptions(cmd) { + const visibleOptions = cmd.options.filter((option) => !option.hidden); + const showShortHelpFlag = cmd._hasHelpOption && cmd._helpShortFlag && !cmd._findOption(cmd._helpShortFlag); + const showLongHelpFlag = cmd._hasHelpOption && !cmd._findOption(cmd._helpLongFlag); + if (showShortHelpFlag || showLongHelpFlag) { + let helpOption; + if (!showShortHelpFlag) { + helpOption = cmd.createOption(cmd._helpLongFlag, cmd._helpDescription); + } else if (!showLongHelpFlag) { + helpOption = cmd.createOption(cmd._helpShortFlag, cmd._helpDescription); + } else { + helpOption = cmd.createOption(cmd._helpFlags, cmd._helpDescription); + } + visibleOptions.push(helpOption); + } + if (this.sortOptions) { + visibleOptions.sort(this.compareOptions); + } + return visibleOptions; + } + /** + * Get an array of the visible global options. (Not including help.) + * + * @param {Command} cmd + * @returns {Option[]} + */ + visibleGlobalOptions(cmd) { + if (!this.showGlobalOptions) return []; + const globalOptions = []; + for (let ancestorCmd = cmd.parent; ancestorCmd; ancestorCmd = ancestorCmd.parent) { + const visibleOptions = ancestorCmd.options.filter((option) => !option.hidden); + globalOptions.push(...visibleOptions); + } + if (this.sortOptions) { + globalOptions.sort(this.compareOptions); + } + return globalOptions; + } + /** + * Get an array of the arguments if any have a description. + * + * @param {Command} cmd + * @returns {Argument[]} + */ + visibleArguments(cmd) { + if (cmd._argsDescription) { + cmd.registeredArguments.forEach((argument) => { + argument.description = argument.description || cmd._argsDescription[argument.name()] || ""; + }); + } + if (cmd.registeredArguments.find((argument) => argument.description)) { + return cmd.registeredArguments; + } + return []; + } + /** + * Get the command term to show in the list of subcommands. + * + * @param {Command} cmd + * @returns {string} + */ + subcommandTerm(cmd) { + const args = cmd.registeredArguments.map((arg) => humanReadableArgName(arg)).join(" "); + return cmd._name + (cmd._aliases[0] ? "|" + cmd._aliases[0] : "") + (cmd.options.length ? " [options]" : "") + // simplistic check for non-help option + (args ? " " + args : ""); + } + /** + * Get the option term to show in the list of options. + * + * @param {Option} option + * @returns {string} + */ + optionTerm(option) { + return option.flags; + } + /** + * Get the argument term to show in the list of arguments. + * + * @param {Argument} argument + * @returns {string} + */ + argumentTerm(argument) { + return argument.name(); + } + /** + * Get the longest command term length. + * + * @param {Command} cmd + * @param {Help} helper + * @returns {number} + */ + longestSubcommandTermLength(cmd, helper) { + return helper.visibleCommands(cmd).reduce((max, command) => { + return Math.max(max, helper.subcommandTerm(command).length); + }, 0); + } + /** + * Get the longest option term length. + * + * @param {Command} cmd + * @param {Help} helper + * @returns {number} + */ + longestOptionTermLength(cmd, helper) { + return helper.visibleOptions(cmd).reduce((max, option) => { + return Math.max(max, helper.optionTerm(option).length); + }, 0); + } + /** + * Get the longest global option term length. + * + * @param {Command} cmd + * @param {Help} helper + * @returns {number} + */ + longestGlobalOptionTermLength(cmd, helper) { + return helper.visibleGlobalOptions(cmd).reduce((max, option) => { + return Math.max(max, helper.optionTerm(option).length); + }, 0); + } + /** + * Get the longest argument term length. + * + * @param {Command} cmd + * @param {Help} helper + * @returns {number} + */ + longestArgumentTermLength(cmd, helper) { + return helper.visibleArguments(cmd).reduce((max, argument) => { + return Math.max(max, helper.argumentTerm(argument).length); + }, 0); + } + /** + * Get the command usage to be displayed at the top of the built-in help. + * + * @param {Command} cmd + * @returns {string} + */ + commandUsage(cmd) { + let cmdName = cmd._name; + if (cmd._aliases[0]) { + cmdName = cmdName + "|" + cmd._aliases[0]; + } + let ancestorCmdNames = ""; + for (let ancestorCmd = cmd.parent; ancestorCmd; ancestorCmd = ancestorCmd.parent) { + ancestorCmdNames = ancestorCmd.name() + " " + ancestorCmdNames; + } + return ancestorCmdNames + cmdName + " " + cmd.usage(); + } + /** + * Get the description for the command. + * + * @param {Command} cmd + * @returns {string} + */ + commandDescription(cmd) { + return cmd.description(); + } + /** + * Get the subcommand summary to show in the list of subcommands. + * (Fallback to description for backwards compatibility.) + * + * @param {Command} cmd + * @returns {string} + */ + subcommandDescription(cmd) { + return cmd.summary() || cmd.description(); + } + /** + * Get the option description to show in the list of options. + * + * @param {Option} option + * @return {string} + */ + optionDescription(option) { + const extraInfo = []; + if (option.argChoices) { + extraInfo.push( + // use stringify to match the display of the default value + `choices: ${option.argChoices.map((choice) => JSON.stringify(choice)).join(", ")}` + ); + } + if (option.defaultValue !== void 0) { + const showDefault = option.required || option.optional || option.isBoolean() && typeof option.defaultValue === "boolean"; + if (showDefault) { + extraInfo.push(`default: ${option.defaultValueDescription || JSON.stringify(option.defaultValue)}`); + } + } + if (option.presetArg !== void 0 && option.optional) { + extraInfo.push(`preset: ${JSON.stringify(option.presetArg)}`); + } + if (option.envVar !== void 0) { + extraInfo.push(`env: ${option.envVar}`); + } + if (extraInfo.length > 0) { + return `${option.description} (${extraInfo.join(", ")})`; + } + return option.description; + } + /** + * Get the argument description to show in the list of arguments. + * + * @param {Argument} argument + * @return {string} + */ + argumentDescription(argument) { + const extraInfo = []; + if (argument.argChoices) { + extraInfo.push( + // use stringify to match the display of the default value + `choices: ${argument.argChoices.map((choice) => JSON.stringify(choice)).join(", ")}` + ); + } + if (argument.defaultValue !== void 0) { + extraInfo.push(`default: ${argument.defaultValueDescription || JSON.stringify(argument.defaultValue)}`); + } + if (extraInfo.length > 0) { + const extraDescripton = `(${extraInfo.join(", ")})`; + if (argument.description) { + return `${argument.description} ${extraDescripton}`; + } + return extraDescripton; + } + return argument.description; + } + /** + * Generate the built-in help text. + * + * @param {Command} cmd + * @param {Help} helper + * @returns {string} + */ + formatHelp(cmd, helper) { + const termWidth = helper.padWidth(cmd, helper); + const helpWidth = helper.helpWidth || 80; + const itemIndentWidth = 2; + const itemSeparatorWidth = 2; + function formatItem(term, description) { + if (description) { + const fullText = `${term.padEnd(termWidth + itemSeparatorWidth)}${description}`; + return helper.wrap(fullText, helpWidth - itemIndentWidth, termWidth + itemSeparatorWidth); + } + return term; + } + function formatList(textArray) { + return textArray.join("\n").replace(/^/gm, " ".repeat(itemIndentWidth)); + } + let output = [`Usage: ${helper.commandUsage(cmd)}`, ""]; + const commandDescription = helper.commandDescription(cmd); + if (commandDescription.length > 0) { + output = output.concat([helper.wrap(commandDescription, helpWidth, 0), ""]); + } + const argumentList = helper.visibleArguments(cmd).map((argument) => { + return formatItem(helper.argumentTerm(argument), helper.argumentDescription(argument)); + }); + if (argumentList.length > 0) { + output = output.concat(["Arguments:", formatList(argumentList), ""]); + } + const optionList = helper.visibleOptions(cmd).map((option) => { + return formatItem(helper.optionTerm(option), helper.optionDescription(option)); + }); + if (optionList.length > 0) { + output = output.concat(["Options:", formatList(optionList), ""]); + } + if (this.showGlobalOptions) { + const globalOptionList = helper.visibleGlobalOptions(cmd).map((option) => { + return formatItem(helper.optionTerm(option), helper.optionDescription(option)); + }); + if (globalOptionList.length > 0) { + output = output.concat(["Global Options:", formatList(globalOptionList), ""]); + } + } + const commandList = helper.visibleCommands(cmd).map((cmd2) => { + return formatItem(helper.subcommandTerm(cmd2), helper.subcommandDescription(cmd2)); + }); + if (commandList.length > 0) { + output = output.concat(["Commands:", formatList(commandList), ""]); + } + return output.join("\n"); + } + /** + * Calculate the pad width from the maximum term length. + * + * @param {Command} cmd + * @param {Help} helper + * @returns {number} + */ + padWidth(cmd, helper) { + return Math.max( + helper.longestOptionTermLength(cmd, helper), + helper.longestGlobalOptionTermLength(cmd, helper), + helper.longestSubcommandTermLength(cmd, helper), + helper.longestArgumentTermLength(cmd, helper) + ); + } + /** + * Wrap the given string to width characters per line, with lines after the first indented. + * Do not wrap if insufficient room for wrapping (minColumnWidth), or string is manually formatted. + * + * @param {string} str + * @param {number} width + * @param {number} indent + * @param {number} [minColumnWidth=40] + * @return {string} + * + */ + wrap(str, width, indent, minColumnWidth = 40) { + const indents = " \\f\\t\\v\xA0\u1680\u2000-\u200A\u202F\u205F\u3000\uFEFF"; + const manualIndent = new RegExp(`[\\n][${indents}]+`); + if (str.match(manualIndent)) return str; + const columnWidth = width - indent; + if (columnWidth < minColumnWidth) return str; + const leadingStr = str.slice(0, indent); + const columnText = str.slice(indent).replace("\r\n", "\n"); + const indentString = " ".repeat(indent); + const zeroWidthSpace = "\u200B"; + const breaks = `\\s${zeroWidthSpace}`; + const regex = new RegExp(` +|.{1,${columnWidth - 1}}([${breaks}]|$)|[^${breaks}]+?([${breaks}]|$)`, "g"); + const lines = columnText.match(regex) || []; + return leadingStr + lines.map((line, i) => { + if (line === "\n") return ""; + return (i > 0 ? indentString : "") + line.trimEnd(); + }).join("\n"); + } + }; + exports2.Help = Help2; + } +}); + +// node_modules/commander/lib/option.js +var require_option = __commonJS({ + "node_modules/commander/lib/option.js"(exports2) { + var { InvalidArgumentError: InvalidArgumentError2 } = require_error(); + var Option2 = class { + /** + * Initialize a new `Option` with the given `flags` and `description`. + * + * @param {string} flags + * @param {string} [description] + */ + constructor(flags, description) { + this.flags = flags; + this.description = description || ""; + this.required = flags.includes("<"); + this.optional = flags.includes("["); + this.variadic = /\w\.\.\.[>\]]$/.test(flags); + this.mandatory = false; + const optionFlags = splitOptionFlags(flags); + this.short = optionFlags.shortFlag; + this.long = optionFlags.longFlag; + this.negate = false; + if (this.long) { + this.negate = this.long.startsWith("--no-"); + } + this.defaultValue = void 0; + this.defaultValueDescription = void 0; + this.presetArg = void 0; + this.envVar = void 0; + this.parseArg = void 0; + this.hidden = false; + this.argChoices = void 0; + this.conflictsWith = []; + this.implied = void 0; + } + /** + * Set the default value, and optionally supply the description to be displayed in the help. + * + * @param {*} value + * @param {string} [description] + * @return {Option} + */ + default(value, description) { + this.defaultValue = value; + this.defaultValueDescription = description; + return this; + } + /** + * Preset to use when option used without option-argument, especially optional but also boolean and negated. + * The custom processing (parseArg) is called. + * + * @example + * new Option('--color').default('GREYSCALE').preset('RGB'); + * new Option('--donate [amount]').preset('20').argParser(parseFloat); + * + * @param {*} arg + * @return {Option} + */ + preset(arg) { + this.presetArg = arg; + return this; + } + /** + * Add option name(s) that conflict with this option. + * An error will be displayed if conflicting options are found during parsing. + * + * @example + * new Option('--rgb').conflicts('cmyk'); + * new Option('--js').conflicts(['ts', 'jsx']); + * + * @param {string | string[]} names + * @return {Option} + */ + conflicts(names) { + this.conflictsWith = this.conflictsWith.concat(names); + return this; + } + /** + * Specify implied option values for when this option is set and the implied options are not. + * + * The custom processing (parseArg) is not called on the implied values. + * + * @example + * program + * .addOption(new Option('--log', 'write logging information to file')) + * .addOption(new Option('--trace', 'log extra details').implies({ log: 'trace.txt' })); + * + * @param {Object} impliedOptionValues + * @return {Option} + */ + implies(impliedOptionValues) { + let newImplied = impliedOptionValues; + if (typeof impliedOptionValues === "string") { + newImplied = { [impliedOptionValues]: true }; + } + this.implied = Object.assign(this.implied || {}, newImplied); + return this; + } + /** + * Set environment variable to check for option value. + * + * An environment variable is only used if when processed the current option value is + * undefined, or the source of the current value is 'default' or 'config' or 'env'. + * + * @param {string} name + * @return {Option} + */ + env(name5) { + this.envVar = name5; + return this; + } + /** + * Set the custom handler for processing CLI option arguments into option values. + * + * @param {Function} [fn] + * @return {Option} + */ + argParser(fn) { + this.parseArg = fn; + return this; + } + /** + * Whether the option is mandatory and must have a value after parsing. + * + * @param {boolean} [mandatory=true] + * @return {Option} + */ + makeOptionMandatory(mandatory = true) { + this.mandatory = !!mandatory; + return this; + } + /** + * Hide option in help. + * + * @param {boolean} [hide=true] + * @return {Option} + */ + hideHelp(hide = true) { + this.hidden = !!hide; + return this; + } + /** + * @api private + */ + _concatValue(value, previous) { + if (previous === this.defaultValue || !Array.isArray(previous)) { + return [value]; + } + return previous.concat(value); + } + /** + * Only allow option value to be one of choices. + * + * @param {string[]} values + * @return {Option} + */ + choices(values) { + this.argChoices = values.slice(); + this.parseArg = (arg, previous) => { + if (!this.argChoices.includes(arg)) { + throw new InvalidArgumentError2(`Allowed choices are ${this.argChoices.join(", ")}.`); + } + if (this.variadic) { + return this._concatValue(arg, previous); + } + return arg; + }; + return this; + } + /** + * Return option name. + * + * @return {string} + */ + name() { + if (this.long) { + return this.long.replace(/^--/, ""); + } + return this.short.replace(/^-/, ""); + } + /** + * Return option name, in a camelcase format that can be used + * as a object attribute key. + * + * @return {string} + * @api private + */ + attributeName() { + return camelcase(this.name().replace(/^no-/, "")); + } + /** + * Check if `arg` matches the short or long flag. + * + * @param {string} arg + * @return {boolean} + * @api private + */ + is(arg) { + return this.short === arg || this.long === arg; + } + /** + * Return whether a boolean option. + * + * Options are one of boolean, negated, required argument, or optional argument. + * + * @return {boolean} + * @api private + */ + isBoolean() { + return !this.required && !this.optional && !this.negate; + } + }; + var DualOptions = class { + /** + * @param {Option[]} options + */ + constructor(options) { + this.positiveOptions = /* @__PURE__ */ new Map(); + this.negativeOptions = /* @__PURE__ */ new Map(); + this.dualOptions = /* @__PURE__ */ new Set(); + options.forEach((option) => { + if (option.negate) { + this.negativeOptions.set(option.attributeName(), option); + } else { + this.positiveOptions.set(option.attributeName(), option); + } + }); + this.negativeOptions.forEach((value, key) => { + if (this.positiveOptions.has(key)) { + this.dualOptions.add(key); + } + }); + } + /** + * Did the value come from the option, and not from possible matching dual option? + * + * @param {*} value + * @param {Option} option + * @returns {boolean} + */ + valueFromOption(value, option) { + const optionKey = option.attributeName(); + if (!this.dualOptions.has(optionKey)) return true; + const preset = this.negativeOptions.get(optionKey).presetArg; + const negativeValue = preset !== void 0 ? preset : false; + return option.negate === (negativeValue === value); + } + }; + function camelcase(str) { + return str.split("-").reduce((str2, word) => { + return str2 + word[0].toUpperCase() + word.slice(1); + }); + } + function splitOptionFlags(flags) { + let shortFlag; + let longFlag; + const flagParts = flags.split(/[ |,]+/); + if (flagParts.length > 1 && !/^[[<]/.test(flagParts[1])) shortFlag = flagParts.shift(); + longFlag = flagParts.shift(); + if (!shortFlag && /^-[^-]$/.test(longFlag)) { + shortFlag = longFlag; + longFlag = void 0; + } + return { shortFlag, longFlag }; + } + exports2.Option = Option2; + exports2.splitOptionFlags = splitOptionFlags; + exports2.DualOptions = DualOptions; + } +}); + +// node_modules/commander/lib/suggestSimilar.js +var require_suggestSimilar = __commonJS({ + "node_modules/commander/lib/suggestSimilar.js"(exports2) { + var maxDistance = 3; + function editDistance(a, b) { + if (Math.abs(a.length - b.length) > maxDistance) return Math.max(a.length, b.length); + const d = []; + for (let i = 0; i <= a.length; i++) { + d[i] = [i]; + } + for (let j = 0; j <= b.length; j++) { + d[0][j] = j; + } + for (let j = 1; j <= b.length; j++) { + for (let i = 1; i <= a.length; i++) { + let cost = 1; + if (a[i - 1] === b[j - 1]) { + cost = 0; + } else { + cost = 1; + } + d[i][j] = Math.min( + d[i - 1][j] + 1, + // deletion + d[i][j - 1] + 1, + // insertion + d[i - 1][j - 1] + cost + // substitution + ); + if (i > 1 && j > 1 && a[i - 1] === b[j - 2] && a[i - 2] === b[j - 1]) { + d[i][j] = Math.min(d[i][j], d[i - 2][j - 2] + 1); + } + } + } + return d[a.length][b.length]; + } + function suggestSimilar(word, candidates) { + if (!candidates || candidates.length === 0) return ""; + candidates = Array.from(new Set(candidates)); + const searchingOptions = word.startsWith("--"); + if (searchingOptions) { + word = word.slice(2); + candidates = candidates.map((candidate) => candidate.slice(2)); + } + let similar = []; + let bestDistance = maxDistance; + const minSimilarity = 0.4; + candidates.forEach((candidate) => { + if (candidate.length <= 1) return; + const distance = editDistance(word, candidate); + const length = Math.max(word.length, candidate.length); + const similarity = (length - distance) / length; + if (similarity > minSimilarity) { + if (distance < bestDistance) { + bestDistance = distance; + similar = [candidate]; + } else if (distance === bestDistance) { + similar.push(candidate); + } + } + }); + similar.sort((a, b) => a.localeCompare(b)); + if (searchingOptions) { + similar = similar.map((candidate) => `--${candidate}`); + } + if (similar.length > 1) { + return ` +(Did you mean one of ${similar.join(", ")}?)`; + } + if (similar.length === 1) { + return ` +(Did you mean ${similar[0]}?)`; + } + return ""; + } + exports2.suggestSimilar = suggestSimilar; + } +}); + +// node_modules/commander/lib/command.js +var require_command = __commonJS({ + "node_modules/commander/lib/command.js"(exports2) { + var EventEmitter = require("events").EventEmitter; + var childProcess6 = require("child_process"); + var path9 = require("path"); + var fs10 = require("fs"); + var process15 = require("process"); + var { Argument: Argument2, humanReadableArgName } = require_argument(); + var { CommanderError: CommanderError2 } = require_error(); + var { Help: Help2 } = require_help(); + var { Option: Option2, splitOptionFlags, DualOptions } = require_option(); + var { suggestSimilar } = require_suggestSimilar(); + var Command2 = class _Command extends EventEmitter { + /** + * Initialize a new `Command`. + * + * @param {string} [name] + */ + constructor(name5) { + super(); + this.commands = []; + this.options = []; + this.parent = null; + this._allowUnknownOption = false; + this._allowExcessArguments = true; + this.registeredArguments = []; + this._args = this.registeredArguments; + this.args = []; + this.rawArgs = []; + this.processedArgs = []; + this._scriptPath = null; + this._name = name5 || ""; + this._optionValues = {}; + this._optionValueSources = {}; + this._storeOptionsAsProperties = false; + this._actionHandler = null; + this._executableHandler = false; + this._executableFile = null; + this._executableDir = null; + this._defaultCommandName = null; + this._exitCallback = null; + this._aliases = []; + this._combineFlagAndOptionalValue = true; + this._description = ""; + this._summary = ""; + this._argsDescription = void 0; + this._enablePositionalOptions = false; + this._passThroughOptions = false; + this._lifeCycleHooks = {}; + this._showHelpAfterError = false; + this._showSuggestionAfterError = true; + this._outputConfiguration = { + writeOut: (str) => process15.stdout.write(str), + writeErr: (str) => process15.stderr.write(str), + getOutHelpWidth: () => process15.stdout.isTTY ? process15.stdout.columns : void 0, + getErrHelpWidth: () => process15.stderr.isTTY ? process15.stderr.columns : void 0, + outputError: (str, write) => write(str) + }; + this._hidden = false; + this._hasHelpOption = true; + this._helpFlags = "-h, --help"; + this._helpDescription = "display help for command"; + this._helpShortFlag = "-h"; + this._helpLongFlag = "--help"; + this._addImplicitHelpCommand = void 0; + this._helpCommandName = "help"; + this._helpCommandnameAndArgs = "help [command]"; + this._helpCommandDescription = "display help for command"; + this._helpConfiguration = {}; + } + /** + * Copy settings that are useful to have in common across root command and subcommands. + * + * (Used internally when adding a command using `.command()` so subcommands inherit parent settings.) + * + * @param {Command} sourceCommand + * @return {Command} `this` command for chaining + */ + copyInheritedSettings(sourceCommand) { + this._outputConfiguration = sourceCommand._outputConfiguration; + this._hasHelpOption = sourceCommand._hasHelpOption; + this._helpFlags = sourceCommand._helpFlags; + this._helpDescription = sourceCommand._helpDescription; + this._helpShortFlag = sourceCommand._helpShortFlag; + this._helpLongFlag = sourceCommand._helpLongFlag; + this._helpCommandName = sourceCommand._helpCommandName; + this._helpCommandnameAndArgs = sourceCommand._helpCommandnameAndArgs; + this._helpCommandDescription = sourceCommand._helpCommandDescription; + this._helpConfiguration = sourceCommand._helpConfiguration; + this._exitCallback = sourceCommand._exitCallback; + this._storeOptionsAsProperties = sourceCommand._storeOptionsAsProperties; + this._combineFlagAndOptionalValue = sourceCommand._combineFlagAndOptionalValue; + this._allowExcessArguments = sourceCommand._allowExcessArguments; + this._enablePositionalOptions = sourceCommand._enablePositionalOptions; + this._showHelpAfterError = sourceCommand._showHelpAfterError; + this._showSuggestionAfterError = sourceCommand._showSuggestionAfterError; + return this; + } + /** + * @returns {Command[]} + * @api private + */ + _getCommandAndAncestors() { + const result = []; + for (let command = this; command; command = command.parent) { + result.push(command); + } + return result; + } + /** + * Define a command. + * + * There are two styles of command: pay attention to where to put the description. + * + * @example + * // Command implemented using action handler (description is supplied separately to `.command`) + * program + * .command('clone [destination]') + * .description('clone a repository into a newly created directory') + * .action((source, destination) => { + * console.log('clone command called'); + * }); + * + * // Command implemented using separate executable file (description is second parameter to `.command`) + * program + * .command('start ', 'start named service') + * .command('stop [service]', 'stop named service, or all if no name supplied'); + * + * @param {string} nameAndArgs - command name and arguments, args are `` or `[optional]` and last may also be `variadic...` + * @param {Object|string} [actionOptsOrExecDesc] - configuration options (for action), or description (for executable) + * @param {Object} [execOpts] - configuration options (for executable) + * @return {Command} returns new command for action handler, or `this` for executable command + */ + command(nameAndArgs, actionOptsOrExecDesc, execOpts) { + let desc = actionOptsOrExecDesc; + let opts = execOpts; + if (typeof desc === "object" && desc !== null) { + opts = desc; + desc = null; + } + opts = opts || {}; + const [, name5, args] = nameAndArgs.match(/([^ ]+) *(.*)/); + const cmd = this.createCommand(name5); + if (desc) { + cmd.description(desc); + cmd._executableHandler = true; + } + if (opts.isDefault) this._defaultCommandName = cmd._name; + cmd._hidden = !!(opts.noHelp || opts.hidden); + cmd._executableFile = opts.executableFile || null; + if (args) cmd.arguments(args); + this.commands.push(cmd); + cmd.parent = this; + cmd.copyInheritedSettings(this); + if (desc) return this; + return cmd; + } + /** + * Factory routine to create a new unattached command. + * + * See .command() for creating an attached subcommand, which uses this routine to + * create the command. You can override createCommand to customise subcommands. + * + * @param {string} [name] + * @return {Command} new command + */ + createCommand(name5) { + return new _Command(name5); + } + /** + * You can customise the help with a subclass of Help by overriding createHelp, + * or by overriding Help properties using configureHelp(). + * + * @return {Help} + */ + createHelp() { + return Object.assign(new Help2(), this.configureHelp()); + } + /** + * You can customise the help by overriding Help properties using configureHelp(), + * or with a subclass of Help by overriding createHelp(). + * + * @param {Object} [configuration] - configuration options + * @return {Command|Object} `this` command for chaining, or stored configuration + */ + configureHelp(configuration) { + if (configuration === void 0) return this._helpConfiguration; + this._helpConfiguration = configuration; + return this; + } + /** + * The default output goes to stdout and stderr. You can customise this for special + * applications. You can also customise the display of errors by overriding outputError. + * + * The configuration properties are all functions: + * + * // functions to change where being written, stdout and stderr + * writeOut(str) + * writeErr(str) + * // matching functions to specify width for wrapping help + * getOutHelpWidth() + * getErrHelpWidth() + * // functions based on what is being written out + * outputError(str, write) // used for displaying errors, and not used for displaying help + * + * @param {Object} [configuration] - configuration options + * @return {Command|Object} `this` command for chaining, or stored configuration + */ + configureOutput(configuration) { + if (configuration === void 0) return this._outputConfiguration; + Object.assign(this._outputConfiguration, configuration); + return this; + } + /** + * Display the help or a custom message after an error occurs. + * + * @param {boolean|string} [displayHelp] + * @return {Command} `this` command for chaining + */ + showHelpAfterError(displayHelp = true) { + if (typeof displayHelp !== "string") displayHelp = !!displayHelp; + this._showHelpAfterError = displayHelp; + return this; + } + /** + * Display suggestion of similar commands for unknown commands, or options for unknown options. + * + * @param {boolean} [displaySuggestion] + * @return {Command} `this` command for chaining + */ + showSuggestionAfterError(displaySuggestion = true) { + this._showSuggestionAfterError = !!displaySuggestion; + return this; + } + /** + * Add a prepared subcommand. + * + * See .command() for creating an attached subcommand which inherits settings from its parent. + * + * @param {Command} cmd - new subcommand + * @param {Object} [opts] - configuration options + * @return {Command} `this` command for chaining + */ + addCommand(cmd, opts) { + if (!cmd._name) { + throw new Error(`Command passed to .addCommand() must have a name +- specify the name in Command constructor or using .name()`); + } + opts = opts || {}; + if (opts.isDefault) this._defaultCommandName = cmd._name; + if (opts.noHelp || opts.hidden) cmd._hidden = true; + this.commands.push(cmd); + cmd.parent = this; + return this; + } + /** + * Factory routine to create a new unattached argument. + * + * See .argument() for creating an attached argument, which uses this routine to + * create the argument. You can override createArgument to return a custom argument. + * + * @param {string} name + * @param {string} [description] + * @return {Argument} new argument + */ + createArgument(name5, description) { + return new Argument2(name5, description); + } + /** + * Define argument syntax for command. + * + * The default is that the argument is required, and you can explicitly + * indicate this with <> around the name. Put [] around the name for an optional argument. + * + * @example + * program.argument(''); + * program.argument('[output-file]'); + * + * @param {string} name + * @param {string} [description] + * @param {Function|*} [fn] - custom argument processing function + * @param {*} [defaultValue] + * @return {Command} `this` command for chaining + */ + argument(name5, description, fn, defaultValue) { + const argument = this.createArgument(name5, description); + if (typeof fn === "function") { + argument.default(defaultValue).argParser(fn); + } else { + argument.default(fn); + } + this.addArgument(argument); + return this; + } + /** + * Define argument syntax for command, adding multiple at once (without descriptions). + * + * See also .argument(). + * + * @example + * program.arguments(' [env]'); + * + * @param {string} names + * @return {Command} `this` command for chaining + */ + arguments(names) { + names.trim().split(/ +/).forEach((detail) => { + this.argument(detail); + }); + return this; + } + /** + * Define argument syntax for command, adding a prepared argument. + * + * @param {Argument} argument + * @return {Command} `this` command for chaining + */ + addArgument(argument) { + const previousArgument = this.registeredArguments.slice(-1)[0]; + if (previousArgument && previousArgument.variadic) { + throw new Error(`only the last argument can be variadic '${previousArgument.name()}'`); + } + if (argument.required && argument.defaultValue !== void 0 && argument.parseArg === void 0) { + throw new Error(`a default value for a required argument is never used: '${argument.name()}'`); + } + this.registeredArguments.push(argument); + return this; + } + /** + * Override default decision whether to add implicit help command. + * + * addHelpCommand() // force on + * addHelpCommand(false); // force off + * addHelpCommand('help [cmd]', 'display help for [cmd]'); // force on with custom details + * + * @return {Command} `this` command for chaining + */ + addHelpCommand(enableOrNameAndArgs, description) { + if (enableOrNameAndArgs === false) { + this._addImplicitHelpCommand = false; + } else { + this._addImplicitHelpCommand = true; + if (typeof enableOrNameAndArgs === "string") { + this._helpCommandName = enableOrNameAndArgs.split(" ")[0]; + this._helpCommandnameAndArgs = enableOrNameAndArgs; + } + this._helpCommandDescription = description || this._helpCommandDescription; + } + return this; + } + /** + * @return {boolean} + * @api private + */ + _hasImplicitHelpCommand() { + if (this._addImplicitHelpCommand === void 0) { + return this.commands.length && !this._actionHandler && !this._findCommand("help"); + } + return this._addImplicitHelpCommand; + } + /** + * Add hook for life cycle event. + * + * @param {string} event + * @param {Function} listener + * @return {Command} `this` command for chaining + */ + hook(event, listener) { + const allowedValues = ["preSubcommand", "preAction", "postAction"]; + if (!allowedValues.includes(event)) { + throw new Error(`Unexpected value for event passed to hook : '${event}'. +Expecting one of '${allowedValues.join("', '")}'`); + } + if (this._lifeCycleHooks[event]) { + this._lifeCycleHooks[event].push(listener); + } else { + this._lifeCycleHooks[event] = [listener]; + } + return this; + } + /** + * Register callback to use as replacement for calling process.exit. + * + * @param {Function} [fn] optional callback which will be passed a CommanderError, defaults to throwing + * @return {Command} `this` command for chaining + */ + exitOverride(fn) { + if (fn) { + this._exitCallback = fn; + } else { + this._exitCallback = (err) => { + if (err.code !== "commander.executeSubCommandAsync") { + throw err; + } else { + } + }; + } + return this; + } + /** + * Call process.exit, and _exitCallback if defined. + * + * @param {number} exitCode exit code for using with process.exit + * @param {string} code an id string representing the error + * @param {string} message human-readable description of the error + * @return never + * @api private + */ + _exit(exitCode, code, message) { + if (this._exitCallback) { + this._exitCallback(new CommanderError2(exitCode, code, message)); + } + process15.exit(exitCode); + } + /** + * Register callback `fn` for the command. + * + * @example + * program + * .command('serve') + * .description('start service') + * .action(function() { + * // do work here + * }); + * + * @param {Function} fn + * @return {Command} `this` command for chaining + */ + action(fn) { + const listener = (args) => { + const expectedArgsCount = this.registeredArguments.length; + const actionArgs = args.slice(0, expectedArgsCount); + if (this._storeOptionsAsProperties) { + actionArgs[expectedArgsCount] = this; + } else { + actionArgs[expectedArgsCount] = this.opts(); + } + actionArgs.push(this); + return fn.apply(this, actionArgs); + }; + this._actionHandler = listener; + return this; + } + /** + * Factory routine to create a new unattached option. + * + * See .option() for creating an attached option, which uses this routine to + * create the option. You can override createOption to return a custom option. + * + * @param {string} flags + * @param {string} [description] + * @return {Option} new option + */ + createOption(flags, description) { + return new Option2(flags, description); + } + /** + * Wrap parseArgs to catch 'commander.invalidArgument'. + * + * @param {Option | Argument} target + * @param {string} value + * @param {*} previous + * @param {string} invalidArgumentMessage + * @api private + */ + _callParseArg(target, value, previous, invalidArgumentMessage) { + try { + return target.parseArg(value, previous); + } catch (err) { + if (err.code === "commander.invalidArgument") { + const message = `${invalidArgumentMessage} ${err.message}`; + this.error(message, { exitCode: err.exitCode, code: err.code }); + } + throw err; + } + } + /** + * Add an option. + * + * @param {Option} option + * @return {Command} `this` command for chaining + */ + addOption(option) { + const oname = option.name(); + const name5 = option.attributeName(); + if (option.negate) { + const positiveLongFlag = option.long.replace(/^--no-/, "--"); + if (!this._findOption(positiveLongFlag)) { + this.setOptionValueWithSource(name5, option.defaultValue === void 0 ? true : option.defaultValue, "default"); + } + } else if (option.defaultValue !== void 0) { + this.setOptionValueWithSource(name5, option.defaultValue, "default"); + } + this.options.push(option); + const handleOptionValue = (val, invalidValueMessage, valueSource) => { + if (val == null && option.presetArg !== void 0) { + val = option.presetArg; + } + const oldValue = this.getOptionValue(name5); + if (val !== null && option.parseArg) { + val = this._callParseArg(option, val, oldValue, invalidValueMessage); + } else if (val !== null && option.variadic) { + val = option._concatValue(val, oldValue); + } + if (val == null) { + if (option.negate) { + val = false; + } else if (option.isBoolean() || option.optional) { + val = true; + } else { + val = ""; + } + } + this.setOptionValueWithSource(name5, val, valueSource); + }; + this.on("option:" + oname, (val) => { + const invalidValueMessage = `error: option '${option.flags}' argument '${val}' is invalid.`; + handleOptionValue(val, invalidValueMessage, "cli"); + }); + if (option.envVar) { + this.on("optionEnv:" + oname, (val) => { + const invalidValueMessage = `error: option '${option.flags}' value '${val}' from env '${option.envVar}' is invalid.`; + handleOptionValue(val, invalidValueMessage, "env"); + }); + } + return this; + } + /** + * Internal implementation shared by .option() and .requiredOption() + * + * @api private + */ + _optionEx(config2, flags, description, fn, defaultValue) { + if (typeof flags === "object" && flags instanceof Option2) { + throw new Error("To add an Option object use addOption() instead of option() or requiredOption()"); + } + const option = this.createOption(flags, description); + option.makeOptionMandatory(!!config2.mandatory); + if (typeof fn === "function") { + option.default(defaultValue).argParser(fn); + } else if (fn instanceof RegExp) { + const regex = fn; + fn = (val, def) => { + const m = regex.exec(val); + return m ? m[0] : def; + }; + option.default(defaultValue).argParser(fn); + } else { + option.default(fn); + } + return this.addOption(option); + } + /** + * Define option with `flags`, `description`, and optional argument parsing function or `defaultValue` or both. + * + * The `flags` string contains the short and/or long flags, separated by comma, a pipe or space. A required + * option-argument is indicated by `<>` and an optional option-argument by `[]`. + * + * See the README for more details, and see also addOption() and requiredOption(). + * + * @example + * program + * .option('-p, --pepper', 'add pepper') + * .option('-p, --pizza-type ', 'type of pizza') // required option-argument + * .option('-c, --cheese [CHEESE]', 'add extra cheese', 'mozzarella') // optional option-argument with default + * .option('-t, --tip ', 'add tip to purchase cost', parseFloat) // custom parse function + * + * @param {string} flags + * @param {string} [description] + * @param {Function|*} [parseArg] - custom option processing function or default value + * @param {*} [defaultValue] + * @return {Command} `this` command for chaining + */ + option(flags, description, parseArg, defaultValue) { + return this._optionEx({}, flags, description, parseArg, defaultValue); + } + /** + * Add a required option which must have a value after parsing. This usually means + * the option must be specified on the command line. (Otherwise the same as .option().) + * + * The `flags` string contains the short and/or long flags, separated by comma, a pipe or space. + * + * @param {string} flags + * @param {string} [description] + * @param {Function|*} [parseArg] - custom option processing function or default value + * @param {*} [defaultValue] + * @return {Command} `this` command for chaining + */ + requiredOption(flags, description, parseArg, defaultValue) { + return this._optionEx({ mandatory: true }, flags, description, parseArg, defaultValue); + } + /** + * Alter parsing of short flags with optional values. + * + * @example + * // for `.option('-f,--flag [value]'): + * program.combineFlagAndOptionalValue(true); // `-f80` is treated like `--flag=80`, this is the default behaviour + * program.combineFlagAndOptionalValue(false) // `-fb` is treated like `-f -b` + * + * @param {Boolean} [combine=true] - if `true` or omitted, an optional value can be specified directly after the flag. + */ + combineFlagAndOptionalValue(combine = true) { + this._combineFlagAndOptionalValue = !!combine; + return this; + } + /** + * Allow unknown options on the command line. + * + * @param {Boolean} [allowUnknown=true] - if `true` or omitted, no error will be thrown + * for unknown options. + */ + allowUnknownOption(allowUnknown = true) { + this._allowUnknownOption = !!allowUnknown; + return this; + } + /** + * Allow excess command-arguments on the command line. Pass false to make excess arguments an error. + * + * @param {Boolean} [allowExcess=true] - if `true` or omitted, no error will be thrown + * for excess arguments. + */ + allowExcessArguments(allowExcess = true) { + this._allowExcessArguments = !!allowExcess; + return this; + } + /** + * Enable positional options. Positional means global options are specified before subcommands which lets + * subcommands reuse the same option names, and also enables subcommands to turn on passThroughOptions. + * The default behaviour is non-positional and global options may appear anywhere on the command line. + * + * @param {Boolean} [positional=true] + */ + enablePositionalOptions(positional = true) { + this._enablePositionalOptions = !!positional; + return this; + } + /** + * Pass through options that come after command-arguments rather than treat them as command-options, + * so actual command-options come before command-arguments. Turning this on for a subcommand requires + * positional options to have been enabled on the program (parent commands). + * The default behaviour is non-positional and options may appear before or after command-arguments. + * + * @param {Boolean} [passThrough=true] + * for unknown options. + */ + passThroughOptions(passThrough = true) { + this._passThroughOptions = !!passThrough; + if (!!this.parent && passThrough && !this.parent._enablePositionalOptions) { + throw new Error("passThroughOptions can not be used without turning on enablePositionalOptions for parent command(s)"); + } + return this; + } + /** + * Whether to store option values as properties on command object, + * or store separately (specify false). In both cases the option values can be accessed using .opts(). + * + * @param {boolean} [storeAsProperties=true] + * @return {Command} `this` command for chaining + */ + storeOptionsAsProperties(storeAsProperties = true) { + if (this.options.length) { + throw new Error("call .storeOptionsAsProperties() before adding options"); + } + this._storeOptionsAsProperties = !!storeAsProperties; + return this; + } + /** + * Retrieve option value. + * + * @param {string} key + * @return {Object} value + */ + getOptionValue(key) { + if (this._storeOptionsAsProperties) { + return this[key]; + } + return this._optionValues[key]; + } + /** + * Store option value. + * + * @param {string} key + * @param {Object} value + * @return {Command} `this` command for chaining + */ + setOptionValue(key, value) { + return this.setOptionValueWithSource(key, value, void 0); + } + /** + * Store option value and where the value came from. + * + * @param {string} key + * @param {Object} value + * @param {string} source - expected values are default/config/env/cli/implied + * @return {Command} `this` command for chaining + */ + setOptionValueWithSource(key, value, source) { + if (this._storeOptionsAsProperties) { + this[key] = value; + } else { + this._optionValues[key] = value; + } + this._optionValueSources[key] = source; + return this; + } + /** + * Get source of option value. + * Expected values are default | config | env | cli | implied + * + * @param {string} key + * @return {string} + */ + getOptionValueSource(key) { + return this._optionValueSources[key]; + } + /** + * Get source of option value. See also .optsWithGlobals(). + * Expected values are default | config | env | cli | implied + * + * @param {string} key + * @return {string} + */ + getOptionValueSourceWithGlobals(key) { + let source; + this._getCommandAndAncestors().forEach((cmd) => { + if (cmd.getOptionValueSource(key) !== void 0) { + source = cmd.getOptionValueSource(key); + } + }); + return source; + } + /** + * Get user arguments from implied or explicit arguments. + * Side-effects: set _scriptPath if args included script. Used for default program name, and subcommand searches. + * + * @api private + */ + _prepareUserArgs(argv, parseOptions2) { + if (argv !== void 0 && !Array.isArray(argv)) { + throw new Error("first parameter to parse must be array or undefined"); + } + parseOptions2 = parseOptions2 || {}; + if (argv === void 0) { + argv = process15.argv; + if (process15.versions && process15.versions.electron) { + parseOptions2.from = "electron"; + } + } + this.rawArgs = argv.slice(); + let userArgs; + switch (parseOptions2.from) { + case void 0: + case "node": + this._scriptPath = argv[1]; + userArgs = argv.slice(2); + break; + case "electron": + if (process15.defaultApp) { + this._scriptPath = argv[1]; + userArgs = argv.slice(2); + } else { + userArgs = argv.slice(1); + } + break; + case "user": + userArgs = argv.slice(0); + break; + default: + throw new Error(`unexpected parse option { from: '${parseOptions2.from}' }`); + } + if (!this._name && this._scriptPath) this.nameFromFilename(this._scriptPath); + this._name = this._name || "program"; + return userArgs; + } + /** + * Parse `argv`, setting options and invoking commands when defined. + * + * The default expectation is that the arguments are from node and have the application as argv[0] + * and the script being run in argv[1], with user parameters after that. + * + * @example + * program.parse(process.argv); + * program.parse(); // implicitly use process.argv and auto-detect node vs electron conventions + * program.parse(my-args, { from: 'user' }); // just user supplied arguments, nothing special about argv[0] + * + * @param {string[]} [argv] - optional, defaults to process.argv + * @param {Object} [parseOptions] - optionally specify style of options with from: node/user/electron + * @param {string} [parseOptions.from] - where the args are from: 'node', 'user', 'electron' + * @return {Command} `this` command for chaining + */ + parse(argv, parseOptions2) { + const userArgs = this._prepareUserArgs(argv, parseOptions2); + this._parseCommand([], userArgs); + return this; + } + /** + * Parse `argv`, setting options and invoking commands when defined. + * + * Use parseAsync instead of parse if any of your action handlers are async. Returns a Promise. + * + * The default expectation is that the arguments are from node and have the application as argv[0] + * and the script being run in argv[1], with user parameters after that. + * + * @example + * await program.parseAsync(process.argv); + * await program.parseAsync(); // implicitly use process.argv and auto-detect node vs electron conventions + * await program.parseAsync(my-args, { from: 'user' }); // just user supplied arguments, nothing special about argv[0] + * + * @param {string[]} [argv] + * @param {Object} [parseOptions] + * @param {string} parseOptions.from - where the args are from: 'node', 'user', 'electron' + * @return {Promise} + */ + async parseAsync(argv, parseOptions2) { + const userArgs = this._prepareUserArgs(argv, parseOptions2); + await this._parseCommand([], userArgs); + return this; + } + /** + * Execute a sub-command executable. + * + * @api private + */ + _executeSubCommand(subcommand, args) { + args = args.slice(); + let launchWithNode = false; + const sourceExt = [".js", ".ts", ".tsx", ".mjs", ".cjs"]; + function findFile(baseDir, baseName) { + const localBin = path9.resolve(baseDir, baseName); + if (fs10.existsSync(localBin)) return localBin; + if (sourceExt.includes(path9.extname(baseName))) return void 0; + const foundExt = sourceExt.find((ext) => fs10.existsSync(`${localBin}${ext}`)); + if (foundExt) return `${localBin}${foundExt}`; + return void 0; + } + this._checkForMissingMandatoryOptions(); + this._checkForConflictingOptions(); + let executableFile = subcommand._executableFile || `${this._name}-${subcommand._name}`; + let executableDir = this._executableDir || ""; + if (this._scriptPath) { + let resolvedScriptPath; + try { + resolvedScriptPath = fs10.realpathSync(this._scriptPath); + } catch (err) { + resolvedScriptPath = this._scriptPath; + } + executableDir = path9.resolve(path9.dirname(resolvedScriptPath), executableDir); + } + if (executableDir) { + let localFile = findFile(executableDir, executableFile); + if (!localFile && !subcommand._executableFile && this._scriptPath) { + const legacyName = path9.basename(this._scriptPath, path9.extname(this._scriptPath)); + if (legacyName !== this._name) { + localFile = findFile(executableDir, `${legacyName}-${subcommand._name}`); + } + } + executableFile = localFile || executableFile; + } + launchWithNode = sourceExt.includes(path9.extname(executableFile)); + let proc; + if (process15.platform !== "win32") { + if (launchWithNode) { + args.unshift(executableFile); + args = incrementNodeInspectorPort(process15.execArgv).concat(args); + proc = childProcess6.spawn(process15.argv[0], args, { stdio: "inherit" }); + } else { + proc = childProcess6.spawn(executableFile, args, { stdio: "inherit" }); + } + } else { + args.unshift(executableFile); + args = incrementNodeInspectorPort(process15.execArgv).concat(args); + proc = childProcess6.spawn(process15.execPath, args, { stdio: "inherit" }); + } + if (!proc.killed) { + const signals = ["SIGUSR1", "SIGUSR2", "SIGTERM", "SIGINT", "SIGHUP"]; + signals.forEach((signal) => { + process15.on(signal, () => { + if (proc.killed === false && proc.exitCode === null) { + proc.kill(signal); + } + }); + }); + } + const exitCallback = this._exitCallback; + if (!exitCallback) { + proc.on("close", process15.exit.bind(process15)); + } else { + proc.on("close", () => { + exitCallback(new CommanderError2(process15.exitCode || 0, "commander.executeSubCommandAsync", "(close)")); + }); + } + proc.on("error", (err) => { + if (err.code === "ENOENT") { + const executableDirMessage = executableDir ? `searched for local subcommand relative to directory '${executableDir}'` : "no directory for search for local subcommand, use .executableDir() to supply a custom directory"; + const executableMissing = `'${executableFile}' does not exist + - if '${subcommand._name}' is not meant to be an executable command, remove description parameter from '.command()' and use '.description()' instead + - if the default executable name is not suitable, use the executableFile option to supply a custom name or path + - ${executableDirMessage}`; + throw new Error(executableMissing); + } else if (err.code === "EACCES") { + throw new Error(`'${executableFile}' not executable`); + } + if (!exitCallback) { + process15.exit(1); + } else { + const wrappedError = new CommanderError2(1, "commander.executeSubCommandAsync", "(error)"); + wrappedError.nestedError = err; + exitCallback(wrappedError); + } + }); + this.runningCommand = proc; + } + /** + * @api private + */ + _dispatchSubcommand(commandName, operands, unknown2) { + const subCommand = this._findCommand(commandName); + if (!subCommand) this.help({ error: true }); + let promiseChain; + promiseChain = this._chainOrCallSubCommandHook(promiseChain, subCommand, "preSubcommand"); + promiseChain = this._chainOrCall(promiseChain, () => { + if (subCommand._executableHandler) { + this._executeSubCommand(subCommand, operands.concat(unknown2)); + } else { + return subCommand._parseCommand(operands, unknown2); + } + }); + return promiseChain; + } + /** + * Invoke help directly if possible, or dispatch if necessary. + * e.g. help foo + * + * @api private + */ + _dispatchHelpCommand(subcommandName) { + if (!subcommandName) { + this.help(); + } + const subCommand = this._findCommand(subcommandName); + if (subCommand && !subCommand._executableHandler) { + subCommand.help(); + } + return this._dispatchSubcommand(subcommandName, [], [ + this._helpLongFlag || this._helpShortFlag + ]); + } + /** + * Check this.args against expected this.registeredArguments. + * + * @api private + */ + _checkNumberOfArguments() { + this.registeredArguments.forEach((arg, i) => { + if (arg.required && this.args[i] == null) { + this.missingArgument(arg.name()); + } + }); + if (this.registeredArguments.length > 0 && this.registeredArguments[this.registeredArguments.length - 1].variadic) { + return; + } + if (this.args.length > this.registeredArguments.length) { + this._excessArguments(this.args); + } + } + /** + * Process this.args using this.registeredArguments and save as this.processedArgs! + * + * @api private + */ + _processArguments() { + const myParseArg = (argument, value, previous) => { + let parsedValue = value; + if (value !== null && argument.parseArg) { + const invalidValueMessage = `error: command-argument value '${value}' is invalid for argument '${argument.name()}'.`; + parsedValue = this._callParseArg(argument, value, previous, invalidValueMessage); + } + return parsedValue; + }; + this._checkNumberOfArguments(); + const processedArgs = []; + this.registeredArguments.forEach((declaredArg, index) => { + let value = declaredArg.defaultValue; + if (declaredArg.variadic) { + if (index < this.args.length) { + value = this.args.slice(index); + if (declaredArg.parseArg) { + value = value.reduce((processed, v) => { + return myParseArg(declaredArg, v, processed); + }, declaredArg.defaultValue); + } + } else if (value === void 0) { + value = []; + } + } else if (index < this.args.length) { + value = this.args[index]; + if (declaredArg.parseArg) { + value = myParseArg(declaredArg, value, declaredArg.defaultValue); + } + } + processedArgs[index] = value; + }); + this.processedArgs = processedArgs; + } + /** + * Once we have a promise we chain, but call synchronously until then. + * + * @param {Promise|undefined} promise + * @param {Function} fn + * @return {Promise|undefined} + * @api private + */ + _chainOrCall(promise, fn) { + if (promise && promise.then && typeof promise.then === "function") { + return promise.then(() => fn()); + } + return fn(); + } + /** + * + * @param {Promise|undefined} promise + * @param {string} event + * @return {Promise|undefined} + * @api private + */ + _chainOrCallHooks(promise, event) { + let result = promise; + const hooks = []; + this._getCommandAndAncestors().reverse().filter((cmd) => cmd._lifeCycleHooks[event] !== void 0).forEach((hookedCommand) => { + hookedCommand._lifeCycleHooks[event].forEach((callback) => { + hooks.push({ hookedCommand, callback }); + }); + }); + if (event === "postAction") { + hooks.reverse(); + } + hooks.forEach((hookDetail) => { + result = this._chainOrCall(result, () => { + return hookDetail.callback(hookDetail.hookedCommand, this); + }); + }); + return result; + } + /** + * + * @param {Promise|undefined} promise + * @param {Command} subCommand + * @param {string} event + * @return {Promise|undefined} + * @api private + */ + _chainOrCallSubCommandHook(promise, subCommand, event) { + let result = promise; + if (this._lifeCycleHooks[event] !== void 0) { + this._lifeCycleHooks[event].forEach((hook) => { + result = this._chainOrCall(result, () => { + return hook(this, subCommand); + }); + }); + } + return result; + } + /** + * Process arguments in context of this command. + * Returns action result, in case it is a promise. + * + * @api private + */ + _parseCommand(operands, unknown2) { + const parsed = this.parseOptions(unknown2); + this._parseOptionsEnv(); + this._parseOptionsImplied(); + operands = operands.concat(parsed.operands); + unknown2 = parsed.unknown; + this.args = operands.concat(unknown2); + if (operands && this._findCommand(operands[0])) { + return this._dispatchSubcommand(operands[0], operands.slice(1), unknown2); + } + if (this._hasImplicitHelpCommand() && operands[0] === this._helpCommandName) { + return this._dispatchHelpCommand(operands[1]); + } + if (this._defaultCommandName) { + outputHelpIfRequested(this, unknown2); + return this._dispatchSubcommand(this._defaultCommandName, operands, unknown2); + } + if (this.commands.length && this.args.length === 0 && !this._actionHandler && !this._defaultCommandName) { + this.help({ error: true }); + } + outputHelpIfRequested(this, parsed.unknown); + this._checkForMissingMandatoryOptions(); + this._checkForConflictingOptions(); + const checkForUnknownOptions = () => { + if (parsed.unknown.length > 0) { + this.unknownOption(parsed.unknown[0]); + } + }; + const commandEvent = `command:${this.name()}`; + if (this._actionHandler) { + checkForUnknownOptions(); + this._processArguments(); + let promiseChain; + promiseChain = this._chainOrCallHooks(promiseChain, "preAction"); + promiseChain = this._chainOrCall(promiseChain, () => this._actionHandler(this.processedArgs)); + if (this.parent) { + promiseChain = this._chainOrCall(promiseChain, () => { + this.parent.emit(commandEvent, operands, unknown2); + }); + } + promiseChain = this._chainOrCallHooks(promiseChain, "postAction"); + return promiseChain; + } + if (this.parent && this.parent.listenerCount(commandEvent)) { + checkForUnknownOptions(); + this._processArguments(); + this.parent.emit(commandEvent, operands, unknown2); + } else if (operands.length) { + if (this._findCommand("*")) { + return this._dispatchSubcommand("*", operands, unknown2); + } + if (this.listenerCount("command:*")) { + this.emit("command:*", operands, unknown2); + } else if (this.commands.length) { + this.unknownCommand(); + } else { + checkForUnknownOptions(); + this._processArguments(); + } + } else if (this.commands.length) { + checkForUnknownOptions(); + this.help({ error: true }); + } else { + checkForUnknownOptions(); + this._processArguments(); + } + } + /** + * Find matching command. + * + * @api private + */ + _findCommand(name5) { + if (!name5) return void 0; + return this.commands.find((cmd) => cmd._name === name5 || cmd._aliases.includes(name5)); + } + /** + * Return an option matching `arg` if any. + * + * @param {string} arg + * @return {Option} + * @api private + */ + _findOption(arg) { + return this.options.find((option) => option.is(arg)); + } + /** + * Display an error message if a mandatory option does not have a value. + * Called after checking for help flags in leaf subcommand. + * + * @api private + */ + _checkForMissingMandatoryOptions() { + this._getCommandAndAncestors().forEach((cmd) => { + cmd.options.forEach((anOption) => { + if (anOption.mandatory && cmd.getOptionValue(anOption.attributeName()) === void 0) { + cmd.missingMandatoryOptionValue(anOption); + } + }); + }); + } + /** + * Display an error message if conflicting options are used together in this. + * + * @api private + */ + _checkForConflictingLocalOptions() { + const definedNonDefaultOptions = this.options.filter( + (option) => { + const optionKey = option.attributeName(); + if (this.getOptionValue(optionKey) === void 0) { + return false; + } + return this.getOptionValueSource(optionKey) !== "default"; + } + ); + const optionsWithConflicting = definedNonDefaultOptions.filter( + (option) => option.conflictsWith.length > 0 + ); + optionsWithConflicting.forEach((option) => { + const conflictingAndDefined = definedNonDefaultOptions.find( + (defined) => option.conflictsWith.includes(defined.attributeName()) + ); + if (conflictingAndDefined) { + this._conflictingOption(option, conflictingAndDefined); + } + }); + } + /** + * Display an error message if conflicting options are used together. + * Called after checking for help flags in leaf subcommand. + * + * @api private + */ + _checkForConflictingOptions() { + this._getCommandAndAncestors().forEach((cmd) => { + cmd._checkForConflictingLocalOptions(); + }); + } + /** + * Parse options from `argv` removing known options, + * and return argv split into operands and unknown arguments. + * + * Examples: + * + * argv => operands, unknown + * --known kkk op => [op], [] + * op --known kkk => [op], [] + * sub --unknown uuu op => [sub], [--unknown uuu op] + * sub -- --unknown uuu op => [sub --unknown uuu op], [] + * + * @param {String[]} argv + * @return {{operands: String[], unknown: String[]}} + */ + parseOptions(argv) { + const operands = []; + const unknown2 = []; + let dest = operands; + const args = argv.slice(); + function maybeOption(arg) { + return arg.length > 1 && arg[0] === "-"; + } + let activeVariadicOption = null; + while (args.length) { + const arg = args.shift(); + if (arg === "--") { + if (dest === unknown2) dest.push(arg); + dest.push(...args); + break; + } + if (activeVariadicOption && !maybeOption(arg)) { + this.emit(`option:${activeVariadicOption.name()}`, arg); + continue; + } + activeVariadicOption = null; + if (maybeOption(arg)) { + const option = this._findOption(arg); + if (option) { + if (option.required) { + const value = args.shift(); + if (value === void 0) this.optionMissingArgument(option); + this.emit(`option:${option.name()}`, value); + } else if (option.optional) { + let value = null; + if (args.length > 0 && !maybeOption(args[0])) { + value = args.shift(); + } + this.emit(`option:${option.name()}`, value); + } else { + this.emit(`option:${option.name()}`); + } + activeVariadicOption = option.variadic ? option : null; + continue; + } + } + if (arg.length > 2 && arg[0] === "-" && arg[1] !== "-") { + const option = this._findOption(`-${arg[1]}`); + if (option) { + if (option.required || option.optional && this._combineFlagAndOptionalValue) { + this.emit(`option:${option.name()}`, arg.slice(2)); + } else { + this.emit(`option:${option.name()}`); + args.unshift(`-${arg.slice(2)}`); + } + continue; + } + } + if (/^--[^=]+=/.test(arg)) { + const index = arg.indexOf("="); + const option = this._findOption(arg.slice(0, index)); + if (option && (option.required || option.optional)) { + this.emit(`option:${option.name()}`, arg.slice(index + 1)); + continue; + } + } + if (maybeOption(arg)) { + dest = unknown2; + } + if ((this._enablePositionalOptions || this._passThroughOptions) && operands.length === 0 && unknown2.length === 0) { + if (this._findCommand(arg)) { + operands.push(arg); + if (args.length > 0) unknown2.push(...args); + break; + } else if (arg === this._helpCommandName && this._hasImplicitHelpCommand()) { + operands.push(arg); + if (args.length > 0) operands.push(...args); + break; + } else if (this._defaultCommandName) { + unknown2.push(arg); + if (args.length > 0) unknown2.push(...args); + break; + } + } + if (this._passThroughOptions) { + dest.push(arg); + if (args.length > 0) dest.push(...args); + break; + } + dest.push(arg); + } + return { operands, unknown: unknown2 }; + } + /** + * Return an object containing local option values as key-value pairs. + * + * @return {Object} + */ + opts() { + if (this._storeOptionsAsProperties) { + const result = {}; + const len = this.options.length; + for (let i = 0; i < len; i++) { + const key = this.options[i].attributeName(); + result[key] = key === this._versionOptionName ? this._version : this[key]; + } + return result; + } + return this._optionValues; + } + /** + * Return an object containing merged local and global option values as key-value pairs. + * + * @return {Object} + */ + optsWithGlobals() { + return this._getCommandAndAncestors().reduce( + (combinedOptions, cmd) => Object.assign(combinedOptions, cmd.opts()), + {} + ); + } + /** + * Display error message and exit (or call exitOverride). + * + * @param {string} message + * @param {Object} [errorOptions] + * @param {string} [errorOptions.code] - an id string representing the error + * @param {number} [errorOptions.exitCode] - used with process.exit + */ + error(message, errorOptions) { + this._outputConfiguration.outputError(`${message} +`, this._outputConfiguration.writeErr); + if (typeof this._showHelpAfterError === "string") { + this._outputConfiguration.writeErr(`${this._showHelpAfterError} +`); + } else if (this._showHelpAfterError) { + this._outputConfiguration.writeErr("\n"); + this.outputHelp({ error: true }); + } + const config2 = errorOptions || {}; + const exitCode = config2.exitCode || 1; + const code = config2.code || "commander.error"; + this._exit(exitCode, code, message); + } + /** + * Apply any option related environment variables, if option does + * not have a value from cli or client code. + * + * @api private + */ + _parseOptionsEnv() { + this.options.forEach((option) => { + if (option.envVar && option.envVar in process15.env) { + const optionKey = option.attributeName(); + if (this.getOptionValue(optionKey) === void 0 || ["default", "config", "env"].includes(this.getOptionValueSource(optionKey))) { + if (option.required || option.optional) { + this.emit(`optionEnv:${option.name()}`, process15.env[option.envVar]); + } else { + this.emit(`optionEnv:${option.name()}`); + } + } + } + }); + } + /** + * Apply any implied option values, if option is undefined or default value. + * + * @api private + */ + _parseOptionsImplied() { + const dualHelper = new DualOptions(this.options); + const hasCustomOptionValue = (optionKey) => { + return this.getOptionValue(optionKey) !== void 0 && !["default", "implied"].includes(this.getOptionValueSource(optionKey)); + }; + this.options.filter((option) => option.implied !== void 0 && hasCustomOptionValue(option.attributeName()) && dualHelper.valueFromOption(this.getOptionValue(option.attributeName()), option)).forEach((option) => { + Object.keys(option.implied).filter((impliedKey) => !hasCustomOptionValue(impliedKey)).forEach((impliedKey) => { + this.setOptionValueWithSource(impliedKey, option.implied[impliedKey], "implied"); + }); + }); + } + /** + * Argument `name` is missing. + * + * @param {string} name + * @api private + */ + missingArgument(name5) { + const message = `error: missing required argument '${name5}'`; + this.error(message, { code: "commander.missingArgument" }); + } + /** + * `Option` is missing an argument. + * + * @param {Option} option + * @api private + */ + optionMissingArgument(option) { + const message = `error: option '${option.flags}' argument missing`; + this.error(message, { code: "commander.optionMissingArgument" }); + } + /** + * `Option` does not have a value, and is a mandatory option. + * + * @param {Option} option + * @api private + */ + missingMandatoryOptionValue(option) { + const message = `error: required option '${option.flags}' not specified`; + this.error(message, { code: "commander.missingMandatoryOptionValue" }); + } + /** + * `Option` conflicts with another option. + * + * @param {Option} option + * @param {Option} conflictingOption + * @api private + */ + _conflictingOption(option, conflictingOption) { + const findBestOptionFromValue = (option2) => { + const optionKey = option2.attributeName(); + const optionValue = this.getOptionValue(optionKey); + const negativeOption = this.options.find((target) => target.negate && optionKey === target.attributeName()); + const positiveOption = this.options.find((target) => !target.negate && optionKey === target.attributeName()); + if (negativeOption && (negativeOption.presetArg === void 0 && optionValue === false || negativeOption.presetArg !== void 0 && optionValue === negativeOption.presetArg)) { + return negativeOption; + } + return positiveOption || option2; + }; + const getErrorMessage2 = (option2) => { + const bestOption = findBestOptionFromValue(option2); + const optionKey = bestOption.attributeName(); + const source = this.getOptionValueSource(optionKey); + if (source === "env") { + return `environment variable '${bestOption.envVar}'`; + } + return `option '${bestOption.flags}'`; + }; + const message = `error: ${getErrorMessage2(option)} cannot be used with ${getErrorMessage2(conflictingOption)}`; + this.error(message, { code: "commander.conflictingOption" }); + } + /** + * Unknown option `flag`. + * + * @param {string} flag + * @api private + */ + unknownOption(flag) { + if (this._allowUnknownOption) return; + let suggestion = ""; + if (flag.startsWith("--") && this._showSuggestionAfterError) { + let candidateFlags = []; + let command = this; + do { + const moreFlags = command.createHelp().visibleOptions(command).filter((option) => option.long).map((option) => option.long); + candidateFlags = candidateFlags.concat(moreFlags); + command = command.parent; + } while (command && !command._enablePositionalOptions); + suggestion = suggestSimilar(flag, candidateFlags); + } + const message = `error: unknown option '${flag}'${suggestion}`; + this.error(message, { code: "commander.unknownOption" }); + } + /** + * Excess arguments, more than expected. + * + * @param {string[]} receivedArgs + * @api private + */ + _excessArguments(receivedArgs) { + if (this._allowExcessArguments) return; + const expected = this.registeredArguments.length; + const s = expected === 1 ? "" : "s"; + const forSubcommand = this.parent ? ` for '${this.name()}'` : ""; + const message = `error: too many arguments${forSubcommand}. Expected ${expected} argument${s} but got ${receivedArgs.length}.`; + this.error(message, { code: "commander.excessArguments" }); + } + /** + * Unknown command. + * + * @api private + */ + unknownCommand() { + const unknownName = this.args[0]; + let suggestion = ""; + if (this._showSuggestionAfterError) { + const candidateNames = []; + this.createHelp().visibleCommands(this).forEach((command) => { + candidateNames.push(command.name()); + if (command.alias()) candidateNames.push(command.alias()); + }); + suggestion = suggestSimilar(unknownName, candidateNames); + } + const message = `error: unknown command '${unknownName}'${suggestion}`; + this.error(message, { code: "commander.unknownCommand" }); + } + /** + * Get or set the program version. + * + * This method auto-registers the "-V, --version" option which will print the version number. + * + * You can optionally supply the flags and description to override the defaults. + * + * @param {string} [str] + * @param {string} [flags] + * @param {string} [description] + * @return {this | string | undefined} `this` command for chaining, or version string if no arguments + */ + version(str, flags, description) { + if (str === void 0) return this._version; + this._version = str; + flags = flags || "-V, --version"; + description = description || "output the version number"; + const versionOption = this.createOption(flags, description); + this._versionOptionName = versionOption.attributeName(); + this.options.push(versionOption); + this.on("option:" + versionOption.name(), () => { + this._outputConfiguration.writeOut(`${str} +`); + this._exit(0, "commander.version", str); + }); + return this; + } + /** + * Set the description. + * + * @param {string} [str] + * @param {Object} [argsDescription] + * @return {string|Command} + */ + description(str, argsDescription) { + if (str === void 0 && argsDescription === void 0) return this._description; + this._description = str; + if (argsDescription) { + this._argsDescription = argsDescription; + } + return this; + } + /** + * Set the summary. Used when listed as subcommand of parent. + * + * @param {string} [str] + * @return {string|Command} + */ + summary(str) { + if (str === void 0) return this._summary; + this._summary = str; + return this; + } + /** + * Set an alias for the command. + * + * You may call more than once to add multiple aliases. Only the first alias is shown in the auto-generated help. + * + * @param {string} [alias] + * @return {string|Command} + */ + alias(alias) { + if (alias === void 0) return this._aliases[0]; + let command = this; + if (this.commands.length !== 0 && this.commands[this.commands.length - 1]._executableHandler) { + command = this.commands[this.commands.length - 1]; + } + if (alias === command._name) throw new Error("Command alias can't be the same as its name"); + command._aliases.push(alias); + return this; + } + /** + * Set aliases for the command. + * + * Only the first alias is shown in the auto-generated help. + * + * @param {string[]} [aliases] + * @return {string[]|Command} + */ + aliases(aliases) { + if (aliases === void 0) return this._aliases; + aliases.forEach((alias) => this.alias(alias)); + return this; + } + /** + * Set / get the command usage `str`. + * + * @param {string} [str] + * @return {String|Command} + */ + usage(str) { + if (str === void 0) { + if (this._usage) return this._usage; + const args = this.registeredArguments.map((arg) => { + return humanReadableArgName(arg); + }); + return [].concat( + this.options.length || this._hasHelpOption ? "[options]" : [], + this.commands.length ? "[command]" : [], + this.registeredArguments.length ? args : [] + ).join(" "); + } + this._usage = str; + return this; + } + /** + * Get or set the name of the command. + * + * @param {string} [str] + * @return {string|Command} + */ + name(str) { + if (str === void 0) return this._name; + this._name = str; + return this; + } + /** + * Set the name of the command from script filename, such as process.argv[1], + * or require.main.filename, or __filename. + * + * (Used internally and public although not documented in README.) + * + * @example + * program.nameFromFilename(require.main.filename); + * + * @param {string} filename + * @return {Command} + */ + nameFromFilename(filename) { + this._name = path9.basename(filename, path9.extname(filename)); + return this; + } + /** + * Get or set the directory for searching for executable subcommands of this command. + * + * @example + * program.executableDir(__dirname); + * // or + * program.executableDir('subcommands'); + * + * @param {string} [path] + * @return {string|null|Command} + */ + executableDir(path10) { + if (path10 === void 0) return this._executableDir; + this._executableDir = path10; + return this; + } + /** + * Return program help documentation. + * + * @param {{ error: boolean }} [contextOptions] - pass {error:true} to wrap for stderr instead of stdout + * @return {string} + */ + helpInformation(contextOptions) { + const helper = this.createHelp(); + if (helper.helpWidth === void 0) { + helper.helpWidth = contextOptions && contextOptions.error ? this._outputConfiguration.getErrHelpWidth() : this._outputConfiguration.getOutHelpWidth(); + } + return helper.formatHelp(this, helper); + } + /** + * @api private + */ + _getHelpContext(contextOptions) { + contextOptions = contextOptions || {}; + const context3 = { error: !!contextOptions.error }; + let write; + if (context3.error) { + write = (arg) => this._outputConfiguration.writeErr(arg); + } else { + write = (arg) => this._outputConfiguration.writeOut(arg); + } + context3.write = contextOptions.write || write; + context3.command = this; + return context3; + } + /** + * Output help information for this command. + * + * Outputs built-in help, and custom text added using `.addHelpText()`. + * + * @param {{ error: boolean } | Function} [contextOptions] - pass {error:true} to write to stderr instead of stdout + */ + outputHelp(contextOptions) { + let deprecatedCallback; + if (typeof contextOptions === "function") { + deprecatedCallback = contextOptions; + contextOptions = void 0; + } + const context3 = this._getHelpContext(contextOptions); + this._getCommandAndAncestors().reverse().forEach((command) => command.emit("beforeAllHelp", context3)); + this.emit("beforeHelp", context3); + let helpInformation = this.helpInformation(context3); + if (deprecatedCallback) { + helpInformation = deprecatedCallback(helpInformation); + if (typeof helpInformation !== "string" && !Buffer.isBuffer(helpInformation)) { + throw new Error("outputHelp callback must return a string or a Buffer"); + } + } + context3.write(helpInformation); + if (this._helpLongFlag) { + this.emit(this._helpLongFlag); + } + this.emit("afterHelp", context3); + this._getCommandAndAncestors().forEach((command) => command.emit("afterAllHelp", context3)); + } + /** + * You can pass in flags and a description to override the help + * flags and help description for your command. Pass in false to + * disable the built-in help option. + * + * @param {string | boolean} [flags] + * @param {string} [description] + * @return {Command} `this` command for chaining + */ + helpOption(flags, description) { + if (typeof flags === "boolean") { + this._hasHelpOption = flags; + return this; + } + this._helpFlags = flags || this._helpFlags; + this._helpDescription = description || this._helpDescription; + const helpFlags = splitOptionFlags(this._helpFlags); + this._helpShortFlag = helpFlags.shortFlag; + this._helpLongFlag = helpFlags.longFlag; + return this; + } + /** + * Output help information and exit. + * + * Outputs built-in help, and custom text added using `.addHelpText()`. + * + * @param {{ error: boolean }} [contextOptions] - pass {error:true} to write to stderr instead of stdout + */ + help(contextOptions) { + this.outputHelp(contextOptions); + let exitCode = process15.exitCode || 0; + if (exitCode === 0 && contextOptions && typeof contextOptions !== "function" && contextOptions.error) { + exitCode = 1; + } + this._exit(exitCode, "commander.help", "(outputHelp)"); + } + /** + * Add additional text to be displayed with the built-in help. + * + * Position is 'before' or 'after' to affect just this command, + * and 'beforeAll' or 'afterAll' to affect this command and all its subcommands. + * + * @param {string} position - before or after built-in help + * @param {string | Function} text - string to add, or a function returning a string + * @return {Command} `this` command for chaining + */ + addHelpText(position, text) { + const allowedValues = ["beforeAll", "before", "after", "afterAll"]; + if (!allowedValues.includes(position)) { + throw new Error(`Unexpected value for position to addHelpText. +Expecting one of '${allowedValues.join("', '")}'`); + } + const helpEvent = `${position}Help`; + this.on(helpEvent, (context3) => { + let helpStr; + if (typeof text === "function") { + helpStr = text({ error: context3.error, command: context3.command }); + } else { + helpStr = text; + } + if (helpStr) { + context3.write(`${helpStr} +`); + } + }); + return this; + } + }; + function outputHelpIfRequested(cmd, args) { + const helpOption = cmd._hasHelpOption && args.find((arg) => arg === cmd._helpLongFlag || arg === cmd._helpShortFlag); + if (helpOption) { + cmd.outputHelp(); + cmd._exit(0, "commander.helpDisplayed", "(outputHelp)"); + } + } + function incrementNodeInspectorPort(args) { + return args.map((arg) => { + if (!arg.startsWith("--inspect")) { + return arg; + } + let debugOption; + let debugHost = "127.0.0.1"; + let debugPort = "9229"; + let match; + if ((match = arg.match(/^(--inspect(-brk)?)$/)) !== null) { + debugOption = match[1]; + } else if ((match = arg.match(/^(--inspect(-brk|-port)?)=([^:]+)$/)) !== null) { + debugOption = match[1]; + if (/^\d+$/.test(match[3])) { + debugPort = match[3]; + } else { + debugHost = match[3]; + } + } else if ((match = arg.match(/^(--inspect(-brk|-port)?)=([^:]+):(\d+)$/)) !== null) { + debugOption = match[1]; + debugHost = match[3]; + debugPort = match[4]; + } + if (debugOption && debugPort !== "0") { + return `${debugOption}=${debugHost}:${parseInt(debugPort) + 1}`; + } + return arg; + }); + } + exports2.Command = Command2; + } +}); + +// node_modules/commander/index.js +var require_commander = __commonJS({ + "node_modules/commander/index.js"(exports2, module2) { + var { Argument: Argument2 } = require_argument(); + var { Command: Command2 } = require_command(); + var { CommanderError: CommanderError2, InvalidArgumentError: InvalidArgumentError2 } = require_error(); + var { Help: Help2 } = require_help(); + var { Option: Option2 } = require_option(); + exports2 = module2.exports = new Command2(); + exports2.program = exports2; + exports2.Command = Command2; + exports2.Option = Option2; + exports2.Argument = Argument2; + exports2.Help = Help2; + exports2.CommanderError = CommanderError2; + exports2.InvalidArgumentError = InvalidArgumentError2; + exports2.InvalidOptionArgumentError = InvalidArgumentError2; + } +}); + +// node_modules/logform/format.js +var require_format = __commonJS({ + "node_modules/logform/format.js"(exports2, module2) { + "use strict"; + var InvalidFormatError = class _InvalidFormatError extends Error { + constructor(formatFn) { + super(`Format functions must be synchronous taking a two arguments: (info, opts) +Found: ${formatFn.toString().split("\n")[0]} +`); + Error.captureStackTrace(this, _InvalidFormatError); + } + }; + module2.exports = (formatFn) => { + if (formatFn.length > 2) { + throw new InvalidFormatError(formatFn); + } + function Format(options = {}) { + this.options = options; + } + Format.prototype.transform = formatFn; + function createFormatWrap(opts) { + return new Format(opts); + } + createFormatWrap.Format = Format; + return createFormatWrap; + }; + } +}); + +// node_modules/@colors/colors/lib/styles.js +var require_styles = __commonJS({ + "node_modules/@colors/colors/lib/styles.js"(exports2, module2) { + var styles = {}; + module2["exports"] = styles; + var codes = { + reset: [0, 0], + bold: [1, 22], + dim: [2, 22], + italic: [3, 23], + underline: [4, 24], + inverse: [7, 27], + hidden: [8, 28], + strikethrough: [9, 29], + black: [30, 39], + red: [31, 39], + green: [32, 39], + yellow: [33, 39], + blue: [34, 39], + magenta: [35, 39], + cyan: [36, 39], + white: [37, 39], + gray: [90, 39], + grey: [90, 39], + brightRed: [91, 39], + brightGreen: [92, 39], + brightYellow: [93, 39], + brightBlue: [94, 39], + brightMagenta: [95, 39], + brightCyan: [96, 39], + brightWhite: [97, 39], + bgBlack: [40, 49], + bgRed: [41, 49], + bgGreen: [42, 49], + bgYellow: [43, 49], + bgBlue: [44, 49], + bgMagenta: [45, 49], + bgCyan: [46, 49], + bgWhite: [47, 49], + bgGray: [100, 49], + bgGrey: [100, 49], + bgBrightRed: [101, 49], + bgBrightGreen: [102, 49], + bgBrightYellow: [103, 49], + bgBrightBlue: [104, 49], + bgBrightMagenta: [105, 49], + bgBrightCyan: [106, 49], + bgBrightWhite: [107, 49], + // legacy styles for colors pre v1.0.0 + blackBG: [40, 49], + redBG: [41, 49], + greenBG: [42, 49], + yellowBG: [43, 49], + blueBG: [44, 49], + magentaBG: [45, 49], + cyanBG: [46, 49], + whiteBG: [47, 49] + }; + Object.keys(codes).forEach(function(key) { + var val = codes[key]; + var style = styles[key] = []; + style.open = "\x1B[" + val[0] + "m"; + style.close = "\x1B[" + val[1] + "m"; + }); + } +}); + +// node_modules/@colors/colors/lib/system/has-flag.js +var require_has_flag = __commonJS({ + "node_modules/@colors/colors/lib/system/has-flag.js"(exports2, module2) { + "use strict"; + module2.exports = function(flag, argv) { + argv = argv || process.argv || []; + var terminatorPos = argv.indexOf("--"); + var prefix = /^-{1,2}/.test(flag) ? "" : "--"; + var pos = argv.indexOf(prefix + flag); + return pos !== -1 && (terminatorPos === -1 ? true : pos < terminatorPos); + }; + } +}); + +// node_modules/@colors/colors/lib/system/supports-colors.js +var require_supports_colors = __commonJS({ + "node_modules/@colors/colors/lib/system/supports-colors.js"(exports2, module2) { + "use strict"; + var os5 = require("os"); + var hasFlag = require_has_flag(); + var env = process.env; + var forceColor = void 0; + if (hasFlag("no-color") || hasFlag("no-colors") || hasFlag("color=false")) { + forceColor = false; + } else if (hasFlag("color") || hasFlag("colors") || hasFlag("color=true") || hasFlag("color=always")) { + forceColor = true; + } + if ("FORCE_COLOR" in env) { + forceColor = env.FORCE_COLOR.length === 0 || parseInt(env.FORCE_COLOR, 10) !== 0; + } + function translateLevel(level) { + if (level === 0) { + return false; + } + return { + level, + hasBasic: true, + has256: level >= 2, + has16m: level >= 3 + }; + } + function supportsColor(stream) { + if (forceColor === false) { + return 0; + } + if (hasFlag("color=16m") || hasFlag("color=full") || hasFlag("color=truecolor")) { + return 3; + } + if (hasFlag("color=256")) { + return 2; + } + if (stream && !stream.isTTY && forceColor !== true) { + return 0; + } + var min = forceColor ? 1 : 0; + if (process.platform === "win32") { + var osRelease = os5.release().split("."); + if (Number(process.versions.node.split(".")[0]) >= 8 && Number(osRelease[0]) >= 10 && Number(osRelease[2]) >= 10586) { + return Number(osRelease[2]) >= 14931 ? 3 : 2; + } + return 1; + } + if ("CI" in env) { + if (["TRAVIS", "CIRCLECI", "APPVEYOR", "GITLAB_CI"].some(function(sign) { + return sign in env; + }) || env.CI_NAME === "codeship") { + return 1; + } + return min; + } + if ("TEAMCITY_VERSION" in env) { + return /^(9\.(0*[1-9]\d*)\.|\d{2,}\.)/.test(env.TEAMCITY_VERSION) ? 1 : 0; + } + if ("TERM_PROGRAM" in env) { + var version8 = parseInt((env.TERM_PROGRAM_VERSION || "").split(".")[0], 10); + switch (env.TERM_PROGRAM) { + case "iTerm.app": + return version8 >= 3 ? 3 : 2; + case "Hyper": + return 3; + case "Apple_Terminal": + return 2; + } + } + if (/-256(color)?$/i.test(env.TERM)) { + return 2; + } + if (/^screen|^xterm|^vt100|^rxvt|color|ansi|cygwin|linux/i.test(env.TERM)) { + return 1; + } + if ("COLORTERM" in env) { + return 1; + } + if (env.TERM === "dumb") { + return min; + } + return min; + } + function getSupportLevel(stream) { + var level = supportsColor(stream); + return translateLevel(level); + } + module2.exports = { + supportsColor: getSupportLevel, + stdout: getSupportLevel(process.stdout), + stderr: getSupportLevel(process.stderr) + }; + } +}); + +// node_modules/@colors/colors/lib/custom/trap.js +var require_trap = __commonJS({ + "node_modules/@colors/colors/lib/custom/trap.js"(exports2, module2) { + module2["exports"] = function runTheTrap(text, options) { + var result = ""; + text = text || "Run the trap, drop the bass"; + text = text.split(""); + var trap = { + a: ["@", "\u0104", "\u023A", "\u0245", "\u0394", "\u039B", "\u0414"], + b: ["\xDF", "\u0181", "\u0243", "\u026E", "\u03B2", "\u0E3F"], + c: ["\xA9", "\u023B", "\u03FE"], + d: ["\xD0", "\u018A", "\u0500", "\u0501", "\u0502", "\u0503"], + e: [ + "\xCB", + "\u0115", + "\u018E", + "\u0258", + "\u03A3", + "\u03BE", + "\u04BC", + "\u0A6C" + ], + f: ["\u04FA"], + g: ["\u0262"], + h: ["\u0126", "\u0195", "\u04A2", "\u04BA", "\u04C7", "\u050A"], + i: ["\u0F0F"], + j: ["\u0134"], + k: ["\u0138", "\u04A0", "\u04C3", "\u051E"], + l: ["\u0139"], + m: ["\u028D", "\u04CD", "\u04CE", "\u0520", "\u0521", "\u0D69"], + n: ["\xD1", "\u014B", "\u019D", "\u0376", "\u03A0", "\u048A"], + o: [ + "\xD8", + "\xF5", + "\xF8", + "\u01FE", + "\u0298", + "\u047A", + "\u05DD", + "\u06DD", + "\u0E4F" + ], + p: ["\u01F7", "\u048E"], + q: ["\u09CD"], + r: ["\xAE", "\u01A6", "\u0210", "\u024C", "\u0280", "\u042F"], + s: ["\xA7", "\u03DE", "\u03DF", "\u03E8"], + t: ["\u0141", "\u0166", "\u0373"], + u: ["\u01B1", "\u054D"], + v: ["\u05D8"], + w: ["\u0428", "\u0460", "\u047C", "\u0D70"], + x: ["\u04B2", "\u04FE", "\u04FC", "\u04FD"], + y: ["\xA5", "\u04B0", "\u04CB"], + z: ["\u01B5", "\u0240"] + }; + text.forEach(function(c) { + c = c.toLowerCase(); + var chars = trap[c] || [" "]; + var rand = Math.floor(Math.random() * chars.length); + if (typeof trap[c] !== "undefined") { + result += trap[c][rand]; + } else { + result += c; + } + }); + return result; + }; + } +}); + +// node_modules/@colors/colors/lib/custom/zalgo.js +var require_zalgo = __commonJS({ + "node_modules/@colors/colors/lib/custom/zalgo.js"(exports2, module2) { + module2["exports"] = function zalgo(text, options) { + text = text || " he is here "; + var soul = { + "up": [ + "\u030D", + "\u030E", + "\u0304", + "\u0305", + "\u033F", + "\u0311", + "\u0306", + "\u0310", + "\u0352", + "\u0357", + "\u0351", + "\u0307", + "\u0308", + "\u030A", + "\u0342", + "\u0313", + "\u0308", + "\u034A", + "\u034B", + "\u034C", + "\u0303", + "\u0302", + "\u030C", + "\u0350", + "\u0300", + "\u0301", + "\u030B", + "\u030F", + "\u0312", + "\u0313", + "\u0314", + "\u033D", + "\u0309", + "\u0363", + "\u0364", + "\u0365", + "\u0366", + "\u0367", + "\u0368", + "\u0369", + "\u036A", + "\u036B", + "\u036C", + "\u036D", + "\u036E", + "\u036F", + "\u033E", + "\u035B", + "\u0346", + "\u031A" + ], + "down": [ + "\u0316", + "\u0317", + "\u0318", + "\u0319", + "\u031C", + "\u031D", + "\u031E", + "\u031F", + "\u0320", + "\u0324", + "\u0325", + "\u0326", + "\u0329", + "\u032A", + "\u032B", + "\u032C", + "\u032D", + "\u032E", + "\u032F", + "\u0330", + "\u0331", + "\u0332", + "\u0333", + "\u0339", + "\u033A", + "\u033B", + "\u033C", + "\u0345", + "\u0347", + "\u0348", + "\u0349", + "\u034D", + "\u034E", + "\u0353", + "\u0354", + "\u0355", + "\u0356", + "\u0359", + "\u035A", + "\u0323" + ], + "mid": [ + "\u0315", + "\u031B", + "\u0300", + "\u0301", + "\u0358", + "\u0321", + "\u0322", + "\u0327", + "\u0328", + "\u0334", + "\u0335", + "\u0336", + "\u035C", + "\u035D", + "\u035E", + "\u035F", + "\u0360", + "\u0362", + "\u0338", + "\u0337", + "\u0361", + " \u0489" + ] + }; + var all = [].concat(soul.up, soul.down, soul.mid); + function randomNumber(range) { + var r = Math.floor(Math.random() * range); + return r; + } + function isChar(character) { + var bool = false; + all.filter(function(i) { + bool = i === character; + }); + return bool; + } + function heComes(text2, options2) { + var result = ""; + var counts; + var l; + options2 = options2 || {}; + options2["up"] = typeof options2["up"] !== "undefined" ? options2["up"] : true; + options2["mid"] = typeof options2["mid"] !== "undefined" ? options2["mid"] : true; + options2["down"] = typeof options2["down"] !== "undefined" ? options2["down"] : true; + options2["size"] = typeof options2["size"] !== "undefined" ? options2["size"] : "maxi"; + text2 = text2.split(""); + for (l in text2) { + if (isChar(l)) { + continue; + } + result = result + text2[l]; + counts = { "up": 0, "down": 0, "mid": 0 }; + switch (options2.size) { + case "mini": + counts.up = randomNumber(8); + counts.mid = randomNumber(2); + counts.down = randomNumber(8); + break; + case "maxi": + counts.up = randomNumber(16) + 3; + counts.mid = randomNumber(4) + 1; + counts.down = randomNumber(64) + 3; + break; + default: + counts.up = randomNumber(8) + 1; + counts.mid = randomNumber(6) / 2; + counts.down = randomNumber(8) + 1; + break; + } + var arr = ["up", "mid", "down"]; + for (var d in arr) { + var index = arr[d]; + for (var i = 0; i <= counts[index]; i++) { + if (options2[index]) { + result = result + soul[index][randomNumber(soul[index].length)]; + } + } + } + } + return result; + } + return heComes(text, options); + }; + } +}); + +// node_modules/@colors/colors/lib/maps/america.js +var require_america = __commonJS({ + "node_modules/@colors/colors/lib/maps/america.js"(exports2, module2) { + module2["exports"] = function(colors) { + return function(letter, i, exploded) { + if (letter === " ") return letter; + switch (i % 3) { + case 0: + return colors.red(letter); + case 1: + return colors.white(letter); + case 2: + return colors.blue(letter); + } + }; + }; + } +}); + +// node_modules/@colors/colors/lib/maps/zebra.js +var require_zebra = __commonJS({ + "node_modules/@colors/colors/lib/maps/zebra.js"(exports2, module2) { + module2["exports"] = function(colors) { + return function(letter, i, exploded) { + return i % 2 === 0 ? letter : colors.inverse(letter); + }; + }; + } +}); + +// node_modules/@colors/colors/lib/maps/rainbow.js +var require_rainbow = __commonJS({ + "node_modules/@colors/colors/lib/maps/rainbow.js"(exports2, module2) { + module2["exports"] = function(colors) { + var rainbowColors = ["red", "yellow", "green", "blue", "magenta"]; + return function(letter, i, exploded) { + if (letter === " ") { + return letter; + } else { + return colors[rainbowColors[i++ % rainbowColors.length]](letter); + } + }; + }; + } +}); + +// node_modules/@colors/colors/lib/maps/random.js +var require_random = __commonJS({ + "node_modules/@colors/colors/lib/maps/random.js"(exports2, module2) { + module2["exports"] = function(colors) { + var available = [ + "underline", + "inverse", + "grey", + "yellow", + "red", + "green", + "blue", + "white", + "cyan", + "magenta", + "brightYellow", + "brightRed", + "brightGreen", + "brightBlue", + "brightWhite", + "brightCyan", + "brightMagenta" + ]; + return function(letter, i, exploded) { + return letter === " " ? letter : colors[available[Math.round(Math.random() * (available.length - 2))]](letter); + }; + }; + } +}); + +// node_modules/@colors/colors/lib/colors.js +var require_colors = __commonJS({ + "node_modules/@colors/colors/lib/colors.js"(exports2, module2) { + var colors = {}; + module2["exports"] = colors; + colors.themes = {}; + var util3 = require("util"); + var ansiStyles = colors.styles = require_styles(); + var defineProps = Object.defineProperties; + var newLineRegex = new RegExp(/[\r\n]+/g); + colors.supportsColor = require_supports_colors().supportsColor; + if (typeof colors.enabled === "undefined") { + colors.enabled = colors.supportsColor() !== false; + } + colors.enable = function() { + colors.enabled = true; + }; + colors.disable = function() { + colors.enabled = false; + }; + colors.stripColors = colors.strip = function(str) { + return ("" + str).replace(/\x1B\[\d+m/g, ""); + }; + var stylize = colors.stylize = function stylize2(str, style) { + if (!colors.enabled) { + return str + ""; + } + var styleMap = ansiStyles[style]; + if (!styleMap && style in colors) { + return colors[style](str); + } + return styleMap.open + str + styleMap.close; + }; + var matchOperatorsRe = /[|\\{}()[\]^$+*?.]/g; + var escapeStringRegexp = function(str) { + if (typeof str !== "string") { + throw new TypeError("Expected a string"); + } + return str.replace(matchOperatorsRe, "\\$&"); + }; + function build(_styles) { + var builder = function builder2() { + return applyStyle.apply(builder2, arguments); + }; + builder._styles = _styles; + builder.__proto__ = proto; + return builder; + } + var styles = (function() { + var ret = {}; + ansiStyles.grey = ansiStyles.gray; + Object.keys(ansiStyles).forEach(function(key) { + ansiStyles[key].closeRe = new RegExp(escapeStringRegexp(ansiStyles[key].close), "g"); + ret[key] = { + get: function() { + return build(this._styles.concat(key)); + } + }; + }); + return ret; + })(); + var proto = defineProps(function colors2() { + }, styles); + function applyStyle() { + var args = Array.prototype.slice.call(arguments); + var str = args.map(function(arg) { + if (arg != null && arg.constructor === String) { + return arg; + } else { + return util3.inspect(arg); + } + }).join(" "); + if (!colors.enabled || !str) { + return str; + } + var newLinesPresent = str.indexOf("\n") != -1; + var nestedStyles = this._styles; + var i = nestedStyles.length; + while (i--) { + var code = ansiStyles[nestedStyles[i]]; + str = code.open + str.replace(code.closeRe, code.open) + code.close; + if (newLinesPresent) { + str = str.replace(newLineRegex, function(match) { + return code.close + match + code.open; + }); + } + } + return str; + } + colors.setTheme = function(theme) { + if (typeof theme === "string") { + console.log("colors.setTheme now only accepts an object, not a string. If you are trying to set a theme from a file, it is now your (the caller's) responsibility to require the file. The old syntax looked like colors.setTheme(__dirname + '/../themes/generic-logging.js'); The new syntax looks like colors.setTheme(require(__dirname + '/../themes/generic-logging.js'));"); + return; + } + for (var style in theme) { + (function(style2) { + colors[style2] = function(str) { + if (typeof theme[style2] === "object") { + var out = str; + for (var i in theme[style2]) { + out = colors[theme[style2][i]](out); + } + return out; + } + return colors[theme[style2]](str); + }; + })(style); + } + }; + function init() { + var ret = {}; + Object.keys(styles).forEach(function(name5) { + ret[name5] = { + get: function() { + return build([name5]); + } + }; + }); + return ret; + } + var sequencer = function sequencer2(map2, str) { + var exploded = str.split(""); + exploded = exploded.map(map2); + return exploded.join(""); + }; + colors.trap = require_trap(); + colors.zalgo = require_zalgo(); + colors.maps = {}; + colors.maps.america = require_america()(colors); + colors.maps.zebra = require_zebra()(colors); + colors.maps.rainbow = require_rainbow()(colors); + colors.maps.random = require_random()(colors); + for (map in colors.maps) { + (function(map2) { + colors[map2] = function(str) { + return sequencer(colors.maps[map2], str); + }; + })(map); + } + var map; + defineProps(colors, init()); + } +}); + +// node_modules/@colors/colors/safe.js +var require_safe = __commonJS({ + "node_modules/@colors/colors/safe.js"(exports2, module2) { + var colors = require_colors(); + module2["exports"] = colors; + } +}); + +// node_modules/triple-beam/config/cli.js +var require_cli = __commonJS({ + "node_modules/triple-beam/config/cli.js"(exports2) { + "use strict"; + exports2.levels = { + error: 0, + warn: 1, + help: 2, + data: 3, + info: 4, + debug: 5, + prompt: 6, + verbose: 7, + input: 8, + silly: 9 + }; + exports2.colors = { + error: "red", + warn: "yellow", + help: "cyan", + data: "grey", + info: "green", + debug: "blue", + prompt: "grey", + verbose: "cyan", + input: "grey", + silly: "magenta" + }; + } +}); + +// node_modules/triple-beam/config/npm.js +var require_npm = __commonJS({ + "node_modules/triple-beam/config/npm.js"(exports2) { + "use strict"; + exports2.levels = { + error: 0, + warn: 1, + info: 2, + http: 3, + verbose: 4, + debug: 5, + silly: 6 + }; + exports2.colors = { + error: "red", + warn: "yellow", + info: "green", + http: "green", + verbose: "cyan", + debug: "blue", + silly: "magenta" + }; + } +}); + +// node_modules/triple-beam/config/syslog.js +var require_syslog = __commonJS({ + "node_modules/triple-beam/config/syslog.js"(exports2) { + "use strict"; + exports2.levels = { + emerg: 0, + alert: 1, + crit: 2, + error: 3, + warning: 4, + notice: 5, + info: 6, + debug: 7 + }; + exports2.colors = { + emerg: "red", + alert: "yellow", + crit: "red", + error: "red", + warning: "red", + notice: "yellow", + info: "green", + debug: "blue" + }; + } +}); + +// node_modules/triple-beam/config/index.js +var require_config = __commonJS({ + "node_modules/triple-beam/config/index.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "cli", { + value: require_cli() + }); + Object.defineProperty(exports2, "npm", { + value: require_npm() + }); + Object.defineProperty(exports2, "syslog", { + value: require_syslog() + }); + } +}); + +// node_modules/triple-beam/index.js +var require_triple_beam = __commonJS({ + "node_modules/triple-beam/index.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "LEVEL", { + value: /* @__PURE__ */ Symbol.for("level") + }); + Object.defineProperty(exports2, "MESSAGE", { + value: /* @__PURE__ */ Symbol.for("message") + }); + Object.defineProperty(exports2, "SPLAT", { + value: /* @__PURE__ */ Symbol.for("splat") + }); + Object.defineProperty(exports2, "configs", { + value: require_config() + }); + } +}); + +// node_modules/logform/colorize.js +var require_colorize = __commonJS({ + "node_modules/logform/colorize.js"(exports2, module2) { + "use strict"; + var colors = require_safe(); + var { LEVEL, MESSAGE } = require_triple_beam(); + colors.enabled = true; + var hasSpace = /\s+/; + var Colorizer = class _Colorizer { + constructor(opts = {}) { + if (opts.colors) { + this.addColors(opts.colors); + } + this.options = opts; + } + /* + * Adds the colors Object to the set of allColors + * known by the Colorizer + * + * @param {Object} colors Set of color mappings to add. + */ + static addColors(clrs) { + const nextColors = Object.keys(clrs).reduce((acc, level) => { + acc[level] = hasSpace.test(clrs[level]) ? clrs[level].split(hasSpace) : clrs[level]; + return acc; + }, {}); + _Colorizer.allColors = Object.assign({}, _Colorizer.allColors || {}, nextColors); + return _Colorizer.allColors; + } + /* + * Adds the colors Object to the set of allColors + * known by the Colorizer + * + * @param {Object} colors Set of color mappings to add. + */ + addColors(clrs) { + return _Colorizer.addColors(clrs); + } + /* + * function colorize (lookup, level, message) + * Performs multi-step colorization using @colors/colors/safe + */ + colorize(lookup, level, message) { + if (typeof message === "undefined") { + message = level; + } + if (!Array.isArray(_Colorizer.allColors[lookup])) { + return colors[_Colorizer.allColors[lookup]](message); + } + for (let i = 0, len = _Colorizer.allColors[lookup].length; i < len; i++) { + message = colors[_Colorizer.allColors[lookup][i]](message); + } + return message; + } + /* + * function transform (info, opts) + * Attempts to colorize the { level, message } of the given + * `logform` info object. + */ + transform(info, opts) { + if (opts.all && typeof info[MESSAGE] === "string") { + info[MESSAGE] = this.colorize(info[LEVEL], info.level, info[MESSAGE]); + } + if (opts.level || opts.all || !opts.message) { + info.level = this.colorize(info[LEVEL], info.level); + } + if (opts.all || opts.message) { + info.message = this.colorize(info[LEVEL], info.level, info.message); + } + return info; + } + }; + module2.exports = (opts) => new Colorizer(opts); + module2.exports.Colorizer = module2.exports.Format = Colorizer; + } +}); + +// node_modules/logform/levels.js +var require_levels = __commonJS({ + "node_modules/logform/levels.js"(exports2, module2) { + "use strict"; + var { Colorizer } = require_colorize(); + module2.exports = (config2) => { + Colorizer.addColors(config2.colors || config2); + return config2; + }; + } +}); + +// node_modules/logform/align.js +var require_align = __commonJS({ + "node_modules/logform/align.js"(exports2, module2) { + "use strict"; + var format = require_format(); + module2.exports = format((info) => { + info.message = ` ${info.message}`; + return info; + }); + } +}); + +// node_modules/logform/errors.js +var require_errors = __commonJS({ + "node_modules/logform/errors.js"(exports2, module2) { + "use strict"; + var format = require_format(); + var { LEVEL, MESSAGE } = require_triple_beam(); + module2.exports = format((einfo, { stack, cause }) => { + if (einfo instanceof Error) { + const info = Object.assign({}, einfo, { + level: einfo.level, + [LEVEL]: einfo[LEVEL] || einfo.level, + message: einfo.message, + [MESSAGE]: einfo[MESSAGE] || einfo.message + }); + if (stack) info.stack = einfo.stack; + if (cause) info.cause = einfo.cause; + return info; + } + if (!(einfo.message instanceof Error)) return einfo; + const err = einfo.message; + Object.assign(einfo, err); + einfo.message = err.message; + einfo[MESSAGE] = err.message; + if (stack) einfo.stack = err.stack; + if (cause) einfo.cause = err.cause; + return einfo; + }); + } +}); + +// node_modules/logform/pad-levels.js +var require_pad_levels = __commonJS({ + "node_modules/logform/pad-levels.js"(exports2, module2) { + "use strict"; + var { configs, LEVEL, MESSAGE } = require_triple_beam(); + var Padder = class _Padder { + constructor(opts = { levels: configs.npm.levels }) { + this.paddings = _Padder.paddingForLevels(opts.levels, opts.filler); + this.options = opts; + } + /** + * Returns the maximum length of keys in the specified `levels` Object. + * @param {Object} levels Set of all levels to calculate longest level against. + * @returns {Number} Maximum length of the longest level string. + */ + static getLongestLevel(levels) { + const lvls = Object.keys(levels).map((level) => level.length); + return Math.max(...lvls); + } + /** + * Returns the padding for the specified `level` assuming that the + * maximum length of all levels it's associated with is `maxLength`. + * @param {String} level Level to calculate padding for. + * @param {String} filler Repeatable text to use for padding. + * @param {Number} maxLength Length of the longest level + * @returns {String} Padding string for the `level` + */ + static paddingForLevel(level, filler, maxLength) { + const targetLen = maxLength + 1 - level.length; + const rep = Math.floor(targetLen / filler.length); + const padding = `${filler}${filler.repeat(rep)}`; + return padding.slice(0, targetLen); + } + /** + * Returns an object with the string paddings for the given `levels` + * using the specified `filler`. + * @param {Object} levels Set of all levels to calculate padding for. + * @param {String} filler Repeatable text to use for padding. + * @returns {Object} Mapping of level to desired padding. + */ + static paddingForLevels(levels, filler = " ") { + const maxLength = _Padder.getLongestLevel(levels); + return Object.keys(levels).reduce((acc, level) => { + acc[level] = _Padder.paddingForLevel(level, filler, maxLength); + return acc; + }, {}); + } + /** + * Prepends the padding onto the `message` based on the `LEVEL` of + * the `info`. This is based on the behavior of `winston@2` which also + * prepended the level onto the message. + * + * See: https://github.com/winstonjs/winston/blob/2.x/lib/winston/logger.js#L198-L201 + * + * @param {Info} info Logform info object + * @param {Object} opts Options passed along to this instance. + * @returns {Info} Modified logform info object. + */ + transform(info, opts) { + info.message = `${this.paddings[info[LEVEL]]}${info.message}`; + if (info[MESSAGE]) { + info[MESSAGE] = `${this.paddings[info[LEVEL]]}${info[MESSAGE]}`; + } + return info; + } + }; + module2.exports = (opts) => new Padder(opts); + module2.exports.Padder = module2.exports.Format = Padder; + } +}); + +// node_modules/logform/cli.js +var require_cli2 = __commonJS({ + "node_modules/logform/cli.js"(exports2, module2) { + "use strict"; + var { Colorizer } = require_colorize(); + var { Padder } = require_pad_levels(); + var { configs, MESSAGE } = require_triple_beam(); + var CliFormat = class { + constructor(opts = {}) { + if (!opts.levels) { + opts.levels = configs.cli.levels; + } + this.colorizer = new Colorizer(opts); + this.padder = new Padder(opts); + this.options = opts; + } + /* + * function transform (info, opts) + * Attempts to both: + * 1. Pad the { level } + * 2. Colorize the { level, message } + * of the given `logform` info object depending on the `opts`. + */ + transform(info, opts) { + this.colorizer.transform( + this.padder.transform(info, opts), + opts + ); + info[MESSAGE] = `${info.level}:${info.message}`; + return info; + } + }; + module2.exports = (opts) => new CliFormat(opts); + module2.exports.Format = CliFormat; + } +}); + +// node_modules/logform/combine.js +var require_combine = __commonJS({ + "node_modules/logform/combine.js"(exports2, module2) { + "use strict"; + var format = require_format(); + function cascade(formats) { + if (!formats.every(isValidFormat)) { + return; + } + return (info) => { + let obj = info; + for (let i = 0; i < formats.length; i++) { + obj = formats[i].transform(obj, formats[i].options); + if (!obj) { + return false; + } + } + return obj; + }; + } + function isValidFormat(fmt) { + if (typeof fmt.transform !== "function") { + throw new Error([ + "No transform function found on format. Did you create a format instance?", + "const myFormat = format(formatFn);", + "const instance = myFormat();" + ].join("\n")); + } + return true; + } + module2.exports = (...formats) => { + const combinedFormat = format(cascade(formats)); + const instance = combinedFormat(); + instance.Format = combinedFormat.Format; + return instance; + }; + module2.exports.cascade = cascade; + } +}); + +// node_modules/safe-stable-stringify/index.js +var require_safe_stable_stringify = __commonJS({ + "node_modules/safe-stable-stringify/index.js"(exports2, module2) { + "use strict"; + var { hasOwnProperty } = Object.prototype; + var stringify2 = configure(); + stringify2.configure = configure; + stringify2.stringify = stringify2; + stringify2.default = stringify2; + exports2.stringify = stringify2; + exports2.configure = configure; + module2.exports = stringify2; + var strEscapeSequencesRegExp = /[\u0000-\u001f\u0022\u005c\ud800-\udfff]/; + function strEscape(str) { + if (str.length < 5e3 && !strEscapeSequencesRegExp.test(str)) { + return `"${str}"`; + } + return JSON.stringify(str); + } + function sort(array2, comparator) { + if (array2.length > 200 || comparator) { + return array2.sort(comparator); + } + for (let i = 1; i < array2.length; i++) { + const currentValue = array2[i]; + let position = i; + while (position !== 0 && array2[position - 1] > currentValue) { + array2[position] = array2[position - 1]; + position--; + } + array2[position] = currentValue; + } + return array2; + } + var typedArrayPrototypeGetSymbolToStringTag = Object.getOwnPropertyDescriptor( + Object.getPrototypeOf( + Object.getPrototypeOf( + new Int8Array() + ) + ), + Symbol.toStringTag + ).get; + function isTypedArrayWithEntries(value) { + return typedArrayPrototypeGetSymbolToStringTag.call(value) !== void 0 && value.length !== 0; + } + function stringifyTypedArray(array2, separator, maximumBreadth) { + if (array2.length < maximumBreadth) { + maximumBreadth = array2.length; + } + const whitespace = separator === "," ? "" : " "; + let res = `"0":${whitespace}${array2[0]}`; + for (let i = 1; i < maximumBreadth; i++) { + res += `${separator}"${i}":${whitespace}${array2[i]}`; + } + return res; + } + function getCircularValueOption(options) { + if (hasOwnProperty.call(options, "circularValue")) { + const circularValue = options.circularValue; + if (typeof circularValue === "string") { + return `"${circularValue}"`; + } + if (circularValue == null) { + return circularValue; + } + if (circularValue === Error || circularValue === TypeError) { + return { + toString() { + throw new TypeError("Converting circular structure to JSON"); + } + }; + } + throw new TypeError('The "circularValue" argument must be of type string or the value null or undefined'); + } + return '"[Circular]"'; + } + function getDeterministicOption(options) { + let value; + if (hasOwnProperty.call(options, "deterministic")) { + value = options.deterministic; + if (typeof value !== "boolean" && typeof value !== "function") { + throw new TypeError('The "deterministic" argument must be of type boolean or comparator function'); + } + } + return value === void 0 ? true : value; + } + function getBooleanOption(options, key) { + let value; + if (hasOwnProperty.call(options, key)) { + value = options[key]; + if (typeof value !== "boolean") { + throw new TypeError(`The "${key}" argument must be of type boolean`); + } + } + return value === void 0 ? true : value; + } + function getPositiveIntegerOption(options, key) { + let value; + if (hasOwnProperty.call(options, key)) { + value = options[key]; + if (typeof value !== "number") { + throw new TypeError(`The "${key}" argument must be of type number`); + } + if (!Number.isInteger(value)) { + throw new TypeError(`The "${key}" argument must be an integer`); + } + if (value < 1) { + throw new RangeError(`The "${key}" argument must be >= 1`); + } + } + return value === void 0 ? Infinity : value; + } + function getItemCount(number4) { + if (number4 === 1) { + return "1 item"; + } + return `${number4} items`; + } + function getUniqueReplacerSet(replacerArray) { + const replacerSet = /* @__PURE__ */ new Set(); + for (const value of replacerArray) { + if (typeof value === "string" || typeof value === "number") { + replacerSet.add(String(value)); + } + } + return replacerSet; + } + function getStrictOption(options) { + if (hasOwnProperty.call(options, "strict")) { + const value = options.strict; + if (typeof value !== "boolean") { + throw new TypeError('The "strict" argument must be of type boolean'); + } + if (value) { + return (value2) => { + let message = `Object can not safely be stringified. Received type ${typeof value2}`; + if (typeof value2 !== "function") message += ` (${value2.toString()})`; + throw new Error(message); + }; + } + } + } + function configure(options) { + options = { ...options }; + const fail = getStrictOption(options); + if (fail) { + if (options.bigint === void 0) { + options.bigint = false; + } + if (!("circularValue" in options)) { + options.circularValue = Error; + } + } + const circularValue = getCircularValueOption(options); + const bigint3 = getBooleanOption(options, "bigint"); + const deterministic = getDeterministicOption(options); + const comparator = typeof deterministic === "function" ? deterministic : void 0; + const maximumDepth = getPositiveIntegerOption(options, "maximumDepth"); + const maximumBreadth = getPositiveIntegerOption(options, "maximumBreadth"); + function stringifyFnReplacer(key, parent, stack, replacer, spacer, indentation) { + let value = parent[key]; + if (typeof value === "object" && value !== null && typeof value.toJSON === "function") { + value = value.toJSON(key); + } + value = replacer.call(parent, key, value); + switch (typeof value) { + case "string": + return strEscape(value); + case "object": { + if (value === null) { + return "null"; + } + if (stack.indexOf(value) !== -1) { + return circularValue; + } + let res = ""; + let join = ","; + const originalIndentation = indentation; + if (Array.isArray(value)) { + if (value.length === 0) { + return "[]"; + } + if (maximumDepth < stack.length + 1) { + return '"[Array]"'; + } + stack.push(value); + if (spacer !== "") { + indentation += spacer; + res += ` +${indentation}`; + join = `, +${indentation}`; + } + const maximumValuesToStringify = Math.min(value.length, maximumBreadth); + let i = 0; + for (; i < maximumValuesToStringify - 1; i++) { + const tmp2 = stringifyFnReplacer(String(i), value, stack, replacer, spacer, indentation); + res += tmp2 !== void 0 ? tmp2 : "null"; + res += join; + } + const tmp = stringifyFnReplacer(String(i), value, stack, replacer, spacer, indentation); + res += tmp !== void 0 ? tmp : "null"; + if (value.length - 1 > maximumBreadth) { + const removedKeys = value.length - maximumBreadth - 1; + res += `${join}"... ${getItemCount(removedKeys)} not stringified"`; + } + if (spacer !== "") { + res += ` +${originalIndentation}`; + } + stack.pop(); + return `[${res}]`; + } + let keys = Object.keys(value); + const keyLength = keys.length; + if (keyLength === 0) { + return "{}"; + } + if (maximumDepth < stack.length + 1) { + return '"[Object]"'; + } + let whitespace = ""; + let separator = ""; + if (spacer !== "") { + indentation += spacer; + join = `, +${indentation}`; + whitespace = " "; + } + const maximumPropertiesToStringify = Math.min(keyLength, maximumBreadth); + if (deterministic && !isTypedArrayWithEntries(value)) { + keys = sort(keys, comparator); + } + stack.push(value); + for (let i = 0; i < maximumPropertiesToStringify; i++) { + const key2 = keys[i]; + const tmp = stringifyFnReplacer(key2, value, stack, replacer, spacer, indentation); + if (tmp !== void 0) { + res += `${separator}${strEscape(key2)}:${whitespace}${tmp}`; + separator = join; + } + } + if (keyLength > maximumBreadth) { + const removedKeys = keyLength - maximumBreadth; + res += `${separator}"...":${whitespace}"${getItemCount(removedKeys)} not stringified"`; + separator = join; + } + if (spacer !== "" && separator.length > 1) { + res = ` +${indentation}${res} +${originalIndentation}`; + } + stack.pop(); + return `{${res}}`; + } + case "number": + return isFinite(value) ? String(value) : fail ? fail(value) : "null"; + case "boolean": + return value === true ? "true" : "false"; + case "undefined": + return void 0; + case "bigint": + if (bigint3) { + return String(value); + } + // fallthrough + default: + return fail ? fail(value) : void 0; + } + } + function stringifyArrayReplacer(key, value, stack, replacer, spacer, indentation) { + if (typeof value === "object" && value !== null && typeof value.toJSON === "function") { + value = value.toJSON(key); + } + switch (typeof value) { + case "string": + return strEscape(value); + case "object": { + if (value === null) { + return "null"; + } + if (stack.indexOf(value) !== -1) { + return circularValue; + } + const originalIndentation = indentation; + let res = ""; + let join = ","; + if (Array.isArray(value)) { + if (value.length === 0) { + return "[]"; + } + if (maximumDepth < stack.length + 1) { + return '"[Array]"'; + } + stack.push(value); + if (spacer !== "") { + indentation += spacer; + res += ` +${indentation}`; + join = `, +${indentation}`; + } + const maximumValuesToStringify = Math.min(value.length, maximumBreadth); + let i = 0; + for (; i < maximumValuesToStringify - 1; i++) { + const tmp2 = stringifyArrayReplacer(String(i), value[i], stack, replacer, spacer, indentation); + res += tmp2 !== void 0 ? tmp2 : "null"; + res += join; + } + const tmp = stringifyArrayReplacer(String(i), value[i], stack, replacer, spacer, indentation); + res += tmp !== void 0 ? tmp : "null"; + if (value.length - 1 > maximumBreadth) { + const removedKeys = value.length - maximumBreadth - 1; + res += `${join}"... ${getItemCount(removedKeys)} not stringified"`; + } + if (spacer !== "") { + res += ` +${originalIndentation}`; + } + stack.pop(); + return `[${res}]`; + } + stack.push(value); + let whitespace = ""; + if (spacer !== "") { + indentation += spacer; + join = `, +${indentation}`; + whitespace = " "; + } + let separator = ""; + for (const key2 of replacer) { + const tmp = stringifyArrayReplacer(key2, value[key2], stack, replacer, spacer, indentation); + if (tmp !== void 0) { + res += `${separator}${strEscape(key2)}:${whitespace}${tmp}`; + separator = join; + } + } + if (spacer !== "" && separator.length > 1) { + res = ` +${indentation}${res} +${originalIndentation}`; + } + stack.pop(); + return `{${res}}`; + } + case "number": + return isFinite(value) ? String(value) : fail ? fail(value) : "null"; + case "boolean": + return value === true ? "true" : "false"; + case "undefined": + return void 0; + case "bigint": + if (bigint3) { + return String(value); + } + // fallthrough + default: + return fail ? fail(value) : void 0; + } + } + function stringifyIndent(key, value, stack, spacer, indentation) { + switch (typeof value) { + case "string": + return strEscape(value); + case "object": { + if (value === null) { + return "null"; + } + if (typeof value.toJSON === "function") { + value = value.toJSON(key); + if (typeof value !== "object") { + return stringifyIndent(key, value, stack, spacer, indentation); + } + if (value === null) { + return "null"; + } + } + if (stack.indexOf(value) !== -1) { + return circularValue; + } + const originalIndentation = indentation; + if (Array.isArray(value)) { + if (value.length === 0) { + return "[]"; + } + if (maximumDepth < stack.length + 1) { + return '"[Array]"'; + } + stack.push(value); + indentation += spacer; + let res2 = ` +${indentation}`; + const join2 = `, +${indentation}`; + const maximumValuesToStringify = Math.min(value.length, maximumBreadth); + let i = 0; + for (; i < maximumValuesToStringify - 1; i++) { + const tmp2 = stringifyIndent(String(i), value[i], stack, spacer, indentation); + res2 += tmp2 !== void 0 ? tmp2 : "null"; + res2 += join2; + } + const tmp = stringifyIndent(String(i), value[i], stack, spacer, indentation); + res2 += tmp !== void 0 ? tmp : "null"; + if (value.length - 1 > maximumBreadth) { + const removedKeys = value.length - maximumBreadth - 1; + res2 += `${join2}"... ${getItemCount(removedKeys)} not stringified"`; + } + res2 += ` +${originalIndentation}`; + stack.pop(); + return `[${res2}]`; + } + let keys = Object.keys(value); + const keyLength = keys.length; + if (keyLength === 0) { + return "{}"; + } + if (maximumDepth < stack.length + 1) { + return '"[Object]"'; + } + indentation += spacer; + const join = `, +${indentation}`; + let res = ""; + let separator = ""; + let maximumPropertiesToStringify = Math.min(keyLength, maximumBreadth); + if (isTypedArrayWithEntries(value)) { + res += stringifyTypedArray(value, join, maximumBreadth); + keys = keys.slice(value.length); + maximumPropertiesToStringify -= value.length; + separator = join; + } + if (deterministic) { + keys = sort(keys, comparator); + } + stack.push(value); + for (let i = 0; i < maximumPropertiesToStringify; i++) { + const key2 = keys[i]; + const tmp = stringifyIndent(key2, value[key2], stack, spacer, indentation); + if (tmp !== void 0) { + res += `${separator}${strEscape(key2)}: ${tmp}`; + separator = join; + } + } + if (keyLength > maximumBreadth) { + const removedKeys = keyLength - maximumBreadth; + res += `${separator}"...": "${getItemCount(removedKeys)} not stringified"`; + separator = join; + } + if (separator !== "") { + res = ` +${indentation}${res} +${originalIndentation}`; + } + stack.pop(); + return `{${res}}`; + } + case "number": + return isFinite(value) ? String(value) : fail ? fail(value) : "null"; + case "boolean": + return value === true ? "true" : "false"; + case "undefined": + return void 0; + case "bigint": + if (bigint3) { + return String(value); + } + // fallthrough + default: + return fail ? fail(value) : void 0; + } + } + function stringifySimple(key, value, stack) { + switch (typeof value) { + case "string": + return strEscape(value); + case "object": { + if (value === null) { + return "null"; + } + if (typeof value.toJSON === "function") { + value = value.toJSON(key); + if (typeof value !== "object") { + return stringifySimple(key, value, stack); + } + if (value === null) { + return "null"; + } + } + if (stack.indexOf(value) !== -1) { + return circularValue; + } + let res = ""; + const hasLength = value.length !== void 0; + if (hasLength && Array.isArray(value)) { + if (value.length === 0) { + return "[]"; + } + if (maximumDepth < stack.length + 1) { + return '"[Array]"'; + } + stack.push(value); + const maximumValuesToStringify = Math.min(value.length, maximumBreadth); + let i = 0; + for (; i < maximumValuesToStringify - 1; i++) { + const tmp2 = stringifySimple(String(i), value[i], stack); + res += tmp2 !== void 0 ? tmp2 : "null"; + res += ","; + } + const tmp = stringifySimple(String(i), value[i], stack); + res += tmp !== void 0 ? tmp : "null"; + if (value.length - 1 > maximumBreadth) { + const removedKeys = value.length - maximumBreadth - 1; + res += `,"... ${getItemCount(removedKeys)} not stringified"`; + } + stack.pop(); + return `[${res}]`; + } + let keys = Object.keys(value); + const keyLength = keys.length; + if (keyLength === 0) { + return "{}"; + } + if (maximumDepth < stack.length + 1) { + return '"[Object]"'; + } + let separator = ""; + let maximumPropertiesToStringify = Math.min(keyLength, maximumBreadth); + if (hasLength && isTypedArrayWithEntries(value)) { + res += stringifyTypedArray(value, ",", maximumBreadth); + keys = keys.slice(value.length); + maximumPropertiesToStringify -= value.length; + separator = ","; + } + if (deterministic) { + keys = sort(keys, comparator); + } + stack.push(value); + for (let i = 0; i < maximumPropertiesToStringify; i++) { + const key2 = keys[i]; + const tmp = stringifySimple(key2, value[key2], stack); + if (tmp !== void 0) { + res += `${separator}${strEscape(key2)}:${tmp}`; + separator = ","; + } + } + if (keyLength > maximumBreadth) { + const removedKeys = keyLength - maximumBreadth; + res += `${separator}"...":"${getItemCount(removedKeys)} not stringified"`; + } + stack.pop(); + return `{${res}}`; + } + case "number": + return isFinite(value) ? String(value) : fail ? fail(value) : "null"; + case "boolean": + return value === true ? "true" : "false"; + case "undefined": + return void 0; + case "bigint": + if (bigint3) { + return String(value); + } + // fallthrough + default: + return fail ? fail(value) : void 0; + } + } + function stringify3(value, replacer, space) { + if (arguments.length > 1) { + let spacer = ""; + if (typeof space === "number") { + spacer = " ".repeat(Math.min(space, 10)); + } else if (typeof space === "string") { + spacer = space.slice(0, 10); + } + if (replacer != null) { + if (typeof replacer === "function") { + return stringifyFnReplacer("", { "": value }, [], replacer, spacer, ""); + } + if (Array.isArray(replacer)) { + return stringifyArrayReplacer("", value, [], getUniqueReplacerSet(replacer), spacer, ""); + } + } + if (spacer.length !== 0) { + return stringifyIndent("", value, [], spacer, ""); + } + } + return stringifySimple("", value, []); + } + return stringify3; + } + } +}); + +// node_modules/logform/json.js +var require_json = __commonJS({ + "node_modules/logform/json.js"(exports2, module2) { + "use strict"; + var format = require_format(); + var { MESSAGE } = require_triple_beam(); + var stringify2 = require_safe_stable_stringify(); + function replacer(key, value) { + if (typeof value === "bigint") + return value.toString(); + return value; + } + module2.exports = format((info, opts) => { + const jsonStringify = stringify2.configure(opts); + info[MESSAGE] = jsonStringify(info, opts.replacer || replacer, opts.space); + return info; + }); + } +}); + +// node_modules/logform/label.js +var require_label = __commonJS({ + "node_modules/logform/label.js"(exports2, module2) { + "use strict"; + var format = require_format(); + module2.exports = format((info, opts) => { + if (opts.message) { + info.message = `[${opts.label}] ${info.message}`; + return info; + } + info.label = opts.label; + return info; + }); + } +}); + +// node_modules/logform/logstash.js +var require_logstash = __commonJS({ + "node_modules/logform/logstash.js"(exports2, module2) { + "use strict"; + var format = require_format(); + var { MESSAGE } = require_triple_beam(); + var jsonStringify = require_safe_stable_stringify(); + module2.exports = format((info) => { + const logstash = {}; + if (info.message) { + logstash["@message"] = info.message; + delete info.message; + } + if (info.timestamp) { + logstash["@timestamp"] = info.timestamp; + delete info.timestamp; + } + logstash["@fields"] = info; + info[MESSAGE] = jsonStringify(logstash); + return info; + }); + } +}); + +// node_modules/logform/metadata.js +var require_metadata = __commonJS({ + "node_modules/logform/metadata.js"(exports2, module2) { + "use strict"; + var format = require_format(); + function fillExcept(info, fillExceptKeys, metadataKey) { + const savedKeys = fillExceptKeys.reduce((acc, key) => { + acc[key] = info[key]; + delete info[key]; + return acc; + }, {}); + const metadata = Object.keys(info).reduce((acc, key) => { + acc[key] = info[key]; + delete info[key]; + return acc; + }, {}); + Object.assign(info, savedKeys, { + [metadataKey]: metadata + }); + return info; + } + function fillWith(info, fillWithKeys, metadataKey) { + info[metadataKey] = fillWithKeys.reduce((acc, key) => { + acc[key] = info[key]; + delete info[key]; + return acc; + }, {}); + return info; + } + module2.exports = format((info, opts = {}) => { + let metadataKey = "metadata"; + if (opts.key) { + metadataKey = opts.key; + } + let fillExceptKeys = []; + if (!opts.fillExcept && !opts.fillWith) { + fillExceptKeys.push("level"); + fillExceptKeys.push("message"); + } + if (opts.fillExcept) { + fillExceptKeys = opts.fillExcept; + } + if (fillExceptKeys.length > 0) { + return fillExcept(info, fillExceptKeys, metadataKey); + } + if (opts.fillWith) { + return fillWith(info, opts.fillWith, metadataKey); + } + return info; + }); + } +}); + +// node_modules/ms/index.js +var require_ms = __commonJS({ + "node_modules/ms/index.js"(exports2, module2) { + var s = 1e3; + var m = s * 60; + var h = m * 60; + var d = h * 24; + var w = d * 7; + var y = d * 365.25; + module2.exports = function(val, options) { + options = options || {}; + var type = typeof val; + if (type === "string" && val.length > 0) { + return parse4(val); + } else if (type === "number" && isFinite(val)) { + return options.long ? fmtLong(val) : fmtShort(val); + } + throw new Error( + "val is not a non-empty string or a valid number. val=" + JSON.stringify(val) + ); + }; + function parse4(str) { + str = String(str); + if (str.length > 100) { + return; + } + var match = /^(-?(?:\d+)?\.?\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|weeks?|w|years?|yrs?|y)?$/i.exec( + str + ); + if (!match) { + return; + } + var n = parseFloat(match[1]); + var type = (match[2] || "ms").toLowerCase(); + switch (type) { + case "years": + case "year": + case "yrs": + case "yr": + case "y": + return n * y; + case "weeks": + case "week": + case "w": + return n * w; + case "days": + case "day": + case "d": + return n * d; + case "hours": + case "hour": + case "hrs": + case "hr": + case "h": + return n * h; + case "minutes": + case "minute": + case "mins": + case "min": + case "m": + return n * m; + case "seconds": + case "second": + case "secs": + case "sec": + case "s": + return n * s; + case "milliseconds": + case "millisecond": + case "msecs": + case "msec": + case "ms": + return n; + default: + return void 0; + } + } + function fmtShort(ms) { + var msAbs = Math.abs(ms); + if (msAbs >= d) { + return Math.round(ms / d) + "d"; + } + if (msAbs >= h) { + return Math.round(ms / h) + "h"; + } + if (msAbs >= m) { + return Math.round(ms / m) + "m"; + } + if (msAbs >= s) { + return Math.round(ms / s) + "s"; + } + return ms + "ms"; + } + function fmtLong(ms) { + var msAbs = Math.abs(ms); + if (msAbs >= d) { + return plural(ms, msAbs, d, "day"); + } + if (msAbs >= h) { + return plural(ms, msAbs, h, "hour"); + } + if (msAbs >= m) { + return plural(ms, msAbs, m, "minute"); + } + if (msAbs >= s) { + return plural(ms, msAbs, s, "second"); + } + return ms + " ms"; + } + function plural(ms, msAbs, n, name5) { + var isPlural = msAbs >= n * 1.5; + return Math.round(ms / n) + " " + name5 + (isPlural ? "s" : ""); + } + } +}); + +// node_modules/logform/ms.js +var require_ms2 = __commonJS({ + "node_modules/logform/ms.js"(exports2, module2) { + "use strict"; + var format = require_format(); + var ms = require_ms(); + module2.exports = format((info) => { + const curr = +/* @__PURE__ */ new Date(); + exports2.diff = curr - (exports2.prevTime || curr); + exports2.prevTime = curr; + info.ms = `+${ms(exports2.diff)}`; + return info; + }); + } +}); + +// node_modules/logform/pretty-print.js +var require_pretty_print = __commonJS({ + "node_modules/logform/pretty-print.js"(exports2, module2) { + "use strict"; + var inspect2 = require("util").inspect; + var format = require_format(); + var { LEVEL, MESSAGE, SPLAT } = require_triple_beam(); + module2.exports = format((info, opts = {}) => { + const stripped = Object.assign({}, info); + delete stripped[LEVEL]; + delete stripped[MESSAGE]; + delete stripped[SPLAT]; + info[MESSAGE] = inspect2(stripped, false, opts.depth || null, opts.colorize); + return info; + }); + } +}); + +// node_modules/logform/printf.js +var require_printf = __commonJS({ + "node_modules/logform/printf.js"(exports2, module2) { + "use strict"; + var { MESSAGE } = require_triple_beam(); + var Printf = class { + constructor(templateFn) { + this.template = templateFn; + } + transform(info) { + info[MESSAGE] = this.template(info); + return info; + } + }; + module2.exports = (opts) => new Printf(opts); + module2.exports.Printf = module2.exports.Format = Printf; + } +}); + +// node_modules/logform/simple.js +var require_simple = __commonJS({ + "node_modules/logform/simple.js"(exports2, module2) { + "use strict"; + var format = require_format(); + var { MESSAGE } = require_triple_beam(); + var jsonStringify = require_safe_stable_stringify(); + module2.exports = format((info) => { + const stringifiedRest = jsonStringify(Object.assign({}, info, { + level: void 0, + message: void 0, + splat: void 0 + })); + const padding = info.padding && info.padding[info.level] || ""; + if (stringifiedRest !== "{}") { + info[MESSAGE] = `${info.level}:${padding} ${info.message} ${stringifiedRest}`; + } else { + info[MESSAGE] = `${info.level}:${padding} ${info.message}`; + } + return info; + }); + } +}); + +// node_modules/logform/splat.js +var require_splat = __commonJS({ + "node_modules/logform/splat.js"(exports2, module2) { + "use strict"; + var util3 = require("util"); + var { SPLAT } = require_triple_beam(); + var formatRegExp = /%[scdjifoO%]/g; + var escapedPercent = /%%/g; + var Splatter = class { + constructor(opts) { + this.options = opts; + } + /** + * Check to see if tokens <= splat.length, assign { splat, meta } into the + * `info` accordingly, and write to this instance. + * + * @param {Info} info Logform info message. + * @param {String[]} tokens Set of string interpolation tokens. + * @returns {Info} Modified info message + * @private + */ + _splat(info, tokens) { + const msg = info.message; + const splat = info[SPLAT] || info.splat || []; + const percents = msg.match(escapedPercent); + const escapes = percents && percents.length || 0; + const expectedSplat = tokens.length - escapes; + const extraSplat = expectedSplat - splat.length; + const metas = extraSplat < 0 ? splat.splice(extraSplat, -1 * extraSplat) : []; + const metalen = metas.length; + if (metalen) { + for (let i = 0; i < metalen; i++) { + Object.assign(info, metas[i]); + } + } + info.message = util3.format(msg, ...splat); + return info; + } + /** + * Transforms the `info` message by using `util.format` to complete + * any `info.message` provided it has string interpolation tokens. + * If no tokens exist then `info` is immutable. + * + * @param {Info} info Logform info message. + * @param {Object} opts Options for this instance. + * @returns {Info} Modified info message + */ + transform(info) { + const msg = info.message; + const splat = info[SPLAT] || info.splat; + if (!splat || !splat.length) { + return info; + } + const tokens = msg && msg.match && msg.match(formatRegExp); + if (!tokens && (splat || splat.length)) { + const metas = splat.length > 1 ? splat.splice(0) : splat; + const metalen = metas.length; + if (metalen) { + for (let i = 0; i < metalen; i++) { + Object.assign(info, metas[i]); + } + } + return info; + } + if (tokens) { + return this._splat(info, tokens); + } + return info; + } + }; + module2.exports = (opts) => new Splatter(opts); + } +}); + +// node_modules/fecha/lib/fecha.umd.js +var require_fecha_umd = __commonJS({ + "node_modules/fecha/lib/fecha.umd.js"(exports2, module2) { + (function(global2, factory) { + typeof exports2 === "object" && typeof module2 !== "undefined" ? factory(exports2) : typeof define === "function" && define.amd ? define(["exports"], factory) : factory(global2.fecha = {}); + })(exports2, (function(exports3) { + "use strict"; + var token = /d{1,4}|M{1,4}|YY(?:YY)?|S{1,3}|Do|ZZ|Z|([HhMsDm])\1?|[aA]|"[^"]*"|'[^']*'/g; + var twoDigitsOptional = "\\d\\d?"; + var twoDigits = "\\d\\d"; + var threeDigits = "\\d{3}"; + var fourDigits = "\\d{4}"; + var word = "[^\\s]+"; + var literal2 = /\[([^]*?)\]/gm; + function shorten(arr, sLen) { + var newArr = []; + for (var i = 0, len = arr.length; i < len; i++) { + newArr.push(arr[i].substr(0, sLen)); + } + return newArr; + } + var monthUpdate = function(arrName) { + return function(v, i18n) { + var lowerCaseArr = i18n[arrName].map(function(v2) { + return v2.toLowerCase(); + }); + var index = lowerCaseArr.indexOf(v.toLowerCase()); + if (index > -1) { + return index; + } + return null; + }; + }; + function assign(origObj) { + var args = []; + for (var _i = 1; _i < arguments.length; _i++) { + args[_i - 1] = arguments[_i]; + } + for (var _a = 0, args_1 = args; _a < args_1.length; _a++) { + var obj = args_1[_a]; + for (var key in obj) { + origObj[key] = obj[key]; + } + } + return origObj; + } + var dayNames = [ + "Sunday", + "Monday", + "Tuesday", + "Wednesday", + "Thursday", + "Friday", + "Saturday" + ]; + var monthNames = [ + "January", + "February", + "March", + "April", + "May", + "June", + "July", + "August", + "September", + "October", + "November", + "December" + ]; + var monthNamesShort = shorten(monthNames, 3); + var dayNamesShort = shorten(dayNames, 3); + var defaultI18n = { + dayNamesShort, + dayNames, + monthNamesShort, + monthNames, + amPm: ["am", "pm"], + DoFn: function(dayOfMonth) { + return dayOfMonth + ["th", "st", "nd", "rd"][dayOfMonth % 10 > 3 ? 0 : (dayOfMonth - dayOfMonth % 10 !== 10 ? 1 : 0) * dayOfMonth % 10]; + } + }; + var globalI18n = assign({}, defaultI18n); + var setGlobalDateI18n = function(i18n) { + return globalI18n = assign(globalI18n, i18n); + }; + var regexEscape = function(str) { + return str.replace(/[|\\{()[^$+*?.-]/g, "\\$&"); + }; + var pad = function(val, len) { + if (len === void 0) { + len = 2; + } + val = String(val); + while (val.length < len) { + val = "0" + val; + } + return val; + }; + var formatFlags = { + D: function(dateObj) { + return String(dateObj.getDate()); + }, + DD: function(dateObj) { + return pad(dateObj.getDate()); + }, + Do: function(dateObj, i18n) { + return i18n.DoFn(dateObj.getDate()); + }, + d: function(dateObj) { + return String(dateObj.getDay()); + }, + dd: function(dateObj) { + return pad(dateObj.getDay()); + }, + ddd: function(dateObj, i18n) { + return i18n.dayNamesShort[dateObj.getDay()]; + }, + dddd: function(dateObj, i18n) { + return i18n.dayNames[dateObj.getDay()]; + }, + M: function(dateObj) { + return String(dateObj.getMonth() + 1); + }, + MM: function(dateObj) { + return pad(dateObj.getMonth() + 1); + }, + MMM: function(dateObj, i18n) { + return i18n.monthNamesShort[dateObj.getMonth()]; + }, + MMMM: function(dateObj, i18n) { + return i18n.monthNames[dateObj.getMonth()]; + }, + YY: function(dateObj) { + return pad(String(dateObj.getFullYear()), 4).substr(2); + }, + YYYY: function(dateObj) { + return pad(dateObj.getFullYear(), 4); + }, + h: function(dateObj) { + return String(dateObj.getHours() % 12 || 12); + }, + hh: function(dateObj) { + return pad(dateObj.getHours() % 12 || 12); + }, + H: function(dateObj) { + return String(dateObj.getHours()); + }, + HH: function(dateObj) { + return pad(dateObj.getHours()); + }, + m: function(dateObj) { + return String(dateObj.getMinutes()); + }, + mm: function(dateObj) { + return pad(dateObj.getMinutes()); + }, + s: function(dateObj) { + return String(dateObj.getSeconds()); + }, + ss: function(dateObj) { + return pad(dateObj.getSeconds()); + }, + S: function(dateObj) { + return String(Math.round(dateObj.getMilliseconds() / 100)); + }, + SS: function(dateObj) { + return pad(Math.round(dateObj.getMilliseconds() / 10), 2); + }, + SSS: function(dateObj) { + return pad(dateObj.getMilliseconds(), 3); + }, + a: function(dateObj, i18n) { + return dateObj.getHours() < 12 ? i18n.amPm[0] : i18n.amPm[1]; + }, + A: function(dateObj, i18n) { + return dateObj.getHours() < 12 ? i18n.amPm[0].toUpperCase() : i18n.amPm[1].toUpperCase(); + }, + ZZ: function(dateObj) { + var offset = dateObj.getTimezoneOffset(); + return (offset > 0 ? "-" : "+") + pad(Math.floor(Math.abs(offset) / 60) * 100 + Math.abs(offset) % 60, 4); + }, + Z: function(dateObj) { + var offset = dateObj.getTimezoneOffset(); + return (offset > 0 ? "-" : "+") + pad(Math.floor(Math.abs(offset) / 60), 2) + ":" + pad(Math.abs(offset) % 60, 2); + } + }; + var monthParse = function(v) { + return +v - 1; + }; + var emptyDigits = [null, twoDigitsOptional]; + var emptyWord = [null, word]; + var amPm = [ + "isPm", + word, + function(v, i18n) { + var val = v.toLowerCase(); + if (val === i18n.amPm[0]) { + return 0; + } else if (val === i18n.amPm[1]) { + return 1; + } + return null; + } + ]; + var timezoneOffset = [ + "timezoneOffset", + "[^\\s]*?[\\+\\-]\\d\\d:?\\d\\d|[^\\s]*?Z?", + function(v) { + var parts = (v + "").match(/([+-]|\d\d)/gi); + if (parts) { + var minutes = +parts[1] * 60 + parseInt(parts[2], 10); + return parts[0] === "+" ? minutes : -minutes; + } + return 0; + } + ]; + var parseFlags = { + D: ["day", twoDigitsOptional], + DD: ["day", twoDigits], + Do: ["day", twoDigitsOptional + word, function(v) { + return parseInt(v, 10); + }], + M: ["month", twoDigitsOptional, monthParse], + MM: ["month", twoDigits, monthParse], + YY: [ + "year", + twoDigits, + function(v) { + var now = /* @__PURE__ */ new Date(); + var cent = +("" + now.getFullYear()).substr(0, 2); + return +("" + (+v > 68 ? cent - 1 : cent) + v); + } + ], + h: ["hour", twoDigitsOptional, void 0, "isPm"], + hh: ["hour", twoDigits, void 0, "isPm"], + H: ["hour", twoDigitsOptional], + HH: ["hour", twoDigits], + m: ["minute", twoDigitsOptional], + mm: ["minute", twoDigits], + s: ["second", twoDigitsOptional], + ss: ["second", twoDigits], + YYYY: ["year", fourDigits], + S: ["millisecond", "\\d", function(v) { + return +v * 100; + }], + SS: ["millisecond", twoDigits, function(v) { + return +v * 10; + }], + SSS: ["millisecond", threeDigits], + d: emptyDigits, + dd: emptyDigits, + ddd: emptyWord, + dddd: emptyWord, + MMM: ["month", word, monthUpdate("monthNamesShort")], + MMMM: ["month", word, monthUpdate("monthNames")], + a: amPm, + A: amPm, + ZZ: timezoneOffset, + Z: timezoneOffset + }; + var globalMasks = { + default: "ddd MMM DD YYYY HH:mm:ss", + shortDate: "M/D/YY", + mediumDate: "MMM D, YYYY", + longDate: "MMMM D, YYYY", + fullDate: "dddd, MMMM D, YYYY", + isoDate: "YYYY-MM-DD", + isoDateTime: "YYYY-MM-DDTHH:mm:ssZ", + shortTime: "HH:mm", + mediumTime: "HH:mm:ss", + longTime: "HH:mm:ss.SSS" + }; + var setGlobalDateMasks = function(masks) { + return assign(globalMasks, masks); + }; + var format = function(dateObj, mask, i18n) { + if (mask === void 0) { + mask = globalMasks["default"]; + } + if (i18n === void 0) { + i18n = {}; + } + if (typeof dateObj === "number") { + dateObj = new Date(dateObj); + } + if (Object.prototype.toString.call(dateObj) !== "[object Date]" || isNaN(dateObj.getTime())) { + throw new Error("Invalid Date pass to format"); + } + mask = globalMasks[mask] || mask; + var literals = []; + mask = mask.replace(literal2, function($0, $1) { + literals.push($1); + return "@@@"; + }); + var combinedI18nSettings = assign(assign({}, globalI18n), i18n); + mask = mask.replace(token, function($0) { + return formatFlags[$0](dateObj, combinedI18nSettings); + }); + return mask.replace(/@@@/g, function() { + return literals.shift(); + }); + }; + function parse4(dateStr, format2, i18n) { + if (i18n === void 0) { + i18n = {}; + } + if (typeof format2 !== "string") { + throw new Error("Invalid format in fecha parse"); + } + format2 = globalMasks[format2] || format2; + if (dateStr.length > 1e3) { + return null; + } + var today = /* @__PURE__ */ new Date(); + var dateInfo = { + year: today.getFullYear(), + month: 0, + day: 1, + hour: 0, + minute: 0, + second: 0, + millisecond: 0, + isPm: null, + timezoneOffset: null + }; + var parseInfo = []; + var literals = []; + var newFormat = format2.replace(literal2, function($0, $1) { + literals.push(regexEscape($1)); + return "@@@"; + }); + var specifiedFields = {}; + var requiredFields = {}; + newFormat = regexEscape(newFormat).replace(token, function($0) { + var info = parseFlags[$0]; + var field2 = info[0], regex = info[1], requiredField = info[3]; + if (specifiedFields[field2]) { + throw new Error("Invalid format. " + field2 + " specified twice in format"); + } + specifiedFields[field2] = true; + if (requiredField) { + requiredFields[requiredField] = true; + } + parseInfo.push(info); + return "(" + regex + ")"; + }); + Object.keys(requiredFields).forEach(function(field2) { + if (!specifiedFields[field2]) { + throw new Error("Invalid format. " + field2 + " is required in specified format"); + } + }); + newFormat = newFormat.replace(/@@@/g, function() { + return literals.shift(); + }); + var matches = dateStr.match(new RegExp(newFormat, "i")); + if (!matches) { + return null; + } + var combinedI18nSettings = assign(assign({}, globalI18n), i18n); + for (var i = 1; i < matches.length; i++) { + var _a = parseInfo[i - 1], field = _a[0], parser = _a[2]; + var value = parser ? parser(matches[i], combinedI18nSettings) : +matches[i]; + if (value == null) { + return null; + } + dateInfo[field] = value; + } + if (dateInfo.isPm === 1 && dateInfo.hour != null && +dateInfo.hour !== 12) { + dateInfo.hour = +dateInfo.hour + 12; + } else if (dateInfo.isPm === 0 && +dateInfo.hour === 12) { + dateInfo.hour = 0; + } + var dateTZ; + if (dateInfo.timezoneOffset == null) { + dateTZ = new Date(dateInfo.year, dateInfo.month, dateInfo.day, dateInfo.hour, dateInfo.minute, dateInfo.second, dateInfo.millisecond); + var validateFields = [ + ["month", "getMonth"], + ["day", "getDate"], + ["hour", "getHours"], + ["minute", "getMinutes"], + ["second", "getSeconds"] + ]; + for (var i = 0, len = validateFields.length; i < len; i++) { + if (specifiedFields[validateFields[i][0]] && dateInfo[validateFields[i][0]] !== dateTZ[validateFields[i][1]]()) { + return null; + } + } + } else { + dateTZ = new Date(Date.UTC(dateInfo.year, dateInfo.month, dateInfo.day, dateInfo.hour, dateInfo.minute - dateInfo.timezoneOffset, dateInfo.second, dateInfo.millisecond)); + if (dateInfo.month > 11 || dateInfo.month < 0 || dateInfo.day > 31 || dateInfo.day < 1 || dateInfo.hour > 23 || dateInfo.hour < 0 || dateInfo.minute > 59 || dateInfo.minute < 0 || dateInfo.second > 59 || dateInfo.second < 0) { + return null; + } + } + return dateTZ; + } + var fecha = { + format, + parse: parse4, + defaultI18n, + setGlobalDateI18n, + setGlobalDateMasks + }; + exports3.assign = assign; + exports3.default = fecha; + exports3.format = format; + exports3.parse = parse4; + exports3.defaultI18n = defaultI18n; + exports3.setGlobalDateI18n = setGlobalDateI18n; + exports3.setGlobalDateMasks = setGlobalDateMasks; + Object.defineProperty(exports3, "__esModule", { value: true }); + })); + } +}); + +// node_modules/logform/timestamp.js +var require_timestamp = __commonJS({ + "node_modules/logform/timestamp.js"(exports2, module2) { + "use strict"; + var fecha = require_fecha_umd(); + var format = require_format(); + module2.exports = format((info, opts = {}) => { + if (opts.format) { + info.timestamp = typeof opts.format === "function" ? opts.format() : fecha.format(/* @__PURE__ */ new Date(), opts.format); + } + if (!info.timestamp) { + info.timestamp = (/* @__PURE__ */ new Date()).toISOString(); + } + if (opts.alias) { + info[opts.alias] = info.timestamp; + } + return info; + }); + } +}); + +// node_modules/logform/uncolorize.js +var require_uncolorize = __commonJS({ + "node_modules/logform/uncolorize.js"(exports2, module2) { + "use strict"; + var colors = require_safe(); + var format = require_format(); + var { MESSAGE } = require_triple_beam(); + module2.exports = format((info, opts) => { + if (opts.level !== false) { + info.level = colors.strip(info.level); + } + if (opts.message !== false) { + info.message = colors.strip(String(info.message)); + } + if (opts.raw !== false && info[MESSAGE]) { + info[MESSAGE] = colors.strip(String(info[MESSAGE])); + } + return info; + }); + } +}); + +// node_modules/logform/index.js +var require_logform = __commonJS({ + "node_modules/logform/index.js"(exports2) { + "use strict"; + var format = exports2.format = require_format(); + exports2.levels = require_levels(); + function exposeFormat(name5, requireFormat) { + Object.defineProperty(format, name5, { + get() { + return requireFormat(); + }, + configurable: true + }); + } + exposeFormat("align", function() { + return require_align(); + }); + exposeFormat("errors", function() { + return require_errors(); + }); + exposeFormat("cli", function() { + return require_cli2(); + }); + exposeFormat("combine", function() { + return require_combine(); + }); + exposeFormat("colorize", function() { + return require_colorize(); + }); + exposeFormat("json", function() { + return require_json(); + }); + exposeFormat("label", function() { + return require_label(); + }); + exposeFormat("logstash", function() { + return require_logstash(); + }); + exposeFormat("metadata", function() { + return require_metadata(); + }); + exposeFormat("ms", function() { + return require_ms2(); + }); + exposeFormat("padLevels", function() { + return require_pad_levels(); + }); + exposeFormat("prettyPrint", function() { + return require_pretty_print(); + }); + exposeFormat("printf", function() { + return require_printf(); + }); + exposeFormat("simple", function() { + return require_simple(); + }); + exposeFormat("splat", function() { + return require_splat(); + }); + exposeFormat("timestamp", function() { + return require_timestamp(); + }); + exposeFormat("uncolorize", function() { + return require_uncolorize(); + }); + } +}); + +// node_modules/winston/lib/winston/common.js +var require_common = __commonJS({ + "node_modules/winston/lib/winston/common.js"(exports2) { + "use strict"; + var { format } = require("util"); + exports2.warn = { + deprecated(prop) { + return () => { + throw new Error(format("{ %s } was removed in winston@3.0.0.", prop)); + }; + }, + useFormat(prop) { + return () => { + throw new Error([ + format("{ %s } was removed in winston@3.0.0.", prop), + "Use a custom winston.format = winston.format(function) instead." + ].join("\n")); + }; + }, + forFunctions(obj, type, props) { + props.forEach((prop) => { + obj[prop] = exports2.warn[type](prop); + }); + }, + forProperties(obj, type, props) { + props.forEach((prop) => { + const notice = exports2.warn[type](prop); + Object.defineProperty(obj, prop, { + get: notice, + set: notice + }); + }); + } + }; + } +}); + +// node_modules/winston/package.json +var require_package = __commonJS({ + "node_modules/winston/package.json"(exports2, module2) { + module2.exports = { + name: "winston", + description: "A logger for just about everything.", + version: "3.19.0", + author: "Charlie Robbins ", + maintainers: [ + "David Hyde " + ], + repository: { + type: "git", + url: "https://github.com/winstonjs/winston.git" + }, + keywords: [ + "winston", + "logger", + "logging", + "logs", + "sysadmin", + "bunyan", + "pino", + "loglevel", + "tools", + "json", + "stream" + ], + dependencies: { + "@dabh/diagnostics": "^2.0.8", + "@colors/colors": "^1.6.0", + async: "^3.2.3", + "is-stream": "^2.0.0", + logform: "^2.7.0", + "one-time": "^1.0.0", + "readable-stream": "^3.4.0", + "safe-stable-stringify": "^2.3.1", + "stack-trace": "0.0.x", + "triple-beam": "^1.3.0", + "winston-transport": "^4.9.0" + }, + devDependencies: { + "@babel/cli": "^7.23.9", + "@babel/core": "^7.24.0", + "@babel/preset-env": "^7.24.0", + "@dabh/eslint-config-populist": "^4.4.0", + "@types/node": "^20.11.24", + "abstract-winston-transport": "^0.5.1", + assume: "^2.2.0", + "cross-spawn-async": "^2.2.5", + eslint: "^8.57.0", + hock: "^1.4.1", + jest: "^29.7.0", + rimraf: "5.0.10", + split2: "^4.1.0", + "std-mocks": "^2.0.0", + through2: "^4.0.2", + "winston-compat": "^0.1.5" + }, + main: "./lib/winston.js", + browser: "./dist/winston", + types: "./index.d.ts", + scripts: { + lint: "eslint lib/*.js lib/winston/*.js lib/winston/**/*.js --resolve-plugins-relative-to ./node_modules/@dabh/eslint-config-populist", + test: "jest", + "test:unit": "jest -c test/jest.config.unit.js", + "test:integration": "jest -c test/jest.config.integration.js", + "test:typescript": "npx --package typescript tsc --project test", + build: "babel lib -d dist", + prebuild: "rimraf dist", + prepublishOnly: "npm run build" + }, + engines: { + node: ">= 12.0.0" + }, + license: "MIT" + }; + } +}); + +// node_modules/util-deprecate/node.js +var require_node = __commonJS({ + "node_modules/util-deprecate/node.js"(exports2, module2) { + module2.exports = require("util").deprecate; + } +}); + +// node_modules/readable-stream/lib/internal/streams/stream.js +var require_stream = __commonJS({ + "node_modules/readable-stream/lib/internal/streams/stream.js"(exports2, module2) { + module2.exports = require("stream"); + } +}); + +// node_modules/readable-stream/lib/internal/streams/destroy.js +var require_destroy = __commonJS({ + "node_modules/readable-stream/lib/internal/streams/destroy.js"(exports2, module2) { + "use strict"; + function destroy2(err, cb) { + var _this = this; + var readableDestroyed = this._readableState && this._readableState.destroyed; + var writableDestroyed = this._writableState && this._writableState.destroyed; + if (readableDestroyed || writableDestroyed) { + if (cb) { + cb(err); + } else if (err) { + if (!this._writableState) { + process.nextTick(emitErrorNT, this, err); + } else if (!this._writableState.errorEmitted) { + this._writableState.errorEmitted = true; + process.nextTick(emitErrorNT, this, err); + } + } + return this; + } + if (this._readableState) { + this._readableState.destroyed = true; + } + if (this._writableState) { + this._writableState.destroyed = true; + } + this._destroy(err || null, function(err2) { + if (!cb && err2) { + if (!_this._writableState) { + process.nextTick(emitErrorAndCloseNT, _this, err2); + } else if (!_this._writableState.errorEmitted) { + _this._writableState.errorEmitted = true; + process.nextTick(emitErrorAndCloseNT, _this, err2); + } else { + process.nextTick(emitCloseNT, _this); + } + } else if (cb) { + process.nextTick(emitCloseNT, _this); + cb(err2); + } else { + process.nextTick(emitCloseNT, _this); + } + }); + return this; + } + function emitErrorAndCloseNT(self2, err) { + emitErrorNT(self2, err); + emitCloseNT(self2); + } + function emitCloseNT(self2) { + if (self2._writableState && !self2._writableState.emitClose) return; + if (self2._readableState && !self2._readableState.emitClose) return; + self2.emit("close"); + } + function undestroy() { + if (this._readableState) { + this._readableState.destroyed = false; + this._readableState.reading = false; + this._readableState.ended = false; + this._readableState.endEmitted = false; + } + if (this._writableState) { + this._writableState.destroyed = false; + this._writableState.ended = false; + this._writableState.ending = false; + this._writableState.finalCalled = false; + this._writableState.prefinished = false; + this._writableState.finished = false; + this._writableState.errorEmitted = false; + } + } + function emitErrorNT(self2, err) { + self2.emit("error", err); + } + function errorOrDestroy(stream, err) { + var rState = stream._readableState; + var wState = stream._writableState; + if (rState && rState.autoDestroy || wState && wState.autoDestroy) stream.destroy(err); + else stream.emit("error", err); + } + module2.exports = { + destroy: destroy2, + undestroy, + errorOrDestroy + }; + } +}); + +// node_modules/readable-stream/errors.js +var require_errors2 = __commonJS({ + "node_modules/readable-stream/errors.js"(exports2, module2) { + "use strict"; + var codes = {}; + function createErrorType(code, message, Base) { + if (!Base) { + Base = Error; + } + function getMessage(arg1, arg2, arg3) { + if (typeof message === "string") { + return message; + } else { + return message(arg1, arg2, arg3); + } + } + class NodeError extends Base { + constructor(arg1, arg2, arg3) { + super(getMessage(arg1, arg2, arg3)); + } + } + NodeError.prototype.name = Base.name; + NodeError.prototype.code = code; + codes[code] = NodeError; + } + function oneOf(expected, thing) { + if (Array.isArray(expected)) { + const len = expected.length; + expected = expected.map((i) => String(i)); + if (len > 2) { + return `one of ${thing} ${expected.slice(0, len - 1).join(", ")}, or ` + expected[len - 1]; + } else if (len === 2) { + return `one of ${thing} ${expected[0]} or ${expected[1]}`; + } else { + return `of ${thing} ${expected[0]}`; + } + } else { + return `of ${thing} ${String(expected)}`; + } + } + function startsWith(str, search, pos) { + return str.substr(!pos || pos < 0 ? 0 : +pos, search.length) === search; + } + function endsWith(str, search, this_len) { + if (this_len === void 0 || this_len > str.length) { + this_len = str.length; + } + return str.substring(this_len - search.length, this_len) === search; + } + function includes(str, search, start) { + if (typeof start !== "number") { + start = 0; + } + if (start + search.length > str.length) { + return false; + } else { + return str.indexOf(search, start) !== -1; + } + } + createErrorType("ERR_INVALID_OPT_VALUE", function(name5, value) { + return 'The value "' + value + '" is invalid for option "' + name5 + '"'; + }, TypeError); + createErrorType("ERR_INVALID_ARG_TYPE", function(name5, expected, actual) { + let determiner; + if (typeof expected === "string" && startsWith(expected, "not ")) { + determiner = "must not be"; + expected = expected.replace(/^not /, ""); + } else { + determiner = "must be"; + } + let msg; + if (endsWith(name5, " argument")) { + msg = `The ${name5} ${determiner} ${oneOf(expected, "type")}`; + } else { + const type = includes(name5, ".") ? "property" : "argument"; + msg = `The "${name5}" ${type} ${determiner} ${oneOf(expected, "type")}`; + } + msg += `. Received type ${typeof actual}`; + return msg; + }, TypeError); + createErrorType("ERR_STREAM_PUSH_AFTER_EOF", "stream.push() after EOF"); + createErrorType("ERR_METHOD_NOT_IMPLEMENTED", function(name5) { + return "The " + name5 + " method is not implemented"; + }); + createErrorType("ERR_STREAM_PREMATURE_CLOSE", "Premature close"); + createErrorType("ERR_STREAM_DESTROYED", function(name5) { + return "Cannot call " + name5 + " after a stream was destroyed"; + }); + createErrorType("ERR_MULTIPLE_CALLBACK", "Callback called multiple times"); + createErrorType("ERR_STREAM_CANNOT_PIPE", "Cannot pipe, not readable"); + createErrorType("ERR_STREAM_WRITE_AFTER_END", "write after end"); + createErrorType("ERR_STREAM_NULL_VALUES", "May not write null values to stream", TypeError); + createErrorType("ERR_UNKNOWN_ENCODING", function(arg) { + return "Unknown encoding: " + arg; + }, TypeError); + createErrorType("ERR_STREAM_UNSHIFT_AFTER_END_EVENT", "stream.unshift() after end event"); + module2.exports.codes = codes; + } +}); + +// node_modules/readable-stream/lib/internal/streams/state.js +var require_state = __commonJS({ + "node_modules/readable-stream/lib/internal/streams/state.js"(exports2, module2) { + "use strict"; + var ERR_INVALID_OPT_VALUE = require_errors2().codes.ERR_INVALID_OPT_VALUE; + function highWaterMarkFrom(options, isDuplex, duplexKey) { + return options.highWaterMark != null ? options.highWaterMark : isDuplex ? options[duplexKey] : null; + } + function getHighWaterMark(state3, options, duplexKey, isDuplex) { + var hwm = highWaterMarkFrom(options, isDuplex, duplexKey); + if (hwm != null) { + if (!(isFinite(hwm) && Math.floor(hwm) === hwm) || hwm < 0) { + var name5 = isDuplex ? duplexKey : "highWaterMark"; + throw new ERR_INVALID_OPT_VALUE(name5, hwm); + } + return Math.floor(hwm); + } + return state3.objectMode ? 16 : 16 * 1024; + } + module2.exports = { + getHighWaterMark + }; + } +}); + +// node_modules/inherits/inherits_browser.js +var require_inherits_browser = __commonJS({ + "node_modules/inherits/inherits_browser.js"(exports2, module2) { + if (typeof Object.create === "function") { + module2.exports = function inherits(ctor, superCtor) { + if (superCtor) { + ctor.super_ = superCtor; + ctor.prototype = Object.create(superCtor.prototype, { + constructor: { + value: ctor, + enumerable: false, + writable: true, + configurable: true + } + }); + } + }; + } else { + module2.exports = function inherits(ctor, superCtor) { + if (superCtor) { + ctor.super_ = superCtor; + var TempCtor = function() { + }; + TempCtor.prototype = superCtor.prototype; + ctor.prototype = new TempCtor(); + ctor.prototype.constructor = ctor; + } + }; + } + } +}); + +// node_modules/inherits/inherits.js +var require_inherits = __commonJS({ + "node_modules/inherits/inherits.js"(exports2, module2) { + try { + util3 = require("util"); + if (typeof util3.inherits !== "function") throw ""; + module2.exports = util3.inherits; + } catch (e) { + module2.exports = require_inherits_browser(); + } + var util3; + } +}); + +// node_modules/readable-stream/lib/internal/streams/buffer_list.js +var require_buffer_list = __commonJS({ + "node_modules/readable-stream/lib/internal/streams/buffer_list.js"(exports2, module2) { + "use strict"; + function ownKeys(object3, enumerableOnly) { + var keys = Object.keys(object3); + if (Object.getOwnPropertySymbols) { + var symbols = Object.getOwnPropertySymbols(object3); + enumerableOnly && (symbols = symbols.filter(function(sym) { + return Object.getOwnPropertyDescriptor(object3, sym).enumerable; + })), keys.push.apply(keys, symbols); + } + return keys; + } + function _objectSpread(target) { + for (var i = 1; i < arguments.length; i++) { + var source = null != arguments[i] ? arguments[i] : {}; + i % 2 ? ownKeys(Object(source), true).forEach(function(key) { + _defineProperty(target, key, source[key]); + }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function(key) { + Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); + }); + } + return target; + } + function _defineProperty(obj, key, value) { + key = _toPropertyKey(key); + if (key in obj) { + Object.defineProperty(obj, key, { value, enumerable: true, configurable: true, writable: true }); + } else { + obj[key] = value; + } + return obj; + } + function _classCallCheck(instance, Constructor) { + if (!(instance instanceof Constructor)) { + throw new TypeError("Cannot call a class as a function"); + } + } + function _defineProperties(target, props) { + for (var i = 0; i < props.length; i++) { + var descriptor = props[i]; + descriptor.enumerable = descriptor.enumerable || false; + descriptor.configurable = true; + if ("value" in descriptor) descriptor.writable = true; + Object.defineProperty(target, _toPropertyKey(descriptor.key), descriptor); + } + } + function _createClass(Constructor, protoProps, staticProps) { + if (protoProps) _defineProperties(Constructor.prototype, protoProps); + if (staticProps) _defineProperties(Constructor, staticProps); + Object.defineProperty(Constructor, "prototype", { writable: false }); + return Constructor; + } + function _toPropertyKey(arg) { + var key = _toPrimitive(arg, "string"); + return typeof key === "symbol" ? key : String(key); + } + function _toPrimitive(input, hint) { + if (typeof input !== "object" || input === null) return input; + var prim = input[Symbol.toPrimitive]; + if (prim !== void 0) { + var res = prim.call(input, hint || "default"); + if (typeof res !== "object") return res; + throw new TypeError("@@toPrimitive must return a primitive value."); + } + return (hint === "string" ? String : Number)(input); + } + var _require = require("buffer"); + var Buffer5 = _require.Buffer; + var _require2 = require("util"); + var inspect2 = _require2.inspect; + var custom4 = inspect2 && inspect2.custom || "inspect"; + function copyBuffer(src, target, offset) { + Buffer5.prototype.copy.call(src, target, offset); + } + module2.exports = /* @__PURE__ */ (function() { + function BufferList() { + _classCallCheck(this, BufferList); + this.head = null; + this.tail = null; + this.length = 0; + } + _createClass(BufferList, [{ + key: "push", + value: function push(v) { + var entry = { + data: v, + next: null + }; + if (this.length > 0) this.tail.next = entry; + else this.head = entry; + this.tail = entry; + ++this.length; + } + }, { + key: "unshift", + value: function unshift(v) { + var entry = { + data: v, + next: this.head + }; + if (this.length === 0) this.tail = entry; + this.head = entry; + ++this.length; + } + }, { + key: "shift", + value: function shift() { + if (this.length === 0) return; + var ret = this.head.data; + if (this.length === 1) this.head = this.tail = null; + else this.head = this.head.next; + --this.length; + return ret; + } + }, { + key: "clear", + value: function clear() { + this.head = this.tail = null; + this.length = 0; + } + }, { + key: "join", + value: function join(s) { + if (this.length === 0) return ""; + var p = this.head; + var ret = "" + p.data; + while (p = p.next) ret += s + p.data; + return ret; + } + }, { + key: "concat", + value: function concat2(n) { + if (this.length === 0) return Buffer5.alloc(0); + var ret = Buffer5.allocUnsafe(n >>> 0); + var p = this.head; + var i = 0; + while (p) { + copyBuffer(p.data, ret, i); + i += p.data.length; + p = p.next; + } + return ret; + } + // Consumes a specified amount of bytes or characters from the buffered data. + }, { + key: "consume", + value: function consume(n, hasStrings) { + var ret; + if (n < this.head.data.length) { + ret = this.head.data.slice(0, n); + this.head.data = this.head.data.slice(n); + } else if (n === this.head.data.length) { + ret = this.shift(); + } else { + ret = hasStrings ? this._getString(n) : this._getBuffer(n); + } + return ret; + } + }, { + key: "first", + value: function first() { + return this.head.data; + } + // Consumes a specified amount of characters from the buffered data. + }, { + key: "_getString", + value: function _getString(n) { + var p = this.head; + var c = 1; + var ret = p.data; + n -= ret.length; + while (p = p.next) { + var str = p.data; + var nb = n > str.length ? str.length : n; + if (nb === str.length) ret += str; + else ret += str.slice(0, n); + n -= nb; + if (n === 0) { + if (nb === str.length) { + ++c; + if (p.next) this.head = p.next; + else this.head = this.tail = null; + } else { + this.head = p; + p.data = str.slice(nb); + } + break; + } + ++c; + } + this.length -= c; + return ret; + } + // Consumes a specified amount of bytes from the buffered data. + }, { + key: "_getBuffer", + value: function _getBuffer(n) { + var ret = Buffer5.allocUnsafe(n); + var p = this.head; + var c = 1; + p.data.copy(ret); + n -= p.data.length; + while (p = p.next) { + var buf = p.data; + var nb = n > buf.length ? buf.length : n; + buf.copy(ret, ret.length - n, 0, nb); + n -= nb; + if (n === 0) { + if (nb === buf.length) { + ++c; + if (p.next) this.head = p.next; + else this.head = this.tail = null; + } else { + this.head = p; + p.data = buf.slice(nb); + } + break; + } + ++c; + } + this.length -= c; + return ret; + } + // Make sure the linked list only shows the minimal necessary information. + }, { + key: custom4, + value: function value(_, options) { + return inspect2(this, _objectSpread(_objectSpread({}, options), {}, { + // Only inspect one level. + depth: 0, + // It should not recurse. + customInspect: false + })); + } + }]); + return BufferList; + })(); + } +}); + +// node_modules/safe-buffer/index.js +var require_safe_buffer = __commonJS({ + "node_modules/safe-buffer/index.js"(exports2, module2) { + var buffer = require("buffer"); + var Buffer5 = buffer.Buffer; + function copyProps(src, dst) { + for (var key in src) { + dst[key] = src[key]; + } + } + if (Buffer5.from && Buffer5.alloc && Buffer5.allocUnsafe && Buffer5.allocUnsafeSlow) { + module2.exports = buffer; + } else { + copyProps(buffer, exports2); + exports2.Buffer = SafeBuffer; + } + function SafeBuffer(arg, encodingOrOffset, length) { + return Buffer5(arg, encodingOrOffset, length); + } + SafeBuffer.prototype = Object.create(Buffer5.prototype); + copyProps(Buffer5, SafeBuffer); + SafeBuffer.from = function(arg, encodingOrOffset, length) { + if (typeof arg === "number") { + throw new TypeError("Argument must not be a number"); + } + return Buffer5(arg, encodingOrOffset, length); + }; + SafeBuffer.alloc = function(size, fill, encoding) { + if (typeof size !== "number") { + throw new TypeError("Argument must be a number"); + } + var buf = Buffer5(size); + if (fill !== void 0) { + if (typeof encoding === "string") { + buf.fill(fill, encoding); + } else { + buf.fill(fill); + } + } else { + buf.fill(0); + } + return buf; + }; + SafeBuffer.allocUnsafe = function(size) { + if (typeof size !== "number") { + throw new TypeError("Argument must be a number"); + } + return Buffer5(size); + }; + SafeBuffer.allocUnsafeSlow = function(size) { + if (typeof size !== "number") { + throw new TypeError("Argument must be a number"); + } + return buffer.SlowBuffer(size); + }; + } +}); + +// node_modules/string_decoder/lib/string_decoder.js +var require_string_decoder = __commonJS({ + "node_modules/string_decoder/lib/string_decoder.js"(exports2) { + "use strict"; + var Buffer5 = require_safe_buffer().Buffer; + var isEncoding = Buffer5.isEncoding || function(encoding) { + encoding = "" + encoding; + switch (encoding && encoding.toLowerCase()) { + case "hex": + case "utf8": + case "utf-8": + case "ascii": + case "binary": + case "base64": + case "ucs2": + case "ucs-2": + case "utf16le": + case "utf-16le": + case "raw": + return true; + default: + return false; + } + }; + function _normalizeEncoding(enc) { + if (!enc) return "utf8"; + var retried; + while (true) { + switch (enc) { + case "utf8": + case "utf-8": + return "utf8"; + case "ucs2": + case "ucs-2": + case "utf16le": + case "utf-16le": + return "utf16le"; + case "latin1": + case "binary": + return "latin1"; + case "base64": + case "ascii": + case "hex": + return enc; + default: + if (retried) return; + enc = ("" + enc).toLowerCase(); + retried = true; + } + } + } + function normalizeEncoding(enc) { + var nenc = _normalizeEncoding(enc); + if (typeof nenc !== "string" && (Buffer5.isEncoding === isEncoding || !isEncoding(enc))) throw new Error("Unknown encoding: " + enc); + return nenc || enc; + } + exports2.StringDecoder = StringDecoder; + function StringDecoder(encoding) { + this.encoding = normalizeEncoding(encoding); + var nb; + switch (this.encoding) { + case "utf16le": + this.text = utf16Text; + this.end = utf16End; + nb = 4; + break; + case "utf8": + this.fillLast = utf8FillLast; + nb = 4; + break; + case "base64": + this.text = base64Text; + this.end = base64End; + nb = 3; + break; + default: + this.write = simpleWrite; + this.end = simpleEnd; + return; + } + this.lastNeed = 0; + this.lastTotal = 0; + this.lastChar = Buffer5.allocUnsafe(nb); + } + StringDecoder.prototype.write = function(buf) { + if (buf.length === 0) return ""; + var r; + var i; + if (this.lastNeed) { + r = this.fillLast(buf); + if (r === void 0) return ""; + i = this.lastNeed; + this.lastNeed = 0; + } else { + i = 0; + } + if (i < buf.length) return r ? r + this.text(buf, i) : this.text(buf, i); + return r || ""; + }; + StringDecoder.prototype.end = utf8End; + StringDecoder.prototype.text = utf8Text; + StringDecoder.prototype.fillLast = function(buf) { + if (this.lastNeed <= buf.length) { + buf.copy(this.lastChar, this.lastTotal - this.lastNeed, 0, this.lastNeed); + return this.lastChar.toString(this.encoding, 0, this.lastTotal); + } + buf.copy(this.lastChar, this.lastTotal - this.lastNeed, 0, buf.length); + this.lastNeed -= buf.length; + }; + function utf8CheckByte(byte) { + if (byte <= 127) return 0; + else if (byte >> 5 === 6) return 2; + else if (byte >> 4 === 14) return 3; + else if (byte >> 3 === 30) return 4; + return byte >> 6 === 2 ? -1 : -2; + } + function utf8CheckIncomplete(self2, buf, i) { + var j = buf.length - 1; + if (j < i) return 0; + var nb = utf8CheckByte(buf[j]); + if (nb >= 0) { + if (nb > 0) self2.lastNeed = nb - 1; + return nb; + } + if (--j < i || nb === -2) return 0; + nb = utf8CheckByte(buf[j]); + if (nb >= 0) { + if (nb > 0) self2.lastNeed = nb - 2; + return nb; + } + if (--j < i || nb === -2) return 0; + nb = utf8CheckByte(buf[j]); + if (nb >= 0) { + if (nb > 0) { + if (nb === 2) nb = 0; + else self2.lastNeed = nb - 3; + } + return nb; + } + return 0; + } + function utf8CheckExtraBytes(self2, buf, p) { + if ((buf[0] & 192) !== 128) { + self2.lastNeed = 0; + return "\uFFFD"; + } + if (self2.lastNeed > 1 && buf.length > 1) { + if ((buf[1] & 192) !== 128) { + self2.lastNeed = 1; + return "\uFFFD"; + } + if (self2.lastNeed > 2 && buf.length > 2) { + if ((buf[2] & 192) !== 128) { + self2.lastNeed = 2; + return "\uFFFD"; + } + } + } + } + function utf8FillLast(buf) { + var p = this.lastTotal - this.lastNeed; + var r = utf8CheckExtraBytes(this, buf, p); + if (r !== void 0) return r; + if (this.lastNeed <= buf.length) { + buf.copy(this.lastChar, p, 0, this.lastNeed); + return this.lastChar.toString(this.encoding, 0, this.lastTotal); + } + buf.copy(this.lastChar, p, 0, buf.length); + this.lastNeed -= buf.length; + } + function utf8Text(buf, i) { + var total = utf8CheckIncomplete(this, buf, i); + if (!this.lastNeed) return buf.toString("utf8", i); + this.lastTotal = total; + var end = buf.length - (total - this.lastNeed); + buf.copy(this.lastChar, 0, end); + return buf.toString("utf8", i, end); + } + function utf8End(buf) { + var r = buf && buf.length ? this.write(buf) : ""; + if (this.lastNeed) return r + "\uFFFD"; + return r; + } + function utf16Text(buf, i) { + if ((buf.length - i) % 2 === 0) { + var r = buf.toString("utf16le", i); + if (r) { + var c = r.charCodeAt(r.length - 1); + if (c >= 55296 && c <= 56319) { + this.lastNeed = 2; + this.lastTotal = 4; + this.lastChar[0] = buf[buf.length - 2]; + this.lastChar[1] = buf[buf.length - 1]; + return r.slice(0, -1); + } + } + return r; + } + this.lastNeed = 1; + this.lastTotal = 2; + this.lastChar[0] = buf[buf.length - 1]; + return buf.toString("utf16le", i, buf.length - 1); + } + function utf16End(buf) { + var r = buf && buf.length ? this.write(buf) : ""; + if (this.lastNeed) { + var end = this.lastTotal - this.lastNeed; + return r + this.lastChar.toString("utf16le", 0, end); + } + return r; + } + function base64Text(buf, i) { + var n = (buf.length - i) % 3; + if (n === 0) return buf.toString("base64", i); + this.lastNeed = 3 - n; + this.lastTotal = 3; + if (n === 1) { + this.lastChar[0] = buf[buf.length - 1]; + } else { + this.lastChar[0] = buf[buf.length - 2]; + this.lastChar[1] = buf[buf.length - 1]; + } + return buf.toString("base64", i, buf.length - n); + } + function base64End(buf) { + var r = buf && buf.length ? this.write(buf) : ""; + if (this.lastNeed) return r + this.lastChar.toString("base64", 0, 3 - this.lastNeed); + return r; + } + function simpleWrite(buf) { + return buf.toString(this.encoding); + } + function simpleEnd(buf) { + return buf && buf.length ? this.write(buf) : ""; + } + } +}); + +// node_modules/readable-stream/lib/internal/streams/end-of-stream.js +var require_end_of_stream = __commonJS({ + "node_modules/readable-stream/lib/internal/streams/end-of-stream.js"(exports2, module2) { + "use strict"; + var ERR_STREAM_PREMATURE_CLOSE = require_errors2().codes.ERR_STREAM_PREMATURE_CLOSE; + function once(callback) { + var called = false; + return function() { + if (called) return; + called = true; + for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { + args[_key] = arguments[_key]; + } + callback.apply(this, args); + }; + } + function noop() { + } + function isRequest(stream) { + return stream.setHeader && typeof stream.abort === "function"; + } + function eos(stream, opts, callback) { + if (typeof opts === "function") return eos(stream, null, opts); + if (!opts) opts = {}; + callback = once(callback || noop); + var readable = opts.readable || opts.readable !== false && stream.readable; + var writable = opts.writable || opts.writable !== false && stream.writable; + var onlegacyfinish = function onlegacyfinish2() { + if (!stream.writable) onfinish(); + }; + var writableEnded = stream._writableState && stream._writableState.finished; + var onfinish = function onfinish2() { + writable = false; + writableEnded = true; + if (!readable) callback.call(stream); + }; + var readableEnded = stream._readableState && stream._readableState.endEmitted; + var onend = function onend2() { + readable = false; + readableEnded = true; + if (!writable) callback.call(stream); + }; + var onerror = function onerror2(err) { + callback.call(stream, err); + }; + var onclose = function onclose2() { + var err; + if (readable && !readableEnded) { + if (!stream._readableState || !stream._readableState.ended) err = new ERR_STREAM_PREMATURE_CLOSE(); + return callback.call(stream, err); + } + if (writable && !writableEnded) { + if (!stream._writableState || !stream._writableState.ended) err = new ERR_STREAM_PREMATURE_CLOSE(); + return callback.call(stream, err); + } + }; + var onrequest = function onrequest2() { + stream.req.on("finish", onfinish); + }; + if (isRequest(stream)) { + stream.on("complete", onfinish); + stream.on("abort", onclose); + if (stream.req) onrequest(); + else stream.on("request", onrequest); + } else if (writable && !stream._writableState) { + stream.on("end", onlegacyfinish); + stream.on("close", onlegacyfinish); + } + stream.on("end", onend); + stream.on("finish", onfinish); + if (opts.error !== false) stream.on("error", onerror); + stream.on("close", onclose); + return function() { + stream.removeListener("complete", onfinish); + stream.removeListener("abort", onclose); + stream.removeListener("request", onrequest); + if (stream.req) stream.req.removeListener("finish", onfinish); + stream.removeListener("end", onlegacyfinish); + stream.removeListener("close", onlegacyfinish); + stream.removeListener("finish", onfinish); + stream.removeListener("end", onend); + stream.removeListener("error", onerror); + stream.removeListener("close", onclose); + }; + } + module2.exports = eos; + } +}); + +// node_modules/readable-stream/lib/internal/streams/async_iterator.js +var require_async_iterator = __commonJS({ + "node_modules/readable-stream/lib/internal/streams/async_iterator.js"(exports2, module2) { + "use strict"; + var _Object$setPrototypeO; + function _defineProperty(obj, key, value) { + key = _toPropertyKey(key); + if (key in obj) { + Object.defineProperty(obj, key, { value, enumerable: true, configurable: true, writable: true }); + } else { + obj[key] = value; + } + return obj; + } + function _toPropertyKey(arg) { + var key = _toPrimitive(arg, "string"); + return typeof key === "symbol" ? key : String(key); + } + function _toPrimitive(input, hint) { + if (typeof input !== "object" || input === null) return input; + var prim = input[Symbol.toPrimitive]; + if (prim !== void 0) { + var res = prim.call(input, hint || "default"); + if (typeof res !== "object") return res; + throw new TypeError("@@toPrimitive must return a primitive value."); + } + return (hint === "string" ? String : Number)(input); + } + var finished = require_end_of_stream(); + var kLastResolve = /* @__PURE__ */ Symbol("lastResolve"); + var kLastReject = /* @__PURE__ */ Symbol("lastReject"); + var kError = /* @__PURE__ */ Symbol("error"); + var kEnded = /* @__PURE__ */ Symbol("ended"); + var kLastPromise = /* @__PURE__ */ Symbol("lastPromise"); + var kHandlePromise = /* @__PURE__ */ Symbol("handlePromise"); + var kStream = /* @__PURE__ */ Symbol("stream"); + function createIterResult(value, done) { + return { + value, + done + }; + } + function readAndResolve(iter) { + var resolve = iter[kLastResolve]; + if (resolve !== null) { + var data = iter[kStream].read(); + if (data !== null) { + iter[kLastPromise] = null; + iter[kLastResolve] = null; + iter[kLastReject] = null; + resolve(createIterResult(data, false)); + } + } + } + function onReadable(iter) { + process.nextTick(readAndResolve, iter); + } + function wrapForNext(lastPromise, iter) { + return function(resolve, reject) { + lastPromise.then(function() { + if (iter[kEnded]) { + resolve(createIterResult(void 0, true)); + return; + } + iter[kHandlePromise](resolve, reject); + }, reject); + }; + } + var AsyncIteratorPrototype = Object.getPrototypeOf(function() { + }); + var ReadableStreamAsyncIteratorPrototype = Object.setPrototypeOf((_Object$setPrototypeO = { + get stream() { + return this[kStream]; + }, + next: function next() { + var _this = this; + var error2 = this[kError]; + if (error2 !== null) { + return Promise.reject(error2); + } + if (this[kEnded]) { + return Promise.resolve(createIterResult(void 0, true)); + } + if (this[kStream].destroyed) { + return new Promise(function(resolve, reject) { + process.nextTick(function() { + if (_this[kError]) { + reject(_this[kError]); + } else { + resolve(createIterResult(void 0, true)); + } + }); + }); + } + var lastPromise = this[kLastPromise]; + var promise; + if (lastPromise) { + promise = new Promise(wrapForNext(lastPromise, this)); + } else { + var data = this[kStream].read(); + if (data !== null) { + return Promise.resolve(createIterResult(data, false)); + } + promise = new Promise(this[kHandlePromise]); + } + this[kLastPromise] = promise; + return promise; + } + }, _defineProperty(_Object$setPrototypeO, Symbol.asyncIterator, function() { + return this; + }), _defineProperty(_Object$setPrototypeO, "return", function _return() { + var _this2 = this; + return new Promise(function(resolve, reject) { + _this2[kStream].destroy(null, function(err) { + if (err) { + reject(err); + return; + } + resolve(createIterResult(void 0, true)); + }); + }); + }), _Object$setPrototypeO), AsyncIteratorPrototype); + var createReadableStreamAsyncIterator = function createReadableStreamAsyncIterator2(stream) { + var _Object$create; + var iterator = Object.create(ReadableStreamAsyncIteratorPrototype, (_Object$create = {}, _defineProperty(_Object$create, kStream, { + value: stream, + writable: true + }), _defineProperty(_Object$create, kLastResolve, { + value: null, + writable: true + }), _defineProperty(_Object$create, kLastReject, { + value: null, + writable: true + }), _defineProperty(_Object$create, kError, { + value: null, + writable: true + }), _defineProperty(_Object$create, kEnded, { + value: stream._readableState.endEmitted, + writable: true + }), _defineProperty(_Object$create, kHandlePromise, { + value: function value(resolve, reject) { + var data = iterator[kStream].read(); + if (data) { + iterator[kLastPromise] = null; + iterator[kLastResolve] = null; + iterator[kLastReject] = null; + resolve(createIterResult(data, false)); + } else { + iterator[kLastResolve] = resolve; + iterator[kLastReject] = reject; + } + }, + writable: true + }), _Object$create)); + iterator[kLastPromise] = null; + finished(stream, function(err) { + if (err && err.code !== "ERR_STREAM_PREMATURE_CLOSE") { + var reject = iterator[kLastReject]; + if (reject !== null) { + iterator[kLastPromise] = null; + iterator[kLastResolve] = null; + iterator[kLastReject] = null; + reject(err); + } + iterator[kError] = err; + return; + } + var resolve = iterator[kLastResolve]; + if (resolve !== null) { + iterator[kLastPromise] = null; + iterator[kLastResolve] = null; + iterator[kLastReject] = null; + resolve(createIterResult(void 0, true)); + } + iterator[kEnded] = true; + }); + stream.on("readable", onReadable.bind(null, iterator)); + return iterator; + }; + module2.exports = createReadableStreamAsyncIterator; + } +}); + +// node_modules/readable-stream/lib/internal/streams/from.js +var require_from = __commonJS({ + "node_modules/readable-stream/lib/internal/streams/from.js"(exports2, module2) { + "use strict"; + function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { + try { + var info = gen[key](arg); + var value = info.value; + } catch (error2) { + reject(error2); + return; + } + if (info.done) { + resolve(value); + } else { + Promise.resolve(value).then(_next, _throw); + } + } + function _asyncToGenerator(fn) { + return function() { + var self2 = this, args = arguments; + return new Promise(function(resolve, reject) { + var gen = fn.apply(self2, args); + function _next(value) { + asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value); + } + function _throw(err) { + asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err); + } + _next(void 0); + }); + }; + } + function ownKeys(object3, enumerableOnly) { + var keys = Object.keys(object3); + if (Object.getOwnPropertySymbols) { + var symbols = Object.getOwnPropertySymbols(object3); + enumerableOnly && (symbols = symbols.filter(function(sym) { + return Object.getOwnPropertyDescriptor(object3, sym).enumerable; + })), keys.push.apply(keys, symbols); + } + return keys; + } + function _objectSpread(target) { + for (var i = 1; i < arguments.length; i++) { + var source = null != arguments[i] ? arguments[i] : {}; + i % 2 ? ownKeys(Object(source), true).forEach(function(key) { + _defineProperty(target, key, source[key]); + }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function(key) { + Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); + }); + } + return target; + } + function _defineProperty(obj, key, value) { + key = _toPropertyKey(key); + if (key in obj) { + Object.defineProperty(obj, key, { value, enumerable: true, configurable: true, writable: true }); + } else { + obj[key] = value; + } + return obj; + } + function _toPropertyKey(arg) { + var key = _toPrimitive(arg, "string"); + return typeof key === "symbol" ? key : String(key); + } + function _toPrimitive(input, hint) { + if (typeof input !== "object" || input === null) return input; + var prim = input[Symbol.toPrimitive]; + if (prim !== void 0) { + var res = prim.call(input, hint || "default"); + if (typeof res !== "object") return res; + throw new TypeError("@@toPrimitive must return a primitive value."); + } + return (hint === "string" ? String : Number)(input); + } + var ERR_INVALID_ARG_TYPE = require_errors2().codes.ERR_INVALID_ARG_TYPE; + function from(Readable3, iterable, opts) { + var iterator; + if (iterable && typeof iterable.next === "function") { + iterator = iterable; + } else if (iterable && iterable[Symbol.asyncIterator]) iterator = iterable[Symbol.asyncIterator](); + else if (iterable && iterable[Symbol.iterator]) iterator = iterable[Symbol.iterator](); + else throw new ERR_INVALID_ARG_TYPE("iterable", ["Iterable"], iterable); + var readable = new Readable3(_objectSpread({ + objectMode: true + }, opts)); + var reading = false; + readable._read = function() { + if (!reading) { + reading = true; + next(); + } + }; + function next() { + return _next2.apply(this, arguments); + } + function _next2() { + _next2 = _asyncToGenerator(function* () { + try { + var _yield$iterator$next = yield iterator.next(), value = _yield$iterator$next.value, done = _yield$iterator$next.done; + if (done) { + readable.push(null); + } else if (readable.push(yield value)) { + next(); + } else { + reading = false; + } + } catch (err) { + readable.destroy(err); + } + }); + return _next2.apply(this, arguments); + } + return readable; + } + module2.exports = from; + } +}); + +// node_modules/readable-stream/lib/_stream_readable.js +var require_stream_readable = __commonJS({ + "node_modules/readable-stream/lib/_stream_readable.js"(exports2, module2) { + "use strict"; + module2.exports = Readable3; + var Duplex; + Readable3.ReadableState = ReadableState; + var EE = require("events").EventEmitter; + var EElistenerCount = function EElistenerCount2(emitter, type) { + return emitter.listeners(type).length; + }; + var Stream = require_stream(); + var Buffer5 = require("buffer").Buffer; + var OurUint8Array = (typeof global !== "undefined" ? global : typeof window !== "undefined" ? window : typeof self !== "undefined" ? self : {}).Uint8Array || function() { + }; + function _uint8ArrayToBuffer(chunk) { + return Buffer5.from(chunk); + } + function _isUint8Array(obj) { + return Buffer5.isBuffer(obj) || obj instanceof OurUint8Array; + } + var debugUtil = require("util"); + var debug; + if (debugUtil && debugUtil.debuglog) { + debug = debugUtil.debuglog("stream"); + } else { + debug = function debug2() { + }; + } + var BufferList = require_buffer_list(); + var destroyImpl = require_destroy(); + var _require = require_state(); + var getHighWaterMark = _require.getHighWaterMark; + var _require$codes = require_errors2().codes; + var ERR_INVALID_ARG_TYPE = _require$codes.ERR_INVALID_ARG_TYPE; + var ERR_STREAM_PUSH_AFTER_EOF = _require$codes.ERR_STREAM_PUSH_AFTER_EOF; + var ERR_METHOD_NOT_IMPLEMENTED = _require$codes.ERR_METHOD_NOT_IMPLEMENTED; + var ERR_STREAM_UNSHIFT_AFTER_END_EVENT = _require$codes.ERR_STREAM_UNSHIFT_AFTER_END_EVENT; + var StringDecoder; + var createReadableStreamAsyncIterator; + var from; + require_inherits()(Readable3, Stream); + var errorOrDestroy = destroyImpl.errorOrDestroy; + var kProxyEvents = ["error", "close", "destroy", "pause", "resume"]; + function prependListener(emitter, event, fn) { + if (typeof emitter.prependListener === "function") return emitter.prependListener(event, fn); + if (!emitter._events || !emitter._events[event]) emitter.on(event, fn); + else if (Array.isArray(emitter._events[event])) emitter._events[event].unshift(fn); + else emitter._events[event] = [fn, emitter._events[event]]; + } + function ReadableState(options, stream, isDuplex) { + Duplex = Duplex || require_stream_duplex(); + options = options || {}; + if (typeof isDuplex !== "boolean") isDuplex = stream instanceof Duplex; + this.objectMode = !!options.objectMode; + if (isDuplex) this.objectMode = this.objectMode || !!options.readableObjectMode; + this.highWaterMark = getHighWaterMark(this, options, "readableHighWaterMark", isDuplex); + this.buffer = new BufferList(); + this.length = 0; + this.pipes = null; + this.pipesCount = 0; + this.flowing = null; + this.ended = false; + this.endEmitted = false; + this.reading = false; + this.sync = true; + this.needReadable = false; + this.emittedReadable = false; + this.readableListening = false; + this.resumeScheduled = false; + this.paused = true; + this.emitClose = options.emitClose !== false; + this.autoDestroy = !!options.autoDestroy; + this.destroyed = false; + this.defaultEncoding = options.defaultEncoding || "utf8"; + this.awaitDrain = 0; + this.readingMore = false; + this.decoder = null; + this.encoding = null; + if (options.encoding) { + if (!StringDecoder) StringDecoder = require_string_decoder().StringDecoder; + this.decoder = new StringDecoder(options.encoding); + this.encoding = options.encoding; + } + } + function Readable3(options) { + Duplex = Duplex || require_stream_duplex(); + if (!(this instanceof Readable3)) return new Readable3(options); + var isDuplex = this instanceof Duplex; + this._readableState = new ReadableState(options, this, isDuplex); + this.readable = true; + if (options) { + if (typeof options.read === "function") this._read = options.read; + if (typeof options.destroy === "function") this._destroy = options.destroy; + } + Stream.call(this); + } + Object.defineProperty(Readable3.prototype, "destroyed", { + // making it explicit this property is not enumerable + // because otherwise some prototype manipulation in + // userland will fail + enumerable: false, + get: function get() { + if (this._readableState === void 0) { + return false; + } + return this._readableState.destroyed; + }, + set: function set(value) { + if (!this._readableState) { + return; + } + this._readableState.destroyed = value; + } + }); + Readable3.prototype.destroy = destroyImpl.destroy; + Readable3.prototype._undestroy = destroyImpl.undestroy; + Readable3.prototype._destroy = function(err, cb) { + cb(err); + }; + Readable3.prototype.push = function(chunk, encoding) { + var state3 = this._readableState; + var skipChunkCheck; + if (!state3.objectMode) { + if (typeof chunk === "string") { + encoding = encoding || state3.defaultEncoding; + if (encoding !== state3.encoding) { + chunk = Buffer5.from(chunk, encoding); + encoding = ""; + } + skipChunkCheck = true; + } + } else { + skipChunkCheck = true; + } + return readableAddChunk(this, chunk, encoding, false, skipChunkCheck); + }; + Readable3.prototype.unshift = function(chunk) { + return readableAddChunk(this, chunk, null, true, false); + }; + function readableAddChunk(stream, chunk, encoding, addToFront, skipChunkCheck) { + debug("readableAddChunk", chunk); + var state3 = stream._readableState; + if (chunk === null) { + state3.reading = false; + onEofChunk(stream, state3); + } else { + var er; + if (!skipChunkCheck) er = chunkInvalid(state3, chunk); + if (er) { + errorOrDestroy(stream, er); + } else if (state3.objectMode || chunk && chunk.length > 0) { + if (typeof chunk !== "string" && !state3.objectMode && Object.getPrototypeOf(chunk) !== Buffer5.prototype) { + chunk = _uint8ArrayToBuffer(chunk); + } + if (addToFront) { + if (state3.endEmitted) errorOrDestroy(stream, new ERR_STREAM_UNSHIFT_AFTER_END_EVENT()); + else addChunk(stream, state3, chunk, true); + } else if (state3.ended) { + errorOrDestroy(stream, new ERR_STREAM_PUSH_AFTER_EOF()); + } else if (state3.destroyed) { + return false; + } else { + state3.reading = false; + if (state3.decoder && !encoding) { + chunk = state3.decoder.write(chunk); + if (state3.objectMode || chunk.length !== 0) addChunk(stream, state3, chunk, false); + else maybeReadMore(stream, state3); + } else { + addChunk(stream, state3, chunk, false); + } + } + } else if (!addToFront) { + state3.reading = false; + maybeReadMore(stream, state3); + } + } + return !state3.ended && (state3.length < state3.highWaterMark || state3.length === 0); + } + function addChunk(stream, state3, chunk, addToFront) { + if (state3.flowing && state3.length === 0 && !state3.sync) { + state3.awaitDrain = 0; + stream.emit("data", chunk); + } else { + state3.length += state3.objectMode ? 1 : chunk.length; + if (addToFront) state3.buffer.unshift(chunk); + else state3.buffer.push(chunk); + if (state3.needReadable) emitReadable(stream); + } + maybeReadMore(stream, state3); + } + function chunkInvalid(state3, chunk) { + var er; + if (!_isUint8Array(chunk) && typeof chunk !== "string" && chunk !== void 0 && !state3.objectMode) { + er = new ERR_INVALID_ARG_TYPE("chunk", ["string", "Buffer", "Uint8Array"], chunk); + } + return er; + } + Readable3.prototype.isPaused = function() { + return this._readableState.flowing === false; + }; + Readable3.prototype.setEncoding = function(enc) { + if (!StringDecoder) StringDecoder = require_string_decoder().StringDecoder; + var decoder = new StringDecoder(enc); + this._readableState.decoder = decoder; + this._readableState.encoding = this._readableState.decoder.encoding; + var p = this._readableState.buffer.head; + var content = ""; + while (p !== null) { + content += decoder.write(p.data); + p = p.next; + } + this._readableState.buffer.clear(); + if (content !== "") this._readableState.buffer.push(content); + this._readableState.length = content.length; + return this; + }; + var MAX_HWM = 1073741824; + function computeNewHighWaterMark(n) { + if (n >= MAX_HWM) { + n = MAX_HWM; + } else { + n--; + n |= n >>> 1; + n |= n >>> 2; + n |= n >>> 4; + n |= n >>> 8; + n |= n >>> 16; + n++; + } + return n; + } + function howMuchToRead(n, state3) { + if (n <= 0 || state3.length === 0 && state3.ended) return 0; + if (state3.objectMode) return 1; + if (n !== n) { + if (state3.flowing && state3.length) return state3.buffer.head.data.length; + else return state3.length; + } + if (n > state3.highWaterMark) state3.highWaterMark = computeNewHighWaterMark(n); + if (n <= state3.length) return n; + if (!state3.ended) { + state3.needReadable = true; + return 0; + } + return state3.length; + } + Readable3.prototype.read = function(n) { + debug("read", n); + n = parseInt(n, 10); + var state3 = this._readableState; + var nOrig = n; + if (n !== 0) state3.emittedReadable = false; + if (n === 0 && state3.needReadable && ((state3.highWaterMark !== 0 ? state3.length >= state3.highWaterMark : state3.length > 0) || state3.ended)) { + debug("read: emitReadable", state3.length, state3.ended); + if (state3.length === 0 && state3.ended) endReadable(this); + else emitReadable(this); + return null; + } + n = howMuchToRead(n, state3); + if (n === 0 && state3.ended) { + if (state3.length === 0) endReadable(this); + return null; + } + var doRead = state3.needReadable; + debug("need readable", doRead); + if (state3.length === 0 || state3.length - n < state3.highWaterMark) { + doRead = true; + debug("length less than watermark", doRead); + } + if (state3.ended || state3.reading) { + doRead = false; + debug("reading or ended", doRead); + } else if (doRead) { + debug("do read"); + state3.reading = true; + state3.sync = true; + if (state3.length === 0) state3.needReadable = true; + this._read(state3.highWaterMark); + state3.sync = false; + if (!state3.reading) n = howMuchToRead(nOrig, state3); + } + var ret; + if (n > 0) ret = fromList(n, state3); + else ret = null; + if (ret === null) { + state3.needReadable = state3.length <= state3.highWaterMark; + n = 0; + } else { + state3.length -= n; + state3.awaitDrain = 0; + } + if (state3.length === 0) { + if (!state3.ended) state3.needReadable = true; + if (nOrig !== n && state3.ended) endReadable(this); + } + if (ret !== null) this.emit("data", ret); + return ret; + }; + function onEofChunk(stream, state3) { + debug("onEofChunk"); + if (state3.ended) return; + if (state3.decoder) { + var chunk = state3.decoder.end(); + if (chunk && chunk.length) { + state3.buffer.push(chunk); + state3.length += state3.objectMode ? 1 : chunk.length; + } + } + state3.ended = true; + if (state3.sync) { + emitReadable(stream); + } else { + state3.needReadable = false; + if (!state3.emittedReadable) { + state3.emittedReadable = true; + emitReadable_(stream); + } + } + } + function emitReadable(stream) { + var state3 = stream._readableState; + debug("emitReadable", state3.needReadable, state3.emittedReadable); + state3.needReadable = false; + if (!state3.emittedReadable) { + debug("emitReadable", state3.flowing); + state3.emittedReadable = true; + process.nextTick(emitReadable_, stream); + } + } + function emitReadable_(stream) { + var state3 = stream._readableState; + debug("emitReadable_", state3.destroyed, state3.length, state3.ended); + if (!state3.destroyed && (state3.length || state3.ended)) { + stream.emit("readable"); + state3.emittedReadable = false; + } + state3.needReadable = !state3.flowing && !state3.ended && state3.length <= state3.highWaterMark; + flow(stream); + } + function maybeReadMore(stream, state3) { + if (!state3.readingMore) { + state3.readingMore = true; + process.nextTick(maybeReadMore_, stream, state3); + } + } + function maybeReadMore_(stream, state3) { + while (!state3.reading && !state3.ended && (state3.length < state3.highWaterMark || state3.flowing && state3.length === 0)) { + var len = state3.length; + debug("maybeReadMore read 0"); + stream.read(0); + if (len === state3.length) + break; + } + state3.readingMore = false; + } + Readable3.prototype._read = function(n) { + errorOrDestroy(this, new ERR_METHOD_NOT_IMPLEMENTED("_read()")); + }; + Readable3.prototype.pipe = function(dest, pipeOpts) { + var src = this; + var state3 = this._readableState; + switch (state3.pipesCount) { + case 0: + state3.pipes = dest; + break; + case 1: + state3.pipes = [state3.pipes, dest]; + break; + default: + state3.pipes.push(dest); + break; + } + state3.pipesCount += 1; + debug("pipe count=%d opts=%j", state3.pipesCount, pipeOpts); + var doEnd = (!pipeOpts || pipeOpts.end !== false) && dest !== process.stdout && dest !== process.stderr; + var endFn = doEnd ? onend : unpipe; + if (state3.endEmitted) process.nextTick(endFn); + else src.once("end", endFn); + dest.on("unpipe", onunpipe); + function onunpipe(readable, unpipeInfo) { + debug("onunpipe"); + if (readable === src) { + if (unpipeInfo && unpipeInfo.hasUnpiped === false) { + unpipeInfo.hasUnpiped = true; + cleanup(); + } + } + } + function onend() { + debug("onend"); + dest.end(); + } + var ondrain = pipeOnDrain(src); + dest.on("drain", ondrain); + var cleanedUp = false; + function cleanup() { + debug("cleanup"); + dest.removeListener("close", onclose); + dest.removeListener("finish", onfinish); + dest.removeListener("drain", ondrain); + dest.removeListener("error", onerror); + dest.removeListener("unpipe", onunpipe); + src.removeListener("end", onend); + src.removeListener("end", unpipe); + src.removeListener("data", ondata); + cleanedUp = true; + if (state3.awaitDrain && (!dest._writableState || dest._writableState.needDrain)) ondrain(); + } + src.on("data", ondata); + function ondata(chunk) { + debug("ondata"); + var ret = dest.write(chunk); + debug("dest.write", ret); + if (ret === false) { + if ((state3.pipesCount === 1 && state3.pipes === dest || state3.pipesCount > 1 && indexOf(state3.pipes, dest) !== -1) && !cleanedUp) { + debug("false write response, pause", state3.awaitDrain); + state3.awaitDrain++; + } + src.pause(); + } + } + function onerror(er) { + debug("onerror", er); + unpipe(); + dest.removeListener("error", onerror); + if (EElistenerCount(dest, "error") === 0) errorOrDestroy(dest, er); + } + prependListener(dest, "error", onerror); + function onclose() { + dest.removeListener("finish", onfinish); + unpipe(); + } + dest.once("close", onclose); + function onfinish() { + debug("onfinish"); + dest.removeListener("close", onclose); + unpipe(); + } + dest.once("finish", onfinish); + function unpipe() { + debug("unpipe"); + src.unpipe(dest); + } + dest.emit("pipe", src); + if (!state3.flowing) { + debug("pipe resume"); + src.resume(); + } + return dest; + }; + function pipeOnDrain(src) { + return function pipeOnDrainFunctionResult() { + var state3 = src._readableState; + debug("pipeOnDrain", state3.awaitDrain); + if (state3.awaitDrain) state3.awaitDrain--; + if (state3.awaitDrain === 0 && EElistenerCount(src, "data")) { + state3.flowing = true; + flow(src); + } + }; + } + Readable3.prototype.unpipe = function(dest) { + var state3 = this._readableState; + var unpipeInfo = { + hasUnpiped: false + }; + if (state3.pipesCount === 0) return this; + if (state3.pipesCount === 1) { + if (dest && dest !== state3.pipes) return this; + if (!dest) dest = state3.pipes; + state3.pipes = null; + state3.pipesCount = 0; + state3.flowing = false; + if (dest) dest.emit("unpipe", this, unpipeInfo); + return this; + } + if (!dest) { + var dests = state3.pipes; + var len = state3.pipesCount; + state3.pipes = null; + state3.pipesCount = 0; + state3.flowing = false; + for (var i = 0; i < len; i++) dests[i].emit("unpipe", this, { + hasUnpiped: false + }); + return this; + } + var index = indexOf(state3.pipes, dest); + if (index === -1) return this; + state3.pipes.splice(index, 1); + state3.pipesCount -= 1; + if (state3.pipesCount === 1) state3.pipes = state3.pipes[0]; + dest.emit("unpipe", this, unpipeInfo); + return this; + }; + Readable3.prototype.on = function(ev, fn) { + var res = Stream.prototype.on.call(this, ev, fn); + var state3 = this._readableState; + if (ev === "data") { + state3.readableListening = this.listenerCount("readable") > 0; + if (state3.flowing !== false) this.resume(); + } else if (ev === "readable") { + if (!state3.endEmitted && !state3.readableListening) { + state3.readableListening = state3.needReadable = true; + state3.flowing = false; + state3.emittedReadable = false; + debug("on readable", state3.length, state3.reading); + if (state3.length) { + emitReadable(this); + } else if (!state3.reading) { + process.nextTick(nReadingNextTick, this); + } + } + } + return res; + }; + Readable3.prototype.addListener = Readable3.prototype.on; + Readable3.prototype.removeListener = function(ev, fn) { + var res = Stream.prototype.removeListener.call(this, ev, fn); + if (ev === "readable") { + process.nextTick(updateReadableListening, this); + } + return res; + }; + Readable3.prototype.removeAllListeners = function(ev) { + var res = Stream.prototype.removeAllListeners.apply(this, arguments); + if (ev === "readable" || ev === void 0) { + process.nextTick(updateReadableListening, this); + } + return res; + }; + function updateReadableListening(self2) { + var state3 = self2._readableState; + state3.readableListening = self2.listenerCount("readable") > 0; + if (state3.resumeScheduled && !state3.paused) { + state3.flowing = true; + } else if (self2.listenerCount("data") > 0) { + self2.resume(); + } + } + function nReadingNextTick(self2) { + debug("readable nexttick read 0"); + self2.read(0); + } + Readable3.prototype.resume = function() { + var state3 = this._readableState; + if (!state3.flowing) { + debug("resume"); + state3.flowing = !state3.readableListening; + resume(this, state3); + } + state3.paused = false; + return this; + }; + function resume(stream, state3) { + if (!state3.resumeScheduled) { + state3.resumeScheduled = true; + process.nextTick(resume_, stream, state3); + } + } + function resume_(stream, state3) { + debug("resume", state3.reading); + if (!state3.reading) { + stream.read(0); + } + state3.resumeScheduled = false; + stream.emit("resume"); + flow(stream); + if (state3.flowing && !state3.reading) stream.read(0); + } + Readable3.prototype.pause = function() { + debug("call pause flowing=%j", this._readableState.flowing); + if (this._readableState.flowing !== false) { + debug("pause"); + this._readableState.flowing = false; + this.emit("pause"); + } + this._readableState.paused = true; + return this; + }; + function flow(stream) { + var state3 = stream._readableState; + debug("flow", state3.flowing); + while (state3.flowing && stream.read() !== null) ; + } + Readable3.prototype.wrap = function(stream) { + var _this = this; + var state3 = this._readableState; + var paused = false; + stream.on("end", function() { + debug("wrapped end"); + if (state3.decoder && !state3.ended) { + var chunk = state3.decoder.end(); + if (chunk && chunk.length) _this.push(chunk); + } + _this.push(null); + }); + stream.on("data", function(chunk) { + debug("wrapped data"); + if (state3.decoder) chunk = state3.decoder.write(chunk); + if (state3.objectMode && (chunk === null || chunk === void 0)) return; + else if (!state3.objectMode && (!chunk || !chunk.length)) return; + var ret = _this.push(chunk); + if (!ret) { + paused = true; + stream.pause(); + } + }); + for (var i in stream) { + if (this[i] === void 0 && typeof stream[i] === "function") { + this[i] = /* @__PURE__ */ (function methodWrap(method) { + return function methodWrapReturnFunction() { + return stream[method].apply(stream, arguments); + }; + })(i); + } + } + for (var n = 0; n < kProxyEvents.length; n++) { + stream.on(kProxyEvents[n], this.emit.bind(this, kProxyEvents[n])); + } + this._read = function(n2) { + debug("wrapped _read", n2); + if (paused) { + paused = false; + stream.resume(); + } + }; + return this; + }; + if (typeof Symbol === "function") { + Readable3.prototype[Symbol.asyncIterator] = function() { + if (createReadableStreamAsyncIterator === void 0) { + createReadableStreamAsyncIterator = require_async_iterator(); + } + return createReadableStreamAsyncIterator(this); + }; + } + Object.defineProperty(Readable3.prototype, "readableHighWaterMark", { + // making it explicit this property is not enumerable + // because otherwise some prototype manipulation in + // userland will fail + enumerable: false, + get: function get() { + return this._readableState.highWaterMark; + } + }); + Object.defineProperty(Readable3.prototype, "readableBuffer", { + // making it explicit this property is not enumerable + // because otherwise some prototype manipulation in + // userland will fail + enumerable: false, + get: function get() { + return this._readableState && this._readableState.buffer; + } + }); + Object.defineProperty(Readable3.prototype, "readableFlowing", { + // making it explicit this property is not enumerable + // because otherwise some prototype manipulation in + // userland will fail + enumerable: false, + get: function get() { + return this._readableState.flowing; + }, + set: function set(state3) { + if (this._readableState) { + this._readableState.flowing = state3; + } + } + }); + Readable3._fromList = fromList; + Object.defineProperty(Readable3.prototype, "readableLength", { + // making it explicit this property is not enumerable + // because otherwise some prototype manipulation in + // userland will fail + enumerable: false, + get: function get() { + return this._readableState.length; + } + }); + function fromList(n, state3) { + if (state3.length === 0) return null; + var ret; + if (state3.objectMode) ret = state3.buffer.shift(); + else if (!n || n >= state3.length) { + if (state3.decoder) ret = state3.buffer.join(""); + else if (state3.buffer.length === 1) ret = state3.buffer.first(); + else ret = state3.buffer.concat(state3.length); + state3.buffer.clear(); + } else { + ret = state3.buffer.consume(n, state3.decoder); + } + return ret; + } + function endReadable(stream) { + var state3 = stream._readableState; + debug("endReadable", state3.endEmitted); + if (!state3.endEmitted) { + state3.ended = true; + process.nextTick(endReadableNT, state3, stream); + } + } + function endReadableNT(state3, stream) { + debug("endReadableNT", state3.endEmitted, state3.length); + if (!state3.endEmitted && state3.length === 0) { + state3.endEmitted = true; + stream.readable = false; + stream.emit("end"); + if (state3.autoDestroy) { + var wState = stream._writableState; + if (!wState || wState.autoDestroy && wState.finished) { + stream.destroy(); + } + } + } + } + if (typeof Symbol === "function") { + Readable3.from = function(iterable, opts) { + if (from === void 0) { + from = require_from(); + } + return from(Readable3, iterable, opts); + }; + } + function indexOf(xs, x) { + for (var i = 0, l = xs.length; i < l; i++) { + if (xs[i] === x) return i; + } + return -1; + } + } +}); + +// node_modules/readable-stream/lib/_stream_duplex.js +var require_stream_duplex = __commonJS({ + "node_modules/readable-stream/lib/_stream_duplex.js"(exports2, module2) { + "use strict"; + var objectKeys = Object.keys || function(obj) { + var keys2 = []; + for (var key in obj) keys2.push(key); + return keys2; + }; + module2.exports = Duplex; + var Readable3 = require_stream_readable(); + var Writable = require_stream_writable(); + require_inherits()(Duplex, Readable3); + { + keys = objectKeys(Writable.prototype); + for (v = 0; v < keys.length; v++) { + method = keys[v]; + if (!Duplex.prototype[method]) Duplex.prototype[method] = Writable.prototype[method]; + } + } + var keys; + var method; + var v; + function Duplex(options) { + if (!(this instanceof Duplex)) return new Duplex(options); + Readable3.call(this, options); + Writable.call(this, options); + this.allowHalfOpen = true; + if (options) { + if (options.readable === false) this.readable = false; + if (options.writable === false) this.writable = false; + if (options.allowHalfOpen === false) { + this.allowHalfOpen = false; + this.once("end", onend); + } + } + } + Object.defineProperty(Duplex.prototype, "writableHighWaterMark", { + // making it explicit this property is not enumerable + // because otherwise some prototype manipulation in + // userland will fail + enumerable: false, + get: function get() { + return this._writableState.highWaterMark; + } + }); + Object.defineProperty(Duplex.prototype, "writableBuffer", { + // making it explicit this property is not enumerable + // because otherwise some prototype manipulation in + // userland will fail + enumerable: false, + get: function get() { + return this._writableState && this._writableState.getBuffer(); + } + }); + Object.defineProperty(Duplex.prototype, "writableLength", { + // making it explicit this property is not enumerable + // because otherwise some prototype manipulation in + // userland will fail + enumerable: false, + get: function get() { + return this._writableState.length; + } + }); + function onend() { + if (this._writableState.ended) return; + process.nextTick(onEndNT, this); + } + function onEndNT(self2) { + self2.end(); + } + Object.defineProperty(Duplex.prototype, "destroyed", { + // making it explicit this property is not enumerable + // because otherwise some prototype manipulation in + // userland will fail + enumerable: false, + get: function get() { + if (this._readableState === void 0 || this._writableState === void 0) { + return false; + } + return this._readableState.destroyed && this._writableState.destroyed; + }, + set: function set(value) { + if (this._readableState === void 0 || this._writableState === void 0) { + return; + } + this._readableState.destroyed = value; + this._writableState.destroyed = value; + } + }); + } +}); + +// node_modules/readable-stream/lib/_stream_writable.js +var require_stream_writable = __commonJS({ + "node_modules/readable-stream/lib/_stream_writable.js"(exports2, module2) { + "use strict"; + module2.exports = Writable; + function CorkedRequest(state3) { + var _this = this; + this.next = null; + this.entry = null; + this.finish = function() { + onCorkedFinish(_this, state3); + }; + } + var Duplex; + Writable.WritableState = WritableState; + var internalUtil = { + deprecate: require_node() + }; + var Stream = require_stream(); + var Buffer5 = require("buffer").Buffer; + var OurUint8Array = (typeof global !== "undefined" ? global : typeof window !== "undefined" ? window : typeof self !== "undefined" ? self : {}).Uint8Array || function() { + }; + function _uint8ArrayToBuffer(chunk) { + return Buffer5.from(chunk); + } + function _isUint8Array(obj) { + return Buffer5.isBuffer(obj) || obj instanceof OurUint8Array; + } + var destroyImpl = require_destroy(); + var _require = require_state(); + var getHighWaterMark = _require.getHighWaterMark; + var _require$codes = require_errors2().codes; + var ERR_INVALID_ARG_TYPE = _require$codes.ERR_INVALID_ARG_TYPE; + var ERR_METHOD_NOT_IMPLEMENTED = _require$codes.ERR_METHOD_NOT_IMPLEMENTED; + var ERR_MULTIPLE_CALLBACK = _require$codes.ERR_MULTIPLE_CALLBACK; + var ERR_STREAM_CANNOT_PIPE = _require$codes.ERR_STREAM_CANNOT_PIPE; + var ERR_STREAM_DESTROYED = _require$codes.ERR_STREAM_DESTROYED; + var ERR_STREAM_NULL_VALUES = _require$codes.ERR_STREAM_NULL_VALUES; + var ERR_STREAM_WRITE_AFTER_END = _require$codes.ERR_STREAM_WRITE_AFTER_END; + var ERR_UNKNOWN_ENCODING = _require$codes.ERR_UNKNOWN_ENCODING; + var errorOrDestroy = destroyImpl.errorOrDestroy; + require_inherits()(Writable, Stream); + function nop() { + } + function WritableState(options, stream, isDuplex) { + Duplex = Duplex || require_stream_duplex(); + options = options || {}; + if (typeof isDuplex !== "boolean") isDuplex = stream instanceof Duplex; + this.objectMode = !!options.objectMode; + if (isDuplex) this.objectMode = this.objectMode || !!options.writableObjectMode; + this.highWaterMark = getHighWaterMark(this, options, "writableHighWaterMark", isDuplex); + this.finalCalled = false; + this.needDrain = false; + this.ending = false; + this.ended = false; + this.finished = false; + this.destroyed = false; + var noDecode = options.decodeStrings === false; + this.decodeStrings = !noDecode; + this.defaultEncoding = options.defaultEncoding || "utf8"; + this.length = 0; + this.writing = false; + this.corked = 0; + this.sync = true; + this.bufferProcessing = false; + this.onwrite = function(er) { + onwrite(stream, er); + }; + this.writecb = null; + this.writelen = 0; + this.bufferedRequest = null; + this.lastBufferedRequest = null; + this.pendingcb = 0; + this.prefinished = false; + this.errorEmitted = false; + this.emitClose = options.emitClose !== false; + this.autoDestroy = !!options.autoDestroy; + this.bufferedRequestCount = 0; + this.corkedRequestsFree = new CorkedRequest(this); + } + WritableState.prototype.getBuffer = function getBuffer() { + var current = this.bufferedRequest; + var out = []; + while (current) { + out.push(current); + current = current.next; + } + return out; + }; + (function() { + try { + Object.defineProperty(WritableState.prototype, "buffer", { + get: internalUtil.deprecate(function writableStateBufferGetter() { + return this.getBuffer(); + }, "_writableState.buffer is deprecated. Use _writableState.getBuffer instead.", "DEP0003") + }); + } catch (_) { + } + })(); + var realHasInstance; + if (typeof Symbol === "function" && Symbol.hasInstance && typeof Function.prototype[Symbol.hasInstance] === "function") { + realHasInstance = Function.prototype[Symbol.hasInstance]; + Object.defineProperty(Writable, Symbol.hasInstance, { + value: function value(object3) { + if (realHasInstance.call(this, object3)) return true; + if (this !== Writable) return false; + return object3 && object3._writableState instanceof WritableState; + } + }); + } else { + realHasInstance = function realHasInstance2(object3) { + return object3 instanceof this; + }; + } + function Writable(options) { + Duplex = Duplex || require_stream_duplex(); + var isDuplex = this instanceof Duplex; + if (!isDuplex && !realHasInstance.call(Writable, this)) return new Writable(options); + this._writableState = new WritableState(options, this, isDuplex); + this.writable = true; + if (options) { + if (typeof options.write === "function") this._write = options.write; + if (typeof options.writev === "function") this._writev = options.writev; + if (typeof options.destroy === "function") this._destroy = options.destroy; + if (typeof options.final === "function") this._final = options.final; + } + Stream.call(this); + } + Writable.prototype.pipe = function() { + errorOrDestroy(this, new ERR_STREAM_CANNOT_PIPE()); + }; + function writeAfterEnd(stream, cb) { + var er = new ERR_STREAM_WRITE_AFTER_END(); + errorOrDestroy(stream, er); + process.nextTick(cb, er); + } + function validChunk(stream, state3, chunk, cb) { + var er; + if (chunk === null) { + er = new ERR_STREAM_NULL_VALUES(); + } else if (typeof chunk !== "string" && !state3.objectMode) { + er = new ERR_INVALID_ARG_TYPE("chunk", ["string", "Buffer"], chunk); + } + if (er) { + errorOrDestroy(stream, er); + process.nextTick(cb, er); + return false; + } + return true; + } + Writable.prototype.write = function(chunk, encoding, cb) { + var state3 = this._writableState; + var ret = false; + var isBuf = !state3.objectMode && _isUint8Array(chunk); + if (isBuf && !Buffer5.isBuffer(chunk)) { + chunk = _uint8ArrayToBuffer(chunk); + } + if (typeof encoding === "function") { + cb = encoding; + encoding = null; + } + if (isBuf) encoding = "buffer"; + else if (!encoding) encoding = state3.defaultEncoding; + if (typeof cb !== "function") cb = nop; + if (state3.ending) writeAfterEnd(this, cb); + else if (isBuf || validChunk(this, state3, chunk, cb)) { + state3.pendingcb++; + ret = writeOrBuffer(this, state3, isBuf, chunk, encoding, cb); + } + return ret; + }; + Writable.prototype.cork = function() { + this._writableState.corked++; + }; + Writable.prototype.uncork = function() { + var state3 = this._writableState; + if (state3.corked) { + state3.corked--; + if (!state3.writing && !state3.corked && !state3.bufferProcessing && state3.bufferedRequest) clearBuffer(this, state3); + } + }; + Writable.prototype.setDefaultEncoding = function setDefaultEncoding(encoding) { + if (typeof encoding === "string") encoding = encoding.toLowerCase(); + if (!(["hex", "utf8", "utf-8", "ascii", "binary", "base64", "ucs2", "ucs-2", "utf16le", "utf-16le", "raw"].indexOf((encoding + "").toLowerCase()) > -1)) throw new ERR_UNKNOWN_ENCODING(encoding); + this._writableState.defaultEncoding = encoding; + return this; + }; + Object.defineProperty(Writable.prototype, "writableBuffer", { + // making it explicit this property is not enumerable + // because otherwise some prototype manipulation in + // userland will fail + enumerable: false, + get: function get() { + return this._writableState && this._writableState.getBuffer(); + } + }); + function decodeChunk(state3, chunk, encoding) { + if (!state3.objectMode && state3.decodeStrings !== false && typeof chunk === "string") { + chunk = Buffer5.from(chunk, encoding); + } + return chunk; + } + Object.defineProperty(Writable.prototype, "writableHighWaterMark", { + // making it explicit this property is not enumerable + // because otherwise some prototype manipulation in + // userland will fail + enumerable: false, + get: function get() { + return this._writableState.highWaterMark; + } + }); + function writeOrBuffer(stream, state3, isBuf, chunk, encoding, cb) { + if (!isBuf) { + var newChunk = decodeChunk(state3, chunk, encoding); + if (chunk !== newChunk) { + isBuf = true; + encoding = "buffer"; + chunk = newChunk; + } + } + var len = state3.objectMode ? 1 : chunk.length; + state3.length += len; + var ret = state3.length < state3.highWaterMark; + if (!ret) state3.needDrain = true; + if (state3.writing || state3.corked) { + var last = state3.lastBufferedRequest; + state3.lastBufferedRequest = { + chunk, + encoding, + isBuf, + callback: cb, + next: null + }; + if (last) { + last.next = state3.lastBufferedRequest; + } else { + state3.bufferedRequest = state3.lastBufferedRequest; + } + state3.bufferedRequestCount += 1; + } else { + doWrite(stream, state3, false, len, chunk, encoding, cb); + } + return ret; + } + function doWrite(stream, state3, writev, len, chunk, encoding, cb) { + state3.writelen = len; + state3.writecb = cb; + state3.writing = true; + state3.sync = true; + if (state3.destroyed) state3.onwrite(new ERR_STREAM_DESTROYED("write")); + else if (writev) stream._writev(chunk, state3.onwrite); + else stream._write(chunk, encoding, state3.onwrite); + state3.sync = false; + } + function onwriteError(stream, state3, sync, er, cb) { + --state3.pendingcb; + if (sync) { + process.nextTick(cb, er); + process.nextTick(finishMaybe, stream, state3); + stream._writableState.errorEmitted = true; + errorOrDestroy(stream, er); + } else { + cb(er); + stream._writableState.errorEmitted = true; + errorOrDestroy(stream, er); + finishMaybe(stream, state3); + } + } + function onwriteStateUpdate(state3) { + state3.writing = false; + state3.writecb = null; + state3.length -= state3.writelen; + state3.writelen = 0; + } + function onwrite(stream, er) { + var state3 = stream._writableState; + var sync = state3.sync; + var cb = state3.writecb; + if (typeof cb !== "function") throw new ERR_MULTIPLE_CALLBACK(); + onwriteStateUpdate(state3); + if (er) onwriteError(stream, state3, sync, er, cb); + else { + var finished = needFinish(state3) || stream.destroyed; + if (!finished && !state3.corked && !state3.bufferProcessing && state3.bufferedRequest) { + clearBuffer(stream, state3); + } + if (sync) { + process.nextTick(afterWrite, stream, state3, finished, cb); + } else { + afterWrite(stream, state3, finished, cb); + } + } + } + function afterWrite(stream, state3, finished, cb) { + if (!finished) onwriteDrain(stream, state3); + state3.pendingcb--; + cb(); + finishMaybe(stream, state3); + } + function onwriteDrain(stream, state3) { + if (state3.length === 0 && state3.needDrain) { + state3.needDrain = false; + stream.emit("drain"); + } + } + function clearBuffer(stream, state3) { + state3.bufferProcessing = true; + var entry = state3.bufferedRequest; + if (stream._writev && entry && entry.next) { + var l = state3.bufferedRequestCount; + var buffer = new Array(l); + var holder = state3.corkedRequestsFree; + holder.entry = entry; + var count = 0; + var allBuffers = true; + while (entry) { + buffer[count] = entry; + if (!entry.isBuf) allBuffers = false; + entry = entry.next; + count += 1; + } + buffer.allBuffers = allBuffers; + doWrite(stream, state3, true, state3.length, buffer, "", holder.finish); + state3.pendingcb++; + state3.lastBufferedRequest = null; + if (holder.next) { + state3.corkedRequestsFree = holder.next; + holder.next = null; + } else { + state3.corkedRequestsFree = new CorkedRequest(state3); + } + state3.bufferedRequestCount = 0; + } else { + while (entry) { + var chunk = entry.chunk; + var encoding = entry.encoding; + var cb = entry.callback; + var len = state3.objectMode ? 1 : chunk.length; + doWrite(stream, state3, false, len, chunk, encoding, cb); + entry = entry.next; + state3.bufferedRequestCount--; + if (state3.writing) { + break; + } + } + if (entry === null) state3.lastBufferedRequest = null; + } + state3.bufferedRequest = entry; + state3.bufferProcessing = false; + } + Writable.prototype._write = function(chunk, encoding, cb) { + cb(new ERR_METHOD_NOT_IMPLEMENTED("_write()")); + }; + Writable.prototype._writev = null; + Writable.prototype.end = function(chunk, encoding, cb) { + var state3 = this._writableState; + if (typeof chunk === "function") { + cb = chunk; + chunk = null; + encoding = null; + } else if (typeof encoding === "function") { + cb = encoding; + encoding = null; + } + if (chunk !== null && chunk !== void 0) this.write(chunk, encoding); + if (state3.corked) { + state3.corked = 1; + this.uncork(); + } + if (!state3.ending) endWritable(this, state3, cb); + return this; + }; + Object.defineProperty(Writable.prototype, "writableLength", { + // making it explicit this property is not enumerable + // because otherwise some prototype manipulation in + // userland will fail + enumerable: false, + get: function get() { + return this._writableState.length; + } + }); + function needFinish(state3) { + return state3.ending && state3.length === 0 && state3.bufferedRequest === null && !state3.finished && !state3.writing; + } + function callFinal(stream, state3) { + stream._final(function(err) { + state3.pendingcb--; + if (err) { + errorOrDestroy(stream, err); + } + state3.prefinished = true; + stream.emit("prefinish"); + finishMaybe(stream, state3); + }); + } + function prefinish(stream, state3) { + if (!state3.prefinished && !state3.finalCalled) { + if (typeof stream._final === "function" && !state3.destroyed) { + state3.pendingcb++; + state3.finalCalled = true; + process.nextTick(callFinal, stream, state3); + } else { + state3.prefinished = true; + stream.emit("prefinish"); + } + } + } + function finishMaybe(stream, state3) { + var need = needFinish(state3); + if (need) { + prefinish(stream, state3); + if (state3.pendingcb === 0) { + state3.finished = true; + stream.emit("finish"); + if (state3.autoDestroy) { + var rState = stream._readableState; + if (!rState || rState.autoDestroy && rState.endEmitted) { + stream.destroy(); + } + } + } + } + return need; + } + function endWritable(stream, state3, cb) { + state3.ending = true; + finishMaybe(stream, state3); + if (cb) { + if (state3.finished) process.nextTick(cb); + else stream.once("finish", cb); + } + state3.ended = true; + stream.writable = false; + } + function onCorkedFinish(corkReq, state3, err) { + var entry = corkReq.entry; + corkReq.entry = null; + while (entry) { + var cb = entry.callback; + state3.pendingcb--; + cb(err); + entry = entry.next; + } + state3.corkedRequestsFree.next = corkReq; + } + Object.defineProperty(Writable.prototype, "destroyed", { + // making it explicit this property is not enumerable + // because otherwise some prototype manipulation in + // userland will fail + enumerable: false, + get: function get() { + if (this._writableState === void 0) { + return false; + } + return this._writableState.destroyed; + }, + set: function set(value) { + if (!this._writableState) { + return; + } + this._writableState.destroyed = value; + } + }); + Writable.prototype.destroy = destroyImpl.destroy; + Writable.prototype._undestroy = destroyImpl.undestroy; + Writable.prototype._destroy = function(err, cb) { + cb(err); + }; + } +}); + +// node_modules/winston-transport/modern.js +var require_modern = __commonJS({ + "node_modules/winston-transport/modern.js"(exports2, module2) { + "use strict"; + var util3 = require("util"); + var Writable = require_stream_writable(); + var { LEVEL } = require_triple_beam(); + var TransportStream = module2.exports = function TransportStream2(options = {}) { + Writable.call(this, { objectMode: true, highWaterMark: options.highWaterMark }); + this.format = options.format; + this.level = options.level; + this.handleExceptions = options.handleExceptions; + this.handleRejections = options.handleRejections; + this.silent = options.silent; + if (options.log) this.log = options.log; + if (options.logv) this.logv = options.logv; + if (options.close) this.close = options.close; + this.once("pipe", (logger31) => { + this.levels = logger31.levels; + this.parent = logger31; + }); + this.once("unpipe", (src) => { + if (src === this.parent) { + this.parent = null; + if (this.close) { + this.close(); + } + } + }); + }; + util3.inherits(TransportStream, Writable); + TransportStream.prototype._write = function _write(info, enc, callback) { + if (this.silent || info.exception === true && !this.handleExceptions) { + return callback(null); + } + const level = this.level || this.parent && this.parent.level; + if (!level || this.levels[level] >= this.levels[info[LEVEL]]) { + if (info && !this.format) { + return this.log(info, callback); + } + let errState; + let transformed; + try { + transformed = this.format.transform(Object.assign({}, info), this.format.options); + } catch (err) { + errState = err; + } + if (errState || !transformed) { + callback(); + if (errState) throw errState; + return; + } + return this.log(transformed, callback); + } + this._writableState.sync = false; + return callback(null); + }; + TransportStream.prototype._writev = function _writev(chunks, callback) { + if (this.logv) { + const infos = chunks.filter(this._accept, this); + if (!infos.length) { + return callback(null); + } + return this.logv(infos, callback); + } + for (let i = 0; i < chunks.length; i++) { + if (!this._accept(chunks[i])) continue; + if (chunks[i].chunk && !this.format) { + this.log(chunks[i].chunk, chunks[i].callback); + continue; + } + let errState; + let transformed; + try { + transformed = this.format.transform( + Object.assign({}, chunks[i].chunk), + this.format.options + ); + } catch (err) { + errState = err; + } + if (errState || !transformed) { + chunks[i].callback(); + if (errState) { + callback(null); + throw errState; + } + } else { + this.log(transformed, chunks[i].callback); + } + } + return callback(null); + }; + TransportStream.prototype._accept = function _accept(write) { + const info = write.chunk; + if (this.silent) { + return false; + } + const level = this.level || this.parent && this.parent.level; + if (info.exception === true || !level || this.levels[level] >= this.levels[info[LEVEL]]) { + if (this.handleExceptions || info.exception !== true) { + return true; + } + } + return false; + }; + TransportStream.prototype._nop = function _nop() { + return void 0; + }; + } +}); + +// node_modules/winston-transport/legacy.js +var require_legacy = __commonJS({ + "node_modules/winston-transport/legacy.js"(exports2, module2) { + "use strict"; + var util3 = require("util"); + var { LEVEL } = require_triple_beam(); + var TransportStream = require_modern(); + var LegacyTransportStream = module2.exports = function LegacyTransportStream2(options = {}) { + TransportStream.call(this, options); + if (!options.transport || typeof options.transport.log !== "function") { + throw new Error("Invalid transport, must be an object with a log method."); + } + this.transport = options.transport; + this.level = this.level || options.transport.level; + this.handleExceptions = this.handleExceptions || options.transport.handleExceptions; + this._deprecated(); + function transportError(err) { + this.emit("error", err, this.transport); + } + if (!this.transport.__winstonError) { + this.transport.__winstonError = transportError.bind(this); + this.transport.on("error", this.transport.__winstonError); + } + }; + util3.inherits(LegacyTransportStream, TransportStream); + LegacyTransportStream.prototype._write = function _write(info, enc, callback) { + if (this.silent || info.exception === true && !this.handleExceptions) { + return callback(null); + } + if (!this.level || this.levels[this.level] >= this.levels[info[LEVEL]]) { + this.transport.log(info[LEVEL], info.message, info, this._nop); + } + callback(null); + }; + LegacyTransportStream.prototype._writev = function _writev(chunks, callback) { + for (let i = 0; i < chunks.length; i++) { + if (this._accept(chunks[i])) { + this.transport.log( + chunks[i].chunk[LEVEL], + chunks[i].chunk.message, + chunks[i].chunk, + this._nop + ); + chunks[i].callback(); + } + } + return callback(null); + }; + LegacyTransportStream.prototype._deprecated = function _deprecated() { + console.error([ + `${this.transport.name} is a legacy winston transport. Consider upgrading: `, + "- Upgrade docs: https://github.com/winstonjs/winston/blob/master/UPGRADE-3.0.md" + ].join("\n")); + }; + LegacyTransportStream.prototype.close = function close() { + if (this.transport.close) { + this.transport.close(); + } + if (this.transport.__winstonError) { + this.transport.removeListener("error", this.transport.__winstonError); + this.transport.__winstonError = null; + } + }; + } +}); + +// node_modules/winston-transport/index.js +var require_winston_transport = __commonJS({ + "node_modules/winston-transport/index.js"(exports2, module2) { + "use strict"; + module2.exports = require_modern(); + module2.exports.LegacyTransportStream = require_legacy(); + } +}); + +// node_modules/winston/lib/winston/transports/console.js +var require_console = __commonJS({ + "node_modules/winston/lib/winston/transports/console.js"(exports2, module2) { + "use strict"; + var os5 = require("os"); + var { LEVEL, MESSAGE } = require_triple_beam(); + var TransportStream = require_winston_transport(); + module2.exports = class Console extends TransportStream { + /** + * Constructor function for the Console transport object responsible for + * persisting log messages and metadata to a terminal or TTY. + * @param {!Object} [options={}] - Options for this instance. + */ + constructor(options = {}) { + super(options); + this.name = options.name || "console"; + this.stderrLevels = this._stringArrayToSet(options.stderrLevels); + this.consoleWarnLevels = this._stringArrayToSet(options.consoleWarnLevels); + this.eol = typeof options.eol === "string" ? options.eol : os5.EOL; + this.forceConsole = options.forceConsole || false; + this._consoleLog = console.log.bind(console); + this._consoleWarn = console.warn.bind(console); + this._consoleError = console.error.bind(console); + this.setMaxListeners(30); + } + /** + * Core logging method exposed to Winston. + * @param {Object} info - TODO: add param description. + * @param {Function} callback - TODO: add param description. + * @returns {undefined} + */ + log(info, callback) { + setImmediate(() => this.emit("logged", info)); + if (this.stderrLevels[info[LEVEL]]) { + if (console._stderr && !this.forceConsole) { + console._stderr.write(`${info[MESSAGE]}${this.eol}`); + } else { + this._consoleError(info[MESSAGE]); + } + if (callback) { + callback(); + } + return; + } else if (this.consoleWarnLevels[info[LEVEL]]) { + if (console._stderr && !this.forceConsole) { + console._stderr.write(`${info[MESSAGE]}${this.eol}`); + } else { + this._consoleWarn(info[MESSAGE]); + } + if (callback) { + callback(); + } + return; + } + if (console._stdout && !this.forceConsole) { + console._stdout.write(`${info[MESSAGE]}${this.eol}`); + } else { + this._consoleLog(info[MESSAGE]); + } + if (callback) { + callback(); + } + } + /** + * Returns a Set-like object with strArray's elements as keys (each with the + * value true). + * @param {Array} strArray - Array of Set-elements as strings. + * @param {?string} [errMsg] - Custom error message thrown on invalid input. + * @returns {Object} - TODO: add return description. + * @private + */ + _stringArrayToSet(strArray, errMsg) { + if (!strArray) return {}; + errMsg = errMsg || "Cannot make set from type other than Array of string elements"; + if (!Array.isArray(strArray)) { + throw new Error(errMsg); + } + return strArray.reduce((set, el) => { + if (typeof el !== "string") { + throw new Error(errMsg); + } + set[el] = true; + return set; + }, {}); + } + }; + } +}); + +// node_modules/async/internal/isArrayLike.js +var require_isArrayLike = __commonJS({ + "node_modules/async/internal/isArrayLike.js"(exports2, module2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + exports2.default = isArrayLike; + function isArrayLike(value) { + return value && typeof value.length === "number" && value.length >= 0 && value.length % 1 === 0; + } + module2.exports = exports2.default; + } +}); + +// node_modules/async/internal/initialParams.js +var require_initialParams = __commonJS({ + "node_modules/async/internal/initialParams.js"(exports2, module2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + exports2.default = function(fn) { + return function(...args) { + var callback = args.pop(); + return fn.call(this, args, callback); + }; + }; + module2.exports = exports2.default; + } +}); + +// node_modules/async/internal/setImmediate.js +var require_setImmediate = __commonJS({ + "node_modules/async/internal/setImmediate.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + exports2.fallback = fallback; + exports2.wrap = wrap; + var hasQueueMicrotask = exports2.hasQueueMicrotask = typeof queueMicrotask === "function" && queueMicrotask; + var hasSetImmediate = exports2.hasSetImmediate = typeof setImmediate === "function" && setImmediate; + var hasNextTick = exports2.hasNextTick = typeof process === "object" && typeof process.nextTick === "function"; + function fallback(fn) { + setTimeout(fn, 0); + } + function wrap(defer) { + return (fn, ...args) => defer(() => fn(...args)); + } + var _defer; + if (hasQueueMicrotask) { + _defer = queueMicrotask; + } else if (hasSetImmediate) { + _defer = setImmediate; + } else if (hasNextTick) { + _defer = process.nextTick; + } else { + _defer = fallback; + } + exports2.default = wrap(_defer); + } +}); + +// node_modules/async/asyncify.js +var require_asyncify = __commonJS({ + "node_modules/async/asyncify.js"(exports2, module2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + exports2.default = asyncify; + var _initialParams = require_initialParams(); + var _initialParams2 = _interopRequireDefault(_initialParams); + var _setImmediate = require_setImmediate(); + var _setImmediate2 = _interopRequireDefault(_setImmediate); + var _wrapAsync = require_wrapAsync(); + function _interopRequireDefault(obj) { + return obj && obj.__esModule ? obj : { default: obj }; + } + function asyncify(func) { + if ((0, _wrapAsync.isAsync)(func)) { + return function(...args) { + const callback = args.pop(); + const promise = func.apply(this, args); + return handlePromise(promise, callback); + }; + } + return (0, _initialParams2.default)(function(args, callback) { + var result; + try { + result = func.apply(this, args); + } catch (e) { + return callback(e); + } + if (result && typeof result.then === "function") { + return handlePromise(result, callback); + } else { + callback(null, result); + } + }); + } + function handlePromise(promise, callback) { + return promise.then((value) => { + invokeCallback(callback, null, value); + }, (err) => { + invokeCallback(callback, err && (err instanceof Error || err.message) ? err : new Error(err)); + }); + } + function invokeCallback(callback, error2, value) { + try { + callback(error2, value); + } catch (err) { + (0, _setImmediate2.default)((e) => { + throw e; + }, err); + } + } + module2.exports = exports2.default; + } +}); + +// node_modules/async/internal/wrapAsync.js +var require_wrapAsync = __commonJS({ + "node_modules/async/internal/wrapAsync.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + exports2.isAsyncIterable = exports2.isAsyncGenerator = exports2.isAsync = void 0; + var _asyncify = require_asyncify(); + var _asyncify2 = _interopRequireDefault(_asyncify); + function _interopRequireDefault(obj) { + return obj && obj.__esModule ? obj : { default: obj }; + } + function isAsync2(fn) { + return fn[Symbol.toStringTag] === "AsyncFunction"; + } + function isAsyncGenerator(fn) { + return fn[Symbol.toStringTag] === "AsyncGenerator"; + } + function isAsyncIterable(obj) { + return typeof obj[Symbol.asyncIterator] === "function"; + } + function wrapAsync(asyncFn) { + if (typeof asyncFn !== "function") throw new Error("expected a function"); + return isAsync2(asyncFn) ? (0, _asyncify2.default)(asyncFn) : asyncFn; + } + exports2.default = wrapAsync; + exports2.isAsync = isAsync2; + exports2.isAsyncGenerator = isAsyncGenerator; + exports2.isAsyncIterable = isAsyncIterable; + } +}); + +// node_modules/async/internal/awaitify.js +var require_awaitify = __commonJS({ + "node_modules/async/internal/awaitify.js"(exports2, module2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + exports2.default = awaitify; + function awaitify(asyncFn, arity) { + if (!arity) arity = asyncFn.length; + if (!arity) throw new Error("arity is undefined"); + function awaitable(...args) { + if (typeof args[arity - 1] === "function") { + return asyncFn.apply(this, args); + } + return new Promise((resolve, reject) => { + args[arity - 1] = (err, ...cbArgs) => { + if (err) return reject(err); + resolve(cbArgs.length > 1 ? cbArgs : cbArgs[0]); + }; + asyncFn.apply(this, args); + }); + } + return awaitable; + } + module2.exports = exports2.default; + } +}); + +// node_modules/async/internal/parallel.js +var require_parallel = __commonJS({ + "node_modules/async/internal/parallel.js"(exports2, module2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + var _isArrayLike = require_isArrayLike(); + var _isArrayLike2 = _interopRequireDefault(_isArrayLike); + var _wrapAsync = require_wrapAsync(); + var _wrapAsync2 = _interopRequireDefault(_wrapAsync); + var _awaitify = require_awaitify(); + var _awaitify2 = _interopRequireDefault(_awaitify); + function _interopRequireDefault(obj) { + return obj && obj.__esModule ? obj : { default: obj }; + } + exports2.default = (0, _awaitify2.default)((eachfn, tasks, callback) => { + var results = (0, _isArrayLike2.default)(tasks) ? [] : {}; + eachfn(tasks, (task, key, taskCb) => { + (0, _wrapAsync2.default)(task)((err, ...result) => { + if (result.length < 2) { + [result] = result; + } + results[key] = result; + taskCb(err); + }); + }, (err) => callback(err, results)); + }, 3); + module2.exports = exports2.default; + } +}); + +// node_modules/async/internal/once.js +var require_once = __commonJS({ + "node_modules/async/internal/once.js"(exports2, module2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + exports2.default = once; + function once(fn) { + function wrapper(...args) { + if (fn === null) return; + var callFn = fn; + fn = null; + callFn.apply(this, args); + } + Object.assign(wrapper, fn); + return wrapper; + } + module2.exports = exports2.default; + } +}); + +// node_modules/async/internal/getIterator.js +var require_getIterator = __commonJS({ + "node_modules/async/internal/getIterator.js"(exports2, module2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + exports2.default = function(coll) { + return coll[Symbol.iterator] && coll[Symbol.iterator](); + }; + module2.exports = exports2.default; + } +}); + +// node_modules/async/internal/iterator.js +var require_iterator = __commonJS({ + "node_modules/async/internal/iterator.js"(exports2, module2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + exports2.default = createIterator; + var _isArrayLike = require_isArrayLike(); + var _isArrayLike2 = _interopRequireDefault(_isArrayLike); + var _getIterator = require_getIterator(); + var _getIterator2 = _interopRequireDefault(_getIterator); + function _interopRequireDefault(obj) { + return obj && obj.__esModule ? obj : { default: obj }; + } + function createArrayIterator(coll) { + var i = -1; + var len = coll.length; + return function next() { + return ++i < len ? { value: coll[i], key: i } : null; + }; + } + function createES2015Iterator(iterator) { + var i = -1; + return function next() { + var item = iterator.next(); + if (item.done) return null; + i++; + return { value: item.value, key: i }; + }; + } + function createObjectIterator(obj) { + var okeys = obj ? Object.keys(obj) : []; + var i = -1; + var len = okeys.length; + return function next() { + var key = okeys[++i]; + if (key === "__proto__") { + return next(); + } + return i < len ? { value: obj[key], key } : null; + }; + } + function createIterator(coll) { + if ((0, _isArrayLike2.default)(coll)) { + return createArrayIterator(coll); + } + var iterator = (0, _getIterator2.default)(coll); + return iterator ? createES2015Iterator(iterator) : createObjectIterator(coll); + } + module2.exports = exports2.default; + } +}); + +// node_modules/async/internal/onlyOnce.js +var require_onlyOnce = __commonJS({ + "node_modules/async/internal/onlyOnce.js"(exports2, module2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + exports2.default = onlyOnce; + function onlyOnce(fn) { + return function(...args) { + if (fn === null) throw new Error("Callback was already called."); + var callFn = fn; + fn = null; + callFn.apply(this, args); + }; + } + module2.exports = exports2.default; + } +}); + +// node_modules/async/internal/breakLoop.js +var require_breakLoop = __commonJS({ + "node_modules/async/internal/breakLoop.js"(exports2, module2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + var breakLoop = {}; + exports2.default = breakLoop; + module2.exports = exports2.default; + } +}); + +// node_modules/async/internal/asyncEachOfLimit.js +var require_asyncEachOfLimit = __commonJS({ + "node_modules/async/internal/asyncEachOfLimit.js"(exports2, module2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + exports2.default = asyncEachOfLimit; + var _breakLoop = require_breakLoop(); + var _breakLoop2 = _interopRequireDefault(_breakLoop); + function _interopRequireDefault(obj) { + return obj && obj.__esModule ? obj : { default: obj }; + } + function asyncEachOfLimit(generator, limit, iteratee, callback) { + let done = false; + let canceled = false; + let awaiting = false; + let running = 0; + let idx = 0; + function replenish() { + if (running >= limit || awaiting || done) return; + awaiting = true; + generator.next().then(({ value, done: iterDone }) => { + if (canceled || done) return; + awaiting = false; + if (iterDone) { + done = true; + if (running <= 0) { + callback(null); + } + return; + } + running++; + iteratee(value, idx, iterateeCallback); + idx++; + replenish(); + }).catch(handleError); + } + function iterateeCallback(err, result) { + running -= 1; + if (canceled) return; + if (err) return handleError(err); + if (err === false) { + done = true; + canceled = true; + return; + } + if (result === _breakLoop2.default || done && running <= 0) { + done = true; + return callback(null); + } + replenish(); + } + function handleError(err) { + if (canceled) return; + awaiting = false; + done = true; + callback(err); + } + replenish(); + } + module2.exports = exports2.default; + } +}); + +// node_modules/async/internal/eachOfLimit.js +var require_eachOfLimit = __commonJS({ + "node_modules/async/internal/eachOfLimit.js"(exports2, module2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + var _once = require_once(); + var _once2 = _interopRequireDefault(_once); + var _iterator = require_iterator(); + var _iterator2 = _interopRequireDefault(_iterator); + var _onlyOnce = require_onlyOnce(); + var _onlyOnce2 = _interopRequireDefault(_onlyOnce); + var _wrapAsync = require_wrapAsync(); + var _asyncEachOfLimit = require_asyncEachOfLimit(); + var _asyncEachOfLimit2 = _interopRequireDefault(_asyncEachOfLimit); + var _breakLoop = require_breakLoop(); + var _breakLoop2 = _interopRequireDefault(_breakLoop); + function _interopRequireDefault(obj) { + return obj && obj.__esModule ? obj : { default: obj }; + } + exports2.default = (limit) => { + return (obj, iteratee, callback) => { + callback = (0, _once2.default)(callback); + if (limit <= 0) { + throw new RangeError("concurrency limit cannot be less than 1"); + } + if (!obj) { + return callback(null); + } + if ((0, _wrapAsync.isAsyncGenerator)(obj)) { + return (0, _asyncEachOfLimit2.default)(obj, limit, iteratee, callback); + } + if ((0, _wrapAsync.isAsyncIterable)(obj)) { + return (0, _asyncEachOfLimit2.default)(obj[Symbol.asyncIterator](), limit, iteratee, callback); + } + var nextElem = (0, _iterator2.default)(obj); + var done = false; + var canceled = false; + var running = 0; + var looping = false; + function iterateeCallback(err, value) { + if (canceled) return; + running -= 1; + if (err) { + done = true; + callback(err); + } else if (err === false) { + done = true; + canceled = true; + } else if (value === _breakLoop2.default || done && running <= 0) { + done = true; + return callback(null); + } else if (!looping) { + replenish(); + } + } + function replenish() { + looping = true; + while (running < limit && !done) { + var elem = nextElem(); + if (elem === null) { + done = true; + if (running <= 0) { + callback(null); + } + return; + } + running += 1; + iteratee(elem.value, elem.key, (0, _onlyOnce2.default)(iterateeCallback)); + } + looping = false; + } + replenish(); + }; + }; + module2.exports = exports2.default; + } +}); + +// node_modules/async/eachOfLimit.js +var require_eachOfLimit2 = __commonJS({ + "node_modules/async/eachOfLimit.js"(exports2, module2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + var _eachOfLimit2 = require_eachOfLimit(); + var _eachOfLimit3 = _interopRequireDefault(_eachOfLimit2); + var _wrapAsync = require_wrapAsync(); + var _wrapAsync2 = _interopRequireDefault(_wrapAsync); + var _awaitify = require_awaitify(); + var _awaitify2 = _interopRequireDefault(_awaitify); + function _interopRequireDefault(obj) { + return obj && obj.__esModule ? obj : { default: obj }; + } + function eachOfLimit(coll, limit, iteratee, callback) { + return (0, _eachOfLimit3.default)(limit)(coll, (0, _wrapAsync2.default)(iteratee), callback); + } + exports2.default = (0, _awaitify2.default)(eachOfLimit, 4); + module2.exports = exports2.default; + } +}); + +// node_modules/async/eachOfSeries.js +var require_eachOfSeries = __commonJS({ + "node_modules/async/eachOfSeries.js"(exports2, module2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + var _eachOfLimit = require_eachOfLimit2(); + var _eachOfLimit2 = _interopRequireDefault(_eachOfLimit); + var _awaitify = require_awaitify(); + var _awaitify2 = _interopRequireDefault(_awaitify); + function _interopRequireDefault(obj) { + return obj && obj.__esModule ? obj : { default: obj }; + } + function eachOfSeries(coll, iteratee, callback) { + return (0, _eachOfLimit2.default)(coll, 1, iteratee, callback); + } + exports2.default = (0, _awaitify2.default)(eachOfSeries, 3); + module2.exports = exports2.default; + } +}); + +// node_modules/async/series.js +var require_series = __commonJS({ + "node_modules/async/series.js"(exports2, module2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + exports2.default = series; + var _parallel2 = require_parallel(); + var _parallel3 = _interopRequireDefault(_parallel2); + var _eachOfSeries = require_eachOfSeries(); + var _eachOfSeries2 = _interopRequireDefault(_eachOfSeries); + function _interopRequireDefault(obj) { + return obj && obj.__esModule ? obj : { default: obj }; + } + function series(tasks, callback) { + return (0, _parallel3.default)(_eachOfSeries2.default, tasks, callback); + } + module2.exports = exports2.default; + } +}); + +// node_modules/readable-stream/lib/_stream_transform.js +var require_stream_transform = __commonJS({ + "node_modules/readable-stream/lib/_stream_transform.js"(exports2, module2) { + "use strict"; + module2.exports = Transform2; + var _require$codes = require_errors2().codes; + var ERR_METHOD_NOT_IMPLEMENTED = _require$codes.ERR_METHOD_NOT_IMPLEMENTED; + var ERR_MULTIPLE_CALLBACK = _require$codes.ERR_MULTIPLE_CALLBACK; + var ERR_TRANSFORM_ALREADY_TRANSFORMING = _require$codes.ERR_TRANSFORM_ALREADY_TRANSFORMING; + var ERR_TRANSFORM_WITH_LENGTH_0 = _require$codes.ERR_TRANSFORM_WITH_LENGTH_0; + var Duplex = require_stream_duplex(); + require_inherits()(Transform2, Duplex); + function afterTransform(er, data) { + var ts = this._transformState; + ts.transforming = false; + var cb = ts.writecb; + if (cb === null) { + return this.emit("error", new ERR_MULTIPLE_CALLBACK()); + } + ts.writechunk = null; + ts.writecb = null; + if (data != null) + this.push(data); + cb(er); + var rs = this._readableState; + rs.reading = false; + if (rs.needReadable || rs.length < rs.highWaterMark) { + this._read(rs.highWaterMark); + } + } + function Transform2(options) { + if (!(this instanceof Transform2)) return new Transform2(options); + Duplex.call(this, options); + this._transformState = { + afterTransform: afterTransform.bind(this), + needTransform: false, + transforming: false, + writecb: null, + writechunk: null, + writeencoding: null + }; + this._readableState.needReadable = true; + this._readableState.sync = false; + if (options) { + if (typeof options.transform === "function") this._transform = options.transform; + if (typeof options.flush === "function") this._flush = options.flush; + } + this.on("prefinish", prefinish); + } + function prefinish() { + var _this = this; + if (typeof this._flush === "function" && !this._readableState.destroyed) { + this._flush(function(er, data) { + done(_this, er, data); + }); + } else { + done(this, null, null); + } + } + Transform2.prototype.push = function(chunk, encoding) { + this._transformState.needTransform = false; + return Duplex.prototype.push.call(this, chunk, encoding); + }; + Transform2.prototype._transform = function(chunk, encoding, cb) { + cb(new ERR_METHOD_NOT_IMPLEMENTED("_transform()")); + }; + Transform2.prototype._write = function(chunk, encoding, cb) { + var ts = this._transformState; + ts.writecb = cb; + ts.writechunk = chunk; + ts.writeencoding = encoding; + if (!ts.transforming) { + var rs = this._readableState; + if (ts.needTransform || rs.needReadable || rs.length < rs.highWaterMark) this._read(rs.highWaterMark); + } + }; + Transform2.prototype._read = function(n) { + var ts = this._transformState; + if (ts.writechunk !== null && !ts.transforming) { + ts.transforming = true; + this._transform(ts.writechunk, ts.writeencoding, ts.afterTransform); + } else { + ts.needTransform = true; + } + }; + Transform2.prototype._destroy = function(err, cb) { + Duplex.prototype._destroy.call(this, err, function(err2) { + cb(err2); + }); + }; + function done(stream, er, data) { + if (er) return stream.emit("error", er); + if (data != null) + stream.push(data); + if (stream._writableState.length) throw new ERR_TRANSFORM_WITH_LENGTH_0(); + if (stream._transformState.transforming) throw new ERR_TRANSFORM_ALREADY_TRANSFORMING(); + return stream.push(null); + } + } +}); + +// node_modules/readable-stream/lib/_stream_passthrough.js +var require_stream_passthrough = __commonJS({ + "node_modules/readable-stream/lib/_stream_passthrough.js"(exports2, module2) { + "use strict"; + module2.exports = PassThrough; + var Transform2 = require_stream_transform(); + require_inherits()(PassThrough, Transform2); + function PassThrough(options) { + if (!(this instanceof PassThrough)) return new PassThrough(options); + Transform2.call(this, options); + } + PassThrough.prototype._transform = function(chunk, encoding, cb) { + cb(null, chunk); + }; + } +}); + +// node_modules/readable-stream/lib/internal/streams/pipeline.js +var require_pipeline = __commonJS({ + "node_modules/readable-stream/lib/internal/streams/pipeline.js"(exports2, module2) { + "use strict"; + var eos; + function once(callback) { + var called = false; + return function() { + if (called) return; + called = true; + callback.apply(void 0, arguments); + }; + } + var _require$codes = require_errors2().codes; + var ERR_MISSING_ARGS = _require$codes.ERR_MISSING_ARGS; + var ERR_STREAM_DESTROYED = _require$codes.ERR_STREAM_DESTROYED; + function noop(err) { + if (err) throw err; + } + function isRequest(stream) { + return stream.setHeader && typeof stream.abort === "function"; + } + function destroyer(stream, reading, writing, callback) { + callback = once(callback); + var closed = false; + stream.on("close", function() { + closed = true; + }); + if (eos === void 0) eos = require_end_of_stream(); + eos(stream, { + readable: reading, + writable: writing + }, function(err) { + if (err) return callback(err); + closed = true; + callback(); + }); + var destroyed = false; + return function(err) { + if (closed) return; + if (destroyed) return; + destroyed = true; + if (isRequest(stream)) return stream.abort(); + if (typeof stream.destroy === "function") return stream.destroy(); + callback(err || new ERR_STREAM_DESTROYED("pipe")); + }; + } + function call(fn) { + fn(); + } + function pipe2(from, to) { + return from.pipe(to); + } + function popCallback(streams) { + if (!streams.length) return noop; + if (typeof streams[streams.length - 1] !== "function") return noop; + return streams.pop(); + } + function pipeline() { + for (var _len = arguments.length, streams = new Array(_len), _key = 0; _key < _len; _key++) { + streams[_key] = arguments[_key]; + } + var callback = popCallback(streams); + if (Array.isArray(streams[0])) streams = streams[0]; + if (streams.length < 2) { + throw new ERR_MISSING_ARGS("streams"); + } + var error2; + var destroys = streams.map(function(stream, i) { + var reading = i < streams.length - 1; + var writing = i > 0; + return destroyer(stream, reading, writing, function(err) { + if (!error2) error2 = err; + if (err) destroys.forEach(call); + if (reading) return; + destroys.forEach(call); + callback(error2); + }); + }); + return streams.reduce(pipe2); + } + module2.exports = pipeline; + } +}); + +// node_modules/readable-stream/readable.js +var require_readable = __commonJS({ + "node_modules/readable-stream/readable.js"(exports2, module2) { + var Stream = require("stream"); + if (process.env.READABLE_STREAM === "disable" && Stream) { + module2.exports = Stream.Readable; + Object.assign(module2.exports, Stream); + module2.exports.Stream = Stream; + } else { + exports2 = module2.exports = require_stream_readable(); + exports2.Stream = Stream || exports2; + exports2.Readable = exports2; + exports2.Writable = require_stream_writable(); + exports2.Duplex = require_stream_duplex(); + exports2.Transform = require_stream_transform(); + exports2.PassThrough = require_stream_passthrough(); + exports2.finished = require_end_of_stream(); + exports2.pipeline = require_pipeline(); + } + } +}); + +// node_modules/@dabh/diagnostics/diagnostics.js +var require_diagnostics = __commonJS({ + "node_modules/@dabh/diagnostics/diagnostics.js"(exports2, module2) { + var adapters = []; + var modifiers = []; + var logger31 = function devnull() { + }; + function use(adapter) { + if (~adapters.indexOf(adapter)) return false; + adapters.push(adapter); + return true; + } + function set(custom4) { + logger31 = custom4; + } + function enabled2(namespace) { + var async = []; + for (var i = 0; i < adapters.length; i++) { + if (adapters[i].async) { + async.push(adapters[i]); + continue; + } + if (adapters[i](namespace)) return true; + } + if (!async.length) return false; + return new Promise(function pinky(resolve) { + Promise.all( + async.map(function prebind(fn) { + return fn(namespace); + }) + ).then(function resolved(values) { + resolve(values.some(Boolean)); + }); + }); + } + function modify(fn) { + if (~modifiers.indexOf(fn)) return false; + modifiers.push(fn); + return true; + } + function write() { + logger31.apply(logger31, arguments); + } + function process15(message) { + for (var i = 0; i < modifiers.length; i++) { + message = modifiers[i].apply(modifiers[i], arguments); + } + return message; + } + function introduce(fn, options) { + var has = Object.prototype.hasOwnProperty; + for (var key in options) { + if (has.call(options, key)) { + fn[key] = options[key]; + } + } + return fn; + } + function nope(options) { + options.enabled = false; + options.modify = modify; + options.set = set; + options.use = use; + return introduce(function diagnopes() { + return false; + }, options); + } + function yep(options) { + function diagnostics() { + var args = Array.prototype.slice.call(arguments, 0); + write.call(write, options, process15(args, options)); + return true; + } + options.enabled = true; + options.modify = modify; + options.set = set; + options.use = use; + return introduce(diagnostics, options); + } + module2.exports = function create(diagnostics) { + diagnostics.introduce = introduce; + diagnostics.enabled = enabled2; + diagnostics.process = process15; + diagnostics.modify = modify; + diagnostics.write = write; + diagnostics.nope = nope; + diagnostics.yep = yep; + diagnostics.set = set; + diagnostics.use = use; + return diagnostics; + }; + } +}); + +// node_modules/@dabh/diagnostics/node/production.js +var require_production = __commonJS({ + "node_modules/@dabh/diagnostics/node/production.js"(exports2, module2) { + var create = require_diagnostics(); + var diagnostics = create(function prod(namespace, options) { + options = options || {}; + options.namespace = namespace; + options.prod = true; + options.dev = false; + if (!(options.force || prod.force)) return prod.nope(options); + return prod.yep(options); + }); + module2.exports = diagnostics; + } +}); + +// node_modules/@so-ric/colorspace/dist/index.cjs.js +var require_index_cjs = __commonJS({ + "node_modules/@so-ric/colorspace/dist/index.cjs.js"(exports2, module2) { + "use strict"; + var cssKeywords = { + aliceblue: [240, 248, 255], + antiquewhite: [250, 235, 215], + aqua: [0, 255, 255], + aquamarine: [127, 255, 212], + azure: [240, 255, 255], + beige: [245, 245, 220], + bisque: [255, 228, 196], + black: [0, 0, 0], + blanchedalmond: [255, 235, 205], + blue: [0, 0, 255], + blueviolet: [138, 43, 226], + brown: [165, 42, 42], + burlywood: [222, 184, 135], + cadetblue: [95, 158, 160], + chartreuse: [127, 255, 0], + chocolate: [210, 105, 30], + coral: [255, 127, 80], + cornflowerblue: [100, 149, 237], + cornsilk: [255, 248, 220], + crimson: [220, 20, 60], + cyan: [0, 255, 255], + darkblue: [0, 0, 139], + darkcyan: [0, 139, 139], + darkgoldenrod: [184, 134, 11], + darkgray: [169, 169, 169], + darkgreen: [0, 100, 0], + darkgrey: [169, 169, 169], + darkkhaki: [189, 183, 107], + darkmagenta: [139, 0, 139], + darkolivegreen: [85, 107, 47], + darkorange: [255, 140, 0], + darkorchid: [153, 50, 204], + darkred: [139, 0, 0], + darksalmon: [233, 150, 122], + darkseagreen: [143, 188, 143], + darkslateblue: [72, 61, 139], + darkslategray: [47, 79, 79], + darkslategrey: [47, 79, 79], + darkturquoise: [0, 206, 209], + darkviolet: [148, 0, 211], + deeppink: [255, 20, 147], + deepskyblue: [0, 191, 255], + dimgray: [105, 105, 105], + dimgrey: [105, 105, 105], + dodgerblue: [30, 144, 255], + firebrick: [178, 34, 34], + floralwhite: [255, 250, 240], + forestgreen: [34, 139, 34], + fuchsia: [255, 0, 255], + gainsboro: [220, 220, 220], + ghostwhite: [248, 248, 255], + gold: [255, 215, 0], + goldenrod: [218, 165, 32], + gray: [128, 128, 128], + green: [0, 128, 0], + greenyellow: [173, 255, 47], + grey: [128, 128, 128], + honeydew: [240, 255, 240], + hotpink: [255, 105, 180], + indianred: [205, 92, 92], + indigo: [75, 0, 130], + ivory: [255, 255, 240], + khaki: [240, 230, 140], + lavender: [230, 230, 250], + lavenderblush: [255, 240, 245], + lawngreen: [124, 252, 0], + lemonchiffon: [255, 250, 205], + lightblue: [173, 216, 230], + lightcoral: [240, 128, 128], + lightcyan: [224, 255, 255], + lightgoldenrodyellow: [250, 250, 210], + lightgray: [211, 211, 211], + lightgreen: [144, 238, 144], + lightgrey: [211, 211, 211], + lightpink: [255, 182, 193], + lightsalmon: [255, 160, 122], + lightseagreen: [32, 178, 170], + lightskyblue: [135, 206, 250], + lightslategray: [119, 136, 153], + lightslategrey: [119, 136, 153], + lightsteelblue: [176, 196, 222], + lightyellow: [255, 255, 224], + lime: [0, 255, 0], + limegreen: [50, 205, 50], + linen: [250, 240, 230], + magenta: [255, 0, 255], + maroon: [128, 0, 0], + mediumaquamarine: [102, 205, 170], + mediumblue: [0, 0, 205], + mediumorchid: [186, 85, 211], + mediumpurple: [147, 112, 219], + mediumseagreen: [60, 179, 113], + mediumslateblue: [123, 104, 238], + mediumspringgreen: [0, 250, 154], + mediumturquoise: [72, 209, 204], + mediumvioletred: [199, 21, 133], + midnightblue: [25, 25, 112], + mintcream: [245, 255, 250], + mistyrose: [255, 228, 225], + moccasin: [255, 228, 181], + navajowhite: [255, 222, 173], + navy: [0, 0, 128], + oldlace: [253, 245, 230], + olive: [128, 128, 0], + olivedrab: [107, 142, 35], + orange: [255, 165, 0], + orangered: [255, 69, 0], + orchid: [218, 112, 214], + palegoldenrod: [238, 232, 170], + palegreen: [152, 251, 152], + paleturquoise: [175, 238, 238], + palevioletred: [219, 112, 147], + papayawhip: [255, 239, 213], + peachpuff: [255, 218, 185], + peru: [205, 133, 63], + pink: [255, 192, 203], + plum: [221, 160, 221], + powderblue: [176, 224, 230], + purple: [128, 0, 128], + rebeccapurple: [102, 51, 153], + red: [255, 0, 0], + rosybrown: [188, 143, 143], + royalblue: [65, 105, 225], + saddlebrown: [139, 69, 19], + salmon: [250, 128, 114], + sandybrown: [244, 164, 96], + seagreen: [46, 139, 87], + seashell: [255, 245, 238], + sienna: [160, 82, 45], + silver: [192, 192, 192], + skyblue: [135, 206, 235], + slateblue: [106, 90, 205], + slategray: [112, 128, 144], + slategrey: [112, 128, 144], + snow: [255, 250, 250], + springgreen: [0, 255, 127], + steelblue: [70, 130, 180], + tan: [210, 180, 140], + teal: [0, 128, 128], + thistle: [216, 191, 216], + tomato: [255, 99, 71], + turquoise: [64, 224, 208], + violet: [238, 130, 238], + wheat: [245, 222, 179], + white: [255, 255, 255], + whitesmoke: [245, 245, 245], + yellow: [255, 255, 0], + yellowgreen: [154, 205, 50] + }; + var reverseNames = /* @__PURE__ */ Object.create(null); + for (const name5 in cssKeywords) { + if (Object.hasOwn(cssKeywords, name5)) { + reverseNames[cssKeywords[name5]] = name5; + } + } + var cs = { + to: {}, + get: {} + }; + cs.get = function(string4) { + const prefix = string4.slice(0, 3).toLowerCase(); + let value; + let model; + switch (prefix) { + case "hsl": { + value = cs.get.hsl(string4); + model = "hsl"; + break; + } + case "hwb": { + value = cs.get.hwb(string4); + model = "hwb"; + break; + } + default: { + value = cs.get.rgb(string4); + model = "rgb"; + break; + } + } + if (!value) { + return null; + } + return { model, value }; + }; + cs.get.rgb = function(string4) { + if (!string4) { + return null; + } + const abbr = /^#([a-f\d]{3,4})$/i; + const hex2 = /^#([a-f\d]{6})([a-f\d]{2})?$/i; + const rgba = /^rgba?\(\s*([+-]?\d+)(?=[\s,])\s*(?:,\s*)?([+-]?\d+)(?=[\s,])\s*(?:,\s*)?([+-]?\d+)\s*(?:[\s,|/]\s*([+-]?[\d.]+)(%?)\s*)?\)$/; + const per = /^rgba?\(\s*([+-]?[\d.]+)%\s*,?\s*([+-]?[\d.]+)%\s*,?\s*([+-]?[\d.]+)%\s*(?:[\s,|/]\s*([+-]?[\d.]+)(%?)\s*)?\)$/; + const keyword = /^(\w+)$/; + let rgb = [0, 0, 0, 1]; + let match; + let i; + let hexAlpha; + if (match = string4.match(hex2)) { + hexAlpha = match[2]; + match = match[1]; + for (i = 0; i < 3; i++) { + const i2 = i * 2; + rgb[i] = Number.parseInt(match.slice(i2, i2 + 2), 16); + } + if (hexAlpha) { + rgb[3] = Number.parseInt(hexAlpha, 16) / 255; + } + } else if (match = string4.match(abbr)) { + match = match[1]; + hexAlpha = match[3]; + for (i = 0; i < 3; i++) { + rgb[i] = Number.parseInt(match[i] + match[i], 16); + } + if (hexAlpha) { + rgb[3] = Number.parseInt(hexAlpha + hexAlpha, 16) / 255; + } + } else if (match = string4.match(rgba)) { + for (i = 0; i < 3; i++) { + rgb[i] = Number.parseInt(match[i + 1], 10); + } + if (match[4]) { + rgb[3] = match[5] ? Number.parseFloat(match[4]) * 0.01 : Number.parseFloat(match[4]); + } + } else if (match = string4.match(per)) { + for (i = 0; i < 3; i++) { + rgb[i] = Math.round(Number.parseFloat(match[i + 1]) * 2.55); + } + if (match[4]) { + rgb[3] = match[5] ? Number.parseFloat(match[4]) * 0.01 : Number.parseFloat(match[4]); + } + } else if (match = string4.match(keyword)) { + if (match[1] === "transparent") { + return [0, 0, 0, 0]; + } + if (!Object.hasOwn(cssKeywords, match[1])) { + return null; + } + rgb = cssKeywords[match[1]]; + rgb[3] = 1; + return rgb; + } else { + return null; + } + for (i = 0; i < 3; i++) { + rgb[i] = clamp(rgb[i], 0, 255); + } + rgb[3] = clamp(rgb[3], 0, 1); + return rgb; + }; + cs.get.hsl = function(string4) { + if (!string4) { + return null; + } + const hsl = /^hsla?\(\s*([+-]?(?:\d{0,3}\.)?\d+)(?:deg)?\s*,?\s*([+-]?[\d.]+)%\s*,?\s*([+-]?[\d.]+)%\s*(?:[,|/]\s*([+-]?(?=\.\d|\d)(?:0|[1-9]\d*)?(?:\.\d*)?(?:[eE][+-]?\d+)?)\s*)?\)$/; + const match = string4.match(hsl); + if (match) { + const alpha = Number.parseFloat(match[4]); + const h = (Number.parseFloat(match[1]) % 360 + 360) % 360; + const s = clamp(Number.parseFloat(match[2]), 0, 100); + const l = clamp(Number.parseFloat(match[3]), 0, 100); + const a = clamp(Number.isNaN(alpha) ? 1 : alpha, 0, 1); + return [h, s, l, a]; + } + return null; + }; + cs.get.hwb = function(string4) { + if (!string4) { + return null; + } + const hwb = /^hwb\(\s*([+-]?\d{0,3}(?:\.\d+)?)(?:deg)?\s*[\s,]\s*([+-]?[\d.]+)%\s*[\s,]\s*([+-]?[\d.]+)%\s*(?:[\s,]\s*([+-]?(?=\.\d|\d)(?:0|[1-9]\d*)?(?:\.\d*)?(?:[eE][+-]?\d+)?)\s*)?\)$/; + const match = string4.match(hwb); + if (match) { + const alpha = Number.parseFloat(match[4]); + const h = (Number.parseFloat(match[1]) % 360 + 360) % 360; + const w = clamp(Number.parseFloat(match[2]), 0, 100); + const b = clamp(Number.parseFloat(match[3]), 0, 100); + const a = clamp(Number.isNaN(alpha) ? 1 : alpha, 0, 1); + return [h, w, b, a]; + } + return null; + }; + cs.to.hex = function(...rgba) { + return "#" + hexDouble(rgba[0]) + hexDouble(rgba[1]) + hexDouble(rgba[2]) + (rgba[3] < 1 ? hexDouble(Math.round(rgba[3] * 255)) : ""); + }; + cs.to.rgb = function(...rgba) { + return rgba.length < 4 || rgba[3] === 1 ? "rgb(" + Math.round(rgba[0]) + ", " + Math.round(rgba[1]) + ", " + Math.round(rgba[2]) + ")" : "rgba(" + Math.round(rgba[0]) + ", " + Math.round(rgba[1]) + ", " + Math.round(rgba[2]) + ", " + rgba[3] + ")"; + }; + cs.to.rgb.percent = function(...rgba) { + const r = Math.round(rgba[0] / 255 * 100); + const g = Math.round(rgba[1] / 255 * 100); + const b = Math.round(rgba[2] / 255 * 100); + return rgba.length < 4 || rgba[3] === 1 ? "rgb(" + r + "%, " + g + "%, " + b + "%)" : "rgba(" + r + "%, " + g + "%, " + b + "%, " + rgba[3] + ")"; + }; + cs.to.hsl = function(...hsla) { + return hsla.length < 4 || hsla[3] === 1 ? "hsl(" + hsla[0] + ", " + hsla[1] + "%, " + hsla[2] + "%)" : "hsla(" + hsla[0] + ", " + hsla[1] + "%, " + hsla[2] + "%, " + hsla[3] + ")"; + }; + cs.to.hwb = function(...hwba) { + let a = ""; + if (hwba.length >= 4 && hwba[3] !== 1) { + a = ", " + hwba[3]; + } + return "hwb(" + hwba[0] + ", " + hwba[1] + "%, " + hwba[2] + "%" + a + ")"; + }; + cs.to.keyword = function(...rgb) { + return reverseNames[rgb.slice(0, 3)]; + }; + function clamp(number_, min, max) { + return Math.min(Math.max(min, number_), max); + } + function hexDouble(number_) { + const string_ = Math.round(number_).toString(16).toUpperCase(); + return string_.length < 2 ? "0" + string_ : string_; + } + var reverseKeywords = {}; + for (const key of Object.keys(cssKeywords)) { + reverseKeywords[cssKeywords[key]] = key; + } + var convert$1 = { + rgb: { channels: 3, labels: "rgb" }, + hsl: { channels: 3, labels: "hsl" }, + hsv: { channels: 3, labels: "hsv" }, + hwb: { channels: 3, labels: "hwb" }, + cmyk: { channels: 4, labels: "cmyk" }, + xyz: { channels: 3, labels: "xyz" }, + lab: { channels: 3, labels: "lab" }, + oklab: { channels: 3, labels: ["okl", "oka", "okb"] }, + lch: { channels: 3, labels: "lch" }, + oklch: { channels: 3, labels: ["okl", "okc", "okh"] }, + hex: { channels: 1, labels: ["hex"] }, + keyword: { channels: 1, labels: ["keyword"] }, + ansi16: { channels: 1, labels: ["ansi16"] }, + ansi256: { channels: 1, labels: ["ansi256"] }, + hcg: { channels: 3, labels: ["h", "c", "g"] }, + apple: { channels: 3, labels: ["r16", "g16", "b16"] }, + gray: { channels: 1, labels: ["gray"] } + }; + var LAB_FT = (6 / 29) ** 3; + function srgbNonlinearTransform(c) { + const cc = c > 31308e-7 ? 1.055 * c ** (1 / 2.4) - 0.055 : c * 12.92; + return Math.min(Math.max(0, cc), 1); + } + function srgbNonlinearTransformInv(c) { + return c > 0.04045 ? ((c + 0.055) / 1.055) ** 2.4 : c / 12.92; + } + for (const model of Object.keys(convert$1)) { + if (!("channels" in convert$1[model])) { + throw new Error("missing channels property: " + model); + } + if (!("labels" in convert$1[model])) { + throw new Error("missing channel labels property: " + model); + } + if (convert$1[model].labels.length !== convert$1[model].channels) { + throw new Error("channel and label counts mismatch: " + model); + } + const { channels, labels } = convert$1[model]; + delete convert$1[model].channels; + delete convert$1[model].labels; + Object.defineProperty(convert$1[model], "channels", { value: channels }); + Object.defineProperty(convert$1[model], "labels", { value: labels }); + } + convert$1.rgb.hsl = function(rgb) { + const r = rgb[0] / 255; + const g = rgb[1] / 255; + const b = rgb[2] / 255; + const min = Math.min(r, g, b); + const max = Math.max(r, g, b); + const delta = max - min; + let h; + let s; + switch (max) { + case min: { + h = 0; + break; + } + case r: { + h = (g - b) / delta; + break; + } + case g: { + h = 2 + (b - r) / delta; + break; + } + case b: { + h = 4 + (r - g) / delta; + break; + } + } + h = Math.min(h * 60, 360); + if (h < 0) { + h += 360; + } + const l = (min + max) / 2; + if (max === min) { + s = 0; + } else if (l <= 0.5) { + s = delta / (max + min); + } else { + s = delta / (2 - max - min); + } + return [h, s * 100, l * 100]; + }; + convert$1.rgb.hsv = function(rgb) { + let rdif; + let gdif; + let bdif; + let h; + let s; + const r = rgb[0] / 255; + const g = rgb[1] / 255; + const b = rgb[2] / 255; + const v = Math.max(r, g, b); + const diff = v - Math.min(r, g, b); + const diffc = function(c) { + return (v - c) / 6 / diff + 1 / 2; + }; + if (diff === 0) { + h = 0; + s = 0; + } else { + s = diff / v; + rdif = diffc(r); + gdif = diffc(g); + bdif = diffc(b); + switch (v) { + case r: { + h = bdif - gdif; + break; + } + case g: { + h = 1 / 3 + rdif - bdif; + break; + } + case b: { + h = 2 / 3 + gdif - rdif; + break; + } + } + if (h < 0) { + h += 1; + } else if (h > 1) { + h -= 1; + } + } + return [ + h * 360, + s * 100, + v * 100 + ]; + }; + convert$1.rgb.hwb = function(rgb) { + const r = rgb[0]; + const g = rgb[1]; + let b = rgb[2]; + const h = convert$1.rgb.hsl(rgb)[0]; + const w = 1 / 255 * Math.min(r, Math.min(g, b)); + b = 1 - 1 / 255 * Math.max(r, Math.max(g, b)); + return [h, w * 100, b * 100]; + }; + convert$1.rgb.oklab = function(rgb) { + const r = srgbNonlinearTransformInv(rgb[0] / 255); + const g = srgbNonlinearTransformInv(rgb[1] / 255); + const b = srgbNonlinearTransformInv(rgb[2] / 255); + const lp = Math.cbrt(0.4122214708 * r + 0.5363325363 * g + 0.0514459929 * b); + const mp = Math.cbrt(0.2119034982 * r + 0.6806995451 * g + 0.1073969566 * b); + const sp = Math.cbrt(0.0883024619 * r + 0.2817188376 * g + 0.6299787005 * b); + const l = 0.2104542553 * lp + 0.793617785 * mp - 0.0040720468 * sp; + const aa = 1.9779984951 * lp - 2.428592205 * mp + 0.4505937099 * sp; + const bb = 0.0259040371 * lp + 0.7827717662 * mp - 0.808675766 * sp; + return [l * 100, aa * 100, bb * 100]; + }; + convert$1.rgb.cmyk = function(rgb) { + const r = rgb[0] / 255; + const g = rgb[1] / 255; + const b = rgb[2] / 255; + const k = Math.min(1 - r, 1 - g, 1 - b); + const c = (1 - r - k) / (1 - k) || 0; + const m = (1 - g - k) / (1 - k) || 0; + const y = (1 - b - k) / (1 - k) || 0; + return [c * 100, m * 100, y * 100, k * 100]; + }; + function comparativeDistance(x, y) { + return (x[0] - y[0]) ** 2 + (x[1] - y[1]) ** 2 + (x[2] - y[2]) ** 2; + } + convert$1.rgb.keyword = function(rgb) { + const reversed = reverseKeywords[rgb]; + if (reversed) { + return reversed; + } + let currentClosestDistance = Number.POSITIVE_INFINITY; + let currentClosestKeyword; + for (const keyword of Object.keys(cssKeywords)) { + const value = cssKeywords[keyword]; + const distance = comparativeDistance(rgb, value); + if (distance < currentClosestDistance) { + currentClosestDistance = distance; + currentClosestKeyword = keyword; + } + } + return currentClosestKeyword; + }; + convert$1.keyword.rgb = function(keyword) { + return cssKeywords[keyword]; + }; + convert$1.rgb.xyz = function(rgb) { + const r = srgbNonlinearTransformInv(rgb[0] / 255); + const g = srgbNonlinearTransformInv(rgb[1] / 255); + const b = srgbNonlinearTransformInv(rgb[2] / 255); + const x = r * 0.4124564 + g * 0.3575761 + b * 0.1804375; + const y = r * 0.2126729 + g * 0.7151522 + b * 0.072175; + const z = r * 0.0193339 + g * 0.119192 + b * 0.9503041; + return [x * 100, y * 100, z * 100]; + }; + convert$1.rgb.lab = function(rgb) { + const xyz = convert$1.rgb.xyz(rgb); + let x = xyz[0]; + let y = xyz[1]; + let z = xyz[2]; + x /= 95.047; + y /= 100; + z /= 108.883; + x = x > LAB_FT ? x ** (1 / 3) : 7.787 * x + 16 / 116; + y = y > LAB_FT ? y ** (1 / 3) : 7.787 * y + 16 / 116; + z = z > LAB_FT ? z ** (1 / 3) : 7.787 * z + 16 / 116; + const l = 116 * y - 16; + const a = 500 * (x - y); + const b = 200 * (y - z); + return [l, a, b]; + }; + convert$1.hsl.rgb = function(hsl) { + const h = hsl[0] / 360; + const s = hsl[1] / 100; + const l = hsl[2] / 100; + let t3; + let value; + if (s === 0) { + value = l * 255; + return [value, value, value]; + } + const t2 = l < 0.5 ? l * (1 + s) : l + s - l * s; + const t1 = 2 * l - t2; + const rgb = [0, 0, 0]; + for (let i = 0; i < 3; i++) { + t3 = h + 1 / 3 * -(i - 1); + if (t3 < 0) { + t3++; + } + if (t3 > 1) { + t3--; + } + if (6 * t3 < 1) { + value = t1 + (t2 - t1) * 6 * t3; + } else if (2 * t3 < 1) { + value = t2; + } else if (3 * t3 < 2) { + value = t1 + (t2 - t1) * (2 / 3 - t3) * 6; + } else { + value = t1; + } + rgb[i] = value * 255; + } + return rgb; + }; + convert$1.hsl.hsv = function(hsl) { + const h = hsl[0]; + let s = hsl[1] / 100; + let l = hsl[2] / 100; + let smin = s; + const lmin = Math.max(l, 0.01); + l *= 2; + s *= l <= 1 ? l : 2 - l; + smin *= lmin <= 1 ? lmin : 2 - lmin; + const v = (l + s) / 2; + const sv = l === 0 ? 2 * smin / (lmin + smin) : 2 * s / (l + s); + return [h, sv * 100, v * 100]; + }; + convert$1.hsv.rgb = function(hsv) { + const h = hsv[0] / 60; + const s = hsv[1] / 100; + let v = hsv[2] / 100; + const hi = Math.floor(h) % 6; + const f = h - Math.floor(h); + const p = 255 * v * (1 - s); + const q = 255 * v * (1 - s * f); + const t = 255 * v * (1 - s * (1 - f)); + v *= 255; + switch (hi) { + case 0: { + return [v, t, p]; + } + case 1: { + return [q, v, p]; + } + case 2: { + return [p, v, t]; + } + case 3: { + return [p, q, v]; + } + case 4: { + return [t, p, v]; + } + case 5: { + return [v, p, q]; + } + } + }; + convert$1.hsv.hsl = function(hsv) { + const h = hsv[0]; + const s = hsv[1] / 100; + const v = hsv[2] / 100; + const vmin = Math.max(v, 0.01); + let sl; + let l; + l = (2 - s) * v; + const lmin = (2 - s) * vmin; + sl = s * vmin; + sl /= lmin <= 1 ? lmin : 2 - lmin; + sl = sl || 0; + l /= 2; + return [h, sl * 100, l * 100]; + }; + convert$1.hwb.rgb = function(hwb) { + const h = hwb[0] / 360; + let wh = hwb[1] / 100; + let bl = hwb[2] / 100; + const ratio = wh + bl; + let f; + if (ratio > 1) { + wh /= ratio; + bl /= ratio; + } + const i = Math.floor(6 * h); + const v = 1 - bl; + f = 6 * h - i; + if ((i & 1) !== 0) { + f = 1 - f; + } + const n = wh + f * (v - wh); + let r; + let g; + let b; + switch (i) { + default: + case 6: + case 0: { + r = v; + g = n; + b = wh; + break; + } + case 1: { + r = n; + g = v; + b = wh; + break; + } + case 2: { + r = wh; + g = v; + b = n; + break; + } + case 3: { + r = wh; + g = n; + b = v; + break; + } + case 4: { + r = n; + g = wh; + b = v; + break; + } + case 5: { + r = v; + g = wh; + b = n; + break; + } + } + return [r * 255, g * 255, b * 255]; + }; + convert$1.cmyk.rgb = function(cmyk) { + const c = cmyk[0] / 100; + const m = cmyk[1] / 100; + const y = cmyk[2] / 100; + const k = cmyk[3] / 100; + const r = 1 - Math.min(1, c * (1 - k) + k); + const g = 1 - Math.min(1, m * (1 - k) + k); + const b = 1 - Math.min(1, y * (1 - k) + k); + return [r * 255, g * 255, b * 255]; + }; + convert$1.xyz.rgb = function(xyz) { + const x = xyz[0] / 100; + const y = xyz[1] / 100; + const z = xyz[2] / 100; + let r; + let g; + let b; + r = x * 3.2404542 + y * -1.5371385 + z * -0.4985314; + g = x * -0.969266 + y * 1.8760108 + z * 0.041556; + b = x * 0.0556434 + y * -0.2040259 + z * 1.0572252; + r = srgbNonlinearTransform(r); + g = srgbNonlinearTransform(g); + b = srgbNonlinearTransform(b); + return [r * 255, g * 255, b * 255]; + }; + convert$1.xyz.lab = function(xyz) { + let x = xyz[0]; + let y = xyz[1]; + let z = xyz[2]; + x /= 95.047; + y /= 100; + z /= 108.883; + x = x > LAB_FT ? x ** (1 / 3) : 7.787 * x + 16 / 116; + y = y > LAB_FT ? y ** (1 / 3) : 7.787 * y + 16 / 116; + z = z > LAB_FT ? z ** (1 / 3) : 7.787 * z + 16 / 116; + const l = 116 * y - 16; + const a = 500 * (x - y); + const b = 200 * (y - z); + return [l, a, b]; + }; + convert$1.xyz.oklab = function(xyz) { + const x = xyz[0] / 100; + const y = xyz[1] / 100; + const z = xyz[2] / 100; + const lp = Math.cbrt(0.8189330101 * x + 0.3618667424 * y - 0.1288597137 * z); + const mp = Math.cbrt(0.0329845436 * x + 0.9293118715 * y + 0.0361456387 * z); + const sp = Math.cbrt(0.0482003018 * x + 0.2643662691 * y + 0.633851707 * z); + const l = 0.2104542553 * lp + 0.793617785 * mp - 0.0040720468 * sp; + const a = 1.9779984951 * lp - 2.428592205 * mp + 0.4505937099 * sp; + const b = 0.0259040371 * lp + 0.7827717662 * mp - 0.808675766 * sp; + return [l * 100, a * 100, b * 100]; + }; + convert$1.oklab.oklch = function(oklab) { + return convert$1.lab.lch(oklab); + }; + convert$1.oklab.xyz = function(oklab) { + const ll = oklab[0] / 100; + const a = oklab[1] / 100; + const b = oklab[2] / 100; + const l = (0.999999998 * ll + 0.396337792 * a + 0.215803758 * b) ** 3; + const m = (1.000000008 * ll - 0.105561342 * a - 0.063854175 * b) ** 3; + const s = (1.000000055 * ll - 0.089484182 * a - 1.291485538 * b) ** 3; + const x = 1.227013851 * l - 0.55779998 * m + 0.281256149 * s; + const y = -0.040580178 * l + 1.11225687 * m - 0.071676679 * s; + const z = -0.076381285 * l - 0.421481978 * m + 1.58616322 * s; + return [x * 100, y * 100, z * 100]; + }; + convert$1.oklab.rgb = function(oklab) { + const ll = oklab[0] / 100; + const aa = oklab[1] / 100; + const bb = oklab[2] / 100; + const l = (ll + 0.3963377774 * aa + 0.2158037573 * bb) ** 3; + const m = (ll - 0.1055613458 * aa - 0.0638541728 * bb) ** 3; + const s = (ll - 0.0894841775 * aa - 1.291485548 * bb) ** 3; + const r = srgbNonlinearTransform(4.0767416621 * l - 3.3077115913 * m + 0.2309699292 * s); + const g = srgbNonlinearTransform(-1.2684380046 * l + 2.6097574011 * m - 0.3413193965 * s); + const b = srgbNonlinearTransform(-0.0041960863 * l - 0.7034186147 * m + 1.707614701 * s); + return [r * 255, g * 255, b * 255]; + }; + convert$1.oklch.oklab = function(oklch) { + return convert$1.lch.lab(oklch); + }; + convert$1.lab.xyz = function(lab) { + const l = lab[0]; + const a = lab[1]; + const b = lab[2]; + let x; + let y; + let z; + y = (l + 16) / 116; + x = a / 500 + y; + z = y - b / 200; + const y2 = y ** 3; + const x2 = x ** 3; + const z2 = z ** 3; + y = y2 > LAB_FT ? y2 : (y - 16 / 116) / 7.787; + x = x2 > LAB_FT ? x2 : (x - 16 / 116) / 7.787; + z = z2 > LAB_FT ? z2 : (z - 16 / 116) / 7.787; + x *= 95.047; + y *= 100; + z *= 108.883; + return [x, y, z]; + }; + convert$1.lab.lch = function(lab) { + const l = lab[0]; + const a = lab[1]; + const b = lab[2]; + let h; + const hr = Math.atan2(b, a); + h = hr * 360 / 2 / Math.PI; + if (h < 0) { + h += 360; + } + const c = Math.sqrt(a * a + b * b); + return [l, c, h]; + }; + convert$1.lch.lab = function(lch) { + const l = lch[0]; + const c = lch[1]; + const h = lch[2]; + const hr = h / 360 * 2 * Math.PI; + const a = c * Math.cos(hr); + const b = c * Math.sin(hr); + return [l, a, b]; + }; + convert$1.rgb.ansi16 = function(args, saturation = null) { + const [r, g, b] = args; + let value = saturation === null ? convert$1.rgb.hsv(args)[2] : saturation; + value = Math.round(value / 50); + if (value === 0) { + return 30; + } + let ansi = 30 + (Math.round(b / 255) << 2 | Math.round(g / 255) << 1 | Math.round(r / 255)); + if (value === 2) { + ansi += 60; + } + return ansi; + }; + convert$1.hsv.ansi16 = function(args) { + return convert$1.rgb.ansi16(convert$1.hsv.rgb(args), args[2]); + }; + convert$1.rgb.ansi256 = function(args) { + const r = args[0]; + const g = args[1]; + const b = args[2]; + if (r >> 4 === g >> 4 && g >> 4 === b >> 4) { + if (r < 8) { + return 16; + } + if (r > 248) { + return 231; + } + return Math.round((r - 8) / 247 * 24) + 232; + } + const ansi = 16 + 36 * Math.round(r / 255 * 5) + 6 * Math.round(g / 255 * 5) + Math.round(b / 255 * 5); + return ansi; + }; + convert$1.ansi16.rgb = function(args) { + args = args[0]; + let color = args % 10; + if (color === 0 || color === 7) { + if (args > 50) { + color += 3.5; + } + color = color / 10.5 * 255; + return [color, color, color]; + } + const mult = (Math.trunc(args > 50) + 1) * 0.5; + const r = (color & 1) * mult * 255; + const g = (color >> 1 & 1) * mult * 255; + const b = (color >> 2 & 1) * mult * 255; + return [r, g, b]; + }; + convert$1.ansi256.rgb = function(args) { + args = args[0]; + if (args >= 232) { + const c = (args - 232) * 10 + 8; + return [c, c, c]; + } + args -= 16; + let rem; + const r = Math.floor(args / 36) / 5 * 255; + const g = Math.floor((rem = args % 36) / 6) / 5 * 255; + const b = rem % 6 / 5 * 255; + return [r, g, b]; + }; + convert$1.rgb.hex = function(args) { + const integer2 = ((Math.round(args[0]) & 255) << 16) + ((Math.round(args[1]) & 255) << 8) + (Math.round(args[2]) & 255); + const string4 = integer2.toString(16).toUpperCase(); + return "000000".slice(string4.length) + string4; + }; + convert$1.hex.rgb = function(args) { + const match = args.toString(16).match(/[a-f\d]{6}|[a-f\d]{3}/i); + if (!match) { + return [0, 0, 0]; + } + let colorString = match[0]; + if (match[0].length === 3) { + colorString = [...colorString].map((char) => char + char).join(""); + } + const integer2 = Number.parseInt(colorString, 16); + const r = integer2 >> 16 & 255; + const g = integer2 >> 8 & 255; + const b = integer2 & 255; + return [r, g, b]; + }; + convert$1.rgb.hcg = function(rgb) { + const r = rgb[0] / 255; + const g = rgb[1] / 255; + const b = rgb[2] / 255; + const max = Math.max(Math.max(r, g), b); + const min = Math.min(Math.min(r, g), b); + const chroma = max - min; + let hue; + const grayscale = chroma < 1 ? min / (1 - chroma) : 0; + if (chroma <= 0) { + hue = 0; + } else if (max === r) { + hue = (g - b) / chroma % 6; + } else if (max === g) { + hue = 2 + (b - r) / chroma; + } else { + hue = 4 + (r - g) / chroma; + } + hue /= 6; + hue %= 1; + return [hue * 360, chroma * 100, grayscale * 100]; + }; + convert$1.hsl.hcg = function(hsl) { + const s = hsl[1] / 100; + const l = hsl[2] / 100; + const c = l < 0.5 ? 2 * s * l : 2 * s * (1 - l); + let f = 0; + if (c < 1) { + f = (l - 0.5 * c) / (1 - c); + } + return [hsl[0], c * 100, f * 100]; + }; + convert$1.hsv.hcg = function(hsv) { + const s = hsv[1] / 100; + const v = hsv[2] / 100; + const c = s * v; + let f = 0; + if (c < 1) { + f = (v - c) / (1 - c); + } + return [hsv[0], c * 100, f * 100]; + }; + convert$1.hcg.rgb = function(hcg) { + const h = hcg[0] / 360; + const c = hcg[1] / 100; + const g = hcg[2] / 100; + if (c === 0) { + return [g * 255, g * 255, g * 255]; + } + const pure = [0, 0, 0]; + const hi = h % 1 * 6; + const v = hi % 1; + const w = 1 - v; + let mg = 0; + switch (Math.floor(hi)) { + case 0: { + pure[0] = 1; + pure[1] = v; + pure[2] = 0; + break; + } + case 1: { + pure[0] = w; + pure[1] = 1; + pure[2] = 0; + break; + } + case 2: { + pure[0] = 0; + pure[1] = 1; + pure[2] = v; + break; + } + case 3: { + pure[0] = 0; + pure[1] = w; + pure[2] = 1; + break; + } + case 4: { + pure[0] = v; + pure[1] = 0; + pure[2] = 1; + break; + } + default: { + pure[0] = 1; + pure[1] = 0; + pure[2] = w; + } + } + mg = (1 - c) * g; + return [ + (c * pure[0] + mg) * 255, + (c * pure[1] + mg) * 255, + (c * pure[2] + mg) * 255 + ]; + }; + convert$1.hcg.hsv = function(hcg) { + const c = hcg[1] / 100; + const g = hcg[2] / 100; + const v = c + g * (1 - c); + let f = 0; + if (v > 0) { + f = c / v; + } + return [hcg[0], f * 100, v * 100]; + }; + convert$1.hcg.hsl = function(hcg) { + const c = hcg[1] / 100; + const g = hcg[2] / 100; + const l = g * (1 - c) + 0.5 * c; + let s = 0; + if (l > 0 && l < 0.5) { + s = c / (2 * l); + } else if (l >= 0.5 && l < 1) { + s = c / (2 * (1 - l)); + } + return [hcg[0], s * 100, l * 100]; + }; + convert$1.hcg.hwb = function(hcg) { + const c = hcg[1] / 100; + const g = hcg[2] / 100; + const v = c + g * (1 - c); + return [hcg[0], (v - c) * 100, (1 - v) * 100]; + }; + convert$1.hwb.hcg = function(hwb) { + const w = hwb[1] / 100; + const b = hwb[2] / 100; + const v = 1 - b; + const c = v - w; + let g = 0; + if (c < 1) { + g = (v - c) / (1 - c); + } + return [hwb[0], c * 100, g * 100]; + }; + convert$1.apple.rgb = function(apple) { + return [apple[0] / 65535 * 255, apple[1] / 65535 * 255, apple[2] / 65535 * 255]; + }; + convert$1.rgb.apple = function(rgb) { + return [rgb[0] / 255 * 65535, rgb[1] / 255 * 65535, rgb[2] / 255 * 65535]; + }; + convert$1.gray.rgb = function(args) { + return [args[0] / 100 * 255, args[0] / 100 * 255, args[0] / 100 * 255]; + }; + convert$1.gray.hsl = function(args) { + return [0, 0, args[0]]; + }; + convert$1.gray.hsv = convert$1.gray.hsl; + convert$1.gray.hwb = function(gray) { + return [0, 100, gray[0]]; + }; + convert$1.gray.cmyk = function(gray) { + return [0, 0, 0, gray[0]]; + }; + convert$1.gray.lab = function(gray) { + return [gray[0], 0, 0]; + }; + convert$1.gray.hex = function(gray) { + const value = Math.round(gray[0] / 100 * 255) & 255; + const integer2 = (value << 16) + (value << 8) + value; + const string4 = integer2.toString(16).toUpperCase(); + return "000000".slice(string4.length) + string4; + }; + convert$1.rgb.gray = function(rgb) { + const value = (rgb[0] + rgb[1] + rgb[2]) / 3; + return [value / 255 * 100]; + }; + function buildGraph() { + const graph = {}; + const models2 = Object.keys(convert$1); + for (let { length } = models2, i = 0; i < length; i++) { + graph[models2[i]] = { + // http://jsperf.com/1-vs-infinity + // micro-opt, but this is simple. + distance: -1, + parent: null + }; + } + return graph; + } + function deriveBFS(fromModel) { + const graph = buildGraph(); + const queue = [fromModel]; + graph[fromModel].distance = 0; + while (queue.length > 0) { + const current = queue.pop(); + const adjacents = Object.keys(convert$1[current]); + for (let { length } = adjacents, i = 0; i < length; i++) { + const adjacent = adjacents[i]; + const node = graph[adjacent]; + if (node.distance === -1) { + node.distance = graph[current].distance + 1; + node.parent = current; + queue.unshift(adjacent); + } + } + } + return graph; + } + function link(from, to) { + return function(args) { + return to(from(args)); + }; + } + function wrapConversion(toModel, graph) { + const path9 = [graph[toModel].parent, toModel]; + let fn = convert$1[graph[toModel].parent][toModel]; + let cur = graph[toModel].parent; + while (graph[cur].parent) { + path9.unshift(graph[cur].parent); + fn = link(convert$1[graph[cur].parent][cur], fn); + cur = graph[cur].parent; + } + fn.conversion = path9; + return fn; + } + function route(fromModel) { + const graph = deriveBFS(fromModel); + const conversion = {}; + const models2 = Object.keys(graph); + for (let { length } = models2, i = 0; i < length; i++) { + const toModel = models2[i]; + const node = graph[toModel]; + if (node.parent === null) { + continue; + } + conversion[toModel] = wrapConversion(toModel, graph); + } + return conversion; + } + var convert = {}; + var models = Object.keys(convert$1); + function wrapRaw(fn) { + const wrappedFn = function(...args) { + const arg0 = args[0]; + if (arg0 === void 0 || arg0 === null) { + return arg0; + } + if (arg0.length > 1) { + args = arg0; + } + return fn(args); + }; + if ("conversion" in fn) { + wrappedFn.conversion = fn.conversion; + } + return wrappedFn; + } + function wrapRounded(fn) { + const wrappedFn = function(...args) { + const arg0 = args[0]; + if (arg0 === void 0 || arg0 === null) { + return arg0; + } + if (arg0.length > 1) { + args = arg0; + } + const result = fn(args); + if (typeof result === "object") { + for (let { length } = result, i = 0; i < length; i++) { + result[i] = Math.round(result[i]); + } + } + return result; + }; + if ("conversion" in fn) { + wrappedFn.conversion = fn.conversion; + } + return wrappedFn; + } + for (const fromModel of models) { + convert[fromModel] = {}; + Object.defineProperty(convert[fromModel], "channels", { value: convert$1[fromModel].channels }); + Object.defineProperty(convert[fromModel], "labels", { value: convert$1[fromModel].labels }); + const routes = route(fromModel); + const routeModels = Object.keys(routes); + for (const toModel of routeModels) { + const fn = routes[toModel]; + convert[fromModel][toModel] = wrapRounded(fn); + convert[fromModel][toModel].raw = wrapRaw(fn); + } + } + var skippedModels = [ + // To be honest, I don't really feel like keyword belongs in color convert, but eh. + "keyword", + // Gray conflicts with some method names, and has its own method defined. + "gray", + // Shouldn't really be in color-convert either... + "hex" + ]; + var hashedModelKeys = {}; + for (const model of Object.keys(convert)) { + hashedModelKeys[[...convert[model].labels].sort().join("")] = model; + } + var limiters = {}; + function Color(object3, model) { + if (!(this instanceof Color)) { + return new Color(object3, model); + } + if (model && model in skippedModels) { + model = null; + } + if (model && !(model in convert)) { + throw new Error("Unknown model: " + model); + } + let i; + let channels; + if (object3 == null) { + this.model = "rgb"; + this.color = [0, 0, 0]; + this.valpha = 1; + } else if (object3 instanceof Color) { + this.model = object3.model; + this.color = [...object3.color]; + this.valpha = object3.valpha; + } else if (typeof object3 === "string") { + const result = cs.get(object3); + if (result === null) { + throw new Error("Unable to parse color from string: " + object3); + } + this.model = result.model; + channels = convert[this.model].channels; + this.color = result.value.slice(0, channels); + this.valpha = typeof result.value[channels] === "number" ? result.value[channels] : 1; + } else if (object3.length > 0) { + this.model = model || "rgb"; + channels = convert[this.model].channels; + const newArray = Array.prototype.slice.call(object3, 0, channels); + this.color = zeroArray(newArray, channels); + this.valpha = typeof object3[channels] === "number" ? object3[channels] : 1; + } else if (typeof object3 === "number") { + this.model = "rgb"; + this.color = [ + object3 >> 16 & 255, + object3 >> 8 & 255, + object3 & 255 + ]; + this.valpha = 1; + } else { + this.valpha = 1; + const keys = Object.keys(object3); + if ("alpha" in object3) { + keys.splice(keys.indexOf("alpha"), 1); + this.valpha = typeof object3.alpha === "number" ? object3.alpha : 0; + } + const hashedKeys = keys.sort().join(""); + if (!(hashedKeys in hashedModelKeys)) { + throw new Error("Unable to parse color from object: " + JSON.stringify(object3)); + } + this.model = hashedModelKeys[hashedKeys]; + const { labels } = convert[this.model]; + const color = []; + for (i = 0; i < labels.length; i++) { + color.push(object3[labels[i]]); + } + this.color = zeroArray(color); + } + if (limiters[this.model]) { + channels = convert[this.model].channels; + for (i = 0; i < channels; i++) { + const limit = limiters[this.model][i]; + if (limit) { + this.color[i] = limit(this.color[i]); + } + } + } + this.valpha = Math.max(0, Math.min(1, this.valpha)); + if (Object.freeze) { + Object.freeze(this); + } + } + Color.prototype = { + toString() { + return this.string(); + }, + toJSON() { + return this[this.model](); + }, + string(places) { + let self2 = this.model in cs.to ? this : this.rgb(); + self2 = self2.round(typeof places === "number" ? places : 1); + const arguments_ = self2.valpha === 1 ? self2.color : [...self2.color, this.valpha]; + return cs.to[self2.model](...arguments_); + }, + percentString(places) { + const self2 = this.rgb().round(typeof places === "number" ? places : 1); + const arguments_ = self2.valpha === 1 ? self2.color : [...self2.color, this.valpha]; + return cs.to.rgb.percent(...arguments_); + }, + array() { + return this.valpha === 1 ? [...this.color] : [...this.color, this.valpha]; + }, + object() { + const result = {}; + const { channels } = convert[this.model]; + const { labels } = convert[this.model]; + for (let i = 0; i < channels; i++) { + result[labels[i]] = this.color[i]; + } + if (this.valpha !== 1) { + result.alpha = this.valpha; + } + return result; + }, + unitArray() { + const rgb = this.rgb().color; + rgb[0] /= 255; + rgb[1] /= 255; + rgb[2] /= 255; + if (this.valpha !== 1) { + rgb.push(this.valpha); + } + return rgb; + }, + unitObject() { + const rgb = this.rgb().object(); + rgb.r /= 255; + rgb.g /= 255; + rgb.b /= 255; + if (this.valpha !== 1) { + rgb.alpha = this.valpha; + } + return rgb; + }, + round(places) { + places = Math.max(places || 0, 0); + return new Color([...this.color.map(roundToPlace(places)), this.valpha], this.model); + }, + alpha(value) { + if (value !== void 0) { + return new Color([...this.color, Math.max(0, Math.min(1, value))], this.model); + } + return this.valpha; + }, + // Rgb + red: getset("rgb", 0, maxfn(255)), + green: getset("rgb", 1, maxfn(255)), + blue: getset("rgb", 2, maxfn(255)), + hue: getset(["hsl", "hsv", "hsl", "hwb", "hcg"], 0, (value) => (value % 360 + 360) % 360), + saturationl: getset("hsl", 1, maxfn(100)), + lightness: getset("hsl", 2, maxfn(100)), + saturationv: getset("hsv", 1, maxfn(100)), + value: getset("hsv", 2, maxfn(100)), + chroma: getset("hcg", 1, maxfn(100)), + gray: getset("hcg", 2, maxfn(100)), + white: getset("hwb", 1, maxfn(100)), + wblack: getset("hwb", 2, maxfn(100)), + cyan: getset("cmyk", 0, maxfn(100)), + magenta: getset("cmyk", 1, maxfn(100)), + yellow: getset("cmyk", 2, maxfn(100)), + black: getset("cmyk", 3, maxfn(100)), + x: getset("xyz", 0, maxfn(95.047)), + y: getset("xyz", 1, maxfn(100)), + z: getset("xyz", 2, maxfn(108.833)), + l: getset("lab", 0, maxfn(100)), + a: getset("lab", 1), + b: getset("lab", 2), + keyword(value) { + if (value !== void 0) { + return new Color(value); + } + return convert[this.model].keyword(this.color); + }, + hex(value) { + if (value !== void 0) { + return new Color(value); + } + return cs.to.hex(...this.rgb().round().color); + }, + hexa(value) { + if (value !== void 0) { + return new Color(value); + } + const rgbArray = this.rgb().round().color; + let alphaHex = Math.round(this.valpha * 255).toString(16).toUpperCase(); + if (alphaHex.length === 1) { + alphaHex = "0" + alphaHex; + } + return cs.to.hex(...rgbArray) + alphaHex; + }, + rgbNumber() { + const rgb = this.rgb().color; + return (rgb[0] & 255) << 16 | (rgb[1] & 255) << 8 | rgb[2] & 255; + }, + luminosity() { + const rgb = this.rgb().color; + const lum = []; + for (const [i, element] of rgb.entries()) { + const chan = element / 255; + lum[i] = chan <= 0.04045 ? chan / 12.92 : ((chan + 0.055) / 1.055) ** 2.4; + } + return 0.2126 * lum[0] + 0.7152 * lum[1] + 0.0722 * lum[2]; + }, + contrast(color2) { + const lum1 = this.luminosity(); + const lum2 = color2.luminosity(); + if (lum1 > lum2) { + return (lum1 + 0.05) / (lum2 + 0.05); + } + return (lum2 + 0.05) / (lum1 + 0.05); + }, + level(color2) { + const contrastRatio = this.contrast(color2); + if (contrastRatio >= 7) { + return "AAA"; + } + return contrastRatio >= 4.5 ? "AA" : ""; + }, + isDark() { + const rgb = this.rgb().color; + const yiq = (rgb[0] * 2126 + rgb[1] * 7152 + rgb[2] * 722) / 1e4; + return yiq < 128; + }, + isLight() { + return !this.isDark(); + }, + negate() { + const rgb = this.rgb(); + for (let i = 0; i < 3; i++) { + rgb.color[i] = 255 - rgb.color[i]; + } + return rgb; + }, + lighten(ratio) { + const hsl = this.hsl(); + hsl.color[2] += hsl.color[2] * ratio; + return hsl; + }, + darken(ratio) { + const hsl = this.hsl(); + hsl.color[2] -= hsl.color[2] * ratio; + return hsl; + }, + saturate(ratio) { + const hsl = this.hsl(); + hsl.color[1] += hsl.color[1] * ratio; + return hsl; + }, + desaturate(ratio) { + const hsl = this.hsl(); + hsl.color[1] -= hsl.color[1] * ratio; + return hsl; + }, + whiten(ratio) { + const hwb = this.hwb(); + hwb.color[1] += hwb.color[1] * ratio; + return hwb; + }, + blacken(ratio) { + const hwb = this.hwb(); + hwb.color[2] += hwb.color[2] * ratio; + return hwb; + }, + grayscale() { + const rgb = this.rgb().color; + const value = rgb[0] * 0.3 + rgb[1] * 0.59 + rgb[2] * 0.11; + return Color.rgb(value, value, value); + }, + fade(ratio) { + return this.alpha(this.valpha - this.valpha * ratio); + }, + opaquer(ratio) { + return this.alpha(this.valpha + this.valpha * ratio); + }, + rotate(degrees) { + const hsl = this.hsl(); + let hue = hsl.color[0]; + hue = (hue + degrees) % 360; + hue = hue < 0 ? 360 + hue : hue; + hsl.color[0] = hue; + return hsl; + }, + mix(mixinColor, weight) { + if (!mixinColor || !mixinColor.rgb) { + throw new Error('Argument to "mix" was not a Color instance, but rather an instance of ' + typeof mixinColor); + } + const color1 = mixinColor.rgb(); + const color2 = this.rgb(); + const p = weight === void 0 ? 0.5 : weight; + const w = 2 * p - 1; + const a = color1.alpha() - color2.alpha(); + const w1 = ((w * a === -1 ? w : (w + a) / (1 + w * a)) + 1) / 2; + const w2 = 1 - w1; + return Color.rgb( + w1 * color1.red() + w2 * color2.red(), + w1 * color1.green() + w2 * color2.green(), + w1 * color1.blue() + w2 * color2.blue(), + color1.alpha() * p + color2.alpha() * (1 - p) + ); + } + }; + for (const model of Object.keys(convert)) { + if (skippedModels.includes(model)) { + continue; + } + const { channels } = convert[model]; + Color.prototype[model] = function(...arguments_) { + if (this.model === model) { + return new Color(this); + } + if (arguments_.length > 0) { + return new Color(arguments_, model); + } + return new Color([...assertArray(convert[this.model][model].raw(this.color)), this.valpha], model); + }; + Color[model] = function(...arguments_) { + let color = arguments_[0]; + if (typeof color === "number") { + color = zeroArray(arguments_, channels); + } + return new Color(color, model); + }; + } + function roundTo(number4, places) { + return Number(number4.toFixed(places)); + } + function roundToPlace(places) { + return function(number4) { + return roundTo(number4, places); + }; + } + function getset(model, channel, modifier) { + model = Array.isArray(model) ? model : [model]; + for (const m of model) { + (limiters[m] ||= [])[channel] = modifier; + } + model = model[0]; + return function(value) { + let result; + if (value !== void 0) { + if (modifier) { + value = modifier(value); + } + result = this[model](); + result.color[channel] = value; + return result; + } + result = this[model]().color[channel]; + if (modifier) { + result = modifier(result); + } + return result; + }; + } + function maxfn(max) { + return function(v) { + return Math.max(0, Math.min(max, v)); + }; + } + function assertArray(value) { + return Array.isArray(value) ? value : [value]; + } + function zeroArray(array2, length) { + for (let i = 0; i < length; i++) { + if (typeof array2[i] !== "number") { + array2[i] = 0; + } + } + return array2; + } + function getDefaultExportFromCjs(x) { + return x && x.__esModule && Object.prototype.hasOwnProperty.call(x, "default") ? x["default"] : x; + } + var textHex = function hex2(str) { + for (var i = 0, hash = 0; i < str.length; hash = str.charCodeAt(i++) + ((hash << 5) - hash)) ; + var color = Math.floor( + Math.abs( + Math.sin(hash) * 1e4 % 1 * 16777216 + ) + ).toString(16); + return "#" + Array(6 - color.length + 1).join("0") + color; + }; + var hex = /* @__PURE__ */ getDefaultExportFromCjs(textHex); + function colorspace(namespace, delimiter) { + const split = namespace.split(delimiter || ":"); + let base = hex(split[0]); + if (!split.length) return base; + for (let i = 0, l = split.length - 1; i < l; i++) { + base = Color(base).mix(Color(hex(split[i + 1]))).saturate(1).hex(); + } + return base; + } + module2.exports = colorspace; + } +}); + +// node_modules/kuler/index.js +var require_kuler = __commonJS({ + "node_modules/kuler/index.js"(exports2, module2) { + "use strict"; + function Kuler(text, color) { + if (color) return new Kuler(text).style(color); + if (!(this instanceof Kuler)) return new Kuler(text); + this.text = text; + } + Kuler.prototype.prefix = "\x1B["; + Kuler.prototype.suffix = "m"; + Kuler.prototype.hex = function hex(color) { + color = color[0] === "#" ? color.substring(1) : color; + if (color.length === 3) { + color = color.split(""); + color[5] = color[2]; + color[4] = color[2]; + color[3] = color[1]; + color[2] = color[1]; + color[1] = color[0]; + color = color.join(""); + } + var r = color.substring(0, 2), g = color.substring(2, 4), b = color.substring(4, 6); + return [parseInt(r, 16), parseInt(g, 16), parseInt(b, 16)]; + }; + Kuler.prototype.rgb = function rgb(r, g, b) { + var red = r / 255 * 5, green = g / 255 * 5, blue = b / 255 * 5; + return this.ansi(red, green, blue); + }; + Kuler.prototype.ansi = function ansi(r, g, b) { + var red = Math.round(r), green = Math.round(g), blue = Math.round(b); + return 16 + red * 36 + green * 6 + blue; + }; + Kuler.prototype.reset = function reset() { + return this.prefix + "39;49" + this.suffix; + }; + Kuler.prototype.style = function style(color) { + return this.prefix + "38;5;" + this.rgb.apply(this, this.hex(color)) + this.suffix + this.text + this.reset(); + }; + module2.exports = Kuler; + } +}); + +// node_modules/@dabh/diagnostics/modifiers/namespace-ansi.js +var require_namespace_ansi = __commonJS({ + "node_modules/@dabh/diagnostics/modifiers/namespace-ansi.js"(exports2, module2) { + var colorspace = require_index_cjs(); + var kuler = require_kuler(); + module2.exports = function ansiModifier(args, options) { + var namespace = options.namespace; + var ansi = options.colors !== false ? kuler(namespace + ":", colorspace(namespace)) : namespace + ":"; + args[0] = ansi + " " + args[0]; + return args; + }; + } +}); + +// node_modules/enabled/index.js +var require_enabled = __commonJS({ + "node_modules/enabled/index.js"(exports2, module2) { + "use strict"; + module2.exports = function enabled2(name5, variable) { + if (!variable) return false; + var variables = variable.split(/[\s,]+/), i = 0; + for (; i < variables.length; i++) { + variable = variables[i].replace("*", ".*?"); + if ("-" === variable.charAt(0)) { + if (new RegExp("^" + variable.substr(1) + "$").test(name5)) { + return false; + } + continue; + } + if (new RegExp("^" + variable + "$").test(name5)) { + return true; + } + } + return false; + }; + } +}); + +// node_modules/@dabh/diagnostics/adapters/index.js +var require_adapters = __commonJS({ + "node_modules/@dabh/diagnostics/adapters/index.js"(exports2, module2) { + var enabled2 = require_enabled(); + module2.exports = function create(fn) { + return function adapter(namespace) { + try { + return enabled2(namespace, fn()); + } catch (e) { + } + return false; + }; + }; + } +}); + +// node_modules/@dabh/diagnostics/adapters/process.env.js +var require_process_env = __commonJS({ + "node_modules/@dabh/diagnostics/adapters/process.env.js"(exports2, module2) { + var adapter = require_adapters(); + module2.exports = adapter(function processenv() { + return process.env.DEBUG || process.env.DIAGNOSTICS; + }); + } +}); + +// node_modules/@dabh/diagnostics/logger/console.js +var require_console2 = __commonJS({ + "node_modules/@dabh/diagnostics/logger/console.js"(exports2, module2) { + module2.exports = function(meta, messages) { + try { + Function.prototype.apply.call(console.log, console, messages); + } catch (e) { + } + }; + } +}); + +// node_modules/@dabh/diagnostics/node/development.js +var require_development = __commonJS({ + "node_modules/@dabh/diagnostics/node/development.js"(exports2, module2) { + var create = require_diagnostics(); + var tty = require("tty").isatty(1); + var diagnostics = create(function dev(namespace, options) { + options = options || {}; + options.colors = "colors" in options ? options.colors : tty; + options.namespace = namespace; + options.prod = false; + options.dev = true; + if (!dev.enabled(namespace) && !(options.force || dev.force)) { + return dev.nope(options); + } + return dev.yep(options); + }); + diagnostics.modify(require_namespace_ansi()); + diagnostics.use(require_process_env()); + diagnostics.set(require_console2()); + module2.exports = diagnostics; + } +}); + +// node_modules/@dabh/diagnostics/node/index.js +var require_node2 = __commonJS({ + "node_modules/@dabh/diagnostics/node/index.js"(exports2, module2) { + if (process.env.NODE_ENV === "production") { + module2.exports = require_production(); + } else { + module2.exports = require_development(); + } + } +}); + +// node_modules/winston/lib/winston/tail-file.js +var require_tail_file = __commonJS({ + "node_modules/winston/lib/winston/tail-file.js"(exports2, module2) { + "use strict"; + var fs10 = require("fs"); + var { StringDecoder } = require("string_decoder"); + var { Stream } = require_readable(); + function noop() { + } + module2.exports = (options, iter) => { + const buffer = Buffer.alloc(64 * 1024); + const decode = new StringDecoder("utf8"); + const stream = new Stream(); + let buff = ""; + let pos = 0; + let row = 0; + if (options.start === -1) { + delete options.start; + } + stream.readable = true; + stream.destroy = () => { + stream.destroyed = true; + stream.emit("end"); + stream.emit("close"); + }; + fs10.open(options.file, "a+", "0644", (err, fd) => { + if (err) { + if (!iter) { + stream.emit("error", err); + } else { + iter(err); + } + stream.destroy(); + return; + } + (function read() { + if (stream.destroyed) { + fs10.close(fd, noop); + return; + } + return fs10.read(fd, buffer, 0, buffer.length, pos, (error2, bytes) => { + if (error2) { + if (!iter) { + stream.emit("error", error2); + } else { + iter(error2); + } + stream.destroy(); + return; + } + if (!bytes) { + if (buff) { + if (options.start == null || row > options.start) { + if (!iter) { + stream.emit("line", buff); + } else { + iter(null, buff); + } + } + row++; + buff = ""; + } + return setTimeout(read, 1e3); + } + let data = decode.write(buffer.slice(0, bytes)); + if (!iter) { + stream.emit("data", data); + } + data = (buff + data).split(/\n+/); + const l = data.length - 1; + let i = 0; + for (; i < l; i++) { + if (options.start == null || row > options.start) { + if (!iter) { + stream.emit("line", data[i]); + } else { + iter(null, data[i]); + } + } + row++; + } + buff = data[l]; + pos += bytes; + return read(); + }); + })(); + }); + if (!iter) { + return stream; + } + return stream.destroy; + }; + } +}); + +// node_modules/winston/lib/winston/transports/file.js +var require_file = __commonJS({ + "node_modules/winston/lib/winston/transports/file.js"(exports2, module2) { + "use strict"; + var fs10 = require("fs"); + var path9 = require("path"); + var asyncSeries = require_series(); + var zlib2 = require("zlib"); + var { MESSAGE } = require_triple_beam(); + var { Stream, PassThrough } = require_readable(); + var TransportStream = require_winston_transport(); + var debug = require_node2()("winston:file"); + var os5 = require("os"); + var tailFile = require_tail_file(); + module2.exports = class File extends TransportStream { + /** + * Constructor function for the File transport object responsible for + * persisting log messages and metadata to one or more files. + * @param {Object} options - Options for this instance. + */ + constructor(options = {}) { + super(options); + this.name = options.name || "file"; + function throwIf(target, ...args) { + args.slice(1).forEach((name5) => { + if (options[name5]) { + throw new Error(`Cannot set ${name5} and ${target} together`); + } + }); + } + this._stream = new PassThrough(); + this._stream.setMaxListeners(30); + this._onError = this._onError.bind(this); + if (options.filename || options.dirname) { + throwIf("filename or dirname", "stream"); + this._basename = this.filename = options.filename ? path9.basename(options.filename) : "winston.log"; + this.dirname = options.dirname || path9.dirname(options.filename); + this.options = options.options || { flags: "a" }; + } else if (options.stream) { + console.warn("options.stream will be removed in winston@4. Use winston.transports.Stream"); + throwIf("stream", "filename", "maxsize"); + this._dest = this._stream.pipe(this._setupStream(options.stream)); + this.dirname = path9.dirname(this._dest.path); + } else { + throw new Error("Cannot log to file without filename or stream."); + } + this.maxsize = options.maxsize || null; + this.rotationFormat = options.rotationFormat || false; + this.zippedArchive = options.zippedArchive || false; + this.maxFiles = options.maxFiles || null; + this.eol = typeof options.eol === "string" ? options.eol : os5.EOL; + this.tailable = options.tailable || false; + this.lazy = options.lazy || false; + this._size = 0; + this._pendingSize = 0; + this._created = 0; + this._drain = false; + this._opening = false; + this._ending = false; + this._fileExist = false; + if (this.dirname) this._createLogDirIfNotExist(this.dirname); + if (!this.lazy) this.open(); + } + finishIfEnding() { + if (this._ending) { + if (this._opening) { + this.once("open", () => { + this._stream.once("finish", () => this.emit("finish")); + setImmediate(() => this._stream.end()); + }); + } else { + this._stream.once("finish", () => this.emit("finish")); + setImmediate(() => this._stream.end()); + } + } + } + /** + * Called by Node.js Writable stream before emitting 'finish'. + * Ensures all buffered data is flushed to the underlying file stream + * before the transport signals completion. + * @param {Function} callback - Callback to signal completion. + * @private + */ + _final(callback) { + if (this._opening) { + this.once("open", () => this._final(callback)); + return; + } + this._stream.end(); + if (!this._dest) { + return callback(); + } + if (this._dest.writableFinished) { + return callback(); + } + this._dest.once("finish", callback); + this._dest.once("error", callback); + } + /** + * Core logging method exposed to Winston. Metadata is optional. + * @param {Object} info - TODO: add param description. + * @param {Function} callback - TODO: add param description. + * @returns {undefined} + */ + log(info, callback = () => { + }) { + if (this.silent) { + callback(); + return true; + } + if (this._drain) { + this._stream.once("drain", () => { + this._drain = false; + this.log(info, callback); + }); + return; + } + if (this._rotate) { + this._stream.once("rotate", () => { + this._rotate = false; + this.log(info, callback); + }); + return; + } + if (this.lazy) { + if (!this._fileExist) { + if (!this._opening) { + this.open(); + } + this.once("open", () => { + this._fileExist = true; + this.log(info, callback); + return; + }); + return; + } + if (this._needsNewFile(this._pendingSize)) { + this._dest.once("close", () => { + if (!this._opening) { + this.open(); + } + this.once("open", () => { + this.log(info, callback); + return; + }); + return; + }); + return; + } + } + const output = `${info[MESSAGE]}${this.eol}`; + const bytes = Buffer.byteLength(output); + function logged() { + this._size += bytes; + this._pendingSize -= bytes; + debug("logged %s %s", this._size, output); + this.emit("logged", info); + if (this._rotate) { + return; + } + if (this._opening) { + return; + } + if (!this._needsNewFile()) { + return; + } + if (this.lazy) { + this._endStream(() => { + this.emit("fileclosed"); + }); + return; + } + this._rotate = true; + this._endStream(() => this._rotateFile()); + } + this._pendingSize += bytes; + if (this._opening && !this.rotatedWhileOpening && this._needsNewFile(this._size + this._pendingSize)) { + this.rotatedWhileOpening = true; + } + const written = this._stream.write(output, logged.bind(this)); + if (!written) { + this._drain = true; + this._stream.once("drain", () => { + this._drain = false; + callback(); + }); + } else { + callback(); + } + debug("written", written, this._drain); + this.finishIfEnding(); + return written; + } + /** + * Query the transport. Options object is optional. + * @param {Object} options - Loggly-like query options for this instance. + * @param {function} callback - Continuation to respond to when complete. + * TODO: Refactor me. + */ + query(options, callback) { + if (typeof options === "function") { + callback = options; + options = {}; + } + options = normalizeQuery(options); + const file = path9.join(this.dirname, this.filename); + let buff = ""; + let results = []; + let row = 0; + const stream = fs10.createReadStream(file, { + encoding: "utf8" + }); + stream.on("error", (err) => { + if (stream.readable) { + stream.destroy(); + } + if (!callback) { + return; + } + return err.code !== "ENOENT" ? callback(err) : callback(null, results); + }); + stream.on("data", (data) => { + data = (buff + data).split(/\n+/); + const l = data.length - 1; + let i = 0; + for (; i < l; i++) { + if (!options.start || row >= options.start) { + add(data[i]); + } + row++; + } + buff = data[l]; + }); + stream.on("close", () => { + if (buff) { + add(buff, true); + } + if (options.order === "desc") { + results = results.reverse(); + } + if (callback) callback(null, results); + }); + function add(buff2, attempt) { + try { + const log2 = JSON.parse(buff2); + if (check2(log2)) { + push(log2); + } + } catch (e) { + if (!attempt) { + stream.emit("error", e); + } + } + } + function push(log2) { + if (options.rows && results.length >= options.rows && options.order !== "desc") { + if (stream.readable) { + stream.destroy(); + } + return; + } + if (options.fields) { + log2 = options.fields.reduce((obj, key) => { + obj[key] = log2[key]; + return obj; + }, {}); + } + if (options.order === "desc") { + if (results.length >= options.rows) { + results.shift(); + } + } + results.push(log2); + } + function check2(log2) { + if (!log2) { + return; + } + if (typeof log2 !== "object") { + return; + } + const time3 = new Date(log2.timestamp); + if (options.from && time3 < options.from || options.until && time3 > options.until || options.level && options.level !== log2.level) { + return; + } + return true; + } + function normalizeQuery(options2) { + options2 = options2 || {}; + options2.rows = options2.rows || options2.limit || 10; + options2.start = options2.start || 0; + options2.until = options2.until || /* @__PURE__ */ new Date(); + if (typeof options2.until !== "object") { + options2.until = new Date(options2.until); + } + options2.from = options2.from || options2.until - 24 * 60 * 60 * 1e3; + if (typeof options2.from !== "object") { + options2.from = new Date(options2.from); + } + options2.order = options2.order || "desc"; + return options2; + } + } + /** + * Returns a log stream for this transport. Options object is optional. + * @param {Object} options - Stream options for this instance. + * @returns {Stream} - TODO: add return description. + * TODO: Refactor me. + */ + stream(options = {}) { + const file = path9.join(this.dirname, this.filename); + const stream = new Stream(); + const tail = { + file, + start: options.start + }; + stream.destroy = tailFile(tail, (err, line) => { + if (err) { + return stream.emit("error", err); + } + try { + stream.emit("data", line); + line = JSON.parse(line); + stream.emit("log", line); + } catch (e) { + stream.emit("error", e); + } + }); + return stream; + } + /** + * Checks to see the filesize of. + * @returns {undefined} + */ + open() { + if (!this.filename) return; + if (this._opening) return; + this._opening = true; + this.stat((err, size) => { + if (err) { + return this.emit("error", err); + } + debug("stat done: %s { size: %s }", this.filename, size); + this._size = size; + this._dest = this._createStream(this._stream); + this._opening = false; + this.once("open", () => { + if (!this._stream.emit("rotate")) { + this._rotate = false; + } + }); + }); + } + /** + * Stat the file and assess information in order to create the proper stream. + * @param {function} callback - TODO: add param description. + * @returns {undefined} + */ + stat(callback) { + const target = this._getFile(); + const fullpath = path9.join(this.dirname, target); + fs10.stat(fullpath, (err, stat) => { + if (err && err.code === "ENOENT") { + debug("ENOENT\xA0ok", fullpath); + this.filename = target; + return callback(null, 0); + } + if (err) { + debug(`err ${err.code} ${fullpath}`); + return callback(err); + } + if (!stat || this._needsNewFile(stat.size)) { + return this._incFile(() => this.stat(callback)); + } + this.filename = target; + callback(null, stat.size); + }); + } + /** + * Closes the stream associated with this instance. + * @param {function} cb - TODO: add param description. + * @returns {undefined} + */ + close(cb) { + if (!this._stream) { + return; + } + this._stream.end(() => { + if (cb) { + cb(); + } + this.emit("flush"); + this.emit("closed"); + }); + } + /** + * TODO: add method description. + * @param {number} size - TODO: add param description. + * @returns {undefined} + */ + _needsNewFile(size) { + size = size || this._size; + return this.maxsize && size >= this.maxsize; + } + /** + * TODO: add method description. + * @param {Error} err - TODO: add param description. + * @returns {undefined} + */ + _onError(err) { + this.emit("error", err); + } + /** + * TODO: add method description. + * @param {Stream} stream - TODO: add param description. + * @returns {mixed} - TODO: add return description. + */ + _setupStream(stream) { + stream.on("error", this._onError); + return stream; + } + /** + * TODO: add method description. + * @param {Stream} stream - TODO: add param description. + * @returns {mixed} - TODO: add return description. + */ + _cleanupStream(stream) { + stream.removeListener("error", this._onError); + stream.destroy(); + return stream; + } + /** + * TODO: add method description. + */ + _rotateFile() { + this._incFile(() => this.open()); + } + /** + * Unpipe from the stream that has been marked as full and end it so it + * flushes to disk. + * + * @param {function} callback - Callback for when the current file has closed. + * @private + */ + _endStream(callback = () => { + }) { + if (this._dest) { + this._stream.unpipe(this._dest); + this._dest.end(() => { + this._cleanupStream(this._dest); + callback(); + }); + } else { + callback(); + } + } + /** + * Returns the WritableStream for the active file on this instance. If we + * should gzip the file then a zlib stream is returned. + * + * @param {ReadableStream} source –PassThrough to pipe to the file when open. + * @returns {WritableStream} Stream that writes to disk for the active file. + */ + _createStream(source) { + const fullpath = path9.join(this.dirname, this.filename); + debug("create stream start", fullpath, this.options); + const dest = fs10.createWriteStream(fullpath, this.options).on("error", (err) => debug(err)).on("close", () => debug("close", dest.path, dest.bytesWritten)).on("open", () => { + debug("file open ok", fullpath); + this.emit("open", fullpath); + source.pipe(dest); + if (this.rotatedWhileOpening) { + this._stream = new PassThrough(); + this._stream.setMaxListeners(30); + this._rotateFile(); + this.rotatedWhileOpening = false; + this._cleanupStream(dest); + source.end(); + } + }); + debug("create stream ok", fullpath); + return dest; + } + /** + * TODO: add method description. + * @param {function} callback - TODO: add param description. + * @returns {undefined} + */ + _incFile(callback) { + debug("_incFile", this.filename); + const ext = path9.extname(this._basename); + const basename = path9.basename(this._basename, ext); + const tasks = []; + if (this.zippedArchive) { + tasks.push( + function(cb) { + const num = this._created > 0 && !this.tailable ? this._created : ""; + this._compressFile( + path9.join(this.dirname, `${basename}${num}${ext}`), + path9.join(this.dirname, `${basename}${num}${ext}.gz`), + cb + ); + }.bind(this) + ); + } + tasks.push( + function(cb) { + if (!this.tailable) { + this._created += 1; + this._checkMaxFilesIncrementing(ext, basename, cb); + } else { + this._checkMaxFilesTailable(ext, basename, cb); + } + }.bind(this) + ); + asyncSeries(tasks, callback); + } + /** + * Gets the next filename to use for this instance in the case that log + * filesizes are being capped. + * @returns {string} - TODO: add return description. + * @private + */ + _getFile() { + const ext = path9.extname(this._basename); + const basename = path9.basename(this._basename, ext); + const isRotation = this.rotationFormat ? this.rotationFormat() : this._created; + return !this.tailable && this._created ? `${basename}${isRotation}${ext}` : `${basename}${ext}`; + } + /** + * Increment the number of files created or checked by this instance. + * @param {mixed} ext - TODO: add param description. + * @param {mixed} basename - TODO: add param description. + * @param {mixed} callback - TODO: add param description. + * @returns {undefined} + * @private + */ + _checkMaxFilesIncrementing(ext, basename, callback) { + if (!this.maxFiles || this._created < this.maxFiles) { + return setImmediate(callback); + } + const oldest = this._created - this.maxFiles; + const isOldest = oldest !== 0 ? oldest : ""; + const isZipped = this.zippedArchive ? ".gz" : ""; + const filePath = `${basename}${isOldest}${ext}${isZipped}`; + const target = path9.join(this.dirname, filePath); + fs10.unlink(target, callback); + } + /** + * Roll files forward based on integer, up to maxFiles. e.g. if base if + * file.log and it becomes oversized, roll to file1.log, and allow file.log + * to be re-used. If file is oversized again, roll file1.log to file2.log, + * roll file.log to file1.log, and so on. + * @param {mixed} ext - TODO: add param description. + * @param {mixed} basename - TODO: add param description. + * @param {mixed} callback - TODO: add param description. + * @returns {undefined} + * @private + */ + _checkMaxFilesTailable(ext, basename, callback) { + const tasks = []; + if (!this.maxFiles) { + return; + } + const isZipped = this.zippedArchive ? ".gz" : ""; + for (let x = this.maxFiles - 1; x > 1; x--) { + tasks.push(function(i, cb) { + let fileName = `${basename}${i - 1}${ext}${isZipped}`; + const tmppath = path9.join(this.dirname, fileName); + fs10.exists(tmppath, (exists) => { + if (!exists) { + return cb(null); + } + fileName = `${basename}${i}${ext}${isZipped}`; + fs10.rename(tmppath, path9.join(this.dirname, fileName), cb); + }); + }.bind(this, x)); + } + asyncSeries(tasks, () => { + fs10.rename( + path9.join(this.dirname, `${basename}${ext}${isZipped}`), + path9.join(this.dirname, `${basename}1${ext}${isZipped}`), + callback + ); + }); + } + /** + * Compresses src to dest with gzip and unlinks src + * @param {string} src - path to source file. + * @param {string} dest - path to zipped destination file. + * @param {Function} callback - callback called after file has been compressed. + * @returns {undefined} + * @private + */ + _compressFile(src, dest, callback) { + fs10.access(src, fs10.F_OK, (err) => { + if (err) { + return callback(); + } + var gzip = zlib2.createGzip(); + var inp = fs10.createReadStream(src); + var out = fs10.createWriteStream(dest); + out.on("finish", () => { + fs10.unlink(src, callback); + }); + inp.pipe(gzip).pipe(out); + }); + } + _createLogDirIfNotExist(dirPath) { + if (!fs10.existsSync(dirPath)) { + fs10.mkdirSync(dirPath, { recursive: true }); + } + } + }; + } +}); + +// node_modules/winston/lib/winston/transports/http.js +var require_http = __commonJS({ + "node_modules/winston/lib/winston/transports/http.js"(exports2, module2) { + "use strict"; + var http5 = require("http"); + var https3 = require("https"); + var { Stream } = require_readable(); + var TransportStream = require_winston_transport(); + var { configure } = require_safe_stable_stringify(); + module2.exports = class Http extends TransportStream { + /** + * Constructor function for the Http transport object responsible for + * persisting log messages and metadata to a terminal or TTY. + * @param {!Object} [options={}] - Options for this instance. + */ + // eslint-disable-next-line max-statements + constructor(options = {}) { + super(options); + this.options = options; + this.name = options.name || "http"; + this.ssl = !!options.ssl; + this.host = options.host || "localhost"; + this.port = options.port; + this.auth = options.auth; + this.path = options.path || ""; + this.maximumDepth = options.maximumDepth; + this.agent = options.agent; + this.headers = options.headers || {}; + this.headers["content-type"] = "application/json"; + this.batch = options.batch || false; + this.batchInterval = options.batchInterval || 5e3; + this.batchCount = options.batchCount || 10; + this.batchOptions = []; + this.batchTimeoutID = -1; + this.batchCallback = {}; + if (!this.port) { + this.port = this.ssl ? 443 : 80; + } + } + /** + * Core logging method exposed to Winston. + * @param {Object} info - TODO: add param description. + * @param {function} callback - TODO: add param description. + * @returns {undefined} + */ + log(info, callback) { + this._request(info, null, null, (err, res) => { + if (res && res.statusCode !== 200) { + err = new Error(`Invalid HTTP Status Code: ${res.statusCode}`); + } + if (err) { + this.emit("warn", err); + } else { + this.emit("logged", info); + } + }); + if (callback) { + setImmediate(callback); + } + } + /** + * Query the transport. Options object is optional. + * @param {Object} options - Loggly-like query options for this instance. + * @param {function} callback - Continuation to respond to when complete. + * @returns {undefined} + */ + query(options, callback) { + if (typeof options === "function") { + callback = options; + options = {}; + } + options = { + method: "query", + params: this.normalizeQuery(options) + }; + const auth = options.params.auth || null; + delete options.params.auth; + const path9 = options.params.path || null; + delete options.params.path; + this._request(options, auth, path9, (err, res, body) => { + if (res && res.statusCode !== 200) { + err = new Error(`Invalid HTTP Status Code: ${res.statusCode}`); + } + if (err) { + return callback(err); + } + if (typeof body === "string") { + try { + body = JSON.parse(body); + } catch (e) { + return callback(e); + } + } + callback(null, body); + }); + } + /** + * Returns a log stream for this transport. Options object is optional. + * @param {Object} options - Stream options for this instance. + * @returns {Stream} - TODO: add return description + */ + stream(options = {}) { + const stream = new Stream(); + options = { + method: "stream", + params: options + }; + const path9 = options.params.path || null; + delete options.params.path; + const auth = options.params.auth || null; + delete options.params.auth; + let buff = ""; + const req = this._request(options, auth, path9); + stream.destroy = () => req.destroy(); + req.on("data", (data) => { + data = (buff + data).split(/\n+/); + const l = data.length - 1; + let i = 0; + for (; i < l; i++) { + try { + stream.emit("log", JSON.parse(data[i])); + } catch (e) { + stream.emit("error", e); + } + } + buff = data[l]; + }); + req.on("error", (err) => stream.emit("error", err)); + return stream; + } + /** + * Make a request to a winstond server or any http server which can + * handle json-rpc. + * @param {function} options - Options to sent the request. + * @param {Object?} auth - authentication options + * @param {string} path - request path + * @param {function} callback - Continuation to respond to when complete. + */ + _request(options, auth, path9, callback) { + options = options || {}; + auth = auth || this.auth; + path9 = path9 || this.path || ""; + if (this.batch) { + this._doBatch(options, callback, auth, path9); + } else { + this._doRequest(options, callback, auth, path9); + } + } + /** + * Send or memorize the options according to batch configuration + * @param {function} options - Options to sent the request. + * @param {function} callback - Continuation to respond to when complete. + * @param {Object?} auth - authentication options + * @param {string} path - request path + */ + _doBatch(options, callback, auth, path9) { + this.batchOptions.push(options); + if (this.batchOptions.length === 1) { + const me = this; + this.batchCallback = callback; + this.batchTimeoutID = setTimeout(function() { + me.batchTimeoutID = -1; + me._doBatchRequest(me.batchCallback, auth, path9); + }, this.batchInterval); + } + if (this.batchOptions.length === this.batchCount) { + this._doBatchRequest(this.batchCallback, auth, path9); + } + } + /** + * Initiate a request with the memorized batch options, stop the batch timeout + * @param {function} callback - Continuation to respond to when complete. + * @param {Object?} auth - authentication options + * @param {string} path - request path + */ + _doBatchRequest(callback, auth, path9) { + if (this.batchTimeoutID > 0) { + clearTimeout(this.batchTimeoutID); + this.batchTimeoutID = -1; + } + const batchOptionsCopy = this.batchOptions.slice(); + this.batchOptions = []; + this._doRequest(batchOptionsCopy, callback, auth, path9); + } + /** + * Make a request to a winstond server or any http server which can + * handle json-rpc. + * @param {function} options - Options to sent the request. + * @param {function} callback - Continuation to respond to when complete. + * @param {Object?} auth - authentication options + * @param {string} path - request path + */ + _doRequest(options, callback, auth, path9) { + const headers = Object.assign({}, this.headers); + if (auth && auth.bearer) { + headers.Authorization = `Bearer ${auth.bearer}`; + } + const req = (this.ssl ? https3 : http5).request({ + ...this.options, + method: "POST", + host: this.host, + port: this.port, + path: `/${path9.replace(/^\//, "")}`, + headers, + auth: auth && auth.username && auth.password ? `${auth.username}:${auth.password}` : "", + agent: this.agent + }); + req.on("error", callback); + req.on("response", (res) => res.on("end", () => callback(null, res)).resume()); + const jsonStringify = configure({ + ...this.maximumDepth && { maximumDepth: this.maximumDepth } + }); + req.end(Buffer.from(jsonStringify(options, this.options.replacer), "utf8")); + } + }; + } +}); + +// node_modules/is-stream/index.js +var require_is_stream = __commonJS({ + "node_modules/is-stream/index.js"(exports2, module2) { + "use strict"; + var isStream = (stream) => stream !== null && typeof stream === "object" && typeof stream.pipe === "function"; + isStream.writable = (stream) => isStream(stream) && stream.writable !== false && typeof stream._write === "function" && typeof stream._writableState === "object"; + isStream.readable = (stream) => isStream(stream) && stream.readable !== false && typeof stream._read === "function" && typeof stream._readableState === "object"; + isStream.duplex = (stream) => isStream.writable(stream) && isStream.readable(stream); + isStream.transform = (stream) => isStream.duplex(stream) && typeof stream._transform === "function"; + module2.exports = isStream; + } +}); + +// node_modules/winston/lib/winston/transports/stream.js +var require_stream2 = __commonJS({ + "node_modules/winston/lib/winston/transports/stream.js"(exports2, module2) { + "use strict"; + var isStream = require_is_stream(); + var { MESSAGE } = require_triple_beam(); + var os5 = require("os"); + var TransportStream = require_winston_transport(); + module2.exports = class Stream extends TransportStream { + /** + * Constructor function for the Console transport object responsible for + * persisting log messages and metadata to a terminal or TTY. + * @param {!Object} [options={}] - Options for this instance. + */ + constructor(options = {}) { + super(options); + if (!options.stream || !isStream(options.stream)) { + throw new Error("options.stream is required."); + } + this._stream = options.stream; + this._stream.setMaxListeners(Infinity); + this.isObjectMode = options.stream._writableState.objectMode; + this.eol = typeof options.eol === "string" ? options.eol : os5.EOL; + } + /** + * Core logging method exposed to Winston. + * @param {Object} info - TODO: add param description. + * @param {Function} callback - TODO: add param description. + * @returns {undefined} + */ + log(info, callback) { + setImmediate(() => this.emit("logged", info)); + if (this.isObjectMode) { + this._stream.write(info); + if (callback) { + callback(); + } + return; + } + this._stream.write(`${info[MESSAGE]}${this.eol}`); + if (callback) { + callback(); + } + return; + } + }; + } +}); + +// node_modules/winston/lib/winston/transports/index.js +var require_transports = __commonJS({ + "node_modules/winston/lib/winston/transports/index.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "Console", { + configurable: true, + enumerable: true, + get() { + return require_console(); + } + }); + Object.defineProperty(exports2, "File", { + configurable: true, + enumerable: true, + get() { + return require_file(); + } + }); + Object.defineProperty(exports2, "Http", { + configurable: true, + enumerable: true, + get() { + return require_http(); + } + }); + Object.defineProperty(exports2, "Stream", { + configurable: true, + enumerable: true, + get() { + return require_stream2(); + } + }); + } +}); + +// node_modules/winston/lib/winston/config/index.js +var require_config2 = __commonJS({ + "node_modules/winston/lib/winston/config/index.js"(exports2) { + "use strict"; + var logform = require_logform(); + var { configs } = require_triple_beam(); + exports2.cli = logform.levels(configs.cli); + exports2.npm = logform.levels(configs.npm); + exports2.syslog = logform.levels(configs.syslog); + exports2.addColors = logform.levels; + } +}); + +// node_modules/async/eachOf.js +var require_eachOf = __commonJS({ + "node_modules/async/eachOf.js"(exports2, module2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + var _isArrayLike = require_isArrayLike(); + var _isArrayLike2 = _interopRequireDefault(_isArrayLike); + var _breakLoop = require_breakLoop(); + var _breakLoop2 = _interopRequireDefault(_breakLoop); + var _eachOfLimit = require_eachOfLimit2(); + var _eachOfLimit2 = _interopRequireDefault(_eachOfLimit); + var _once = require_once(); + var _once2 = _interopRequireDefault(_once); + var _onlyOnce = require_onlyOnce(); + var _onlyOnce2 = _interopRequireDefault(_onlyOnce); + var _wrapAsync = require_wrapAsync(); + var _wrapAsync2 = _interopRequireDefault(_wrapAsync); + var _awaitify = require_awaitify(); + var _awaitify2 = _interopRequireDefault(_awaitify); + function _interopRequireDefault(obj) { + return obj && obj.__esModule ? obj : { default: obj }; + } + function eachOfArrayLike(coll, iteratee, callback) { + callback = (0, _once2.default)(callback); + var index = 0, completed = 0, { length } = coll, canceled = false; + if (length === 0) { + callback(null); + } + function iteratorCallback(err, value) { + if (err === false) { + canceled = true; + } + if (canceled === true) return; + if (err) { + callback(err); + } else if (++completed === length || value === _breakLoop2.default) { + callback(null); + } + } + for (; index < length; index++) { + iteratee(coll[index], index, (0, _onlyOnce2.default)(iteratorCallback)); + } + } + function eachOfGeneric(coll, iteratee, callback) { + return (0, _eachOfLimit2.default)(coll, Infinity, iteratee, callback); + } + function eachOf(coll, iteratee, callback) { + var eachOfImplementation = (0, _isArrayLike2.default)(coll) ? eachOfArrayLike : eachOfGeneric; + return eachOfImplementation(coll, (0, _wrapAsync2.default)(iteratee), callback); + } + exports2.default = (0, _awaitify2.default)(eachOf, 3); + module2.exports = exports2.default; + } +}); + +// node_modules/async/internal/withoutIndex.js +var require_withoutIndex = __commonJS({ + "node_modules/async/internal/withoutIndex.js"(exports2, module2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + exports2.default = _withoutIndex; + function _withoutIndex(iteratee) { + return (value, index, callback) => iteratee(value, callback); + } + module2.exports = exports2.default; + } +}); + +// node_modules/async/forEach.js +var require_forEach = __commonJS({ + "node_modules/async/forEach.js"(exports2, module2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + var _eachOf = require_eachOf(); + var _eachOf2 = _interopRequireDefault(_eachOf); + var _withoutIndex = require_withoutIndex(); + var _withoutIndex2 = _interopRequireDefault(_withoutIndex); + var _wrapAsync = require_wrapAsync(); + var _wrapAsync2 = _interopRequireDefault(_wrapAsync); + var _awaitify = require_awaitify(); + var _awaitify2 = _interopRequireDefault(_awaitify); + function _interopRequireDefault(obj) { + return obj && obj.__esModule ? obj : { default: obj }; + } + function eachLimit(coll, iteratee, callback) { + return (0, _eachOf2.default)(coll, (0, _withoutIndex2.default)((0, _wrapAsync2.default)(iteratee)), callback); + } + exports2.default = (0, _awaitify2.default)(eachLimit, 3); + module2.exports = exports2.default; + } +}); + +// node_modules/fn.name/index.js +var require_fn = __commonJS({ + "node_modules/fn.name/index.js"(exports2, module2) { + "use strict"; + var toString = Object.prototype.toString; + module2.exports = function name5(fn) { + if ("string" === typeof fn.displayName && fn.constructor.name) { + return fn.displayName; + } else if ("string" === typeof fn.name && fn.name) { + return fn.name; + } + if ("object" === typeof fn && fn.constructor && "string" === typeof fn.constructor.name) return fn.constructor.name; + var named = fn.toString(), type = toString.call(fn).slice(8, -1); + if ("Function" === type) { + named = named.substring(named.indexOf("(") + 1, named.indexOf(")")); + } else { + named = type; + } + return named || "anonymous"; + }; + } +}); + +// node_modules/one-time/index.js +var require_one_time = __commonJS({ + "node_modules/one-time/index.js"(exports2, module2) { + "use strict"; + var name5 = require_fn(); + module2.exports = function one(fn) { + var called = 0, value; + function onetime() { + if (called) return value; + called = 1; + value = fn.apply(this, arguments); + fn = null; + return value; + } + onetime.displayName = name5(fn); + return onetime; + }; + } +}); + +// node_modules/stack-trace/lib/stack-trace.js +var require_stack_trace = __commonJS({ + "node_modules/stack-trace/lib/stack-trace.js"(exports2) { + exports2.get = function(belowFn) { + var oldLimit = Error.stackTraceLimit; + Error.stackTraceLimit = Infinity; + var dummyObject = {}; + var v8Handler = Error.prepareStackTrace; + Error.prepareStackTrace = function(dummyObject2, v8StackTrace2) { + return v8StackTrace2; + }; + Error.captureStackTrace(dummyObject, belowFn || exports2.get); + var v8StackTrace = dummyObject.stack; + Error.prepareStackTrace = v8Handler; + Error.stackTraceLimit = oldLimit; + return v8StackTrace; + }; + exports2.parse = function(err) { + if (!err.stack) { + return []; + } + var self2 = this; + var lines = err.stack.split("\n").slice(1); + return lines.map(function(line) { + if (line.match(/^\s*[-]{4,}$/)) { + return self2._createParsedCallSite({ + fileName: line, + lineNumber: null, + functionName: null, + typeName: null, + methodName: null, + columnNumber: null, + "native": null + }); + } + var lineMatch = line.match(/at (?:(.+)\s+\()?(?:(.+?):(\d+)(?::(\d+))?|([^)]+))\)?/); + if (!lineMatch) { + return; + } + var object3 = null; + var method = null; + var functionName = null; + var typeName = null; + var methodName = null; + var isNative = lineMatch[5] === "native"; + if (lineMatch[1]) { + functionName = lineMatch[1]; + var methodStart = functionName.lastIndexOf("."); + if (functionName[methodStart - 1] == ".") + methodStart--; + if (methodStart > 0) { + object3 = functionName.substr(0, methodStart); + method = functionName.substr(methodStart + 1); + var objectEnd = object3.indexOf(".Module"); + if (objectEnd > 0) { + functionName = functionName.substr(objectEnd + 1); + object3 = object3.substr(0, objectEnd); + } + } + typeName = null; + } + if (method) { + typeName = object3; + methodName = method; + } + if (method === "") { + methodName = null; + functionName = null; + } + var properties = { + fileName: lineMatch[2] || null, + lineNumber: parseInt(lineMatch[3], 10) || null, + functionName, + typeName, + methodName, + columnNumber: parseInt(lineMatch[4], 10) || null, + "native": isNative + }; + return self2._createParsedCallSite(properties); + }).filter(function(callSite) { + return !!callSite; + }); + }; + function CallSite(properties) { + for (var property in properties) { + this[property] = properties[property]; + } + } + var strProperties = [ + "this", + "typeName", + "functionName", + "methodName", + "fileName", + "lineNumber", + "columnNumber", + "function", + "evalOrigin" + ]; + var boolProperties = [ + "topLevel", + "eval", + "native", + "constructor" + ]; + strProperties.forEach(function(property) { + CallSite.prototype[property] = null; + CallSite.prototype["get" + property[0].toUpperCase() + property.substr(1)] = function() { + return this[property]; + }; + }); + boolProperties.forEach(function(property) { + CallSite.prototype[property] = false; + CallSite.prototype["is" + property[0].toUpperCase() + property.substr(1)] = function() { + return this[property]; + }; + }); + exports2._createParsedCallSite = function(properties) { + return new CallSite(properties); + }; + } +}); + +// node_modules/winston/lib/winston/exception-stream.js +var require_exception_stream = __commonJS({ + "node_modules/winston/lib/winston/exception-stream.js"(exports2, module2) { + "use strict"; + var { Writable } = require_readable(); + module2.exports = class ExceptionStream extends Writable { + /** + * Constructor function for the ExceptionStream responsible for wrapping a + * TransportStream; only allowing writes of `info` objects with + * `info.exception` set to true. + * @param {!TransportStream} transport - Stream to filter to exceptions + */ + constructor(transport) { + super({ objectMode: true }); + if (!transport) { + throw new Error("ExceptionStream requires a TransportStream instance."); + } + this.handleExceptions = true; + this.transport = transport; + } + /** + * Writes the info object to our transport instance if (and only if) the + * `exception` property is set on the info. + * @param {mixed} info - TODO: add param description. + * @param {mixed} enc - TODO: add param description. + * @param {mixed} callback - TODO: add param description. + * @returns {mixed} - TODO: add return description. + * @private + */ + _write(info, enc, callback) { + if (info.exception) { + return this.transport.log(info, callback); + } + callback(); + return true; + } + }; + } +}); + +// node_modules/winston/lib/winston/exception-handler.js +var require_exception_handler = __commonJS({ + "node_modules/winston/lib/winston/exception-handler.js"(exports2, module2) { + "use strict"; + var os5 = require("os"); + var asyncForEach = require_forEach(); + var debug = require_node2()("winston:exception"); + var once = require_one_time(); + var stackTrace = require_stack_trace(); + var ExceptionStream = require_exception_stream(); + module2.exports = class ExceptionHandler { + /** + * TODO: add contructor description + * @param {!Logger} logger - TODO: add param description + */ + constructor(logger31) { + if (!logger31) { + throw new Error("Logger is required to handle exceptions"); + } + this.logger = logger31; + this.handlers = /* @__PURE__ */ new Map(); + } + /** + * Handles `uncaughtException` events for the current process by adding any + * handlers passed in. + * @returns {undefined} + */ + handle(...args) { + args.forEach((arg) => { + if (Array.isArray(arg)) { + return arg.forEach((handler) => this._addHandler(handler)); + } + this._addHandler(arg); + }); + if (!this.catcher) { + this.catcher = this._uncaughtException.bind(this); + process.on("uncaughtException", this.catcher); + } + } + /** + * Removes any handlers to `uncaughtException` events for the current + * process. This does not modify the state of the `this.handlers` set. + * @returns {undefined} + */ + unhandle() { + if (this.catcher) { + process.removeListener("uncaughtException", this.catcher); + this.catcher = false; + Array.from(this.handlers.values()).forEach((wrapper) => this.logger.unpipe(wrapper)); + } + } + /** + * TODO: add method description + * @param {Error} err - Error to get information about. + * @returns {mixed} - TODO: add return description. + */ + getAllInfo(err) { + let message = null; + if (err) { + message = typeof err === "string" ? err : err.message; + } + return { + error: err, + // TODO (indexzero): how do we configure this? + level: "error", + message: [ + `uncaughtException: ${message || "(no error message)"}`, + err && err.stack || " No stack trace" + ].join("\n"), + stack: err && err.stack, + exception: true, + date: (/* @__PURE__ */ new Date()).toString(), + process: this.getProcessInfo(), + os: this.getOsInfo(), + trace: this.getTrace(err) + }; + } + /** + * Gets all relevant process information for the currently running process. + * @returns {mixed} - TODO: add return description. + */ + getProcessInfo() { + return { + pid: process.pid, + uid: process.getuid ? process.getuid() : null, + gid: process.getgid ? process.getgid() : null, + cwd: process.cwd(), + execPath: process.execPath, + version: process.version, + argv: process.argv, + memoryUsage: process.memoryUsage() + }; + } + /** + * Gets all relevant OS information for the currently running process. + * @returns {mixed} - TODO: add return description. + */ + getOsInfo() { + return { + loadavg: os5.loadavg(), + uptime: os5.uptime() + }; + } + /** + * Gets a stack trace for the specified error. + * @param {mixed} err - TODO: add param description. + * @returns {mixed} - TODO: add return description. + */ + getTrace(err) { + const trace = err ? stackTrace.parse(err) : stackTrace.get(); + return trace.map((site) => { + return { + column: site.getColumnNumber(), + file: site.getFileName(), + function: site.getFunctionName(), + line: site.getLineNumber(), + method: site.getMethodName(), + native: site.isNative() + }; + }); + } + /** + * Helper method to add a transport as an exception handler. + * @param {Transport} handler - The transport to add as an exception handler. + * @returns {void} + */ + _addHandler(handler) { + if (!this.handlers.has(handler)) { + handler.handleExceptions = true; + const wrapper = new ExceptionStream(handler); + this.handlers.set(handler, wrapper); + this.logger.pipe(wrapper); + } + } + /** + * Logs all relevant information around the `err` and exits the current + * process. + * @param {Error} err - Error to handle + * @returns {mixed} - TODO: add return description. + * @private + */ + _uncaughtException(err) { + const info = this.getAllInfo(err); + const handlers = this._getExceptionHandlers(); + let doExit = typeof this.logger.exitOnError === "function" ? this.logger.exitOnError(err) : this.logger.exitOnError; + let timeout; + if (!handlers.length && doExit) { + console.warn("winston: exitOnError cannot be true with no exception handlers."); + console.warn("winston: not exiting process."); + doExit = false; + } + function gracefulExit() { + debug("doExit", doExit); + debug("process._exiting", process._exiting); + if (doExit && !process._exiting) { + if (timeout) { + clearTimeout(timeout); + } + process.exit(1); + } + } + if (!handlers || handlers.length === 0) { + return process.nextTick(gracefulExit); + } + asyncForEach(handlers, (handler, next) => { + const done = once(next); + const transport = handler.transport || handler; + function onDone(event) { + return () => { + debug(event); + done(); + }; + } + transport._ending = true; + transport.once("finish", onDone("finished")); + transport.once("error", onDone("error")); + }, () => doExit && gracefulExit()); + this.logger.log(info); + if (doExit) { + timeout = setTimeout(gracefulExit, 3e3); + } + } + /** + * Returns the list of transports and exceptionHandlers for this instance. + * @returns {Array} - List of transports and exceptionHandlers for this + * instance. + * @private + */ + _getExceptionHandlers() { + return this.logger.transports.filter((wrap) => { + const transport = wrap.transport || wrap; + return transport.handleExceptions; + }); + } + }; + } +}); + +// node_modules/winston/lib/winston/rejection-stream.js +var require_rejection_stream = __commonJS({ + "node_modules/winston/lib/winston/rejection-stream.js"(exports2, module2) { + "use strict"; + var { Writable } = require_readable(); + module2.exports = class RejectionStream extends Writable { + /** + * Constructor function for the RejectionStream responsible for wrapping a + * TransportStream; only allowing writes of `info` objects with + * `info.rejection` set to true. + * @param {!TransportStream} transport - Stream to filter to rejections + */ + constructor(transport) { + super({ objectMode: true }); + if (!transport) { + throw new Error("RejectionStream requires a TransportStream instance."); + } + this.handleRejections = true; + this.transport = transport; + } + /** + * Writes the info object to our transport instance if (and only if) the + * `rejection` property is set on the info. + * @param {mixed} info - TODO: add param description. + * @param {mixed} enc - TODO: add param description. + * @param {mixed} callback - TODO: add param description. + * @returns {mixed} - TODO: add return description. + * @private + */ + _write(info, enc, callback) { + if (info.rejection) { + return this.transport.log(info, callback); + } + callback(); + return true; + } + }; + } +}); + +// node_modules/winston/lib/winston/rejection-handler.js +var require_rejection_handler = __commonJS({ + "node_modules/winston/lib/winston/rejection-handler.js"(exports2, module2) { + "use strict"; + var os5 = require("os"); + var asyncForEach = require_forEach(); + var debug = require_node2()("winston:rejection"); + var once = require_one_time(); + var stackTrace = require_stack_trace(); + var RejectionStream = require_rejection_stream(); + module2.exports = class RejectionHandler { + /** + * TODO: add contructor description + * @param {!Logger} logger - TODO: add param description + */ + constructor(logger31) { + if (!logger31) { + throw new Error("Logger is required to handle rejections"); + } + this.logger = logger31; + this.handlers = /* @__PURE__ */ new Map(); + } + /** + * Handles `unhandledRejection` events for the current process by adding any + * handlers passed in. + * @returns {undefined} + */ + handle(...args) { + args.forEach((arg) => { + if (Array.isArray(arg)) { + return arg.forEach((handler) => this._addHandler(handler)); + } + this._addHandler(arg); + }); + if (!this.catcher) { + this.catcher = this._unhandledRejection.bind(this); + process.on("unhandledRejection", this.catcher); + } + } + /** + * Removes any handlers to `unhandledRejection` events for the current + * process. This does not modify the state of the `this.handlers` set. + * @returns {undefined} + */ + unhandle() { + if (this.catcher) { + process.removeListener("unhandledRejection", this.catcher); + this.catcher = false; + Array.from(this.handlers.values()).forEach( + (wrapper) => this.logger.unpipe(wrapper) + ); + } + } + /** + * TODO: add method description + * @param {Error} err - Error to get information about. + * @returns {mixed} - TODO: add return description. + */ + getAllInfo(err) { + let message = null; + if (err) { + message = typeof err === "string" ? err : err.message; + } + return { + error: err, + // TODO (indexzero): how do we configure this? + level: "error", + message: [ + `unhandledRejection: ${message || "(no error message)"}`, + err && err.stack || " No stack trace" + ].join("\n"), + stack: err && err.stack, + rejection: true, + date: (/* @__PURE__ */ new Date()).toString(), + process: this.getProcessInfo(), + os: this.getOsInfo(), + trace: this.getTrace(err) + }; + } + /** + * Gets all relevant process information for the currently running process. + * @returns {mixed} - TODO: add return description. + */ + getProcessInfo() { + return { + pid: process.pid, + uid: process.getuid ? process.getuid() : null, + gid: process.getgid ? process.getgid() : null, + cwd: process.cwd(), + execPath: process.execPath, + version: process.version, + argv: process.argv, + memoryUsage: process.memoryUsage() + }; + } + /** + * Gets all relevant OS information for the currently running process. + * @returns {mixed} - TODO: add return description. + */ + getOsInfo() { + return { + loadavg: os5.loadavg(), + uptime: os5.uptime() + }; + } + /** + * Gets a stack trace for the specified error. + * @param {mixed} err - TODO: add param description. + * @returns {mixed} - TODO: add return description. + */ + getTrace(err) { + const trace = err ? stackTrace.parse(err) : stackTrace.get(); + return trace.map((site) => { + return { + column: site.getColumnNumber(), + file: site.getFileName(), + function: site.getFunctionName(), + line: site.getLineNumber(), + method: site.getMethodName(), + native: site.isNative() + }; + }); + } + /** + * Helper method to add a transport as an exception handler. + * @param {Transport} handler - The transport to add as an exception handler. + * @returns {void} + */ + _addHandler(handler) { + if (!this.handlers.has(handler)) { + handler.handleRejections = true; + const wrapper = new RejectionStream(handler); + this.handlers.set(handler, wrapper); + this.logger.pipe(wrapper); + } + } + /** + * Logs all relevant information around the `err` and exits the current + * process. + * @param {Error} err - Error to handle + * @returns {mixed} - TODO: add return description. + * @private + */ + _unhandledRejection(err) { + const info = this.getAllInfo(err); + const handlers = this._getRejectionHandlers(); + let doExit = typeof this.logger.exitOnError === "function" ? this.logger.exitOnError(err) : this.logger.exitOnError; + let timeout; + if (!handlers.length && doExit) { + console.warn("winston: exitOnError cannot be true with no rejection handlers."); + console.warn("winston: not exiting process."); + doExit = false; + } + function gracefulExit() { + debug("doExit", doExit); + debug("process._exiting", process._exiting); + if (doExit && !process._exiting) { + if (timeout) { + clearTimeout(timeout); + } + process.exit(1); + } + } + if (!handlers || handlers.length === 0) { + return process.nextTick(gracefulExit); + } + asyncForEach( + handlers, + (handler, next) => { + const done = once(next); + const transport = handler.transport || handler; + function onDone(event) { + return () => { + debug(event); + done(); + }; + } + transport._ending = true; + transport.once("finish", onDone("finished")); + transport.once("error", onDone("error")); + }, + () => doExit && gracefulExit() + ); + this.logger.log(info); + if (doExit) { + timeout = setTimeout(gracefulExit, 3e3); + } + } + /** + * Returns the list of transports and exceptionHandlers for this instance. + * @returns {Array} - List of transports and exceptionHandlers for this + * instance. + * @private + */ + _getRejectionHandlers() { + return this.logger.transports.filter((wrap) => { + const transport = wrap.transport || wrap; + return transport.handleRejections; + }); + } + }; + } +}); + +// node_modules/winston/lib/winston/profiler.js +var require_profiler = __commonJS({ + "node_modules/winston/lib/winston/profiler.js"(exports2, module2) { + "use strict"; + var Profiler = class { + /** + * Constructor function for the Profiler instance used by + * `Logger.prototype.startTimer`. When done is called the timer will finish + * and log the duration. + * @param {!Logger} logger - TODO: add param description. + * @private + */ + constructor(logger31) { + const Logger3 = require_logger(); + if (typeof logger31 !== "object" || Array.isArray(logger31) || !(logger31 instanceof Logger3)) { + throw new Error("Logger is required for profiling"); + } else { + this.logger = logger31; + this.start = Date.now(); + } + } + /** + * Ends the current timer (i.e. Profiler) instance and logs the `msg` along + * with the duration since creation. + * @returns {mixed} - TODO: add return description. + * @private + */ + done(...args) { + if (typeof args[args.length - 1] === "function") { + console.warn("Callback function no longer supported as of winston@3.0.0"); + args.pop(); + } + const info = typeof args[args.length - 1] === "object" ? args.pop() : {}; + info.level = info.level || "info"; + info.durationMs = Date.now() - this.start; + return this.logger.write(info); + } + }; + module2.exports = Profiler; + } +}); + +// node_modules/winston/lib/winston/logger.js +var require_logger = __commonJS({ + "node_modules/winston/lib/winston/logger.js"(exports2, module2) { + "use strict"; + var { Stream, Transform: Transform2 } = require_readable(); + var asyncForEach = require_forEach(); + var { LEVEL, SPLAT } = require_triple_beam(); + var isStream = require_is_stream(); + var ExceptionHandler = require_exception_handler(); + var RejectionHandler = require_rejection_handler(); + var LegacyTransportStream = require_legacy(); + var Profiler = require_profiler(); + var { warn } = require_common(); + var config2 = require_config2(); + var formatRegExp = /%[scdjifoO%]/g; + var Logger3 = class extends Transform2 { + /** + * Constructor function for the Logger object responsible for persisting log + * messages and metadata to one or more transports. + * @param {!Object} options - foo + */ + constructor(options) { + super({ objectMode: true }); + this.configure(options); + } + child(defaultRequestMetadata) { + const logger31 = this; + return Object.create(logger31, { + write: { + value: function(info) { + const infoClone = Object.assign( + {}, + defaultRequestMetadata, + info + ); + if (info instanceof Error) { + infoClone.stack = info.stack; + infoClone.message = info.message; + infoClone.cause = info.cause; + } + logger31.write(infoClone); + } + } + }); + } + /** + * This will wholesale reconfigure this instance by: + * 1. Resetting all transports. Older transports will be removed implicitly. + * 2. Set all other options including levels, colors, rewriters, filters, + * exceptionHandlers, etc. + * @param {!Object} options - TODO: add param description. + * @returns {undefined} + */ + configure({ + silent, + format, + defaultMeta, + levels, + level = "info", + exitOnError = true, + transports, + colors, + emitErrs, + formatters, + padLevels, + rewriters, + stripColors, + exceptionHandlers, + rejectionHandlers + } = {}) { + if (this.transports.length) { + this.clear(); + } + this.silent = silent; + this.format = format || this.format || require_json()(); + this.defaultMeta = defaultMeta || null; + this.levels = levels || this.levels || config2.npm.levels; + this.level = level; + if (this.exceptions) { + this.exceptions.unhandle(); + } + if (this.rejections) { + this.rejections.unhandle(); + } + this.exceptions = new ExceptionHandler(this); + this.rejections = new RejectionHandler(this); + this.profilers = {}; + this.exitOnError = exitOnError; + if (transports) { + transports = Array.isArray(transports) ? transports : [transports]; + transports.forEach((transport) => this.add(transport)); + } + if (colors || emitErrs || formatters || padLevels || rewriters || stripColors) { + throw new Error( + [ + "{ colors, emitErrs, formatters, padLevels, rewriters, stripColors } were removed in winston@3.0.0.", + "Use a custom winston.format(function) instead.", + "See: https://github.com/winstonjs/winston/tree/master/UPGRADE-3.0.md" + ].join("\n") + ); + } + if (exceptionHandlers) { + this.exceptions.handle(exceptionHandlers); + } + if (rejectionHandlers) { + this.rejections.handle(rejectionHandlers); + } + } + /* eslint-disable valid-jsdoc */ + /** + * Helper method to get the highest logging level associated with a logger + * + * @returns { number | null } - The highest configured logging level, null + * for invalid configuration + */ + getHighestLogLevel() { + const configuredLevelValue = getLevelValue(this.levels, this.level); + if (!this.transports || this.transports.length === 0) { + return configuredLevelValue; + } + return this.transports.reduce((max, transport) => { + const levelValue = getLevelValue(this.levels, transport.level); + return levelValue !== null && levelValue > max ? levelValue : max; + }, configuredLevelValue); + } + isLevelEnabled(level) { + const givenLevelValue = getLevelValue(this.levels, level); + if (givenLevelValue === null) { + return false; + } + const configuredLevelValue = getLevelValue(this.levels, this.level); + if (configuredLevelValue === null) { + return false; + } + if (!this.transports || this.transports.length === 0) { + return configuredLevelValue >= givenLevelValue; + } + const index = this.transports.findIndex((transport) => { + let transportLevelValue = getLevelValue(this.levels, transport.level); + if (transportLevelValue === null) { + transportLevelValue = configuredLevelValue; + } + return transportLevelValue >= givenLevelValue; + }); + return index !== -1; + } + /* eslint-disable valid-jsdoc */ + /** + * Ensure backwards compatibility with a `log` method + * @param {mixed} level - Level the log message is written at. + * @param {mixed} msg - TODO: add param description. + * @param {mixed} meta - TODO: add param description. + * @returns {Logger} - TODO: add return description. + * + * @example + * // Supports the existing API: + * logger.log('info', 'Hello world', { custom: true }); + * logger.log('info', new Error('Yo, it\'s on fire')); + * + * // Requires winston.format.splat() + * logger.log('info', '%s %d%%', 'A string', 50, { thisIsMeta: true }); + * + * // And the new API with a single JSON literal: + * logger.log({ level: 'info', message: 'Hello world', custom: true }); + * logger.log({ level: 'info', message: new Error('Yo, it\'s on fire') }); + * + * // Also requires winston.format.splat() + * logger.log({ + * level: 'info', + * message: '%s %d%%', + * [SPLAT]: ['A string', 50], + * meta: { thisIsMeta: true } + * }); + * + */ + /* eslint-enable valid-jsdoc */ + log(level, msg, ...splat) { + if (arguments.length === 1) { + level[LEVEL] = level.level; + this._addDefaultMeta(level); + this.write(level); + return this; + } + if (arguments.length === 2) { + if (msg && typeof msg === "object") { + msg[LEVEL] = msg.level = level; + this._addDefaultMeta(msg); + this.write(msg); + return this; + } + msg = { [LEVEL]: level, level, message: msg }; + this._addDefaultMeta(msg); + this.write(msg); + return this; + } + const [meta] = splat; + if (typeof meta === "object" && meta !== null) { + const tokens = msg && msg.match && msg.match(formatRegExp); + if (!tokens) { + const info = Object.assign({}, this.defaultMeta, meta, { + [LEVEL]: level, + [SPLAT]: splat, + level, + message: msg + }); + if (meta.message) info.message = `${info.message} ${meta.message}`; + if (meta.stack) info.stack = meta.stack; + if (meta.cause) info.cause = meta.cause; + this.write(info); + return this; + } + } + this.write(Object.assign({}, this.defaultMeta, { + [LEVEL]: level, + [SPLAT]: splat, + level, + message: msg + })); + return this; + } + /** + * Pushes data so that it can be picked up by all of our pipe targets. + * @param {mixed} info - TODO: add param description. + * @param {mixed} enc - TODO: add param description. + * @param {mixed} callback - Continues stream processing. + * @returns {undefined} + * @private + */ + _transform(info, enc, callback) { + if (this.silent) { + return callback(); + } + if (!info[LEVEL]) { + info[LEVEL] = info.level; + } + if (!this.levels[info[LEVEL]] && this.levels[info[LEVEL]] !== 0) { + console.error("[winston] Unknown logger level: %s", info[LEVEL]); + } + if (!this._readableState.pipes) { + console.error( + "[winston] Attempt to write logs with no transports, which can increase memory usage: %j", + info + ); + } + try { + this.push(this.format.transform(info, this.format.options)); + } finally { + this._writableState.sync = false; + callback(); + } + } + /** + * Delays the 'finish' event until all transport pipe targets have + * also emitted 'finish' or are already finished. + * @param {mixed} callback - Continues stream processing. + */ + _final(callback) { + const transports = this.transports.slice(); + asyncForEach( + transports, + (transport, next) => { + if (!transport || transport.finished) return setImmediate(next); + transport.once("finish", next); + transport.end(); + }, + callback + ); + } + /** + * Adds the transport to this logger instance by piping to it. + * @param {mixed} transport - TODO: add param description. + * @returns {Logger} - TODO: add return description. + */ + add(transport) { + const target = !isStream(transport) || transport.log.length > 2 ? new LegacyTransportStream({ transport }) : transport; + if (!target._writableState || !target._writableState.objectMode) { + throw new Error( + "Transports must WritableStreams in objectMode. Set { objectMode: true }." + ); + } + this._onEvent("error", target); + this._onEvent("warn", target); + this.pipe(target); + if (transport.handleExceptions) { + this.exceptions.handle(); + } + if (transport.handleRejections) { + this.rejections.handle(); + } + return this; + } + /** + * Removes the transport from this logger instance by unpiping from it. + * @param {mixed} transport - TODO: add param description. + * @returns {Logger} - TODO: add return description. + */ + remove(transport) { + if (!transport) return this; + let target = transport; + if (!isStream(transport) || transport.log.length > 2) { + target = this.transports.filter( + (match) => match.transport === transport + )[0]; + } + if (target) { + this.unpipe(target); + } + return this; + } + /** + * Removes all transports from this logger instance. + * @returns {Logger} - TODO: add return description. + */ + clear() { + this.unpipe(); + return this; + } + /** + * Cleans up resources (streams, event listeners) for all transports + * associated with this instance (if necessary). + * @returns {Logger} - TODO: add return description. + */ + close() { + this.exceptions.unhandle(); + this.rejections.unhandle(); + this.clear(); + this.emit("close"); + return this; + } + /** + * Sets the `target` levels specified on this instance. + * @param {Object} Target levels to use on this instance. + */ + setLevels() { + warn.deprecated("setLevels"); + } + /** + * Queries the all transports for this instance with the specified `options`. + * This will aggregate each transport's results into one object containing + * a property per transport. + * @param {Object} options - Query options for this instance. + * @param {function} callback - Continuation to respond to when complete. + */ + query(options, callback) { + if (typeof options === "function") { + callback = options; + options = {}; + } + options = options || {}; + const results = {}; + const queryObject = Object.assign({}, options.query || {}); + function queryTransport(transport, next) { + if (options.query && typeof transport.formatQuery === "function") { + options.query = transport.formatQuery(queryObject); + } + transport.query(options, (err, res) => { + if (err) { + return next(err); + } + if (typeof transport.formatResults === "function") { + res = transport.formatResults(res, options.format); + } + next(null, res); + }); + } + function addResults(transport, next) { + queryTransport(transport, (err, result) => { + if (next) { + result = err || result; + if (result) { + results[transport.name] = result; + } + next(); + } + next = null; + }); + } + asyncForEach( + this.transports.filter((transport) => !!transport.query), + addResults, + () => callback(null, results) + ); + } + /** + * Returns a log stream for all transports. Options object is optional. + * @param{Object} options={} - Stream options for this instance. + * @returns {Stream} - TODO: add return description. + */ + stream(options = {}) { + const out = new Stream(); + const streams = []; + out._streams = streams; + out.destroy = () => { + let i = streams.length; + while (i--) { + streams[i].destroy(); + } + }; + this.transports.filter((transport) => !!transport.stream).forEach((transport) => { + const str = transport.stream(options); + if (!str) { + return; + } + streams.push(str); + str.on("log", (log2) => { + log2.transport = log2.transport || []; + log2.transport.push(transport.name); + out.emit("log", log2); + }); + str.on("error", (err) => { + err.transport = err.transport || []; + err.transport.push(transport.name); + out.emit("error", err); + }); + }); + return out; + } + /** + * Returns an object corresponding to a specific timing. When done is called + * the timer will finish and log the duration. e.g.: + * @returns {Profile} - TODO: add return description. + * @example + * const timer = winston.startTimer() + * setTimeout(() => { + * timer.done({ + * message: 'Logging message' + * }); + * }, 1000); + */ + startTimer() { + return new Profiler(this); + } + /** + * Tracks the time inbetween subsequent calls to this method with the same + * `id` parameter. The second call to this method will log the difference in + * milliseconds along with the message. + * @param {string} id Unique id of the profiler + * @returns {Logger} - TODO: add return description. + */ + profile(id, ...args) { + const time3 = Date.now(); + if (this.profilers[id]) { + const timeEnd = this.profilers[id]; + delete this.profilers[id]; + if (typeof args[args.length - 2] === "function") { + console.warn( + "Callback function no longer supported as of winston@3.0.0" + ); + args.pop(); + } + const info = typeof args[args.length - 1] === "object" ? args.pop() : {}; + info.level = info.level || "info"; + info.durationMs = time3 - timeEnd; + info.message = info.message || id; + return this.write(info); + } + this.profilers[id] = time3; + return this; + } + /** + * Backwards compatibility to `exceptions.handle` in winston < 3.0.0. + * @returns {undefined} + * @deprecated + */ + handleExceptions(...args) { + console.warn( + "Deprecated: .handleExceptions() will be removed in winston@4. Use .exceptions.handle()" + ); + this.exceptions.handle(...args); + } + /** + * Backwards compatibility to `exceptions.handle` in winston < 3.0.0. + * @returns {undefined} + * @deprecated + */ + unhandleExceptions(...args) { + console.warn( + "Deprecated: .unhandleExceptions() will be removed in winston@4. Use .exceptions.unhandle()" + ); + this.exceptions.unhandle(...args); + } + /** + * Throw a more meaningful deprecation notice + * @throws {Error} - TODO: add throws description. + */ + cli() { + throw new Error( + [ + "Logger.cli() was removed in winston@3.0.0", + "Use a custom winston.formats.cli() instead.", + "See: https://github.com/winstonjs/winston/tree/master/UPGRADE-3.0.md" + ].join("\n") + ); + } + /** + * Bubbles the `event` that occured on the specified `transport` up + * from this instance. + * @param {string} event - The event that occured + * @param {Object} transport - Transport on which the event occured + * @private + */ + _onEvent(event, transport) { + function transportEvent(err) { + if (event === "error" && !this.transports.includes(transport)) { + this.add(transport); + } + this.emit(event, err, transport); + } + if (!transport["__winston" + event]) { + transport["__winston" + event] = transportEvent.bind(this); + transport.on(event, transport["__winston" + event]); + } + } + _addDefaultMeta(msg) { + if (this.defaultMeta) { + Object.assign(msg, this.defaultMeta); + } + } + }; + function getLevelValue(levels, level) { + const value = levels[level]; + if (!value && value !== 0) { + return null; + } + return value; + } + Object.defineProperty(Logger3.prototype, "transports", { + configurable: false, + enumerable: true, + get() { + const { pipes } = this._readableState; + return !Array.isArray(pipes) ? [pipes].filter(Boolean) : pipes; + } + }); + module2.exports = Logger3; + } +}); + +// node_modules/winston/lib/winston/create-logger.js +var require_create_logger = __commonJS({ + "node_modules/winston/lib/winston/create-logger.js"(exports2, module2) { + "use strict"; + var { LEVEL } = require_triple_beam(); + var config2 = require_config2(); + var Logger3 = require_logger(); + var debug = require_node2()("winston:create-logger"); + function isLevelEnabledFunctionName(level) { + return "is" + level.charAt(0).toUpperCase() + level.slice(1) + "Enabled"; + } + module2.exports = function(opts = {}) { + opts.levels = opts.levels || config2.npm.levels; + class DerivedLogger extends Logger3 { + /** + * Create a new class derived logger for which the levels can be attached to + * the prototype of. This is a V8 optimization that is well know to increase + * performance of prototype functions. + * @param {!Object} options - Options for the created logger. + */ + constructor(options) { + super(options); + } + } + const logger31 = new DerivedLogger(opts); + Object.keys(opts.levels).forEach(function(level) { + debug('Define prototype method for "%s"', level); + if (level === "log") { + console.warn('Level "log" not defined: conflicts with the method "log". Use a different level name.'); + return; + } + DerivedLogger.prototype[level] = function(...args) { + const self2 = this || logger31; + if (args.length === 1) { + const [msg] = args; + const info = msg && msg.message && msg || { message: msg }; + info.level = info[LEVEL] = level; + self2._addDefaultMeta(info); + self2.write(info); + return this || logger31; + } + if (args.length === 0) { + self2.log(level, ""); + return self2; + } + return self2.log(level, ...args); + }; + DerivedLogger.prototype[isLevelEnabledFunctionName(level)] = function() { + return (this || logger31).isLevelEnabled(level); + }; + }); + return logger31; + }; + } +}); + +// node_modules/winston/lib/winston/container.js +var require_container = __commonJS({ + "node_modules/winston/lib/winston/container.js"(exports2, module2) { + "use strict"; + var createLogger = require_create_logger(); + module2.exports = class Container { + /** + * Constructor function for the Container object responsible for managing a + * set of `winston.Logger` instances based on string ids. + * @param {!Object} [options={}] - Default pass-thru options for Loggers. + */ + constructor(options = {}) { + this.loggers = /* @__PURE__ */ new Map(); + this.options = options; + } + /** + * Retrieves a `winston.Logger` instance for the specified `id`. If an + * instance does not exist, one is created. + * @param {!string} id - The id of the Logger to get. + * @param {?Object} [options] - Options for the Logger instance. + * @returns {Logger} - A configured Logger instance with a specified id. + */ + add(id, options) { + if (!this.loggers.has(id)) { + options = Object.assign({}, options || this.options); + const existing = options.transports || this.options.transports; + if (existing) { + options.transports = Array.isArray(existing) ? existing.slice() : [existing]; + } else { + options.transports = []; + } + const logger31 = createLogger(options); + logger31.on("close", () => this._delete(id)); + this.loggers.set(id, logger31); + } + return this.loggers.get(id); + } + /** + * Retreives a `winston.Logger` instance for the specified `id`. If + * an instance does not exist, one is created. + * @param {!string} id - The id of the Logger to get. + * @param {?Object} [options] - Options for the Logger instance. + * @returns {Logger} - A configured Logger instance with a specified id. + */ + get(id, options) { + return this.add(id, options); + } + /** + * Check if the container has a logger with the id. + * @param {?string} id - The id of the Logger instance to find. + * @returns {boolean} - Boolean value indicating if this instance has a + * logger with the specified `id`. + */ + has(id) { + return !!this.loggers.has(id); + } + /** + * Closes a `Logger` instance with the specified `id` if it exists. + * If no `id` is supplied then all Loggers are closed. + * @param {?string} id - The id of the Logger instance to close. + * @returns {undefined} + */ + close(id) { + if (id) { + return this._removeLogger(id); + } + this.loggers.forEach((val, key) => this._removeLogger(key)); + } + /** + * Remove a logger based on the id. + * @param {!string} id - The id of the logger to remove. + * @returns {undefined} + * @private + */ + _removeLogger(id) { + if (!this.loggers.has(id)) { + return; + } + const logger31 = this.loggers.get(id); + logger31.close(); + this._delete(id); + } + /** + * Deletes a `Logger` instance with the specified `id`. + * @param {!string} id - The id of the Logger instance to delete from + * container. + * @returns {undefined} + * @private + */ + _delete(id) { + this.loggers.delete(id); + } + }; + } +}); + +// node_modules/winston/lib/winston.js +var require_winston = __commonJS({ + "node_modules/winston/lib/winston.js"(exports2) { + "use strict"; + var logform = require_logform(); + var { warn } = require_common(); + exports2.version = require_package().version; + exports2.transports = require_transports(); + exports2.config = require_config2(); + exports2.addColors = logform.levels; + exports2.format = logform.format; + exports2.createLogger = require_create_logger(); + exports2.Logger = require_logger(); + exports2.ExceptionHandler = require_exception_handler(); + exports2.RejectionHandler = require_rejection_handler(); + exports2.Container = require_container(); + exports2.Transport = require_winston_transport(); + exports2.loggers = new exports2.Container(); + var defaultLogger = exports2.createLogger(); + Object.keys(exports2.config.npm.levels).concat([ + "log", + "query", + "stream", + "add", + "remove", + "clear", + "profile", + "startTimer", + "handleExceptions", + "unhandleExceptions", + "handleRejections", + "unhandleRejections", + "configure", + "child" + ]).forEach( + (method) => exports2[method] = (...args) => defaultLogger[method](...args) + ); + Object.defineProperty(exports2, "level", { + get() { + return defaultLogger.level; + }, + set(val) { + defaultLogger.level = val; + } + }); + Object.defineProperty(exports2, "exceptions", { + get() { + return defaultLogger.exceptions; + } + }); + Object.defineProperty(exports2, "rejections", { + get() { + return defaultLogger.rejections; + } + }); + ["exitOnError"].forEach((prop) => { + Object.defineProperty(exports2, prop, { + get() { + return defaultLogger[prop]; + }, + set(val) { + defaultLogger[prop] = val; + } + }); + }); + Object.defineProperty(exports2, "default", { + get() { + return { + exceptionHandlers: defaultLogger.exceptionHandlers, + rejectionHandlers: defaultLogger.rejectionHandlers, + transports: defaultLogger.transports + }; + } + }); + warn.deprecated(exports2, "setLevels"); + warn.forFunctions(exports2, "useFormat", ["cli"]); + warn.forProperties(exports2, "useFormat", ["padLevels", "stripColors"]); + warn.forFunctions(exports2, "deprecated", [ + "addRewriter", + "addFilter", + "clone", + "extend" + ]); + warn.forProperties(exports2, "deprecated", ["emitErrs", "levelLength"]); + } +}); + +// node_modules/uuid/dist/esm-node/rng.js +function rng() { + if (poolPtr > rnds8Pool.length - 16) { + import_crypto.default.randomFillSync(rnds8Pool); + poolPtr = 0; + } + return rnds8Pool.slice(poolPtr, poolPtr += 16); +} +var import_crypto, rnds8Pool, poolPtr; +var init_rng = __esm({ + "node_modules/uuid/dist/esm-node/rng.js"() { + import_crypto = __toESM(require("crypto")); + rnds8Pool = new Uint8Array(256); + poolPtr = rnds8Pool.length; + } +}); + +// node_modules/uuid/dist/esm-node/regex.js +var regex_default; +var init_regex = __esm({ + "node_modules/uuid/dist/esm-node/regex.js"() { + regex_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; + } +}); + +// node_modules/uuid/dist/esm-node/validate.js +function validate(uuid2) { + return typeof uuid2 === "string" && regex_default.test(uuid2); +} +var validate_default; +var init_validate = __esm({ + "node_modules/uuid/dist/esm-node/validate.js"() { + init_regex(); + validate_default = validate; + } +}); + +// node_modules/uuid/dist/esm-node/stringify.js +function stringify(arr, offset = 0) { + const uuid2 = (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(); + if (!validate_default(uuid2)) { + throw TypeError("Stringified UUID is invalid"); + } + return uuid2; +} +var byteToHex, stringify_default; +var init_stringify = __esm({ + "node_modules/uuid/dist/esm-node/stringify.js"() { + init_validate(); + byteToHex = []; + for (let i = 0; i < 256; ++i) { + byteToHex.push((i + 256).toString(16).substr(1)); + } + stringify_default = stringify; + } +}); + +// node_modules/uuid/dist/esm-node/v4.js +function v4(options, buf, offset) { + options = options || {}; + const rnds = options.random || (options.rng || rng)(); + rnds[6] = rnds[6] & 15 | 64; + rnds[8] = rnds[8] & 63 | 128; + if (buf) { + offset = offset || 0; + for (let i = 0; i < 16; ++i) { + buf[offset + i] = rnds[i]; + } + return buf; + } + return stringify_default(rnds); +} +var v4_default; +var init_v4 = __esm({ + "node_modules/uuid/dist/esm-node/v4.js"() { + init_rng(); + init_stringify(); + v4_default = v4; + } +}); + +// node_modules/uuid/dist/esm-node/index.js +var init_esm_node = __esm({ + "node_modules/uuid/dist/esm-node/index.js"() { + init_v4(); + } +}); + +// node_modules/jws/lib/data-stream.js +var require_data_stream = __commonJS({ + "node_modules/jws/lib/data-stream.js"(exports2, module2) { + var Buffer5 = require_safe_buffer().Buffer; + var Stream = require("stream"); + var util3 = require("util"); + function DataStream(data) { + this.buffer = null; + this.writable = true; + this.readable = true; + if (!data) { + this.buffer = Buffer5.alloc(0); + return this; + } + if (typeof data.pipe === "function") { + this.buffer = Buffer5.alloc(0); + data.pipe(this); + return this; + } + if (data.length || typeof data === "object") { + this.buffer = data; + this.writable = false; + process.nextTick(function() { + this.emit("end", data); + this.readable = false; + this.emit("close"); + }.bind(this)); + return this; + } + throw new TypeError("Unexpected data type (" + typeof data + ")"); + } + util3.inherits(DataStream, Stream); + DataStream.prototype.write = function write(data) { + this.buffer = Buffer5.concat([this.buffer, Buffer5.from(data)]); + this.emit("data", data); + }; + DataStream.prototype.end = function end(data) { + if (data) + this.write(data); + this.emit("end", data); + this.emit("close"); + this.writable = false; + this.readable = false; + }; + module2.exports = DataStream; + } +}); + +// node_modules/ecdsa-sig-formatter/src/param-bytes-for-alg.js +var require_param_bytes_for_alg = __commonJS({ + "node_modules/ecdsa-sig-formatter/src/param-bytes-for-alg.js"(exports2, module2) { + "use strict"; + function getParamSize(keySize) { + var result = (keySize / 8 | 0) + (keySize % 8 === 0 ? 0 : 1); + return result; + } + var paramBytesForAlg = { + ES256: getParamSize(256), + ES384: getParamSize(384), + ES512: getParamSize(521) + }; + function getParamBytesForAlg(alg) { + var paramBytes = paramBytesForAlg[alg]; + if (paramBytes) { + return paramBytes; + } + throw new Error('Unknown algorithm "' + alg + '"'); + } + module2.exports = getParamBytesForAlg; + } +}); + +// node_modules/ecdsa-sig-formatter/src/ecdsa-sig-formatter.js +var require_ecdsa_sig_formatter = __commonJS({ + "node_modules/ecdsa-sig-formatter/src/ecdsa-sig-formatter.js"(exports2, module2) { + "use strict"; + var Buffer5 = require_safe_buffer().Buffer; + var getParamBytesForAlg = require_param_bytes_for_alg(); + var MAX_OCTET = 128; + var CLASS_UNIVERSAL = 0; + var PRIMITIVE_BIT = 32; + var TAG_SEQ = 16; + var TAG_INT = 2; + var ENCODED_TAG_SEQ = TAG_SEQ | PRIMITIVE_BIT | CLASS_UNIVERSAL << 6; + var ENCODED_TAG_INT = TAG_INT | CLASS_UNIVERSAL << 6; + function base64Url(base642) { + return base642.replace(/=/g, "").replace(/\+/g, "-").replace(/\//g, "_"); + } + function signatureAsBuffer(signature) { + if (Buffer5.isBuffer(signature)) { + return signature; + } else if ("string" === typeof signature) { + return Buffer5.from(signature, "base64"); + } + throw new TypeError("ECDSA signature must be a Base64 string or a Buffer"); + } + function derToJose(signature, alg) { + signature = signatureAsBuffer(signature); + var paramBytes = getParamBytesForAlg(alg); + var maxEncodedParamLength = paramBytes + 1; + var inputLength = signature.length; + var offset = 0; + if (signature[offset++] !== ENCODED_TAG_SEQ) { + throw new Error('Could not find expected "seq"'); + } + var seqLength = signature[offset++]; + if (seqLength === (MAX_OCTET | 1)) { + seqLength = signature[offset++]; + } + if (inputLength - offset < seqLength) { + throw new Error('"seq" specified length of "' + seqLength + '", only "' + (inputLength - offset) + '" remaining'); + } + if (signature[offset++] !== ENCODED_TAG_INT) { + throw new Error('Could not find expected "int" for "r"'); + } + var rLength = signature[offset++]; + if (inputLength - offset - 2 < rLength) { + throw new Error('"r" specified length of "' + rLength + '", only "' + (inputLength - offset - 2) + '" available'); + } + if (maxEncodedParamLength < rLength) { + throw new Error('"r" specified length of "' + rLength + '", max of "' + maxEncodedParamLength + '" is acceptable'); + } + var rOffset = offset; + offset += rLength; + if (signature[offset++] !== ENCODED_TAG_INT) { + throw new Error('Could not find expected "int" for "s"'); + } + var sLength = signature[offset++]; + if (inputLength - offset !== sLength) { + throw new Error('"s" specified length of "' + sLength + '", expected "' + (inputLength - offset) + '"'); + } + if (maxEncodedParamLength < sLength) { + throw new Error('"s" specified length of "' + sLength + '", max of "' + maxEncodedParamLength + '" is acceptable'); + } + var sOffset = offset; + offset += sLength; + if (offset !== inputLength) { + throw new Error('Expected to consume entire buffer, but "' + (inputLength - offset) + '" bytes remain'); + } + var rPadding = paramBytes - rLength, sPadding = paramBytes - sLength; + var dst = Buffer5.allocUnsafe(rPadding + rLength + sPadding + sLength); + for (offset = 0; offset < rPadding; ++offset) { + dst[offset] = 0; + } + signature.copy(dst, offset, rOffset + Math.max(-rPadding, 0), rOffset + rLength); + offset = paramBytes; + for (var o = offset; offset < o + sPadding; ++offset) { + dst[offset] = 0; + } + signature.copy(dst, offset, sOffset + Math.max(-sPadding, 0), sOffset + sLength); + dst = dst.toString("base64"); + dst = base64Url(dst); + return dst; + } + function countPadding(buf, start, stop) { + var padding = 0; + while (start + padding < stop && buf[start + padding] === 0) { + ++padding; + } + var needsSign = buf[start + padding] >= MAX_OCTET; + if (needsSign) { + --padding; + } + return padding; + } + function joseToDer(signature, alg) { + signature = signatureAsBuffer(signature); + var paramBytes = getParamBytesForAlg(alg); + var signatureBytes = signature.length; + if (signatureBytes !== paramBytes * 2) { + throw new TypeError('"' + alg + '" signatures must be "' + paramBytes * 2 + '" bytes, saw "' + signatureBytes + '"'); + } + var rPadding = countPadding(signature, 0, paramBytes); + var sPadding = countPadding(signature, paramBytes, signature.length); + var rLength = paramBytes - rPadding; + var sLength = paramBytes - sPadding; + var rsBytes = 1 + 1 + rLength + 1 + 1 + sLength; + var shortLength = rsBytes < MAX_OCTET; + var dst = Buffer5.allocUnsafe((shortLength ? 2 : 3) + rsBytes); + var offset = 0; + dst[offset++] = ENCODED_TAG_SEQ; + if (shortLength) { + dst[offset++] = rsBytes; + } else { + dst[offset++] = MAX_OCTET | 1; + dst[offset++] = rsBytes & 255; + } + dst[offset++] = ENCODED_TAG_INT; + dst[offset++] = rLength; + if (rPadding < 0) { + dst[offset++] = 0; + offset += signature.copy(dst, offset, 0, paramBytes); + } else { + offset += signature.copy(dst, offset, rPadding, paramBytes); + } + dst[offset++] = ENCODED_TAG_INT; + dst[offset++] = sLength; + if (sPadding < 0) { + dst[offset++] = 0; + signature.copy(dst, offset, paramBytes); + } else { + signature.copy(dst, offset, paramBytes + sPadding); + } + return dst; + } + module2.exports = { + derToJose, + joseToDer + }; + } +}); + +// node_modules/buffer-equal-constant-time/index.js +var require_buffer_equal_constant_time = __commonJS({ + "node_modules/buffer-equal-constant-time/index.js"(exports2, module2) { + "use strict"; + var Buffer5 = require("buffer").Buffer; + var SlowBuffer = require("buffer").SlowBuffer; + module2.exports = bufferEq; + function bufferEq(a, b) { + if (!Buffer5.isBuffer(a) || !Buffer5.isBuffer(b)) { + return false; + } + if (a.length !== b.length) { + return false; + } + var c = 0; + for (var i = 0; i < a.length; i++) { + c |= a[i] ^ b[i]; + } + return c === 0; + } + bufferEq.install = function() { + Buffer5.prototype.equal = SlowBuffer.prototype.equal = function equal(that) { + return bufferEq(this, that); + }; + }; + var origBufEqual = Buffer5.prototype.equal; + var origSlowBufEqual = SlowBuffer.prototype.equal; + bufferEq.restore = function() { + Buffer5.prototype.equal = origBufEqual; + SlowBuffer.prototype.equal = origSlowBufEqual; + }; + } +}); + +// node_modules/jwa/index.js +var require_jwa = __commonJS({ + "node_modules/jwa/index.js"(exports2, module2) { + var Buffer5 = require_safe_buffer().Buffer; + var crypto11 = require("crypto"); + var formatEcdsa = require_ecdsa_sig_formatter(); + var util3 = require("util"); + var MSG_INVALID_ALGORITHM = '"%s" is not a valid algorithm.\n Supported algorithms are:\n "HS256", "HS384", "HS512", "RS256", "RS384", "RS512", "PS256", "PS384", "PS512", "ES256", "ES384", "ES512" and "none".'; + var MSG_INVALID_SECRET = "secret must be a string or buffer"; + var MSG_INVALID_VERIFIER_KEY = "key must be a string or a buffer"; + var MSG_INVALID_SIGNER_KEY = "key must be a string, a buffer or an object"; + var supportsKeyObjects = typeof crypto11.createPublicKey === "function"; + if (supportsKeyObjects) { + MSG_INVALID_VERIFIER_KEY += " or a KeyObject"; + MSG_INVALID_SECRET += "or a KeyObject"; + } + function checkIsPublicKey(key) { + if (Buffer5.isBuffer(key)) { + return; + } + if (typeof key === "string") { + return; + } + if (!supportsKeyObjects) { + throw typeError(MSG_INVALID_VERIFIER_KEY); + } + if (typeof key !== "object") { + throw typeError(MSG_INVALID_VERIFIER_KEY); + } + if (typeof key.type !== "string") { + throw typeError(MSG_INVALID_VERIFIER_KEY); + } + if (typeof key.asymmetricKeyType !== "string") { + throw typeError(MSG_INVALID_VERIFIER_KEY); + } + if (typeof key.export !== "function") { + throw typeError(MSG_INVALID_VERIFIER_KEY); + } + } + function checkIsPrivateKey(key) { + if (Buffer5.isBuffer(key)) { + return; + } + if (typeof key === "string") { + return; + } + if (typeof key === "object") { + return; + } + throw typeError(MSG_INVALID_SIGNER_KEY); + } + function checkIsSecretKey(key) { + if (Buffer5.isBuffer(key)) { + return; + } + if (typeof key === "string") { + return key; + } + if (!supportsKeyObjects) { + throw typeError(MSG_INVALID_SECRET); + } + if (typeof key !== "object") { + throw typeError(MSG_INVALID_SECRET); + } + if (key.type !== "secret") { + throw typeError(MSG_INVALID_SECRET); + } + if (typeof key.export !== "function") { + throw typeError(MSG_INVALID_SECRET); + } + } + function fromBase64(base642) { + return base642.replace(/=/g, "").replace(/\+/g, "-").replace(/\//g, "_"); + } + function toBase64(base64url2) { + base64url2 = base64url2.toString(); + var padding = 4 - base64url2.length % 4; + if (padding !== 4) { + for (var i = 0; i < padding; ++i) { + base64url2 += "="; + } + } + return base64url2.replace(/\-/g, "+").replace(/_/g, "/"); + } + function typeError(template) { + var args = [].slice.call(arguments, 1); + var errMsg = util3.format.bind(util3, template).apply(null, args); + return new TypeError(errMsg); + } + function bufferOrString(obj) { + return Buffer5.isBuffer(obj) || typeof obj === "string"; + } + function normalizeInput(thing) { + if (!bufferOrString(thing)) + thing = JSON.stringify(thing); + return thing; + } + function createHmacSigner(bits) { + return function sign(thing, secret) { + checkIsSecretKey(secret); + thing = normalizeInput(thing); + var hmac = crypto11.createHmac("sha" + bits, secret); + var sig = (hmac.update(thing), hmac.digest("base64")); + return fromBase64(sig); + }; + } + var bufferEqual; + var timingSafeEqual = "timingSafeEqual" in crypto11 ? function timingSafeEqual2(a, b) { + if (a.byteLength !== b.byteLength) { + return false; + } + return crypto11.timingSafeEqual(a, b); + } : function timingSafeEqual2(a, b) { + if (!bufferEqual) { + bufferEqual = require_buffer_equal_constant_time(); + } + return bufferEqual(a, b); + }; + function createHmacVerifier(bits) { + return function verify(thing, signature, secret) { + var computedSig = createHmacSigner(bits)(thing, secret); + return timingSafeEqual(Buffer5.from(signature), Buffer5.from(computedSig)); + }; + } + function createKeySigner(bits) { + return function sign(thing, privateKey) { + checkIsPrivateKey(privateKey); + thing = normalizeInput(thing); + var signer = crypto11.createSign("RSA-SHA" + bits); + var sig = (signer.update(thing), signer.sign(privateKey, "base64")); + return fromBase64(sig); + }; + } + function createKeyVerifier(bits) { + return function verify(thing, signature, publicKey) { + checkIsPublicKey(publicKey); + thing = normalizeInput(thing); + signature = toBase64(signature); + var verifier = crypto11.createVerify("RSA-SHA" + bits); + verifier.update(thing); + return verifier.verify(publicKey, signature, "base64"); + }; + } + function createPSSKeySigner(bits) { + return function sign(thing, privateKey) { + checkIsPrivateKey(privateKey); + thing = normalizeInput(thing); + var signer = crypto11.createSign("RSA-SHA" + bits); + var sig = (signer.update(thing), signer.sign({ + key: privateKey, + padding: crypto11.constants.RSA_PKCS1_PSS_PADDING, + saltLength: crypto11.constants.RSA_PSS_SALTLEN_DIGEST + }, "base64")); + return fromBase64(sig); + }; + } + function createPSSKeyVerifier(bits) { + return function verify(thing, signature, publicKey) { + checkIsPublicKey(publicKey); + thing = normalizeInput(thing); + signature = toBase64(signature); + var verifier = crypto11.createVerify("RSA-SHA" + bits); + verifier.update(thing); + return verifier.verify({ + key: publicKey, + padding: crypto11.constants.RSA_PKCS1_PSS_PADDING, + saltLength: crypto11.constants.RSA_PSS_SALTLEN_DIGEST + }, signature, "base64"); + }; + } + function createECDSASigner(bits) { + var inner = createKeySigner(bits); + return function sign() { + var signature = inner.apply(null, arguments); + signature = formatEcdsa.derToJose(signature, "ES" + bits); + return signature; + }; + } + function createECDSAVerifer(bits) { + var inner = createKeyVerifier(bits); + return function verify(thing, signature, publicKey) { + signature = formatEcdsa.joseToDer(signature, "ES" + bits).toString("base64"); + var result = inner(thing, signature, publicKey); + return result; + }; + } + function createNoneSigner() { + return function sign() { + return ""; + }; + } + function createNoneVerifier() { + return function verify(thing, signature) { + return signature === ""; + }; + } + module2.exports = function jwa(algorithm) { + var signerFactories = { + hs: createHmacSigner, + rs: createKeySigner, + ps: createPSSKeySigner, + es: createECDSASigner, + none: createNoneSigner + }; + var verifierFactories = { + hs: createHmacVerifier, + rs: createKeyVerifier, + ps: createPSSKeyVerifier, + es: createECDSAVerifer, + none: createNoneVerifier + }; + var match = algorithm.match(/^(RS|PS|ES|HS)(256|384|512)$|^(none)$/); + if (!match) + throw typeError(MSG_INVALID_ALGORITHM, algorithm); + var algo = (match[1] || match[3]).toLowerCase(); + var bits = match[2]; + return { + sign: signerFactories[algo](bits), + verify: verifierFactories[algo](bits) + }; + }; + } +}); + +// node_modules/jws/lib/tostring.js +var require_tostring = __commonJS({ + "node_modules/jws/lib/tostring.js"(exports2, module2) { + var Buffer5 = require("buffer").Buffer; + module2.exports = function toString(obj) { + if (typeof obj === "string") + return obj; + if (typeof obj === "number" || Buffer5.isBuffer(obj)) + return obj.toString(); + return JSON.stringify(obj); + }; + } +}); + +// node_modules/jws/lib/sign-stream.js +var require_sign_stream = __commonJS({ + "node_modules/jws/lib/sign-stream.js"(exports2, module2) { + var Buffer5 = require_safe_buffer().Buffer; + var DataStream = require_data_stream(); + var jwa = require_jwa(); + var Stream = require("stream"); + var toString = require_tostring(); + var util3 = require("util"); + function base64url2(string4, encoding) { + return Buffer5.from(string4, encoding).toString("base64").replace(/=/g, "").replace(/\+/g, "-").replace(/\//g, "_"); + } + function jwsSecuredInput(header, payload, encoding) { + encoding = encoding || "utf8"; + var encodedHeader = base64url2(toString(header), "binary"); + var encodedPayload = base64url2(toString(payload), encoding); + return util3.format("%s.%s", encodedHeader, encodedPayload); + } + function jwsSign(opts) { + var header = opts.header; + var payload = opts.payload; + var secretOrKey = opts.secret || opts.privateKey; + var encoding = opts.encoding; + var algo = jwa(header.alg); + var securedInput = jwsSecuredInput(header, payload, encoding); + var signature = algo.sign(securedInput, secretOrKey); + return util3.format("%s.%s", securedInput, signature); + } + function SignStream(opts) { + var secret = opts.secret; + secret = secret == null ? opts.privateKey : secret; + secret = secret == null ? opts.key : secret; + if (/^hs/i.test(opts.header.alg) === true && secret == null) { + throw new TypeError("secret must be a string or buffer or a KeyObject"); + } + var secretStream = new DataStream(secret); + this.readable = true; + this.header = opts.header; + this.encoding = opts.encoding; + this.secret = this.privateKey = this.key = secretStream; + this.payload = new DataStream(opts.payload); + this.secret.once("close", function() { + if (!this.payload.writable && this.readable) + this.sign(); + }.bind(this)); + this.payload.once("close", function() { + if (!this.secret.writable && this.readable) + this.sign(); + }.bind(this)); + } + util3.inherits(SignStream, Stream); + SignStream.prototype.sign = function sign() { + try { + var signature = jwsSign({ + header: this.header, + payload: this.payload.buffer, + secret: this.secret.buffer, + encoding: this.encoding + }); + this.emit("done", signature); + this.emit("data", signature); + this.emit("end"); + this.readable = false; + return signature; + } catch (e) { + this.readable = false; + this.emit("error", e); + this.emit("close"); + } + }; + SignStream.sign = jwsSign; + module2.exports = SignStream; + } +}); + +// node_modules/jws/lib/verify-stream.js +var require_verify_stream = __commonJS({ + "node_modules/jws/lib/verify-stream.js"(exports2, module2) { + var Buffer5 = require_safe_buffer().Buffer; + var DataStream = require_data_stream(); + var jwa = require_jwa(); + var Stream = require("stream"); + var toString = require_tostring(); + var util3 = require("util"); + var JWS_REGEX = /^[a-zA-Z0-9\-_]+?\.[a-zA-Z0-9\-_]+?\.([a-zA-Z0-9\-_]+)?$/; + function isObject3(thing) { + return Object.prototype.toString.call(thing) === "[object Object]"; + } + function safeJsonParse(thing) { + if (isObject3(thing)) + return thing; + try { + return JSON.parse(thing); + } catch (e) { + return void 0; + } + } + function headerFromJWS(jwsSig) { + var encodedHeader = jwsSig.split(".", 1)[0]; + return safeJsonParse(Buffer5.from(encodedHeader, "base64").toString("binary")); + } + function securedInputFromJWS(jwsSig) { + return jwsSig.split(".", 2).join("."); + } + function signatureFromJWS(jwsSig) { + return jwsSig.split(".")[2]; + } + function payloadFromJWS(jwsSig, encoding) { + encoding = encoding || "utf8"; + var payload = jwsSig.split(".")[1]; + return Buffer5.from(payload, "base64").toString(encoding); + } + function isValidJws(string4) { + return JWS_REGEX.test(string4) && !!headerFromJWS(string4); + } + function jwsVerify(jwsSig, algorithm, secretOrKey) { + if (!algorithm) { + var err = new Error("Missing algorithm parameter for jws.verify"); + err.code = "MISSING_ALGORITHM"; + throw err; + } + jwsSig = toString(jwsSig); + var signature = signatureFromJWS(jwsSig); + var securedInput = securedInputFromJWS(jwsSig); + var algo = jwa(algorithm); + return algo.verify(securedInput, signature, secretOrKey); + } + function jwsDecode(jwsSig, opts) { + opts = opts || {}; + jwsSig = toString(jwsSig); + if (!isValidJws(jwsSig)) + return null; + var header = headerFromJWS(jwsSig); + if (!header) + return null; + var payload = payloadFromJWS(jwsSig); + if (header.typ === "JWT" || opts.json) + payload = JSON.parse(payload, opts.encoding); + return { + header, + payload, + signature: signatureFromJWS(jwsSig) + }; + } + function VerifyStream(opts) { + opts = opts || {}; + var secretOrKey = opts.secret; + secretOrKey = secretOrKey == null ? opts.publicKey : secretOrKey; + secretOrKey = secretOrKey == null ? opts.key : secretOrKey; + if (/^hs/i.test(opts.algorithm) === true && secretOrKey == null) { + throw new TypeError("secret must be a string or buffer or a KeyObject"); + } + var secretStream = new DataStream(secretOrKey); + this.readable = true; + this.algorithm = opts.algorithm; + this.encoding = opts.encoding; + this.secret = this.publicKey = this.key = secretStream; + this.signature = new DataStream(opts.signature); + this.secret.once("close", function() { + if (!this.signature.writable && this.readable) + this.verify(); + }.bind(this)); + this.signature.once("close", function() { + if (!this.secret.writable && this.readable) + this.verify(); + }.bind(this)); + } + util3.inherits(VerifyStream, Stream); + VerifyStream.prototype.verify = function verify() { + try { + var valid = jwsVerify(this.signature.buffer, this.algorithm, this.key.buffer); + var obj = jwsDecode(this.signature.buffer, this.encoding); + this.emit("done", valid, obj); + this.emit("data", valid); + this.emit("end"); + this.readable = false; + return valid; + } catch (e) { + this.readable = false; + this.emit("error", e); + this.emit("close"); + } + }; + VerifyStream.decode = jwsDecode; + VerifyStream.isValid = isValidJws; + VerifyStream.verify = jwsVerify; + module2.exports = VerifyStream; + } +}); + +// node_modules/jws/index.js +var require_jws = __commonJS({ + "node_modules/jws/index.js"(exports2) { + var SignStream = require_sign_stream(); + var VerifyStream = require_verify_stream(); + var ALGORITHMS = [ + "HS256", + "HS384", + "HS512", + "RS256", + "RS384", + "RS512", + "PS256", + "PS384", + "PS512", + "ES256", + "ES384", + "ES512" + ]; + exports2.ALGORITHMS = ALGORITHMS; + exports2.sign = SignStream.sign; + exports2.verify = VerifyStream.verify; + exports2.decode = VerifyStream.decode; + exports2.isValid = VerifyStream.isValid; + exports2.createSign = function createSign(opts) { + return new SignStream(opts); + }; + exports2.createVerify = function createVerify(opts) { + return new VerifyStream(opts); + }; + } +}); + +// node_modules/jsonwebtoken/decode.js +var require_decode = __commonJS({ + "node_modules/jsonwebtoken/decode.js"(exports2, module2) { + var jws = require_jws(); + module2.exports = function(jwt3, options) { + options = options || {}; + var decoded = jws.decode(jwt3, options); + if (!decoded) { + return null; + } + var payload = decoded.payload; + if (typeof payload === "string") { + try { + var obj = JSON.parse(payload); + if (obj !== null && typeof obj === "object") { + payload = obj; + } + } catch (e) { + } + } + if (options.complete === true) { + return { + header: decoded.header, + payload, + signature: decoded.signature + }; + } + return payload; + }; + } +}); + +// node_modules/jsonwebtoken/lib/JsonWebTokenError.js +var require_JsonWebTokenError = __commonJS({ + "node_modules/jsonwebtoken/lib/JsonWebTokenError.js"(exports2, module2) { + var JsonWebTokenError = function(message, error2) { + Error.call(this, message); + if (Error.captureStackTrace) { + Error.captureStackTrace(this, this.constructor); + } + this.name = "JsonWebTokenError"; + this.message = message; + if (error2) this.inner = error2; + }; + JsonWebTokenError.prototype = Object.create(Error.prototype); + JsonWebTokenError.prototype.constructor = JsonWebTokenError; + module2.exports = JsonWebTokenError; + } +}); + +// node_modules/jsonwebtoken/lib/NotBeforeError.js +var require_NotBeforeError = __commonJS({ + "node_modules/jsonwebtoken/lib/NotBeforeError.js"(exports2, module2) { + var JsonWebTokenError = require_JsonWebTokenError(); + var NotBeforeError = function(message, date4) { + JsonWebTokenError.call(this, message); + this.name = "NotBeforeError"; + this.date = date4; + }; + NotBeforeError.prototype = Object.create(JsonWebTokenError.prototype); + NotBeforeError.prototype.constructor = NotBeforeError; + module2.exports = NotBeforeError; + } +}); + +// node_modules/jsonwebtoken/lib/TokenExpiredError.js +var require_TokenExpiredError = __commonJS({ + "node_modules/jsonwebtoken/lib/TokenExpiredError.js"(exports2, module2) { + var JsonWebTokenError = require_JsonWebTokenError(); + var TokenExpiredError = function(message, expiredAt) { + JsonWebTokenError.call(this, message); + this.name = "TokenExpiredError"; + this.expiredAt = expiredAt; + }; + TokenExpiredError.prototype = Object.create(JsonWebTokenError.prototype); + TokenExpiredError.prototype.constructor = TokenExpiredError; + module2.exports = TokenExpiredError; + } +}); + +// node_modules/jsonwebtoken/lib/timespan.js +var require_timespan = __commonJS({ + "node_modules/jsonwebtoken/lib/timespan.js"(exports2, module2) { + var ms = require_ms(); + module2.exports = function(time3, iat) { + var timestamp = iat || Math.floor(Date.now() / 1e3); + if (typeof time3 === "string") { + var milliseconds = ms(time3); + if (typeof milliseconds === "undefined") { + return; + } + return Math.floor(timestamp + milliseconds / 1e3); + } else if (typeof time3 === "number") { + return timestamp + time3; + } else { + return; + } + }; + } +}); + +// node_modules/semver/internal/constants.js +var require_constants = __commonJS({ + "node_modules/semver/internal/constants.js"(exports2, module2) { + "use strict"; + var SEMVER_SPEC_VERSION = "2.0.0"; + var MAX_LENGTH = 256; + var MAX_SAFE_INTEGER = Number.MAX_SAFE_INTEGER || /* istanbul ignore next */ + 9007199254740991; + var MAX_SAFE_COMPONENT_LENGTH = 16; + var MAX_SAFE_BUILD_LENGTH = MAX_LENGTH - 6; + var RELEASE_TYPES = [ + "major", + "premajor", + "minor", + "preminor", + "patch", + "prepatch", + "prerelease" + ]; + module2.exports = { + MAX_LENGTH, + MAX_SAFE_COMPONENT_LENGTH, + MAX_SAFE_BUILD_LENGTH, + MAX_SAFE_INTEGER, + RELEASE_TYPES, + SEMVER_SPEC_VERSION, + FLAG_INCLUDE_PRERELEASE: 1, + FLAG_LOOSE: 2 + }; + } +}); + +// node_modules/semver/internal/debug.js +var require_debug = __commonJS({ + "node_modules/semver/internal/debug.js"(exports2, module2) { + "use strict"; + var debug = typeof process === "object" && process.env && process.env.NODE_DEBUG && /\bsemver\b/i.test(process.env.NODE_DEBUG) ? (...args) => console.error("SEMVER", ...args) : () => { + }; + module2.exports = debug; + } +}); + +// node_modules/semver/internal/re.js +var require_re = __commonJS({ + "node_modules/semver/internal/re.js"(exports2, module2) { + "use strict"; + var { + MAX_SAFE_COMPONENT_LENGTH, + MAX_SAFE_BUILD_LENGTH, + MAX_LENGTH + } = require_constants(); + var debug = require_debug(); + exports2 = module2.exports = {}; + var re = exports2.re = []; + var safeRe = exports2.safeRe = []; + var src = exports2.src = []; + var safeSrc = exports2.safeSrc = []; + var t = exports2.t = {}; + var R = 0; + var LETTERDASHNUMBER = "[a-zA-Z0-9-]"; + var safeRegexReplacements = [ + ["\\s", 1], + ["\\d", MAX_LENGTH], + [LETTERDASHNUMBER, MAX_SAFE_BUILD_LENGTH] + ]; + var makeSafeRegex = (value) => { + for (const [token, max] of safeRegexReplacements) { + value = value.split(`${token}*`).join(`${token}{0,${max}}`).split(`${token}+`).join(`${token}{1,${max}}`); + } + return value; + }; + var createToken = (name5, value, isGlobal) => { + const safe = makeSafeRegex(value); + const index = R++; + debug(name5, index, value); + t[name5] = index; + src[index] = value; + safeSrc[index] = safe; + re[index] = new RegExp(value, isGlobal ? "g" : void 0); + safeRe[index] = new RegExp(safe, isGlobal ? "g" : void 0); + }; + createToken("NUMERICIDENTIFIER", "0|[1-9]\\d*"); + createToken("NUMERICIDENTIFIERLOOSE", "\\d+"); + createToken("NONNUMERICIDENTIFIER", `\\d*[a-zA-Z-]${LETTERDASHNUMBER}*`); + createToken("MAINVERSION", `(${src[t.NUMERICIDENTIFIER]})\\.(${src[t.NUMERICIDENTIFIER]})\\.(${src[t.NUMERICIDENTIFIER]})`); + createToken("MAINVERSIONLOOSE", `(${src[t.NUMERICIDENTIFIERLOOSE]})\\.(${src[t.NUMERICIDENTIFIERLOOSE]})\\.(${src[t.NUMERICIDENTIFIERLOOSE]})`); + createToken("PRERELEASEIDENTIFIER", `(?:${src[t.NONNUMERICIDENTIFIER]}|${src[t.NUMERICIDENTIFIER]})`); + createToken("PRERELEASEIDENTIFIERLOOSE", `(?:${src[t.NONNUMERICIDENTIFIER]}|${src[t.NUMERICIDENTIFIERLOOSE]})`); + createToken("PRERELEASE", `(?:-(${src[t.PRERELEASEIDENTIFIER]}(?:\\.${src[t.PRERELEASEIDENTIFIER]})*))`); + createToken("PRERELEASELOOSE", `(?:-?(${src[t.PRERELEASEIDENTIFIERLOOSE]}(?:\\.${src[t.PRERELEASEIDENTIFIERLOOSE]})*))`); + createToken("BUILDIDENTIFIER", `${LETTERDASHNUMBER}+`); + createToken("BUILD", `(?:\\+(${src[t.BUILDIDENTIFIER]}(?:\\.${src[t.BUILDIDENTIFIER]})*))`); + createToken("FULLPLAIN", `v?${src[t.MAINVERSION]}${src[t.PRERELEASE]}?${src[t.BUILD]}?`); + createToken("FULL", `^${src[t.FULLPLAIN]}$`); + createToken("LOOSEPLAIN", `[v=\\s]*${src[t.MAINVERSIONLOOSE]}${src[t.PRERELEASELOOSE]}?${src[t.BUILD]}?`); + createToken("LOOSE", `^${src[t.LOOSEPLAIN]}$`); + createToken("GTLT", "((?:<|>)?=?)"); + createToken("XRANGEIDENTIFIERLOOSE", `${src[t.NUMERICIDENTIFIERLOOSE]}|x|X|\\*`); + createToken("XRANGEIDENTIFIER", `${src[t.NUMERICIDENTIFIER]}|x|X|\\*`); + createToken("XRANGEPLAIN", `[v=\\s]*(${src[t.XRANGEIDENTIFIER]})(?:\\.(${src[t.XRANGEIDENTIFIER]})(?:\\.(${src[t.XRANGEIDENTIFIER]})(?:${src[t.PRERELEASE]})?${src[t.BUILD]}?)?)?`); + createToken("XRANGEPLAINLOOSE", `[v=\\s]*(${src[t.XRANGEIDENTIFIERLOOSE]})(?:\\.(${src[t.XRANGEIDENTIFIERLOOSE]})(?:\\.(${src[t.XRANGEIDENTIFIERLOOSE]})(?:${src[t.PRERELEASELOOSE]})?${src[t.BUILD]}?)?)?`); + createToken("XRANGE", `^${src[t.GTLT]}\\s*${src[t.XRANGEPLAIN]}$`); + createToken("XRANGELOOSE", `^${src[t.GTLT]}\\s*${src[t.XRANGEPLAINLOOSE]}$`); + createToken("COERCEPLAIN", `${"(^|[^\\d])(\\d{1,"}${MAX_SAFE_COMPONENT_LENGTH}})(?:\\.(\\d{1,${MAX_SAFE_COMPONENT_LENGTH}}))?(?:\\.(\\d{1,${MAX_SAFE_COMPONENT_LENGTH}}))?`); + createToken("COERCE", `${src[t.COERCEPLAIN]}(?:$|[^\\d])`); + createToken("COERCEFULL", src[t.COERCEPLAIN] + `(?:${src[t.PRERELEASE]})?(?:${src[t.BUILD]})?(?:$|[^\\d])`); + createToken("COERCERTL", src[t.COERCE], true); + createToken("COERCERTLFULL", src[t.COERCEFULL], true); + createToken("LONETILDE", "(?:~>?)"); + createToken("TILDETRIM", `(\\s*)${src[t.LONETILDE]}\\s+`, true); + exports2.tildeTrimReplace = "$1~"; + createToken("TILDE", `^${src[t.LONETILDE]}${src[t.XRANGEPLAIN]}$`); + createToken("TILDELOOSE", `^${src[t.LONETILDE]}${src[t.XRANGEPLAINLOOSE]}$`); + createToken("LONECARET", "(?:\\^)"); + createToken("CARETTRIM", `(\\s*)${src[t.LONECARET]}\\s+`, true); + exports2.caretTrimReplace = "$1^"; + createToken("CARET", `^${src[t.LONECARET]}${src[t.XRANGEPLAIN]}$`); + createToken("CARETLOOSE", `^${src[t.LONECARET]}${src[t.XRANGEPLAINLOOSE]}$`); + createToken("COMPARATORLOOSE", `^${src[t.GTLT]}\\s*(${src[t.LOOSEPLAIN]})$|^$`); + createToken("COMPARATOR", `^${src[t.GTLT]}\\s*(${src[t.FULLPLAIN]})$|^$`); + createToken("COMPARATORTRIM", `(\\s*)${src[t.GTLT]}\\s*(${src[t.LOOSEPLAIN]}|${src[t.XRANGEPLAIN]})`, true); + exports2.comparatorTrimReplace = "$1$2$3"; + createToken("HYPHENRANGE", `^\\s*(${src[t.XRANGEPLAIN]})\\s+-\\s+(${src[t.XRANGEPLAIN]})\\s*$`); + createToken("HYPHENRANGELOOSE", `^\\s*(${src[t.XRANGEPLAINLOOSE]})\\s+-\\s+(${src[t.XRANGEPLAINLOOSE]})\\s*$`); + createToken("STAR", "(<|>)?=?\\s*\\*"); + createToken("GTE0", "^\\s*>=\\s*0\\.0\\.0\\s*$"); + createToken("GTE0PRE", "^\\s*>=\\s*0\\.0\\.0-0\\s*$"); + } +}); + +// node_modules/semver/internal/parse-options.js +var require_parse_options = __commonJS({ + "node_modules/semver/internal/parse-options.js"(exports2, module2) { + "use strict"; + var looseOption = Object.freeze({ loose: true }); + var emptyOpts = Object.freeze({}); + var parseOptions2 = (options) => { + if (!options) { + return emptyOpts; + } + if (typeof options !== "object") { + return looseOption; + } + return options; + }; + module2.exports = parseOptions2; + } +}); + +// node_modules/semver/internal/identifiers.js +var require_identifiers = __commonJS({ + "node_modules/semver/internal/identifiers.js"(exports2, module2) { + "use strict"; + var numeric = /^[0-9]+$/; + var compareIdentifiers = (a, b) => { + if (typeof a === "number" && typeof b === "number") { + return a === b ? 0 : a < b ? -1 : 1; + } + const anum = numeric.test(a); + const bnum = numeric.test(b); + if (anum && bnum) { + a = +a; + b = +b; + } + return a === b ? 0 : anum && !bnum ? -1 : bnum && !anum ? 1 : a < b ? -1 : 1; + }; + var rcompareIdentifiers = (a, b) => compareIdentifiers(b, a); + module2.exports = { + compareIdentifiers, + rcompareIdentifiers + }; + } +}); + +// node_modules/semver/classes/semver.js +var require_semver = __commonJS({ + "node_modules/semver/classes/semver.js"(exports2, module2) { + "use strict"; + var debug = require_debug(); + var { MAX_LENGTH, MAX_SAFE_INTEGER } = require_constants(); + var { safeRe: re, t } = require_re(); + var parseOptions2 = require_parse_options(); + var { compareIdentifiers } = require_identifiers(); + var SemVer = class _SemVer { + constructor(version8, options) { + options = parseOptions2(options); + if (version8 instanceof _SemVer) { + if (version8.loose === !!options.loose && version8.includePrerelease === !!options.includePrerelease) { + return version8; + } else { + version8 = version8.version; + } + } else if (typeof version8 !== "string") { + throw new TypeError(`Invalid version. Must be a string. Got type "${typeof version8}".`); + } + if (version8.length > MAX_LENGTH) { + throw new TypeError( + `version is longer than ${MAX_LENGTH} characters` + ); + } + debug("SemVer", version8, options); + this.options = options; + this.loose = !!options.loose; + this.includePrerelease = !!options.includePrerelease; + const m = version8.trim().match(options.loose ? re[t.LOOSE] : re[t.FULL]); + if (!m) { + throw new TypeError(`Invalid Version: ${version8}`); + } + this.raw = version8; + this.major = +m[1]; + this.minor = +m[2]; + this.patch = +m[3]; + if (this.major > MAX_SAFE_INTEGER || this.major < 0) { + throw new TypeError("Invalid major version"); + } + if (this.minor > MAX_SAFE_INTEGER || this.minor < 0) { + throw new TypeError("Invalid minor version"); + } + if (this.patch > MAX_SAFE_INTEGER || this.patch < 0) { + throw new TypeError("Invalid patch version"); + } + if (!m[4]) { + this.prerelease = []; + } else { + this.prerelease = m[4].split(".").map((id) => { + if (/^[0-9]+$/.test(id)) { + const num = +id; + if (num >= 0 && num < MAX_SAFE_INTEGER) { + return num; + } + } + return id; + }); + } + this.build = m[5] ? m[5].split(".") : []; + this.format(); + } + format() { + this.version = `${this.major}.${this.minor}.${this.patch}`; + if (this.prerelease.length) { + this.version += `-${this.prerelease.join(".")}`; + } + return this.version; + } + toString() { + return this.version; + } + compare(other) { + debug("SemVer.compare", this.version, this.options, other); + if (!(other instanceof _SemVer)) { + if (typeof other === "string" && other === this.version) { + return 0; + } + other = new _SemVer(other, this.options); + } + if (other.version === this.version) { + return 0; + } + return this.compareMain(other) || this.comparePre(other); + } + compareMain(other) { + if (!(other instanceof _SemVer)) { + other = new _SemVer(other, this.options); + } + if (this.major < other.major) { + return -1; + } + if (this.major > other.major) { + return 1; + } + if (this.minor < other.minor) { + return -1; + } + if (this.minor > other.minor) { + return 1; + } + if (this.patch < other.patch) { + return -1; + } + if (this.patch > other.patch) { + return 1; + } + return 0; + } + comparePre(other) { + if (!(other instanceof _SemVer)) { + other = new _SemVer(other, this.options); + } + if (this.prerelease.length && !other.prerelease.length) { + return -1; + } else if (!this.prerelease.length && other.prerelease.length) { + return 1; + } else if (!this.prerelease.length && !other.prerelease.length) { + return 0; + } + let i = 0; + do { + const a = this.prerelease[i]; + const b = other.prerelease[i]; + debug("prerelease compare", i, a, b); + if (a === void 0 && b === void 0) { + return 0; + } else if (b === void 0) { + return 1; + } else if (a === void 0) { + return -1; + } else if (a === b) { + continue; + } else { + return compareIdentifiers(a, b); + } + } while (++i); + } + compareBuild(other) { + if (!(other instanceof _SemVer)) { + other = new _SemVer(other, this.options); + } + let i = 0; + do { + const a = this.build[i]; + const b = other.build[i]; + debug("build compare", i, a, b); + if (a === void 0 && b === void 0) { + return 0; + } else if (b === void 0) { + return 1; + } else if (a === void 0) { + return -1; + } else if (a === b) { + continue; + } else { + return compareIdentifiers(a, b); + } + } while (++i); + } + // preminor will bump the version up to the next minor release, and immediately + // down to pre-release. premajor and prepatch work the same way. + inc(release, identifier, identifierBase) { + if (release.startsWith("pre")) { + if (!identifier && identifierBase === false) { + throw new Error("invalid increment argument: identifier is empty"); + } + if (identifier) { + const match = `-${identifier}`.match(this.options.loose ? re[t.PRERELEASELOOSE] : re[t.PRERELEASE]); + if (!match || match[1] !== identifier) { + throw new Error(`invalid identifier: ${identifier}`); + } + } + } + switch (release) { + case "premajor": + this.prerelease.length = 0; + this.patch = 0; + this.minor = 0; + this.major++; + this.inc("pre", identifier, identifierBase); + break; + case "preminor": + this.prerelease.length = 0; + this.patch = 0; + this.minor++; + this.inc("pre", identifier, identifierBase); + break; + case "prepatch": + this.prerelease.length = 0; + this.inc("patch", identifier, identifierBase); + this.inc("pre", identifier, identifierBase); + break; + // If the input is a non-prerelease version, this acts the same as + // prepatch. + case "prerelease": + if (this.prerelease.length === 0) { + this.inc("patch", identifier, identifierBase); + } + this.inc("pre", identifier, identifierBase); + break; + case "release": + if (this.prerelease.length === 0) { + throw new Error(`version ${this.raw} is not a prerelease`); + } + this.prerelease.length = 0; + break; + case "major": + if (this.minor !== 0 || this.patch !== 0 || this.prerelease.length === 0) { + this.major++; + } + this.minor = 0; + this.patch = 0; + this.prerelease = []; + break; + case "minor": + if (this.patch !== 0 || this.prerelease.length === 0) { + this.minor++; + } + this.patch = 0; + this.prerelease = []; + break; + case "patch": + if (this.prerelease.length === 0) { + this.patch++; + } + this.prerelease = []; + break; + // This probably shouldn't be used publicly. + // 1.0.0 'pre' would become 1.0.0-0 which is the wrong direction. + case "pre": { + const base = Number(identifierBase) ? 1 : 0; + if (this.prerelease.length === 0) { + this.prerelease = [base]; + } else { + let i = this.prerelease.length; + while (--i >= 0) { + if (typeof this.prerelease[i] === "number") { + this.prerelease[i]++; + i = -2; + } + } + if (i === -1) { + if (identifier === this.prerelease.join(".") && identifierBase === false) { + throw new Error("invalid increment argument: identifier already exists"); + } + this.prerelease.push(base); + } + } + if (identifier) { + let prerelease = [identifier, base]; + if (identifierBase === false) { + prerelease = [identifier]; + } + if (compareIdentifiers(this.prerelease[0], identifier) === 0) { + if (isNaN(this.prerelease[1])) { + this.prerelease = prerelease; + } + } else { + this.prerelease = prerelease; + } + } + break; + } + default: + throw new Error(`invalid increment argument: ${release}`); + } + this.raw = this.format(); + if (this.build.length) { + this.raw += `+${this.build.join(".")}`; + } + return this; + } + }; + module2.exports = SemVer; + } +}); + +// node_modules/semver/functions/parse.js +var require_parse = __commonJS({ + "node_modules/semver/functions/parse.js"(exports2, module2) { + "use strict"; + var SemVer = require_semver(); + var parse4 = (version8, options, throwErrors = false) => { + if (version8 instanceof SemVer) { + return version8; + } + try { + return new SemVer(version8, options); + } catch (er) { + if (!throwErrors) { + return null; + } + throw er; + } + }; + module2.exports = parse4; + } +}); + +// node_modules/semver/functions/valid.js +var require_valid = __commonJS({ + "node_modules/semver/functions/valid.js"(exports2, module2) { + "use strict"; + var parse4 = require_parse(); + var valid = (version8, options) => { + const v = parse4(version8, options); + return v ? v.version : null; + }; + module2.exports = valid; + } +}); + +// node_modules/semver/functions/clean.js +var require_clean = __commonJS({ + "node_modules/semver/functions/clean.js"(exports2, module2) { + "use strict"; + var parse4 = require_parse(); + var clean = (version8, options) => { + const s = parse4(version8.trim().replace(/^[=v]+/, ""), options); + return s ? s.version : null; + }; + module2.exports = clean; + } +}); + +// node_modules/semver/functions/inc.js +var require_inc = __commonJS({ + "node_modules/semver/functions/inc.js"(exports2, module2) { + "use strict"; + var SemVer = require_semver(); + var inc = (version8, release, options, identifier, identifierBase) => { + if (typeof options === "string") { + identifierBase = identifier; + identifier = options; + options = void 0; + } + try { + return new SemVer( + version8 instanceof SemVer ? version8.version : version8, + options + ).inc(release, identifier, identifierBase).version; + } catch (er) { + return null; + } + }; + module2.exports = inc; + } +}); + +// node_modules/semver/functions/diff.js +var require_diff = __commonJS({ + "node_modules/semver/functions/diff.js"(exports2, module2) { + "use strict"; + var parse4 = require_parse(); + var diff = (version1, version22) => { + const v1 = parse4(version1, null, true); + const v2 = parse4(version22, null, true); + const comparison = v1.compare(v2); + if (comparison === 0) { + return null; + } + const v1Higher = comparison > 0; + const highVersion = v1Higher ? v1 : v2; + const lowVersion = v1Higher ? v2 : v1; + const highHasPre = !!highVersion.prerelease.length; + const lowHasPre = !!lowVersion.prerelease.length; + if (lowHasPre && !highHasPre) { + if (!lowVersion.patch && !lowVersion.minor) { + return "major"; + } + if (lowVersion.compareMain(highVersion) === 0) { + if (lowVersion.minor && !lowVersion.patch) { + return "minor"; + } + return "patch"; + } + } + const prefix = highHasPre ? "pre" : ""; + if (v1.major !== v2.major) { + return prefix + "major"; + } + if (v1.minor !== v2.minor) { + return prefix + "minor"; + } + if (v1.patch !== v2.patch) { + return prefix + "patch"; + } + return "prerelease"; + }; + module2.exports = diff; + } +}); + +// node_modules/semver/functions/major.js +var require_major = __commonJS({ + "node_modules/semver/functions/major.js"(exports2, module2) { + "use strict"; + var SemVer = require_semver(); + var major = (a, loose) => new SemVer(a, loose).major; + module2.exports = major; + } +}); + +// node_modules/semver/functions/minor.js +var require_minor = __commonJS({ + "node_modules/semver/functions/minor.js"(exports2, module2) { + "use strict"; + var SemVer = require_semver(); + var minor = (a, loose) => new SemVer(a, loose).minor; + module2.exports = minor; + } +}); + +// node_modules/semver/functions/patch.js +var require_patch = __commonJS({ + "node_modules/semver/functions/patch.js"(exports2, module2) { + "use strict"; + var SemVer = require_semver(); + var patch = (a, loose) => new SemVer(a, loose).patch; + module2.exports = patch; + } +}); + +// node_modules/semver/functions/prerelease.js +var require_prerelease = __commonJS({ + "node_modules/semver/functions/prerelease.js"(exports2, module2) { + "use strict"; + var parse4 = require_parse(); + var prerelease = (version8, options) => { + const parsed = parse4(version8, options); + return parsed && parsed.prerelease.length ? parsed.prerelease : null; + }; + module2.exports = prerelease; + } +}); + +// node_modules/semver/functions/compare.js +var require_compare = __commonJS({ + "node_modules/semver/functions/compare.js"(exports2, module2) { + "use strict"; + var SemVer = require_semver(); + var compare = (a, b, loose) => new SemVer(a, loose).compare(new SemVer(b, loose)); + module2.exports = compare; + } +}); + +// node_modules/semver/functions/rcompare.js +var require_rcompare = __commonJS({ + "node_modules/semver/functions/rcompare.js"(exports2, module2) { + "use strict"; + var compare = require_compare(); + var rcompare = (a, b, loose) => compare(b, a, loose); + module2.exports = rcompare; + } +}); + +// node_modules/semver/functions/compare-loose.js +var require_compare_loose = __commonJS({ + "node_modules/semver/functions/compare-loose.js"(exports2, module2) { + "use strict"; + var compare = require_compare(); + var compareLoose = (a, b) => compare(a, b, true); + module2.exports = compareLoose; + } +}); + +// node_modules/semver/functions/compare-build.js +var require_compare_build = __commonJS({ + "node_modules/semver/functions/compare-build.js"(exports2, module2) { + "use strict"; + var SemVer = require_semver(); + var compareBuild = (a, b, loose) => { + const versionA = new SemVer(a, loose); + const versionB = new SemVer(b, loose); + return versionA.compare(versionB) || versionA.compareBuild(versionB); + }; + module2.exports = compareBuild; + } +}); + +// node_modules/semver/functions/sort.js +var require_sort = __commonJS({ + "node_modules/semver/functions/sort.js"(exports2, module2) { + "use strict"; + var compareBuild = require_compare_build(); + var sort = (list, loose) => list.sort((a, b) => compareBuild(a, b, loose)); + module2.exports = sort; + } +}); + +// node_modules/semver/functions/rsort.js +var require_rsort = __commonJS({ + "node_modules/semver/functions/rsort.js"(exports2, module2) { + "use strict"; + var compareBuild = require_compare_build(); + var rsort = (list, loose) => list.sort((a, b) => compareBuild(b, a, loose)); + module2.exports = rsort; + } +}); + +// node_modules/semver/functions/gt.js +var require_gt = __commonJS({ + "node_modules/semver/functions/gt.js"(exports2, module2) { + "use strict"; + var compare = require_compare(); + var gt = (a, b, loose) => compare(a, b, loose) > 0; + module2.exports = gt; + } +}); + +// node_modules/semver/functions/lt.js +var require_lt = __commonJS({ + "node_modules/semver/functions/lt.js"(exports2, module2) { + "use strict"; + var compare = require_compare(); + var lt = (a, b, loose) => compare(a, b, loose) < 0; + module2.exports = lt; + } +}); + +// node_modules/semver/functions/eq.js +var require_eq = __commonJS({ + "node_modules/semver/functions/eq.js"(exports2, module2) { + "use strict"; + var compare = require_compare(); + var eq = (a, b, loose) => compare(a, b, loose) === 0; + module2.exports = eq; + } +}); + +// node_modules/semver/functions/neq.js +var require_neq = __commonJS({ + "node_modules/semver/functions/neq.js"(exports2, module2) { + "use strict"; + var compare = require_compare(); + var neq = (a, b, loose) => compare(a, b, loose) !== 0; + module2.exports = neq; + } +}); + +// node_modules/semver/functions/gte.js +var require_gte = __commonJS({ + "node_modules/semver/functions/gte.js"(exports2, module2) { + "use strict"; + var compare = require_compare(); + var gte = (a, b, loose) => compare(a, b, loose) >= 0; + module2.exports = gte; + } +}); + +// node_modules/semver/functions/lte.js +var require_lte = __commonJS({ + "node_modules/semver/functions/lte.js"(exports2, module2) { + "use strict"; + var compare = require_compare(); + var lte = (a, b, loose) => compare(a, b, loose) <= 0; + module2.exports = lte; + } +}); + +// node_modules/semver/functions/cmp.js +var require_cmp = __commonJS({ + "node_modules/semver/functions/cmp.js"(exports2, module2) { + "use strict"; + var eq = require_eq(); + var neq = require_neq(); + var gt = require_gt(); + var gte = require_gte(); + var lt = require_lt(); + var lte = require_lte(); + var cmp = (a, op, b, loose) => { + switch (op) { + case "===": + if (typeof a === "object") { + a = a.version; + } + if (typeof b === "object") { + b = b.version; + } + return a === b; + case "!==": + if (typeof a === "object") { + a = a.version; + } + if (typeof b === "object") { + b = b.version; + } + return a !== b; + case "": + case "=": + case "==": + return eq(a, b, loose); + case "!=": + return neq(a, b, loose); + case ">": + return gt(a, b, loose); + case ">=": + return gte(a, b, loose); + case "<": + return lt(a, b, loose); + case "<=": + return lte(a, b, loose); + default: + throw new TypeError(`Invalid operator: ${op}`); + } + }; + module2.exports = cmp; + } +}); + +// node_modules/semver/functions/coerce.js +var require_coerce = __commonJS({ + "node_modules/semver/functions/coerce.js"(exports2, module2) { + "use strict"; + var SemVer = require_semver(); + var parse4 = require_parse(); + var { safeRe: re, t } = require_re(); + var coerce2 = (version8, options) => { + if (version8 instanceof SemVer) { + return version8; + } + if (typeof version8 === "number") { + version8 = String(version8); + } + if (typeof version8 !== "string") { + return null; + } + options = options || {}; + let match = null; + if (!options.rtl) { + match = version8.match(options.includePrerelease ? re[t.COERCEFULL] : re[t.COERCE]); + } else { + const coerceRtlRegex = options.includePrerelease ? re[t.COERCERTLFULL] : re[t.COERCERTL]; + let next; + while ((next = coerceRtlRegex.exec(version8)) && (!match || match.index + match[0].length !== version8.length)) { + if (!match || next.index + next[0].length !== match.index + match[0].length) { + match = next; + } + coerceRtlRegex.lastIndex = next.index + next[1].length + next[2].length; + } + coerceRtlRegex.lastIndex = -1; + } + if (match === null) { + return null; + } + const major = match[2]; + const minor = match[3] || "0"; + const patch = match[4] || "0"; + const prerelease = options.includePrerelease && match[5] ? `-${match[5]}` : ""; + const build = options.includePrerelease && match[6] ? `+${match[6]}` : ""; + return parse4(`${major}.${minor}.${patch}${prerelease}${build}`, options); + }; + module2.exports = coerce2; + } +}); + +// node_modules/semver/internal/lrucache.js +var require_lrucache = __commonJS({ + "node_modules/semver/internal/lrucache.js"(exports2, module2) { + "use strict"; + var LRUCache = class { + constructor() { + this.max = 1e3; + this.map = /* @__PURE__ */ new Map(); + } + get(key) { + const value = this.map.get(key); + if (value === void 0) { + return void 0; + } else { + this.map.delete(key); + this.map.set(key, value); + return value; + } + } + delete(key) { + return this.map.delete(key); + } + set(key, value) { + const deleted = this.delete(key); + if (!deleted && value !== void 0) { + if (this.map.size >= this.max) { + const firstKey = this.map.keys().next().value; + this.delete(firstKey); + } + this.map.set(key, value); + } + return this; + } + }; + module2.exports = LRUCache; + } +}); + +// node_modules/semver/classes/range.js +var require_range = __commonJS({ + "node_modules/semver/classes/range.js"(exports2, module2) { + "use strict"; + var SPACE_CHARACTERS = /\s+/g; + var Range = class _Range { + constructor(range, options) { + options = parseOptions2(options); + if (range instanceof _Range) { + if (range.loose === !!options.loose && range.includePrerelease === !!options.includePrerelease) { + return range; + } else { + return new _Range(range.raw, options); + } + } + if (range instanceof Comparator) { + this.raw = range.value; + this.set = [[range]]; + this.formatted = void 0; + return this; + } + this.options = options; + this.loose = !!options.loose; + this.includePrerelease = !!options.includePrerelease; + this.raw = range.trim().replace(SPACE_CHARACTERS, " "); + this.set = this.raw.split("||").map((r) => this.parseRange(r.trim())).filter((c) => c.length); + if (!this.set.length) { + throw new TypeError(`Invalid SemVer Range: ${this.raw}`); + } + if (this.set.length > 1) { + const first = this.set[0]; + this.set = this.set.filter((c) => !isNullSet(c[0])); + if (this.set.length === 0) { + this.set = [first]; + } else if (this.set.length > 1) { + for (const c of this.set) { + if (c.length === 1 && isAny(c[0])) { + this.set = [c]; + break; + } + } + } + } + this.formatted = void 0; + } + get range() { + if (this.formatted === void 0) { + this.formatted = ""; + for (let i = 0; i < this.set.length; i++) { + if (i > 0) { + this.formatted += "||"; + } + const comps = this.set[i]; + for (let k = 0; k < comps.length; k++) { + if (k > 0) { + this.formatted += " "; + } + this.formatted += comps[k].toString().trim(); + } + } + } + return this.formatted; + } + format() { + return this.range; + } + toString() { + return this.range; + } + parseRange(range) { + const memoOpts = (this.options.includePrerelease && FLAG_INCLUDE_PRERELEASE) | (this.options.loose && FLAG_LOOSE); + const memoKey = memoOpts + ":" + range; + const cached2 = cache.get(memoKey); + if (cached2) { + return cached2; + } + const loose = this.options.loose; + const hr = loose ? re[t.HYPHENRANGELOOSE] : re[t.HYPHENRANGE]; + range = range.replace(hr, hyphenReplace(this.options.includePrerelease)); + debug("hyphen replace", range); + range = range.replace(re[t.COMPARATORTRIM], comparatorTrimReplace); + debug("comparator trim", range); + range = range.replace(re[t.TILDETRIM], tildeTrimReplace); + debug("tilde trim", range); + range = range.replace(re[t.CARETTRIM], caretTrimReplace); + debug("caret trim", range); + let rangeList = range.split(" ").map((comp) => parseComparator(comp, this.options)).join(" ").split(/\s+/).map((comp) => replaceGTE0(comp, this.options)); + if (loose) { + rangeList = rangeList.filter((comp) => { + debug("loose invalid filter", comp, this.options); + return !!comp.match(re[t.COMPARATORLOOSE]); + }); + } + debug("range list", rangeList); + const rangeMap = /* @__PURE__ */ new Map(); + const comparators = rangeList.map((comp) => new Comparator(comp, this.options)); + for (const comp of comparators) { + if (isNullSet(comp)) { + return [comp]; + } + rangeMap.set(comp.value, comp); + } + if (rangeMap.size > 1 && rangeMap.has("")) { + rangeMap.delete(""); + } + const result = [...rangeMap.values()]; + cache.set(memoKey, result); + return result; + } + intersects(range, options) { + if (!(range instanceof _Range)) { + throw new TypeError("a Range is required"); + } + return this.set.some((thisComparators) => { + return isSatisfiable(thisComparators, options) && range.set.some((rangeComparators) => { + return isSatisfiable(rangeComparators, options) && thisComparators.every((thisComparator) => { + return rangeComparators.every((rangeComparator) => { + return thisComparator.intersects(rangeComparator, options); + }); + }); + }); + }); + } + // if ANY of the sets match ALL of its comparators, then pass + test(version8) { + if (!version8) { + return false; + } + if (typeof version8 === "string") { + try { + version8 = new SemVer(version8, this.options); + } catch (er) { + return false; + } + } + for (let i = 0; i < this.set.length; i++) { + if (testSet(this.set[i], version8, this.options)) { + return true; + } + } + return false; + } + }; + module2.exports = Range; + var LRU = require_lrucache(); + var cache = new LRU(); + var parseOptions2 = require_parse_options(); + var Comparator = require_comparator(); + var debug = require_debug(); + var SemVer = require_semver(); + var { + safeRe: re, + t, + comparatorTrimReplace, + tildeTrimReplace, + caretTrimReplace + } = require_re(); + var { FLAG_INCLUDE_PRERELEASE, FLAG_LOOSE } = require_constants(); + var isNullSet = (c) => c.value === "<0.0.0-0"; + var isAny = (c) => c.value === ""; + var isSatisfiable = (comparators, options) => { + let result = true; + const remainingComparators = comparators.slice(); + let testComparator = remainingComparators.pop(); + while (result && remainingComparators.length) { + result = remainingComparators.every((otherComparator) => { + return testComparator.intersects(otherComparator, options); + }); + testComparator = remainingComparators.pop(); + } + return result; + }; + var parseComparator = (comp, options) => { + comp = comp.replace(re[t.BUILD], ""); + debug("comp", comp, options); + comp = replaceCarets(comp, options); + debug("caret", comp); + comp = replaceTildes(comp, options); + debug("tildes", comp); + comp = replaceXRanges(comp, options); + debug("xrange", comp); + comp = replaceStars(comp, options); + debug("stars", comp); + return comp; + }; + var isX = (id) => !id || id.toLowerCase() === "x" || id === "*"; + var replaceTildes = (comp, options) => { + return comp.trim().split(/\s+/).map((c) => replaceTilde(c, options)).join(" "); + }; + var replaceTilde = (comp, options) => { + const r = options.loose ? re[t.TILDELOOSE] : re[t.TILDE]; + return comp.replace(r, (_, M, m, p, pr) => { + debug("tilde", comp, _, M, m, p, pr); + let ret; + if (isX(M)) { + ret = ""; + } else if (isX(m)) { + ret = `>=${M}.0.0 <${+M + 1}.0.0-0`; + } else if (isX(p)) { + ret = `>=${M}.${m}.0 <${M}.${+m + 1}.0-0`; + } else if (pr) { + debug("replaceTilde pr", pr); + ret = `>=${M}.${m}.${p}-${pr} <${M}.${+m + 1}.0-0`; + } else { + ret = `>=${M}.${m}.${p} <${M}.${+m + 1}.0-0`; + } + debug("tilde return", ret); + return ret; + }); + }; + var replaceCarets = (comp, options) => { + return comp.trim().split(/\s+/).map((c) => replaceCaret(c, options)).join(" "); + }; + var replaceCaret = (comp, options) => { + debug("caret", comp, options); + const r = options.loose ? re[t.CARETLOOSE] : re[t.CARET]; + const z = options.includePrerelease ? "-0" : ""; + return comp.replace(r, (_, M, m, p, pr) => { + debug("caret", comp, _, M, m, p, pr); + let ret; + if (isX(M)) { + ret = ""; + } else if (isX(m)) { + ret = `>=${M}.0.0${z} <${+M + 1}.0.0-0`; + } else if (isX(p)) { + if (M === "0") { + ret = `>=${M}.${m}.0${z} <${M}.${+m + 1}.0-0`; + } else { + ret = `>=${M}.${m}.0${z} <${+M + 1}.0.0-0`; + } + } else if (pr) { + debug("replaceCaret pr", pr); + if (M === "0") { + if (m === "0") { + ret = `>=${M}.${m}.${p}-${pr} <${M}.${m}.${+p + 1}-0`; + } else { + ret = `>=${M}.${m}.${p}-${pr} <${M}.${+m + 1}.0-0`; + } + } else { + ret = `>=${M}.${m}.${p}-${pr} <${+M + 1}.0.0-0`; + } + } else { + debug("no pr"); + if (M === "0") { + if (m === "0") { + ret = `>=${M}.${m}.${p}${z} <${M}.${m}.${+p + 1}-0`; + } else { + ret = `>=${M}.${m}.${p}${z} <${M}.${+m + 1}.0-0`; + } + } else { + ret = `>=${M}.${m}.${p} <${+M + 1}.0.0-0`; + } + } + debug("caret return", ret); + return ret; + }); + }; + var replaceXRanges = (comp, options) => { + debug("replaceXRanges", comp, options); + return comp.split(/\s+/).map((c) => replaceXRange(c, options)).join(" "); + }; + var replaceXRange = (comp, options) => { + comp = comp.trim(); + const r = options.loose ? re[t.XRANGELOOSE] : re[t.XRANGE]; + return comp.replace(r, (ret, gtlt, M, m, p, pr) => { + debug("xRange", comp, ret, gtlt, M, m, p, pr); + const xM = isX(M); + const xm = xM || isX(m); + const xp = xm || isX(p); + const anyX = xp; + if (gtlt === "=" && anyX) { + gtlt = ""; + } + pr = options.includePrerelease ? "-0" : ""; + if (xM) { + if (gtlt === ">" || gtlt === "<") { + ret = "<0.0.0-0"; + } else { + ret = "*"; + } + } else if (gtlt && anyX) { + if (xm) { + m = 0; + } + p = 0; + if (gtlt === ">") { + gtlt = ">="; + if (xm) { + M = +M + 1; + m = 0; + p = 0; + } else { + m = +m + 1; + p = 0; + } + } else if (gtlt === "<=") { + gtlt = "<"; + if (xm) { + M = +M + 1; + } else { + m = +m + 1; + } + } + if (gtlt === "<") { + pr = "-0"; + } + ret = `${gtlt + M}.${m}.${p}${pr}`; + } else if (xm) { + ret = `>=${M}.0.0${pr} <${+M + 1}.0.0-0`; + } else if (xp) { + ret = `>=${M}.${m}.0${pr} <${M}.${+m + 1}.0-0`; + } + debug("xRange return", ret); + return ret; + }); + }; + var replaceStars = (comp, options) => { + debug("replaceStars", comp, options); + return comp.trim().replace(re[t.STAR], ""); + }; + var replaceGTE0 = (comp, options) => { + debug("replaceGTE0", comp, options); + return comp.trim().replace(re[options.includePrerelease ? t.GTE0PRE : t.GTE0], ""); + }; + var hyphenReplace = (incPr) => ($0, from, fM, fm, fp, fpr, fb, to, tM, tm, tp, tpr) => { + if (isX(fM)) { + from = ""; + } else if (isX(fm)) { + from = `>=${fM}.0.0${incPr ? "-0" : ""}`; + } else if (isX(fp)) { + from = `>=${fM}.${fm}.0${incPr ? "-0" : ""}`; + } else if (fpr) { + from = `>=${from}`; + } else { + from = `>=${from}${incPr ? "-0" : ""}`; + } + if (isX(tM)) { + to = ""; + } else if (isX(tm)) { + to = `<${+tM + 1}.0.0-0`; + } else if (isX(tp)) { + to = `<${tM}.${+tm + 1}.0-0`; + } else if (tpr) { + to = `<=${tM}.${tm}.${tp}-${tpr}`; + } else if (incPr) { + to = `<${tM}.${tm}.${+tp + 1}-0`; + } else { + to = `<=${to}`; + } + return `${from} ${to}`.trim(); + }; + var testSet = (set, version8, options) => { + for (let i = 0; i < set.length; i++) { + if (!set[i].test(version8)) { + return false; + } + } + if (version8.prerelease.length && !options.includePrerelease) { + for (let i = 0; i < set.length; i++) { + debug(set[i].semver); + if (set[i].semver === Comparator.ANY) { + continue; + } + if (set[i].semver.prerelease.length > 0) { + const allowed = set[i].semver; + if (allowed.major === version8.major && allowed.minor === version8.minor && allowed.patch === version8.patch) { + return true; + } + } + } + return false; + } + return true; + }; + } +}); + +// node_modules/semver/classes/comparator.js +var require_comparator = __commonJS({ + "node_modules/semver/classes/comparator.js"(exports2, module2) { + "use strict"; + var ANY = /* @__PURE__ */ Symbol("SemVer ANY"); + var Comparator = class _Comparator { + static get ANY() { + return ANY; + } + constructor(comp, options) { + options = parseOptions2(options); + if (comp instanceof _Comparator) { + if (comp.loose === !!options.loose) { + return comp; + } else { + comp = comp.value; + } + } + comp = comp.trim().split(/\s+/).join(" "); + debug("comparator", comp, options); + this.options = options; + this.loose = !!options.loose; + this.parse(comp); + if (this.semver === ANY) { + this.value = ""; + } else { + this.value = this.operator + this.semver.version; + } + debug("comp", this); + } + parse(comp) { + const r = this.options.loose ? re[t.COMPARATORLOOSE] : re[t.COMPARATOR]; + const m = comp.match(r); + if (!m) { + throw new TypeError(`Invalid comparator: ${comp}`); + } + this.operator = m[1] !== void 0 ? m[1] : ""; + if (this.operator === "=") { + this.operator = ""; + } + if (!m[2]) { + this.semver = ANY; + } else { + this.semver = new SemVer(m[2], this.options.loose); + } + } + toString() { + return this.value; + } + test(version8) { + debug("Comparator.test", version8, this.options.loose); + if (this.semver === ANY || version8 === ANY) { + return true; + } + if (typeof version8 === "string") { + try { + version8 = new SemVer(version8, this.options); + } catch (er) { + return false; + } + } + return cmp(version8, this.operator, this.semver, this.options); + } + intersects(comp, options) { + if (!(comp instanceof _Comparator)) { + throw new TypeError("a Comparator is required"); + } + if (this.operator === "") { + if (this.value === "") { + return true; + } + return new Range(comp.value, options).test(this.value); + } else if (comp.operator === "") { + if (comp.value === "") { + return true; + } + return new Range(this.value, options).test(comp.semver); + } + options = parseOptions2(options); + if (options.includePrerelease && (this.value === "<0.0.0-0" || comp.value === "<0.0.0-0")) { + return false; + } + if (!options.includePrerelease && (this.value.startsWith("<0.0.0") || comp.value.startsWith("<0.0.0"))) { + return false; + } + if (this.operator.startsWith(">") && comp.operator.startsWith(">")) { + return true; + } + if (this.operator.startsWith("<") && comp.operator.startsWith("<")) { + return true; + } + if (this.semver.version === comp.semver.version && this.operator.includes("=") && comp.operator.includes("=")) { + return true; + } + if (cmp(this.semver, "<", comp.semver, options) && this.operator.startsWith(">") && comp.operator.startsWith("<")) { + return true; + } + if (cmp(this.semver, ">", comp.semver, options) && this.operator.startsWith("<") && comp.operator.startsWith(">")) { + return true; + } + return false; + } + }; + module2.exports = Comparator; + var parseOptions2 = require_parse_options(); + var { safeRe: re, t } = require_re(); + var cmp = require_cmp(); + var debug = require_debug(); + var SemVer = require_semver(); + var Range = require_range(); + } +}); + +// node_modules/semver/functions/satisfies.js +var require_satisfies = __commonJS({ + "node_modules/semver/functions/satisfies.js"(exports2, module2) { + "use strict"; + var Range = require_range(); + var satisfies = (version8, range, options) => { + try { + range = new Range(range, options); + } catch (er) { + return false; + } + return range.test(version8); + }; + module2.exports = satisfies; + } +}); + +// node_modules/semver/ranges/to-comparators.js +var require_to_comparators = __commonJS({ + "node_modules/semver/ranges/to-comparators.js"(exports2, module2) { + "use strict"; + var Range = require_range(); + var toComparators = (range, options) => new Range(range, options).set.map((comp) => comp.map((c) => c.value).join(" ").trim().split(" ")); + module2.exports = toComparators; + } +}); + +// node_modules/semver/ranges/max-satisfying.js +var require_max_satisfying = __commonJS({ + "node_modules/semver/ranges/max-satisfying.js"(exports2, module2) { + "use strict"; + var SemVer = require_semver(); + var Range = require_range(); + var maxSatisfying = (versions, range, options) => { + let max = null; + let maxSV = null; + let rangeObj = null; + try { + rangeObj = new Range(range, options); + } catch (er) { + return null; + } + versions.forEach((v) => { + if (rangeObj.test(v)) { + if (!max || maxSV.compare(v) === -1) { + max = v; + maxSV = new SemVer(max, options); + } + } + }); + return max; + }; + module2.exports = maxSatisfying; + } +}); + +// node_modules/semver/ranges/min-satisfying.js +var require_min_satisfying = __commonJS({ + "node_modules/semver/ranges/min-satisfying.js"(exports2, module2) { + "use strict"; + var SemVer = require_semver(); + var Range = require_range(); + var minSatisfying = (versions, range, options) => { + let min = null; + let minSV = null; + let rangeObj = null; + try { + rangeObj = new Range(range, options); + } catch (er) { + return null; + } + versions.forEach((v) => { + if (rangeObj.test(v)) { + if (!min || minSV.compare(v) === 1) { + min = v; + minSV = new SemVer(min, options); + } + } + }); + return min; + }; + module2.exports = minSatisfying; + } +}); + +// node_modules/semver/ranges/min-version.js +var require_min_version = __commonJS({ + "node_modules/semver/ranges/min-version.js"(exports2, module2) { + "use strict"; + var SemVer = require_semver(); + var Range = require_range(); + var gt = require_gt(); + var minVersion = (range, loose) => { + range = new Range(range, loose); + let minver = new SemVer("0.0.0"); + if (range.test(minver)) { + return minver; + } + minver = new SemVer("0.0.0-0"); + if (range.test(minver)) { + return minver; + } + minver = null; + for (let i = 0; i < range.set.length; ++i) { + const comparators = range.set[i]; + let setMin = null; + comparators.forEach((comparator) => { + const compver = new SemVer(comparator.semver.version); + switch (comparator.operator) { + case ">": + if (compver.prerelease.length === 0) { + compver.patch++; + } else { + compver.prerelease.push(0); + } + compver.raw = compver.format(); + /* fallthrough */ + case "": + case ">=": + if (!setMin || gt(compver, setMin)) { + setMin = compver; + } + break; + case "<": + case "<=": + break; + /* istanbul ignore next */ + default: + throw new Error(`Unexpected operation: ${comparator.operator}`); + } + }); + if (setMin && (!minver || gt(minver, setMin))) { + minver = setMin; + } + } + if (minver && range.test(minver)) { + return minver; + } + return null; + }; + module2.exports = minVersion; + } +}); + +// node_modules/semver/ranges/valid.js +var require_valid2 = __commonJS({ + "node_modules/semver/ranges/valid.js"(exports2, module2) { + "use strict"; + var Range = require_range(); + var validRange = (range, options) => { + try { + return new Range(range, options).range || "*"; + } catch (er) { + return null; + } + }; + module2.exports = validRange; + } +}); + +// node_modules/semver/ranges/outside.js +var require_outside = __commonJS({ + "node_modules/semver/ranges/outside.js"(exports2, module2) { + "use strict"; + var SemVer = require_semver(); + var Comparator = require_comparator(); + var { ANY } = Comparator; + var Range = require_range(); + var satisfies = require_satisfies(); + var gt = require_gt(); + var lt = require_lt(); + var lte = require_lte(); + var gte = require_gte(); + var outside = (version8, range, hilo, options) => { + version8 = new SemVer(version8, options); + range = new Range(range, options); + let gtfn, ltefn, ltfn, comp, ecomp; + switch (hilo) { + case ">": + gtfn = gt; + ltefn = lte; + ltfn = lt; + comp = ">"; + ecomp = ">="; + break; + case "<": + gtfn = lt; + ltefn = gte; + ltfn = gt; + comp = "<"; + ecomp = "<="; + break; + default: + throw new TypeError('Must provide a hilo val of "<" or ">"'); + } + if (satisfies(version8, range, options)) { + return false; + } + for (let i = 0; i < range.set.length; ++i) { + const comparators = range.set[i]; + let high = null; + let low = null; + comparators.forEach((comparator) => { + if (comparator.semver === ANY) { + comparator = new Comparator(">=0.0.0"); + } + high = high || comparator; + low = low || comparator; + if (gtfn(comparator.semver, high.semver, options)) { + high = comparator; + } else if (ltfn(comparator.semver, low.semver, options)) { + low = comparator; + } + }); + if (high.operator === comp || high.operator === ecomp) { + return false; + } + if ((!low.operator || low.operator === comp) && ltefn(version8, low.semver)) { + return false; + } else if (low.operator === ecomp && ltfn(version8, low.semver)) { + return false; + } + } + return true; + }; + module2.exports = outside; + } +}); + +// node_modules/semver/ranges/gtr.js +var require_gtr = __commonJS({ + "node_modules/semver/ranges/gtr.js"(exports2, module2) { + "use strict"; + var outside = require_outside(); + var gtr = (version8, range, options) => outside(version8, range, ">", options); + module2.exports = gtr; + } +}); + +// node_modules/semver/ranges/ltr.js +var require_ltr = __commonJS({ + "node_modules/semver/ranges/ltr.js"(exports2, module2) { + "use strict"; + var outside = require_outside(); + var ltr = (version8, range, options) => outside(version8, range, "<", options); + module2.exports = ltr; + } +}); + +// node_modules/semver/ranges/intersects.js +var require_intersects = __commonJS({ + "node_modules/semver/ranges/intersects.js"(exports2, module2) { + "use strict"; + var Range = require_range(); + var intersects = (r1, r2, options) => { + r1 = new Range(r1, options); + r2 = new Range(r2, options); + return r1.intersects(r2, options); + }; + module2.exports = intersects; + } +}); + +// node_modules/semver/ranges/simplify.js +var require_simplify = __commonJS({ + "node_modules/semver/ranges/simplify.js"(exports2, module2) { + "use strict"; + var satisfies = require_satisfies(); + var compare = require_compare(); + module2.exports = (versions, range, options) => { + const set = []; + let first = null; + let prev = null; + const v = versions.sort((a, b) => compare(a, b, options)); + for (const version8 of v) { + const included = satisfies(version8, range, options); + if (included) { + prev = version8; + if (!first) { + first = version8; + } + } else { + if (prev) { + set.push([first, prev]); + } + prev = null; + first = null; + } + } + if (first) { + set.push([first, null]); + } + const ranges = []; + for (const [min, max] of set) { + if (min === max) { + ranges.push(min); + } else if (!max && min === v[0]) { + ranges.push("*"); + } else if (!max) { + ranges.push(`>=${min}`); + } else if (min === v[0]) { + ranges.push(`<=${max}`); + } else { + ranges.push(`${min} - ${max}`); + } + } + const simplified = ranges.join(" || "); + const original = typeof range.raw === "string" ? range.raw : String(range); + return simplified.length < original.length ? simplified : range; + }; + } +}); + +// node_modules/semver/ranges/subset.js +var require_subset = __commonJS({ + "node_modules/semver/ranges/subset.js"(exports2, module2) { + "use strict"; + var Range = require_range(); + var Comparator = require_comparator(); + var { ANY } = Comparator; + var satisfies = require_satisfies(); + var compare = require_compare(); + var subset = (sub, dom, options = {}) => { + if (sub === dom) { + return true; + } + sub = new Range(sub, options); + dom = new Range(dom, options); + let sawNonNull = false; + OUTER: for (const simpleSub of sub.set) { + for (const simpleDom of dom.set) { + const isSub = simpleSubset(simpleSub, simpleDom, options); + sawNonNull = sawNonNull || isSub !== null; + if (isSub) { + continue OUTER; + } + } + if (sawNonNull) { + return false; + } + } + return true; + }; + var minimumVersionWithPreRelease = [new Comparator(">=0.0.0-0")]; + var minimumVersion = [new Comparator(">=0.0.0")]; + var simpleSubset = (sub, dom, options) => { + if (sub === dom) { + return true; + } + if (sub.length === 1 && sub[0].semver === ANY) { + if (dom.length === 1 && dom[0].semver === ANY) { + return true; + } else if (options.includePrerelease) { + sub = minimumVersionWithPreRelease; + } else { + sub = minimumVersion; + } + } + if (dom.length === 1 && dom[0].semver === ANY) { + if (options.includePrerelease) { + return true; + } else { + dom = minimumVersion; + } + } + const eqSet = /* @__PURE__ */ new Set(); + let gt, lt; + for (const c of sub) { + if (c.operator === ">" || c.operator === ">=") { + gt = higherGT(gt, c, options); + } else if (c.operator === "<" || c.operator === "<=") { + lt = lowerLT(lt, c, options); + } else { + eqSet.add(c.semver); + } + } + if (eqSet.size > 1) { + return null; + } + let gtltComp; + if (gt && lt) { + gtltComp = compare(gt.semver, lt.semver, options); + if (gtltComp > 0) { + return null; + } else if (gtltComp === 0 && (gt.operator !== ">=" || lt.operator !== "<=")) { + return null; + } + } + for (const eq of eqSet) { + if (gt && !satisfies(eq, String(gt), options)) { + return null; + } + if (lt && !satisfies(eq, String(lt), options)) { + return null; + } + for (const c of dom) { + if (!satisfies(eq, String(c), options)) { + return false; + } + } + return true; + } + let higher, lower; + let hasDomLT, hasDomGT; + let needDomLTPre = lt && !options.includePrerelease && lt.semver.prerelease.length ? lt.semver : false; + let needDomGTPre = gt && !options.includePrerelease && gt.semver.prerelease.length ? gt.semver : false; + if (needDomLTPre && needDomLTPre.prerelease.length === 1 && lt.operator === "<" && needDomLTPre.prerelease[0] === 0) { + needDomLTPre = false; + } + for (const c of dom) { + hasDomGT = hasDomGT || c.operator === ">" || c.operator === ">="; + hasDomLT = hasDomLT || c.operator === "<" || c.operator === "<="; + if (gt) { + if (needDomGTPre) { + if (c.semver.prerelease && c.semver.prerelease.length && c.semver.major === needDomGTPre.major && c.semver.minor === needDomGTPre.minor && c.semver.patch === needDomGTPre.patch) { + needDomGTPre = false; + } + } + if (c.operator === ">" || c.operator === ">=") { + higher = higherGT(gt, c, options); + if (higher === c && higher !== gt) { + return false; + } + } else if (gt.operator === ">=" && !satisfies(gt.semver, String(c), options)) { + return false; + } + } + if (lt) { + if (needDomLTPre) { + if (c.semver.prerelease && c.semver.prerelease.length && c.semver.major === needDomLTPre.major && c.semver.minor === needDomLTPre.minor && c.semver.patch === needDomLTPre.patch) { + needDomLTPre = false; + } + } + if (c.operator === "<" || c.operator === "<=") { + lower = lowerLT(lt, c, options); + if (lower === c && lower !== lt) { + return false; + } + } else if (lt.operator === "<=" && !satisfies(lt.semver, String(c), options)) { + return false; + } + } + if (!c.operator && (lt || gt) && gtltComp !== 0) { + return false; + } + } + if (gt && hasDomLT && !lt && gtltComp !== 0) { + return false; + } + if (lt && hasDomGT && !gt && gtltComp !== 0) { + return false; + } + if (needDomGTPre || needDomLTPre) { + return false; + } + return true; + }; + var higherGT = (a, b, options) => { + if (!a) { + return b; + } + const comp = compare(a.semver, b.semver, options); + return comp > 0 ? a : comp < 0 ? b : b.operator === ">" && a.operator === ">=" ? b : a; + }; + var lowerLT = (a, b, options) => { + if (!a) { + return b; + } + const comp = compare(a.semver, b.semver, options); + return comp < 0 ? a : comp > 0 ? b : b.operator === "<" && a.operator === "<=" ? b : a; + }; + module2.exports = subset; + } +}); + +// node_modules/semver/index.js +var require_semver2 = __commonJS({ + "node_modules/semver/index.js"(exports2, module2) { + "use strict"; + var internalRe = require_re(); + var constants2 = require_constants(); + var SemVer = require_semver(); + var identifiers = require_identifiers(); + var parse4 = require_parse(); + var valid = require_valid(); + var clean = require_clean(); + var inc = require_inc(); + var diff = require_diff(); + var major = require_major(); + var minor = require_minor(); + var patch = require_patch(); + var prerelease = require_prerelease(); + var compare = require_compare(); + var rcompare = require_rcompare(); + var compareLoose = require_compare_loose(); + var compareBuild = require_compare_build(); + var sort = require_sort(); + var rsort = require_rsort(); + var gt = require_gt(); + var lt = require_lt(); + var eq = require_eq(); + var neq = require_neq(); + var gte = require_gte(); + var lte = require_lte(); + var cmp = require_cmp(); + var coerce2 = require_coerce(); + var Comparator = require_comparator(); + var Range = require_range(); + var satisfies = require_satisfies(); + var toComparators = require_to_comparators(); + var maxSatisfying = require_max_satisfying(); + var minSatisfying = require_min_satisfying(); + var minVersion = require_min_version(); + var validRange = require_valid2(); + var outside = require_outside(); + var gtr = require_gtr(); + var ltr = require_ltr(); + var intersects = require_intersects(); + var simplifyRange = require_simplify(); + var subset = require_subset(); + module2.exports = { + parse: parse4, + valid, + clean, + inc, + diff, + major, + minor, + patch, + prerelease, + compare, + rcompare, + compareLoose, + compareBuild, + sort, + rsort, + gt, + lt, + eq, + neq, + gte, + lte, + cmp, + coerce: coerce2, + Comparator, + Range, + satisfies, + toComparators, + maxSatisfying, + minSatisfying, + minVersion, + validRange, + outside, + gtr, + ltr, + intersects, + simplifyRange, + subset, + SemVer, + re: internalRe.re, + src: internalRe.src, + tokens: internalRe.t, + SEMVER_SPEC_VERSION: constants2.SEMVER_SPEC_VERSION, + RELEASE_TYPES: constants2.RELEASE_TYPES, + compareIdentifiers: identifiers.compareIdentifiers, + rcompareIdentifiers: identifiers.rcompareIdentifiers + }; + } +}); + +// node_modules/jsonwebtoken/lib/asymmetricKeyDetailsSupported.js +var require_asymmetricKeyDetailsSupported = __commonJS({ + "node_modules/jsonwebtoken/lib/asymmetricKeyDetailsSupported.js"(exports2, module2) { + var semver = require_semver2(); + module2.exports = semver.satisfies(process.version, ">=15.7.0"); + } +}); + +// node_modules/jsonwebtoken/lib/rsaPssKeyDetailsSupported.js +var require_rsaPssKeyDetailsSupported = __commonJS({ + "node_modules/jsonwebtoken/lib/rsaPssKeyDetailsSupported.js"(exports2, module2) { + var semver = require_semver2(); + module2.exports = semver.satisfies(process.version, ">=16.9.0"); + } +}); + +// node_modules/jsonwebtoken/lib/validateAsymmetricKey.js +var require_validateAsymmetricKey = __commonJS({ + "node_modules/jsonwebtoken/lib/validateAsymmetricKey.js"(exports2, module2) { + var ASYMMETRIC_KEY_DETAILS_SUPPORTED = require_asymmetricKeyDetailsSupported(); + var RSA_PSS_KEY_DETAILS_SUPPORTED = require_rsaPssKeyDetailsSupported(); + var allowedAlgorithmsForKeys = { + "ec": ["ES256", "ES384", "ES512"], + "rsa": ["RS256", "PS256", "RS384", "PS384", "RS512", "PS512"], + "rsa-pss": ["PS256", "PS384", "PS512"] + }; + var allowedCurves = { + ES256: "prime256v1", + ES384: "secp384r1", + ES512: "secp521r1" + }; + module2.exports = function(algorithm, key) { + if (!algorithm || !key) return; + const keyType = key.asymmetricKeyType; + if (!keyType) return; + const allowedAlgorithms = allowedAlgorithmsForKeys[keyType]; + if (!allowedAlgorithms) { + throw new Error(`Unknown key type "${keyType}".`); + } + if (!allowedAlgorithms.includes(algorithm)) { + throw new Error(`"alg" parameter for "${keyType}" key type must be one of: ${allowedAlgorithms.join(", ")}.`); + } + if (ASYMMETRIC_KEY_DETAILS_SUPPORTED) { + switch (keyType) { + case "ec": + const keyCurve = key.asymmetricKeyDetails.namedCurve; + const allowedCurve = allowedCurves[algorithm]; + if (keyCurve !== allowedCurve) { + throw new Error(`"alg" parameter "${algorithm}" requires curve "${allowedCurve}".`); + } + break; + case "rsa-pss": + if (RSA_PSS_KEY_DETAILS_SUPPORTED) { + const length = parseInt(algorithm.slice(-3), 10); + const { hashAlgorithm, mgf1HashAlgorithm, saltLength } = key.asymmetricKeyDetails; + if (hashAlgorithm !== `sha${length}` || mgf1HashAlgorithm !== hashAlgorithm) { + throw new Error(`Invalid key for this operation, its RSA-PSS parameters do not meet the requirements of "alg" ${algorithm}.`); + } + if (saltLength !== void 0 && saltLength > length >> 3) { + throw new Error(`Invalid key for this operation, its RSA-PSS parameter saltLength does not meet the requirements of "alg" ${algorithm}.`); + } + } + break; + } + } + }; + } +}); + +// node_modules/jsonwebtoken/lib/psSupported.js +var require_psSupported = __commonJS({ + "node_modules/jsonwebtoken/lib/psSupported.js"(exports2, module2) { + var semver = require_semver2(); + module2.exports = semver.satisfies(process.version, "^6.12.0 || >=8.0.0"); + } +}); + +// node_modules/jsonwebtoken/verify.js +var require_verify = __commonJS({ + "node_modules/jsonwebtoken/verify.js"(exports2, module2) { + var JsonWebTokenError = require_JsonWebTokenError(); + var NotBeforeError = require_NotBeforeError(); + var TokenExpiredError = require_TokenExpiredError(); + var decode = require_decode(); + var timespan = require_timespan(); + var validateAsymmetricKey = require_validateAsymmetricKey(); + var PS_SUPPORTED = require_psSupported(); + var jws = require_jws(); + var { KeyObject, createSecretKey, createPublicKey } = require("crypto"); + var PUB_KEY_ALGS = ["RS256", "RS384", "RS512"]; + var EC_KEY_ALGS = ["ES256", "ES384", "ES512"]; + var RSA_KEY_ALGS = ["RS256", "RS384", "RS512"]; + var HS_ALGS = ["HS256", "HS384", "HS512"]; + if (PS_SUPPORTED) { + PUB_KEY_ALGS.splice(PUB_KEY_ALGS.length, 0, "PS256", "PS384", "PS512"); + RSA_KEY_ALGS.splice(RSA_KEY_ALGS.length, 0, "PS256", "PS384", "PS512"); + } + module2.exports = function(jwtString, secretOrPublicKey, options, callback) { + if (typeof options === "function" && !callback) { + callback = options; + options = {}; + } + if (!options) { + options = {}; + } + options = Object.assign({}, options); + let done; + if (callback) { + done = callback; + } else { + done = function(err, data) { + if (err) throw err; + return data; + }; + } + if (options.clockTimestamp && typeof options.clockTimestamp !== "number") { + return done(new JsonWebTokenError("clockTimestamp must be a number")); + } + if (options.nonce !== void 0 && (typeof options.nonce !== "string" || options.nonce.trim() === "")) { + return done(new JsonWebTokenError("nonce must be a non-empty string")); + } + if (options.allowInvalidAsymmetricKeyTypes !== void 0 && typeof options.allowInvalidAsymmetricKeyTypes !== "boolean") { + return done(new JsonWebTokenError("allowInvalidAsymmetricKeyTypes must be a boolean")); + } + const clockTimestamp = options.clockTimestamp || Math.floor(Date.now() / 1e3); + if (!jwtString) { + return done(new JsonWebTokenError("jwt must be provided")); + } + if (typeof jwtString !== "string") { + return done(new JsonWebTokenError("jwt must be a string")); + } + const parts = jwtString.split("."); + if (parts.length !== 3) { + return done(new JsonWebTokenError("jwt malformed")); + } + let decodedToken; + try { + decodedToken = decode(jwtString, { complete: true }); + } catch (err) { + return done(err); + } + if (!decodedToken) { + return done(new JsonWebTokenError("invalid token")); + } + const header = decodedToken.header; + let getSecret2; + if (typeof secretOrPublicKey === "function") { + if (!callback) { + return done(new JsonWebTokenError("verify must be called asynchronous if secret or public key is provided as a callback")); + } + getSecret2 = secretOrPublicKey; + } else { + getSecret2 = function(header2, secretCallback) { + return secretCallback(null, secretOrPublicKey); + }; + } + return getSecret2(header, function(err, secretOrPublicKey2) { + if (err) { + return done(new JsonWebTokenError("error in secret or public key callback: " + err.message)); + } + const hasSignature = parts[2].trim() !== ""; + if (!hasSignature && secretOrPublicKey2) { + return done(new JsonWebTokenError("jwt signature is required")); + } + if (hasSignature && !secretOrPublicKey2) { + return done(new JsonWebTokenError("secret or public key must be provided")); + } + if (!hasSignature && !options.algorithms) { + return done(new JsonWebTokenError('please specify "none" in "algorithms" to verify unsigned tokens')); + } + if (secretOrPublicKey2 != null && !(secretOrPublicKey2 instanceof KeyObject)) { + try { + secretOrPublicKey2 = createPublicKey(secretOrPublicKey2); + } catch (_) { + try { + secretOrPublicKey2 = createSecretKey(typeof secretOrPublicKey2 === "string" ? Buffer.from(secretOrPublicKey2) : secretOrPublicKey2); + } catch (_2) { + return done(new JsonWebTokenError("secretOrPublicKey is not valid key material")); + } + } + } + if (!options.algorithms) { + if (secretOrPublicKey2.type === "secret") { + options.algorithms = HS_ALGS; + } else if (["rsa", "rsa-pss"].includes(secretOrPublicKey2.asymmetricKeyType)) { + options.algorithms = RSA_KEY_ALGS; + } else if (secretOrPublicKey2.asymmetricKeyType === "ec") { + options.algorithms = EC_KEY_ALGS; + } else { + options.algorithms = PUB_KEY_ALGS; + } + } + if (options.algorithms.indexOf(decodedToken.header.alg) === -1) { + return done(new JsonWebTokenError("invalid algorithm")); + } + if (header.alg.startsWith("HS") && secretOrPublicKey2.type !== "secret") { + return done(new JsonWebTokenError(`secretOrPublicKey must be a symmetric key when using ${header.alg}`)); + } else if (/^(?:RS|PS|ES)/.test(header.alg) && secretOrPublicKey2.type !== "public") { + return done(new JsonWebTokenError(`secretOrPublicKey must be an asymmetric key when using ${header.alg}`)); + } + if (!options.allowInvalidAsymmetricKeyTypes) { + try { + validateAsymmetricKey(header.alg, secretOrPublicKey2); + } catch (e) { + return done(e); + } + } + let valid; + try { + valid = jws.verify(jwtString, decodedToken.header.alg, secretOrPublicKey2); + } catch (e) { + return done(e); + } + if (!valid) { + return done(new JsonWebTokenError("invalid signature")); + } + const payload = decodedToken.payload; + if (typeof payload.nbf !== "undefined" && !options.ignoreNotBefore) { + if (typeof payload.nbf !== "number") { + return done(new JsonWebTokenError("invalid nbf value")); + } + if (payload.nbf > clockTimestamp + (options.clockTolerance || 0)) { + return done(new NotBeforeError("jwt not active", new Date(payload.nbf * 1e3))); + } + } + if (typeof payload.exp !== "undefined" && !options.ignoreExpiration) { + if (typeof payload.exp !== "number") { + return done(new JsonWebTokenError("invalid exp value")); + } + if (clockTimestamp >= payload.exp + (options.clockTolerance || 0)) { + return done(new TokenExpiredError("jwt expired", new Date(payload.exp * 1e3))); + } + } + if (options.audience) { + const audiences = Array.isArray(options.audience) ? options.audience : [options.audience]; + const target = Array.isArray(payload.aud) ? payload.aud : [payload.aud]; + const match = target.some(function(targetAudience) { + return audiences.some(function(audience) { + return audience instanceof RegExp ? audience.test(targetAudience) : audience === targetAudience; + }); + }); + if (!match) { + return done(new JsonWebTokenError("jwt audience invalid. expected: " + audiences.join(" or "))); + } + } + if (options.issuer) { + const invalid_issuer = typeof options.issuer === "string" && payload.iss !== options.issuer || Array.isArray(options.issuer) && options.issuer.indexOf(payload.iss) === -1; + if (invalid_issuer) { + return done(new JsonWebTokenError("jwt issuer invalid. expected: " + options.issuer)); + } + } + if (options.subject) { + if (payload.sub !== options.subject) { + return done(new JsonWebTokenError("jwt subject invalid. expected: " + options.subject)); + } + } + if (options.jwtid) { + if (payload.jti !== options.jwtid) { + return done(new JsonWebTokenError("jwt jwtid invalid. expected: " + options.jwtid)); + } + } + if (options.nonce) { + if (payload.nonce !== options.nonce) { + return done(new JsonWebTokenError("jwt nonce invalid. expected: " + options.nonce)); + } + } + if (options.maxAge) { + if (typeof payload.iat !== "number") { + return done(new JsonWebTokenError("iat required when maxAge is specified")); + } + const maxAgeTimestamp = timespan(options.maxAge, payload.iat); + if (typeof maxAgeTimestamp === "undefined") { + return done(new JsonWebTokenError('"maxAge" should be a number of seconds or string representing a timespan eg: "1d", "20h", 60')); + } + if (clockTimestamp >= maxAgeTimestamp + (options.clockTolerance || 0)) { + return done(new TokenExpiredError("maxAge exceeded", new Date(maxAgeTimestamp * 1e3))); + } + } + if (options.complete === true) { + const signature = decodedToken.signature; + return done(null, { + header, + payload, + signature + }); + } + return done(null, payload); + }); + }; + } +}); + +// node_modules/lodash.includes/index.js +var require_lodash = __commonJS({ + "node_modules/lodash.includes/index.js"(exports2, module2) { + var INFINITY = 1 / 0; + var MAX_SAFE_INTEGER = 9007199254740991; + var MAX_INTEGER = 17976931348623157e292; + var NAN = 0 / 0; + var argsTag = "[object Arguments]"; + var funcTag = "[object Function]"; + var genTag = "[object GeneratorFunction]"; + var stringTag = "[object String]"; + var symbolTag = "[object Symbol]"; + var reTrim = /^\s+|\s+$/g; + var reIsBadHex = /^[-+]0x[0-9a-f]+$/i; + var reIsBinary = /^0b[01]+$/i; + var reIsOctal = /^0o[0-7]+$/i; + var reIsUint = /^(?:0|[1-9]\d*)$/; + var freeParseInt = parseInt; + function arrayMap(array2, iteratee) { + var index = -1, length = array2 ? array2.length : 0, result = Array(length); + while (++index < length) { + result[index] = iteratee(array2[index], index, array2); + } + return result; + } + function baseFindIndex(array2, predicate, fromIndex, fromRight) { + var length = array2.length, index = fromIndex + (fromRight ? 1 : -1); + while (fromRight ? index-- : ++index < length) { + if (predicate(array2[index], index, array2)) { + return index; + } + } + return -1; + } + function baseIndexOf(array2, value, fromIndex) { + if (value !== value) { + return baseFindIndex(array2, baseIsNaN, fromIndex); + } + var index = fromIndex - 1, length = array2.length; + while (++index < length) { + if (array2[index] === value) { + return index; + } + } + return -1; + } + function baseIsNaN(value) { + return value !== value; + } + function baseTimes(n, iteratee) { + var index = -1, result = Array(n); + while (++index < n) { + result[index] = iteratee(index); + } + return result; + } + function baseValues(object3, props) { + return arrayMap(props, function(key) { + return object3[key]; + }); + } + function overArg(func, transform2) { + return function(arg) { + return func(transform2(arg)); + }; + } + var objectProto = Object.prototype; + var hasOwnProperty = objectProto.hasOwnProperty; + var objectToString = objectProto.toString; + var propertyIsEnumerable = objectProto.propertyIsEnumerable; + var nativeKeys = overArg(Object.keys, Object); + var nativeMax = Math.max; + function arrayLikeKeys(value, inherited) { + var result = isArray(value) || isArguments(value) ? baseTimes(value.length, String) : []; + var length = result.length, skipIndexes = !!length; + for (var key in value) { + if ((inherited || hasOwnProperty.call(value, key)) && !(skipIndexes && (key == "length" || isIndex(key, length)))) { + result.push(key); + } + } + return result; + } + function baseKeys(object3) { + if (!isPrototype(object3)) { + return nativeKeys(object3); + } + var result = []; + for (var key in Object(object3)) { + if (hasOwnProperty.call(object3, key) && key != "constructor") { + result.push(key); + } + } + return result; + } + function isIndex(value, length) { + length = length == null ? MAX_SAFE_INTEGER : length; + return !!length && (typeof value == "number" || reIsUint.test(value)) && (value > -1 && value % 1 == 0 && value < length); + } + function isPrototype(value) { + var Ctor = value && value.constructor, proto = typeof Ctor == "function" && Ctor.prototype || objectProto; + return value === proto; + } + function includes(collection, value, fromIndex, guard) { + collection = isArrayLike(collection) ? collection : values(collection); + fromIndex = fromIndex && !guard ? toInteger(fromIndex) : 0; + var length = collection.length; + if (fromIndex < 0) { + fromIndex = nativeMax(length + fromIndex, 0); + } + return isString(collection) ? fromIndex <= length && collection.indexOf(value, fromIndex) > -1 : !!length && baseIndexOf(collection, value, fromIndex) > -1; + } + function isArguments(value) { + return isArrayLikeObject(value) && hasOwnProperty.call(value, "callee") && (!propertyIsEnumerable.call(value, "callee") || objectToString.call(value) == argsTag); + } + var isArray = Array.isArray; + function isArrayLike(value) { + return value != null && isLength(value.length) && !isFunction(value); + } + function isArrayLikeObject(value) { + return isObjectLike(value) && isArrayLike(value); + } + function isFunction(value) { + var tag = isObject3(value) ? objectToString.call(value) : ""; + return tag == funcTag || tag == genTag; + } + function isLength(value) { + return typeof value == "number" && value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER; + } + function isObject3(value) { + var type = typeof value; + return !!value && (type == "object" || type == "function"); + } + function isObjectLike(value) { + return !!value && typeof value == "object"; + } + function isString(value) { + return typeof value == "string" || !isArray(value) && isObjectLike(value) && objectToString.call(value) == stringTag; + } + function isSymbol(value) { + return typeof value == "symbol" || isObjectLike(value) && objectToString.call(value) == symbolTag; + } + function toFinite(value) { + if (!value) { + return value === 0 ? value : 0; + } + value = toNumber(value); + if (value === INFINITY || value === -INFINITY) { + var sign = value < 0 ? -1 : 1; + return sign * MAX_INTEGER; + } + return value === value ? value : 0; + } + function toInteger(value) { + var result = toFinite(value), remainder = result % 1; + return result === result ? remainder ? result - remainder : result : 0; + } + function toNumber(value) { + if (typeof value == "number") { + return value; + } + if (isSymbol(value)) { + return NAN; + } + if (isObject3(value)) { + var other = typeof value.valueOf == "function" ? value.valueOf() : value; + value = isObject3(other) ? other + "" : other; + } + if (typeof value != "string") { + return value === 0 ? value : +value; + } + value = value.replace(reTrim, ""); + var isBinary = reIsBinary.test(value); + return isBinary || reIsOctal.test(value) ? freeParseInt(value.slice(2), isBinary ? 2 : 8) : reIsBadHex.test(value) ? NAN : +value; + } + function keys(object3) { + return isArrayLike(object3) ? arrayLikeKeys(object3) : baseKeys(object3); + } + function values(object3) { + return object3 ? baseValues(object3, keys(object3)) : []; + } + module2.exports = includes; + } +}); + +// node_modules/lodash.isboolean/index.js +var require_lodash2 = __commonJS({ + "node_modules/lodash.isboolean/index.js"(exports2, module2) { + var boolTag = "[object Boolean]"; + var objectProto = Object.prototype; + var objectToString = objectProto.toString; + function isBoolean(value) { + return value === true || value === false || isObjectLike(value) && objectToString.call(value) == boolTag; + } + function isObjectLike(value) { + return !!value && typeof value == "object"; + } + module2.exports = isBoolean; + } +}); + +// node_modules/lodash.isinteger/index.js +var require_lodash3 = __commonJS({ + "node_modules/lodash.isinteger/index.js"(exports2, module2) { + var INFINITY = 1 / 0; + var MAX_INTEGER = 17976931348623157e292; + var NAN = 0 / 0; + var symbolTag = "[object Symbol]"; + var reTrim = /^\s+|\s+$/g; + var reIsBadHex = /^[-+]0x[0-9a-f]+$/i; + var reIsBinary = /^0b[01]+$/i; + var reIsOctal = /^0o[0-7]+$/i; + var freeParseInt = parseInt; + var objectProto = Object.prototype; + var objectToString = objectProto.toString; + function isInteger(value) { + return typeof value == "number" && value == toInteger(value); + } + function isObject3(value) { + var type = typeof value; + return !!value && (type == "object" || type == "function"); + } + function isObjectLike(value) { + return !!value && typeof value == "object"; + } + function isSymbol(value) { + return typeof value == "symbol" || isObjectLike(value) && objectToString.call(value) == symbolTag; + } + function toFinite(value) { + if (!value) { + return value === 0 ? value : 0; + } + value = toNumber(value); + if (value === INFINITY || value === -INFINITY) { + var sign = value < 0 ? -1 : 1; + return sign * MAX_INTEGER; + } + return value === value ? value : 0; + } + function toInteger(value) { + var result = toFinite(value), remainder = result % 1; + return result === result ? remainder ? result - remainder : result : 0; + } + function toNumber(value) { + if (typeof value == "number") { + return value; + } + if (isSymbol(value)) { + return NAN; + } + if (isObject3(value)) { + var other = typeof value.valueOf == "function" ? value.valueOf() : value; + value = isObject3(other) ? other + "" : other; + } + if (typeof value != "string") { + return value === 0 ? value : +value; + } + value = value.replace(reTrim, ""); + var isBinary = reIsBinary.test(value); + return isBinary || reIsOctal.test(value) ? freeParseInt(value.slice(2), isBinary ? 2 : 8) : reIsBadHex.test(value) ? NAN : +value; + } + module2.exports = isInteger; + } +}); + +// node_modules/lodash.isnumber/index.js +var require_lodash4 = __commonJS({ + "node_modules/lodash.isnumber/index.js"(exports2, module2) { + var numberTag = "[object Number]"; + var objectProto = Object.prototype; + var objectToString = objectProto.toString; + function isObjectLike(value) { + return !!value && typeof value == "object"; + } + function isNumber(value) { + return typeof value == "number" || isObjectLike(value) && objectToString.call(value) == numberTag; + } + module2.exports = isNumber; + } +}); + +// node_modules/lodash.isplainobject/index.js +var require_lodash5 = __commonJS({ + "node_modules/lodash.isplainobject/index.js"(exports2, module2) { + var objectTag = "[object Object]"; + function isHostObject(value) { + var result = false; + if (value != null && typeof value.toString != "function") { + try { + result = !!(value + ""); + } catch (e) { + } + } + return result; + } + function overArg(func, transform2) { + return function(arg) { + return func(transform2(arg)); + }; + } + var funcProto = Function.prototype; + var objectProto = Object.prototype; + var funcToString = funcProto.toString; + var hasOwnProperty = objectProto.hasOwnProperty; + var objectCtorString = funcToString.call(Object); + var objectToString = objectProto.toString; + var getPrototype = overArg(Object.getPrototypeOf, Object); + function isObjectLike(value) { + return !!value && typeof value == "object"; + } + function isPlainObject4(value) { + if (!isObjectLike(value) || objectToString.call(value) != objectTag || isHostObject(value)) { + return false; + } + var proto = getPrototype(value); + if (proto === null) { + return true; + } + var Ctor = hasOwnProperty.call(proto, "constructor") && proto.constructor; + return typeof Ctor == "function" && Ctor instanceof Ctor && funcToString.call(Ctor) == objectCtorString; + } + module2.exports = isPlainObject4; + } +}); + +// node_modules/lodash.isstring/index.js +var require_lodash6 = __commonJS({ + "node_modules/lodash.isstring/index.js"(exports2, module2) { + var stringTag = "[object String]"; + var objectProto = Object.prototype; + var objectToString = objectProto.toString; + var isArray = Array.isArray; + function isObjectLike(value) { + return !!value && typeof value == "object"; + } + function isString(value) { + return typeof value == "string" || !isArray(value) && isObjectLike(value) && objectToString.call(value) == stringTag; + } + module2.exports = isString; + } +}); + +// node_modules/lodash.once/index.js +var require_lodash7 = __commonJS({ + "node_modules/lodash.once/index.js"(exports2, module2) { + var FUNC_ERROR_TEXT = "Expected a function"; + var INFINITY = 1 / 0; + var MAX_INTEGER = 17976931348623157e292; + var NAN = 0 / 0; + var symbolTag = "[object Symbol]"; + var reTrim = /^\s+|\s+$/g; + var reIsBadHex = /^[-+]0x[0-9a-f]+$/i; + var reIsBinary = /^0b[01]+$/i; + var reIsOctal = /^0o[0-7]+$/i; + var freeParseInt = parseInt; + var objectProto = Object.prototype; + var objectToString = objectProto.toString; + function before(n, func) { + var result; + if (typeof func != "function") { + throw new TypeError(FUNC_ERROR_TEXT); + } + n = toInteger(n); + return function() { + if (--n > 0) { + result = func.apply(this, arguments); + } + if (n <= 1) { + func = void 0; + } + return result; + }; + } + function once(func) { + return before(2, func); + } + function isObject3(value) { + var type = typeof value; + return !!value && (type == "object" || type == "function"); + } + function isObjectLike(value) { + return !!value && typeof value == "object"; + } + function isSymbol(value) { + return typeof value == "symbol" || isObjectLike(value) && objectToString.call(value) == symbolTag; + } + function toFinite(value) { + if (!value) { + return value === 0 ? value : 0; + } + value = toNumber(value); + if (value === INFINITY || value === -INFINITY) { + var sign = value < 0 ? -1 : 1; + return sign * MAX_INTEGER; + } + return value === value ? value : 0; + } + function toInteger(value) { + var result = toFinite(value), remainder = result % 1; + return result === result ? remainder ? result - remainder : result : 0; + } + function toNumber(value) { + if (typeof value == "number") { + return value; + } + if (isSymbol(value)) { + return NAN; + } + if (isObject3(value)) { + var other = typeof value.valueOf == "function" ? value.valueOf() : value; + value = isObject3(other) ? other + "" : other; + } + if (typeof value != "string") { + return value === 0 ? value : +value; + } + value = value.replace(reTrim, ""); + var isBinary = reIsBinary.test(value); + return isBinary || reIsOctal.test(value) ? freeParseInt(value.slice(2), isBinary ? 2 : 8) : reIsBadHex.test(value) ? NAN : +value; + } + module2.exports = once; + } +}); + +// node_modules/jsonwebtoken/sign.js +var require_sign = __commonJS({ + "node_modules/jsonwebtoken/sign.js"(exports2, module2) { + var timespan = require_timespan(); + var PS_SUPPORTED = require_psSupported(); + var validateAsymmetricKey = require_validateAsymmetricKey(); + var jws = require_jws(); + var includes = require_lodash(); + var isBoolean = require_lodash2(); + var isInteger = require_lodash3(); + var isNumber = require_lodash4(); + var isPlainObject4 = require_lodash5(); + var isString = require_lodash6(); + var once = require_lodash7(); + var { KeyObject, createSecretKey, createPrivateKey: createPrivateKey2 } = require("crypto"); + var SUPPORTED_ALGS = ["RS256", "RS384", "RS512", "ES256", "ES384", "ES512", "HS256", "HS384", "HS512", "none"]; + if (PS_SUPPORTED) { + SUPPORTED_ALGS.splice(3, 0, "PS256", "PS384", "PS512"); + } + var sign_options_schema = { + expiresIn: { isValid: function(value) { + return isInteger(value) || isString(value) && value; + }, message: '"expiresIn" should be a number of seconds or string representing a timespan' }, + notBefore: { isValid: function(value) { + return isInteger(value) || isString(value) && value; + }, message: '"notBefore" should be a number of seconds or string representing a timespan' }, + audience: { isValid: function(value) { + return isString(value) || Array.isArray(value); + }, message: '"audience" must be a string or array' }, + algorithm: { isValid: includes.bind(null, SUPPORTED_ALGS), message: '"algorithm" must be a valid string enum value' }, + header: { isValid: isPlainObject4, message: '"header" must be an object' }, + encoding: { isValid: isString, message: '"encoding" must be a string' }, + issuer: { isValid: isString, message: '"issuer" must be a string' }, + subject: { isValid: isString, message: '"subject" must be a string' }, + jwtid: { isValid: isString, message: '"jwtid" must be a string' }, + noTimestamp: { isValid: isBoolean, message: '"noTimestamp" must be a boolean' }, + keyid: { isValid: isString, message: '"keyid" must be a string' }, + mutatePayload: { isValid: isBoolean, message: '"mutatePayload" must be a boolean' }, + allowInsecureKeySizes: { isValid: isBoolean, message: '"allowInsecureKeySizes" must be a boolean' }, + allowInvalidAsymmetricKeyTypes: { isValid: isBoolean, message: '"allowInvalidAsymmetricKeyTypes" must be a boolean' } + }; + var registered_claims_schema = { + iat: { isValid: isNumber, message: '"iat" should be a number of seconds' }, + exp: { isValid: isNumber, message: '"exp" should be a number of seconds' }, + nbf: { isValid: isNumber, message: '"nbf" should be a number of seconds' } + }; + function validate2(schema, allowUnknown, object3, parameterName) { + if (!isPlainObject4(object3)) { + throw new Error('Expected "' + parameterName + '" to be a plain object.'); + } + Object.keys(object3).forEach(function(key) { + const validator = schema[key]; + if (!validator) { + if (!allowUnknown) { + throw new Error('"' + key + '" is not allowed in "' + parameterName + '"'); + } + return; + } + if (!validator.isValid(object3[key])) { + throw new Error(validator.message); + } + }); + } + function validateOptions(options) { + return validate2(sign_options_schema, false, options, "options"); + } + function validatePayload(payload) { + return validate2(registered_claims_schema, true, payload, "payload"); + } + var options_to_payload = { + "audience": "aud", + "issuer": "iss", + "subject": "sub", + "jwtid": "jti" + }; + var options_for_objects = [ + "expiresIn", + "notBefore", + "noTimestamp", + "audience", + "issuer", + "subject", + "jwtid" + ]; + module2.exports = function(payload, secretOrPrivateKey, options, callback) { + if (typeof options === "function") { + callback = options; + options = {}; + } else { + options = options || {}; + } + const isObjectPayload = typeof payload === "object" && !Buffer.isBuffer(payload); + const header = Object.assign({ + alg: options.algorithm || "HS256", + typ: isObjectPayload ? "JWT" : void 0, + kid: options.keyid + }, options.header); + function failure(err) { + if (callback) { + return callback(err); + } + throw err; + } + if (!secretOrPrivateKey && options.algorithm !== "none") { + return failure(new Error("secretOrPrivateKey must have a value")); + } + if (secretOrPrivateKey != null && !(secretOrPrivateKey instanceof KeyObject)) { + try { + secretOrPrivateKey = createPrivateKey2(secretOrPrivateKey); + } catch (_) { + try { + secretOrPrivateKey = createSecretKey(typeof secretOrPrivateKey === "string" ? Buffer.from(secretOrPrivateKey) : secretOrPrivateKey); + } catch (_2) { + return failure(new Error("secretOrPrivateKey is not valid key material")); + } + } + } + if (header.alg.startsWith("HS") && secretOrPrivateKey.type !== "secret") { + return failure(new Error(`secretOrPrivateKey must be a symmetric key when using ${header.alg}`)); + } else if (/^(?:RS|PS|ES)/.test(header.alg)) { + if (secretOrPrivateKey.type !== "private") { + return failure(new Error(`secretOrPrivateKey must be an asymmetric key when using ${header.alg}`)); + } + if (!options.allowInsecureKeySizes && !header.alg.startsWith("ES") && secretOrPrivateKey.asymmetricKeyDetails !== void 0 && //KeyObject.asymmetricKeyDetails is supported in Node 15+ + secretOrPrivateKey.asymmetricKeyDetails.modulusLength < 2048) { + return failure(new Error(`secretOrPrivateKey has a minimum key size of 2048 bits for ${header.alg}`)); + } + } + if (typeof payload === "undefined") { + return failure(new Error("payload is required")); + } else if (isObjectPayload) { + try { + validatePayload(payload); + } catch (error2) { + return failure(error2); + } + if (!options.mutatePayload) { + payload = Object.assign({}, payload); + } + } else { + const invalid_options = options_for_objects.filter(function(opt) { + return typeof options[opt] !== "undefined"; + }); + if (invalid_options.length > 0) { + return failure(new Error("invalid " + invalid_options.join(",") + " option for " + typeof payload + " payload")); + } + } + if (typeof payload.exp !== "undefined" && typeof options.expiresIn !== "undefined") { + return failure(new Error('Bad "options.expiresIn" option the payload already has an "exp" property.')); + } + if (typeof payload.nbf !== "undefined" && typeof options.notBefore !== "undefined") { + return failure(new Error('Bad "options.notBefore" option the payload already has an "nbf" property.')); + } + try { + validateOptions(options); + } catch (error2) { + return failure(error2); + } + if (!options.allowInvalidAsymmetricKeyTypes) { + try { + validateAsymmetricKey(header.alg, secretOrPrivateKey); + } catch (error2) { + return failure(error2); + } + } + const timestamp = payload.iat || Math.floor(Date.now() / 1e3); + if (options.noTimestamp) { + delete payload.iat; + } else if (isObjectPayload) { + payload.iat = timestamp; + } + if (typeof options.notBefore !== "undefined") { + try { + payload.nbf = timespan(options.notBefore, timestamp); + } catch (err) { + return failure(err); + } + if (typeof payload.nbf === "undefined") { + return failure(new Error('"notBefore" should be a number of seconds or string representing a timespan eg: "1d", "20h", 60')); + } + } + if (typeof options.expiresIn !== "undefined" && typeof payload === "object") { + try { + payload.exp = timespan(options.expiresIn, timestamp); + } catch (err) { + return failure(err); + } + if (typeof payload.exp === "undefined") { + return failure(new Error('"expiresIn" should be a number of seconds or string representing a timespan eg: "1d", "20h", 60')); + } + } + Object.keys(options_to_payload).forEach(function(key) { + const claim = options_to_payload[key]; + if (typeof options[key] !== "undefined") { + if (typeof payload[claim] !== "undefined") { + return failure(new Error('Bad "options.' + key + '" option. The payload already has an "' + claim + '" property.')); + } + payload[claim] = options[key]; + } + }); + const encoding = options.encoding || "utf8"; + if (typeof callback === "function") { + callback = callback && once(callback); + jws.createSign({ + header, + privateKey: secretOrPrivateKey, + payload, + encoding + }).once("error", callback).once("done", function(signature) { + if (!options.allowInsecureKeySizes && /^(?:RS|PS)/.test(header.alg) && signature.length < 256) { + return callback(new Error(`secretOrPrivateKey has a minimum key size of 2048 bits for ${header.alg}`)); + } + callback(null, signature); + }); + } else { + let signature = jws.sign({ header, payload, secret: secretOrPrivateKey, encoding }); + if (!options.allowInsecureKeySizes && /^(?:RS|PS)/.test(header.alg) && signature.length < 256) { + throw new Error(`secretOrPrivateKey has a minimum key size of 2048 bits for ${header.alg}`); + } + return signature; + } + }; + } +}); + +// node_modules/jsonwebtoken/index.js +var require_jsonwebtoken = __commonJS({ + "node_modules/jsonwebtoken/index.js"(exports2, module2) { + module2.exports = { + decode: require_decode(), + verify: require_verify(), + sign: require_sign(), + JsonWebTokenError: require_JsonWebTokenError(), + NotBeforeError: require_NotBeforeError(), + TokenExpiredError: require_TokenExpiredError() + }; + } +}); + +// node_modules/@azure/identity/dist/esm/constants.js +var SDK_VERSION, DeveloperSignOnClientId, DefaultTenantId, AzureAuthorityHosts, DefaultAuthorityHost, DefaultAuthority, ALL_TENANTS, CACHE_CAE_SUFFIX, CACHE_NON_CAE_SUFFIX, DEFAULT_TOKEN_CACHE_NAME; +var init_constants = __esm({ + "node_modules/@azure/identity/dist/esm/constants.js"() { + SDK_VERSION = `4.13.1`; + DeveloperSignOnClientId = "04b07795-8ddb-461a-bbee-02f9e1bf7b46"; + DefaultTenantId = "common"; + (function(AzureAuthorityHosts2) { + AzureAuthorityHosts2["AzureChina"] = "https://login.chinacloudapi.cn"; + AzureAuthorityHosts2["AzureGermany"] = "https://login.microsoftonline.de"; + AzureAuthorityHosts2["AzureGovernment"] = "https://login.microsoftonline.us"; + AzureAuthorityHosts2["AzurePublicCloud"] = "https://login.microsoftonline.com"; + })(AzureAuthorityHosts || (AzureAuthorityHosts = {})); + DefaultAuthorityHost = AzureAuthorityHosts.AzurePublicCloud; + DefaultAuthority = "login.microsoftonline.com"; + ALL_TENANTS = ["*"]; + CACHE_CAE_SUFFIX = "cae"; + CACHE_NON_CAE_SUFFIX = "nocae"; + DEFAULT_TOKEN_CACHE_NAME = "msal.cache"; + } +}); + +// node_modules/@azure/identity/dist/esm/msal/nodeFlows/msalPlugins.js +function hasVSCodePlugin() { + return vsCodeAuthRecordPath !== void 0 && vsCodeBrokerInfo !== void 0; +} +function generatePluginConfiguration(options) { + const config2 = { + cache: {}, + broker: { + ...options.brokerOptions, + isEnabled: options.brokerOptions?.enabled ?? false, + enableMsaPassthrough: options.brokerOptions?.legacyEnableMsaPassthrough ?? false + } + }; + if (options.tokenCachePersistenceOptions?.enabled) { + if (persistenceProvider === void 0) { + throw new Error([ + "Persistent token caching was requested, but no persistence provider was configured.", + "You must install the identity-cache-persistence plugin package (`npm install --save @azure/identity-cache-persistence`)", + "and enable it by importing `useIdentityPlugin` from `@azure/identity` and calling", + "`useIdentityPlugin(cachePersistencePlugin)` before using `tokenCachePersistenceOptions`." + ].join(" ")); + } + const cacheBaseName = options.tokenCachePersistenceOptions.name || DEFAULT_TOKEN_CACHE_NAME; + config2.cache.cachePlugin = persistenceProvider({ + name: `${cacheBaseName}.${CACHE_NON_CAE_SUFFIX}`, + ...options.tokenCachePersistenceOptions + }); + config2.cache.cachePluginCae = persistenceProvider({ + name: `${cacheBaseName}.${CACHE_CAE_SUFFIX}`, + ...options.tokenCachePersistenceOptions + }); + } + if (options.brokerOptions?.enabled) { + config2.broker.nativeBrokerPlugin = getBrokerPlugin(options.isVSCodeCredential || false); + } + return config2; +} +function getBrokerPlugin(isVSCodePlugin) { + const { credentialName: credentialName6, packageName, pluginVar, brokerInfo } = brokerConfig[isVSCodePlugin ? "vsCode" : "native"]; + if (brokerInfo === void 0) { + throw new Error(brokerErrorTemplates.missing(credentialName6, packageName, pluginVar)); + } + if (brokerInfo.broker.isBrokerAvailable === false) { + throw new Error(brokerErrorTemplates.unavailable(credentialName6, packageName)); + } + return brokerInfo.broker; +} +var persistenceProvider, msalNodeFlowCacheControl, nativeBrokerInfo, vsCodeAuthRecordPath, vsCodeBrokerInfo, msalNodeFlowNativeBrokerControl, msalNodeFlowVSCodeCredentialControl, brokerErrorTemplates, brokerConfig, msalPlugins; +var init_msalPlugins = __esm({ + "node_modules/@azure/identity/dist/esm/msal/nodeFlows/msalPlugins.js"() { + init_constants(); + persistenceProvider = void 0; + msalNodeFlowCacheControl = { + setPersistence(pluginProvider) { + persistenceProvider = pluginProvider; + } + }; + nativeBrokerInfo = void 0; + vsCodeAuthRecordPath = void 0; + vsCodeBrokerInfo = void 0; + msalNodeFlowNativeBrokerControl = { + setNativeBroker(broker) { + nativeBrokerInfo = { + broker + }; + } + }; + msalNodeFlowVSCodeCredentialControl = { + setVSCodeAuthRecordPath(path9) { + vsCodeAuthRecordPath = path9; + }, + setVSCodeBroker(broker) { + vsCodeBrokerInfo = { + broker + }; + } + }; + brokerErrorTemplates = { + missing: (credentialName6, packageName, pluginVar) => [ + `${credentialName6} was requested, but no plugin was configured or no authentication record was found.`, + `You must install the ${packageName} plugin package (npm install --save ${packageName})`, + "and enable it by importing `useIdentityPlugin` from `@azure/identity` and calling", + `useIdentityPlugin(${pluginVar}) before using enableBroker.` + ].join(" "), + unavailable: (credentialName6, packageName) => [ + `${credentialName6} was requested, and the plugin is configured, but the broker is unavailable.`, + `Ensure the ${credentialName6} plugin is properly installed and configured.`, + "Check for missing native dependencies and ensure the package is properly installed.", + `See the README for prerequisites on installing and using ${packageName}.` + ].join(" ") + }; + brokerConfig = { + vsCode: { + credentialName: "Visual Studio Code Credential", + packageName: "@azure/identity-vscode", + pluginVar: "vsCodePlugin", + get brokerInfo() { + return vsCodeBrokerInfo; + } + }, + native: { + credentialName: "Broker for WAM", + packageName: "@azure/identity-broker", + pluginVar: "nativeBrokerPlugin", + get brokerInfo() { + return nativeBrokerInfo; + } + } + }; + msalPlugins = { + generatePluginConfiguration + }; + } +}); + +// node_modules/@azure/identity/dist/esm/plugins/consumer.js +function useIdentityPlugin(plugin) { + plugin(pluginContext); +} +var pluginContext; +var init_consumer = __esm({ + "node_modules/@azure/identity/dist/esm/plugins/consumer.js"() { + init_msalPlugins(); + pluginContext = { + cachePluginControl: msalNodeFlowCacheControl, + nativeBrokerPluginControl: msalNodeFlowNativeBrokerControl, + vsCodeCredentialControl: msalNodeFlowVSCodeCredentialControl + }; + } +}); + +// node_modules/@azure/identity/dist/esm/errors.js +function isErrorResponse(errorResponse) { + return errorResponse && typeof errorResponse.error === "string" && typeof errorResponse.error_description === "string"; +} +function convertOAuthErrorResponseToErrorResponse(errorBody) { + return { + error: errorBody.error, + errorDescription: errorBody.error_description, + correlationId: errorBody.correlation_id, + errorCodes: errorBody.error_codes, + timestamp: errorBody.timestamp, + traceId: errorBody.trace_id + }; +} +var CredentialUnavailableErrorName, CredentialUnavailableError, AuthenticationErrorName, AuthenticationError, AggregateAuthenticationErrorName, AggregateAuthenticationError, AuthenticationRequiredError; +var init_errors = __esm({ + "node_modules/@azure/identity/dist/esm/errors.js"() { + CredentialUnavailableErrorName = "CredentialUnavailableError"; + CredentialUnavailableError = class extends Error { + constructor(message, options) { + super(message, options); + this.name = CredentialUnavailableErrorName; + } + }; + AuthenticationErrorName = "AuthenticationError"; + AuthenticationError = class extends Error { + /** + * The HTTP status code returned from the authentication request. + */ + statusCode; + /** + * The error response details. + */ + errorResponse; + constructor(statusCode, errorBody, options) { + let errorResponse = { + error: "unknown", + errorDescription: "An unknown error occurred and no additional details are available." + }; + if (isErrorResponse(errorBody)) { + errorResponse = convertOAuthErrorResponseToErrorResponse(errorBody); + } else if (typeof errorBody === "string") { + try { + const oauthErrorResponse = JSON.parse(errorBody); + errorResponse = convertOAuthErrorResponseToErrorResponse(oauthErrorResponse); + } catch (e) { + if (statusCode === 400) { + errorResponse = { + error: "invalid_request", + errorDescription: `The service indicated that the request was invalid. + +${errorBody}` + }; + } else { + errorResponse = { + error: "unknown_error", + errorDescription: `An unknown error has occurred. Response body: + +${errorBody}` + }; + } + } + } else { + errorResponse = { + error: "unknown_error", + errorDescription: "An unknown error occurred and no additional details are available." + }; + } + super(`${errorResponse.error} Status code: ${statusCode} +More details: +${errorResponse.errorDescription},`, options); + this.statusCode = statusCode; + this.errorResponse = errorResponse; + this.name = AuthenticationErrorName; + } + }; + AggregateAuthenticationErrorName = "AggregateAuthenticationError"; + AggregateAuthenticationError = class extends Error { + /** + * The array of error objects that were thrown while trying to authenticate + * with the credentials in a {@link ChainedTokenCredential}. + */ + errors; + constructor(errors, errorMessage) { + const errorDetail = errors.join("\n"); + super(`${errorMessage} +${errorDetail}`); + this.errors = errors; + this.name = AggregateAuthenticationErrorName; + } + }; + AuthenticationRequiredError = class extends Error { + /** + * The list of scopes for which the token will have access. + */ + scopes; + /** + * The options passed to the getToken request. + */ + getTokenOptions; + constructor(options) { + super(options.message, options.cause ? { cause: options.cause } : void 0); + this.scopes = options.scopes; + this.getTokenOptions = options.getTokenOptions; + this.name = "AuthenticationRequiredError"; + } + }; + } +}); + +// node_modules/@typespec/ts-http-runtime/dist/esm/logger/log.js +function log(message, ...args) { + import_node_process.default.stderr.write(`${import_node_util.default.format(message, ...args)}${import_node_os.EOL}`); +} +var import_node_os, import_node_util, import_node_process; +var init_log = __esm({ + "node_modules/@typespec/ts-http-runtime/dist/esm/logger/log.js"() { + import_node_os = require("node:os"); + import_node_util = __toESM(require("node:util"), 1); + import_node_process = __toESM(require("node:process"), 1); + } +}); + +// node_modules/@typespec/ts-http-runtime/dist/esm/logger/debug.js +function enable(namespaces) { + enabledString = namespaces; + enabledNamespaces = []; + skippedNamespaces = []; + const namespaceList = namespaces.split(",").map((ns) => ns.trim()); + for (const ns of namespaceList) { + if (ns.startsWith("-")) { + skippedNamespaces.push(ns.substring(1)); + } else { + enabledNamespaces.push(ns); + } + } + for (const instance of debuggers) { + instance.enabled = enabled(instance.namespace); + } +} +function enabled(namespace) { + if (namespace.endsWith("*")) { + return true; + } + for (const skipped of skippedNamespaces) { + if (namespaceMatches(namespace, skipped)) { + return false; + } + } + for (const enabledNamespace of enabledNamespaces) { + if (namespaceMatches(namespace, enabledNamespace)) { + return true; + } + } + return false; +} +function namespaceMatches(namespace, patternToMatch) { + if (patternToMatch.indexOf("*") === -1) { + return namespace === patternToMatch; + } + let pattern = patternToMatch; + if (patternToMatch.indexOf("**") !== -1) { + const patternParts = []; + let lastCharacter = ""; + for (const character of patternToMatch) { + if (character === "*" && lastCharacter === "*") { + continue; + } else { + lastCharacter = character; + patternParts.push(character); + } + } + pattern = patternParts.join(""); + } + let namespaceIndex = 0; + let patternIndex = 0; + const patternLength = pattern.length; + const namespaceLength = namespace.length; + let lastWildcard = -1; + let lastWildcardNamespace = -1; + while (namespaceIndex < namespaceLength && patternIndex < patternLength) { + if (pattern[patternIndex] === "*") { + lastWildcard = patternIndex; + patternIndex++; + if (patternIndex === patternLength) { + return true; + } + while (namespace[namespaceIndex] !== pattern[patternIndex]) { + namespaceIndex++; + if (namespaceIndex === namespaceLength) { + return false; + } + } + lastWildcardNamespace = namespaceIndex; + namespaceIndex++; + patternIndex++; + continue; + } else if (pattern[patternIndex] === namespace[namespaceIndex]) { + patternIndex++; + namespaceIndex++; + } else if (lastWildcard >= 0) { + patternIndex = lastWildcard + 1; + namespaceIndex = lastWildcardNamespace + 1; + if (namespaceIndex === namespaceLength) { + return false; + } + while (namespace[namespaceIndex] !== pattern[patternIndex]) { + namespaceIndex++; + if (namespaceIndex === namespaceLength) { + return false; + } + } + lastWildcardNamespace = namespaceIndex; + namespaceIndex++; + patternIndex++; + continue; + } else { + return false; + } + } + const namespaceDone = namespaceIndex === namespace.length; + const patternDone = patternIndex === pattern.length; + const trailingWildCard = patternIndex === pattern.length - 1 && pattern[patternIndex] === "*"; + return namespaceDone && (patternDone || trailingWildCard); +} +function disable() { + const result = enabledString || ""; + enable(""); + return result; +} +function createDebugger(namespace) { + const newDebugger = Object.assign(debug, { + enabled: enabled(namespace), + destroy, + log: debugObj.log, + namespace, + extend + }); + function debug(...args) { + if (!newDebugger.enabled) { + return; + } + if (args.length > 0) { + args[0] = `${namespace} ${args[0]}`; + } + newDebugger.log(...args); + } + debuggers.push(newDebugger); + return newDebugger; +} +function destroy() { + const index = debuggers.indexOf(this); + if (index >= 0) { + debuggers.splice(index, 1); + return true; + } + return false; +} +function extend(namespace) { + const newDebugger = createDebugger(`${this.namespace}:${namespace}`); + newDebugger.log = this.log; + return newDebugger; +} +var debugEnvVariable, enabledString, enabledNamespaces, skippedNamespaces, debuggers, debugObj, debug_default; +var init_debug = __esm({ + "node_modules/@typespec/ts-http-runtime/dist/esm/logger/debug.js"() { + init_log(); + debugEnvVariable = typeof process !== "undefined" && process.env && process.env.DEBUG || void 0; + enabledNamespaces = []; + skippedNamespaces = []; + debuggers = []; + if (debugEnvVariable) { + enable(debugEnvVariable); + } + debugObj = Object.assign((namespace) => { + return createDebugger(namespace); + }, { + enable, + enabled, + disable, + log + }); + debug_default = debugObj; + } +}); + +// node_modules/@typespec/ts-http-runtime/dist/esm/logger/logger.js +function patchLogMethod(parent, child) { + child.log = (...args) => { + parent.log(...args); + }; +} +function isTypeSpecRuntimeLogLevel(level) { + return TYPESPEC_RUNTIME_LOG_LEVELS.includes(level); +} +function createLoggerContext(options) { + const registeredLoggers = /* @__PURE__ */ new Set(); + const logLevelFromEnv = typeof process !== "undefined" && process.env && process.env[options.logLevelEnvVarName] || void 0; + let logLevel; + const clientLogger = debug_default(options.namespace); + clientLogger.log = (...args) => { + debug_default.log(...args); + }; + function contextSetLogLevel(level) { + if (level && !isTypeSpecRuntimeLogLevel(level)) { + throw new Error(`Unknown log level '${level}'. Acceptable values: ${TYPESPEC_RUNTIME_LOG_LEVELS.join(",")}`); + } + logLevel = level; + const enabledNamespaces2 = []; + for (const logger31 of registeredLoggers) { + if (shouldEnable(logger31)) { + enabledNamespaces2.push(logger31.namespace); + } + } + debug_default.enable(enabledNamespaces2.join(",")); + } + if (logLevelFromEnv) { + if (isTypeSpecRuntimeLogLevel(logLevelFromEnv)) { + contextSetLogLevel(logLevelFromEnv); + } else { + console.error(`${options.logLevelEnvVarName} set to unknown log level '${logLevelFromEnv}'; logging is not enabled. Acceptable values: ${TYPESPEC_RUNTIME_LOG_LEVELS.join(", ")}.`); + } + } + function shouldEnable(logger31) { + return Boolean(logLevel && levelMap[logger31.level] <= levelMap[logLevel]); + } + function createLogger(parent, level) { + const logger31 = Object.assign(parent.extend(level), { + level + }); + patchLogMethod(parent, logger31); + if (shouldEnable(logger31)) { + const enabledNamespaces2 = debug_default.disable(); + debug_default.enable(enabledNamespaces2 + "," + logger31.namespace); + } + registeredLoggers.add(logger31); + return logger31; + } + function contextGetLogLevel() { + return logLevel; + } + function contextCreateClientLogger(namespace) { + const clientRootLogger = clientLogger.extend(namespace); + patchLogMethod(clientLogger, clientRootLogger); + return { + error: createLogger(clientRootLogger, "error"), + warning: createLogger(clientRootLogger, "warning"), + info: createLogger(clientRootLogger, "info"), + verbose: createLogger(clientRootLogger, "verbose") + }; + } + return { + setLogLevel: contextSetLogLevel, + getLogLevel: contextGetLogLevel, + createClientLogger: contextCreateClientLogger, + logger: clientLogger + }; +} +function createClientLogger(namespace) { + return context.createClientLogger(namespace); +} +var TYPESPEC_RUNTIME_LOG_LEVELS, levelMap, context, TypeSpecRuntimeLogger; +var init_logger = __esm({ + "node_modules/@typespec/ts-http-runtime/dist/esm/logger/logger.js"() { + init_debug(); + TYPESPEC_RUNTIME_LOG_LEVELS = ["verbose", "info", "warning", "error"]; + levelMap = { + verbose: 400, + info: 300, + warning: 200, + error: 100 + }; + context = createLoggerContext({ + logLevelEnvVarName: "TYPESPEC_RUNTIME_LOG_LEVEL", + namespace: "typeSpecRuntime" + }); + TypeSpecRuntimeLogger = context.logger; + } +}); + +// node_modules/@typespec/ts-http-runtime/dist/esm/logger/internal.js +var init_internal = __esm({ + "node_modules/@typespec/ts-http-runtime/dist/esm/logger/internal.js"() { + init_logger(); + } +}); + +// node_modules/@azure/logger/dist/esm/index.js +function getLogLevel() { + return context2.getLogLevel(); +} +function createClientLogger2(namespace) { + return context2.createClientLogger(namespace); +} +var context2, AzureLogger; +var init_esm = __esm({ + "node_modules/@azure/logger/dist/esm/index.js"() { + init_internal(); + context2 = createLoggerContext({ + logLevelEnvVarName: "AZURE_LOG_LEVEL", + namespace: "azure" + }); + AzureLogger = context2.logger; + } +}); + +// node_modules/@azure/identity/dist/esm/util/logging.js +function processEnvVars(supportedEnvVars) { + return supportedEnvVars.reduce((acc, envVariable) => { + if (process.env[envVariable]) { + acc.assigned.push(envVariable); + } else { + acc.missing.push(envVariable); + } + return acc; + }, { missing: [], assigned: [] }); +} +function formatSuccess(scope) { + return `SUCCESS. Scopes: ${Array.isArray(scope) ? scope.join(", ") : scope}.`; +} +function formatError(scope, error2) { + let message = "ERROR."; + if (scope?.length) { + message += ` Scopes: ${Array.isArray(scope) ? scope.join(", ") : scope}.`; + } + return `${message} Error message: ${typeof error2 === "string" ? error2 : error2.message}.`; +} +function credentialLoggerInstance(title, parent, log2 = logger2) { + const fullTitle = parent ? `${parent.fullTitle} ${title}` : title; + function info(message) { + log2.info(`${fullTitle} =>`, message); + } + function warning(message) { + log2.warning(`${fullTitle} =>`, message); + } + function verbose(message) { + log2.verbose(`${fullTitle} =>`, message); + } + function error2(message) { + log2.error(`${fullTitle} =>`, message); + } + return { + title, + fullTitle, + info, + warning, + verbose, + error: error2 + }; +} +function credentialLogger(title, log2 = logger2) { + const credLogger = credentialLoggerInstance(title, void 0, log2); + return { + ...credLogger, + parent: log2, + getToken: credentialLoggerInstance("=> getToken()", credLogger, log2) + }; +} +var logger2; +var init_logging = __esm({ + "node_modules/@azure/identity/dist/esm/util/logging.js"() { + init_esm(); + logger2 = createClientLogger2("identity"); + } +}); + +// node_modules/@azure/core-tracing/dist/esm/tracingContext.js +function createTracingContext(options = {}) { + let context3 = new TracingContextImpl(options.parentContext); + if (options.span) { + context3 = context3.setValue(knownContextKeys.span, options.span); + } + if (options.namespace) { + context3 = context3.setValue(knownContextKeys.namespace, options.namespace); + } + return context3; +} +var knownContextKeys, TracingContextImpl; +var init_tracingContext = __esm({ + "node_modules/@azure/core-tracing/dist/esm/tracingContext.js"() { + knownContextKeys = { + span: /* @__PURE__ */ Symbol.for("@azure/core-tracing span"), + namespace: /* @__PURE__ */ Symbol.for("@azure/core-tracing namespace") + }; + TracingContextImpl = class _TracingContextImpl { + _contextMap; + constructor(initialContext) { + this._contextMap = initialContext instanceof _TracingContextImpl ? new Map(initialContext._contextMap) : /* @__PURE__ */ new Map(); + } + setValue(key, value) { + const newContext = new _TracingContextImpl(this); + newContext._contextMap.set(key, value); + return newContext; + } + getValue(key) { + return this._contextMap.get(key); + } + deleteValue(key) { + const newContext = new _TracingContextImpl(this); + newContext._contextMap.delete(key); + return newContext; + } + }; + } +}); + +// node_modules/@azure/core-tracing/dist/commonjs/state.js +var require_state2 = __commonJS({ + "node_modules/@azure/core-tracing/dist/commonjs/state.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { value: true }); + exports2.state = void 0; + exports2.state = { + instrumenterImplementation: void 0 + }; + } +}); + +// node_modules/@azure/core-tracing/dist/esm/state.js +var import_state, state; +var init_state = __esm({ + "node_modules/@azure/core-tracing/dist/esm/state.js"() { + import_state = __toESM(require_state2(), 1); + state = import_state.state; + } +}); + +// node_modules/@azure/core-tracing/dist/esm/instrumenter.js +function createDefaultTracingSpan() { + return { + end: () => { + }, + isRecording: () => false, + recordException: () => { + }, + setAttribute: () => { + }, + setStatus: () => { + }, + addEvent: () => { + } + }; +} +function createDefaultInstrumenter() { + return { + createRequestHeaders: () => { + return {}; + }, + parseTraceparentHeader: () => { + return void 0; + }, + startSpan: (_name, spanOptions) => { + return { + span: createDefaultTracingSpan(), + tracingContext: createTracingContext({ parentContext: spanOptions.tracingContext }) + }; + }, + withContext(_context, callback, ...callbackArgs) { + return callback(...callbackArgs); + } + }; +} +function getInstrumenter() { + if (!state.instrumenterImplementation) { + state.instrumenterImplementation = createDefaultInstrumenter(); + } + return state.instrumenterImplementation; +} +var init_instrumenter = __esm({ + "node_modules/@azure/core-tracing/dist/esm/instrumenter.js"() { + init_tracingContext(); + init_state(); + } +}); + +// node_modules/@azure/core-tracing/dist/esm/tracingClient.js +function createTracingClient(options) { + const { namespace, packageName, packageVersion } = options; + function startSpan(name5, operationOptions, spanOptions) { + const startSpanResult = getInstrumenter().startSpan(name5, { + ...spanOptions, + packageName, + packageVersion, + tracingContext: operationOptions?.tracingOptions?.tracingContext + }); + let tracingContext = startSpanResult.tracingContext; + const span = startSpanResult.span; + if (!tracingContext.getValue(knownContextKeys.namespace)) { + tracingContext = tracingContext.setValue(knownContextKeys.namespace, namespace); + } + span.setAttribute("az.namespace", tracingContext.getValue(knownContextKeys.namespace)); + const updatedOptions = Object.assign({}, operationOptions, { + tracingOptions: { ...operationOptions?.tracingOptions, tracingContext } + }); + return { + span, + updatedOptions + }; + } + async function withSpan(name5, operationOptions, callback, spanOptions) { + const { span, updatedOptions } = startSpan(name5, operationOptions, spanOptions); + try { + const result = await withContext(updatedOptions.tracingOptions.tracingContext, () => Promise.resolve(callback(updatedOptions, span))); + span.setStatus({ status: "success" }); + return result; + } catch (err) { + span.setStatus({ status: "error", error: err }); + throw err; + } finally { + span.end(); + } + } + function withContext(context3, callback, ...callbackArgs) { + return getInstrumenter().withContext(context3, callback, ...callbackArgs); + } + function parseTraceparentHeader(traceparentHeader) { + return getInstrumenter().parseTraceparentHeader(traceparentHeader); + } + function createRequestHeaders(tracingContext) { + return getInstrumenter().createRequestHeaders(tracingContext); + } + return { + startSpan, + withSpan, + withContext, + parseTraceparentHeader, + createRequestHeaders + }; +} +var init_tracingClient = __esm({ + "node_modules/@azure/core-tracing/dist/esm/tracingClient.js"() { + init_instrumenter(); + init_tracingContext(); + } +}); + +// node_modules/@azure/core-tracing/dist/esm/index.js +var init_esm2 = __esm({ + "node_modules/@azure/core-tracing/dist/esm/index.js"() { + init_instrumenter(); + init_tracingClient(); + } +}); + +// node_modules/@azure/identity/dist/esm/util/tracing.js +var tracingClient; +var init_tracing = __esm({ + "node_modules/@azure/identity/dist/esm/util/tracing.js"() { + init_constants(); + init_esm2(); + tracingClient = createTracingClient({ + namespace: "Microsoft.AAD", + packageName: "@azure/identity", + packageVersion: SDK_VERSION + }); + } +}); + +// node_modules/@azure/identity/dist/esm/credentials/chainedTokenCredential.js +var logger3, ChainedTokenCredential; +var init_chainedTokenCredential = __esm({ + "node_modules/@azure/identity/dist/esm/credentials/chainedTokenCredential.js"() { + init_errors(); + init_logging(); + init_tracing(); + logger3 = credentialLogger("ChainedTokenCredential"); + ChainedTokenCredential = class { + _sources = []; + /** + * Creates an instance of ChainedTokenCredential using the given credentials. + * + * @param sources - `TokenCredential` implementations to be tried in order. + * + * Example usage: + * ```ts snippet:chained_token_credential_example + * import { ClientSecretCredential, ChainedTokenCredential } from "@azure/identity"; + * + * const tenantId = ""; + * const clientId = ""; + * const clientSecret = ""; + * const anotherClientId = ""; + * const anotherSecret = ""; + * + * const firstCredential = new ClientSecretCredential(tenantId, clientId, clientSecret); + * const secondCredential = new ClientSecretCredential(tenantId, anotherClientId, anotherSecret); + * + * const credentialChain = new ChainedTokenCredential(firstCredential, secondCredential); + * ``` + */ + constructor(...sources) { + this._sources = sources; + } + /** + * Returns the first access token returned by one of the chained + * `TokenCredential` implementations. Throws an {@link AggregateAuthenticationError} + * when one or more credentials throws an {@link AuthenticationError} and + * no credentials have returned an access token. + * + * This method is called automatically by Azure SDK client libraries. You may call this method + * directly, but you must also handle token caching and token refreshing. + * + * @param scopes - The list of scopes for which the token will have access. + * @param options - The options used to configure any requests this + * `TokenCredential` implementation might make. + */ + async getToken(scopes, options = {}) { + const { token } = await this.getTokenInternal(scopes, options); + return token; + } + async getTokenInternal(scopes, options = {}) { + let token = null; + let successfulCredential; + const errors = []; + return tracingClient.withSpan("ChainedTokenCredential.getToken", options, async (updatedOptions) => { + for (let i = 0; i < this._sources.length && token === null; i++) { + try { + token = await this._sources[i].getToken(scopes, updatedOptions); + successfulCredential = this._sources[i]; + } catch (err) { + if (err.name === "CredentialUnavailableError" || err.name === "AuthenticationRequiredError") { + errors.push(err); + } else { + logger3.getToken.info(formatError(scopes, err)); + throw err; + } + } + } + if (!token && errors.length > 0) { + const err = new AggregateAuthenticationError(errors, "ChainedTokenCredential authentication failed."); + logger3.getToken.info(formatError(scopes, err)); + throw err; + } + logger3.getToken.info(`Result for ${successfulCredential.constructor.name}: ${formatSuccess(scopes)}`); + if (token === null) { + throw new CredentialUnavailableError("Failed to retrieve a valid token"); + } + return { token, successfulCredential }; + }); + } + }; + } +}); + +// node_modules/@azure/identity/node_modules/@azure/msal-node/dist/cache/serializer/Serializer.mjs +var Serializer2; +var init_Serializer = __esm({ + "node_modules/@azure/identity/node_modules/@azure/msal-node/dist/cache/serializer/Serializer.mjs"() { + "use strict"; + Serializer2 = class { + /** + * serialize the JSON blob + * @param data - JSON blob cache + */ + static serializeJSONBlob(data) { + return JSON.stringify(data); + } + /** + * Serialize Accounts + * @param accCache - cache of accounts + */ + static serializeAccounts(accCache) { + const accounts = {}; + Object.keys(accCache).map(function(key) { + const accountEntity = accCache[key]; + accounts[key] = { + home_account_id: accountEntity.homeAccountId, + environment: accountEntity.environment, + realm: accountEntity.realm, + local_account_id: accountEntity.localAccountId, + username: accountEntity.username, + authority_type: accountEntity.authorityType, + name: accountEntity.name, + client_info: accountEntity.clientInfo, + last_modification_time: accountEntity.lastModificationTime, + last_modification_app: accountEntity.lastModificationApp, + tenantProfiles: accountEntity.tenantProfiles?.map((tenantProfile) => { + return JSON.stringify(tenantProfile); + }) + }; + }); + return accounts; + } + /** + * Serialize IdTokens + * @param idTCache - cache of ID tokens + */ + static serializeIdTokens(idTCache) { + const idTokens = {}; + Object.keys(idTCache).map(function(key) { + const idTEntity = idTCache[key]; + idTokens[key] = { + home_account_id: idTEntity.homeAccountId, + environment: idTEntity.environment, + credential_type: idTEntity.credentialType, + client_id: idTEntity.clientId, + secret: idTEntity.secret, + realm: idTEntity.realm + }; + }); + return idTokens; + } + /** + * Serializes AccessTokens + * @param atCache - cache of access tokens + */ + static serializeAccessTokens(atCache) { + const accessTokens = {}; + Object.keys(atCache).map(function(key) { + const atEntity = atCache[key]; + accessTokens[key] = { + home_account_id: atEntity.homeAccountId, + environment: atEntity.environment, + credential_type: atEntity.credentialType, + client_id: atEntity.clientId, + secret: atEntity.secret, + realm: atEntity.realm, + target: atEntity.target, + cached_at: atEntity.cachedAt, + expires_on: atEntity.expiresOn, + extended_expires_on: atEntity.extendedExpiresOn, + refresh_on: atEntity.refreshOn, + key_id: atEntity.keyId, + token_type: atEntity.tokenType, + userAssertionHash: atEntity.userAssertionHash, + resource: atEntity.resource + }; + }); + return accessTokens; + } + /** + * Serialize refreshTokens + * @param rtCache - cache of refresh tokens + */ + static serializeRefreshTokens(rtCache) { + const refreshTokens = {}; + Object.keys(rtCache).map(function(key) { + const rtEntity = rtCache[key]; + refreshTokens[key] = { + home_account_id: rtEntity.homeAccountId, + environment: rtEntity.environment, + credential_type: rtEntity.credentialType, + client_id: rtEntity.clientId, + secret: rtEntity.secret, + family_id: rtEntity.familyId, + target: rtEntity.target, + realm: rtEntity.realm + }; + }); + return refreshTokens; + } + /** + * Serialize amdtCache + * @param amdtCache - cache of app metadata + */ + static serializeAppMetadata(amdtCache) { + const appMetadata = {}; + Object.keys(amdtCache).map(function(key) { + const amdtEntity = amdtCache[key]; + appMetadata[key] = { + client_id: amdtEntity.clientId, + environment: amdtEntity.environment, + family_id: amdtEntity.familyId + }; + }); + return appMetadata; + } + /** + * Serialize the cache + * @param inMemCache - itemised cache read from the JSON + */ + static serializeAllCache(inMemCache) { + return { + Account: this.serializeAccounts(inMemCache.accounts), + IdToken: this.serializeIdTokens(inMemCache.idTokens), + AccessToken: this.serializeAccessTokens(inMemCache.accessTokens), + RefreshToken: this.serializeRefreshTokens(inMemCache.refreshTokens), + AppMetadata: this.serializeAppMetadata(inMemCache.appMetadata) + }; + } + }; + } +}); + +// node_modules/@azure/msal-common/dist/utils/Constants.mjs +var Constants_exports = {}; +__export(Constants_exports, { + AADAuthority: () => AADAuthority, + AAD_INSTANCE_DISCOVERY_ENDPT: () => AAD_INSTANCE_DISCOVERY_ENDPT, + AAD_TENANT_DOMAIN_SUFFIX: () => AAD_TENANT_DOMAIN_SUFFIX, + ADFS: () => ADFS, + APP_METADATA: () => APP_METADATA2, + AUTHORITY_METADATA_CACHE_KEY: () => AUTHORITY_METADATA_CACHE_KEY, + AUTHORITY_METADATA_REFRESH_TIME_SECONDS: () => AUTHORITY_METADATA_REFRESH_TIME_SECONDS, + AUTHORIZATION_PENDING: () => AUTHORIZATION_PENDING, + AZURE_REGION_AUTO_DISCOVER_FLAG: () => AZURE_REGION_AUTO_DISCOVER_FLAG, + AuthenticationScheme: () => AuthenticationScheme2, + AuthorityMetadataSource: () => AuthorityMetadataSource2, + CACHE_ACCOUNT_TYPE_ADFS: () => CACHE_ACCOUNT_TYPE_ADFS, + CACHE_ACCOUNT_TYPE_GENERIC: () => CACHE_ACCOUNT_TYPE_GENERIC, + CACHE_ACCOUNT_TYPE_MSAV1: () => CACHE_ACCOUNT_TYPE_MSAV1, + CACHE_ACCOUNT_TYPE_MSSTS: () => CACHE_ACCOUNT_TYPE_MSSTS, + CACHE_KEY_SEPARATOR: () => CACHE_KEY_SEPARATOR, + CIAM_AUTH_URL: () => CIAM_AUTH_URL, + CLIENT_INFO: () => CLIENT_INFO3, + CLIENT_INFO_SEPARATOR: () => CLIENT_INFO_SEPARATOR, + CLIENT_MISMATCH_ERROR: () => CLIENT_MISMATCH_ERROR, + CODE_GRANT_TYPE: () => CODE_GRANT_TYPE, + CONSUMER_UTID: () => CONSUMER_UTID, + CacheOutcome: () => CacheOutcome2, + CacheType: () => CacheType2, + ClaimsRequestKeys: () => ClaimsRequestKeys2, + CodeChallengeMethodValues: () => CodeChallengeMethodValues2, + CredentialType: () => CredentialType2, + DEFAULT_AUTHORITY: () => DEFAULT_AUTHORITY, + DEFAULT_AUTHORITY_HOST: () => DEFAULT_AUTHORITY_HOST, + DEFAULT_COMMON_TENANT: () => DEFAULT_COMMON_TENANT, + DEFAULT_MAX_THROTTLE_TIME_SECONDS: () => DEFAULT_MAX_THROTTLE_TIME_SECONDS, + DEFAULT_THROTTLE_TIME_SECONDS: () => DEFAULT_THROTTLE_TIME_SECONDS, + DEFAULT_TOKEN_RENEWAL_OFFSET_SEC: () => DEFAULT_TOKEN_RENEWAL_OFFSET_SEC2, + DSTS: () => DSTS, + EMAIL_SCOPE: () => EMAIL_SCOPE, + EncodingTypes: () => EncodingTypes2, + FORWARD_SLASH: () => FORWARD_SLASH, + GrantType: () => GrantType2, + HTTP_BAD_REQUEST: () => HTTP_BAD_REQUEST, + HTTP_CLIENT_ERROR: () => HTTP_CLIENT_ERROR, + HTTP_CLIENT_ERROR_RANGE_END: () => HTTP_CLIENT_ERROR_RANGE_END, + HTTP_CLIENT_ERROR_RANGE_START: () => HTTP_CLIENT_ERROR_RANGE_START, + HTTP_GATEWAY_TIMEOUT: () => HTTP_GATEWAY_TIMEOUT, + HTTP_GONE: () => HTTP_GONE, + HTTP_MULTI_SIDED_ERROR: () => HTTP_MULTI_SIDED_ERROR, + HTTP_NOT_FOUND: () => HTTP_NOT_FOUND, + HTTP_REDIRECT: () => HTTP_REDIRECT, + HTTP_REQUEST_TIMEOUT: () => HTTP_REQUEST_TIMEOUT, + HTTP_SERVER_ERROR: () => HTTP_SERVER_ERROR, + HTTP_SERVER_ERROR_RANGE_END: () => HTTP_SERVER_ERROR_RANGE_END, + HTTP_SERVER_ERROR_RANGE_START: () => HTTP_SERVER_ERROR_RANGE_START, + HTTP_SERVICE_UNAVAILABLE: () => HTTP_SERVICE_UNAVAILABLE, + HTTP_SUCCESS: () => HTTP_SUCCESS, + HTTP_SUCCESS_RANGE_END: () => HTTP_SUCCESS_RANGE_END, + HTTP_SUCCESS_RANGE_START: () => HTTP_SUCCESS_RANGE_START, + HTTP_TOO_MANY_REQUESTS: () => HTTP_TOO_MANY_REQUESTS, + HTTP_UNAUTHORIZED: () => HTTP_UNAUTHORIZED, + HeaderNames: () => HeaderNames2, + HttpMethod: () => HttpMethod3, + IMDS_ENDPOINT: () => IMDS_ENDPOINT, + IMDS_TIMEOUT: () => IMDS_TIMEOUT, + IMDS_VERSION: () => IMDS_VERSION, + INVALID_GRANT_ERROR: () => INVALID_GRANT_ERROR, + INVALID_INSTANCE: () => INVALID_INSTANCE, + JsonWebTokenTypes: () => JsonWebTokenTypes2, + KNOWN_PUBLIC_CLOUDS: () => KNOWN_PUBLIC_CLOUDS, + NOT_APPLICABLE: () => NOT_APPLICABLE, + NOT_AVAILABLE: () => NOT_AVAILABLE, + OAuthResponseType: () => OAuthResponseType2, + OFFLINE_ACCESS_SCOPE: () => OFFLINE_ACCESS_SCOPE, + OIDC_DEFAULT_SCOPES: () => OIDC_DEFAULT_SCOPES2, + OIDC_SCOPES: () => OIDC_SCOPES2, + ONE_DAY_IN_MS: () => ONE_DAY_IN_MS2, + OPENID_SCOPE: () => OPENID_SCOPE, + PROFILE_SCOPE: () => PROFILE_SCOPE, + PasswordGrantConstants: () => PasswordGrantConstants2, + PersistentCacheKeys: () => PersistentCacheKeys2, + PromptValue: () => PromptValue2, + REGIONAL_AUTH_PUBLIC_CLOUD_SUFFIX: () => REGIONAL_AUTH_PUBLIC_CLOUD_SUFFIX, + RESOURCE_DELIM: () => RESOURCE_DELIM, + RegionDiscoveryOutcomes: () => RegionDiscoveryOutcomes2, + RegionDiscoverySources: () => RegionDiscoverySources2, + ResponseMode: () => ResponseMode2, + S256_CODE_CHALLENGE_METHOD: () => S256_CODE_CHALLENGE_METHOD, + SERVER_TELEM_CACHE_KEY: () => SERVER_TELEM_CACHE_KEY, + SERVER_TELEM_CATEGORY_SEPARATOR: () => SERVER_TELEM_CATEGORY_SEPARATOR, + SERVER_TELEM_MAX_CACHED_ERRORS: () => SERVER_TELEM_MAX_CACHED_ERRORS, + SERVER_TELEM_MAX_CUR_HEADER_BYTES: () => SERVER_TELEM_MAX_CUR_HEADER_BYTES, + SERVER_TELEM_MAX_LAST_HEADER_BYTES: () => SERVER_TELEM_MAX_LAST_HEADER_BYTES, + SERVER_TELEM_OVERFLOW_FALSE: () => SERVER_TELEM_OVERFLOW_FALSE, + SERVER_TELEM_OVERFLOW_TRUE: () => SERVER_TELEM_OVERFLOW_TRUE, + SERVER_TELEM_SCHEMA_VERSION: () => SERVER_TELEM_SCHEMA_VERSION, + SERVER_TELEM_UNKNOWN_ERROR: () => SERVER_TELEM_UNKNOWN_ERROR, + SERVER_TELEM_VALUE_SEPARATOR: () => SERVER_TELEM_VALUE_SEPARATOR, + SHR_NONCE_VALIDITY: () => SHR_NONCE_VALIDITY, + SKU: () => SKU, + THE_FAMILY_ID: () => THE_FAMILY_ID2, + THROTTLING_PREFIX: () => THROTTLING_PREFIX, + URL_FORM_CONTENT_TYPE: () => URL_FORM_CONTENT_TYPE, + X_MS_LIB_CAPABILITY_VALUE: () => X_MS_LIB_CAPABILITY_VALUE +}); +var SKU, DEFAULT_AUTHORITY, DEFAULT_AUTHORITY_HOST, DEFAULT_COMMON_TENANT, ADFS, DSTS, AAD_INSTANCE_DISCOVERY_ENDPT, CIAM_AUTH_URL, AAD_TENANT_DOMAIN_SUFFIX, RESOURCE_DELIM, CONSUMER_UTID, OPENID_SCOPE, PROFILE_SCOPE, OFFLINE_ACCESS_SCOPE, EMAIL_SCOPE, CODE_GRANT_TYPE, S256_CODE_CHALLENGE_METHOD, URL_FORM_CONTENT_TYPE, AUTHORIZATION_PENDING, NOT_APPLICABLE, NOT_AVAILABLE, FORWARD_SLASH, IMDS_ENDPOINT, IMDS_VERSION, IMDS_TIMEOUT, AZURE_REGION_AUTO_DISCOVER_FLAG, REGIONAL_AUTH_PUBLIC_CLOUD_SUFFIX, KNOWN_PUBLIC_CLOUDS, SHR_NONCE_VALIDITY, INVALID_INSTANCE, HTTP_SUCCESS, HTTP_SUCCESS_RANGE_START, HTTP_SUCCESS_RANGE_END, HTTP_REDIRECT, HTTP_CLIENT_ERROR, HTTP_CLIENT_ERROR_RANGE_START, HTTP_BAD_REQUEST, HTTP_UNAUTHORIZED, HTTP_NOT_FOUND, HTTP_REQUEST_TIMEOUT, HTTP_GONE, HTTP_TOO_MANY_REQUESTS, HTTP_CLIENT_ERROR_RANGE_END, HTTP_SERVER_ERROR, HTTP_SERVER_ERROR_RANGE_START, HTTP_SERVICE_UNAVAILABLE, HTTP_GATEWAY_TIMEOUT, HTTP_SERVER_ERROR_RANGE_END, HTTP_MULTI_SIDED_ERROR, HttpMethod3, OIDC_DEFAULT_SCOPES2, OIDC_SCOPES2, HeaderNames2, PersistentCacheKeys2, AADAuthority, ClaimsRequestKeys2, PromptValue2, CodeChallengeMethodValues2, OAuthResponseType2, ResponseMode2, GrantType2, CACHE_ACCOUNT_TYPE_MSSTS, CACHE_ACCOUNT_TYPE_ADFS, CACHE_ACCOUNT_TYPE_MSAV1, CACHE_ACCOUNT_TYPE_GENERIC, CACHE_KEY_SEPARATOR, CLIENT_INFO_SEPARATOR, CredentialType2, CacheType2, APP_METADATA2, CLIENT_INFO3, THE_FAMILY_ID2, AUTHORITY_METADATA_CACHE_KEY, AUTHORITY_METADATA_REFRESH_TIME_SECONDS, AuthorityMetadataSource2, SERVER_TELEM_SCHEMA_VERSION, SERVER_TELEM_MAX_CUR_HEADER_BYTES, SERVER_TELEM_MAX_LAST_HEADER_BYTES, SERVER_TELEM_MAX_CACHED_ERRORS, SERVER_TELEM_CACHE_KEY, SERVER_TELEM_CATEGORY_SEPARATOR, SERVER_TELEM_VALUE_SEPARATOR, SERVER_TELEM_OVERFLOW_TRUE, SERVER_TELEM_OVERFLOW_FALSE, SERVER_TELEM_UNKNOWN_ERROR, AuthenticationScheme2, DEFAULT_THROTTLE_TIME_SECONDS, DEFAULT_MAX_THROTTLE_TIME_SECONDS, THROTTLING_PREFIX, X_MS_LIB_CAPABILITY_VALUE, INVALID_GRANT_ERROR, CLIENT_MISMATCH_ERROR, PasswordGrantConstants2, RegionDiscoverySources2, RegionDiscoveryOutcomes2, CacheOutcome2, JsonWebTokenTypes2, ONE_DAY_IN_MS2, DEFAULT_TOKEN_RENEWAL_OFFSET_SEC2, EncodingTypes2; +var init_Constants = __esm({ + "node_modules/@azure/msal-common/dist/utils/Constants.mjs"() { + "use strict"; + SKU = "msal.js.common"; + DEFAULT_AUTHORITY = "https://login.microsoftonline.com/common/"; + DEFAULT_AUTHORITY_HOST = "login.microsoftonline.com"; + DEFAULT_COMMON_TENANT = "common"; + ADFS = "adfs"; + DSTS = "dstsv2"; + AAD_INSTANCE_DISCOVERY_ENDPT = `${DEFAULT_AUTHORITY}discovery/instance?api-version=1.1&authorization_endpoint=`; + CIAM_AUTH_URL = ".ciamlogin.com"; + AAD_TENANT_DOMAIN_SUFFIX = ".onmicrosoft.com"; + RESOURCE_DELIM = "|"; + CONSUMER_UTID = "9188040d-6c67-4c5b-b112-36a304b66dad"; + OPENID_SCOPE = "openid"; + PROFILE_SCOPE = "profile"; + OFFLINE_ACCESS_SCOPE = "offline_access"; + EMAIL_SCOPE = "email"; + CODE_GRANT_TYPE = "authorization_code"; + S256_CODE_CHALLENGE_METHOD = "S256"; + URL_FORM_CONTENT_TYPE = "application/x-www-form-urlencoded;charset=utf-8"; + AUTHORIZATION_PENDING = "authorization_pending"; + NOT_APPLICABLE = "N/A"; + NOT_AVAILABLE = "Not Available"; + FORWARD_SLASH = "/"; + IMDS_ENDPOINT = "http://169.254.169.254/metadata/instance/compute/location"; + IMDS_VERSION = "2020-06-01"; + IMDS_TIMEOUT = 2e3; + AZURE_REGION_AUTO_DISCOVER_FLAG = "TryAutoDetect"; + REGIONAL_AUTH_PUBLIC_CLOUD_SUFFIX = "login.microsoft.com"; + KNOWN_PUBLIC_CLOUDS = [ + "login.microsoftonline.com", + "login.windows.net", + "login.microsoft.com", + "sts.windows.net" + ]; + SHR_NONCE_VALIDITY = 240; + INVALID_INSTANCE = "invalid_instance"; + HTTP_SUCCESS = 200; + HTTP_SUCCESS_RANGE_START = 200; + HTTP_SUCCESS_RANGE_END = 299; + HTTP_REDIRECT = 302; + HTTP_CLIENT_ERROR = 400; + HTTP_CLIENT_ERROR_RANGE_START = 400; + HTTP_BAD_REQUEST = 400; + HTTP_UNAUTHORIZED = 401; + HTTP_NOT_FOUND = 404; + HTTP_REQUEST_TIMEOUT = 408; + HTTP_GONE = 410; + HTTP_TOO_MANY_REQUESTS = 429; + HTTP_CLIENT_ERROR_RANGE_END = 499; + HTTP_SERVER_ERROR = 500; + HTTP_SERVER_ERROR_RANGE_START = 500; + HTTP_SERVICE_UNAVAILABLE = 503; + HTTP_GATEWAY_TIMEOUT = 504; + HTTP_SERVER_ERROR_RANGE_END = 599; + HTTP_MULTI_SIDED_ERROR = 600; + HttpMethod3 = { + GET: "GET", + POST: "POST" + }; + OIDC_DEFAULT_SCOPES2 = [ + OPENID_SCOPE, + PROFILE_SCOPE, + OFFLINE_ACCESS_SCOPE + ]; + OIDC_SCOPES2 = [...OIDC_DEFAULT_SCOPES2, EMAIL_SCOPE]; + HeaderNames2 = { + CONTENT_TYPE: "Content-Type", + CONTENT_LENGTH: "Content-Length", + RETRY_AFTER: "Retry-After", + CCS_HEADER: "X-AnchorMailbox", + WWWAuthenticate: "WWW-Authenticate", + AuthenticationInfo: "Authentication-Info", + X_MS_REQUEST_ID: "x-ms-request-id", + X_MS_HTTP_VERSION: "x-ms-httpver" + }; + PersistentCacheKeys2 = { + ACTIVE_ACCOUNT_FILTERS: "active-account-filters" + // new cache entry for active_account for a more robust version for browser + }; + AADAuthority = { + COMMON: "common", + ORGANIZATIONS: "organizations", + CONSUMERS: "consumers" + }; + ClaimsRequestKeys2 = { + ACCESS_TOKEN: "access_token", + XMS_CC: "xms_cc" + }; + PromptValue2 = { + LOGIN: "login", + SELECT_ACCOUNT: "select_account", + CONSENT: "consent", + NONE: "none", + CREATE: "create", + NO_SESSION: "no_session" + }; + CodeChallengeMethodValues2 = { + PLAIN: "plain", + S256: "S256" + }; + OAuthResponseType2 = { + CODE: "code", + IDTOKEN_TOKEN: "id_token token", + IDTOKEN_TOKEN_REFRESHTOKEN: "id_token token refresh_token" + }; + ResponseMode2 = { + QUERY: "query", + FRAGMENT: "fragment", + FORM_POST: "form_post" + }; + GrantType2 = { + IMPLICIT_GRANT: "implicit", + AUTHORIZATION_CODE_GRANT: "authorization_code", + CLIENT_CREDENTIALS_GRANT: "client_credentials", + RESOURCE_OWNER_PASSWORD_GRANT: "password", + REFRESH_TOKEN_GRANT: "refresh_token", + DEVICE_CODE_GRANT: "device_code", + JWT_BEARER: "urn:ietf:params:oauth:grant-type:jwt-bearer" + }; + CACHE_ACCOUNT_TYPE_MSSTS = "MSSTS"; + CACHE_ACCOUNT_TYPE_ADFS = "ADFS"; + CACHE_ACCOUNT_TYPE_MSAV1 = "MSA"; + CACHE_ACCOUNT_TYPE_GENERIC = "Generic"; + CACHE_KEY_SEPARATOR = "-"; + CLIENT_INFO_SEPARATOR = "."; + CredentialType2 = { + ID_TOKEN: "IdToken", + ACCESS_TOKEN: "AccessToken", + ACCESS_TOKEN_WITH_AUTH_SCHEME: "AccessToken_With_AuthScheme", + REFRESH_TOKEN: "RefreshToken" + }; + CacheType2 = { + ADFS: 1001, + MSA: 1002, + MSSTS: 1003, + GENERIC: 1004, + ACCESS_TOKEN: 2001, + REFRESH_TOKEN: 2002, + ID_TOKEN: 2003, + APP_METADATA: 3001, + UNDEFINED: 9999 + }; + APP_METADATA2 = "appmetadata"; + CLIENT_INFO3 = "client_info"; + THE_FAMILY_ID2 = "1"; + AUTHORITY_METADATA_CACHE_KEY = "authority-metadata"; + AUTHORITY_METADATA_REFRESH_TIME_SECONDS = 3600 * 24; + AuthorityMetadataSource2 = { + CONFIG: "config", + CACHE: "cache", + NETWORK: "network", + HARDCODED_VALUES: "hardcoded_values" + }; + SERVER_TELEM_SCHEMA_VERSION = 5; + SERVER_TELEM_MAX_CUR_HEADER_BYTES = 80; + SERVER_TELEM_MAX_LAST_HEADER_BYTES = 330; + SERVER_TELEM_MAX_CACHED_ERRORS = 50; + SERVER_TELEM_CACHE_KEY = "server-telemetry"; + SERVER_TELEM_CATEGORY_SEPARATOR = "|"; + SERVER_TELEM_VALUE_SEPARATOR = ","; + SERVER_TELEM_OVERFLOW_TRUE = "1"; + SERVER_TELEM_OVERFLOW_FALSE = "0"; + SERVER_TELEM_UNKNOWN_ERROR = "unknown_error"; + AuthenticationScheme2 = { + BEARER: "Bearer", + POP: "pop", + SSH: "ssh-cert" + }; + DEFAULT_THROTTLE_TIME_SECONDS = 60; + DEFAULT_MAX_THROTTLE_TIME_SECONDS = 3600; + THROTTLING_PREFIX = "throttling"; + X_MS_LIB_CAPABILITY_VALUE = "retry-after, h429"; + INVALID_GRANT_ERROR = "invalid_grant"; + CLIENT_MISMATCH_ERROR = "client_mismatch"; + PasswordGrantConstants2 = { + username: "username", + password: "password" + }; + RegionDiscoverySources2 = { + FAILED_AUTO_DETECTION: "1", + INTERNAL_CACHE: "2", + ENVIRONMENT_VARIABLE: "3", + IMDS: "4" + }; + RegionDiscoveryOutcomes2 = { + CONFIGURED_MATCHES_DETECTED: "1", + CONFIGURED_NO_AUTO_DETECTION: "2", + CONFIGURED_NOT_DETECTED: "3", + AUTO_DETECTION_REQUESTED_SUCCESSFUL: "4", + AUTO_DETECTION_REQUESTED_FAILED: "5" + }; + CacheOutcome2 = { + // When a token is found in the cache or the cache is not supposed to be hit when making the request + NOT_APPLICABLE: "0", + // When the token request goes to the identity provider because force_refresh was set to true. Also occurs if claims were requested + FORCE_REFRESH_OR_CLAIMS: "1", + // When the token request goes to the identity provider because no cached access token exists + NO_CACHED_ACCESS_TOKEN: "2", + // When the token request goes to the identity provider because cached access token expired + CACHED_ACCESS_TOKEN_EXPIRED: "3", + // When the token request goes to the identity provider because refresh_in was used and the existing token needs to be refreshed + PROACTIVELY_REFRESHED: "4" + }; + JsonWebTokenTypes2 = { + Jwt: "JWT", + Jwk: "JWK", + Pop: "pop" + }; + ONE_DAY_IN_MS2 = 864e5; + DEFAULT_TOKEN_RENEWAL_OFFSET_SEC2 = 300; + EncodingTypes2 = { + BASE64: "base64", + HEX: "hex", + UTF8: "utf-8" + }; + } +}); + +// node_modules/@azure/msal-common/dist/constants/AADServerParamKeys.mjs +var AADServerParamKeys_exports2 = {}; +__export(AADServerParamKeys_exports2, { + ACCESS_TOKEN: () => ACCESS_TOKEN2, + BROKER_CLIENT_ID: () => BROKER_CLIENT_ID2, + BROKER_REDIRECT_URI: () => BROKER_REDIRECT_URI2, + CCS_HEADER: () => CCS_HEADER2, + CLAIMS: () => CLAIMS2, + CLIENT_ASSERTION: () => CLIENT_ASSERTION2, + CLIENT_ASSERTION_TYPE: () => CLIENT_ASSERTION_TYPE2, + CLIENT_ID: () => CLIENT_ID2, + CLIENT_INFO: () => CLIENT_INFO4, + CLIENT_REQUEST_ID: () => CLIENT_REQUEST_ID2, + CLIENT_SECRET: () => CLIENT_SECRET2, + CLI_DATA: () => CLI_DATA2, + CODE: () => CODE2, + CODE_CHALLENGE: () => CODE_CHALLENGE2, + CODE_CHALLENGE_METHOD: () => CODE_CHALLENGE_METHOD2, + CODE_VERIFIER: () => CODE_VERIFIER2, + DEVICE_CODE: () => DEVICE_CODE2, + DOMAIN_HINT: () => DOMAIN_HINT2, + EAR_JWE_CRYPTO: () => EAR_JWE_CRYPTO2, + EAR_JWK: () => EAR_JWK2, + ERROR: () => ERROR2, + ERROR_DESCRIPTION: () => ERROR_DESCRIPTION2, + EXPIRES_IN: () => EXPIRES_IN2, + FOCI: () => FOCI2, + GRANT_TYPE: () => GRANT_TYPE2, + ID_TOKEN: () => ID_TOKEN2, + ID_TOKEN_HINT: () => ID_TOKEN_HINT2, + INSTANCE_AWARE: () => INSTANCE_AWARE2, + LOGIN_HINT: () => LOGIN_HINT2, + LOGOUT_HINT: () => LOGOUT_HINT2, + NATIVE_BROKER: () => NATIVE_BROKER2, + NONCE: () => NONCE2, + OBO_ASSERTION: () => OBO_ASSERTION2, + ON_BEHALF_OF: () => ON_BEHALF_OF2, + POST_LOGOUT_URI: () => POST_LOGOUT_URI2, + PROMPT: () => PROMPT2, + REDIRECT_URI: () => REDIRECT_URI2, + REFRESH_TOKEN: () => REFRESH_TOKEN2, + REFRESH_TOKEN_EXPIRES_IN: () => REFRESH_TOKEN_EXPIRES_IN2, + REQUESTED_TOKEN_USE: () => REQUESTED_TOKEN_USE2, + REQ_CNF: () => REQ_CNF2, + RESOURCE: () => RESOURCE, + RESPONSE_MODE: () => RESPONSE_MODE2, + RESPONSE_TYPE: () => RESPONSE_TYPE2, + RETURN_SPA_CODE: () => RETURN_SPA_CODE2, + SCOPE: () => SCOPE2, + SESSION_STATE: () => SESSION_STATE2, + SID: () => SID2, + STATE: () => STATE2, + TOKEN_TYPE: () => TOKEN_TYPE2, + X_APP_NAME: () => X_APP_NAME2, + X_APP_VER: () => X_APP_VER2, + X_CLIENT_CPU: () => X_CLIENT_CPU2, + X_CLIENT_CURR_TELEM: () => X_CLIENT_CURR_TELEM2, + X_CLIENT_EXTRA_SKU: () => X_CLIENT_EXTRA_SKU2, + X_CLIENT_LAST_TELEM: () => X_CLIENT_LAST_TELEM2, + X_CLIENT_OS: () => X_CLIENT_OS2, + X_CLIENT_SKU: () => X_CLIENT_SKU2, + X_CLIENT_VER: () => X_CLIENT_VER2, + X_MS_LIB_CAPABILITY: () => X_MS_LIB_CAPABILITY2 +}); +var CLIENT_ID2, REDIRECT_URI2, RESPONSE_TYPE2, RESPONSE_MODE2, GRANT_TYPE2, CLAIMS2, SCOPE2, ERROR2, ERROR_DESCRIPTION2, ACCESS_TOKEN2, ID_TOKEN2, REFRESH_TOKEN2, EXPIRES_IN2, REFRESH_TOKEN_EXPIRES_IN2, STATE2, NONCE2, PROMPT2, SESSION_STATE2, CLIENT_INFO4, CODE2, CODE_CHALLENGE2, CODE_CHALLENGE_METHOD2, CODE_VERIFIER2, CLIENT_REQUEST_ID2, X_CLIENT_SKU2, X_CLIENT_VER2, X_CLIENT_OS2, X_CLIENT_CPU2, X_CLIENT_CURR_TELEM2, X_CLIENT_LAST_TELEM2, X_MS_LIB_CAPABILITY2, X_APP_NAME2, X_APP_VER2, POST_LOGOUT_URI2, ID_TOKEN_HINT2, DEVICE_CODE2, CLIENT_SECRET2, CLIENT_ASSERTION2, CLIENT_ASSERTION_TYPE2, TOKEN_TYPE2, REQ_CNF2, OBO_ASSERTION2, REQUESTED_TOKEN_USE2, ON_BEHALF_OF2, FOCI2, CCS_HEADER2, RETURN_SPA_CODE2, NATIVE_BROKER2, LOGOUT_HINT2, SID2, LOGIN_HINT2, DOMAIN_HINT2, X_CLIENT_EXTRA_SKU2, BROKER_CLIENT_ID2, BROKER_REDIRECT_URI2, INSTANCE_AWARE2, EAR_JWK2, EAR_JWE_CRYPTO2, RESOURCE, CLI_DATA2; +var init_AADServerParamKeys = __esm({ + "node_modules/@azure/msal-common/dist/constants/AADServerParamKeys.mjs"() { + "use strict"; + CLIENT_ID2 = "client_id"; + REDIRECT_URI2 = "redirect_uri"; + RESPONSE_TYPE2 = "response_type"; + RESPONSE_MODE2 = "response_mode"; + GRANT_TYPE2 = "grant_type"; + CLAIMS2 = "claims"; + SCOPE2 = "scope"; + ERROR2 = "error"; + ERROR_DESCRIPTION2 = "error_description"; + ACCESS_TOKEN2 = "access_token"; + ID_TOKEN2 = "id_token"; + REFRESH_TOKEN2 = "refresh_token"; + EXPIRES_IN2 = "expires_in"; + REFRESH_TOKEN_EXPIRES_IN2 = "refresh_token_expires_in"; + STATE2 = "state"; + NONCE2 = "nonce"; + PROMPT2 = "prompt"; + SESSION_STATE2 = "session_state"; + CLIENT_INFO4 = "client_info"; + CODE2 = "code"; + CODE_CHALLENGE2 = "code_challenge"; + CODE_CHALLENGE_METHOD2 = "code_challenge_method"; + CODE_VERIFIER2 = "code_verifier"; + CLIENT_REQUEST_ID2 = "client-request-id"; + X_CLIENT_SKU2 = "x-client-SKU"; + X_CLIENT_VER2 = "x-client-VER"; + X_CLIENT_OS2 = "x-client-OS"; + X_CLIENT_CPU2 = "x-client-CPU"; + X_CLIENT_CURR_TELEM2 = "x-client-current-telemetry"; + X_CLIENT_LAST_TELEM2 = "x-client-last-telemetry"; + X_MS_LIB_CAPABILITY2 = "x-ms-lib-capability"; + X_APP_NAME2 = "x-app-name"; + X_APP_VER2 = "x-app-ver"; + POST_LOGOUT_URI2 = "post_logout_redirect_uri"; + ID_TOKEN_HINT2 = "id_token_hint"; + DEVICE_CODE2 = "device_code"; + CLIENT_SECRET2 = "client_secret"; + CLIENT_ASSERTION2 = "client_assertion"; + CLIENT_ASSERTION_TYPE2 = "client_assertion_type"; + TOKEN_TYPE2 = "token_type"; + REQ_CNF2 = "req_cnf"; + OBO_ASSERTION2 = "assertion"; + REQUESTED_TOKEN_USE2 = "requested_token_use"; + ON_BEHALF_OF2 = "on_behalf_of"; + FOCI2 = "foci"; + CCS_HEADER2 = "X-AnchorMailbox"; + RETURN_SPA_CODE2 = "return_spa_code"; + NATIVE_BROKER2 = "nativebroker"; + LOGOUT_HINT2 = "logout_hint"; + SID2 = "sid"; + LOGIN_HINT2 = "login_hint"; + DOMAIN_HINT2 = "domain_hint"; + X_CLIENT_EXTRA_SKU2 = "x-client-xtra-sku"; + BROKER_CLIENT_ID2 = "brk_client_id"; + BROKER_REDIRECT_URI2 = "brk_redirect_uri"; + INSTANCE_AWARE2 = "instance_aware"; + EAR_JWK2 = "ear_jwk"; + EAR_JWE_CRYPTO2 = "ear_jwe_crypto"; + RESOURCE = "resource"; + CLI_DATA2 = "clidata"; + } +}); + +// node_modules/@azure/msal-common/dist/error/AuthError.mjs +function getDefaultErrorMessage(code) { + return `See https://aka.ms/msal.js.errors#${code} for details`; +} +function createAuthError2(code, additionalMessage) { + return new AuthError2(code, additionalMessage || getDefaultErrorMessage(code)); +} +var AuthError2; +var init_AuthError = __esm({ + "node_modules/@azure/msal-common/dist/error/AuthError.mjs"() { + "use strict"; + AuthError2 = class _AuthError extends Error { + constructor(errorCode, errorMessage, suberror) { + const message = errorMessage || (errorCode ? getDefaultErrorMessage(errorCode) : ""); + const errorString = message ? `${errorCode}: ${message}` : errorCode; + super(errorString); + Object.setPrototypeOf(this, _AuthError.prototype); + this.errorCode = errorCode || ""; + this.errorMessage = message || ""; + this.subError = suberror || ""; + this.name = "AuthError"; + } + setCorrelationId(correlationId) { + this.correlationId = correlationId; + } + }; + } +}); + +// node_modules/@azure/msal-common/dist/error/ClientConfigurationError.mjs +function createClientConfigurationError2(errorCode) { + return new ClientConfigurationError2(errorCode); +} +var ClientConfigurationError2; +var init_ClientConfigurationError = __esm({ + "node_modules/@azure/msal-common/dist/error/ClientConfigurationError.mjs"() { + "use strict"; + init_AuthError(); + ClientConfigurationError2 = class _ClientConfigurationError extends AuthError2 { + constructor(errorCode) { + super(errorCode); + this.name = "ClientConfigurationError"; + Object.setPrototypeOf(this, _ClientConfigurationError.prototype); + } + }; + } +}); + +// node_modules/@azure/msal-common/dist/utils/StringUtils.mjs +var StringUtils2; +var init_StringUtils = __esm({ + "node_modules/@azure/msal-common/dist/utils/StringUtils.mjs"() { + "use strict"; + StringUtils2 = class { + /** + * Check if stringified object is empty + * @param strObj + */ + static isEmptyObj(strObj) { + if (strObj) { + try { + const obj = JSON.parse(strObj); + return Object.keys(obj).length === 0; + } catch (e) { + } + } + return true; + } + static startsWith(str, search) { + return str.indexOf(search) === 0; + } + static endsWith(str, search) { + return str.length >= search.length && str.lastIndexOf(search) === str.length - search.length; + } + /** + * Parses string into an object. + * + * @param query + */ + static queryStringToObject(query) { + const obj = {}; + const params = query.split("&"); + const decode = (s) => decodeURIComponent(s.replace(/\+/g, " ")); + params.forEach((pair) => { + if (pair.trim()) { + const [key, value] = pair.split(/=(.+)/g, 2); + if (key && value) { + obj[decode(key)] = decode(value); + } + } + }); + return obj; + } + /** + * Trims entries in an array. + * + * @param arr + */ + static trimArrayEntries(arr) { + return arr.map((entry) => entry.trim()); + } + /** + * Removes empty strings from array + * @param arr + */ + static removeEmptyStringsFromArray(arr) { + return arr.filter((entry) => { + return !!entry; + }); + } + /** + * Attempts to parse a string into JSON + * @param str + */ + static jsonParseHelper(str) { + try { + return JSON.parse(str); + } catch (e) { + return null; + } + } + }; + } +}); + +// node_modules/@azure/msal-common/dist/error/ClientAuthError.mjs +function createClientAuthError2(errorCode, additionalMessage) { + return new ClientAuthError2(errorCode, additionalMessage); +} +var ClientAuthError2; +var init_ClientAuthError = __esm({ + "node_modules/@azure/msal-common/dist/error/ClientAuthError.mjs"() { + "use strict"; + init_AuthError(); + ClientAuthError2 = class _ClientAuthError extends AuthError2 { + constructor(errorCode, additionalMessage) { + super(errorCode, additionalMessage); + this.name = "ClientAuthError"; + Object.setPrototypeOf(this, _ClientAuthError.prototype); + } + }; + } +}); + +// node_modules/@azure/msal-common/dist/error/ClientConfigurationErrorCodes.mjs +var ClientConfigurationErrorCodes_exports = {}; +__export(ClientConfigurationErrorCodes_exports, { + authorityMismatch: () => authorityMismatch2, + authorityUriInsecure: () => authorityUriInsecure2, + cannotAllowPlatformBroker: () => cannotAllowPlatformBroker2, + cannotSetOIDCOptions: () => cannotSetOIDCOptions2, + claimsRequestParsingError: () => claimsRequestParsingError2, + emptyInputScopesError: () => emptyInputScopesError2, + invalidAuthenticationHeader: () => invalidAuthenticationHeader2, + invalidAuthorityMetadata: () => invalidAuthorityMetadata2, + invalidClaims: () => invalidClaims2, + invalidCloudDiscoveryMetadata: () => invalidCloudDiscoveryMetadata2, + invalidCodeChallengeMethod: () => invalidCodeChallengeMethod2, + invalidRequestMethodForEAR: () => invalidRequestMethodForEAR2, + logoutRequestEmpty: () => logoutRequestEmpty2, + missingNonceAuthenticationHeader: () => missingNonceAuthenticationHeader2, + missingSshJwk: () => missingSshJwk2, + missingSshKid: () => missingSshKid2, + pkceParamsMissing: () => pkceParamsMissing2, + redirectUriEmpty: () => redirectUriEmpty2, + tokenRequestEmpty: () => tokenRequestEmpty2, + untrustedAuthority: () => untrustedAuthority2, + urlEmptyError: () => urlEmptyError2, + urlParseError: () => urlParseError2 +}); +var redirectUriEmpty2, claimsRequestParsingError2, authorityUriInsecure2, urlParseError2, urlEmptyError2, emptyInputScopesError2, invalidClaims2, tokenRequestEmpty2, logoutRequestEmpty2, invalidCodeChallengeMethod2, pkceParamsMissing2, invalidCloudDiscoveryMetadata2, invalidAuthorityMetadata2, untrustedAuthority2, missingSshJwk2, missingSshKid2, missingNonceAuthenticationHeader2, invalidAuthenticationHeader2, cannotSetOIDCOptions2, cannotAllowPlatformBroker2, authorityMismatch2, invalidRequestMethodForEAR2; +var init_ClientConfigurationErrorCodes = __esm({ + "node_modules/@azure/msal-common/dist/error/ClientConfigurationErrorCodes.mjs"() { + "use strict"; + redirectUriEmpty2 = "redirect_uri_empty"; + claimsRequestParsingError2 = "claims_request_parsing_error"; + authorityUriInsecure2 = "authority_uri_insecure"; + urlParseError2 = "url_parse_error"; + urlEmptyError2 = "empty_url_error"; + emptyInputScopesError2 = "empty_input_scopes_error"; + invalidClaims2 = "invalid_claims"; + tokenRequestEmpty2 = "token_request_empty"; + logoutRequestEmpty2 = "logout_request_empty"; + invalidCodeChallengeMethod2 = "invalid_code_challenge_method"; + pkceParamsMissing2 = "pkce_params_missing"; + invalidCloudDiscoveryMetadata2 = "invalid_cloud_discovery_metadata"; + invalidAuthorityMetadata2 = "invalid_authority_metadata"; + untrustedAuthority2 = "untrusted_authority"; + missingSshJwk2 = "missing_ssh_jwk"; + missingSshKid2 = "missing_ssh_kid"; + missingNonceAuthenticationHeader2 = "missing_nonce_authentication_header"; + invalidAuthenticationHeader2 = "invalid_authentication_header"; + cannotSetOIDCOptions2 = "cannot_set_OIDCOptions"; + cannotAllowPlatformBroker2 = "cannot_allow_platform_broker"; + authorityMismatch2 = "authority_mismatch"; + invalidRequestMethodForEAR2 = "invalid_request_method_for_EAR"; + } +}); + +// node_modules/@azure/msal-common/dist/error/ClientAuthErrorCodes.mjs +var ClientAuthErrorCodes_exports2 = {}; +__export(ClientAuthErrorCodes_exports2, { + authTimeNotFound: () => authTimeNotFound2, + authorizationCodeMissingFromServerResponse: () => authorizationCodeMissingFromServerResponse2, + bindingKeyNotRemoved: () => bindingKeyNotRemoved2, + cannotAppendScopeSet: () => cannotAppendScopeSet2, + cannotRemoveEmptyScope: () => cannotRemoveEmptyScope2, + clientInfoDecodingError: () => clientInfoDecodingError2, + clientInfoEmptyError: () => clientInfoEmptyError2, + emptyInputScopeSet: () => emptyInputScopeSet2, + endSessionEndpointNotSupported: () => endSessionEndpointNotSupported2, + endpointResolutionError: () => endpointResolutionError2, + hashNotDeserialized: () => hashNotDeserialized2, + invalidCacheEnvironment: () => invalidCacheEnvironment2, + invalidCacheRecord: () => invalidCacheRecord2, + invalidState: () => invalidState2, + keyIdMissing: () => keyIdMissing2, + maxAgeTranspired: () => maxAgeTranspired2, + methodNotImplemented: () => methodNotImplemented2, + misplacedResourceParam: () => misplacedResourceParam, + multipleMatchingAppMetadata: () => multipleMatchingAppMetadata2, + multipleMatchingTokens: () => multipleMatchingTokens2, + nestedAppAuthBridgeDisabled: () => nestedAppAuthBridgeDisabled2, + networkError: () => networkError2, + noAccountFound: () => noAccountFound2, + noAccountInSilentRequest: () => noAccountInSilentRequest2, + noCryptoObject: () => noCryptoObject2, + noNetworkConnectivity: () => noNetworkConnectivity2, + nonceMismatch: () => nonceMismatch2, + nullOrEmptyToken: () => nullOrEmptyToken2, + openIdConfigError: () => openIdConfigError2, + platformBrokerError: () => platformBrokerError2, + requestCannotBeMade: () => requestCannotBeMade2, + resourceParameterRequired: () => resourceParameterRequired, + stateMismatch: () => stateMismatch2, + stateNotFound: () => stateNotFound2, + tokenClaimsCnfRequiredForSignedJwt: () => tokenClaimsCnfRequiredForSignedJwt2, + tokenParsingError: () => tokenParsingError2, + tokenRefreshRequired: () => tokenRefreshRequired2, + unexpectedCredentialType: () => unexpectedCredentialType2, + userCanceled: () => userCanceled2 +}); +var clientInfoDecodingError2, clientInfoEmptyError2, tokenParsingError2, nullOrEmptyToken2, endpointResolutionError2, networkError2, openIdConfigError2, hashNotDeserialized2, invalidState2, stateMismatch2, stateNotFound2, nonceMismatch2, authTimeNotFound2, maxAgeTranspired2, multipleMatchingTokens2, multipleMatchingAppMetadata2, requestCannotBeMade2, cannotRemoveEmptyScope2, cannotAppendScopeSet2, emptyInputScopeSet2, noAccountInSilentRequest2, invalidCacheRecord2, invalidCacheEnvironment2, noAccountFound2, noCryptoObject2, unexpectedCredentialType2, tokenRefreshRequired2, tokenClaimsCnfRequiredForSignedJwt2, authorizationCodeMissingFromServerResponse2, bindingKeyNotRemoved2, endSessionEndpointNotSupported2, keyIdMissing2, noNetworkConnectivity2, userCanceled2, methodNotImplemented2, nestedAppAuthBridgeDisabled2, platformBrokerError2, resourceParameterRequired, misplacedResourceParam; +var init_ClientAuthErrorCodes = __esm({ + "node_modules/@azure/msal-common/dist/error/ClientAuthErrorCodes.mjs"() { + "use strict"; + clientInfoDecodingError2 = "client_info_decoding_error"; + clientInfoEmptyError2 = "client_info_empty_error"; + tokenParsingError2 = "token_parsing_error"; + nullOrEmptyToken2 = "null_or_empty_token"; + endpointResolutionError2 = "endpoints_resolution_error"; + networkError2 = "network_error"; + openIdConfigError2 = "openid_config_error"; + hashNotDeserialized2 = "hash_not_deserialized"; + invalidState2 = "invalid_state"; + stateMismatch2 = "state_mismatch"; + stateNotFound2 = "state_not_found"; + nonceMismatch2 = "nonce_mismatch"; + authTimeNotFound2 = "auth_time_not_found"; + maxAgeTranspired2 = "max_age_transpired"; + multipleMatchingTokens2 = "multiple_matching_tokens"; + multipleMatchingAppMetadata2 = "multiple_matching_appMetadata"; + requestCannotBeMade2 = "request_cannot_be_made"; + cannotRemoveEmptyScope2 = "cannot_remove_empty_scope"; + cannotAppendScopeSet2 = "cannot_append_scopeset"; + emptyInputScopeSet2 = "empty_input_scopeset"; + noAccountInSilentRequest2 = "no_account_in_silent_request"; + invalidCacheRecord2 = "invalid_cache_record"; + invalidCacheEnvironment2 = "invalid_cache_environment"; + noAccountFound2 = "no_account_found"; + noCryptoObject2 = "no_crypto_object"; + unexpectedCredentialType2 = "unexpected_credential_type"; + tokenRefreshRequired2 = "token_refresh_required"; + tokenClaimsCnfRequiredForSignedJwt2 = "token_claims_cnf_required_for_signedjwt"; + authorizationCodeMissingFromServerResponse2 = "authorization_code_missing_from_server_response"; + bindingKeyNotRemoved2 = "binding_key_not_removed"; + endSessionEndpointNotSupported2 = "end_session_endpoint_not_supported"; + keyIdMissing2 = "key_id_missing"; + noNetworkConnectivity2 = "no_network_connectivity"; + userCanceled2 = "user_canceled"; + methodNotImplemented2 = "method_not_implemented"; + nestedAppAuthBridgeDisabled2 = "nested_app_auth_bridge_disabled"; + platformBrokerError2 = "platform_broker_error"; + resourceParameterRequired = "resource_parameter_required"; + misplacedResourceParam = "misplaced_resource_parameter"; + } +}); + +// node_modules/@azure/msal-common/dist/request/ScopeSet.mjs +var ScopeSet2; +var init_ScopeSet = __esm({ + "node_modules/@azure/msal-common/dist/request/ScopeSet.mjs"() { + "use strict"; + init_ClientConfigurationError(); + init_StringUtils(); + init_ClientAuthError(); + init_Constants(); + init_ClientConfigurationErrorCodes(); + init_ClientAuthErrorCodes(); + ScopeSet2 = class _ScopeSet { + constructor(inputScopes) { + const scopeArr = inputScopes ? StringUtils2.trimArrayEntries([...inputScopes]) : []; + const filteredInput = scopeArr ? StringUtils2.removeEmptyStringsFromArray(scopeArr) : []; + if (!filteredInput || !filteredInput.length) { + throw createClientConfigurationError2(emptyInputScopesError2); + } + this.scopes = /* @__PURE__ */ new Set(); + filteredInput.forEach((scope) => this.scopes.add(scope)); + } + /** + * Factory method to create ScopeSet from space-delimited string + * @param inputScopeString + * @param appClientId + * @param scopesRequired + */ + static fromString(inputScopeString) { + const scopeString = inputScopeString || ""; + const inputScopes = scopeString.split(" "); + return new _ScopeSet(inputScopes); + } + /** + * Creates the set of scopes to search for in cache lookups + * @param inputScopeString + * @returns + */ + static createSearchScopes(inputScopeString) { + const scopesToUse = inputScopeString && inputScopeString.length > 0 ? inputScopeString : [...OIDC_DEFAULT_SCOPES2]; + const scopeSet = new _ScopeSet(scopesToUse); + if (!scopeSet.containsOnlyOIDCScopes()) { + scopeSet.removeOIDCScopes(); + } else { + scopeSet.removeScope(OFFLINE_ACCESS_SCOPE); + } + return scopeSet; + } + /** + * Check if a given scope is present in this set of scopes. + * @param scope + */ + containsScope(scope) { + const lowerCaseScopes = this.printScopesLowerCase().split(" "); + const lowerCaseScopesSet = new _ScopeSet(lowerCaseScopes); + return scope ? lowerCaseScopesSet.scopes.has(scope.toLowerCase()) : false; + } + /** + * Check if a set of scopes is present in this set of scopes. + * @param scopeSet + */ + containsScopeSet(scopeSet) { + if (!scopeSet || scopeSet.scopes.size <= 0) { + return false; + } + return this.scopes.size >= scopeSet.scopes.size && scopeSet.asArray().every((scope) => this.containsScope(scope)); + } + /** + * Check if set of scopes contains only the defaults + */ + containsOnlyOIDCScopes() { + let defaultScopeCount = 0; + OIDC_SCOPES2.forEach((defaultScope) => { + if (this.containsScope(defaultScope)) { + defaultScopeCount += 1; + } + }); + return this.scopes.size === defaultScopeCount; + } + /** + * Appends single scope if passed + * @param newScope + */ + appendScope(newScope) { + if (newScope) { + this.scopes.add(newScope.trim()); + } + } + /** + * Appends multiple scopes if passed + * @param newScopes + */ + appendScopes(newScopes) { + try { + newScopes.forEach((newScope) => this.appendScope(newScope)); + } catch (e) { + throw createClientAuthError2(cannotAppendScopeSet2); + } + } + /** + * Removes element from set of scopes. + * @param scope + */ + removeScope(scope) { + if (!scope) { + throw createClientAuthError2(cannotRemoveEmptyScope2); + } + this.scopes.delete(scope.trim()); + } + /** + * Removes default scopes from set of scopes + * Primarily used to prevent cache misses if the default scopes are not returned from the server + */ + removeOIDCScopes() { + OIDC_SCOPES2.forEach((defaultScope) => { + this.scopes.delete(defaultScope); + }); + } + /** + * Combines an array of scopes with the current set of scopes. + * @param otherScopes + */ + unionScopeSets(otherScopes) { + if (!otherScopes) { + throw createClientAuthError2(emptyInputScopeSet2); + } + const unionScopes = /* @__PURE__ */ new Set(); + otherScopes.scopes.forEach((scope) => unionScopes.add(scope.toLowerCase())); + this.scopes.forEach((scope) => unionScopes.add(scope.toLowerCase())); + return unionScopes; + } + /** + * Check if scopes intersect between this set and another. + * @param otherScopes + */ + intersectingScopeSets(otherScopes) { + if (!otherScopes) { + throw createClientAuthError2(emptyInputScopeSet2); + } + if (!otherScopes.containsOnlyOIDCScopes()) { + otherScopes.removeOIDCScopes(); + } + const unionScopes = this.unionScopeSets(otherScopes); + const sizeOtherScopes = otherScopes.getScopeCount(); + const sizeThisScopes = this.getScopeCount(); + const sizeUnionScopes = unionScopes.size; + return sizeUnionScopes < sizeThisScopes + sizeOtherScopes; + } + /** + * Returns size of set of scopes. + */ + getScopeCount() { + return this.scopes.size; + } + /** + * Returns the scopes as an array of string values + */ + asArray() { + const array2 = []; + this.scopes.forEach((val) => array2.push(val)); + return array2; + } + /** + * Prints scopes into a space-delimited string + */ + printScopes() { + if (this.scopes) { + const scopeArr = this.asArray(); + return scopeArr.join(" "); + } + return ""; + } + /** + * Prints scopes into a space-delimited lower-case string (used for caching) + */ + printScopesLowerCase() { + return this.printScopes().toLowerCase(); + } + }; + } +}); + +// node_modules/@azure/msal-common/dist/request/RequestParameterBuilder.mjs +var RequestParameterBuilder_exports2 = {}; +__export(RequestParameterBuilder_exports2, { + addApplicationTelemetry: () => addApplicationTelemetry2, + addAuthorizationCode: () => addAuthorizationCode2, + addBrokerParameters: () => addBrokerParameters2, + addCcsOid: () => addCcsOid2, + addCcsUpn: () => addCcsUpn2, + addClaims: () => addClaims2, + addCliData: () => addCliData2, + addClientAssertion: () => addClientAssertion2, + addClientAssertionType: () => addClientAssertionType2, + addClientCapabilitiesToClaims: () => addClientCapabilitiesToClaims2, + addClientId: () => addClientId2, + addClientInfo: () => addClientInfo2, + addClientSecret: () => addClientSecret2, + addCodeChallengeParams: () => addCodeChallengeParams2, + addCodeVerifier: () => addCodeVerifier2, + addCorrelationId: () => addCorrelationId2, + addDeviceCode: () => addDeviceCode2, + addDomainHint: () => addDomainHint2, + addEARParameters: () => addEARParameters2, + addExtraParameters: () => addExtraParameters, + addGrantType: () => addGrantType2, + addIdTokenHint: () => addIdTokenHint2, + addInstanceAware: () => addInstanceAware2, + addLibraryInfo: () => addLibraryInfo2, + addLoginHint: () => addLoginHint2, + addLogoutHint: () => addLogoutHint2, + addNativeBroker: () => addNativeBroker2, + addNonce: () => addNonce2, + addOboAssertion: () => addOboAssertion2, + addPassword: () => addPassword2, + addPopToken: () => addPopToken2, + addPostLogoutRedirectUri: () => addPostLogoutRedirectUri2, + addPrompt: () => addPrompt2, + addRedirectUri: () => addRedirectUri2, + addRefreshToken: () => addRefreshToken2, + addRequestTokenUse: () => addRequestTokenUse2, + addResource: () => addResource, + addResponseMode: () => addResponseMode2, + addResponseType: () => addResponseType2, + addScopes: () => addScopes2, + addServerTelemetry: () => addServerTelemetry2, + addSid: () => addSid2, + addSshJwk: () => addSshJwk2, + addState: () => addState2, + addThrottling: () => addThrottling2, + addUsername: () => addUsername2, + instrumentBrokerParams: () => instrumentBrokerParams2 +}); +function instrumentBrokerParams2(parameters, correlationId, performanceClient) { + if (!correlationId) { + return; + } + const clientId = parameters.get(CLIENT_ID2); + if (clientId && parameters.has(BROKER_CLIENT_ID2)) { + performanceClient?.addFields({ + embeddedClientId: clientId, + embeddedRedirectUri: parameters.get(REDIRECT_URI2) + }, correlationId); + } +} +function addResponseType2(parameters, responseType) { + parameters.set(RESPONSE_TYPE2, responseType); +} +function addResponseMode2(parameters, responseMode) { + parameters.set(RESPONSE_MODE2, responseMode ? responseMode : ResponseMode2.QUERY); +} +function addNativeBroker2(parameters) { + parameters.set(NATIVE_BROKER2, "1"); +} +function addScopes2(parameters, scopes, addOidcScopes = true, defaultScopes = OIDC_DEFAULT_SCOPES2) { + if (addOidcScopes && !defaultScopes.includes("openid") && !scopes.includes("openid")) { + defaultScopes.push("openid"); + } + const requestScopes = addOidcScopes ? [...scopes || [], ...defaultScopes] : scopes || []; + const scopeSet = new ScopeSet2(requestScopes); + parameters.set(SCOPE2, scopeSet.printScopes()); +} +function addClientId2(parameters, clientId) { + parameters.set(CLIENT_ID2, clientId); +} +function addRedirectUri2(parameters, redirectUri) { + parameters.set(REDIRECT_URI2, redirectUri); +} +function addPostLogoutRedirectUri2(parameters, redirectUri) { + parameters.set(POST_LOGOUT_URI2, redirectUri); +} +function addIdTokenHint2(parameters, idTokenHint) { + parameters.set(ID_TOKEN_HINT2, idTokenHint); +} +function addDomainHint2(parameters, domainHint) { + parameters.set(DOMAIN_HINT2, domainHint); +} +function addLoginHint2(parameters, loginHint) { + parameters.set(LOGIN_HINT2, loginHint); +} +function addCcsUpn2(parameters, loginHint) { + parameters.set(HeaderNames2.CCS_HEADER, `UPN:${loginHint}`); +} +function addCcsOid2(parameters, clientInfo) { + parameters.set(HeaderNames2.CCS_HEADER, `Oid:${clientInfo.uid}@${clientInfo.utid}`); +} +function addSid2(parameters, sid) { + parameters.set(SID2, sid); +} +function addClaims2(parameters, claims, clientCapabilities, skipBrokerClaims) { + const configClaims = skipBrokerClaims && parameters.has(BROKER_CLIENT_ID2) ? void 0 : clientCapabilities; + if (!StringUtils2.isEmptyObj(claims) || configClaims && configClaims.length > 0) { + const mergedClaims = addClientCapabilitiesToClaims2(claims, configClaims); + try { + JSON.parse(mergedClaims); + } catch (e) { + throw createClientConfigurationError2(invalidClaims2); + } + parameters.set(CLAIMS2, mergedClaims); + } +} +function addCorrelationId2(parameters, correlationId) { + parameters.set(CLIENT_REQUEST_ID2, correlationId); +} +function addLibraryInfo2(parameters, libraryInfo) { + parameters.set(X_CLIENT_SKU2, libraryInfo.sku); + parameters.set(X_CLIENT_VER2, libraryInfo.version); + if (libraryInfo.os) { + parameters.set(X_CLIENT_OS2, libraryInfo.os); + } + if (libraryInfo.cpu) { + parameters.set(X_CLIENT_CPU2, libraryInfo.cpu); + } +} +function addApplicationTelemetry2(parameters, appTelemetry) { + if (appTelemetry?.appName) { + parameters.set(X_APP_NAME2, appTelemetry.appName); + } + if (appTelemetry?.appVersion) { + parameters.set(X_APP_VER2, appTelemetry.appVersion); + } +} +function addPrompt2(parameters, prompt) { + parameters.set(PROMPT2, prompt); +} +function addState2(parameters, state3) { + if (state3) { + parameters.set(STATE2, state3); + } +} +function addNonce2(parameters, nonce) { + parameters.set(NONCE2, nonce); +} +function addCodeChallengeParams2(parameters, codeChallenge, codeChallengeMethod) { + if (codeChallenge && codeChallengeMethod) { + parameters.set(CODE_CHALLENGE2, codeChallenge); + parameters.set(CODE_CHALLENGE_METHOD2, codeChallengeMethod); + } else { + throw createClientConfigurationError2(pkceParamsMissing2); + } +} +function addAuthorizationCode2(parameters, code) { + parameters.set(CODE2, code); +} +function addDeviceCode2(parameters, code) { + parameters.set(DEVICE_CODE2, code); +} +function addRefreshToken2(parameters, refreshToken) { + parameters.set(REFRESH_TOKEN2, refreshToken); +} +function addCodeVerifier2(parameters, codeVerifier) { + parameters.set(CODE_VERIFIER2, codeVerifier); +} +function addClientSecret2(parameters, clientSecret) { + parameters.set(CLIENT_SECRET2, clientSecret); +} +function addClientAssertion2(parameters, clientAssertion) { + if (clientAssertion) { + parameters.set(CLIENT_ASSERTION2, clientAssertion); + } +} +function addClientAssertionType2(parameters, clientAssertionType) { + if (clientAssertionType) { + parameters.set(CLIENT_ASSERTION_TYPE2, clientAssertionType); + } +} +function addOboAssertion2(parameters, oboAssertion) { + parameters.set(OBO_ASSERTION2, oboAssertion); +} +function addRequestTokenUse2(parameters, tokenUse) { + parameters.set(REQUESTED_TOKEN_USE2, tokenUse); +} +function addGrantType2(parameters, grantType) { + parameters.set(GRANT_TYPE2, grantType); +} +function addClientInfo2(parameters) { + parameters.set(CLIENT_INFO3, "1"); +} +function addCliData2(parameters) { + parameters.set(CLI_DATA2, "1"); +} +function addInstanceAware2(parameters) { + if (!parameters.has(INSTANCE_AWARE2)) { + parameters.set(INSTANCE_AWARE2, "true"); + } +} +function addExtraParameters(parameters, extraParams) { + Object.entries(extraParams).forEach(([key, value]) => { + if (!parameters.has(key) && value) { + parameters.set(key, value); + } + }); +} +function addClientCapabilitiesToClaims2(claims, clientCapabilities) { + let mergedClaims; + if (!claims) { + mergedClaims = {}; + } else { + try { + mergedClaims = JSON.parse(claims); + } catch (e) { + throw createClientConfigurationError2(invalidClaims2); + } + } + if (clientCapabilities && clientCapabilities.length > 0) { + if (!mergedClaims.hasOwnProperty(ClaimsRequestKeys2.ACCESS_TOKEN)) { + mergedClaims[ClaimsRequestKeys2.ACCESS_TOKEN] = {}; + } + mergedClaims[ClaimsRequestKeys2.ACCESS_TOKEN][ClaimsRequestKeys2.XMS_CC] = { + values: clientCapabilities + }; + } + return JSON.stringify(mergedClaims); +} +function addUsername2(parameters, username) { + parameters.set(PasswordGrantConstants2.username, username); +} +function addPassword2(parameters, password) { + parameters.set(PasswordGrantConstants2.password, password); +} +function addPopToken2(parameters, cnfString) { + if (cnfString) { + parameters.set(TOKEN_TYPE2, AuthenticationScheme2.POP); + parameters.set(REQ_CNF2, cnfString); + } +} +function addSshJwk2(parameters, sshJwkString) { + if (sshJwkString) { + parameters.set(TOKEN_TYPE2, AuthenticationScheme2.SSH); + parameters.set(REQ_CNF2, sshJwkString); + } +} +function addServerTelemetry2(parameters, serverTelemetryManager) { + parameters.set(X_CLIENT_CURR_TELEM2, serverTelemetryManager.generateCurrentRequestHeaderValue()); + parameters.set(X_CLIENT_LAST_TELEM2, serverTelemetryManager.generateLastRequestHeaderValue()); +} +function addThrottling2(parameters) { + parameters.set(X_MS_LIB_CAPABILITY2, X_MS_LIB_CAPABILITY_VALUE); +} +function addLogoutHint2(parameters, logoutHint) { + parameters.set(LOGOUT_HINT2, logoutHint); +} +function addBrokerParameters2(parameters, brokerClientId, brokerRedirectUri) { + if (!parameters.has(BROKER_CLIENT_ID2)) { + parameters.set(BROKER_CLIENT_ID2, brokerClientId); + } + if (!parameters.has(BROKER_REDIRECT_URI2)) { + parameters.set(BROKER_REDIRECT_URI2, brokerRedirectUri); + } +} +function addEARParameters2(parameters, jwk) { + parameters.set(EAR_JWK2, encodeURIComponent(jwk)); + const jweCryptoB64Encoded = "eyJhbGciOiJkaXIiLCJlbmMiOiJBMjU2R0NNIn0"; + parameters.set(EAR_JWE_CRYPTO2, jweCryptoB64Encoded); +} +function addResource(parameters, resource) { + if (resource) { + parameters.set(RESOURCE, resource); + } +} +var init_RequestParameterBuilder = __esm({ + "node_modules/@azure/msal-common/dist/request/RequestParameterBuilder.mjs"() { + "use strict"; + init_Constants(); + init_AADServerParamKeys(); + init_ScopeSet(); + init_ClientConfigurationError(); + init_StringUtils(); + init_ClientConfigurationErrorCodes(); + } +}); + +// node_modules/@azure/msal-common/dist/utils/UrlUtils.mjs +var UrlUtils_exports2 = {}; +__export(UrlUtils_exports2, { + getDeserializedResponse: () => getDeserializedResponse2, + mapToQueryString: () => mapToQueryString2, + normalizeUrlForComparison: () => normalizeUrlForComparison2, + stripLeadingHashOrQuery: () => stripLeadingHashOrQuery2 +}); +function canonicalizeUrl2(url2) { + if (!url2) { + return url2; + } + let lowerCaseUrl = url2.toLowerCase(); + if (StringUtils2.endsWith(lowerCaseUrl, "?")) { + lowerCaseUrl = lowerCaseUrl.slice(0, -1); + } else if (StringUtils2.endsWith(lowerCaseUrl, "?/")) { + lowerCaseUrl = lowerCaseUrl.slice(0, -2); + } + if (!StringUtils2.endsWith(lowerCaseUrl, "/")) { + lowerCaseUrl += "/"; + } + return lowerCaseUrl; +} +function stripLeadingHashOrQuery2(responseString) { + if (responseString.startsWith("#/")) { + return responseString.substring(2); + } else if (responseString.startsWith("#") || responseString.startsWith("?")) { + return responseString.substring(1); + } + return responseString; +} +function getDeserializedResponse2(responseString) { + if (!responseString || responseString.indexOf("=") < 0) { + return null; + } + try { + const normalizedResponse = stripLeadingHashOrQuery2(responseString); + const deserializedHash = Object.fromEntries(new URLSearchParams(normalizedResponse)); + if (deserializedHash.code || deserializedHash.ear_jwe || deserializedHash.error || deserializedHash.error_description || deserializedHash.state) { + return deserializedHash; + } + } catch (e) { + throw createClientAuthError2(hashNotDeserialized2); + } + return null; +} +function mapToQueryString2(parameters) { + const queryParameterArray = new Array(); + parameters.forEach((value, key) => { + queryParameterArray.push(`${key}=${encodeURIComponent(value)}`); + }); + return queryParameterArray.join("&"); +} +function normalizeUrlForComparison2(url2) { + if (!url2) { + return url2; + } + const urlWithoutHash = url2.split("#")[0]; + try { + const urlObj = new URL(urlWithoutHash); + const normalizedUrl = urlObj.origin + urlObj.pathname + urlObj.search; + return canonicalizeUrl2(normalizedUrl); + } catch (e) { + return canonicalizeUrl2(urlWithoutHash); + } +} +var init_UrlUtils = __esm({ + "node_modules/@azure/msal-common/dist/utils/UrlUtils.mjs"() { + "use strict"; + init_ClientAuthError(); + init_StringUtils(); + init_ClientAuthErrorCodes(); + } +}); + +// node_modules/@azure/msal-common/dist/crypto/ICrypto.mjs +var DEFAULT_CRYPTO_IMPLEMENTATION2; +var init_ICrypto = __esm({ + "node_modules/@azure/msal-common/dist/crypto/ICrypto.mjs"() { + "use strict"; + init_ClientAuthError(); + init_ClientAuthErrorCodes(); + DEFAULT_CRYPTO_IMPLEMENTATION2 = { + createNewGuid: () => { + throw createClientAuthError2(methodNotImplemented2); + }, + base64Decode: () => { + throw createClientAuthError2(methodNotImplemented2); + }, + base64Encode: () => { + throw createClientAuthError2(methodNotImplemented2); + }, + base64UrlEncode: () => { + throw createClientAuthError2(methodNotImplemented2); + }, + encodeKid: () => { + throw createClientAuthError2(methodNotImplemented2); + }, + async getPublicKeyThumbprint() { + throw createClientAuthError2(methodNotImplemented2); + }, + async removeTokenBindingKey() { + throw createClientAuthError2(methodNotImplemented2); + }, + async clearKeystore() { + throw createClientAuthError2(methodNotImplemented2); + }, + async signJwt() { + throw createClientAuthError2(methodNotImplemented2); + }, + async hashString() { + throw createClientAuthError2(methodNotImplemented2); + } + }; + } +}); + +// node_modules/@azure/msal-common/dist/logger/Logger.mjs +function markAsRecentlyUsed(correlationId, data) { + correlationCache.delete(correlationId); + correlationCache.set(correlationId, data); +} +function addLogToCache(correlationId, loggedMessage) { + const currentTime = Date.now(); + let data = correlationCache.get(correlationId); + if (data) { + markAsRecentlyUsed(correlationId, data); + } else { + data = { logs: [], firstEventTime: currentTime }; + correlationCache.set(correlationId, data); + if (correlationCache.size > CACHE_CAPACITY) { + const firstKey = correlationCache.keys().next().value; + if (firstKey) { + correlationCache.delete(firstKey); + } + } + } + data.logs.push({ + ...loggedMessage, + milliseconds: currentTime - data.firstEventTime + }); + if (data.logs.length > MAX_LOGS_PER_CORRELATION) { + data.logs.shift(); + } +} +function isHashedString(str) { + if (str.length !== 6) { + return false; + } + for (let i = 0; i < str.length; i++) { + const char = str[i]; + const isAlphaNumeric = char >= "a" && char <= "z" || char >= "A" && char <= "Z" || char >= "0" && char <= "9"; + if (!isAlphaNumeric) { + return false; + } + } + return true; +} +var LogLevel2, CACHE_CAPACITY, MAX_LOGS_PER_CORRELATION, correlationCache, Logger2; +var init_Logger = __esm({ + "node_modules/@azure/msal-common/dist/logger/Logger.mjs"() { + "use strict"; + (function(LogLevel3) { + LogLevel3[LogLevel3["Error"] = 0] = "Error"; + LogLevel3[LogLevel3["Warning"] = 1] = "Warning"; + LogLevel3[LogLevel3["Info"] = 2] = "Info"; + LogLevel3[LogLevel3["Verbose"] = 3] = "Verbose"; + LogLevel3[LogLevel3["Trace"] = 4] = "Trace"; + })(LogLevel2 || (LogLevel2 = {})); + CACHE_CAPACITY = 50; + MAX_LOGS_PER_CORRELATION = 500; + correlationCache = /* @__PURE__ */ new Map(); + Logger2 = class _Logger { + constructor(loggerOptions, packageName, packageVersion) { + this.level = LogLevel2.Info; + const defaultLoggerCallback2 = () => { + return; + }; + const setLoggerOptions = loggerOptions || _Logger.createDefaultLoggerOptions(); + this.localCallback = setLoggerOptions.loggerCallback || defaultLoggerCallback2; + this.piiLoggingEnabled = setLoggerOptions.piiLoggingEnabled || false; + this.level = typeof setLoggerOptions.logLevel === "number" ? setLoggerOptions.logLevel : LogLevel2.Info; + this.packageName = packageName || ""; + this.packageVersion = packageVersion || ""; + } + static createDefaultLoggerOptions() { + return { + loggerCallback: () => { + }, + piiLoggingEnabled: false, + logLevel: LogLevel2.Info + }; + } + /** + * Create new Logger with existing configurations. + */ + clone(packageName, packageVersion) { + return new _Logger({ + loggerCallback: this.localCallback, + piiLoggingEnabled: this.piiLoggingEnabled, + logLevel: this.level + }, packageName, packageVersion); + } + /** + * Log message with required options. + */ + logMessage(logMessage, options) { + const correlationId = options.correlationId; + const isHashedInput = isHashedString(logMessage); + if (isHashedInput) { + const loggedMessage = { + hash: logMessage, + level: options.logLevel, + containsPii: options.containsPii || false, + milliseconds: 0 + // Will be calculated in addLogToCache + }; + addLogToCache(correlationId, loggedMessage); + } + if (options.logLevel > this.level || !this.piiLoggingEnabled && options.containsPii) { + return; + } + const timestamp = (/* @__PURE__ */ new Date()).toUTCString(); + const logHeader = `[${timestamp}] : [${correlationId}]`; + const log2 = `${logHeader} : ${this.packageName}@${this.packageVersion} : ${LogLevel2[options.logLevel]} - ${logMessage}`; + this.executeCallback(options.logLevel, log2, options.containsPii || false); + } + /** + * Execute callback with message. + */ + executeCallback(level, message, containsPii) { + if (this.localCallback) { + this.localCallback(level, message, containsPii); + } + } + /** + * Logs error messages. + */ + error(message, correlationId) { + this.logMessage(message, { + logLevel: LogLevel2.Error, + containsPii: false, + correlationId + }); + } + /** + * Logs error messages with PII. + */ + errorPii(message, correlationId) { + this.logMessage(message, { + logLevel: LogLevel2.Error, + containsPii: true, + correlationId + }); + } + /** + * Logs warning messages. + */ + warning(message, correlationId) { + this.logMessage(message, { + logLevel: LogLevel2.Warning, + containsPii: false, + correlationId + }); + } + /** + * Logs warning messages with PII. + */ + warningPii(message, correlationId) { + this.logMessage(message, { + logLevel: LogLevel2.Warning, + containsPii: true, + correlationId + }); + } + /** + * Logs info messages. + */ + info(message, correlationId) { + this.logMessage(message, { + logLevel: LogLevel2.Info, + containsPii: false, + correlationId + }); + } + /** + * Logs info messages with PII. + */ + infoPii(message, correlationId) { + this.logMessage(message, { + logLevel: LogLevel2.Info, + containsPii: true, + correlationId + }); + } + /** + * Logs verbose messages. + */ + verbose(message, correlationId) { + this.logMessage(message, { + logLevel: LogLevel2.Verbose, + containsPii: false, + correlationId + }); + } + /** + * Logs verbose messages with PII. + */ + verbosePii(message, correlationId) { + this.logMessage(message, { + logLevel: LogLevel2.Verbose, + containsPii: true, + correlationId + }); + } + /** + * Logs trace messages. + */ + trace(message, correlationId) { + this.logMessage(message, { + logLevel: LogLevel2.Trace, + containsPii: false, + correlationId + }); + } + /** + * Logs trace messages with PII. + */ + tracePii(message, correlationId) { + this.logMessage(message, { + logLevel: LogLevel2.Trace, + containsPii: true, + correlationId + }); + } + /** + * Returns whether PII Logging is enabled or not. + */ + isPiiLoggingEnabled() { + return this.piiLoggingEnabled || false; + } + }; + } +}); + +// node_modules/@azure/msal-common/dist/packageMetadata.mjs +var name3, version4; +var init_packageMetadata = __esm({ + "node_modules/@azure/msal-common/dist/packageMetadata.mjs"() { + "use strict"; + name3 = "@azure/msal-common"; + version4 = "16.5.1"; + } +}); + +// node_modules/@azure/msal-common/dist/authority/AuthorityOptions.mjs +var AzureCloudInstance2; +var init_AuthorityOptions = __esm({ + "node_modules/@azure/msal-common/dist/authority/AuthorityOptions.mjs"() { + "use strict"; + AzureCloudInstance2 = { + // AzureCloudInstance is not specified. + None: "none", + // Microsoft Azure public cloud + AzurePublic: "https://login.microsoftonline.com", + // Microsoft PPE + AzurePpe: "https://login.windows-ppe.net", + // Microsoft Chinese national/regional cloud + AzureChina: "https://login.chinacloudapi.cn", + // Microsoft German national/regional cloud ("Black Forest") + AzureGermany: "https://login.microsoftonline.de", + // US Government cloud + AzureUsGovernment: "https://login.microsoftonline.us" + }; + } +}); + +// node_modules/@azure/msal-common/dist/account/AccountInfo.mjs +function tenantIdMatchesHomeTenant2(tenantId, homeAccountId) { + return !!tenantId && !!homeAccountId && tenantId === homeAccountId.split(".")[1]; +} +function buildTenantProfile2(homeAccountId, localAccountId, tenantId, idTokenClaims) { + if (idTokenClaims) { + const { oid, sub, tid, name: name5, tfp, acr, preferred_username, upn, login_hint } = idTokenClaims; + const tenantId2 = tid || tfp || acr || ""; + return { + tenantId: tenantId2, + localAccountId: oid || sub || "", + name: name5, + username: preferred_username || upn || "", + loginHint: login_hint, + isHomeTenant: tenantIdMatchesHomeTenant2(tenantId2, homeAccountId), + upn + }; + } else { + return { + tenantId, + localAccountId, + username: "", + isHomeTenant: tenantIdMatchesHomeTenant2(tenantId, homeAccountId) + }; + } +} +function updateAccountTenantProfileData2(baseAccountInfo, tenantProfile, idTokenClaims, idTokenSecret) { + let updatedAccountInfo = baseAccountInfo; + if (tenantProfile) { + const { isHomeTenant, ...tenantProfileOverride } = tenantProfile; + updatedAccountInfo = { ...baseAccountInfo, ...tenantProfileOverride }; + } + if (idTokenClaims) { + const { isHomeTenant, ...claimsSourcedTenantProfile } = buildTenantProfile2(baseAccountInfo.homeAccountId, baseAccountInfo.localAccountId, baseAccountInfo.tenantId, idTokenClaims); + updatedAccountInfo = { + ...updatedAccountInfo, + ...claimsSourcedTenantProfile, + idTokenClaims, + idToken: idTokenSecret + }; + return updatedAccountInfo; + } + return updatedAccountInfo; +} +var init_AccountInfo = __esm({ + "node_modules/@azure/msal-common/dist/account/AccountInfo.mjs"() { + "use strict"; + } +}); + +// node_modules/@azure/msal-common/dist/account/AuthToken.mjs +var AuthToken_exports = {}; +__export(AuthToken_exports, { + checkMaxAge: () => checkMaxAge2, + extractTokenClaims: () => extractTokenClaims2, + getJWSPayload: () => getJWSPayload2, + isKmsi: () => isKmsi2 +}); +function extractTokenClaims2(encodedToken, base64Decode) { + const jswPayload = getJWSPayload2(encodedToken); + try { + const base64Decoded = base64Decode(jswPayload); + return JSON.parse(base64Decoded); + } catch (err) { + throw createClientAuthError2(tokenParsingError2); + } +} +function isKmsi2(idTokenClaims) { + if (!idTokenClaims.signin_state) { + return false; + } + const kmsiClaims = ["kmsi", "dvc_dmjd"]; + return idTokenClaims.signin_state.some((value) => kmsiClaims.includes(value.trim().toLowerCase())); +} +function getJWSPayload2(authToken) { + if (!authToken) { + throw createClientAuthError2(nullOrEmptyToken2); + } + const tokenPartsRegex = /^([^\.\s]*)\.([^\.\s]+)\.([^\.\s]*)$/; + const matches = tokenPartsRegex.exec(authToken); + if (!matches || matches.length < 4) { + throw createClientAuthError2(tokenParsingError2); + } + return matches[2]; +} +function checkMaxAge2(authTime, maxAge) { + const fiveMinuteSkew = 3e5; + if (maxAge === 0 || Date.now() - fiveMinuteSkew > authTime + maxAge) { + throw createClientAuthError2(maxAgeTranspired2); + } +} +var init_AuthToken = __esm({ + "node_modules/@azure/msal-common/dist/account/AuthToken.mjs"() { + "use strict"; + init_ClientAuthError(); + init_ClientAuthErrorCodes(); + } +}); + +// node_modules/@azure/msal-common/dist/url/UrlString.mjs +var UrlString2; +var init_UrlString = __esm({ + "node_modules/@azure/msal-common/dist/url/UrlString.mjs"() { + "use strict"; + init_ClientConfigurationError(); + init_StringUtils(); + init_Constants(); + init_ClientConfigurationErrorCodes(); + UrlString2 = class _UrlString { + get urlString() { + return this._urlString; + } + constructor(url2) { + this._urlString = url2; + if (!this._urlString) { + throw createClientConfigurationError2(urlEmptyError2); + } + if (!url2.includes("#")) { + this._urlString = _UrlString.canonicalizeUri(url2); + } + } + /** + * Ensure urls are lower case and end with a / character. + * @param url + */ + static canonicalizeUri(url2) { + if (url2) { + let lowerCaseUrl = url2.toLowerCase(); + if (StringUtils2.endsWith(lowerCaseUrl, "?")) { + lowerCaseUrl = lowerCaseUrl.slice(0, -1); + } else if (StringUtils2.endsWith(lowerCaseUrl, "?/")) { + lowerCaseUrl = lowerCaseUrl.slice(0, -2); + } + if (!StringUtils2.endsWith(lowerCaseUrl, "/")) { + lowerCaseUrl += "/"; + } + return lowerCaseUrl; + } + return url2; + } + /** + * Throws if urlString passed is not a valid authority URI string. + */ + validateAsUri() { + let components; + try { + components = this.getUrlComponents(); + } catch (e) { + throw createClientConfigurationError2(urlParseError2); + } + if (!components.HostNameAndPort || !components.PathSegments) { + throw createClientConfigurationError2(urlParseError2); + } + if (!components.Protocol || components.Protocol.toLowerCase() !== "https:") { + throw createClientConfigurationError2(authorityUriInsecure2); + } + } + /** + * Given a url and a query string return the url with provided query string appended + * @param url + * @param queryString + */ + static appendQueryString(url2, queryString) { + if (!queryString) { + return url2; + } + return url2.indexOf("?") < 0 ? `${url2}?${queryString}` : `${url2}&${queryString}`; + } + /** + * Returns a url with the hash removed + * @param url + */ + static removeHashFromUrl(url2) { + return _UrlString.canonicalizeUri(url2.split("#")[0]); + } + /** + * Given a url like https://a:b/common/d?e=f#g, and a tenantId, returns https://a:b/tenantId/d + * @param href The url + * @param tenantId The tenant id to replace + */ + replaceTenantPath(tenantId) { + const urlObject = this.getUrlComponents(); + const pathArray = urlObject.PathSegments; + if (tenantId && pathArray.length !== 0 && (pathArray[0] === AADAuthority.COMMON || pathArray[0] === AADAuthority.ORGANIZATIONS)) { + pathArray[0] = tenantId; + } + return _UrlString.constructAuthorityUriFromObject(urlObject); + } + /** + * Parses out the components from a url string. + * @returns An object with the various components. Please cache this value insted of calling this multiple times on the same url. + */ + getUrlComponents() { + const regEx = RegExp("^(([^:/?#]+):)?(//([^/?#]*))?([^?#]*)(\\?([^#]*))?(#(.*))?"); + const match = this.urlString.match(regEx); + if (!match) { + throw createClientConfigurationError2(urlParseError2); + } + const urlComponents = { + Protocol: match[1], + HostNameAndPort: match[4], + AbsolutePath: match[5], + QueryString: match[7] + }; + let pathSegments = urlComponents.AbsolutePath.split("/"); + pathSegments = pathSegments.filter((val) => val && val.length > 0); + urlComponents.PathSegments = pathSegments; + if (urlComponents.QueryString && urlComponents.QueryString.endsWith("/")) { + urlComponents.QueryString = urlComponents.QueryString.substring(0, urlComponents.QueryString.length - 1); + } + return urlComponents; + } + static getDomainFromUrl(url2) { + const regEx = RegExp("^([^:/?#]+://)?([^/?#]*)"); + const match = url2.match(regEx); + if (!match) { + throw createClientConfigurationError2(urlParseError2); + } + return match[2]; + } + static getAbsoluteUrl(relativeUrl, baseUrl) { + if (relativeUrl[0] === FORWARD_SLASH) { + const url2 = new _UrlString(baseUrl); + const baseComponents = url2.getUrlComponents(); + return baseComponents.Protocol + "//" + baseComponents.HostNameAndPort + relativeUrl; + } + return relativeUrl; + } + static constructAuthorityUriFromObject(urlObject) { + return new _UrlString(urlObject.Protocol + "//" + urlObject.HostNameAndPort + "/" + urlObject.PathSegments.join("/")); + } + }; + } +}); + +// node_modules/@azure/msal-common/dist/authority/AuthorityMetadata.mjs +function buildOpenIdConfig(host, issuerHost) { + return { + token_endpoint: `https://${host}/{tenantid}/oauth2/v2.0/token`, + jwks_uri: `https://${host}/{tenantid}/discovery/v2.0/keys`, + issuer: `https://${issuerHost}/{tenantid}/v2.0`, + authorization_endpoint: `https://${host}/{tenantid}/oauth2/v2.0/authorize`, + end_session_endpoint: `https://${host}/{tenantid}/oauth2/v2.0/logout` + }; +} +function getAliasesFromStaticSources2(staticAuthorityOptions, logger31, correlationId) { + let staticAliases; + const canonicalAuthority = staticAuthorityOptions.canonicalAuthority; + if (canonicalAuthority) { + const authorityHost = new UrlString2(canonicalAuthority).getUrlComponents().HostNameAndPort; + staticAliases = getAliasesFromMetadata2(logger31, correlationId, authorityHost, staticAuthorityOptions.cloudDiscoveryMetadata?.metadata, AuthorityMetadataSource2.CONFIG) || getAliasesFromMetadata2(logger31, correlationId, authorityHost, InstanceDiscoveryMetadata2.metadata, AuthorityMetadataSource2.HARDCODED_VALUES) || staticAuthorityOptions.knownAuthorities; + } + return staticAliases || []; +} +function getAliasesFromMetadata2(logger31, correlationId, authorityHost, cloudDiscoveryMetadata, source) { + logger31.trace(`getAliasesFromMetadata called with source: '${source}'`, correlationId); + if (authorityHost && cloudDiscoveryMetadata) { + const metadata = getCloudDiscoveryMetadataFromNetworkResponse2(cloudDiscoveryMetadata, authorityHost); + if (metadata) { + logger31.trace(`getAliasesFromMetadata: found cloud discovery metadata in '${source}', returning aliases`, correlationId); + return metadata.aliases; + } else { + logger31.trace(`getAliasesFromMetadata: did not find cloud discovery metadata in '${source}'`, correlationId); + } + } + return null; +} +function getCloudDiscoveryMetadataFromHardcodedValues2(authorityHost) { + const metadata = getCloudDiscoveryMetadataFromNetworkResponse2(InstanceDiscoveryMetadata2.metadata, authorityHost); + return metadata; +} +function getCloudDiscoveryMetadataFromNetworkResponse2(response, authorityHost) { + for (let i = 0; i < response.length; i++) { + const metadata = response[i]; + if (metadata.aliases.includes(authorityHost)) { + return metadata; + } + } + return null; +} +var endpointHosts, dynamicEndpointMetadata, rawMetdataJSON2, EndpointMetadata2, InstanceDiscoveryMetadata2, InstanceDiscoveryMetadataAliases2; +var init_AuthorityMetadata = __esm({ + "node_modules/@azure/msal-common/dist/authority/AuthorityMetadata.mjs"() { + "use strict"; + init_UrlString(); + init_Constants(); + endpointHosts = [ + { host: "login.microsoftonline.com" }, + { + host: "login.chinacloudapi.cn", + issuerHost: "login.partner.microsoftonline.cn" + // Issuer differs + }, + { host: "login.microsoftonline.us" }, + { host: "login.sovcloud-identity.fr" }, + { host: "login.sovcloud-identity.de" }, + { host: "login.sovcloud-identity.sg" } + ]; + dynamicEndpointMetadata = endpointHosts.reduce((acc, { host, issuerHost }) => { + acc[host] = buildOpenIdConfig(host, issuerHost || host); + return acc; + }, {}); + rawMetdataJSON2 = { + endpointMetadata: dynamicEndpointMetadata, + instanceDiscoveryMetadata: { + metadata: [ + { + preferred_network: "login.microsoftonline.com", + preferred_cache: "login.windows.net", + aliases: [ + "login.microsoftonline.com", + "login.windows.net", + "login.microsoft.com", + "sts.windows.net" + ] + }, + { + preferred_network: "login.partner.microsoftonline.cn", + preferred_cache: "login.partner.microsoftonline.cn", + aliases: [ + "login.partner.microsoftonline.cn", + "login.chinacloudapi.cn" + ] + }, + { + preferred_network: "login.microsoftonline.de", + preferred_cache: "login.microsoftonline.de", + aliases: ["login.microsoftonline.de"] + }, + { + preferred_network: "login.microsoftonline.us", + preferred_cache: "login.microsoftonline.us", + aliases: [ + "login.microsoftonline.us", + "login.usgovcloudapi.net" + ] + }, + { + preferred_network: "login-us.microsoftonline.com", + preferred_cache: "login-us.microsoftonline.com", + aliases: ["login-us.microsoftonline.com"] + }, + { + preferred_network: "login.sovcloud-identity.fr", + preferred_cache: "login.sovcloud-identity.fr", + aliases: ["login.sovcloud-identity.fr"] + }, + { + preferred_network: "login.sovcloud-identity.de", + preferred_cache: "login.sovcloud-identity.de", + aliases: ["login.sovcloud-identity.de"] + }, + { + preferred_network: "login.sovcloud-identity.sg", + preferred_cache: "login.sovcloud-identity.sg", + aliases: ["login.sovcloud-identity.sg"] + } + ] + } + }; + EndpointMetadata2 = rawMetdataJSON2.endpointMetadata; + InstanceDiscoveryMetadata2 = rawMetdataJSON2.instanceDiscoveryMetadata; + InstanceDiscoveryMetadataAliases2 = /* @__PURE__ */ new Set(); + InstanceDiscoveryMetadata2.metadata.forEach((metadataEntry) => { + metadataEntry.aliases.forEach((alias) => { + InstanceDiscoveryMetadataAliases2.add(alias); + }); + }); + } +}); + +// node_modules/@azure/msal-common/dist/error/CacheErrorCodes.mjs +var cacheQuotaExceeded2, cacheErrorUnknown2; +var init_CacheErrorCodes = __esm({ + "node_modules/@azure/msal-common/dist/error/CacheErrorCodes.mjs"() { + "use strict"; + cacheQuotaExceeded2 = "cache_quota_exceeded"; + cacheErrorUnknown2 = "cache_error_unknown"; + } +}); + +// node_modules/@azure/msal-common/dist/error/CacheError.mjs +function createCacheError2(e) { + if (!(e instanceof Error)) { + return new CacheError2(cacheErrorUnknown2); + } + if (e.name === "QuotaExceededError" || e.name === "NS_ERROR_DOM_QUOTA_REACHED" || e.message.includes("exceeded the quota")) { + return new CacheError2(cacheQuotaExceeded2); + } else { + return new CacheError2(e.name, e.message); + } +} +var CacheError2; +var init_CacheError = __esm({ + "node_modules/@azure/msal-common/dist/error/CacheError.mjs"() { + "use strict"; + init_CacheErrorCodes(); + init_AuthError(); + CacheError2 = class _CacheError extends Error { + constructor(errorCode, errorMessage) { + const message = errorMessage || getDefaultErrorMessage(errorCode); + super(message); + Object.setPrototypeOf(this, _CacheError.prototype); + this.name = "CacheError"; + this.errorCode = errorCode; + this.errorMessage = message; + } + }; + } +}); + +// node_modules/@azure/msal-common/dist/account/ClientInfo.mjs +function buildClientInfo2(rawClientInfo, base64Decode) { + if (!rawClientInfo) { + throw createClientAuthError2(clientInfoEmptyError2); + } + try { + const decodedClientInfo = base64Decode(rawClientInfo); + return JSON.parse(decodedClientInfo); + } catch (e) { + throw createClientAuthError2(clientInfoDecodingError2); + } +} +function buildClientInfoFromHomeAccountId2(homeAccountId) { + if (!homeAccountId) { + throw createClientAuthError2(clientInfoDecodingError2); + } + const clientInfoParts = homeAccountId.split(CLIENT_INFO_SEPARATOR, 2); + return { + uid: clientInfoParts[0], + utid: clientInfoParts.length < 2 ? "" : clientInfoParts[1] + }; +} +var init_ClientInfo = __esm({ + "node_modules/@azure/msal-common/dist/account/ClientInfo.mjs"() { + "use strict"; + init_ClientAuthError(); + init_Constants(); + init_ClientAuthErrorCodes(); + } +}); + +// node_modules/@azure/msal-common/dist/authority/AuthorityType.mjs +var AuthorityType2; +var init_AuthorityType = __esm({ + "node_modules/@azure/msal-common/dist/authority/AuthorityType.mjs"() { + "use strict"; + AuthorityType2 = { + Default: 0, + Adfs: 1, + Dsts: 2, + Ciam: 3 + }; + } +}); + +// node_modules/@azure/msal-common/dist/account/TokenClaims.mjs +function getTenantIdFromIdTokenClaims2(idTokenClaims) { + if (idTokenClaims) { + const tenantId = idTokenClaims.tid || idTokenClaims.tfp || idTokenClaims.acr; + return tenantId || null; + } + return null; +} +var init_TokenClaims = __esm({ + "node_modules/@azure/msal-common/dist/account/TokenClaims.mjs"() { + "use strict"; + } +}); + +// node_modules/@azure/msal-common/dist/authority/ProtocolMode.mjs +var ProtocolMode2; +var init_ProtocolMode = __esm({ + "node_modules/@azure/msal-common/dist/authority/ProtocolMode.mjs"() { + "use strict"; + ProtocolMode2 = { + /** + * Auth Code + PKCE with Entra ID (formerly AAD) specific optimizations and features + */ + AAD: "AAD", + /** + * Auth Code + PKCE without Entra ID specific optimizations and features. For use only with non-Microsoft owned authorities. + * Support is limited for this mode. + */ + OIDC: "OIDC", + /** + * Encrypted Authorize Response (EAR) with Entra ID specific optimizations and features + */ + EAR: "EAR" + }; + } +}); + +// node_modules/@azure/msal-common/dist/cache/utils/AccountEntityUtils.mjs +var AccountEntityUtils_exports = {}; +__export(AccountEntityUtils_exports, { + createAccountEntity: () => createAccountEntity, + createAccountEntityFromAccountInfo: () => createAccountEntityFromAccountInfo, + generateAccountId: () => generateAccountId, + generateHomeAccountId: () => generateHomeAccountId, + getAccountInfo: () => getAccountInfo, + isAccountEntity: () => isAccountEntity, + isSingleTenant: () => isSingleTenant +}); +function generateAccountId(accountEntity) { + const accountId = [ + accountEntity.homeAccountId, + accountEntity.environment + ]; + return accountId.join(CACHE_KEY_SEPARATOR).toLowerCase(); +} +function getAccountInfo(accountEntity) { + const tenantProfiles = accountEntity.tenantProfiles || []; + if (tenantProfiles.length === 0 && accountEntity.realm && accountEntity.localAccountId) { + tenantProfiles.push(buildTenantProfile2(accountEntity.homeAccountId, accountEntity.localAccountId, accountEntity.realm)); + } + return { + homeAccountId: accountEntity.homeAccountId, + environment: accountEntity.environment, + tenantId: accountEntity.realm, + username: accountEntity.username, + localAccountId: accountEntity.localAccountId, + loginHint: accountEntity.loginHint, + name: accountEntity.name, + nativeAccountId: accountEntity.nativeAccountId, + authorityType: accountEntity.authorityType, + // Deserialize tenant profiles array into a Map + tenantProfiles: new Map(tenantProfiles.map((tenantProfile) => { + return [tenantProfile.tenantId, tenantProfile]; + })), + dataBoundary: accountEntity.dataBoundary + }; +} +function isSingleTenant(accountEntity) { + return !accountEntity.tenantProfiles; +} +function createAccountEntity(accountDetails, authority, base64Decode) { + let authorityType; + if (authority.authorityType === AuthorityType2.Adfs) { + authorityType = CACHE_ACCOUNT_TYPE_ADFS; + } else if (authority.protocolMode === ProtocolMode2.OIDC) { + authorityType = CACHE_ACCOUNT_TYPE_GENERIC; + } else { + authorityType = CACHE_ACCOUNT_TYPE_MSSTS; + } + let clientInfo; + let dataBoundary; + if (accountDetails.clientInfo && base64Decode) { + clientInfo = buildClientInfo2(accountDetails.clientInfo, base64Decode); + if (clientInfo.xms_tdbr) { + dataBoundary = clientInfo.xms_tdbr === "EU" ? "EU" : "None"; + } + } + const env = accountDetails.environment || authority && authority.getPreferredCache(); + if (!env) { + throw createClientAuthError2(invalidCacheEnvironment2); + } + const preferredUsername = accountDetails.idTokenClaims?.preferred_username || accountDetails.idTokenClaims?.upn; + const email2 = accountDetails.idTokenClaims?.emails ? accountDetails.idTokenClaims.emails[0] : null; + const username = preferredUsername || email2 || ""; + const loginHint = accountDetails.idTokenClaims?.login_hint; + const realm = clientInfo?.utid || getTenantIdFromIdTokenClaims2(accountDetails.idTokenClaims) || ""; + const localAccountId = clientInfo?.uid || accountDetails.idTokenClaims?.oid || accountDetails.idTokenClaims?.sub || ""; + let tenantProfiles; + if (accountDetails.tenantProfiles) { + tenantProfiles = accountDetails.tenantProfiles; + } else { + const tenantProfile = buildTenantProfile2(accountDetails.homeAccountId, localAccountId, realm, accountDetails.idTokenClaims); + tenantProfiles = [tenantProfile]; + } + return { + homeAccountId: accountDetails.homeAccountId, + environment: env, + realm, + localAccountId, + username, + authorityType, + loginHint, + clientInfo: accountDetails.clientInfo, + name: accountDetails.idTokenClaims?.name || "", + lastModificationTime: void 0, + lastModificationApp: void 0, + cloudGraphHostName: accountDetails.cloudGraphHostName, + msGraphHost: accountDetails.msGraphHost, + nativeAccountId: accountDetails.nativeAccountId, + tenantProfiles, + dataBoundary + }; +} +function createAccountEntityFromAccountInfo(accountInfo, cloudGraphHostName, msGraphHost) { + const tenantProfiles = Array.from(accountInfo.tenantProfiles?.values() || []); + if (tenantProfiles.length === 0 && accountInfo.tenantId && accountInfo.localAccountId) { + tenantProfiles.push(buildTenantProfile2(accountInfo.homeAccountId, accountInfo.localAccountId, accountInfo.tenantId, accountInfo.idTokenClaims)); + } + return { + authorityType: accountInfo.authorityType || CACHE_ACCOUNT_TYPE_GENERIC, + homeAccountId: accountInfo.homeAccountId, + localAccountId: accountInfo.localAccountId, + nativeAccountId: accountInfo.nativeAccountId, + realm: accountInfo.tenantId, + environment: accountInfo.environment, + username: accountInfo.username, + loginHint: accountInfo.loginHint, + name: accountInfo.name, + cloudGraphHostName, + msGraphHost, + tenantProfiles, + dataBoundary: accountInfo.dataBoundary + }; +} +function generateHomeAccountId(serverClientInfo, authType, logger31, cryptoObj, correlationId, idTokenClaims) { + if (!(authType === AuthorityType2.Adfs || authType === AuthorityType2.Dsts)) { + if (serverClientInfo) { + try { + const clientInfo = buildClientInfo2(serverClientInfo, cryptoObj.base64Decode); + if (clientInfo.uid && clientInfo.utid) { + return `${clientInfo.uid}.${clientInfo.utid}`; + } + } catch (e) { + } + } + logger31.warning("No client info in response", correlationId); + } + return idTokenClaims?.sub || ""; +} +function isAccountEntity(entity) { + if (!entity) { + return false; + } + return entity.hasOwnProperty("homeAccountId") && entity.hasOwnProperty("environment") && entity.hasOwnProperty("realm") && entity.hasOwnProperty("localAccountId") && entity.hasOwnProperty("username") && entity.hasOwnProperty("authorityType"); +} +var init_AccountEntityUtils = __esm({ + "node_modules/@azure/msal-common/dist/cache/utils/AccountEntityUtils.mjs"() { + "use strict"; + init_Constants(); + init_ClientInfo(); + init_AccountInfo(); + init_ClientAuthError(); + init_AuthorityType(); + init_TokenClaims(); + init_ProtocolMode(); + init_ClientAuthErrorCodes(); + } +}); + +// node_modules/@azure/msal-common/dist/cache/CacheManager.mjs +var CacheManager2, DefaultStorageClass2; +var init_CacheManager = __esm({ + "node_modules/@azure/msal-common/dist/cache/CacheManager.mjs"() { + "use strict"; + init_Constants(); + init_ScopeSet(); + init_ClientAuthError(); + init_AccountInfo(); + init_AuthToken(); + init_packageMetadata(); + init_AuthorityMetadata(); + init_CacheError(); + init_AccountEntityUtils(); + init_AuthError(); + init_ClientAuthErrorCodes(); + CacheManager2 = class { + constructor(clientId, cryptoImpl, logger31, performanceClient, staticAuthorityOptions) { + this.clientId = clientId; + this.cryptoImpl = cryptoImpl; + this.commonLogger = logger31.clone(name3, version4); + this.staticAuthorityOptions = staticAuthorityOptions; + this.performanceClient = performanceClient; + } + /** + * Returns all the accounts in the cache that match the optional filter. If no filter is provided, all accounts are returned. + * @param accountFilter - (Optional) filter to narrow down the accounts returned + * @returns Array of AccountInfo objects in cache + */ + getAllAccounts(accountFilter = {}, correlationId) { + return this.buildTenantProfiles(this.getAccountsFilteredBy(accountFilter, correlationId), correlationId, accountFilter); + } + /** + * Gets first tenanted AccountInfo object found based on provided filters + */ + getAccountInfoFilteredBy(accountFilter, correlationId) { + if (Object.keys(accountFilter).length === 0 || Object.values(accountFilter).every((value) => value === null || value === void 0 || value === "")) { + this.commonLogger.warning("getAccountInfoFilteredBy: Account filter is empty or invalid, returning null", correlationId); + return null; + } + const allAccounts = this.getAllAccounts(accountFilter, correlationId); + if (allAccounts.length > 1) { + const sortedAccounts = allAccounts.sort((account) => { + return account.idTokenClaims ? -1 : 1; + }); + return sortedAccounts[0]; + } else if (allAccounts.length === 1) { + return allAccounts[0]; + } else { + return null; + } + } + /** + * Returns a single matching + * @param accountFilter + * @returns + */ + getBaseAccountInfo(accountFilter, correlationId) { + const accountEntities = this.getAccountsFilteredBy(accountFilter, correlationId); + if (accountEntities.length > 0) { + return getAccountInfo(accountEntities[0]); + } else { + return null; + } + } + /** + * Matches filtered account entities with cached ID tokens that match the tenant profile-specific account filters + * and builds the account info objects from the matching ID token's claims + * @param cachedAccounts + * @param accountFilter + * @returns Array of AccountInfo objects that match account and tenant profile filters + */ + buildTenantProfiles(cachedAccounts, correlationId, accountFilter) { + return cachedAccounts.flatMap((accountEntity) => { + return this.getTenantProfilesFromAccountEntity(accountEntity, correlationId, accountFilter?.tenantId, accountFilter); + }); + } + getTenantedAccountInfoByFilter(accountInfo, tokenKeys, tenantProfile, correlationId, tenantProfileFilter) { + let tenantedAccountInfo = null; + let idTokenClaims; + if (tenantProfileFilter) { + if (!this.tenantProfileMatchesFilter(tenantProfile, tenantProfileFilter)) { + return null; + } + } + const idToken = this.getIdToken(accountInfo, correlationId, tokenKeys, tenantProfile.tenantId); + if (idToken) { + idTokenClaims = extractTokenClaims2(idToken.secret, this.cryptoImpl.base64Decode); + if (!this.idTokenClaimsMatchTenantProfileFilter(idTokenClaims, tenantProfileFilter)) { + return null; + } + } + tenantedAccountInfo = updateAccountTenantProfileData2(accountInfo, tenantProfile, idTokenClaims, idToken?.secret); + return tenantedAccountInfo; + } + getTenantProfilesFromAccountEntity(accountEntity, correlationId, targetTenantId, tenantProfileFilter) { + const accountInfo = getAccountInfo(accountEntity); + let searchTenantProfiles = accountInfo.tenantProfiles || /* @__PURE__ */ new Map(); + const tokenKeys = this.getTokenKeys(); + if (targetTenantId) { + const tenantProfile = searchTenantProfiles.get(targetTenantId); + if (tenantProfile) { + searchTenantProfiles = /* @__PURE__ */ new Map([ + [targetTenantId, tenantProfile] + ]); + } else { + return []; + } + } + const matchingTenantProfiles = []; + searchTenantProfiles.forEach((tenantProfile) => { + const tenantedAccountInfo = this.getTenantedAccountInfoByFilter(accountInfo, tokenKeys, tenantProfile, correlationId, tenantProfileFilter); + if (tenantedAccountInfo) { + matchingTenantProfiles.push(tenantedAccountInfo); + } + }); + return matchingTenantProfiles; + } + tenantProfileMatchesFilter(tenantProfile, tenantProfileFilter) { + if (!!tenantProfileFilter.localAccountId && !this.matchLocalAccountIdFromTenantProfile(tenantProfile, tenantProfileFilter.localAccountId)) { + return false; + } + if (!!tenantProfileFilter.name && !(tenantProfile.name === tenantProfileFilter.name)) { + return false; + } + if (tenantProfileFilter.isHomeTenant !== void 0 && !(tenantProfile.isHomeTenant === tenantProfileFilter.isHomeTenant)) { + return false; + } + if (!!tenantProfileFilter.username && !(this.matchUsername(tenantProfile.username, tenantProfileFilter.username) || !this.matchUsername(tenantProfile.upn, tenantProfileFilter.username))) { + return false; + } + if (!!tenantProfileFilter.loginHint && !this.matchLoginHintWithTenantProfile(tenantProfile, tenantProfileFilter.loginHint)) { + return false; + } + if (!!tenantProfileFilter.upn && !(tenantProfile.upn === tenantProfileFilter.upn)) { + return false; + } + return true; + } + idTokenClaimsMatchTenantProfileFilter(idTokenClaims, tenantProfileFilter) { + if (tenantProfileFilter) { + if (!!tenantProfileFilter.localAccountId && !this.matchLocalAccountIdFromTokenClaims(idTokenClaims, tenantProfileFilter.localAccountId)) { + return false; + } + if (!!tenantProfileFilter.loginHint && !this.matchLoginHintFromTokenClaims(idTokenClaims, tenantProfileFilter.loginHint)) { + return false; + } + if (!!tenantProfileFilter.username && !this.matchUsername(idTokenClaims.preferred_username, tenantProfileFilter.username) && !this.matchUsername(idTokenClaims.upn, tenantProfileFilter.username)) { + return false; + } + if (!!tenantProfileFilter.name && !this.matchName(idTokenClaims, tenantProfileFilter.name)) { + return false; + } + if (!!tenantProfileFilter.sid && !this.matchSid(idTokenClaims, tenantProfileFilter.sid)) { + return false; + } + } + return true; + } + /** + * saves a cache record + * @param cacheRecord {CacheRecord} + * @param storeInCache {?StoreInCache} + * @param correlationId {?string} correlation id + */ + async saveCacheRecord(cacheRecord, correlationId, kmsi, apiId, storeInCache) { + if (!cacheRecord) { + throw createClientAuthError2(invalidCacheRecord2); + } + try { + if (!!cacheRecord.account) { + await this.setAccount(cacheRecord.account, correlationId, kmsi, apiId); + } + if (!!cacheRecord.idToken && storeInCache?.idToken !== false) { + await this.setIdTokenCredential(cacheRecord.idToken, correlationId, kmsi); + } + if (!!cacheRecord.accessToken && storeInCache?.accessToken !== false) { + await this.saveAccessToken(cacheRecord.accessToken, correlationId, kmsi); + } + if (!!cacheRecord.refreshToken && storeInCache?.refreshToken !== false) { + await this.setRefreshTokenCredential(cacheRecord.refreshToken, correlationId, kmsi); + } + if (!!cacheRecord.appMetadata) { + this.setAppMetadata(cacheRecord.appMetadata, correlationId); + } + } catch (e) { + this.commonLogger?.error(`CacheManager.saveCacheRecord: failed`, correlationId); + if (e instanceof AuthError2) { + throw e; + } else { + throw createCacheError2(e); + } + } + } + /** + * saves access token credential + * @param credential + */ + async saveAccessToken(credential, correlationId, kmsi) { + const accessTokenFilter = { + clientId: credential.clientId, + credentialType: credential.credentialType, + environment: credential.environment, + homeAccountId: credential.homeAccountId, + realm: credential.realm, + tokenType: credential.tokenType + }; + const tokenKeys = this.getTokenKeys(); + const currentScopes = ScopeSet2.fromString(credential.target); + tokenKeys.accessToken.forEach((key) => { + if (!this.accessTokenKeyMatchesFilter(key, accessTokenFilter, false)) { + return; + } + const tokenEntity = this.getAccessTokenCredential(key, correlationId); + if (tokenEntity && this.credentialMatchesFilter(tokenEntity, accessTokenFilter, correlationId)) { + const tokenScopeSet = ScopeSet2.fromString(tokenEntity.target); + if (tokenScopeSet.intersectingScopeSets(currentScopes)) { + this.removeAccessToken(key, correlationId); + } + } + }); + await this.setAccessTokenCredential(credential, correlationId, kmsi); + } + /** + * Retrieve account entities matching all provided tenant-agnostic filters; if no filter is set, get all account entities in the cache + * Not checking for casing as keys are all generated in lower case, remember to convert to lower case if object properties are compared + * @param accountFilter - An object containing Account properties to filter by + */ + getAccountsFilteredBy(accountFilter, correlationId) { + const allAccountKeys = this.getAccountKeys(); + const matchingAccounts = []; + allAccountKeys.forEach((cacheKey2) => { + const entity = this.getAccount(cacheKey2, correlationId); + if (!entity) { + return; + } + if (!!accountFilter.homeAccountId && !this.matchHomeAccountId(entity, accountFilter.homeAccountId)) { + return; + } + if (!!accountFilter.environment && !this.matchEnvironment(entity, accountFilter.environment, correlationId)) { + return; + } + if (!!accountFilter.realm && !this.matchRealm(entity, accountFilter.realm)) { + return; + } + if (!!accountFilter.nativeAccountId && !this.matchNativeAccountId(entity, accountFilter.nativeAccountId)) { + return; + } + if (!!accountFilter.authorityType && !this.matchAuthorityType(entity, accountFilter.authorityType)) { + return; + } + const tenantProfileFilter = { + localAccountId: accountFilter?.localAccountId, + name: accountFilter?.name, + username: accountFilter?.username, + loginHint: accountFilter?.loginHint, + upn: accountFilter?.upn + }; + const matchingTenantProfiles = entity.tenantProfiles?.filter((tenantProfile) => { + return this.tenantProfileMatchesFilter(tenantProfile, tenantProfileFilter); + }); + if (matchingTenantProfiles && matchingTenantProfiles.length === 0) { + return; + } + matchingAccounts.push(entity); + }); + return matchingAccounts; + } + /** + * Returns whether or not the given credential entity matches the filter + * @param entity + * @param filter + * @param correlationId + * @returns + */ + credentialMatchesFilter(entity, filter, correlationId) { + if (!!filter.clientId && !this.matchClientId(entity, filter.clientId)) { + return false; + } + if (!!filter.userAssertionHash && !this.matchUserAssertionHash(entity, filter.userAssertionHash)) { + return false; + } + if (typeof filter.homeAccountId === "string" && !this.matchHomeAccountId(entity, filter.homeAccountId)) { + return false; + } + if (!!filter.environment && !this.matchEnvironment(entity, filter.environment, correlationId)) { + return false; + } + if (!!filter.realm && !this.matchRealm(entity, filter.realm)) { + return false; + } + if (!!filter.credentialType && !this.matchCredentialType(entity, filter.credentialType)) { + return false; + } + if (!!filter.familyId && !this.matchFamilyId(entity, filter.familyId)) { + return false; + } + if (!!filter.target && !this.matchTarget(entity, filter.target)) { + return false; + } + if (entity.credentialType === CredentialType2.ACCESS_TOKEN_WITH_AUTH_SCHEME) { + if (!!filter.tokenType && !this.matchTokenType(entity, filter.tokenType)) { + return false; + } + if (filter.tokenType === AuthenticationScheme2.SSH) { + if (filter.keyId && !this.matchKeyId(entity, filter.keyId)) { + return false; + } + } + } + return true; + } + /** + * retrieve appMetadata matching all provided filters; if no filter is set, get all appMetadata + * @param filter + * @param correlationId + */ + getAppMetadataFilteredBy(filter, correlationId) { + const allCacheKeys = this.getKeys(); + const matchingAppMetadata = {}; + allCacheKeys.forEach((cacheKey2) => { + if (!this.isAppMetadata(cacheKey2)) { + return; + } + const entity = this.getAppMetadata(cacheKey2, correlationId); + if (!entity) { + return; + } + if (!!filter.environment && !this.matchEnvironment(entity, filter.environment, correlationId)) { + return; + } + if (!!filter.clientId && !this.matchClientId(entity, filter.clientId)) { + return; + } + matchingAppMetadata[cacheKey2] = entity; + }); + return matchingAppMetadata; + } + /** + * retrieve authorityMetadata that contains a matching alias + * @param host + * @param correlationId + */ + getAuthorityMetadataByAlias(host, correlationId) { + const allCacheKeys = this.getAuthorityMetadataKeys(); + let matchedEntity = null; + allCacheKeys.forEach((cacheKey2) => { + if (!this.isAuthorityMetadata(cacheKey2) || cacheKey2.indexOf(this.clientId) === -1) { + return; + } + const entity = this.getAuthorityMetadata(cacheKey2, correlationId); + if (!entity) { + return; + } + if (entity.aliases.indexOf(host) === -1) { + return; + } + matchedEntity = entity; + }); + return matchedEntity; + } + /** + * Removes all accounts and related tokens from cache. + */ + removeAllAccounts(correlationId) { + const accounts = this.getAllAccounts({}, correlationId); + accounts.forEach((account) => { + this.removeAccount(account, correlationId); + }); + } + /** + * Removes the account and related tokens for a given account key + * @param account + */ + removeAccount(account, correlationId) { + this.removeAccountContext(account, correlationId); + const accountKeys = this.getAccountKeys(); + const keyFilter = (key) => { + return key.includes(account.homeAccountId) && key.includes(account.environment); + }; + accountKeys.filter(keyFilter).forEach((key) => { + this.removeItem(key, correlationId); + this.performanceClient.incrementFields({ accountsRemoved: 1 }, correlationId); + }); + } + /** + * Removes credentials associated with the provided account + * @param account + */ + removeAccountContext(account, correlationId) { + const allTokenKeys = this.getTokenKeys(); + const keyFilter = (key) => { + return key.includes(account.homeAccountId) && key.includes(account.environment); + }; + allTokenKeys.idToken.filter(keyFilter).forEach((key) => { + this.removeIdToken(key, correlationId); + }); + allTokenKeys.accessToken.filter(keyFilter).forEach((key) => { + this.removeAccessToken(key, correlationId); + }); + allTokenKeys.refreshToken.filter(keyFilter).forEach((key) => { + this.removeRefreshToken(key, correlationId); + }); + } + /** + * returns a boolean if the given credential is removed + * @param key + * @param correlationId + */ + removeAccessToken(key, correlationId) { + const credential = this.getAccessTokenCredential(key, correlationId); + if (!credential) { + return; + } + this.removeItem(key, correlationId); + this.performanceClient.incrementFields({ accessTokensRemoved: 1 }, correlationId); + if (credential.credentialType.toLowerCase() === CredentialType2.ACCESS_TOKEN_WITH_AUTH_SCHEME.toLowerCase()) { + if (credential.tokenType === AuthenticationScheme2.POP) { + const accessTokenWithAuthSchemeEntity = credential; + const kid = accessTokenWithAuthSchemeEntity.keyId; + if (kid) { + void this.cryptoImpl.removeTokenBindingKey(kid, correlationId).catch(() => { + this.commonLogger.error(`Failed to remove token binding key '${kid}'`, correlationId); + this.performanceClient?.incrementFields({ removeTokenBindingKeyFailure: 1 }, correlationId); + }); + } + } + } + } + /** + * Removes all app metadata objects from cache. + */ + removeAppMetadata(correlationId) { + const allCacheKeys = this.getKeys(); + allCacheKeys.forEach((cacheKey2) => { + if (this.isAppMetadata(cacheKey2)) { + this.removeItem(cacheKey2, correlationId); + } + }); + return true; + } + /** + * Retrieve IdTokenEntity from cache + * @param account {AccountInfo} + * @param tokenKeys {?TokenKeys} + * @param targetRealm {?string} + * @param performanceClient {?IPerformanceClient} + * @param correlationId {?string} + */ + getIdToken(account, correlationId, tokenKeys, targetRealm) { + this.commonLogger.trace("CacheManager - getIdToken called", correlationId); + const idTokenFilter = { + homeAccountId: account.homeAccountId, + environment: account.environment, + credentialType: CredentialType2.ID_TOKEN, + clientId: this.clientId, + realm: targetRealm + }; + const idTokenMap = this.getIdTokensByFilter(idTokenFilter, correlationId, tokenKeys); + const numIdTokens = idTokenMap.size; + if (numIdTokens < 1) { + this.commonLogger.info("CacheManager:getIdToken - No token found", correlationId); + return null; + } else if (numIdTokens > 1) { + let tokensToBeRemoved = idTokenMap; + if (!targetRealm) { + const homeIdTokenMap = /* @__PURE__ */ new Map(); + idTokenMap.forEach((idToken, key) => { + if (idToken.realm === account.tenantId) { + homeIdTokenMap.set(key, idToken); + } + }); + const numHomeIdTokens = homeIdTokenMap.size; + if (numHomeIdTokens < 1) { + this.commonLogger.info("CacheManager:getIdToken - Multiple ID tokens found for account but none match account entity tenant id, returning first result", correlationId); + return idTokenMap.values().next().value ?? null; + } else if (numHomeIdTokens === 1) { + this.commonLogger.info("CacheManager:getIdToken - Multiple ID tokens found for account, defaulting to home tenant profile", correlationId); + return homeIdTokenMap.values().next().value ?? null; + } else { + tokensToBeRemoved = homeIdTokenMap; + } + } + this.commonLogger.info("CacheManager:getIdToken - Multiple matching ID tokens found, clearing them", correlationId); + tokensToBeRemoved.forEach((idToken, key) => { + this.removeIdToken(key, correlationId); + }); + this.performanceClient.addFields({ multiMatchedID: idTokenMap.size }, correlationId); + return null; + } + this.commonLogger.info("CacheManager:getIdToken - Returning ID token", correlationId); + return idTokenMap.values().next().value ?? null; + } + /** + * Gets all idTokens matching the given filter + * @param filter + * @returns + */ + getIdTokensByFilter(filter, correlationId, tokenKeys) { + const idTokenKeys = tokenKeys && tokenKeys.idToken || this.getTokenKeys().idToken; + const idTokens = /* @__PURE__ */ new Map(); + idTokenKeys.forEach((key) => { + if (!this.idTokenKeyMatchesFilter(key, { + clientId: this.clientId, + ...filter + })) { + return; + } + const idToken = this.getIdTokenCredential(key, correlationId); + if (idToken && this.credentialMatchesFilter(idToken, filter, correlationId)) { + idTokens.set(key, idToken); + } + }); + return idTokens; + } + /** + * Validate the cache key against filter before retrieving and parsing cache value + * @param key + * @param filter + * @returns + */ + idTokenKeyMatchesFilter(inputKey, filter) { + const key = inputKey.toLowerCase(); + if (filter.clientId && key.indexOf(filter.clientId.toLowerCase()) === -1) { + return false; + } + if (filter.homeAccountId && key.indexOf(filter.homeAccountId.toLowerCase()) === -1) { + return false; + } + return true; + } + /** + * Removes idToken from the cache + * @param key + */ + removeIdToken(key, correlationId) { + this.removeItem(key, correlationId); + } + /** + * Removes refresh token from the cache + * @param key + */ + removeRefreshToken(key, correlationId) { + this.removeItem(key, correlationId); + } + /** + * Retrieve AccessTokenEntity from cache + * @param account {AccountInfo} + * @param request {BaseAuthRequest} + * @param tokenKeys {?TokenKeys} + * @param performanceClient {?IPerformanceClient} + */ + getAccessToken(account, request, tokenKeys, targetRealm) { + const correlationId = request.correlationId; + this.commonLogger.trace("CacheManager - getAccessToken called", correlationId); + const scopes = ScopeSet2.createSearchScopes(request.scopes); + const authScheme = request.authenticationScheme || AuthenticationScheme2.BEARER; + const credentialType = authScheme && authScheme.toLowerCase() !== AuthenticationScheme2.BEARER.toLowerCase() ? CredentialType2.ACCESS_TOKEN_WITH_AUTH_SCHEME : CredentialType2.ACCESS_TOKEN; + const accessTokenFilter = { + homeAccountId: account.homeAccountId, + environment: account.environment, + credentialType, + clientId: this.clientId, + realm: targetRealm || account.tenantId, + target: scopes, + tokenType: authScheme, + keyId: request.sshKid + }; + const accessTokenKeys = tokenKeys && tokenKeys.accessToken || this.getTokenKeys().accessToken; + const accessTokens = []; + accessTokenKeys.forEach((key) => { + if (this.accessTokenKeyMatchesFilter(key, accessTokenFilter, true)) { + const accessToken = this.getAccessTokenCredential(key, correlationId); + if (accessToken && this.credentialMatchesFilter(accessToken, accessTokenFilter, correlationId)) { + accessTokens.push(accessToken); + } + } + }); + const numAccessTokens = accessTokens.length; + if (numAccessTokens < 1) { + this.commonLogger.info("CacheManager:getAccessToken - No token found", correlationId); + return null; + } else if (numAccessTokens > 1) { + this.commonLogger.info("CacheManager:getAccessToken - Multiple access tokens found, clearing them", correlationId); + accessTokens.forEach((accessToken) => { + this.removeAccessToken(this.generateCredentialKey(accessToken), correlationId); + }); + this.performanceClient.addFields({ multiMatchedAT: accessTokens.length }, correlationId); + return null; + } + this.commonLogger.info("CacheManager:getAccessToken - Returning access token", correlationId); + return accessTokens[0]; + } + /** + * Validate the cache key against filter before retrieving and parsing cache value + * @param key + * @param filter + * @param keyMustContainAllScopes + * @returns + */ + accessTokenKeyMatchesFilter(inputKey, filter, keyMustContainAllScopes) { + const key = inputKey.toLowerCase(); + if (filter.clientId && key.indexOf(filter.clientId.toLowerCase()) === -1) { + return false; + } + if (filter.homeAccountId && key.indexOf(filter.homeAccountId.toLowerCase()) === -1) { + return false; + } + if (filter.realm && key.indexOf(filter.realm.toLowerCase()) === -1) { + return false; + } + if (filter.target) { + const scopes = filter.target.asArray(); + for (let i = 0; i < scopes.length; i++) { + if (keyMustContainAllScopes && !key.includes(scopes[i].toLowerCase())) { + return false; + } else if (!keyMustContainAllScopes && key.includes(scopes[i].toLowerCase())) { + return true; + } + } + } + return true; + } + /** + * Gets all access tokens matching the filter + * @param filter + * @returns + */ + getAccessTokensByFilter(filter, correlationId) { + const tokenKeys = this.getTokenKeys(); + const accessTokens = []; + tokenKeys.accessToken.forEach((key) => { + if (!this.accessTokenKeyMatchesFilter(key, filter, true)) { + return; + } + const accessToken = this.getAccessTokenCredential(key, correlationId); + if (accessToken && this.credentialMatchesFilter(accessToken, filter, correlationId)) { + accessTokens.push(accessToken); + } + }); + return accessTokens; + } + /** + * Helper to retrieve the appropriate refresh token from cache + * @param account {AccountInfo} + * @param familyRT {boolean} + * @param tokenKeys {?TokenKeys} + * @param performanceClient {?IPerformanceClient} + * @param correlationId {?string} + */ + getRefreshToken(account, familyRT, correlationId, tokenKeys) { + this.commonLogger.trace("CacheManager - getRefreshToken called", correlationId); + const id = familyRT ? THE_FAMILY_ID2 : void 0; + const refreshTokenFilter = { + homeAccountId: account.homeAccountId, + environment: account.environment, + credentialType: CredentialType2.REFRESH_TOKEN, + clientId: this.clientId, + familyId: id + }; + const refreshTokenKeys = tokenKeys && tokenKeys.refreshToken || this.getTokenKeys().refreshToken; + const refreshTokens = []; + refreshTokenKeys.forEach((key) => { + if (this.refreshTokenKeyMatchesFilter(key, refreshTokenFilter)) { + const refreshToken = this.getRefreshTokenCredential(key, correlationId); + if (refreshToken && this.credentialMatchesFilter(refreshToken, refreshTokenFilter, correlationId)) { + refreshTokens.push(refreshToken); + } + } + }); + const numRefreshTokens = refreshTokens.length; + if (numRefreshTokens < 1) { + this.commonLogger.info("CacheManager:getRefreshToken - No refresh token found.", correlationId); + return null; + } + if (numRefreshTokens > 1) { + this.performanceClient.addFields({ multiMatchedRT: numRefreshTokens }, correlationId); + } + this.commonLogger.info("CacheManager:getRefreshToken - returning refresh token", correlationId); + return refreshTokens[0]; + } + /** + * Validate the cache key against filter before retrieving and parsing cache value + * @param key + * @param filter + */ + refreshTokenKeyMatchesFilter(inputKey, filter) { + const key = inputKey.toLowerCase(); + if (filter.familyId && key.indexOf(filter.familyId.toLowerCase()) === -1) { + return false; + } + if (!filter.familyId && filter.clientId && key.indexOf(filter.clientId.toLowerCase()) === -1) { + return false; + } + if (filter.homeAccountId && key.indexOf(filter.homeAccountId.toLowerCase()) === -1) { + return false; + } + return true; + } + /** + * Retrieve AppMetadataEntity from cache + */ + readAppMetadataFromCache(environment, correlationId) { + const appMetadataFilter = { + environment, + clientId: this.clientId + }; + const appMetadata = this.getAppMetadataFilteredBy(appMetadataFilter, correlationId); + const appMetadataEntries = Object.keys(appMetadata).map((key) => appMetadata[key]); + const numAppMetadata = appMetadataEntries.length; + if (numAppMetadata < 1) { + return null; + } else if (numAppMetadata > 1) { + throw createClientAuthError2(multipleMatchingAppMetadata2); + } + return appMetadataEntries[0]; + } + /** + * Return the family_id value associated with FOCI + * @param environment + * @param clientId + */ + isAppMetadataFOCI(environment, correlationId) { + const appMetadata = this.readAppMetadataFromCache(environment, correlationId); + return !!(appMetadata && appMetadata.familyId === THE_FAMILY_ID2); + } + /** + * helper to match account ids + * @param value + * @param homeAccountId + */ + matchHomeAccountId(entity, homeAccountId) { + return !!(typeof entity.homeAccountId === "string" && homeAccountId === entity.homeAccountId); + } + /** + * helper to match account ids + * @param entity + * @param localAccountId + * @returns + */ + matchLocalAccountIdFromTokenClaims(tokenClaims, localAccountId) { + const idTokenLocalAccountId = tokenClaims.oid || tokenClaims.sub; + return localAccountId === idTokenLocalAccountId; + } + matchLocalAccountIdFromTenantProfile(tenantProfile, localAccountId) { + return tenantProfile.localAccountId === localAccountId; + } + /** + * helper to match names + * @param entity + * @param name + * @returns true if the downcased name properties are present and match in the filter and the entity + */ + matchName(claims, name5) { + return !!(name5.toLowerCase() === claims.name?.toLowerCase()); + } + /** + * helper to match usernames + * @param entity + * @param username + * @returns + */ + matchUsername(cachedUsername, filterUsername) { + return !!(cachedUsername && typeof cachedUsername === "string" && filterUsername?.toLowerCase() === cachedUsername.toLowerCase()); + } + /** + * helper to match loginhints + * @param entity + * @param loginHint + * @returns + */ + matchLoginHintWithTenantProfile(tenantProfile, loginHintFilter) { + return tenantProfile.loginHint === loginHintFilter || tenantProfile.username === loginHintFilter || tenantProfile.upn === loginHintFilter; + } + /** + * helper to match assertion + * @param value + * @param oboAssertion + */ + matchUserAssertionHash(entity, userAssertionHash) { + return !!(entity.userAssertionHash && userAssertionHash === entity.userAssertionHash); + } + /** + * helper to match environment + * @param value + * @param environment + */ + matchEnvironment(entity, environment, correlationId) { + if (this.staticAuthorityOptions) { + const staticAliases = getAliasesFromStaticSources2(this.staticAuthorityOptions, this.commonLogger, correlationId); + if (staticAliases.includes(environment) && staticAliases.includes(entity.environment)) { + return true; + } + } + const cloudMetadata = this.getAuthorityMetadataByAlias(environment, correlationId); + if (cloudMetadata && cloudMetadata.aliases.indexOf(entity.environment) > -1) { + return true; + } + return false; + } + /** + * helper to match credential type + * @param entity + * @param credentialType + */ + matchCredentialType(entity, credentialType) { + return entity.credentialType && credentialType.toLowerCase() === entity.credentialType.toLowerCase(); + } + /** + * helper to match client ids + * @param entity + * @param clientId + */ + matchClientId(entity, clientId) { + return !!(entity.clientId && clientId === entity.clientId); + } + /** + * helper to match family ids + * @param entity + * @param familyId + */ + matchFamilyId(entity, familyId) { + return !!(entity.familyId && familyId === entity.familyId); + } + /** + * helper to match realm + * @param entity + * @param realm + */ + matchRealm(entity, realm) { + return !!(entity.realm?.toLowerCase() === realm.toLowerCase()); + } + /** + * helper to match nativeAccountId + * @param entity + * @param nativeAccountId + * @returns boolean indicating the match result + */ + matchNativeAccountId(entity, nativeAccountId) { + return !!(entity.nativeAccountId && nativeAccountId === entity.nativeAccountId); + } + /** + * helper to match loginHint which can be either: + * 1. login_hint ID token claim + * 2. username in cached account object + * 3. upn in ID token claims + * @param entity + * @param loginHint + * @returns + */ + matchLoginHintFromTokenClaims(tokenClaims, loginHint) { + if (tokenClaims.login_hint === loginHint) { + return true; + } + if (tokenClaims.preferred_username === loginHint) { + return true; + } + if (tokenClaims.upn === loginHint) { + return true; + } + if (tokenClaims.emails && tokenClaims.emails.includes(loginHint)) { + return true; + } + return false; + } + /** + * Helper to match sid + * @param entity + * @param sid + * @returns true if the sid claim is present and matches the filter + */ + matchSid(idTokenClaims, sid) { + return idTokenClaims.sid === sid; + } + matchAuthorityType(entity, authorityType) { + return !!(entity.authorityType && authorityType.toLowerCase() === entity.authorityType.toLowerCase()); + } + /** + * Returns true if the target scopes are a subset of the current entity's scopes, false otherwise. + * @param entity + * @param target + */ + matchTarget(entity, target) { + const isNotAccessTokenCredential = entity.credentialType !== CredentialType2.ACCESS_TOKEN && entity.credentialType !== CredentialType2.ACCESS_TOKEN_WITH_AUTH_SCHEME; + if (isNotAccessTokenCredential || !entity.target) { + return false; + } + const entityScopeSet = ScopeSet2.fromString(entity.target); + return entityScopeSet.containsScopeSet(target); + } + /** + * Returns true if the credential's tokenType or Authentication Scheme matches the one in the request, false otherwise + * @param entity + * @param tokenType + */ + matchTokenType(entity, tokenType) { + return !!(entity.tokenType && entity.tokenType === tokenType); + } + /** + * Returns true if the credential's keyId matches the one in the request, false otherwise + * @param entity + * @param keyId + */ + matchKeyId(entity, keyId) { + return !!(entity.keyId && entity.keyId === keyId); + } + /** + * returns if a given cache entity is of the type appmetadata + * @param key + */ + isAppMetadata(key) { + return key.indexOf(APP_METADATA2) !== -1; + } + /** + * returns if a given cache entity is of the type authoritymetadata + * @param key + */ + isAuthorityMetadata(key) { + return key.indexOf(AUTHORITY_METADATA_CACHE_KEY) !== -1; + } + /** + * returns cache key used for cloud instance metadata + */ + generateAuthorityMetadataCacheKey(authority) { + return `${AUTHORITY_METADATA_CACHE_KEY}-${this.clientId}-${authority}`; + } + /** + * Helper to convert serialized data to object + * @param obj + * @param json + */ + static toObject(obj, json) { + for (const propertyName in json) { + obj[propertyName] = json[propertyName]; + } + return obj; + } + }; + DefaultStorageClass2 = class extends CacheManager2 { + async setAccount() { + throw createClientAuthError2(methodNotImplemented2); + } + getAccount() { + throw createClientAuthError2(methodNotImplemented2); + } + async setIdTokenCredential() { + throw createClientAuthError2(methodNotImplemented2); + } + getIdTokenCredential() { + throw createClientAuthError2(methodNotImplemented2); + } + async setAccessTokenCredential() { + throw createClientAuthError2(methodNotImplemented2); + } + getAccessTokenCredential() { + throw createClientAuthError2(methodNotImplemented2); + } + async setRefreshTokenCredential() { + throw createClientAuthError2(methodNotImplemented2); + } + getRefreshTokenCredential() { + throw createClientAuthError2(methodNotImplemented2); + } + setAppMetadata() { + throw createClientAuthError2(methodNotImplemented2); + } + getAppMetadata() { + throw createClientAuthError2(methodNotImplemented2); + } + setServerTelemetry() { + throw createClientAuthError2(methodNotImplemented2); + } + getServerTelemetry() { + throw createClientAuthError2(methodNotImplemented2); + } + setAuthorityMetadata() { + throw createClientAuthError2(methodNotImplemented2); + } + getAuthorityMetadata() { + throw createClientAuthError2(methodNotImplemented2); + } + getAuthorityMetadataKeys() { + throw createClientAuthError2(methodNotImplemented2); + } + setThrottlingCache() { + throw createClientAuthError2(methodNotImplemented2); + } + getThrottlingCache() { + throw createClientAuthError2(methodNotImplemented2); + } + removeItem() { + throw createClientAuthError2(methodNotImplemented2); + } + getKeys() { + throw createClientAuthError2(methodNotImplemented2); + } + getAccountKeys() { + throw createClientAuthError2(methodNotImplemented2); + } + getTokenKeys() { + throw createClientAuthError2(methodNotImplemented2); + } + generateCredentialKey() { + throw createClientAuthError2(methodNotImplemented2); + } + generateAccountKey() { + throw createClientAuthError2(methodNotImplemented2); + } + }; + } +}); + +// node_modules/@azure/msal-common/dist/telemetry/performance/PerformanceEvent.mjs +var PerformanceEventStatus2; +var init_PerformanceEvent = __esm({ + "node_modules/@azure/msal-common/dist/telemetry/performance/PerformanceEvent.mjs"() { + "use strict"; + PerformanceEventStatus2 = { + NotStarted: 0, + InProgress: 1, + Completed: 2 + }; + } +}); + +// node_modules/@azure/msal-common/dist/telemetry/performance/StubPerformanceClient.mjs +var StubPerformanceClient2; +var init_StubPerformanceClient = __esm({ + "node_modules/@azure/msal-common/dist/telemetry/performance/StubPerformanceClient.mjs"() { + "use strict"; + init_PerformanceEvent(); + StubPerformanceClient2 = class { + generateId() { + return "callback-id"; + } + startMeasurement(measureName, correlationId) { + return { + end: () => null, + discard: () => { + }, + add: () => { + }, + increment: () => { + }, + event: { + eventId: this.generateId(), + status: PerformanceEventStatus2.InProgress, + authority: "", + libraryName: "", + libraryVersion: "", + clientId: "", + name: measureName, + startTimeMs: Date.now(), + correlationId: correlationId || "" + } + }; + } + endMeasurement() { + return null; + } + discardMeasurements() { + return; + } + removePerformanceCallback() { + return true; + } + addPerformanceCallback() { + return ""; + } + emitEvents() { + return; + } + addFields() { + return; + } + incrementFields() { + return; + } + cacheEventByCorrelationId() { + return; + } + }; + } +}); + +// node_modules/@azure/msal-common/dist/config/ClientConfiguration.mjs +function buildClientConfiguration2({ authOptions: userAuthOptions, systemOptions: userSystemOptions, loggerOptions: userLoggerOption, storageInterface: storageImplementation, networkInterface: networkImplementation, cryptoInterface: cryptoImplementation, clientCredentials, libraryInfo, telemetry, serverTelemetryManager, persistencePlugin, serializableCache }) { + const loggerOptions = { + ...DEFAULT_LOGGER_IMPLEMENTATION2, + ...userLoggerOption + }; + return { + authOptions: buildAuthOptions2(userAuthOptions), + systemOptions: { ...DEFAULT_SYSTEM_OPTIONS3, ...userSystemOptions }, + loggerOptions, + storageInterface: storageImplementation || new DefaultStorageClass2(userAuthOptions.clientId, DEFAULT_CRYPTO_IMPLEMENTATION2, new Logger2(loggerOptions), new StubPerformanceClient2()), + networkInterface: networkImplementation || DEFAULT_NETWORK_IMPLEMENTATION2, + cryptoInterface: cryptoImplementation || DEFAULT_CRYPTO_IMPLEMENTATION2, + clientCredentials: clientCredentials || DEFAULT_CLIENT_CREDENTIALS2, + libraryInfo: { ...DEFAULT_LIBRARY_INFO2, ...libraryInfo }, + telemetry: { ...DEFAULT_TELEMETRY_OPTIONS3, ...telemetry }, + serverTelemetryManager: serverTelemetryManager || null, + persistencePlugin: persistencePlugin || null, + serializableCache: serializableCache || null + }; +} +function buildAuthOptions2(authOptions) { + return { + clientCapabilities: [], + azureCloudOptions: DEFAULT_AZURE_CLOUD_OPTIONS2, + instanceAware: false, + isMcp: false, + ...authOptions + }; +} +function isOidcProtocolMode2(config2) { + return config2.authOptions.authority.options.protocolMode === ProtocolMode2.OIDC; +} +var DEFAULT_SYSTEM_OPTIONS3, DEFAULT_LOGGER_IMPLEMENTATION2, DEFAULT_NETWORK_IMPLEMENTATION2, DEFAULT_LIBRARY_INFO2, DEFAULT_CLIENT_CREDENTIALS2, DEFAULT_AZURE_CLOUD_OPTIONS2, DEFAULT_TELEMETRY_OPTIONS3; +var init_ClientConfiguration = __esm({ + "node_modules/@azure/msal-common/dist/config/ClientConfiguration.mjs"() { + "use strict"; + init_ICrypto(); + init_Logger(); + init_Constants(); + init_packageMetadata(); + init_AuthorityOptions(); + init_CacheManager(); + init_ProtocolMode(); + init_ClientAuthError(); + init_StubPerformanceClient(); + init_ClientAuthErrorCodes(); + DEFAULT_SYSTEM_OPTIONS3 = { + tokenRenewalOffsetSeconds: DEFAULT_TOKEN_RENEWAL_OFFSET_SEC2, + preventCorsPreflight: false + }; + DEFAULT_LOGGER_IMPLEMENTATION2 = { + loggerCallback: () => { + }, + piiLoggingEnabled: false, + logLevel: LogLevel2.Info, + correlationId: "" + }; + DEFAULT_NETWORK_IMPLEMENTATION2 = { + async sendGetRequestAsync() { + throw createClientAuthError2(methodNotImplemented2); + }, + async sendPostRequestAsync() { + throw createClientAuthError2(methodNotImplemented2); + } + }; + DEFAULT_LIBRARY_INFO2 = { + sku: SKU, + version: version4, + cpu: "", + os: "" + }; + DEFAULT_CLIENT_CREDENTIALS2 = { + clientSecret: "", + clientAssertion: void 0 + }; + DEFAULT_AZURE_CLOUD_OPTIONS2 = { + azureCloudInstance: AzureCloudInstance2.None, + tenant: `${DEFAULT_COMMON_TENANT}` + }; + DEFAULT_TELEMETRY_OPTIONS3 = { + application: { + appName: "", + appVersion: "" + } + }; + } +}); + +// node_modules/@azure/msal-common/dist/cache/persistence/TokenCacheContext.mjs +var TokenCacheContext2; +var init_TokenCacheContext = __esm({ + "node_modules/@azure/msal-common/dist/cache/persistence/TokenCacheContext.mjs"() { + "use strict"; + TokenCacheContext2 = class { + constructor(tokenCache, hasChanged) { + this.cache = tokenCache; + this.hasChanged = hasChanged; + } + /** + * boolean which indicates the changes in cache + */ + get cacheHasChanged() { + return this.hasChanged; + } + /** + * function to retrieve the token cache + */ + get tokenCache() { + return this.cache; + } + }; + } +}); + +// node_modules/@azure/msal-common/dist/utils/TimeUtils.mjs +var TimeUtils_exports2 = {}; +__export(TimeUtils_exports2, { + delay: () => delay2, + isCacheExpired: () => isCacheExpired2, + isTokenExpired: () => isTokenExpired2, + nowSeconds: () => nowSeconds2, + toDateFromSeconds: () => toDateFromSeconds2, + toSecondsFromDate: () => toSecondsFromDate2, + wasClockTurnedBack: () => wasClockTurnedBack2 +}); +function nowSeconds2() { + return Math.round((/* @__PURE__ */ new Date()).getTime() / 1e3); +} +function toSecondsFromDate2(date4) { + return date4.getTime() / 1e3; +} +function toDateFromSeconds2(seconds) { + if (seconds) { + return new Date(Number(seconds) * 1e3); + } + return /* @__PURE__ */ new Date(); +} +function isTokenExpired2(expiresOn, offset) { + const expirationSec = Number(expiresOn) || 0; + const offsetCurrentTimeSec = nowSeconds2() + offset; + return offsetCurrentTimeSec > expirationSec; +} +function isCacheExpired2(lastUpdatedAt, cacheRetentionDays) { + const cacheExpirationTimestamp = Number(lastUpdatedAt) + cacheRetentionDays * 24 * 60 * 60 * 1e3; + return Date.now() > cacheExpirationTimestamp; +} +function wasClockTurnedBack2(cachedAt) { + const cachedAtSec = Number(cachedAt); + return cachedAtSec > nowSeconds2(); +} +function delay2(t, value) { + return new Promise((resolve) => setTimeout(() => resolve(value), t)); +} +var init_TimeUtils = __esm({ + "node_modules/@azure/msal-common/dist/utils/TimeUtils.mjs"() { + "use strict"; + } +}); + +// node_modules/@azure/msal-common/dist/cache/utils/CacheHelpers.mjs +var CacheHelpers_exports2 = {}; +__export(CacheHelpers_exports2, { + createAccessTokenEntity: () => createAccessTokenEntity2, + createIdTokenEntity: () => createIdTokenEntity2, + createRefreshTokenEntity: () => createRefreshTokenEntity2, + generateAppMetadataKey: () => generateAppMetadataKey2, + generateAuthorityMetadataExpiresAt: () => generateAuthorityMetadataExpiresAt2, + isAccessTokenEntity: () => isAccessTokenEntity2, + isAppMetadataEntity: () => isAppMetadataEntity2, + isAuthorityMetadataEntity: () => isAuthorityMetadataEntity2, + isAuthorityMetadataExpired: () => isAuthorityMetadataExpired2, + isCredentialEntity: () => isCredentialEntity2, + isIdTokenEntity: () => isIdTokenEntity2, + isRefreshTokenEntity: () => isRefreshTokenEntity2, + isServerTelemetryEntity: () => isServerTelemetryEntity2, + isThrottlingEntity: () => isThrottlingEntity2, + updateAuthorityEndpointMetadata: () => updateAuthorityEndpointMetadata2, + updateCloudDiscoveryMetadata: () => updateCloudDiscoveryMetadata2 +}); +function createIdTokenEntity2(homeAccountId, environment, idToken, clientId, tenantId) { + const idTokenEntity = { + credentialType: CredentialType2.ID_TOKEN, + homeAccountId, + environment, + clientId, + secret: idToken, + realm: tenantId, + lastUpdatedAt: Date.now().toString() + // Set the last updated time to now + }; + return idTokenEntity; +} +function createAccessTokenEntity2(homeAccountId, environment, accessToken, clientId, tenantId, scopes, expiresOn, extExpiresOn, base64Decode, refreshOn, tokenType, userAssertionHash, keyId) { + const atEntity = { + homeAccountId, + credentialType: CredentialType2.ACCESS_TOKEN, + secret: accessToken, + cachedAt: nowSeconds2().toString(), + expiresOn: expiresOn.toString(), + extendedExpiresOn: extExpiresOn.toString(), + environment, + clientId, + realm: tenantId, + target: scopes, + tokenType: tokenType || AuthenticationScheme2.BEARER, + lastUpdatedAt: Date.now().toString() + // Set the last updated time to now + }; + if (userAssertionHash) { + atEntity.userAssertionHash = userAssertionHash; + } + if (refreshOn) { + atEntity.refreshOn = refreshOn.toString(); + } + if (atEntity.tokenType?.toLowerCase() !== AuthenticationScheme2.BEARER.toLowerCase()) { + atEntity.credentialType = CredentialType2.ACCESS_TOKEN_WITH_AUTH_SCHEME; + switch (atEntity.tokenType) { + case AuthenticationScheme2.POP: + const tokenClaims = extractTokenClaims2(accessToken, base64Decode); + if (!tokenClaims?.cnf?.kid) { + throw createClientAuthError2(tokenClaimsCnfRequiredForSignedJwt2); + } + atEntity.keyId = tokenClaims.cnf.kid; + break; + case AuthenticationScheme2.SSH: + atEntity.keyId = keyId; + } + } + return atEntity; +} +function createRefreshTokenEntity2(homeAccountId, environment, refreshToken, clientId, familyId, userAssertionHash, expiresOn) { + const rtEntity = { + credentialType: CredentialType2.REFRESH_TOKEN, + homeAccountId, + environment, + clientId, + secret: refreshToken, + lastUpdatedAt: Date.now().toString() + }; + if (userAssertionHash) { + rtEntity.userAssertionHash = userAssertionHash; + } + if (familyId) { + rtEntity.familyId = familyId; + } + if (expiresOn) { + rtEntity.expiresOn = expiresOn.toString(); + } + return rtEntity; +} +function isCredentialEntity2(entity) { + return entity.hasOwnProperty("homeAccountId") && entity.hasOwnProperty("environment") && entity.hasOwnProperty("credentialType") && entity.hasOwnProperty("clientId") && entity.hasOwnProperty("secret"); +} +function isAccessTokenEntity2(entity) { + if (!entity) { + return false; + } + return isCredentialEntity2(entity) && entity.hasOwnProperty("realm") && entity.hasOwnProperty("target") && (entity["credentialType"] === CredentialType2.ACCESS_TOKEN || entity["credentialType"] === CredentialType2.ACCESS_TOKEN_WITH_AUTH_SCHEME); +} +function isIdTokenEntity2(entity) { + if (!entity) { + return false; + } + return isCredentialEntity2(entity) && entity.hasOwnProperty("realm") && entity["credentialType"] === CredentialType2.ID_TOKEN; +} +function isRefreshTokenEntity2(entity) { + if (!entity) { + return false; + } + return isCredentialEntity2(entity) && entity["credentialType"] === CredentialType2.REFRESH_TOKEN; +} +function isServerTelemetryEntity2(key, entity) { + const validateKey = key.indexOf(SERVER_TELEM_CACHE_KEY) === 0; + let validateEntity = true; + if (entity) { + validateEntity = entity.hasOwnProperty("failedRequests") && entity.hasOwnProperty("errors") && entity.hasOwnProperty("cacheHits"); + } + return validateKey && validateEntity; +} +function isThrottlingEntity2(key, entity) { + let validateKey = false; + if (key) { + validateKey = key.indexOf(THROTTLING_PREFIX) === 0; + } + let validateEntity = true; + if (entity) { + validateEntity = entity.hasOwnProperty("throttleTime"); + } + return validateKey && validateEntity; +} +function generateAppMetadataKey2({ environment, clientId }) { + const appMetaDataKeyArray = [ + APP_METADATA2, + environment, + clientId + ]; + return appMetaDataKeyArray.join(CACHE_KEY_SEPARATOR).toLowerCase(); +} +function isAppMetadataEntity2(key, entity) { + if (!entity) { + return false; + } + return key.indexOf(APP_METADATA2) === 0 && entity.hasOwnProperty("clientId") && entity.hasOwnProperty("environment"); +} +function isAuthorityMetadataEntity2(key, entity) { + if (!entity) { + return false; + } + return key.indexOf(AUTHORITY_METADATA_CACHE_KEY) === 0 && entity.hasOwnProperty("aliases") && entity.hasOwnProperty("preferred_cache") && entity.hasOwnProperty("preferred_network") && entity.hasOwnProperty("canonical_authority") && entity.hasOwnProperty("authorization_endpoint") && entity.hasOwnProperty("token_endpoint") && entity.hasOwnProperty("issuer") && entity.hasOwnProperty("aliasesFromNetwork") && entity.hasOwnProperty("endpointsFromNetwork") && entity.hasOwnProperty("expiresAt") && entity.hasOwnProperty("jwks_uri"); +} +function generateAuthorityMetadataExpiresAt2() { + return nowSeconds2() + AUTHORITY_METADATA_REFRESH_TIME_SECONDS; +} +function updateAuthorityEndpointMetadata2(authorityMetadata, updatedValues, fromNetwork) { + authorityMetadata.authorization_endpoint = updatedValues.authorization_endpoint; + authorityMetadata.token_endpoint = updatedValues.token_endpoint; + authorityMetadata.end_session_endpoint = updatedValues.end_session_endpoint; + authorityMetadata.issuer = updatedValues.issuer; + authorityMetadata.endpointsFromNetwork = fromNetwork; + authorityMetadata.jwks_uri = updatedValues.jwks_uri; +} +function updateCloudDiscoveryMetadata2(authorityMetadata, updatedValues, fromNetwork) { + authorityMetadata.aliases = updatedValues.aliases; + authorityMetadata.preferred_cache = updatedValues.preferred_cache; + authorityMetadata.preferred_network = updatedValues.preferred_network; + authorityMetadata.aliasesFromNetwork = fromNetwork; +} +function isAuthorityMetadataExpired2(metadata) { + return metadata.expiresAt <= nowSeconds2(); +} +var init_CacheHelpers = __esm({ + "node_modules/@azure/msal-common/dist/cache/utils/CacheHelpers.mjs"() { + "use strict"; + init_AuthToken(); + init_ClientAuthError(); + init_Constants(); + init_TimeUtils(); + init_ClientAuthErrorCodes(); + } +}); + +// node_modules/@azure/msal-common/dist/telemetry/performance/PerformanceEvents.mjs +var NetworkClientSendPostRequestAsync, RefreshTokenClientExecutePostToTokenEndpoint, AuthorizationCodeClientExecutePostToTokenEndpoint, RefreshTokenClientExecuteTokenRequest, RefreshTokenClientAcquireToken, RefreshTokenClientAcquireTokenWithCachedRefreshToken, RefreshTokenClientCreateTokenRequestBody, SilentFlowClientGenerateResultFromCacheRecord, AuthClientExecuteTokenRequest, AuthClientCreateTokenRequestBody, UpdateTokenEndpointAuthority, PopTokenGenerateCnf, HandleServerTokenResponse, AuthorityResolveEndpointsAsync, AuthorityGetCloudDiscoveryMetadataFromNetwork, AuthorityUpdateCloudDiscoveryMetadata, AuthorityGetEndpointMetadataFromNetwork, AuthorityUpdateEndpointMetadata, AuthorityUpdateMetadataWithRegionalInformation, RegionDiscoveryDetectRegion, RegionDiscoveryGetRegionFromIMDS, RegionDiscoveryGetCurrentVersion, CacheManagerGetRefreshToken; +var init_PerformanceEvents = __esm({ + "node_modules/@azure/msal-common/dist/telemetry/performance/PerformanceEvents.mjs"() { + "use strict"; + NetworkClientSendPostRequestAsync = "networkClientSendPostRequestAsync"; + RefreshTokenClientExecutePostToTokenEndpoint = "refreshTokenClientExecutePostToTokenEndpoint"; + AuthorizationCodeClientExecutePostToTokenEndpoint = "authorizationCodeClientExecutePostToTokenEndpoint"; + RefreshTokenClientExecuteTokenRequest = "refreshTokenClientExecuteTokenRequest"; + RefreshTokenClientAcquireToken = "refreshTokenClientAcquireToken"; + RefreshTokenClientAcquireTokenWithCachedRefreshToken = "refreshTokenClientAcquireTokenWithCachedRefreshToken"; + RefreshTokenClientCreateTokenRequestBody = "refreshTokenClientCreateTokenRequestBody"; + SilentFlowClientGenerateResultFromCacheRecord = "silentFlowClientGenerateResultFromCacheRecord"; + AuthClientExecuteTokenRequest = "authClientExecuteTokenRequest"; + AuthClientCreateTokenRequestBody = "authClientCreateTokenRequestBody"; + UpdateTokenEndpointAuthority = "updateTokenEndpointAuthority"; + PopTokenGenerateCnf = "popTokenGenerateCnf"; + HandleServerTokenResponse = "handleServerTokenResponse"; + AuthorityResolveEndpointsAsync = "authorityResolveEndpointsAsync"; + AuthorityGetCloudDiscoveryMetadataFromNetwork = "authorityGetCloudDiscoveryMetadataFromNetwork"; + AuthorityUpdateCloudDiscoveryMetadata = "authorityUpdateCloudDiscoveryMetadata"; + AuthorityGetEndpointMetadataFromNetwork = "authorityGetEndpointMetadataFromNetwork"; + AuthorityUpdateEndpointMetadata = "authorityUpdateEndpointMetadata"; + AuthorityUpdateMetadataWithRegionalInformation = "authorityUpdateMetadataWithRegionalInformation"; + RegionDiscoveryDetectRegion = "regionDiscoveryDetectRegion"; + RegionDiscoveryGetRegionFromIMDS = "regionDiscoveryGetRegionFromIMDS"; + RegionDiscoveryGetCurrentVersion = "regionDiscoveryGetCurrentVersion"; + CacheManagerGetRefreshToken = "cacheManagerGetRefreshToken"; + } +}); + +// node_modules/@azure/msal-common/dist/utils/FunctionWrappers.mjs +var invoke2, invokeAsync2; +var init_FunctionWrappers = __esm({ + "node_modules/@azure/msal-common/dist/utils/FunctionWrappers.mjs"() { + "use strict"; + invoke2 = (callback, eventName, logger31, telemetryClient, correlationId) => { + return (...args) => { + logger31.trace(`Executing function '${eventName}'`, correlationId); + const inProgressEvent = telemetryClient.startMeasurement(eventName, correlationId); + if (correlationId) { + telemetryClient.incrementFields({ [`ext.${eventName}CallCount`]: 1 }, correlationId); + } + try { + const result = callback(...args); + inProgressEvent.end({ + success: true + }); + logger31.trace(`Returning result from '${eventName}'`, correlationId); + return result; + } catch (e) { + logger31.trace(`Error occurred in '${eventName}'`, correlationId); + try { + logger31.trace(JSON.stringify(e), correlationId); + } catch (e2) { + logger31.trace("Unable to print error message.", correlationId); + } + inProgressEvent.end({ + success: false + }, e); + throw e; + } + }; + }; + invokeAsync2 = (callback, eventName, logger31, telemetryClient, correlationId) => { + return (...args) => { + logger31.trace(`Executing function '${eventName}'`, correlationId); + const inProgressEvent = telemetryClient.startMeasurement(eventName, correlationId); + if (correlationId) { + telemetryClient.incrementFields({ [`ext.${eventName}CallCount`]: 1 }, correlationId); + } + return callback(...args).then((response) => { + logger31.trace(`Returning result from '${eventName}'`, correlationId); + inProgressEvent.end({ + success: true + }); + return response; + }).catch((e) => { + logger31.trace(`Error occurred in '${eventName}'`, correlationId); + try { + logger31.trace(JSON.stringify(e), correlationId); + } catch (e2) { + logger31.trace("Unable to print error message.", correlationId); + } + inProgressEvent.end({ + success: false + }, e); + throw e; + }); + }; + }; + } +}); + +// node_modules/@azure/msal-common/dist/crypto/PopTokenGenerator.mjs +var KeyLocation2, PopTokenGenerator2; +var init_PopTokenGenerator = __esm({ + "node_modules/@azure/msal-common/dist/crypto/PopTokenGenerator.mjs"() { + "use strict"; + init_TimeUtils(); + init_UrlString(); + init_PerformanceEvents(); + init_FunctionWrappers(); + KeyLocation2 = { + SW: "sw" + }; + PopTokenGenerator2 = class { + constructor(cryptoUtils, performanceClient) { + this.cryptoUtils = cryptoUtils; + this.performanceClient = performanceClient; + } + /** + * Generates the req_cnf validated at the RP in the POP protocol for SHR parameters + * and returns an object containing the keyid, the full req_cnf string and the req_cnf string hash + * @param request + * @returns + */ + async generateCnf(request, logger31) { + const reqCnf = await invokeAsync2(this.generateKid.bind(this), PopTokenGenerateCnf, logger31, this.performanceClient, request.correlationId)(request); + const reqCnfString = this.cryptoUtils.base64UrlEncode(JSON.stringify(reqCnf)); + return { + kid: reqCnf.kid, + reqCnfString + }; + } + /** + * Generates key_id for a SHR token request + * @param request + * @returns + */ + async generateKid(request) { + const kidThumbprint = await this.cryptoUtils.getPublicKeyThumbprint(request); + return { + kid: kidThumbprint, + xms_ksl: KeyLocation2.SW + }; + } + /** + * Signs the POP access_token with the local generated key-pair + * @param accessToken + * @param request + * @returns + */ + async signPopToken(accessToken, keyId, request) { + return this.signPayload(accessToken, keyId, request); + } + /** + * Utility function to generate the signed JWT for an access_token + * @param payload + * @param kid + * @param request + * @param claims + * @returns + */ + async signPayload(payload, keyId, request, claims) { + const { resourceRequestMethod, resourceRequestUri, shrClaims, shrNonce, shrOptions } = request; + const resourceUrlString = resourceRequestUri ? new UrlString2(resourceRequestUri) : void 0; + const resourceUrlComponents = resourceUrlString?.getUrlComponents(); + return this.cryptoUtils.signJwt({ + at: payload, + ts: nowSeconds2(), + m: resourceRequestMethod?.toUpperCase(), + u: resourceUrlComponents?.HostNameAndPort, + nonce: shrNonce || this.cryptoUtils.createNewGuid(), + p: resourceUrlComponents?.AbsolutePath, + q: resourceUrlComponents?.QueryString ? [[], resourceUrlComponents.QueryString] : void 0, + client_claims: shrClaims || void 0, + ...claims + }, keyId, shrOptions, request.correlationId); + } + }; + } +}); + +// node_modules/@azure/msal-common/dist/error/InteractionRequiredAuthErrorCodes.mjs +var InteractionRequiredAuthErrorCodes_exports = {}; +__export(InteractionRequiredAuthErrorCodes_exports, { + badToken: () => badToken2, + consentRequired: () => consentRequired2, + interactionRequired: () => interactionRequired2, + interruptedUser: () => interruptedUser2, + loginRequired: () => loginRequired2, + nativeAccountUnavailable: () => nativeAccountUnavailable2, + noTokensFound: () => noTokensFound2, + refreshTokenExpired: () => refreshTokenExpired2, + uxNotAllowed: () => uxNotAllowed2 +}); +var noTokensFound2, nativeAccountUnavailable2, refreshTokenExpired2, uxNotAllowed2, interactionRequired2, consentRequired2, loginRequired2, badToken2, interruptedUser2; +var init_InteractionRequiredAuthErrorCodes = __esm({ + "node_modules/@azure/msal-common/dist/error/InteractionRequiredAuthErrorCodes.mjs"() { + "use strict"; + noTokensFound2 = "no_tokens_found"; + nativeAccountUnavailable2 = "native_account_unavailable"; + refreshTokenExpired2 = "refresh_token_expired"; + uxNotAllowed2 = "ux_not_allowed"; + interactionRequired2 = "interaction_required"; + consentRequired2 = "consent_required"; + loginRequired2 = "login_required"; + badToken2 = "bad_token"; + interruptedUser2 = "interrupted_user"; + } +}); + +// node_modules/@azure/msal-common/dist/error/InteractionRequiredAuthError.mjs +function isInteractionRequiredError2(errorCode, errorString, subError) { + const isInteractionRequiredErrorCode = !!errorCode && InteractionRequiredServerErrorMessage2.indexOf(errorCode) > -1; + const isInteractionRequiredSubError = !!subError && InteractionRequiredAuthSubErrorMessage2.indexOf(subError) > -1; + const isInteractionRequiredErrorDesc = !!errorString && InteractionRequiredServerErrorMessage2.some((irErrorCode) => { + return errorString.indexOf(irErrorCode) > -1; + }); + return isInteractionRequiredErrorCode || isInteractionRequiredErrorDesc || isInteractionRequiredSubError; +} +function createInteractionRequiredAuthError2(errorCode, errorMessage) { + return new InteractionRequiredAuthError2(errorCode, errorMessage); +} +var InteractionRequiredServerErrorMessage2, InteractionRequiredAuthSubErrorMessage2, InteractionRequiredAuthError2; +var init_InteractionRequiredAuthError = __esm({ + "node_modules/@azure/msal-common/dist/error/InteractionRequiredAuthError.mjs"() { + "use strict"; + init_AuthError(); + init_InteractionRequiredAuthErrorCodes(); + InteractionRequiredServerErrorMessage2 = [ + interactionRequired2, + consentRequired2, + loginRequired2, + badToken2, + uxNotAllowed2, + interruptedUser2 + ]; + InteractionRequiredAuthSubErrorMessage2 = [ + "message_only", + "additional_action", + "basic_action", + "user_password_expired", + "consent_required", + "bad_token", + "ux_not_allowed", + "interrupted_user" + ]; + InteractionRequiredAuthError2 = class _InteractionRequiredAuthError extends AuthError2 { + constructor(errorCode, errorMessage, subError, timestamp, traceId, correlationId, claims, errorNo) { + super(errorCode, errorMessage, subError); + Object.setPrototypeOf(this, _InteractionRequiredAuthError.prototype); + this.timestamp = timestamp || ""; + this.traceId = traceId || ""; + this.correlationId = correlationId || ""; + this.claims = claims || ""; + this.name = "InteractionRequiredAuthError"; + this.errorNo = errorNo; + } + }; + } +}); + +// node_modules/@azure/msal-common/dist/error/ServerError.mjs +var ServerError2; +var init_ServerError = __esm({ + "node_modules/@azure/msal-common/dist/error/ServerError.mjs"() { + "use strict"; + init_AuthError(); + ServerError2 = class _ServerError extends AuthError2 { + constructor(errorCode, errorMessage, subError, errorNo, status) { + super(errorCode, errorMessage, subError); + this.name = "ServerError"; + this.errorNo = errorNo; + this.status = status; + Object.setPrototypeOf(this, _ServerError.prototype); + } + }; + } +}); + +// node_modules/@azure/msal-common/dist/utils/ProtocolUtils.mjs +function parseRequestState(base64Decode, state3) { + if (!base64Decode) { + throw createClientAuthError2(noCryptoObject2); + } + if (!state3) { + throw createClientAuthError2(invalidState2); + } + try { + const splitState = state3.split(RESOURCE_DELIM); + const libraryState = splitState[0]; + const userState = splitState.length > 1 ? splitState.slice(1).join(RESOURCE_DELIM) : ""; + const libraryStateString = base64Decode(libraryState); + const libraryStateObj = JSON.parse(libraryStateString); + return { + userRequestState: userState || "", + libraryState: libraryStateObj + }; + } catch (e) { + throw createClientAuthError2(invalidState2); + } +} +var init_ProtocolUtils = __esm({ + "node_modules/@azure/msal-common/dist/utils/ProtocolUtils.mjs"() { + "use strict"; + init_Constants(); + init_ClientAuthError(); + init_ClientAuthErrorCodes(); + } +}); + +// node_modules/@azure/msal-common/dist/response/ResponseHandler.mjs +function buildAccountToCache2(cacheStorage, authority, homeAccountId, base64Decode, correlationId, idTokenClaims, clientInfo, environment, claimsTenantId, authCodePayload, nativeAccountId, logger31, performanceClient) { + logger31?.verbose("setCachedAccount called", correlationId); + const accountEnvironment = environment || authority.getPreferredCache(); + const matchedAccounts = cacheStorage.getAccountsFilteredBy({ homeAccountId, environment: accountEnvironment }, correlationId); + performanceClient?.addFields({ cacheMatchedAccounts: matchedAccounts.length }, correlationId); + if (matchedAccounts.length > 1) { + logger31?.warning("Multiple base accounts matched homeAccountId. Ignoring cached account and creating a new base account.", correlationId); + } + const cachedAccount = matchedAccounts.length === 1 ? matchedAccounts[0] : null; + const baseAccount = cachedAccount || createAccountEntity({ + homeAccountId, + idTokenClaims, + clientInfo, + environment, + cloudGraphHostName: authCodePayload?.cloud_graph_host_name, + msGraphHost: authCodePayload?.msgraph_host, + nativeAccountId + }, authority, base64Decode); + const tenantProfiles = baseAccount.tenantProfiles || []; + const tenantId = claimsTenantId || baseAccount.realm; + if (tenantId && !tenantProfiles.find((tenantProfile) => { + return tenantProfile.tenantId === tenantId; + })) { + const newTenantProfile = buildTenantProfile2(homeAccountId, baseAccount.localAccountId, tenantId, idTokenClaims); + tenantProfiles.push(newTenantProfile); + } + baseAccount.tenantProfiles = tenantProfiles; + return baseAccount; +} +var ResponseHandler2; +var init_ResponseHandler = __esm({ + "node_modules/@azure/msal-common/dist/response/ResponseHandler.mjs"() { + "use strict"; + init_AccountInfo(); + init_AuthToken(); + init_TokenClaims(); + init_TokenCacheContext(); + init_AccountEntityUtils(); + init_CacheHelpers(); + init_PopTokenGenerator(); + init_ClientAuthError(); + init_InteractionRequiredAuthError(); + init_ServerError(); + init_ScopeSet(); + init_Constants(); + init_ProtocolUtils(); + init_TimeUtils(); + init_ClientAuthErrorCodes(); + ResponseHandler2 = class _ResponseHandler { + constructor(clientId, cacheStorage, cryptoObj, logger31, performanceClient, serializableCache, persistencePlugin) { + this.clientId = clientId; + this.cacheStorage = cacheStorage; + this.cryptoObj = cryptoObj; + this.logger = logger31; + this.performanceClient = performanceClient; + this.serializableCache = serializableCache; + this.persistencePlugin = persistencePlugin; + } + /** + * Function which validates server authorization token response. + * @param serverResponse + * @param correlationId + * @param refreshAccessToken + */ + validateTokenResponse(serverResponse, correlationId, refreshAccessToken2) { + if (serverResponse.error || serverResponse.error_description || serverResponse.suberror) { + const errString = `Error(s): ${serverResponse.error_codes || NOT_AVAILABLE} - Timestamp: ${serverResponse.timestamp || NOT_AVAILABLE} - Description: ${serverResponse.error_description || NOT_AVAILABLE} - Correlation ID: ${serverResponse.correlation_id || NOT_AVAILABLE} - Trace ID: ${serverResponse.trace_id || NOT_AVAILABLE}`; + const serverErrorNo = serverResponse.error_codes?.length ? serverResponse.error_codes[0] : void 0; + const serverError = new ServerError2(serverResponse.error, errString, serverResponse.suberror, serverErrorNo, serverResponse.status); + if (refreshAccessToken2 && serverResponse.status && serverResponse.status >= HTTP_SERVER_ERROR_RANGE_START && serverResponse.status <= HTTP_SERVER_ERROR_RANGE_END) { + this.logger.warning(`executeTokenRequest:validateTokenResponse - AAD is currently unavailable and the access token is unable to be refreshed. +${serverError}`, correlationId); + return; + } else if (refreshAccessToken2 && serverResponse.status && serverResponse.status >= HTTP_CLIENT_ERROR_RANGE_START && serverResponse.status <= HTTP_CLIENT_ERROR_RANGE_END) { + this.logger.warning(`executeTokenRequest:validateTokenResponse - AAD is currently available but is unable to refresh the access token. +${serverError}`, correlationId); + return; + } + if (isInteractionRequiredError2(serverResponse.error, serverResponse.error_description, serverResponse.suberror)) { + throw new InteractionRequiredAuthError2(serverResponse.error, serverResponse.error_description, serverResponse.suberror, serverResponse.timestamp || "", serverResponse.trace_id || "", serverResponse.correlation_id || "", serverResponse.claims || "", serverErrorNo); + } + throw serverError; + } + } + /** + * Returns a constructed token response based on given string. Also manages the cache updates and cleanups. + * @param serverTokenResponse + * @param authority + */ + async handleServerTokenResponse(serverTokenResponse, authority, reqTimestamp, request, apiId, authCodePayload, userAssertionHash, handlingRefreshTokenResponse, forceCacheRefreshTokenResponse, serverRequestId) { + let idTokenClaims; + if (serverTokenResponse.id_token) { + idTokenClaims = extractTokenClaims2(serverTokenResponse.id_token || "", this.cryptoObj.base64Decode); + if (authCodePayload && authCodePayload.nonce) { + if (idTokenClaims.nonce !== authCodePayload.nonce) { + throw createClientAuthError2(nonceMismatch2); + } + } + if (request.maxAge || request.maxAge === 0) { + const authTime = idTokenClaims.auth_time; + if (!authTime) { + throw createClientAuthError2(authTimeNotFound2); + } + checkMaxAge2(authTime, request.maxAge); + } + } + this.homeAccountIdentifier = generateHomeAccountId(serverTokenResponse.client_info || "", authority.authorityType, this.logger, this.cryptoObj, request.correlationId, idTokenClaims); + let requestStateObj; + if (!!authCodePayload && !!authCodePayload.state) { + requestStateObj = parseRequestState(this.cryptoObj.base64Decode, authCodePayload.state); + } + serverTokenResponse.key_id = serverTokenResponse.key_id || request.sshKid || void 0; + const cacheRecord = this.generateCacheRecord(serverTokenResponse, authority, reqTimestamp, request, idTokenClaims, userAssertionHash, authCodePayload); + let cacheContext; + try { + if (this.persistencePlugin && this.serializableCache) { + this.logger.verbose("Persistence enabled, calling beforeCacheAccess", request.correlationId); + cacheContext = new TokenCacheContext2(this.serializableCache, true); + await this.persistencePlugin.beforeCacheAccess(cacheContext); + } + if (handlingRefreshTokenResponse && !forceCacheRefreshTokenResponse && cacheRecord.account) { + const cachedAccounts = this.cacheStorage.getAllAccounts({ + homeAccountId: cacheRecord.account.homeAccountId, + environment: cacheRecord.account.environment + }, request.correlationId); + if (cachedAccounts.length < 1) { + this.logger.warning("Account used to refresh tokens not in persistence, refreshed tokens will not be stored in the cache", request.correlationId); + this.performanceClient?.addFields({ + acntLoggedOut: true + }, request.correlationId); + return await _ResponseHandler.generateAuthenticationResult(this.cryptoObj, authority, cacheRecord, false, request, this.performanceClient, idTokenClaims, requestStateObj, void 0, serverRequestId); + } + } + await this.cacheStorage.saveCacheRecord(cacheRecord, request.correlationId, isKmsi2(idTokenClaims || {}), apiId, request.storeInCache); + } finally { + if (this.persistencePlugin && this.serializableCache && cacheContext) { + this.logger.verbose("Persistence enabled, calling afterCacheAccess", request.correlationId); + await this.persistencePlugin.afterCacheAccess(cacheContext); + } + } + return _ResponseHandler.generateAuthenticationResult(this.cryptoObj, authority, cacheRecord, false, request, this.performanceClient, idTokenClaims, requestStateObj, serverTokenResponse, serverRequestId); + } + /** + * Generates CacheRecord + * @param serverTokenResponse + * @param idTokenObj + * @param authority + */ + generateCacheRecord(serverTokenResponse, authority, reqTimestamp, request, idTokenClaims, userAssertionHash, authCodePayload) { + const env = authority.getPreferredCache(); + if (!env) { + throw createClientAuthError2(invalidCacheEnvironment2); + } + const claimsTenantId = getTenantIdFromIdTokenClaims2(idTokenClaims); + let cachedIdToken; + let cachedAccount; + if (serverTokenResponse.id_token && !!idTokenClaims) { + cachedIdToken = createIdTokenEntity2(this.homeAccountIdentifier, env, serverTokenResponse.id_token, this.clientId, claimsTenantId || ""); + cachedAccount = buildAccountToCache2( + this.cacheStorage, + authority, + this.homeAccountIdentifier, + this.cryptoObj.base64Decode, + request.correlationId, + idTokenClaims, + serverTokenResponse.client_info, + env, + claimsTenantId, + authCodePayload, + void 0, + // nativeAccountId + this.logger, + this.performanceClient + ); + } + let cachedAccessToken = null; + if (serverTokenResponse.access_token) { + const responseScopes = serverTokenResponse.scope ? ScopeSet2.fromString(serverTokenResponse.scope) : new ScopeSet2(request.scopes || []); + const expiresIn = (typeof serverTokenResponse.expires_in === "string" ? parseInt(serverTokenResponse.expires_in, 10) : serverTokenResponse.expires_in) || 0; + const extExpiresIn = (typeof serverTokenResponse.ext_expires_in === "string" ? parseInt(serverTokenResponse.ext_expires_in, 10) : serverTokenResponse.ext_expires_in) || 0; + const refreshIn = (typeof serverTokenResponse.refresh_in === "string" ? parseInt(serverTokenResponse.refresh_in, 10) : serverTokenResponse.refresh_in) || void 0; + const tokenExpirationSeconds = reqTimestamp + expiresIn; + const extendedTokenExpirationSeconds = tokenExpirationSeconds + extExpiresIn; + const refreshOnSeconds = refreshIn && refreshIn > 0 ? reqTimestamp + refreshIn : void 0; + cachedAccessToken = createAccessTokenEntity2(this.homeAccountIdentifier, env, serverTokenResponse.access_token, this.clientId, claimsTenantId || authority.tenant || "", responseScopes.printScopes(), tokenExpirationSeconds, extendedTokenExpirationSeconds, this.cryptoObj.base64Decode, refreshOnSeconds, serverTokenResponse.token_type, userAssertionHash, serverTokenResponse.key_id); + const resource = request.resource || null; + if (resource) { + cachedAccessToken.resource = resource; + } + } + let cachedRefreshToken = null; + if (serverTokenResponse.refresh_token) { + let rtExpiresOn; + if (serverTokenResponse.refresh_token_expires_in) { + const rtExpiresIn = typeof serverTokenResponse.refresh_token_expires_in === "string" ? parseInt(serverTokenResponse.refresh_token_expires_in, 10) : serverTokenResponse.refresh_token_expires_in; + rtExpiresOn = reqTimestamp + rtExpiresIn; + this.performanceClient?.addFields({ ntwkRtExpiresOnSeconds: rtExpiresOn }, request.correlationId); + } + cachedRefreshToken = createRefreshTokenEntity2(this.homeAccountIdentifier, env, serverTokenResponse.refresh_token, this.clientId, serverTokenResponse.foci, userAssertionHash, rtExpiresOn); + } + let cachedAppMetadata = null; + if (serverTokenResponse.foci) { + cachedAppMetadata = { + clientId: this.clientId, + environment: env, + familyId: serverTokenResponse.foci + }; + } + return { + account: cachedAccount, + idToken: cachedIdToken, + accessToken: cachedAccessToken, + refreshToken: cachedRefreshToken, + appMetadata: cachedAppMetadata + }; + } + /** + * Creates an @AuthenticationResult from @CacheRecord , @IdToken , and a boolean that states whether or not the result is from cache. + * + * Optionally takes a state string that is set as-is in the response. + * + * @param cacheRecord + * @param idTokenObj + * @param fromTokenCache + * @param stateString + */ + static async generateAuthenticationResult(cryptoObj, authority, cacheRecord, fromTokenCache, request, performanceClient, idTokenClaims, requestState, serverTokenResponse, requestId) { + let accessToken = ""; + let responseScopes = []; + let expiresOn = null; + let extExpiresOn; + let refreshOn; + let familyId = ""; + if (cacheRecord.accessToken) { + if (cacheRecord.accessToken.tokenType === AuthenticationScheme2.POP && !request.popKid) { + const popTokenGenerator = new PopTokenGenerator2(cryptoObj, performanceClient); + const { secret, keyId } = cacheRecord.accessToken; + if (!keyId) { + throw createClientAuthError2(keyIdMissing2); + } + accessToken = await popTokenGenerator.signPopToken(secret, keyId, request); + } else { + accessToken = cacheRecord.accessToken.secret; + } + responseScopes = ScopeSet2.fromString(cacheRecord.accessToken.target).asArray(); + expiresOn = toDateFromSeconds2(cacheRecord.accessToken.expiresOn); + extExpiresOn = toDateFromSeconds2(cacheRecord.accessToken.extendedExpiresOn); + if (cacheRecord.accessToken.refreshOn) { + refreshOn = toDateFromSeconds2(cacheRecord.accessToken.refreshOn); + } + } + if (cacheRecord.appMetadata) { + familyId = cacheRecord.appMetadata.familyId === THE_FAMILY_ID2 ? THE_FAMILY_ID2 : ""; + } + const uid = idTokenClaims?.oid || idTokenClaims?.sub || ""; + const tid = idTokenClaims?.tid || ""; + if (serverTokenResponse?.spa_accountid && !!cacheRecord.account) { + cacheRecord.account.nativeAccountId = serverTokenResponse?.spa_accountid; + } + const accountInfo = cacheRecord.account ? updateAccountTenantProfileData2( + getAccountInfo(cacheRecord.account), + void 0, + // tenantProfile optional + idTokenClaims, + cacheRecord.idToken?.secret + ) : null; + return { + authority: authority.canonicalAuthority, + uniqueId: uid, + tenantId: tid, + scopes: responseScopes, + account: accountInfo, + idToken: cacheRecord?.idToken?.secret || "", + idTokenClaims: idTokenClaims || {}, + accessToken, + fromCache: fromTokenCache, + expiresOn, + extExpiresOn, + refreshOn, + correlationId: request.correlationId, + requestId: requestId || "", + familyId, + tokenType: cacheRecord.accessToken?.tokenType || "", + state: requestState ? requestState.userRequestState : "", + cloudGraphHostName: cacheRecord.account?.cloudGraphHostName || "", + msGraphHost: cacheRecord.account?.msGraphHost || "", + code: serverTokenResponse?.spa_code, + fromPlatformBroker: false + }; + } + }; + } +}); + +// node_modules/@azure/msal-common/dist/account/CcsCredential.mjs +var CcsCredentialType2; +var init_CcsCredential = __esm({ + "node_modules/@azure/msal-common/dist/account/CcsCredential.mjs"() { + "use strict"; + CcsCredentialType2 = { + HOME_ACCOUNT_ID: "home_account_id", + UPN: "UPN" + }; + } +}); + +// node_modules/@azure/msal-common/dist/utils/ClientAssertionUtils.mjs +async function getClientAssertion2(clientAssertion, clientId, tokenEndpoint) { + if (typeof clientAssertion === "string") { + return clientAssertion; + } else { + const config2 = { + clientId, + tokenEndpoint + }; + return clientAssertion(config2); + } +} +var init_ClientAssertionUtils = __esm({ + "node_modules/@azure/msal-common/dist/utils/ClientAssertionUtils.mjs"() { + "use strict"; + } +}); + +// node_modules/@azure/msal-common/dist/network/RequestThumbprint.mjs +function getRequestThumbprint2(clientId, request, homeAccountId) { + return { + clientId, + authority: request.authority, + scopes: request.scopes, + homeAccountIdentifier: homeAccountId, + claims: request.claims, + authenticationScheme: request.authenticationScheme, + resourceRequestMethod: request.resourceRequestMethod, + resourceRequestUri: request.resourceRequestUri, + shrClaims: request.shrClaims, + sshKid: request.sshKid, + embeddedClientId: request.embeddedClientId || request.extraParameters?.clientId + }; +} +var init_RequestThumbprint = __esm({ + "node_modules/@azure/msal-common/dist/network/RequestThumbprint.mjs"() { + "use strict"; + } +}); + +// node_modules/@azure/msal-common/dist/network/ThrottlingUtils.mjs +var ThrottlingUtils2; +var init_ThrottlingUtils = __esm({ + "node_modules/@azure/msal-common/dist/network/ThrottlingUtils.mjs"() { + "use strict"; + init_Constants(); + init_ServerError(); + init_RequestThumbprint(); + ThrottlingUtils2 = class _ThrottlingUtils { + /** + * Prepares a RequestThumbprint to be stored as a key. + * @param thumbprint + */ + static generateThrottlingStorageKey(thumbprint) { + return `${THROTTLING_PREFIX}.${JSON.stringify(thumbprint)}`; + } + /** + * Performs necessary throttling checks before a network request. + * @param cacheManager + * @param thumbprint + */ + static preProcess(cacheManager, thumbprint, correlationId) { + const key = _ThrottlingUtils.generateThrottlingStorageKey(thumbprint); + const value = cacheManager.getThrottlingCache(key, correlationId); + if (value) { + if (value.throttleTime < Date.now()) { + cacheManager.removeItem(key, correlationId); + return; + } + throw new ServerError2(value.errorCodes?.join(" ") || "", value.errorMessage, value.subError); + } + } + /** + * Performs necessary throttling checks after a network request. + * @param cacheManager + * @param thumbprint + * @param response + */ + static postProcess(cacheManager, thumbprint, response, correlationId) { + if (_ThrottlingUtils.checkResponseStatus(response) || _ThrottlingUtils.checkResponseForRetryAfter(response)) { + const thumbprintValue = { + throttleTime: _ThrottlingUtils.calculateThrottleTime(parseInt(response.headers[HeaderNames2.RETRY_AFTER])), + error: response.body.error, + errorCodes: response.body.error_codes, + errorMessage: response.body.error_description, + subError: response.body.suberror + }; + cacheManager.setThrottlingCache(_ThrottlingUtils.generateThrottlingStorageKey(thumbprint), thumbprintValue, correlationId); + } + } + /** + * Checks a NetworkResponse object's status codes against 429 or 5xx + * @param response + */ + static checkResponseStatus(response) { + return response.status === 429 || response.status >= 500 && response.status < 600; + } + /** + * Checks a NetworkResponse object's RetryAfter header + * @param response + */ + static checkResponseForRetryAfter(response) { + if (response.headers) { + return response.headers.hasOwnProperty(HeaderNames2.RETRY_AFTER) && (response.status < 200 || response.status >= 300); + } + return false; + } + /** + * Calculates the Unix-time value for a throttle to expire given throttleTime in seconds. + * @param throttleTime + */ + static calculateThrottleTime(throttleTime) { + const time3 = throttleTime <= 0 ? 0 : throttleTime; + const currentSeconds = Date.now() / 1e3; + return Math.floor(Math.min(currentSeconds + (time3 || DEFAULT_THROTTLE_TIME_SECONDS), currentSeconds + DEFAULT_MAX_THROTTLE_TIME_SECONDS) * 1e3); + } + static removeThrottle(cacheManager, clientId, request, homeAccountIdentifier) { + const thumbprint = getRequestThumbprint2(clientId, request, homeAccountIdentifier); + const key = this.generateThrottlingStorageKey(thumbprint); + cacheManager.removeItem(key, request.correlationId); + } + }; + } +}); + +// node_modules/@azure/msal-common/dist/error/NetworkError.mjs +function createNetworkError(error2, httpStatus, responseHeaders, additionalError) { + error2.errorMessage = `${error2.errorMessage}, additionalErrorInfo: error.name:${additionalError?.name}, error.message:${additionalError?.message}`; + return new NetworkError2(error2, httpStatus, responseHeaders); +} +var NetworkError2; +var init_NetworkError = __esm({ + "node_modules/@azure/msal-common/dist/error/NetworkError.mjs"() { + "use strict"; + init_AuthError(); + NetworkError2 = class _NetworkError extends AuthError2 { + constructor(error2, httpStatus, responseHeaders) { + super(error2.errorCode, error2.errorMessage, error2.subError); + Object.setPrototypeOf(this, _NetworkError.prototype); + this.name = "NetworkError"; + this.error = error2; + this.httpStatus = httpStatus; + this.responseHeaders = responseHeaders; + } + }; + } +}); + +// node_modules/@azure/msal-common/dist/protocol/Token.mjs +var Token_exports = {}; +__export(Token_exports, { + createTokenQueryParameters: () => createTokenQueryParameters, + createTokenRequestHeaders: () => createTokenRequestHeaders, + executePostToTokenEndpoint: () => executePostToTokenEndpoint, + sendPostRequest: () => sendPostRequest +}); +function createTokenRequestHeaders(logger31, preventCorsPreflight, ccsCred) { + const headers = {}; + headers[HeaderNames2.CONTENT_TYPE] = URL_FORM_CONTENT_TYPE; + if (!preventCorsPreflight && ccsCred) { + switch (ccsCred.type) { + case CcsCredentialType2.HOME_ACCOUNT_ID: + try { + const clientInfo = buildClientInfoFromHomeAccountId2(ccsCred.credential); + headers[HeaderNames2.CCS_HEADER] = `Oid:${clientInfo.uid}@${clientInfo.utid}`; + } catch (e) { + logger31.verbose(`Could not parse home account ID for CCS Header: '${e}'`, ""); + } + break; + case CcsCredentialType2.UPN: + headers[HeaderNames2.CCS_HEADER] = `UPN: ${ccsCred.credential}`; + break; + } + } + return headers; +} +function createTokenQueryParameters(request, clientId, redirectUri, performanceClient) { + const parameters = /* @__PURE__ */ new Map(); + if (request.embeddedClientId) { + addBrokerParameters2(parameters, clientId, redirectUri); + } + if (request.extraQueryParameters) { + addExtraParameters(parameters, request.extraQueryParameters); + } + addCorrelationId2(parameters, request.correlationId); + instrumentBrokerParams2(parameters, request.correlationId, performanceClient); + return mapToQueryString2(parameters); +} +async function executePostToTokenEndpoint(tokenEndpoint, queryString, headers, thumbprint, correlationId, cacheManager, networkClient, logger31, performanceClient, serverTelemetryManager) { + const response = await sendPostRequest(thumbprint, tokenEndpoint, { body: queryString, headers }, correlationId, cacheManager, networkClient, logger31, performanceClient); + if (serverTelemetryManager && response.status < 500 && response.status !== 429) { + serverTelemetryManager.clearTelemetryCache(); + } + return response; +} +async function sendPostRequest(thumbprint, tokenEndpoint, options, correlationId, cacheManager, networkClient, logger31, performanceClient) { + ThrottlingUtils2.preProcess(cacheManager, thumbprint, correlationId); + let response; + try { + response = await invokeAsync2(networkClient.sendPostRequestAsync.bind(networkClient), NetworkClientSendPostRequestAsync, logger31, performanceClient, correlationId)(tokenEndpoint, options); + const responseHeaders = response.headers || {}; + performanceClient?.addFields({ + refreshTokenSize: response.body.refresh_token?.length || 0, + httpVerToken: responseHeaders[HeaderNames2.X_MS_HTTP_VERSION] || "", + requestId: responseHeaders[HeaderNames2.X_MS_REQUEST_ID] || "" + }, correlationId); + } catch (e) { + if (e instanceof NetworkError2) { + const responseHeaders = e.responseHeaders; + if (responseHeaders) { + performanceClient?.addFields({ + httpVerToken: responseHeaders[HeaderNames2.X_MS_HTTP_VERSION] || "", + requestId: responseHeaders[HeaderNames2.X_MS_REQUEST_ID] || "", + contentTypeHeader: responseHeaders[HeaderNames2.CONTENT_TYPE] || void 0, + contentLengthHeader: responseHeaders[HeaderNames2.CONTENT_LENGTH] || void 0, + httpStatus: e.httpStatus + }, correlationId); + } + throw e.error; + } + if (e instanceof AuthError2) { + throw e; + } else { + throw createClientAuthError2(networkError2); + } + } + ThrottlingUtils2.postProcess(cacheManager, thumbprint, response, correlationId); + return response; +} +var init_Token = __esm({ + "node_modules/@azure/msal-common/dist/protocol/Token.mjs"() { + "use strict"; + init_CcsCredential(); + init_ClientInfo(); + init_Constants(); + init_RequestParameterBuilder(); + init_UrlUtils(); + init_ThrottlingUtils(); + init_NetworkError(); + init_AuthError(); + init_ClientAuthError(); + init_FunctionWrappers(); + init_PerformanceEvents(); + init_ClientAuthErrorCodes(); + } +}); + +// node_modules/@azure/msal-common/dist/authority/OpenIdConfigResponse.mjs +function isOpenIdConfigResponse2(response) { + return response.hasOwnProperty("authorization_endpoint") && response.hasOwnProperty("token_endpoint") && response.hasOwnProperty("issuer") && response.hasOwnProperty("jwks_uri"); +} +var init_OpenIdConfigResponse = __esm({ + "node_modules/@azure/msal-common/dist/authority/OpenIdConfigResponse.mjs"() { + "use strict"; + } +}); + +// node_modules/@azure/msal-common/dist/authority/CloudInstanceDiscoveryResponse.mjs +function isCloudInstanceDiscoveryResponse2(response) { + return response.hasOwnProperty("tenant_discovery_endpoint") && response.hasOwnProperty("metadata"); +} +var init_CloudInstanceDiscoveryResponse = __esm({ + "node_modules/@azure/msal-common/dist/authority/CloudInstanceDiscoveryResponse.mjs"() { + "use strict"; + } +}); + +// node_modules/@azure/msal-common/dist/authority/CloudInstanceDiscoveryErrorResponse.mjs +function isCloudInstanceDiscoveryErrorResponse2(response) { + return response.hasOwnProperty("error") && response.hasOwnProperty("error_description"); +} +var init_CloudInstanceDiscoveryErrorResponse = __esm({ + "node_modules/@azure/msal-common/dist/authority/CloudInstanceDiscoveryErrorResponse.mjs"() { + "use strict"; + } +}); + +// node_modules/@azure/msal-common/dist/authority/RegionDiscovery.mjs +var RegionDiscovery2; +var init_RegionDiscovery = __esm({ + "node_modules/@azure/msal-common/dist/authority/RegionDiscovery.mjs"() { + "use strict"; + init_Constants(); + init_PerformanceEvents(); + init_FunctionWrappers(); + RegionDiscovery2 = class _RegionDiscovery { + constructor(networkInterface, logger31, performanceClient, correlationId) { + this.networkInterface = networkInterface; + this.logger = logger31; + this.performanceClient = performanceClient; + this.correlationId = correlationId; + } + /** + * Detect the region from the application's environment. + * + * @returns Promise + */ + async detectRegion(environmentRegion, regionDiscoveryMetadata) { + let autodetectedRegionName = environmentRegion; + if (!autodetectedRegionName) { + const options = _RegionDiscovery.IMDS_OPTIONS; + try { + const localIMDSVersionResponse = await invokeAsync2(this.getRegionFromIMDS.bind(this), RegionDiscoveryGetRegionFromIMDS, this.logger, this.performanceClient, this.correlationId)(IMDS_VERSION, options); + if (localIMDSVersionResponse.status === HTTP_SUCCESS) { + autodetectedRegionName = localIMDSVersionResponse.body; + regionDiscoveryMetadata.region_source = RegionDiscoverySources2.IMDS; + } + if (localIMDSVersionResponse.status === HTTP_BAD_REQUEST) { + const currentIMDSVersion = await invokeAsync2(this.getCurrentVersion.bind(this), RegionDiscoveryGetCurrentVersion, this.logger, this.performanceClient, this.correlationId)(options); + if (!currentIMDSVersion) { + regionDiscoveryMetadata.region_source = RegionDiscoverySources2.FAILED_AUTO_DETECTION; + return null; + } + const currentIMDSVersionResponse = await invokeAsync2(this.getRegionFromIMDS.bind(this), RegionDiscoveryGetRegionFromIMDS, this.logger, this.performanceClient, this.correlationId)(currentIMDSVersion, options); + if (currentIMDSVersionResponse.status === HTTP_SUCCESS) { + autodetectedRegionName = currentIMDSVersionResponse.body; + regionDiscoveryMetadata.region_source = RegionDiscoverySources2.IMDS; + } + } + } catch (e) { + regionDiscoveryMetadata.region_source = RegionDiscoverySources2.FAILED_AUTO_DETECTION; + return null; + } + } else { + regionDiscoveryMetadata.region_source = RegionDiscoverySources2.ENVIRONMENT_VARIABLE; + } + if (!autodetectedRegionName) { + regionDiscoveryMetadata.region_source = RegionDiscoverySources2.FAILED_AUTO_DETECTION; + } + return autodetectedRegionName || null; + } + /** + * Make the call to the IMDS endpoint + * + * @param imdsEndpointUrl + * @returns Promise> + */ + async getRegionFromIMDS(version8, options) { + return this.networkInterface.sendGetRequestAsync(`${IMDS_ENDPOINT}?api-version=${version8}&format=text`, options, IMDS_TIMEOUT); + } + /** + * Get the most recent version of the IMDS endpoint available + * + * @returns Promise + */ + async getCurrentVersion(options) { + try { + const response = await this.networkInterface.sendGetRequestAsync(`${IMDS_ENDPOINT}?format=json`, options); + if (response.status === HTTP_BAD_REQUEST && response.body && response.body["newest-versions"] && response.body["newest-versions"].length > 0) { + return response.body["newest-versions"][0]; + } + return null; + } catch (e) { + return null; + } + } + }; + RegionDiscovery2.IMDS_OPTIONS = { + headers: { + Metadata: "true" + } + }; + } +}); + +// node_modules/@azure/msal-common/dist/authority/Authority.mjs +function getTenantFromAuthorityString2(authority) { + const authorityUrl = new UrlString2(authority); + const authorityUrlComponents = authorityUrl.getUrlComponents(); + const tenantId = authorityUrlComponents.PathSegments.slice(-1)[0]?.toLowerCase(); + switch (tenantId) { + case AADAuthority.COMMON: + case AADAuthority.ORGANIZATIONS: + case AADAuthority.CONSUMERS: + return void 0; + default: + return tenantId; + } +} +function formatAuthorityUri2(authorityUri) { + return authorityUri.endsWith(FORWARD_SLASH) ? authorityUri : `${authorityUri}${FORWARD_SLASH}`; +} +function buildStaticAuthorityOptions2(authOptions) { + const rawCloudDiscoveryMetadata = authOptions.cloudDiscoveryMetadata; + let cloudDiscoveryMetadata = void 0; + if (rawCloudDiscoveryMetadata) { + try { + cloudDiscoveryMetadata = JSON.parse(rawCloudDiscoveryMetadata); + } catch (e) { + throw createClientConfigurationError2(invalidCloudDiscoveryMetadata2); + } + } + return { + canonicalAuthority: authOptions.authority ? formatAuthorityUri2(authOptions.authority) : void 0, + knownAuthorities: authOptions.knownAuthorities, + cloudDiscoveryMetadata + }; +} +var Authority2; +var init_Authority = __esm({ + "node_modules/@azure/msal-common/dist/authority/Authority.mjs"() { + "use strict"; + init_AuthorityType(); + init_OpenIdConfigResponse(); + init_UrlString(); + init_ClientAuthError(); + init_Constants(); + init_AuthorityMetadata(); + init_ClientConfigurationError(); + init_ProtocolMode(); + init_AuthorityOptions(); + init_CloudInstanceDiscoveryResponse(); + init_CloudInstanceDiscoveryErrorResponse(); + init_RegionDiscovery(); + init_AuthError(); + init_PerformanceEvents(); + init_FunctionWrappers(); + init_CacheHelpers(); + init_ClientAuthErrorCodes(); + init_ClientConfigurationErrorCodes(); + Authority2 = class _Authority { + constructor(authority, networkInterface, cacheManager, authorityOptions, logger31, correlationId, performanceClient, managedIdentity) { + this.canonicalAuthority = authority; + this._canonicalAuthority.validateAsUri(); + this.networkInterface = networkInterface; + this.cacheManager = cacheManager; + this.authorityOptions = authorityOptions; + this.regionDiscoveryMetadata = { + region_used: void 0, + region_source: void 0, + region_outcome: void 0 + }; + this.logger = logger31; + this.performanceClient = performanceClient; + this.correlationId = correlationId; + this.managedIdentity = managedIdentity || false; + this.regionDiscovery = new RegionDiscovery2(networkInterface, this.logger, this.performanceClient, this.correlationId); + } + /** + * Get {@link AuthorityType} + * @param authorityUri {@link IUri} + * @private + */ + getAuthorityType(authorityUri) { + if (authorityUri.HostNameAndPort.endsWith(CIAM_AUTH_URL)) { + return AuthorityType2.Ciam; + } + const pathSegments = authorityUri.PathSegments; + if (pathSegments.length) { + switch (pathSegments[0].toLowerCase()) { + case ADFS: + return AuthorityType2.Adfs; + case DSTS: + return AuthorityType2.Dsts; + } + } + return AuthorityType2.Default; + } + // See above for AuthorityType + get authorityType() { + return this.getAuthorityType(this.canonicalAuthorityUrlComponents); + } + /** + * ProtocolMode enum representing the way endpoints are constructed. + */ + get protocolMode() { + return this.authorityOptions.protocolMode; + } + /** + * Returns authorityOptions which can be used to reinstantiate a new authority instance + */ + get options() { + return this.authorityOptions; + } + /** + * A URL that is the authority set by the developer + */ + get canonicalAuthority() { + return this._canonicalAuthority.urlString; + } + /** + * Sets canonical authority. + */ + set canonicalAuthority(url2) { + this._canonicalAuthority = new UrlString2(url2); + this._canonicalAuthority.validateAsUri(); + this._canonicalAuthorityUrlComponents = null; + } + /** + * Get authority components. + */ + get canonicalAuthorityUrlComponents() { + if (!this._canonicalAuthorityUrlComponents) { + this._canonicalAuthorityUrlComponents = this._canonicalAuthority.getUrlComponents(); + } + return this._canonicalAuthorityUrlComponents; + } + /** + * Get hostname and port i.e. login.microsoftonline.com + */ + get hostnameAndPort() { + return this.canonicalAuthorityUrlComponents.HostNameAndPort.toLowerCase(); + } + /** + * Get tenant for authority. + */ + get tenant() { + return this.canonicalAuthorityUrlComponents.PathSegments[0]; + } + /** + * OAuth /authorize endpoint for requests + */ + get authorizationEndpoint() { + if (this.discoveryComplete()) { + return this.replacePath(this.metadata.authorization_endpoint); + } else { + throw createClientAuthError2(endpointResolutionError2); + } + } + /** + * OAuth /token endpoint for requests + */ + get tokenEndpoint() { + if (this.discoveryComplete()) { + return this.replacePath(this.metadata.token_endpoint); + } else { + throw createClientAuthError2(endpointResolutionError2); + } + } + get deviceCodeEndpoint() { + if (this.discoveryComplete()) { + return this.replacePath(this.metadata.token_endpoint.replace("/token", "/devicecode")); + } else { + throw createClientAuthError2(endpointResolutionError2); + } + } + /** + * OAuth logout endpoint for requests + */ + get endSessionEndpoint() { + if (this.discoveryComplete()) { + if (!this.metadata.end_session_endpoint) { + throw createClientAuthError2(endSessionEndpointNotSupported2); + } + return this.replacePath(this.metadata.end_session_endpoint); + } else { + throw createClientAuthError2(endpointResolutionError2); + } + } + /** + * OAuth issuer for requests + */ + get selfSignedJwtAudience() { + if (this.discoveryComplete()) { + return this.replacePath(this.metadata.issuer); + } else { + throw createClientAuthError2(endpointResolutionError2); + } + } + /** + * Jwks_uri for token signing keys + */ + get jwksUri() { + if (this.discoveryComplete()) { + return this.replacePath(this.metadata.jwks_uri); + } else { + throw createClientAuthError2(endpointResolutionError2); + } + } + /** + * Returns a flag indicating that tenant name can be replaced in authority {@link IUri} + * @param authorityUri {@link IUri} + * @private + */ + canReplaceTenant(authorityUri) { + return authorityUri.PathSegments.length === 1 && !_Authority.reservedTenantDomains.has(authorityUri.PathSegments[0]) && this.getAuthorityType(authorityUri) === AuthorityType2.Default && this.protocolMode !== ProtocolMode2.OIDC; + } + /** + * Replaces tenant in url path with current tenant. Defaults to common. + * @param urlString + */ + replaceTenant(urlString) { + return urlString.replace(/{tenant}|{tenantid}/g, this.tenant); + } + /** + * Replaces path such as tenant or policy with the current tenant or policy. + * @param urlString + */ + replacePath(urlString) { + let endpoint = urlString; + const cachedAuthorityUrl = new UrlString2(this.metadata.canonical_authority); + const cachedAuthorityUrlComponents = cachedAuthorityUrl.getUrlComponents(); + const cachedAuthorityParts = cachedAuthorityUrlComponents.PathSegments; + const currentAuthorityParts = this.canonicalAuthorityUrlComponents.PathSegments; + currentAuthorityParts.forEach((currentPart, index) => { + let cachedPart = cachedAuthorityParts[index]; + if (index === 0 && this.canReplaceTenant(cachedAuthorityUrlComponents)) { + const tenantId = new UrlString2(this.metadata.authorization_endpoint).getUrlComponents().PathSegments[0]; + if (cachedPart !== tenantId) { + this.logger.verbose(`Replacing tenant domain name '${cachedPart}' with id '${tenantId}'`, this.correlationId); + cachedPart = tenantId; + } + } + if (currentPart !== cachedPart) { + endpoint = endpoint.replace(`/${cachedPart}/`, `/${currentPart}/`); + } + }); + return this.replaceTenant(endpoint); + } + /** + * The default open id configuration endpoint for any canonical authority. + */ + get defaultOpenIdConfigurationEndpoint() { + const canonicalAuthorityHost = this.hostnameAndPort; + if (this.canonicalAuthority.endsWith("v2.0/") || this.authorityType === AuthorityType2.Adfs || this.protocolMode === ProtocolMode2.OIDC && !this.isAliasOfKnownMicrosoftAuthority(canonicalAuthorityHost)) { + return `${this.canonicalAuthority}.well-known/openid-configuration`; + } + return `${this.canonicalAuthority}v2.0/.well-known/openid-configuration`; + } + /** + * Boolean that returns whether or not tenant discovery has been completed. + */ + discoveryComplete() { + return !!this.metadata; + } + /** + * Perform endpoint discovery to discover aliases, preferred_cache, preferred_network + * and the /authorize, /token and logout endpoints. + */ + async resolveEndpointsAsync() { + const metadataEntity = this.getCurrentMetadataEntity(); + const cloudDiscoverySource = await invokeAsync2(this.updateCloudDiscoveryMetadata.bind(this), AuthorityUpdateCloudDiscoveryMetadata, this.logger, this.performanceClient, this.correlationId)(metadataEntity); + this.canonicalAuthority = this.canonicalAuthority.replace(this.hostnameAndPort, metadataEntity.preferred_network); + const endpointSource = await invokeAsync2(this.updateEndpointMetadata.bind(this), AuthorityUpdateEndpointMetadata, this.logger, this.performanceClient, this.correlationId)(metadataEntity); + this.updateCachedMetadata(metadataEntity, cloudDiscoverySource, { + source: endpointSource + }); + this.performanceClient?.addFields({ + cloudDiscoverySource, + authorityEndpointSource: endpointSource + }, this.correlationId); + } + /** + * Returns metadata entity from cache if it exists, otherwiser returns a new metadata entity built + * from the configured canonical authority + * @returns + */ + getCurrentMetadataEntity() { + let metadataEntity = this.cacheManager.getAuthorityMetadataByAlias(this.hostnameAndPort, this.correlationId); + if (!metadataEntity) { + metadataEntity = { + aliases: [], + preferred_cache: this.hostnameAndPort, + preferred_network: this.hostnameAndPort, + canonical_authority: this.canonicalAuthority, + authorization_endpoint: "", + token_endpoint: "", + end_session_endpoint: "", + issuer: "", + aliasesFromNetwork: false, + endpointsFromNetwork: false, + expiresAt: generateAuthorityMetadataExpiresAt2(), + jwks_uri: "" + }; + } + return metadataEntity; + } + /** + * Updates cached metadata based on metadata source and sets the instance's metadata + * property to the same value + * @param metadataEntity + * @param cloudDiscoverySource + * @param endpointMetadataResult + */ + updateCachedMetadata(metadataEntity, cloudDiscoverySource, endpointMetadataResult) { + if (cloudDiscoverySource !== AuthorityMetadataSource2.CACHE && endpointMetadataResult?.source !== AuthorityMetadataSource2.CACHE) { + metadataEntity.expiresAt = generateAuthorityMetadataExpiresAt2(); + metadataEntity.canonical_authority = this.canonicalAuthority; + } + const cacheKey2 = this.cacheManager.generateAuthorityMetadataCacheKey(metadataEntity.preferred_cache, this.correlationId); + this.cacheManager.setAuthorityMetadata(cacheKey2, metadataEntity, this.correlationId); + this.metadata = metadataEntity; + } + /** + * Update AuthorityMetadataEntity with new endpoints and return where the information came from + * @param metadataEntity + */ + async updateEndpointMetadata(metadataEntity) { + const localMetadata = this.updateEndpointMetadataFromLocalSources(metadataEntity); + if (localMetadata) { + if (localMetadata.source === AuthorityMetadataSource2.HARDCODED_VALUES) { + if (this.authorityOptions.azureRegionConfiguration?.azureRegion) { + if (localMetadata.metadata) { + const hardcodedMetadata = await invokeAsync2(this.updateMetadataWithRegionalInformation.bind(this), AuthorityUpdateMetadataWithRegionalInformation, this.logger, this.performanceClient, this.correlationId)(localMetadata.metadata); + updateAuthorityEndpointMetadata2(metadataEntity, hardcodedMetadata, false); + metadataEntity.canonical_authority = this.canonicalAuthority; + } + } + } + return localMetadata.source; + } + let metadata = await invokeAsync2(this.getEndpointMetadataFromNetwork.bind(this), AuthorityGetEndpointMetadataFromNetwork, this.logger, this.performanceClient, this.correlationId)(); + if (metadata) { + if (this.authorityOptions.azureRegionConfiguration?.azureRegion) { + metadata = await invokeAsync2(this.updateMetadataWithRegionalInformation.bind(this), AuthorityUpdateMetadataWithRegionalInformation, this.logger, this.performanceClient, this.correlationId)(metadata); + } + updateAuthorityEndpointMetadata2(metadataEntity, metadata, true); + return AuthorityMetadataSource2.NETWORK; + } else { + throw createClientAuthError2(openIdConfigError2, this.defaultOpenIdConfigurationEndpoint); + } + } + /** + * Updates endpoint metadata from local sources and returns where the information was retrieved from and the metadata config + * response if the source is hardcoded metadata + * @param metadataEntity + * @returns + */ + updateEndpointMetadataFromLocalSources(metadataEntity) { + this.logger.verbose("Attempting to get endpoint metadata from authority configuration", this.correlationId); + const configMetadata = this.getEndpointMetadataFromConfig(); + if (configMetadata) { + this.logger.verbose("Found endpoint metadata in authority configuration", this.correlationId); + updateAuthorityEndpointMetadata2(metadataEntity, configMetadata, false); + return { + source: AuthorityMetadataSource2.CONFIG + }; + } + this.logger.verbose("Did not find endpoint metadata in the config... Attempting to get endpoint metadata from the hardcoded values.", this.correlationId); + const hardcodedMetadata = this.getEndpointMetadataFromHardcodedValues(); + if (hardcodedMetadata) { + updateAuthorityEndpointMetadata2(metadataEntity, hardcodedMetadata, false); + return { + source: AuthorityMetadataSource2.HARDCODED_VALUES, + metadata: hardcodedMetadata + }; + } else { + this.logger.verbose("Did not find endpoint metadata in hardcoded values... Attempting to get endpoint metadata from the network metadata cache.", this.correlationId); + } + const metadataEntityExpired = isAuthorityMetadataExpired2(metadataEntity); + if (this.isAuthoritySameType(metadataEntity) && metadataEntity.endpointsFromNetwork && !metadataEntityExpired) { + this.logger.verbose("Found endpoint metadata in the cache.", ""); + return { source: AuthorityMetadataSource2.CACHE }; + } else if (metadataEntityExpired) { + this.logger.verbose("The metadata entity is expired.", ""); + } + return null; + } + /** + * Compares the number of url components after the domain to determine if the cached + * authority metadata can be used for the requested authority. Protects against same domain different + * authority such as login.microsoftonline.com/tenant and login.microsoftonline.com/tfp/tenant/policy + * @param metadataEntity + */ + isAuthoritySameType(metadataEntity) { + const cachedAuthorityUrl = new UrlString2(metadataEntity.canonical_authority); + const cachedParts = cachedAuthorityUrl.getUrlComponents().PathSegments; + return cachedParts.length === this.canonicalAuthorityUrlComponents.PathSegments.length; + } + /** + * Parse authorityMetadata config option + */ + getEndpointMetadataFromConfig() { + if (this.authorityOptions.authorityMetadata) { + try { + return JSON.parse(this.authorityOptions.authorityMetadata); + } catch (e) { + throw createClientConfigurationError2(invalidAuthorityMetadata2); + } + } + return null; + } + /** + * Gets OAuth endpoints from the given OpenID configuration endpoint. + * + * @param hasHardcodedMetadata boolean + */ + async getEndpointMetadataFromNetwork() { + const options = {}; + const openIdConfigurationEndpoint = this.defaultOpenIdConfigurationEndpoint; + this.logger.verbose(`Authority.getEndpointMetadataFromNetwork: attempting to retrieve OAuth endpoints from '${openIdConfigurationEndpoint}'`, this.correlationId); + try { + const response = await this.networkInterface.sendGetRequestAsync(openIdConfigurationEndpoint, options); + const isValidResponse = isOpenIdConfigResponse2(response.body); + if (isValidResponse) { + return response.body; + } else { + this.logger.verbose(`Authority.getEndpointMetadataFromNetwork: could not parse response as OpenID configuration`, this.correlationId); + return null; + } + } catch (e) { + this.logger.verbose(`Authority.getEndpointMetadataFromNetwork: '${e}'`, this.correlationId); + return null; + } + } + /** + * Get OAuth endpoints for common authorities. + */ + getEndpointMetadataFromHardcodedValues() { + if (this.hostnameAndPort in EndpointMetadata2) { + return EndpointMetadata2[this.hostnameAndPort]; + } + return null; + } + /** + * Update the retrieved metadata with regional information. + * User selected Azure region will be used if configured. + */ + async updateMetadataWithRegionalInformation(metadata) { + const userConfiguredAzureRegion = this.authorityOptions.azureRegionConfiguration?.azureRegion; + if (userConfiguredAzureRegion) { + if (userConfiguredAzureRegion !== AZURE_REGION_AUTO_DISCOVER_FLAG) { + this.regionDiscoveryMetadata.region_outcome = RegionDiscoveryOutcomes2.CONFIGURED_NO_AUTO_DETECTION; + this.regionDiscoveryMetadata.region_used = userConfiguredAzureRegion; + return _Authority.replaceWithRegionalInformation(metadata, userConfiguredAzureRegion); + } + const autodetectedRegionName = await invokeAsync2(this.regionDiscovery.detectRegion.bind(this.regionDiscovery), RegionDiscoveryDetectRegion, this.logger, this.performanceClient, this.correlationId)(this.authorityOptions.azureRegionConfiguration?.environmentRegion, this.regionDiscoveryMetadata); + if (autodetectedRegionName) { + this.regionDiscoveryMetadata.region_outcome = RegionDiscoveryOutcomes2.AUTO_DETECTION_REQUESTED_SUCCESSFUL; + this.regionDiscoveryMetadata.region_used = autodetectedRegionName; + return _Authority.replaceWithRegionalInformation(metadata, autodetectedRegionName); + } + this.regionDiscoveryMetadata.region_outcome = RegionDiscoveryOutcomes2.AUTO_DETECTION_REQUESTED_FAILED; + } + return metadata; + } + /** + * Updates the AuthorityMetadataEntity with new aliases, preferred_network and preferred_cache + * and returns where the information was retrieved from + * @param metadataEntity + * @returns AuthorityMetadataSource + */ + async updateCloudDiscoveryMetadata(metadataEntity) { + const localMetadataSource = this.updateCloudDiscoveryMetadataFromLocalSources(metadataEntity); + if (localMetadataSource) { + return localMetadataSource; + } + const metadata = await invokeAsync2(this.getCloudDiscoveryMetadataFromNetwork.bind(this), AuthorityGetCloudDiscoveryMetadataFromNetwork, this.logger, this.performanceClient, this.correlationId)(); + if (metadata) { + updateCloudDiscoveryMetadata2(metadataEntity, metadata, true); + return AuthorityMetadataSource2.NETWORK; + } + throw createClientConfigurationError2(untrustedAuthority2); + } + updateCloudDiscoveryMetadataFromLocalSources(metadataEntity) { + this.logger.verbose("Attempting to get cloud discovery metadata from authority configuration", this.correlationId); + this.logger.verbosePii(`Known Authorities: '${this.authorityOptions.knownAuthorities || NOT_APPLICABLE}'`, this.correlationId); + this.logger.verbosePii(`Authority Metadata: '${this.authorityOptions.authorityMetadata || NOT_APPLICABLE}'`, this.correlationId); + this.logger.verbosePii(`Canonical Authority: '${metadataEntity.canonical_authority || NOT_APPLICABLE}'`, this.correlationId); + const metadata = this.getCloudDiscoveryMetadataFromConfig(); + if (metadata) { + this.logger.verbose("Found cloud discovery metadata in authority configuration", this.correlationId); + updateCloudDiscoveryMetadata2(metadataEntity, metadata, false); + return AuthorityMetadataSource2.CONFIG; + } + this.logger.verbose("Did not find cloud discovery metadata in the config... Attempting to get cloud discovery metadata from the hardcoded values.", this.correlationId); + const hardcodedMetadata = getCloudDiscoveryMetadataFromHardcodedValues2(this.hostnameAndPort); + if (hardcodedMetadata) { + this.logger.verbose("Found cloud discovery metadata from hardcoded values.", this.correlationId); + updateCloudDiscoveryMetadata2(metadataEntity, hardcodedMetadata, false); + return AuthorityMetadataSource2.HARDCODED_VALUES; + } + this.logger.verbose("Did not find cloud discovery metadata in hardcoded values... Attempting to get cloud discovery metadata from the network metadata cache.", this.correlationId); + const metadataEntityExpired = isAuthorityMetadataExpired2(metadataEntity); + if (this.isAuthoritySameType(metadataEntity) && metadataEntity.aliasesFromNetwork && !metadataEntityExpired) { + this.logger.verbose("Found cloud discovery metadata in the cache.", ""); + return AuthorityMetadataSource2.CACHE; + } else if (metadataEntityExpired) { + this.logger.verbose("The metadata entity is expired.", ""); + } + return null; + } + /** + * Parse cloudDiscoveryMetadata config or check knownAuthorities + */ + getCloudDiscoveryMetadataFromConfig() { + if (this.authorityType === AuthorityType2.Ciam) { + this.logger.verbose("CIAM authorities do not support cloud discovery metadata, generate the aliases from authority host.", this.correlationId); + return _Authority.createCloudDiscoveryMetadataFromHost(this.hostnameAndPort); + } + if (this.authorityOptions.cloudDiscoveryMetadata) { + this.logger.verbose("The cloud discovery metadata has been provided as a network response, in the config.", this.correlationId); + try { + this.logger.verbose("Attempting to parse the cloud discovery metadata.", this.correlationId); + const parsedResponse = JSON.parse(this.authorityOptions.cloudDiscoveryMetadata); + const metadata = getCloudDiscoveryMetadataFromNetworkResponse2(parsedResponse.metadata, this.hostnameAndPort); + this.logger.verbose("Parsed the cloud discovery metadata.", ""); + if (metadata) { + this.logger.verbose("There is returnable metadata attached to the parsed cloud discovery metadata.", this.correlationId); + return metadata; + } else { + this.logger.verbose("There is no metadata attached to the parsed cloud discovery metadata.", this.correlationId); + } + } catch (e) { + this.logger.verbose("Unable to parse the cloud discovery metadata. Throwing Invalid Cloud Discovery Metadata Error.", this.correlationId); + throw createClientConfigurationError2(invalidCloudDiscoveryMetadata2); + } + } + if (this.isInKnownAuthorities()) { + this.logger.verbose("The host is included in knownAuthorities. Creating new cloud discovery metadata from the host.", this.correlationId); + return _Authority.createCloudDiscoveryMetadataFromHost(this.hostnameAndPort); + } + return null; + } + /** + * Called to get metadata from network if CloudDiscoveryMetadata was not populated by config + * + * @param hasHardcodedMetadata boolean + */ + async getCloudDiscoveryMetadataFromNetwork() { + const instanceDiscoveryEndpoint = `${AAD_INSTANCE_DISCOVERY_ENDPT}${this.canonicalAuthority}oauth2/v2.0/authorize`; + const options = {}; + let match = null; + try { + const response = await this.networkInterface.sendGetRequestAsync(instanceDiscoveryEndpoint, options); + let typedResponseBody; + let metadata; + if (isCloudInstanceDiscoveryResponse2(response.body)) { + typedResponseBody = response.body; + metadata = typedResponseBody.metadata; + this.logger.verbosePii(`tenant_discovery_endpoint is: '${typedResponseBody.tenant_discovery_endpoint}'`, this.correlationId); + } else if (isCloudInstanceDiscoveryErrorResponse2(response.body)) { + this.logger.warning(`A CloudInstanceDiscoveryErrorResponse was returned. The cloud instance discovery network request's status code is: '${response.status}'`, this.correlationId); + typedResponseBody = response.body; + if (typedResponseBody.error === INVALID_INSTANCE) { + this.logger.error("The CloudInstanceDiscoveryErrorResponse error is invalid_instance.", this.correlationId); + return null; + } + this.logger.warning(`The CloudInstanceDiscoveryErrorResponse error is '${typedResponseBody.error}'`, this.correlationId); + this.logger.warning(`The CloudInstanceDiscoveryErrorResponse error description is '${typedResponseBody.error_description}'`, this.correlationId); + this.logger.warning("Setting the value of the CloudInstanceDiscoveryMetadata (returned from the network, correlationId) to []", this.correlationId); + metadata = []; + } else { + this.logger.error("AAD did not return a CloudInstanceDiscoveryResponse or CloudInstanceDiscoveryErrorResponse", this.correlationId); + return null; + } + this.logger.verbose("Attempting to find a match between the developer's authority and the CloudInstanceDiscoveryMetadata returned from the network request.", this.correlationId); + match = getCloudDiscoveryMetadataFromNetworkResponse2(metadata, this.hostnameAndPort); + } catch (error2) { + if (error2 instanceof AuthError2) { + this.logger.error(`There was a network error while attempting to get the cloud discovery instance metadata. +Error: '${error2.errorCode}' +Error Description: '${error2.errorMessage}'`, this.correlationId); + } else { + const typedError = error2; + this.logger.error(`A non-MSALJS error was thrown while attempting to get the cloud instance discovery metadata. +Error: '${typedError.name}' +Error Description: '${typedError.message}'`, this.correlationId); + } + return null; + } + if (!match) { + this.logger.warning("The developer's authority was not found within the CloudInstanceDiscoveryMetadata returned from the network request.", this.correlationId); + this.logger.verbose("Creating custom Authority for custom domain scenario.", this.correlationId); + match = _Authority.createCloudDiscoveryMetadataFromHost(this.hostnameAndPort); + } + return match; + } + /** + * Helper function to determine if this host is included in the knownAuthorities config option + */ + isInKnownAuthorities() { + const matches = this.authorityOptions.knownAuthorities.filter((authority) => { + return authority && UrlString2.getDomainFromUrl(authority).toLowerCase() === this.hostnameAndPort; + }); + return matches.length > 0; + } + /** + * helper function to populate the authority based on azureCloudOptions + * @param authorityString + * @param azureCloudOptions + */ + static generateAuthority(authorityString, azureCloudOptions) { + let authorityAzureCloudInstance; + if (azureCloudOptions && azureCloudOptions.azureCloudInstance !== AzureCloudInstance2.None) { + const tenant = azureCloudOptions.tenant ? azureCloudOptions.tenant : DEFAULT_COMMON_TENANT; + authorityAzureCloudInstance = `${azureCloudOptions.azureCloudInstance}/${tenant}/`; + } + return authorityAzureCloudInstance ? authorityAzureCloudInstance : authorityString; + } + /** + * Creates cloud discovery metadata object from a given host + * @param host + */ + static createCloudDiscoveryMetadataFromHost(host) { + return { + preferred_network: host, + preferred_cache: host, + aliases: [host] + }; + } + /** + * helper function to generate environment from authority object + */ + getPreferredCache() { + if (this.managedIdentity) { + return DEFAULT_AUTHORITY_HOST; + } else if (this.discoveryComplete()) { + return this.metadata.preferred_cache; + } else { + throw createClientAuthError2(endpointResolutionError2); + } + } + /** + * Returns whether or not the provided host is an alias of this authority instance + * @param host + */ + isAlias(host) { + return this.metadata.aliases.indexOf(host) > -1; + } + /** + * Returns whether or not the provided host is an alias of a known Microsoft authority for purposes of endpoint discovery + * @param host + */ + isAliasOfKnownMicrosoftAuthority(host) { + return InstanceDiscoveryMetadataAliases2.has(host); + } + /** + * Checks whether the provided host is that of a public cloud authority + * + * @param authority string + * @returns bool + */ + static isPublicCloudAuthority(host) { + return KNOWN_PUBLIC_CLOUDS.indexOf(host) >= 0; + } + /** + * Rebuild the authority string with the region + * + * @param host string + * @param region string + */ + static buildRegionalAuthorityString(host, region, queryString) { + const authorityUrlInstance = new UrlString2(host); + authorityUrlInstance.validateAsUri(); + const authorityUrlParts = authorityUrlInstance.getUrlComponents(); + let hostNameAndPort = `${region}.${authorityUrlParts.HostNameAndPort}`; + if (this.isPublicCloudAuthority(authorityUrlParts.HostNameAndPort)) { + hostNameAndPort = `${region}.${REGIONAL_AUTH_PUBLIC_CLOUD_SUFFIX}`; + } + const url2 = UrlString2.constructAuthorityUriFromObject({ + ...authorityUrlInstance.getUrlComponents(), + HostNameAndPort: hostNameAndPort + }).urlString; + if (queryString) + return `${url2}?${queryString}`; + return url2; + } + /** + * Replace the endpoints in the metadata object with their regional equivalents. + * + * @param metadata OpenIdConfigResponse + * @param azureRegion string + */ + static replaceWithRegionalInformation(metadata, azureRegion) { + const regionalMetadata = { ...metadata }; + regionalMetadata.authorization_endpoint = _Authority.buildRegionalAuthorityString(regionalMetadata.authorization_endpoint, azureRegion); + regionalMetadata.token_endpoint = _Authority.buildRegionalAuthorityString(regionalMetadata.token_endpoint, azureRegion); + if (regionalMetadata.end_session_endpoint) { + regionalMetadata.end_session_endpoint = _Authority.buildRegionalAuthorityString(regionalMetadata.end_session_endpoint, azureRegion); + } + return regionalMetadata; + } + /** + * Transform CIAM_AUTHORIY as per the below rules: + * If no path segments found and it is a CIAM authority (hostname ends with .ciamlogin.com), then transform it + * + * NOTE: The transformation path should go away once STS supports CIAM with the format: `tenantIdorDomain.ciamlogin.com` + * `ciamlogin.com` can also change in the future and we should accommodate the same + * + * @param authority + */ + static transformCIAMAuthority(authority) { + let ciamAuthority = authority; + const authorityUrl = new UrlString2(authority); + const authorityUrlComponents = authorityUrl.getUrlComponents(); + if (authorityUrlComponents.PathSegments.length === 0 && authorityUrlComponents.HostNameAndPort.endsWith(CIAM_AUTH_URL)) { + const tenantIdOrDomain = authorityUrlComponents.HostNameAndPort.split(".")[0]; + ciamAuthority = `${ciamAuthority}${tenantIdOrDomain}${AAD_TENANT_DOMAIN_SUFFIX}`; + } + return ciamAuthority; + } + }; + Authority2.reservedTenantDomains = /* @__PURE__ */ new Set([ + "{tenant}", + "{tenantid}", + AADAuthority.COMMON, + AADAuthority.CONSUMERS, + AADAuthority.ORGANIZATIONS + ]); + } +}); + +// node_modules/@azure/msal-common/dist/authority/AuthorityFactory.mjs +var AuthorityFactory_exports2 = {}; +__export(AuthorityFactory_exports2, { + createDiscoveredInstance: () => createDiscoveredInstance2 +}); +async function createDiscoveredInstance2(authorityUri, networkClient, cacheManager, authorityOptions, logger31, correlationId, performanceClient) { + const authorityUriFinal = Authority2.transformCIAMAuthority(formatAuthorityUri2(authorityUri)); + const acquireTokenAuthority = new Authority2(authorityUriFinal, networkClient, cacheManager, authorityOptions, logger31, correlationId, performanceClient); + try { + await invokeAsync2(acquireTokenAuthority.resolveEndpointsAsync.bind(acquireTokenAuthority), AuthorityResolveEndpointsAsync, logger31, performanceClient, correlationId)(); + return acquireTokenAuthority; + } catch (e) { + throw createClientAuthError2(endpointResolutionError2); + } +} +var init_AuthorityFactory = __esm({ + "node_modules/@azure/msal-common/dist/authority/AuthorityFactory.mjs"() { + "use strict"; + init_Authority(); + init_ClientAuthError(); + init_PerformanceEvents(); + init_FunctionWrappers(); + init_ClientAuthErrorCodes(); + } +}); + +// node_modules/@azure/msal-common/dist/client/AuthorizationCodeClient.mjs +var AuthorizationCodeClient2; +var init_AuthorizationCodeClient = __esm({ + "node_modules/@azure/msal-common/dist/client/AuthorizationCodeClient.mjs"() { + "use strict"; + init_RequestParameterBuilder(); + init_UrlUtils(); + init_Constants(); + init_AADServerParamKeys(); + init_ClientConfiguration(); + init_ResponseHandler(); + init_ClientAuthError(); + init_UrlString(); + init_PopTokenGenerator(); + init_TimeUtils(); + init_ClientInfo(); + init_CcsCredential(); + init_ClientConfigurationError(); + init_PerformanceEvents(); + init_FunctionWrappers(); + init_ClientAssertionUtils(); + init_RequestThumbprint(); + init_Token(); + init_AuthorityFactory(); + init_Logger(); + init_packageMetadata(); + init_ClientAuthErrorCodes(); + init_ClientConfigurationErrorCodes(); + AuthorizationCodeClient2 = class { + constructor(configuration, performanceClient) { + this.includeRedirectUri = true; + this.config = buildClientConfiguration2(configuration); + this.logger = new Logger2(this.config.loggerOptions, name3, version4); + this.cryptoUtils = this.config.cryptoInterface; + this.cacheManager = this.config.storageInterface; + this.networkClient = this.config.networkInterface; + this.serverTelemetryManager = this.config.serverTelemetryManager; + this.authority = this.config.authOptions.authority; + this.performanceClient = performanceClient; + this.oidcDefaultScopes = this.config.authOptions.authority.options.OIDCOptions?.defaultScopes; + } + /** + * API to acquire a token in exchange of 'authorization_code` acquired by the user in the first leg of the + * authorization_code_grant + * @param request + */ + async acquireToken(request, apiId, authCodePayload) { + if (!request.code) { + throw createClientAuthError2(requestCannotBeMade2); + } + if (authCodePayload && authCodePayload.cloud_instance_host_name) { + await invokeAsync2(this.updateTokenEndpointAuthority.bind(this), UpdateTokenEndpointAuthority, this.logger, this.performanceClient, request.correlationId)(authCodePayload.cloud_instance_host_name, request.correlationId); + } + const reqTimestamp = nowSeconds2(); + const response = await invokeAsync2(this.executeTokenRequest.bind(this), AuthClientExecuteTokenRequest, this.logger, this.performanceClient, request.correlationId)(this.authority, request, this.serverTelemetryManager); + const requestId = response.headers?.[HeaderNames2.X_MS_REQUEST_ID]; + const responseHandler = new ResponseHandler2(this.config.authOptions.clientId, this.cacheManager, this.cryptoUtils, this.logger, this.performanceClient, this.config.serializableCache, this.config.persistencePlugin); + responseHandler.validateTokenResponse(response.body, request.correlationId); + return invokeAsync2(responseHandler.handleServerTokenResponse.bind(responseHandler), HandleServerTokenResponse, this.logger, this.performanceClient, request.correlationId)(response.body, this.authority, reqTimestamp, request, apiId, authCodePayload, void 0, void 0, void 0, requestId); + } + /** + * Used to log out the current user, and redirect the user to the postLogoutRedirectUri. + * Default behaviour is to redirect the user to `window.location.href`. + * @param authorityUri + */ + getLogoutUri(logoutRequest) { + if (!logoutRequest) { + throw createClientConfigurationError2(logoutRequestEmpty2); + } + const queryString = this.createLogoutUrlQueryString(logoutRequest); + return UrlString2.appendQueryString(this.authority.endSessionEndpoint, queryString); + } + /** + * Executes POST request to token endpoint + * @param authority + * @param request + */ + async executeTokenRequest(authority, request, serverTelemetryManager) { + const queryParametersString = createTokenQueryParameters(request, this.config.authOptions.clientId, this.config.authOptions.redirectUri, this.performanceClient); + const endpoint = UrlString2.appendQueryString(authority.tokenEndpoint, queryParametersString); + const requestBody = await invokeAsync2(this.createTokenRequestBody.bind(this), AuthClientCreateTokenRequestBody, this.logger, this.performanceClient, request.correlationId)(request); + let ccsCredential = void 0; + if (request.clientInfo) { + try { + const clientInfo = buildClientInfo2(request.clientInfo, this.cryptoUtils.base64Decode); + ccsCredential = { + credential: `${clientInfo.uid}${CLIENT_INFO_SEPARATOR}${clientInfo.utid}`, + type: CcsCredentialType2.HOME_ACCOUNT_ID + }; + } catch (e) { + this.logger.verbose(`Could not parse client info for CCS Header: '${e}'`, request.correlationId); + } + } + const headers = createTokenRequestHeaders(this.logger, this.config.systemOptions.preventCorsPreflight, ccsCredential || request.ccsCredential); + const thumbprint = getRequestThumbprint2(this.config.authOptions.clientId, request); + return invokeAsync2(executePostToTokenEndpoint, AuthorizationCodeClientExecutePostToTokenEndpoint, this.logger, this.performanceClient, request.correlationId)(endpoint, requestBody, headers, thumbprint, request.correlationId, this.cacheManager, this.networkClient, this.logger, this.performanceClient, serverTelemetryManager); + } + /** + * Generates a map for all the params to be sent to the service + * @param request + */ + async createTokenRequestBody(request) { + const parameters = /* @__PURE__ */ new Map(); + addClientId2(parameters, request.embeddedClientId || request.extraParameters?.[CLIENT_ID2] || this.config.authOptions.clientId); + if (!this.includeRedirectUri) { + if (!request.redirectUri) { + throw createClientConfigurationError2(redirectUriEmpty2); + } + } else { + addRedirectUri2(parameters, request.redirectUri); + } + addScopes2(parameters, request.scopes, true, this.oidcDefaultScopes); + addResource(parameters, request.resource); + addAuthorizationCode2(parameters, request.code); + addLibraryInfo2(parameters, this.config.libraryInfo); + addApplicationTelemetry2(parameters, this.config.telemetry.application); + addThrottling2(parameters); + if (this.serverTelemetryManager && !isOidcProtocolMode2(this.config)) { + addServerTelemetry2(parameters, this.serverTelemetryManager); + } + if (request.codeVerifier) { + addCodeVerifier2(parameters, request.codeVerifier); + } + if (this.config.clientCredentials.clientSecret) { + addClientSecret2(parameters, this.config.clientCredentials.clientSecret); + } + if (this.config.clientCredentials.clientAssertion) { + const clientAssertion = this.config.clientCredentials.clientAssertion; + addClientAssertion2(parameters, await getClientAssertion2(clientAssertion.assertion, this.config.authOptions.clientId, request.resourceRequestUri)); + addClientAssertionType2(parameters, clientAssertion.assertionType); + } + addGrantType2(parameters, GrantType2.AUTHORIZATION_CODE_GRANT); + addClientInfo2(parameters); + if (request.authenticationScheme === AuthenticationScheme2.POP) { + const popTokenGenerator = new PopTokenGenerator2(this.cryptoUtils, this.performanceClient); + let reqCnfData; + if (!request.popKid) { + const generatedReqCnfData = await invokeAsync2(popTokenGenerator.generateCnf.bind(popTokenGenerator), PopTokenGenerateCnf, this.logger, this.performanceClient, request.correlationId)(request, this.logger); + reqCnfData = generatedReqCnfData.reqCnfString; + } else { + reqCnfData = this.cryptoUtils.encodeKid(request.popKid); + } + addPopToken2(parameters, reqCnfData); + } else if (request.authenticationScheme === AuthenticationScheme2.SSH) { + if (request.sshJwk) { + addSshJwk2(parameters, request.sshJwk); + } else { + throw createClientConfigurationError2(missingSshJwk2); + } + } + let ccsCred = void 0; + if (request.clientInfo) { + try { + const clientInfo = buildClientInfo2(request.clientInfo, this.cryptoUtils.base64Decode); + ccsCred = { + credential: `${clientInfo.uid}${CLIENT_INFO_SEPARATOR}${clientInfo.utid}`, + type: CcsCredentialType2.HOME_ACCOUNT_ID + }; + } catch (e) { + this.logger.verbose(`Could not parse client info for CCS Header: '${e}'`, request.correlationId); + } + } else { + ccsCred = request.ccsCredential; + } + if (this.config.systemOptions.preventCorsPreflight && ccsCred) { + switch (ccsCred.type) { + case CcsCredentialType2.HOME_ACCOUNT_ID: + try { + const clientInfo = buildClientInfoFromHomeAccountId2(ccsCred.credential); + addCcsOid2(parameters, clientInfo); + } catch (e) { + this.logger.verbose(`Could not parse home account ID for CCS Header: '${e}'`, request.correlationId); + } + break; + case CcsCredentialType2.UPN: + addCcsUpn2(parameters, ccsCred.credential); + break; + } + } + if (request.embeddedClientId) { + addBrokerParameters2(parameters, this.config.authOptions.clientId, this.config.authOptions.redirectUri); + } + if (request.extraParameters) { + addExtraParameters(parameters, request.extraParameters); + } + if (request.enableSpaAuthorizationCode && (!request.extraParameters || !request.extraParameters[RETURN_SPA_CODE2])) { + addExtraParameters(parameters, { + [RETURN_SPA_CODE2]: "1" + }); + } + instrumentBrokerParams2(parameters, request.correlationId, this.performanceClient); + addClaims2(parameters, request.claims, this.config.authOptions.clientCapabilities, request.skipBrokerClaims); + return mapToQueryString2(parameters); + } + /** + * This API validates the `EndSessionRequest` and creates a URL + * @param request + */ + createLogoutUrlQueryString(request) { + const parameters = /* @__PURE__ */ new Map(); + if (request.postLogoutRedirectUri) { + addPostLogoutRedirectUri2(parameters, request.postLogoutRedirectUri); + } + if (request.correlationId) { + addCorrelationId2(parameters, request.correlationId); + } + if (request.idTokenHint) { + addIdTokenHint2(parameters, request.idTokenHint); + } + if (request.state) { + addState2(parameters, request.state); + } + if (request.logoutHint) { + addLogoutHint2(parameters, request.logoutHint); + } + if (request.extraQueryParameters) { + addExtraParameters(parameters, request.extraQueryParameters); + } + if (this.config.authOptions.instanceAware) { + addInstanceAware2(parameters); + } + return mapToQueryString2(parameters); + } + /** + * Updates the authority to the cloud instance provided in the authorization response + * @param cloudInstanceHostName - cloud instance host name from authorization code payload + * @param correlationId - request correlation id + */ + async updateTokenEndpointAuthority(cloudInstanceHostName, correlationId) { + const cloudInstanceAuthorityUri = `https://${cloudInstanceHostName}/${this.authority.tenant}/`; + const cloudInstanceAuthority = await createDiscoveredInstance2(cloudInstanceAuthorityUri, this.networkClient, this.cacheManager, this.authority.options, this.logger, correlationId, this.performanceClient); + this.authority = cloudInstanceAuthority; + } + }; + } +}); + +// node_modules/@azure/msal-common/dist/client/RefreshTokenClient.mjs +var DEFAULT_REFRESH_TOKEN_EXPIRATION_OFFSET_SECONDS2, RefreshTokenClient2; +var init_RefreshTokenClient = __esm({ + "node_modules/@azure/msal-common/dist/client/RefreshTokenClient.mjs"() { + "use strict"; + init_ClientConfiguration(); + init_RequestParameterBuilder(); + init_UrlUtils(); + init_Constants(); + init_AADServerParamKeys(); + init_ResponseHandler(); + init_PopTokenGenerator(); + init_ClientConfigurationError(); + init_ClientAuthError(); + init_ServerError(); + init_TimeUtils(); + init_UrlString(); + init_CcsCredential(); + init_ClientInfo(); + init_InteractionRequiredAuthError(); + init_PerformanceEvents(); + init_FunctionWrappers(); + init_ClientAssertionUtils(); + init_RequestThumbprint(); + init_Token(); + init_Logger(); + init_packageMetadata(); + init_InteractionRequiredAuthErrorCodes(); + init_ClientConfigurationErrorCodes(); + init_ClientAuthErrorCodes(); + DEFAULT_REFRESH_TOKEN_EXPIRATION_OFFSET_SECONDS2 = 300; + RefreshTokenClient2 = class { + constructor(configuration, performanceClient) { + this.config = buildClientConfiguration2(configuration); + this.logger = new Logger2(this.config.loggerOptions, name3, version4); + this.cryptoUtils = this.config.cryptoInterface; + this.cacheManager = this.config.storageInterface; + this.networkClient = this.config.networkInterface; + this.serverTelemetryManager = this.config.serverTelemetryManager; + this.authority = this.config.authOptions.authority; + this.performanceClient = performanceClient; + } + async acquireToken(request, apiId) { + const reqTimestamp = nowSeconds2(); + const response = await invokeAsync2(this.executeTokenRequest.bind(this), RefreshTokenClientExecuteTokenRequest, this.logger, this.performanceClient, request.correlationId)(request, this.authority); + const requestId = response.headers?.[HeaderNames2.X_MS_REQUEST_ID]; + const responseHandler = new ResponseHandler2(this.config.authOptions.clientId, this.cacheManager, this.cryptoUtils, this.logger, this.performanceClient, this.config.serializableCache, this.config.persistencePlugin); + responseHandler.validateTokenResponse(response.body, request.correlationId); + return invokeAsync2(responseHandler.handleServerTokenResponse.bind(responseHandler), HandleServerTokenResponse, this.logger, this.performanceClient, request.correlationId)(response.body, this.authority, reqTimestamp, request, apiId, void 0, void 0, true, request.forceCache, requestId); + } + /** + * Gets cached refresh token and attaches to request, then calls acquireToken API + * @param request + */ + async acquireTokenByRefreshToken(request, apiId) { + if (!request) { + throw createClientConfigurationError2(tokenRequestEmpty2); + } + if (!request.account) { + throw createClientAuthError2(noAccountInSilentRequest2); + } + const isFOCI = this.cacheManager.isAppMetadataFOCI(request.account.environment, request.correlationId); + if (isFOCI) { + try { + return await invokeAsync2(this.acquireTokenWithCachedRefreshToken.bind(this), RefreshTokenClientAcquireTokenWithCachedRefreshToken, this.logger, this.performanceClient, request.correlationId)(request, true, apiId); + } catch (e) { + const noFamilyRTInCache = e instanceof InteractionRequiredAuthError2 && e.errorCode === noTokensFound2; + const clientMismatchErrorWithFamilyRT = e instanceof ServerError2 && e.errorCode === INVALID_GRANT_ERROR && e.subError === CLIENT_MISMATCH_ERROR; + if (noFamilyRTInCache || clientMismatchErrorWithFamilyRT) { + return invokeAsync2(this.acquireTokenWithCachedRefreshToken.bind(this), RefreshTokenClientAcquireTokenWithCachedRefreshToken, this.logger, this.performanceClient, request.correlationId)(request, false, apiId); + } else { + throw e; + } + } + } + return invokeAsync2(this.acquireTokenWithCachedRefreshToken.bind(this), RefreshTokenClientAcquireTokenWithCachedRefreshToken, this.logger, this.performanceClient, request.correlationId)(request, false, apiId); + } + /** + * makes a network call to acquire tokens by exchanging RefreshToken available in userCache; throws if refresh token is not cached + * @param request + */ + async acquireTokenWithCachedRefreshToken(request, foci, apiId) { + const refreshToken = invoke2(this.cacheManager.getRefreshToken.bind(this.cacheManager), CacheManagerGetRefreshToken, this.logger, this.performanceClient, request.correlationId)(request.account, foci, request.correlationId, void 0); + if (!refreshToken) { + throw createInteractionRequiredAuthError2(noTokensFound2); + } + if (refreshToken.expiresOn) { + const offset = request.refreshTokenExpirationOffsetSeconds || DEFAULT_REFRESH_TOKEN_EXPIRATION_OFFSET_SECONDS2; + this.performanceClient?.addFields({ + cacheRtExpiresOnSeconds: Number(refreshToken.expiresOn), + rtOffsetSeconds: offset + }, request.correlationId); + if (isTokenExpired2(refreshToken.expiresOn, offset)) { + throw createInteractionRequiredAuthError2(refreshTokenExpired2); + } + } + const refreshTokenRequest = { + ...request, + refreshToken: refreshToken.secret, + authenticationScheme: request.authenticationScheme || AuthenticationScheme2.BEARER, + ccsCredential: { + credential: request.account.homeAccountId, + type: CcsCredentialType2.HOME_ACCOUNT_ID + } + }; + try { + return await invokeAsync2(this.acquireToken.bind(this), RefreshTokenClientAcquireToken, this.logger, this.performanceClient, request.correlationId)(refreshTokenRequest, apiId); + } catch (e) { + if (e instanceof InteractionRequiredAuthError2) { + if (e.subError === badToken2) { + this.logger.verbose("acquireTokenWithRefreshToken: bad refresh token, removing from cache", request.correlationId); + const badRefreshTokenKey = this.cacheManager.generateCredentialKey(refreshToken); + this.cacheManager.removeRefreshToken(badRefreshTokenKey, request.correlationId); + } + } + throw e; + } + } + /** + * Constructs the network message and makes a NW call to the underlying secure token service + * @param request + * @param authority + */ + async executeTokenRequest(request, authority) { + const queryParametersString = createTokenQueryParameters(request, this.config.authOptions.clientId, this.config.authOptions.redirectUri, this.performanceClient); + const endpoint = UrlString2.appendQueryString(authority.tokenEndpoint, queryParametersString); + const requestBody = await invokeAsync2(this.createTokenRequestBody.bind(this), RefreshTokenClientCreateTokenRequestBody, this.logger, this.performanceClient, request.correlationId)(request); + const headers = createTokenRequestHeaders(this.logger, this.config.systemOptions.preventCorsPreflight, request.ccsCredential); + const thumbprint = getRequestThumbprint2(this.config.authOptions.clientId, request); + return invokeAsync2(executePostToTokenEndpoint, RefreshTokenClientExecutePostToTokenEndpoint, this.logger, this.performanceClient, request.correlationId)(endpoint, requestBody, headers, thumbprint, request.correlationId, this.cacheManager, this.networkClient, this.logger, this.performanceClient, this.serverTelemetryManager); + } + /** + * Helper function to create the token request body + * @param request + */ + async createTokenRequestBody(request) { + const parameters = /* @__PURE__ */ new Map(); + addClientId2(parameters, request.embeddedClientId || request.extraParameters?.[CLIENT_ID2] || this.config.authOptions.clientId); + if (request.redirectUri) { + addRedirectUri2(parameters, request.redirectUri); + } + addScopes2(parameters, request.scopes, true, this.config.authOptions.authority.options.OIDCOptions?.defaultScopes); + addGrantType2(parameters, GrantType2.REFRESH_TOKEN_GRANT); + addClientInfo2(parameters); + addLibraryInfo2(parameters, this.config.libraryInfo); + addApplicationTelemetry2(parameters, this.config.telemetry.application); + addThrottling2(parameters); + if (this.serverTelemetryManager && !isOidcProtocolMode2(this.config)) { + addServerTelemetry2(parameters, this.serverTelemetryManager); + } + addRefreshToken2(parameters, request.refreshToken); + if (this.config.clientCredentials.clientSecret) { + addClientSecret2(parameters, this.config.clientCredentials.clientSecret); + } + if (this.config.clientCredentials.clientAssertion) { + const clientAssertion = this.config.clientCredentials.clientAssertion; + addClientAssertion2(parameters, await getClientAssertion2(clientAssertion.assertion, this.config.authOptions.clientId, request.resourceRequestUri)); + addClientAssertionType2(parameters, clientAssertion.assertionType); + } + if (request.authenticationScheme === AuthenticationScheme2.POP) { + const popTokenGenerator = new PopTokenGenerator2(this.cryptoUtils, this.performanceClient); + let reqCnfData; + if (!request.popKid) { + const generatedReqCnfData = await invokeAsync2(popTokenGenerator.generateCnf.bind(popTokenGenerator), PopTokenGenerateCnf, this.logger, this.performanceClient, request.correlationId)(request, this.logger); + reqCnfData = generatedReqCnfData.reqCnfString; + } else { + reqCnfData = this.cryptoUtils.encodeKid(request.popKid); + } + addPopToken2(parameters, reqCnfData); + } else if (request.authenticationScheme === AuthenticationScheme2.SSH) { + if (request.sshJwk) { + addSshJwk2(parameters, request.sshJwk); + } else { + throw createClientConfigurationError2(missingSshJwk2); + } + } + if (this.config.systemOptions.preventCorsPreflight && request.ccsCredential) { + switch (request.ccsCredential.type) { + case CcsCredentialType2.HOME_ACCOUNT_ID: + try { + const clientInfo = buildClientInfoFromHomeAccountId2(request.ccsCredential.credential); + addCcsOid2(parameters, clientInfo); + } catch (e) { + this.logger.verbose(`Could not parse home account ID for CCS Header: '${e}'`, request.correlationId); + } + break; + case CcsCredentialType2.UPN: + addCcsUpn2(parameters, request.ccsCredential.credential); + break; + } + } + if (request.embeddedClientId) { + addBrokerParameters2(parameters, this.config.authOptions.clientId, this.config.authOptions.redirectUri); + } + if (request.extraParameters) { + addExtraParameters(parameters, { + ...request.extraParameters + }); + } + instrumentBrokerParams2(parameters, request.correlationId, this.performanceClient); + addClaims2(parameters, request.claims, this.config.authOptions.clientCapabilities, request.skipBrokerClaims); + return mapToQueryString2(parameters); + } + }; + } +}); + +// node_modules/@azure/msal-common/dist/client/SilentFlowClient.mjs +var SilentFlowClient2; +var init_SilentFlowClient = __esm({ + "node_modules/@azure/msal-common/dist/client/SilentFlowClient.mjs"() { + "use strict"; + init_ClientConfiguration(); + init_TimeUtils(); + init_ClientAuthError(); + init_ResponseHandler(); + init_Constants(); + init_StringUtils(); + init_AuthToken(); + init_PerformanceEvents(); + init_FunctionWrappers(); + init_Authority(); + init_Logger(); + init_packageMetadata(); + init_ClientAuthErrorCodes(); + SilentFlowClient2 = class { + constructor(configuration, performanceClient) { + this.config = buildClientConfiguration2(configuration); + this.logger = new Logger2(this.config.loggerOptions, name3, version4); + this.cryptoUtils = this.config.cryptoInterface; + this.cacheManager = this.config.storageInterface; + this.networkClient = this.config.networkInterface; + this.serverTelemetryManager = this.config.serverTelemetryManager; + this.authority = this.config.authOptions.authority; + this.performanceClient = performanceClient; + } + /** + * Retrieves token from cache or throws an error if it must be refreshed. + * @param request + */ + async acquireCachedToken(request) { + let lastCacheOutcome = CacheOutcome2.NOT_APPLICABLE; + if (request.forceRefresh || !StringUtils2.isEmptyObj(request.claims)) { + this.setCacheOutcome(CacheOutcome2.FORCE_REFRESH_OR_CLAIMS, request.correlationId); + throw createClientAuthError2(tokenRefreshRequired2); + } + if (!request.account) { + throw createClientAuthError2(noAccountInSilentRequest2); + } + const requestTenantId = request.account.tenantId || getTenantFromAuthorityString2(request.authority); + const tokenKeys = this.cacheManager.getTokenKeys(); + const cachedAccessToken = this.cacheManager.getAccessToken(request.account, request, tokenKeys, requestTenantId); + if (!cachedAccessToken) { + this.setCacheOutcome(CacheOutcome2.NO_CACHED_ACCESS_TOKEN, request.correlationId); + throw createClientAuthError2(tokenRefreshRequired2); + } else if (wasClockTurnedBack2(cachedAccessToken.cachedAt) || isTokenExpired2(cachedAccessToken.expiresOn, this.config.systemOptions.tokenRenewalOffsetSeconds)) { + this.setCacheOutcome(CacheOutcome2.CACHED_ACCESS_TOKEN_EXPIRED, request.correlationId); + throw createClientAuthError2(tokenRefreshRequired2); + } else if (request.resource) { + if (cachedAccessToken.resource !== request.resource) { + this.setCacheOutcome(CacheOutcome2.NO_CACHED_ACCESS_TOKEN, request.correlationId); + throw createClientAuthError2(tokenRefreshRequired2); + } + } else if (cachedAccessToken.refreshOn && isTokenExpired2(cachedAccessToken.refreshOn, 0)) { + lastCacheOutcome = CacheOutcome2.PROACTIVELY_REFRESHED; + } + const environment = request.authority || this.authority.getPreferredCache(); + const cacheRecord = { + account: this.cacheManager.getAccount(this.cacheManager.generateAccountKey(request.account), request.correlationId), + accessToken: cachedAccessToken, + idToken: this.cacheManager.getIdToken(request.account, request.correlationId, tokenKeys, requestTenantId), + refreshToken: null, + appMetadata: this.cacheManager.readAppMetadataFromCache(environment, request.correlationId) + }; + this.setCacheOutcome(lastCacheOutcome, request.correlationId); + if (this.config.serverTelemetryManager) { + this.config.serverTelemetryManager.incrementCacheHits(); + } + return [ + await invokeAsync2(this.generateResultFromCacheRecord.bind(this), SilentFlowClientGenerateResultFromCacheRecord, this.logger, this.performanceClient, request.correlationId)(cacheRecord, request), + lastCacheOutcome + ]; + } + setCacheOutcome(cacheOutcome, correlationId) { + this.serverTelemetryManager?.setCacheOutcome(cacheOutcome); + this.performanceClient?.addFields({ + cacheOutcome + }, correlationId); + if (cacheOutcome !== CacheOutcome2.NOT_APPLICABLE) { + this.logger.info(`Token refresh is required due to cache outcome: '${cacheOutcome}'`, correlationId); + } + } + /** + * Helper function to build response object from the CacheRecord + * @param cacheRecord + */ + async generateResultFromCacheRecord(cacheRecord, request) { + let idTokenClaims; + if (cacheRecord.idToken) { + idTokenClaims = extractTokenClaims2(cacheRecord.idToken.secret, this.config.cryptoInterface.base64Decode); + } + if (request.maxAge || request.maxAge === 0) { + const authTime = idTokenClaims?.auth_time; + if (!authTime) { + throw createClientAuthError2(authTimeNotFound2); + } + checkMaxAge2(authTime, request.maxAge); + } + return ResponseHandler2.generateAuthenticationResult(this.cryptoUtils, this.authority, cacheRecord, true, request, this.performanceClient, idTokenClaims); + } + }; + } +}); + +// node_modules/@azure/msal-common/dist/protocol/Authorize.mjs +var Authorize_exports2 = {}; +__export(Authorize_exports2, { + getAuthorizationCodePayload: () => getAuthorizationCodePayload2, + getAuthorizeUrl: () => getAuthorizeUrl2, + getStandardAuthorizeRequestParameters: () => getStandardAuthorizeRequestParameters2, + validateAuthorizationResponse: () => validateAuthorizationResponse2 +}); +function getStandardAuthorizeRequestParameters2(authOptions, request, logger31, performanceClient) { + const correlationId = request.correlationId; + const parameters = /* @__PURE__ */ new Map(); + addClientId2(parameters, request.embeddedClientId || request.extraQueryParameters?.[CLIENT_ID2] || authOptions.clientId); + const requestScopes = [ + ...request.scopes || [], + ...request.extraScopesToConsent || [] + ]; + addScopes2(parameters, requestScopes, true, authOptions.authority.options.OIDCOptions?.defaultScopes); + addResource(parameters, request.resource); + addRedirectUri2(parameters, request.redirectUri); + addCorrelationId2(parameters, correlationId); + addResponseMode2(parameters, request.responseMode); + addClientInfo2(parameters); + addCliData2(parameters); + if (request.prompt) { + addPrompt2(parameters, request.prompt); + performanceClient?.addFields({ prompt: request.prompt }, correlationId); + } + if (request.domainHint) { + addDomainHint2(parameters, request.domainHint); + performanceClient?.addFields({ domainHintFromRequest: true }, correlationId); + } + if (request.prompt !== PromptValue2.SELECT_ACCOUNT) { + if (request.sid && request.prompt === PromptValue2.NONE) { + logger31.verbose("createAuthCodeUrlQueryString: Prompt is none, adding sid from request", request.correlationId); + addSid2(parameters, request.sid); + performanceClient?.addFields({ sidFromRequest: true }, correlationId); + } else if (request.account) { + const accountSid = extractAccountSid2(request.account); + let accountLoginHintClaim = extractLoginHint2(request.account); + if (accountLoginHintClaim && request.domainHint) { + logger31.warning(`AuthorizationCodeClient.createAuthCodeUrlQueryString: "domainHint" param is set, skipping opaque "login_hint" claim. Please consider not passing domainHint`, request.correlationId); + accountLoginHintClaim = null; + } + if (accountLoginHintClaim) { + logger31.verbose("createAuthCodeUrlQueryString: login_hint claim present on account", request.correlationId); + addLoginHint2(parameters, accountLoginHintClaim); + performanceClient?.addFields({ loginHintFromClaim: true }, correlationId); + try { + const clientInfo = buildClientInfoFromHomeAccountId2(request.account.homeAccountId); + addCcsOid2(parameters, clientInfo); + } catch (e) { + logger31.verbose("createAuthCodeUrlQueryString: Could not parse home account ID for CCS Header", request.correlationId); + } + } else if (accountSid && request.prompt === PromptValue2.NONE) { + logger31.verbose("createAuthCodeUrlQueryString: Prompt is none, adding sid from account", request.correlationId); + addSid2(parameters, accountSid); + performanceClient?.addFields({ sidFromClaim: true }, correlationId); + try { + const clientInfo = buildClientInfoFromHomeAccountId2(request.account.homeAccountId); + addCcsOid2(parameters, clientInfo); + } catch (e) { + logger31.verbose("createAuthCodeUrlQueryString: Could not parse home account ID for CCS Header", request.correlationId); + } + } else if (request.loginHint) { + logger31.verbose("createAuthCodeUrlQueryString: Adding login_hint from request", request.correlationId); + addLoginHint2(parameters, request.loginHint); + addCcsUpn2(parameters, request.loginHint); + performanceClient?.addFields({ loginHintFromRequest: true }, correlationId); + } else if (request.account.username) { + logger31.verbose("createAuthCodeUrlQueryString: Adding login_hint from account", request.correlationId); + addLoginHint2(parameters, request.account.username); + performanceClient?.addFields({ loginHintFromUpn: true }, correlationId); + try { + const clientInfo = buildClientInfoFromHomeAccountId2(request.account.homeAccountId); + addCcsOid2(parameters, clientInfo); + } catch (e) { + logger31.verbose("createAuthCodeUrlQueryString: Could not parse home account ID for CCS Header", request.correlationId); + } + } + } else if (request.loginHint) { + logger31.verbose("createAuthCodeUrlQueryString: No account, adding login_hint from request", request.correlationId); + addLoginHint2(parameters, request.loginHint); + addCcsUpn2(parameters, request.loginHint); + performanceClient?.addFields({ loginHintFromRequest: true }, correlationId); + } + } else { + logger31.verbose("createAuthCodeUrlQueryString: Prompt is select_account, ignoring account hints", request.correlationId); + } + if (request.nonce) { + addNonce2(parameters, request.nonce); + } + if (request.state) { + addState2(parameters, request.state); + } + if (request.embeddedClientId) { + addBrokerParameters2(parameters, authOptions.clientId, authOptions.redirectUri); + } + addClaims2(parameters, request.claims, authOptions.clientCapabilities, request.skipBrokerClaims); + if (authOptions.instanceAware && (!request.extraQueryParameters || !Object.keys(request.extraQueryParameters).includes(INSTANCE_AWARE2))) { + addInstanceAware2(parameters); + } + return parameters; +} +function getAuthorizeUrl2(authority, requestParameters) { + const queryString = mapToQueryString2(requestParameters); + return UrlString2.appendQueryString(authority.authorizationEndpoint, queryString); +} +function getAuthorizationCodePayload2(serverParams, cachedState) { + validateAuthorizationResponse2(serverParams, cachedState); + if (!serverParams.code) { + throw createClientAuthError2(authorizationCodeMissingFromServerResponse2); + } + return serverParams; +} +function validateAuthorizationResponse2(serverResponse, requestState) { + if (!serverResponse.state || !requestState) { + throw serverResponse.state ? createClientAuthError2(stateNotFound2, "Cached State") : createClientAuthError2(stateNotFound2, "Server State"); + } + let decodedServerResponseState; + let decodedRequestState; + try { + decodedServerResponseState = decodeURIComponent(serverResponse.state); + } catch (e) { + throw createClientAuthError2(invalidState2, serverResponse.state); + } + try { + decodedRequestState = decodeURIComponent(requestState); + } catch (e) { + throw createClientAuthError2(invalidState2, serverResponse.state); + } + if (decodedServerResponseState !== decodedRequestState) { + throw createClientAuthError2(stateMismatch2); + } + if (serverResponse.error || serverResponse.error_description || serverResponse.suberror) { + const serverErrorNo = parseServerErrorNo2(serverResponse); + if (isInteractionRequiredError2(serverResponse.error, serverResponse.error_description, serverResponse.suberror)) { + throw new InteractionRequiredAuthError2(serverResponse.error || "", serverResponse.error_description, serverResponse.suberror, serverResponse.timestamp || "", serverResponse.trace_id || "", serverResponse.correlation_id || "", serverResponse.claims || "", serverErrorNo); + } + throw new ServerError2(serverResponse.error || "", serverResponse.error_description, serverResponse.suberror, serverErrorNo); + } +} +function parseServerErrorNo2(serverResponse) { + const errorCodePrefix = "code="; + const errorCodePrefixIndex = serverResponse.error_uri?.lastIndexOf(errorCodePrefix); + return errorCodePrefixIndex && errorCodePrefixIndex >= 0 ? serverResponse.error_uri?.substring(errorCodePrefixIndex + errorCodePrefix.length) : void 0; +} +function extractAccountSid2(account) { + return account.idTokenClaims?.sid || null; +} +function extractLoginHint2(account) { + return account.loginHint || account.idTokenClaims?.login_hint || null; +} +var init_Authorize = __esm({ + "node_modules/@azure/msal-common/dist/protocol/Authorize.mjs"() { + "use strict"; + init_RequestParameterBuilder(); + init_AADServerParamKeys(); + init_Constants(); + init_ClientInfo(); + init_UrlUtils(); + init_UrlString(); + init_ClientAuthError(); + init_InteractionRequiredAuthError(); + init_ServerError(); + init_ClientAuthErrorCodes(); + } +}); + +// node_modules/@azure/msal-common/dist/request/BaseAuthRequest.mjs +function enforceResourceParameter(isMcp, request) { + if (!isMcp) { + return; + } + if (request.resource && (containsResourceParam(request.extraParameters) || containsResourceParam(request.extraQueryParameters))) { + throw createClientAuthError2(misplacedResourceParam); + } + if (!request.resource) { + throw createClientAuthError2(resourceParameterRequired); + } +} +function containsResourceParam(params) { + if (!params) { + return false; + } + return Object.prototype.hasOwnProperty.call(params, "resource"); +} +var init_BaseAuthRequest = __esm({ + "node_modules/@azure/msal-common/dist/request/BaseAuthRequest.mjs"() { + "use strict"; + init_ClientAuthError(); + init_ClientAuthErrorCodes(); + } +}); + +// node_modules/@azure/msal-common/dist/error/AuthErrorCodes.mjs +var AuthErrorCodes_exports2 = {}; +__export(AuthErrorCodes_exports2, { + postRequestFailed: () => postRequestFailed2, + unexpectedError: () => unexpectedError2 +}); +var unexpectedError2, postRequestFailed2; +var init_AuthErrorCodes = __esm({ + "node_modules/@azure/msal-common/dist/error/AuthErrorCodes.mjs"() { + "use strict"; + unexpectedError2 = "unexpected_error"; + postRequestFailed2 = "post_request_failed"; + } +}); + +// node_modules/@azure/msal-common/dist/telemetry/server/ServerTelemetryManager.mjs +function makeExtraSkuString2(params) { + const { skus, libraryName, libraryVersion, extensionName, extensionVersion } = params; + const skuMap = /* @__PURE__ */ new Map([ + [0, [libraryName, libraryVersion]], + [2, [extensionName, extensionVersion]] + ]); + let skuArr = []; + if (skus?.length) { + skuArr = skus.split(skuGroupSeparator2); + if (skuArr.length < 4) { + return skus; + } + } else { + skuArr = Array.from({ length: 4 }, () => skuValueSeparator2); + } + skuMap.forEach((value, key) => { + if (value.length === 2 && value[0]?.length && value[1]?.length) { + setSku2({ + skuArr, + index: key, + skuName: value[0], + skuVersion: value[1] + }); + } + }); + return skuArr.join(skuGroupSeparator2); +} +function setSku2(params) { + const { skuArr, index, skuName, skuVersion } = params; + if (index >= skuArr.length) { + return; + } + skuArr[index] = [skuName, skuVersion].join(skuValueSeparator2); +} +var skuGroupSeparator2, skuValueSeparator2, ServerTelemetryManager2; +var init_ServerTelemetryManager = __esm({ + "node_modules/@azure/msal-common/dist/telemetry/server/ServerTelemetryManager.mjs"() { + "use strict"; + init_Constants(); + init_AuthError(); + skuGroupSeparator2 = ","; + skuValueSeparator2 = "|"; + ServerTelemetryManager2 = class _ServerTelemetryManager { + constructor(telemetryRequest, cacheManager) { + this.cacheOutcome = CacheOutcome2.NOT_APPLICABLE; + this.cacheManager = cacheManager; + this.apiId = telemetryRequest.apiId; + this.correlationId = telemetryRequest.correlationId; + this.wrapperSKU = telemetryRequest.wrapperSKU || ""; + this.wrapperVer = telemetryRequest.wrapperVer || ""; + this.telemetryCacheKey = SERVER_TELEM_CACHE_KEY + CACHE_KEY_SEPARATOR + telemetryRequest.clientId; + } + /** + * API to add MSER Telemetry to request + */ + generateCurrentRequestHeaderValue() { + const request = `${this.apiId}${SERVER_TELEM_VALUE_SEPARATOR}${this.cacheOutcome}`; + const platformFieldsArr = [this.wrapperSKU, this.wrapperVer]; + const nativeBrokerErrorCode = this.getNativeBrokerErrorCode(); + if (nativeBrokerErrorCode?.length) { + platformFieldsArr.push(`broker_error=${nativeBrokerErrorCode}`); + } + const platformFields = platformFieldsArr.join(SERVER_TELEM_VALUE_SEPARATOR); + const regionDiscoveryFields = this.getRegionDiscoveryFields(); + const requestWithRegionDiscoveryFields = [ + request, + regionDiscoveryFields + ].join(SERVER_TELEM_VALUE_SEPARATOR); + return [ + SERVER_TELEM_SCHEMA_VERSION, + requestWithRegionDiscoveryFields, + platformFields + ].join(SERVER_TELEM_CATEGORY_SEPARATOR); + } + /** + * API to add MSER Telemetry for the last failed request + */ + generateLastRequestHeaderValue() { + const lastRequests = this.getLastRequests(); + const maxErrors = _ServerTelemetryManager.maxErrorsToSend(lastRequests); + const failedRequests = lastRequests.failedRequests.slice(0, 2 * maxErrors).join(SERVER_TELEM_VALUE_SEPARATOR); + const errors = lastRequests.errors.slice(0, maxErrors).join(SERVER_TELEM_VALUE_SEPARATOR); + const errorCount = lastRequests.errors.length; + const overflow = maxErrors < errorCount ? SERVER_TELEM_OVERFLOW_TRUE : SERVER_TELEM_OVERFLOW_FALSE; + const platformFields = [errorCount, overflow].join(SERVER_TELEM_VALUE_SEPARATOR); + return [ + SERVER_TELEM_SCHEMA_VERSION, + lastRequests.cacheHits, + failedRequests, + errors, + platformFields + ].join(SERVER_TELEM_CATEGORY_SEPARATOR); + } + /** + * API to cache token failures for MSER data capture + * @param error + */ + cacheFailedRequest(error2) { + const lastRequests = this.getLastRequests(); + if (lastRequests.errors.length >= SERVER_TELEM_MAX_CACHED_ERRORS) { + lastRequests.failedRequests.shift(); + lastRequests.failedRequests.shift(); + lastRequests.errors.shift(); + } + lastRequests.failedRequests.push(this.apiId, this.correlationId); + if (error2 instanceof Error && !!error2 && error2.toString()) { + if (error2 instanceof AuthError2) { + if (error2.subError) { + lastRequests.errors.push(error2.subError); + } else if (error2.errorCode) { + lastRequests.errors.push(error2.errorCode); + } else { + lastRequests.errors.push(error2.toString()); + } + } else { + lastRequests.errors.push(error2.toString()); + } + } else { + lastRequests.errors.push(SERVER_TELEM_UNKNOWN_ERROR); + } + this.cacheManager.setServerTelemetry(this.telemetryCacheKey, lastRequests, this.correlationId); + return; + } + /** + * Update server telemetry cache entry by incrementing cache hit counter + */ + incrementCacheHits() { + const lastRequests = this.getLastRequests(); + lastRequests.cacheHits += 1; + this.cacheManager.setServerTelemetry(this.telemetryCacheKey, lastRequests, this.correlationId); + return lastRequests.cacheHits; + } + /** + * Get the server telemetry entity from cache or initialize a new one + */ + getLastRequests() { + const initialValue = { + failedRequests: [], + errors: [], + cacheHits: 0 + }; + const lastRequests = this.cacheManager.getServerTelemetry(this.telemetryCacheKey, this.correlationId); + return lastRequests || initialValue; + } + /** + * Remove server telemetry cache entry + */ + clearTelemetryCache() { + const lastRequests = this.getLastRequests(); + const numErrorsFlushed = _ServerTelemetryManager.maxErrorsToSend(lastRequests); + const errorCount = lastRequests.errors.length; + if (numErrorsFlushed === errorCount) { + this.cacheManager.removeItem(this.telemetryCacheKey, this.correlationId); + } else { + const serverTelemEntity = { + failedRequests: lastRequests.failedRequests.slice(numErrorsFlushed * 2), + errors: lastRequests.errors.slice(numErrorsFlushed), + cacheHits: 0 + }; + this.cacheManager.setServerTelemetry(this.telemetryCacheKey, serverTelemEntity, this.correlationId); + } + } + /** + * Returns the maximum number of errors that can be flushed to the server in the next network request + * @param serverTelemetryEntity + */ + static maxErrorsToSend(serverTelemetryEntity) { + let i; + let maxErrors = 0; + let dataSize = 0; + const errorCount = serverTelemetryEntity.errors.length; + for (i = 0; i < errorCount; i++) { + const apiId = serverTelemetryEntity.failedRequests[2 * i] || ""; + const correlationId = serverTelemetryEntity.failedRequests[2 * i + 1] || ""; + const errorCode = serverTelemetryEntity.errors[i] || ""; + dataSize += apiId.toString().length + correlationId.toString().length + errorCode.length + 3; + if (dataSize < SERVER_TELEM_MAX_LAST_HEADER_BYTES) { + maxErrors += 1; + } else { + break; + } + } + return maxErrors; + } + /** + * Get the region discovery fields + * + * @returns string + */ + getRegionDiscoveryFields() { + const regionDiscoveryFields = []; + regionDiscoveryFields.push(this.regionUsed || ""); + regionDiscoveryFields.push(this.regionSource || ""); + regionDiscoveryFields.push(this.regionOutcome || ""); + return regionDiscoveryFields.join(","); + } + /** + * Update the region discovery metadata + * + * @param regionDiscoveryMetadata + * @returns void + */ + updateRegionDiscoveryMetadata(regionDiscoveryMetadata) { + this.regionUsed = regionDiscoveryMetadata.region_used; + this.regionSource = regionDiscoveryMetadata.region_source; + this.regionOutcome = regionDiscoveryMetadata.region_outcome; + } + /** + * Set cache outcome + */ + setCacheOutcome(cacheOutcome) { + this.cacheOutcome = cacheOutcome; + } + setNativeBrokerErrorCode(errorCode) { + const lastRequests = this.getLastRequests(); + lastRequests.nativeBrokerErrorCode = errorCode; + this.cacheManager.setServerTelemetry(this.telemetryCacheKey, lastRequests, this.correlationId); + } + getNativeBrokerErrorCode() { + return this.getLastRequests().nativeBrokerErrorCode; + } + clearNativeBrokerErrorCode() { + const lastRequests = this.getLastRequests(); + delete lastRequests.nativeBrokerErrorCode; + this.cacheManager.setServerTelemetry(this.telemetryCacheKey, lastRequests, this.correlationId); + } + static makeExtraSkuString(params) { + return makeExtraSkuString2(params); + } + }; + } +}); + +// node_modules/@azure/msal-common/dist/index-node.mjs +var init_index_node = __esm({ + "node_modules/@azure/msal-common/dist/index-node.mjs"() { + "use strict"; + init_AuthorizationCodeClient(); + init_RefreshTokenClient(); + init_SilentFlowClient(); + init_ClientConfiguration(); + init_CcsCredential(); + init_Authority(); + init_AuthorityOptions(); + init_ProtocolMode(); + init_CacheManager(); + init_UrlString(); + init_ICrypto(); + init_Authorize(); + init_Token(); + init_BaseAuthRequest(); + init_RequestParameterBuilder(); + init_ResponseHandler(); + init_ScopeSet(); + init_Logger(); + init_InteractionRequiredAuthError(); + init_InteractionRequiredAuthErrorCodes(); + init_AuthError(); + init_AuthErrorCodes(); + init_ServerError(); + init_NetworkError(); + init_ClientAuthError(); + init_ClientAuthErrorCodes(); + init_ClientConfigurationError(); + init_ClientConfigurationErrorCodes(); + init_Constants(); + init_StringUtils(); + init_ServerTelemetryManager(); + init_AuthToken(); + init_AuthorityFactory(); + init_CacheHelpers(); + init_TimeUtils(); + init_UrlUtils(); + init_AADServerParamKeys(); + init_AccountEntityUtils(); + init_TokenCacheContext(); + init_ClientAssertionUtils(); + init_StubPerformanceClient(); + } +}); + +// node_modules/@azure/identity/node_modules/@azure/msal-node/dist/cache/serializer/Deserializer.mjs +var Deserializer2; +var init_Deserializer = __esm({ + "node_modules/@azure/identity/node_modules/@azure/msal-node/dist/cache/serializer/Deserializer.mjs"() { + "use strict"; + init_index_node(); + Deserializer2 = class { + /** + * Parse the JSON blob in memory and deserialize the content + * @param cachedJson - JSON blob cache + */ + static deserializeJSONBlob(jsonFile) { + const deserializedCache = !jsonFile ? {} : JSON.parse(jsonFile); + return deserializedCache; + } + /** + * Deserializes accounts to AccountEntity objects + * @param accounts - accounts of type SerializedAccountEntity + */ + static deserializeAccounts(accounts) { + const accountObjects = {}; + if (accounts) { + Object.keys(accounts).map(function(key) { + const serializedAcc = accounts[key]; + const mappedAcc = { + homeAccountId: serializedAcc.home_account_id, + environment: serializedAcc.environment, + realm: serializedAcc.realm, + localAccountId: serializedAcc.local_account_id, + username: serializedAcc.username, + authorityType: serializedAcc.authority_type, + name: serializedAcc.name, + clientInfo: serializedAcc.client_info, + lastModificationTime: serializedAcc.last_modification_time, + lastModificationApp: serializedAcc.last_modification_app, + tenantProfiles: serializedAcc.tenantProfiles?.map((serializedTenantProfile) => { + return JSON.parse(serializedTenantProfile); + }), + lastUpdatedAt: Date.now().toString() + }; + const account = {}; + CacheManager2.toObject(account, mappedAcc); + accountObjects[key] = account; + }); + } + return accountObjects; + } + /** + * Deserializes id tokens to IdTokenEntity objects + * @param idTokens - credentials of type SerializedIdTokenEntity + */ + static deserializeIdTokens(idTokens) { + const idObjects = {}; + if (idTokens) { + Object.keys(idTokens).map(function(key) { + const serializedIdT = idTokens[key]; + const idToken = { + homeAccountId: serializedIdT.home_account_id, + environment: serializedIdT.environment, + credentialType: serializedIdT.credential_type, + clientId: serializedIdT.client_id, + secret: serializedIdT.secret, + realm: serializedIdT.realm, + lastUpdatedAt: Date.now().toString() + }; + idObjects[key] = idToken; + }); + } + return idObjects; + } + /** + * Deserializes access tokens to AccessTokenEntity objects + * @param accessTokens - access tokens of type SerializedAccessTokenEntity + */ + static deserializeAccessTokens(accessTokens) { + const atObjects = {}; + if (accessTokens) { + Object.keys(accessTokens).map(function(key) { + const serializedAT = accessTokens[key]; + const accessToken = { + homeAccountId: serializedAT.home_account_id, + environment: serializedAT.environment, + credentialType: serializedAT.credential_type, + clientId: serializedAT.client_id, + secret: serializedAT.secret, + realm: serializedAT.realm, + target: serializedAT.target, + cachedAt: serializedAT.cached_at, + expiresOn: serializedAT.expires_on, + extendedExpiresOn: serializedAT.extended_expires_on, + refreshOn: serializedAT.refresh_on, + keyId: serializedAT.key_id, + tokenType: serializedAT.token_type, + userAssertionHash: serializedAT.userAssertionHash, + resource: serializedAT.resource, + lastUpdatedAt: Date.now().toString() + }; + atObjects[key] = accessToken; + }); + } + return atObjects; + } + /** + * Deserializes refresh tokens to RefreshTokenEntity objects + * @param refreshTokens - refresh tokens of type SerializedRefreshTokenEntity + */ + static deserializeRefreshTokens(refreshTokens) { + const rtObjects = {}; + if (refreshTokens) { + Object.keys(refreshTokens).map(function(key) { + const serializedRT = refreshTokens[key]; + const refreshToken = { + homeAccountId: serializedRT.home_account_id, + environment: serializedRT.environment, + credentialType: serializedRT.credential_type, + clientId: serializedRT.client_id, + secret: serializedRT.secret, + familyId: serializedRT.family_id, + target: serializedRT.target, + realm: serializedRT.realm, + lastUpdatedAt: Date.now().toString() + }; + rtObjects[key] = refreshToken; + }); + } + return rtObjects; + } + /** + * Deserializes appMetadata to AppMetaData objects + * @param appMetadata - app metadata of type SerializedAppMetadataEntity + */ + static deserializeAppMetadata(appMetadata) { + const appMetadataObjects = {}; + if (appMetadata) { + Object.keys(appMetadata).map(function(key) { + const serializedAmdt = appMetadata[key]; + appMetadataObjects[key] = { + clientId: serializedAmdt.client_id, + environment: serializedAmdt.environment, + familyId: serializedAmdt.family_id + }; + }); + } + return appMetadataObjects; + } + /** + * Deserialize an inMemory Cache + * @param jsonCache - JSON blob cache + */ + static deserializeAllCache(jsonCache) { + return { + accounts: jsonCache.Account ? this.deserializeAccounts(jsonCache.Account) : {}, + idTokens: jsonCache.IdToken ? this.deserializeIdTokens(jsonCache.IdToken) : {}, + accessTokens: jsonCache.AccessToken ? this.deserializeAccessTokens(jsonCache.AccessToken) : {}, + refreshTokens: jsonCache.RefreshToken ? this.deserializeRefreshTokens(jsonCache.RefreshToken) : {}, + appMetadata: jsonCache.AppMetadata ? this.deserializeAppMetadata(jsonCache.AppMetadata) : {} + }; + } + }; + } +}); + +// node_modules/@azure/identity/node_modules/@azure/msal-node/dist/internals.mjs +var internals_exports2 = {}; +__export(internals_exports2, { + Deserializer: () => Deserializer2, + Serializer: () => Serializer2 +}); +var init_internals = __esm({ + "node_modules/@azure/identity/node_modules/@azure/msal-node/dist/internals.mjs"() { + "use strict"; + init_Serializer(); + init_Deserializer(); + } +}); + +// node_modules/@azure/identity/node_modules/@azure/msal-node/dist/utils/Constants.mjs +var DEFAULT_MANAGED_IDENTITY_ID2, MANAGED_IDENTITY_DEFAULT_TENANT2, DEFAULT_AUTHORITY_FOR_MANAGED_IDENTITY2, ManagedIdentityHeaders2, ManagedIdentityQueryParameters2, ManagedIdentityEnvironmentVariableNames2, ManagedIdentitySourceNames2, ManagedIdentityIdType2, HttpMethod4, REGION_ENVIRONMENT_VARIABLE2, MSAL_FORCE_REGION2, RANDOM_OCTET_SIZE2, Hash2, CharSet2, CACHE2, Constants3, ApiId2, JwtConstants2, LOOPBACK_SERVER_CONSTANTS2, AZURE_ARC_SECRET_FILE_MAX_SIZE_BYTES2; +var init_Constants2 = __esm({ + "node_modules/@azure/identity/node_modules/@azure/msal-node/dist/utils/Constants.mjs"() { + "use strict"; + DEFAULT_MANAGED_IDENTITY_ID2 = "system_assigned_managed_identity"; + MANAGED_IDENTITY_DEFAULT_TENANT2 = "managed_identity"; + DEFAULT_AUTHORITY_FOR_MANAGED_IDENTITY2 = `https://login.microsoftonline.com/${MANAGED_IDENTITY_DEFAULT_TENANT2}/`; + ManagedIdentityHeaders2 = { + AUTHORIZATION_HEADER_NAME: "Authorization", + METADATA_HEADER_NAME: "Metadata", + APP_SERVICE_SECRET_HEADER_NAME: "X-IDENTITY-HEADER", + ML_AND_SF_SECRET_HEADER_NAME: "secret" + }; + ManagedIdentityQueryParameters2 = { + API_VERSION: "api-version", + RESOURCE: "resource", + SHA256_TOKEN_TO_REFRESH: "token_sha256_to_refresh", + XMS_CC: "xms_cc" + }; + ManagedIdentityEnvironmentVariableNames2 = { + AZURE_POD_IDENTITY_AUTHORITY_HOST: "AZURE_POD_IDENTITY_AUTHORITY_HOST", + DEFAULT_IDENTITY_CLIENT_ID: "DEFAULT_IDENTITY_CLIENT_ID", + IDENTITY_ENDPOINT: "IDENTITY_ENDPOINT", + IDENTITY_HEADER: "IDENTITY_HEADER", + IDENTITY_SERVER_THUMBPRINT: "IDENTITY_SERVER_THUMBPRINT", + IMDS_ENDPOINT: "IMDS_ENDPOINT", + MSI_ENDPOINT: "MSI_ENDPOINT", + MSI_SECRET: "MSI_SECRET" + }; + ManagedIdentitySourceNames2 = { + APP_SERVICE: "AppService", + AZURE_ARC: "AzureArc", + CLOUD_SHELL: "CloudShell", + DEFAULT_TO_IMDS: "DefaultToImds", + IMDS: "Imds", + MACHINE_LEARNING: "MachineLearning", + SERVICE_FABRIC: "ServiceFabric" + }; + ManagedIdentityIdType2 = { + SYSTEM_ASSIGNED: "system-assigned", + USER_ASSIGNED_CLIENT_ID: "user-assigned-client-id", + USER_ASSIGNED_RESOURCE_ID: "user-assigned-resource-id", + USER_ASSIGNED_OBJECT_ID: "user-assigned-object-id" + }; + HttpMethod4 = { + GET: "GET", + POST: "POST" + }; + REGION_ENVIRONMENT_VARIABLE2 = "REGION_NAME"; + MSAL_FORCE_REGION2 = "MSAL_FORCE_REGION"; + RANDOM_OCTET_SIZE2 = 32; + Hash2 = { + SHA256: "sha256" + }; + CharSet2 = { + CV_CHARSET: "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-._~" + }; + CACHE2 = { + KEY_SEPARATOR: "-" + }; + Constants3 = { + MSAL_SKU: "msal.js.node", + JWT_BEARER_ASSERTION_TYPE: "urn:ietf:params:oauth:client-assertion-type:jwt-bearer", + HTTP_PROTOCOL: "http://", + LOCALHOST: "localhost" + }; + ApiId2 = { + acquireTokenSilent: 62, + acquireTokenByUsernamePassword: 371, + acquireTokenByDeviceCode: 671, + acquireTokenByClientCredential: 771, + acquireTokenByOBO: 772, + acquireTokenWithManagedIdentity: 773, + acquireTokenByCode: 871, + acquireTokenByRefreshToken: 872 + }; + JwtConstants2 = { + RSA_256: "RS256", + PSS_256: "PS256", + X5T_256: "x5t#S256", + X5T: "x5t", + X5C: "x5c", + AUDIENCE: "aud", + EXPIRATION_TIME: "exp", + ISSUER: "iss", + SUBJECT: "sub", + NOT_BEFORE: "nbf", + JWT_ID: "jti" + }; + LOOPBACK_SERVER_CONSTANTS2 = { + INTERVAL_MS: 100, + TIMEOUT_MS: 5e3 + }; + AZURE_ARC_SECRET_FILE_MAX_SIZE_BYTES2 = 4096; + } +}); + +// node_modules/@azure/identity/node_modules/@azure/msal-node/dist/network/HttpClient.mjs +function getHeaderDict(headers) { + const headerDict = {}; + headers.forEach((value, key) => { + headerDict[key] = value; + }); + return headerDict; +} +function getFetchHeaders(options) { + const headers = new Headers(); + if (!(options && options.headers)) { + return headers; + } + Object.entries(options.headers).forEach(([key, value]) => { + headers.append(key, value); + }); + return headers; +} +var HttpClient2; +var init_HttpClient = __esm({ + "node_modules/@azure/identity/node_modules/@azure/msal-node/dist/network/HttpClient.mjs"() { + "use strict"; + init_index_node(); + init_Constants2(); + HttpClient2 = class { + /** + * Sends an HTTP GET request to the specified URL. + * + * This method handles GET requests with optional timeout support. The timeout + * is implemented using AbortController, which provides a clean way to cancel + * fetch requests that take too long to complete. + * + * @param url - The target URL for the GET request + * @param options - Optional request configuration including headers + * @param timeout - Optional timeout in milliseconds. If specified, the request + * will be aborted if it doesn't complete within this time + * @returns Promise that resolves to a NetworkResponse containing headers, body, and status + * @throws {AuthError} When the request times out or response parsing fails + * @throws {NetworkError} When the network request fails + */ + async sendGetRequestAsync(url2, options, timeout) { + return this.sendRequest(url2, HttpMethod4.GET, options, timeout); + } + /** + * Sends an HTTP POST request to the specified URL. + * + * This method handles POST requests with request body support. Currently, + * timeout functionality is not exposed for POST requests, but the underlying + * implementation supports it through the shared sendRequest method. + * + * @param url - The target URL for the POST request + * @param options - Optional request configuration including headers and body + * @returns Promise that resolves to a NetworkResponse containing headers, body, and status + * @throws {AuthError} When the request times out or response parsing fails + * @throws {NetworkError} When the network request fails + */ + async sendPostRequestAsync(url2, options) { + return this.sendRequest(url2, HttpMethod4.POST, options); + } + /** + * Core HTTP request implementation using native fetch API. + * + * This method handles GET and POST HTTP requests with comprehensive + * timeout support and error handling. The timeout mechanism works as follows: + * + * 1. An AbortController is created for each request + * 2. If a timeout is specified, setTimeout is used to call abort() after the delay + * 3. The abort signal is passed to fetch, which will reject the promise if aborted + * 4. Cleanup occurs in both success and error cases to prevent timer leaks + * + * Error handling priority: + * 1. Timeout errors (AbortError) are converted to "Request timeout" messages + * 2. Network/connection errors are wrapped with "Network request failed" prefix + * 3. JSON parsing errors are wrapped with "Failed to parse response" prefix + * + * @param url - The target URL for the request + * @param method - HTTP method (GET or POST) + * @param options - Optional request configuration (headers, body) + * @param timeout - Optional timeout in milliseconds for request cancellation + * @returns Promise resolving to NetworkResponse with parsed JSON body + * @throws {AuthError} For timeouts or JSON parsing errors + * @throws {NetworkError} For network failures + */ + async sendRequest(url2, method, options, timeout) { + const controller = new AbortController(); + let timeoutId; + if (timeout) { + timeoutId = setTimeout(() => { + controller.abort(); + }, timeout); + } + const fetchOptions = { + method, + headers: getFetchHeaders(options), + signal: controller.signal + // Enable cancellation via AbortController + }; + if (method === HttpMethod4.POST) { + fetchOptions.body = options?.body || ""; + } + let response; + try { + response = await fetch(url2, fetchOptions); + } catch (error2) { + if (timeoutId) { + clearTimeout(timeoutId); + } + if (error2 instanceof Error && error2.name === "AbortError") { + throw createAuthError2(ClientAuthErrorCodes_exports2.networkError, "Request timeout"); + } + const baseAuthError = createAuthError2(ClientAuthErrorCodes_exports2.networkError, `Network request failed: ${error2 instanceof Error ? error2.message : "unknown"}`); + throw createNetworkError(baseAuthError, void 0, void 0, error2 instanceof Error ? error2 : void 0); + } + if (timeoutId) { + clearTimeout(timeoutId); + } + try { + return { + headers: getHeaderDict(response.headers), + body: await response.json(), + status: response.status + }; + } catch (error2) { + throw createAuthError2(ClientAuthErrorCodes_exports2.tokenParsingError, `Failed to parse response: ${error2 instanceof Error ? error2.message : "unknown"}`); + } + } + }; + } +}); + +// node_modules/@azure/identity/node_modules/@azure/msal-node/dist/error/ManagedIdentityErrorCodes.mjs +var invalidFileExtension2, invalidFilePath2, invalidManagedIdentityIdType2, invalidSecret2, missingId2, networkUnavailable2, platformNotSupported2, unableToCreateAzureArc2, unableToCreateCloudShell2, unableToCreateSource2, unableToReadSecretFile2, userAssignedNotAvailableAtRuntime2, wwwAuthenticateHeaderMissing2, wwwAuthenticateHeaderUnsupportedFormat2, MsiEnvironmentVariableUrlMalformedErrorCodes2; +var init_ManagedIdentityErrorCodes = __esm({ + "node_modules/@azure/identity/node_modules/@azure/msal-node/dist/error/ManagedIdentityErrorCodes.mjs"() { + "use strict"; + init_Constants2(); + invalidFileExtension2 = "invalid_file_extension"; + invalidFilePath2 = "invalid_file_path"; + invalidManagedIdentityIdType2 = "invalid_managed_identity_id_type"; + invalidSecret2 = "invalid_secret"; + missingId2 = "missing_client_id"; + networkUnavailable2 = "network_unavailable"; + platformNotSupported2 = "platform_not_supported"; + unableToCreateAzureArc2 = "unable_to_create_azure_arc"; + unableToCreateCloudShell2 = "unable_to_create_cloud_shell"; + unableToCreateSource2 = "unable_to_create_source"; + unableToReadSecretFile2 = "unable_to_read_secret_file"; + userAssignedNotAvailableAtRuntime2 = "user_assigned_not_available_at_runtime"; + wwwAuthenticateHeaderMissing2 = "www_authenticate_header_missing"; + wwwAuthenticateHeaderUnsupportedFormat2 = "www_authenticate_header_unsupported_format"; + MsiEnvironmentVariableUrlMalformedErrorCodes2 = { + [ManagedIdentityEnvironmentVariableNames2.AZURE_POD_IDENTITY_AUTHORITY_HOST]: "azure_pod_identity_authority_host_url_malformed", + [ManagedIdentityEnvironmentVariableNames2.IDENTITY_ENDPOINT]: "identity_endpoint_url_malformed", + [ManagedIdentityEnvironmentVariableNames2.IMDS_ENDPOINT]: "imds_endpoint_url_malformed", + [ManagedIdentityEnvironmentVariableNames2.MSI_ENDPOINT]: "msi_endpoint_url_malformed" + }; + } +}); + +// node_modules/@azure/identity/node_modules/@azure/msal-node/dist/error/ManagedIdentityError.mjs +function createManagedIdentityError2(errorCode) { + return new ManagedIdentityError2(errorCode); +} +var ManagedIdentityErrorMessages2, ManagedIdentityError2; +var init_ManagedIdentityError = __esm({ + "node_modules/@azure/identity/node_modules/@azure/msal-node/dist/error/ManagedIdentityError.mjs"() { + "use strict"; + init_index_node(); + init_ManagedIdentityErrorCodes(); + init_Constants2(); + ManagedIdentityErrorMessages2 = { + [invalidFileExtension2]: "The file path in the WWW-Authenticate header does not contain a .key file.", + [invalidFilePath2]: "The file path in the WWW-Authenticate header is not in a valid Windows or Linux Format.", + [invalidManagedIdentityIdType2]: "More than one ManagedIdentityIdType was provided.", + [invalidSecret2]: "The secret in the file on the file path in the WWW-Authenticate header is greater than 4096 bytes.", + [platformNotSupported2]: "The platform is not supported by Azure Arc. Azure Arc only supports Windows and Linux.", + [missingId2]: "A ManagedIdentityId id was not provided.", + [MsiEnvironmentVariableUrlMalformedErrorCodes2.AZURE_POD_IDENTITY_AUTHORITY_HOST]: `The Managed Identity's '${ManagedIdentityEnvironmentVariableNames2.AZURE_POD_IDENTITY_AUTHORITY_HOST}' environment variable is malformed.`, + [MsiEnvironmentVariableUrlMalformedErrorCodes2.IDENTITY_ENDPOINT]: `The Managed Identity's '${ManagedIdentityEnvironmentVariableNames2.IDENTITY_ENDPOINT}' environment variable is malformed.`, + [MsiEnvironmentVariableUrlMalformedErrorCodes2.IMDS_ENDPOINT]: `The Managed Identity's '${ManagedIdentityEnvironmentVariableNames2.IMDS_ENDPOINT}' environment variable is malformed.`, + [MsiEnvironmentVariableUrlMalformedErrorCodes2.MSI_ENDPOINT]: `The Managed Identity's '${ManagedIdentityEnvironmentVariableNames2.MSI_ENDPOINT}' environment variable is malformed.`, + [networkUnavailable2]: "Authentication unavailable. The request to the managed identity endpoint timed out.", + [unableToCreateAzureArc2]: "Azure Arc Managed Identities can only be system assigned.", + [unableToCreateCloudShell2]: "Cloud Shell Managed Identities can only be system assigned.", + [unableToCreateSource2]: "Unable to create a Managed Identity source based on environment variables.", + [unableToReadSecretFile2]: "Unable to read the secret file.", + [userAssignedNotAvailableAtRuntime2]: "Service Fabric user assigned managed identity ClientId or ResourceId is not configurable at runtime.", + [wwwAuthenticateHeaderMissing2]: "A 401 response was received form the Azure Arc Managed Identity, but the www-authenticate header is missing.", + [wwwAuthenticateHeaderUnsupportedFormat2]: "A 401 response was received form the Azure Arc Managed Identity, but the www-authenticate header is in an unsupported format." + }; + ManagedIdentityError2 = class _ManagedIdentityError extends AuthError2 { + constructor(errorCode) { + super(errorCode, ManagedIdentityErrorMessages2[errorCode]); + this.name = "ManagedIdentityError"; + Object.setPrototypeOf(this, _ManagedIdentityError.prototype); + } + }; + } +}); + +// node_modules/@azure/identity/node_modules/@azure/msal-node/dist/config/ManagedIdentityId.mjs +var ManagedIdentityId2; +var init_ManagedIdentityId = __esm({ + "node_modules/@azure/identity/node_modules/@azure/msal-node/dist/config/ManagedIdentityId.mjs"() { + "use strict"; + init_ManagedIdentityError(); + init_Constants2(); + init_ManagedIdentityErrorCodes(); + ManagedIdentityId2 = class { + get id() { + return this._id; + } + set id(value) { + this._id = value; + } + get idType() { + return this._idType; + } + set idType(value) { + this._idType = value; + } + constructor(managedIdentityIdParams) { + const userAssignedClientId = managedIdentityIdParams?.userAssignedClientId; + const userAssignedResourceId = managedIdentityIdParams?.userAssignedResourceId; + const userAssignedObjectId = managedIdentityIdParams?.userAssignedObjectId; + if (userAssignedClientId) { + if (userAssignedResourceId || userAssignedObjectId) { + throw createManagedIdentityError2(invalidManagedIdentityIdType2); + } + this.id = userAssignedClientId; + this.idType = ManagedIdentityIdType2.USER_ASSIGNED_CLIENT_ID; + } else if (userAssignedResourceId) { + if (userAssignedClientId || userAssignedObjectId) { + throw createManagedIdentityError2(invalidManagedIdentityIdType2); + } + this.id = userAssignedResourceId; + this.idType = ManagedIdentityIdType2.USER_ASSIGNED_RESOURCE_ID; + } else if (userAssignedObjectId) { + if (userAssignedClientId || userAssignedResourceId) { + throw createManagedIdentityError2(invalidManagedIdentityIdType2); + } + this.id = userAssignedObjectId; + this.idType = ManagedIdentityIdType2.USER_ASSIGNED_OBJECT_ID; + } else { + this.id = DEFAULT_MANAGED_IDENTITY_ID2; + this.idType = ManagedIdentityIdType2.SYSTEM_ASSIGNED; + } + } + }; + } +}); + +// node_modules/@azure/identity/node_modules/@azure/msal-node/dist/error/NodeAuthError.mjs +var NodeAuthErrorMessage2, NodeAuthError2; +var init_NodeAuthError = __esm({ + "node_modules/@azure/identity/node_modules/@azure/msal-node/dist/error/NodeAuthError.mjs"() { + "use strict"; + init_index_node(); + NodeAuthErrorMessage2 = { + invalidLoopbackAddressType: { + code: "invalid_loopback_server_address_type", + desc: "Loopback server address is not type string. This is unexpected." + }, + unableToLoadRedirectUri: { + code: "unable_to_load_redirectUrl", + desc: "Loopback server callback was invoked without a url. This is unexpected." + }, + noAuthCodeInResponse: { + code: "no_auth_code_in_response", + desc: "No auth code found in the server response. Please check your network trace to determine what happened." + }, + noLoopbackServerExists: { + code: "no_loopback_server_exists", + desc: "No loopback server exists yet." + }, + loopbackServerAlreadyExists: { + code: "loopback_server_already_exists", + desc: "Loopback server already exists. Cannot create another." + }, + loopbackServerTimeout: { + code: "loopback_server_timeout", + desc: "Timed out waiting for auth code listener to be registered." + }, + stateNotFoundError: { + code: "state_not_found", + desc: "State not found. Please verify that the request originated from msal." + }, + thumbprintMissing: { + code: "thumbprint_missing_from_client_certificate", + desc: "Client certificate does not contain a SHA-1 or SHA-256 thumbprint." + }, + redirectUriNotSupported: { + code: "redirect_uri_not_supported", + desc: "RedirectUri is not supported in this scenario. Please remove redirectUri from the request." + } + }; + NodeAuthError2 = class _NodeAuthError extends AuthError2 { + constructor(errorCode, errorMessage) { + super(errorCode, errorMessage); + this.name = "NodeAuthError"; + } + /** + * Creates an error thrown if loopback server address is of type string. + */ + static createInvalidLoopbackAddressTypeError() { + return new _NodeAuthError(NodeAuthErrorMessage2.invalidLoopbackAddressType.code, `${NodeAuthErrorMessage2.invalidLoopbackAddressType.desc}`); + } + /** + * Creates an error thrown if the loopback server is unable to get a url. + */ + static createUnableToLoadRedirectUrlError() { + return new _NodeAuthError(NodeAuthErrorMessage2.unableToLoadRedirectUri.code, `${NodeAuthErrorMessage2.unableToLoadRedirectUri.desc}`); + } + /** + * Creates an error thrown if the server response does not contain an auth code. + */ + static createNoAuthCodeInResponseError() { + return new _NodeAuthError(NodeAuthErrorMessage2.noAuthCodeInResponse.code, `${NodeAuthErrorMessage2.noAuthCodeInResponse.desc}`); + } + /** + * Creates an error thrown if the loopback server has not been spun up yet. + */ + static createNoLoopbackServerExistsError() { + return new _NodeAuthError(NodeAuthErrorMessage2.noLoopbackServerExists.code, `${NodeAuthErrorMessage2.noLoopbackServerExists.desc}`); + } + /** + * Creates an error thrown if a loopback server already exists when attempting to create another one. + */ + static createLoopbackServerAlreadyExistsError() { + return new _NodeAuthError(NodeAuthErrorMessage2.loopbackServerAlreadyExists.code, `${NodeAuthErrorMessage2.loopbackServerAlreadyExists.desc}`); + } + /** + * Creates an error thrown if the loopback server times out registering the auth code listener. + */ + static createLoopbackServerTimeoutError() { + return new _NodeAuthError(NodeAuthErrorMessage2.loopbackServerTimeout.code, `${NodeAuthErrorMessage2.loopbackServerTimeout.desc}`); + } + /** + * Creates an error thrown when the state is not present. + */ + static createStateNotFoundError() { + return new _NodeAuthError(NodeAuthErrorMessage2.stateNotFoundError.code, NodeAuthErrorMessage2.stateNotFoundError.desc); + } + /** + * Creates an error thrown when client certificate was provided, but neither the SHA-1 or SHA-256 thumbprints were provided + */ + static createThumbprintMissingError() { + return new _NodeAuthError(NodeAuthErrorMessage2.thumbprintMissing.code, NodeAuthErrorMessage2.thumbprintMissing.desc); + } + /** + * Creates an error thrown when redirectUri is provided in an unsupported scenario + */ + static createRedirectUriNotSupportedError() { + return new _NodeAuthError(NodeAuthErrorMessage2.redirectUriNotSupported.code, NodeAuthErrorMessage2.redirectUriNotSupported.desc); + } + }; + } +}); + +// node_modules/@azure/identity/node_modules/@azure/msal-node/dist/config/Configuration.mjs +function buildAppConfiguration2({ auth, broker, cache, system, telemetry }) { + const systemOptions = { + ...DEFAULT_SYSTEM_OPTIONS4, + networkClient: new HttpClient2(), + loggerOptions: system?.loggerOptions || DEFAULT_LOGGER_OPTIONS2, + disableInternalRetries: system?.disableInternalRetries || false + }; + if (!!auth.clientCertificate && !!!auth.clientCertificate.thumbprint && !!!auth.clientCertificate.thumbprintSha256) { + throw NodeAuthError2.createStateNotFoundError(); + } + return { + auth: { ...DEFAULT_AUTH_OPTIONS2, ...auth }, + broker: { ...broker }, + cache: { ...cache }, + system: { ...systemOptions, ...system }, + telemetry: { ...DEFAULT_TELEMETRY_OPTIONS4, ...telemetry } + }; +} +function buildManagedIdentityConfiguration2({ clientCapabilities, managedIdentityIdParams, system }) { + const managedIdentityId = new ManagedIdentityId2(managedIdentityIdParams); + const loggerOptions = system?.loggerOptions || DEFAULT_LOGGER_OPTIONS2; + let networkClient; + if (system?.networkClient) { + networkClient = system.networkClient; + } else { + networkClient = new HttpClient2(); + } + return { + clientCapabilities: clientCapabilities || [], + managedIdentityId, + system: { + loggerOptions, + networkClient + }, + disableInternalRetries: system?.disableInternalRetries || false + }; +} +var DEFAULT_AUTH_OPTIONS2, DEFAULT_LOGGER_OPTIONS2, DEFAULT_SYSTEM_OPTIONS4, DEFAULT_TELEMETRY_OPTIONS4; +var init_Configuration = __esm({ + "node_modules/@azure/identity/node_modules/@azure/msal-node/dist/config/Configuration.mjs"() { + "use strict"; + init_index_node(); + init_HttpClient(); + init_ManagedIdentityId(); + init_NodeAuthError(); + DEFAULT_AUTH_OPTIONS2 = { + clientId: "", + authority: Constants_exports.DEFAULT_AUTHORITY, + clientSecret: "", + clientAssertion: "", + clientCertificate: { + thumbprint: "", + thumbprintSha256: "", + privateKey: "", + x5c: "" + }, + knownAuthorities: [], + cloudDiscoveryMetadata: "", + authorityMetadata: "", + clientCapabilities: [], + azureCloudOptions: { + azureCloudInstance: AzureCloudInstance2.None, + tenant: "" + }, + isMcp: false + }; + DEFAULT_LOGGER_OPTIONS2 = { + loggerCallback: () => { + }, + piiLoggingEnabled: false, + logLevel: LogLevel2.Info + }; + DEFAULT_SYSTEM_OPTIONS4 = { + loggerOptions: DEFAULT_LOGGER_OPTIONS2, + networkClient: new HttpClient2(), + disableInternalRetries: false, + protocolMode: ProtocolMode2.AAD + }; + DEFAULT_TELEMETRY_OPTIONS4 = { + application: { + appName: "", + appVersion: "" + } + }; + } +}); + +// node_modules/@azure/identity/node_modules/@azure/msal-node/dist/crypto/GuidGenerator.mjs +var GuidGenerator2; +var init_GuidGenerator = __esm({ + "node_modules/@azure/identity/node_modules/@azure/msal-node/dist/crypto/GuidGenerator.mjs"() { + "use strict"; + init_esm_node(); + GuidGenerator2 = class { + /** + * + * RFC4122: The version 4 UUID is meant for generating UUIDs from truly-random or pseudo-random numbers. + * uuidv4 generates guids from cryprtographically-string random + */ + generateGuid() { + return v4_default(); + } + /** + * verifies if a string is GUID + * @param guid + */ + isGuid(guid2) { + const regexGuid = /^[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/i; + return regexGuid.test(guid2); + } + }; + } +}); + +// node_modules/@azure/identity/node_modules/@azure/msal-node/dist/utils/EncodingUtils.mjs +var EncodingUtils2; +var init_EncodingUtils = __esm({ + "node_modules/@azure/identity/node_modules/@azure/msal-node/dist/utils/EncodingUtils.mjs"() { + "use strict"; + init_index_node(); + EncodingUtils2 = class _EncodingUtils { + /** + * 'utf8': Multibyte encoded Unicode characters. Many web pages and other document formats use UTF-8. + * 'base64': Base64 encoding. + * + * @param str text + */ + static base64Encode(str, encoding) { + return Buffer.from(str, encoding).toString(Constants_exports.EncodingTypes.BASE64); + } + /** + * encode a URL + * @param str + */ + static base64EncodeUrl(str, encoding) { + return _EncodingUtils.base64Encode(str, encoding).replace(/=/g, "").replace(/\+/g, "-").replace(/\//g, "_"); + } + /** + * 'utf8': Multibyte encoded Unicode characters. Many web pages and other document formats use UTF-8. + * 'base64': Base64 encoding. + * + * @param base64Str Base64 encoded text + */ + static base64Decode(base64Str) { + return Buffer.from(base64Str, Constants_exports.EncodingTypes.BASE64).toString("utf8"); + } + /** + * @param base64Str Base64 encoded Url + */ + static base64DecodeUrl(base64Str) { + let str = base64Str.replace(/-/g, "+").replace(/_/g, "/"); + while (str.length % 4) { + str += "="; + } + return _EncodingUtils.base64Decode(str); + } + }; + } +}); + +// node_modules/@azure/identity/node_modules/@azure/msal-node/dist/crypto/HashUtils.mjs +var import_crypto4, HashUtils2; +var init_HashUtils = __esm({ + "node_modules/@azure/identity/node_modules/@azure/msal-node/dist/crypto/HashUtils.mjs"() { + "use strict"; + init_Constants2(); + import_crypto4 = __toESM(require("crypto"), 1); + HashUtils2 = class { + /** + * generate 'SHA256' hash + * @param buffer + */ + sha256(buffer) { + return import_crypto4.default.createHash(Hash2.SHA256).update(buffer).digest(); + } + }; + } +}); + +// node_modules/@azure/identity/node_modules/@azure/msal-node/dist/crypto/PkceGenerator.mjs +var import_crypto5, PkceGenerator2; +var init_PkceGenerator = __esm({ + "node_modules/@azure/identity/node_modules/@azure/msal-node/dist/crypto/PkceGenerator.mjs"() { + "use strict"; + init_index_node(); + init_Constants2(); + init_EncodingUtils(); + init_HashUtils(); + import_crypto5 = __toESM(require("crypto"), 1); + PkceGenerator2 = class { + constructor() { + this.hashUtils = new HashUtils2(); + } + /** + * generates the codeVerfier and the challenge from the codeVerfier + * reference: https://tools.ietf.org/html/rfc7636#section-4.1 and https://tools.ietf.org/html/rfc7636#section-4.2 + */ + async generatePkceCodes() { + const verifier = this.generateCodeVerifier(); + const challenge = this.generateCodeChallengeFromVerifier(verifier); + return { verifier, challenge }; + } + /** + * generates the codeVerfier; reference: https://tools.ietf.org/html/rfc7636#section-4.1 + */ + generateCodeVerifier() { + const charArr = []; + const maxNumber = 256 - 256 % CharSet2.CV_CHARSET.length; + while (charArr.length <= RANDOM_OCTET_SIZE2) { + const byte = import_crypto5.default.randomBytes(1)[0]; + if (byte >= maxNumber) { + continue; + } + const index = byte % CharSet2.CV_CHARSET.length; + charArr.push(CharSet2.CV_CHARSET[index]); + } + const verifier = charArr.join(""); + return EncodingUtils2.base64EncodeUrl(verifier); + } + /** + * generate the challenge from the codeVerfier; reference: https://tools.ietf.org/html/rfc7636#section-4.2 + * @param codeVerifier + */ + generateCodeChallengeFromVerifier(codeVerifier) { + return EncodingUtils2.base64EncodeUrl(this.hashUtils.sha256(codeVerifier).toString(Constants_exports.EncodingTypes.BASE64), Constants_exports.EncodingTypes.BASE64); + } + }; + } +}); + +// node_modules/@azure/identity/node_modules/@azure/msal-node/dist/crypto/CryptoProvider.mjs +var CryptoProvider2; +var init_CryptoProvider = __esm({ + "node_modules/@azure/identity/node_modules/@azure/msal-node/dist/crypto/CryptoProvider.mjs"() { + "use strict"; + init_index_node(); + init_GuidGenerator(); + init_EncodingUtils(); + init_PkceGenerator(); + init_HashUtils(); + CryptoProvider2 = class { + constructor() { + this.pkceGenerator = new PkceGenerator2(); + this.guidGenerator = new GuidGenerator2(); + this.hashUtils = new HashUtils2(); + } + /** + * base64 URL safe encoded string + */ + base64UrlEncode() { + throw new Error("Method not implemented."); + } + /** + * Stringifies and base64Url encodes input public key + * @param inputKid - public key id + * @returns Base64Url encoded public key + */ + encodeKid() { + throw new Error("Method not implemented."); + } + /** + * Creates a new random GUID - used to populate state and nonce. + * @returns string (GUID) + */ + createNewGuid() { + return this.guidGenerator.generateGuid(); + } + /** + * Encodes input string to base64. + * @param input - string to be encoded + */ + base64Encode(input) { + return EncodingUtils2.base64Encode(input); + } + /** + * Decodes input string from base64. + * @param input - string to be decoded + */ + base64Decode(input) { + return EncodingUtils2.base64Decode(input); + } + /** + * Generates PKCE codes used in Authorization Code Flow. + */ + generatePkceCodes() { + return this.pkceGenerator.generatePkceCodes(); + } + /** + * Generates a keypair, stores it and returns a thumbprint - not yet implemented for node + */ + getPublicKeyThumbprint() { + throw new Error("Method not implemented."); + } + /** + * Removes cryptographic keypair from key store matching the keyId passed in + * @param kid - public key id + */ + removeTokenBindingKey() { + throw new Error("Method not implemented."); + } + /** + * Removes all cryptographic keys from Keystore + */ + clearKeystore() { + throw new Error("Method not implemented."); + } + /** + * Signs the given object as a jwt payload with private key retrieved by given kid - currently not implemented for node + */ + signJwt() { + throw new Error("Method not implemented."); + } + /** + * Returns the SHA-256 hash of an input string + */ + async hashString(plainText) { + return EncodingUtils2.base64EncodeUrl(this.hashUtils.sha256(plainText).toString(Constants_exports.EncodingTypes.BASE64), Constants_exports.EncodingTypes.BASE64); + } + }; + } +}); + +// node_modules/@azure/identity/node_modules/@azure/msal-node/dist/cache/CacheHelpers.mjs +function generateCredentialKey2(credential) { + const familyId = credential.credentialType === Constants_exports.CredentialType.REFRESH_TOKEN && credential.familyId || credential.clientId; + const scheme = credential.tokenType && credential.tokenType.toLowerCase() !== Constants_exports.AuthenticationScheme.BEARER.toLowerCase() ? credential.tokenType.toLowerCase() : ""; + const credentialKey = [ + credential.homeAccountId, + credential.environment, + credential.credentialType, + familyId, + credential.realm || "", + credential.target || "", + scheme + ]; + return credentialKey.join(CACHE2.KEY_SEPARATOR).toLowerCase(); +} +function generateAccountKey2(account) { + const homeTenantId = account.homeAccountId.split(".")[1]; + const accountKey = [ + account.homeAccountId, + account.environment, + homeTenantId || account.tenantId || "" + ]; + return accountKey.join(CACHE2.KEY_SEPARATOR).toLowerCase(); +} +var init_CacheHelpers2 = __esm({ + "node_modules/@azure/identity/node_modules/@azure/msal-node/dist/cache/CacheHelpers.mjs"() { + "use strict"; + init_index_node(); + init_Constants2(); + } +}); + +// node_modules/@azure/identity/node_modules/@azure/msal-node/dist/cache/NodeStorage.mjs +var NodeStorage2; +var init_NodeStorage = __esm({ + "node_modules/@azure/identity/node_modules/@azure/msal-node/dist/cache/NodeStorage.mjs"() { + "use strict"; + init_index_node(); + init_Deserializer(); + init_Serializer(); + init_CacheHelpers2(); + NodeStorage2 = class extends CacheManager2 { + constructor(logger31, clientId, cryptoImpl, staticAuthorityOptions) { + super(clientId, cryptoImpl, logger31, new StubPerformanceClient2(), staticAuthorityOptions); + this.cache = {}; + this.changeEmitters = []; + this.logger = logger31; + } + /** + * Queue up callbacks + * @param func - a callback function for cache change indication + */ + registerChangeEmitter(func) { + this.changeEmitters.push(func); + } + /** + * Invoke the callback when cache changes + */ + emitChange() { + this.changeEmitters.forEach((func) => func.call(null)); + } + /** + * Converts cacheKVStore to InMemoryCache + * @param cache - key value store + */ + cacheToInMemoryCache(cache) { + const inMemoryCache = { + accounts: {}, + idTokens: {}, + accessTokens: {}, + refreshTokens: {}, + appMetadata: {} + }; + for (const key in cache) { + const value = cache[key]; + if (typeof value !== "object") { + continue; + } + if (AccountEntityUtils_exports.isAccountEntity(value)) { + inMemoryCache.accounts[key] = value; + } else if (CacheHelpers_exports2.isIdTokenEntity(value)) { + inMemoryCache.idTokens[key] = value; + } else if (CacheHelpers_exports2.isAccessTokenEntity(value)) { + inMemoryCache.accessTokens[key] = value; + } else if (CacheHelpers_exports2.isRefreshTokenEntity(value)) { + inMemoryCache.refreshTokens[key] = value; + } else if (CacheHelpers_exports2.isAppMetadataEntity(key, value)) { + inMemoryCache.appMetadata[key] = value; + } else { + continue; + } + } + return inMemoryCache; + } + /** + * converts inMemoryCache to CacheKVStore + * @param inMemoryCache - kvstore map for inmemory + */ + inMemoryCacheToCache(inMemoryCache) { + let cache = this.getCache(); + cache = { + ...cache, + ...inMemoryCache.accounts, + ...inMemoryCache.idTokens, + ...inMemoryCache.accessTokens, + ...inMemoryCache.refreshTokens, + ...inMemoryCache.appMetadata + }; + return cache; + } + /** + * gets the current in memory cache for the client + */ + getInMemoryCache() { + this.logger.trace("Getting in-memory cache", ""); + const inMemoryCache = this.cacheToInMemoryCache(this.getCache()); + return inMemoryCache; + } + /** + * sets the current in memory cache for the client + * @param inMemoryCache - key value map in memory + */ + setInMemoryCache(inMemoryCache) { + this.logger.trace("Setting in-memory cache", ""); + const cache = this.inMemoryCacheToCache(inMemoryCache); + this.setCache(cache); + this.emitChange(); + } + /** + * get the current cache key-value store + */ + getCache() { + this.logger.trace("Getting cache key-value store", ""); + return this.cache; + } + /** + * sets the current cache (key value store) + * @param cacheMap - key value map + */ + setCache(cache) { + this.logger.trace("Setting cache key value store", ""); + this.cache = cache; + this.emitChange(); + } + /** + * Gets cache item with given key. + * @param key - lookup key for the cache entry + */ + getItem(key) { + this.logger.tracePii(`Item key: ${key}`, ""); + const cache = this.getCache(); + return cache[key]; + } + /** + * Gets cache item with given key-value + * @param key - lookup key for the cache entry + * @param value - value of the cache entry + */ + setItem(key, value) { + this.logger.tracePii(`Item key: ${key}`, ""); + const cache = this.getCache(); + cache[key] = value; + this.setCache(cache); + } + generateCredentialKey(credential) { + return generateCredentialKey2(credential); + } + generateAccountKey(account) { + return generateAccountKey2(account); + } + getAccountKeys() { + const inMemoryCache = this.getInMemoryCache(); + const accountKeys = Object.keys(inMemoryCache.accounts); + return accountKeys; + } + getTokenKeys() { + const inMemoryCache = this.getInMemoryCache(); + const tokenKeys = { + idToken: Object.keys(inMemoryCache.idTokens), + accessToken: Object.keys(inMemoryCache.accessTokens), + refreshToken: Object.keys(inMemoryCache.refreshTokens) + }; + return tokenKeys; + } + /** + * Reads account from cache, builds it into an account entity and returns it. + * @param accountKey - lookup key to fetch cache type AccountEntity + * @returns + */ + getAccount(accountKey) { + const cachedAccount = this.getItem(accountKey); + return cachedAccount && typeof cachedAccount === "object" ? { ...cachedAccount } : null; + } + /** + * set account entity + * @param account - cache value to be set of type AccountEntity + */ + async setAccount(account) { + const accountKey = this.generateAccountKey(AccountEntityUtils_exports.getAccountInfo(account)); + this.setItem(accountKey, account); + } + /** + * fetch the idToken credential + * @param idTokenKey - lookup key to fetch cache type IdTokenEntity + */ + getIdTokenCredential(idTokenKey) { + const idToken = this.getItem(idTokenKey); + if (CacheHelpers_exports2.isIdTokenEntity(idToken)) { + return idToken; + } + return null; + } + /** + * set idToken credential + * @param idToken - cache value to be set of type IdTokenEntity + */ + async setIdTokenCredential(idToken) { + const idTokenKey = this.generateCredentialKey(idToken); + this.setItem(idTokenKey, idToken); + } + /** + * fetch the accessToken credential + * @param accessTokenKey - lookup key to fetch cache type AccessTokenEntity + */ + getAccessTokenCredential(accessTokenKey) { + const accessToken = this.getItem(accessTokenKey); + if (CacheHelpers_exports2.isAccessTokenEntity(accessToken)) { + return accessToken; + } + return null; + } + /** + * set accessToken credential + * @param accessToken - cache value to be set of type AccessTokenEntity + */ + async setAccessTokenCredential(accessToken) { + const accessTokenKey = this.generateCredentialKey(accessToken); + this.setItem(accessTokenKey, accessToken); + } + /** + * fetch the refreshToken credential + * @param refreshTokenKey - lookup key to fetch cache type RefreshTokenEntity + */ + getRefreshTokenCredential(refreshTokenKey) { + const refreshToken = this.getItem(refreshTokenKey); + if (CacheHelpers_exports2.isRefreshTokenEntity(refreshToken)) { + return refreshToken; + } + return null; + } + /** + * set refreshToken credential + * @param refreshToken - cache value to be set of type RefreshTokenEntity + */ + async setRefreshTokenCredential(refreshToken) { + const refreshTokenKey = this.generateCredentialKey(refreshToken); + this.setItem(refreshTokenKey, refreshToken); + } + /** + * fetch appMetadata entity from the platform cache + * @param appMetadataKey - lookup key to fetch cache type AppMetadataEntity + */ + getAppMetadata(appMetadataKey) { + const appMetadata = this.getItem(appMetadataKey); + if (CacheHelpers_exports2.isAppMetadataEntity(appMetadataKey, appMetadata)) { + return appMetadata; + } + return null; + } + /** + * set appMetadata entity to the platform cache + * @param appMetadata - cache value to be set of type AppMetadataEntity + */ + setAppMetadata(appMetadata) { + const appMetadataKey = CacheHelpers_exports2.generateAppMetadataKey(appMetadata); + this.setItem(appMetadataKey, appMetadata); + } + /** + * fetch server telemetry entity from the platform cache + * @param serverTelemetrykey - lookup key to fetch cache type ServerTelemetryEntity + */ + getServerTelemetry(serverTelemetrykey) { + const serverTelemetryEntity = this.getItem(serverTelemetrykey); + if (serverTelemetryEntity && CacheHelpers_exports2.isServerTelemetryEntity(serverTelemetrykey, serverTelemetryEntity)) { + return serverTelemetryEntity; + } + return null; + } + /** + * set server telemetry entity to the platform cache + * @param serverTelemetryKey - lookup key to fetch cache type ServerTelemetryEntity + * @param serverTelemetry - cache value to be set of type ServerTelemetryEntity + */ + setServerTelemetry(serverTelemetryKey, serverTelemetry) { + this.setItem(serverTelemetryKey, serverTelemetry); + } + /** + * fetch authority metadata entity from the platform cache + * @param key - lookup key to fetch cache type AuthorityMetadataEntity + */ + getAuthorityMetadata(key) { + const authorityMetadataEntity = this.getItem(key); + if (authorityMetadataEntity && CacheHelpers_exports2.isAuthorityMetadataEntity(key, authorityMetadataEntity)) { + return authorityMetadataEntity; + } + return null; + } + /** + * Get all authority metadata keys + */ + getAuthorityMetadataKeys() { + return this.getKeys().filter((key) => { + return this.isAuthorityMetadata(key); + }); + } + /** + * set authority metadata entity to the platform cache + * @param key - lookup key to fetch cache type AuthorityMetadataEntity + * @param metadata - cache value to be set of type AuthorityMetadataEntity + */ + setAuthorityMetadata(key, metadata) { + this.setItem(key, metadata); + } + /** + * fetch throttling entity from the platform cache + * @param throttlingCacheKey - lookup key to fetch cache type ThrottlingEntity + */ + getThrottlingCache(throttlingCacheKey) { + const throttlingCache = this.getItem(throttlingCacheKey); + if (throttlingCache && CacheHelpers_exports2.isThrottlingEntity(throttlingCacheKey, throttlingCache)) { + return throttlingCache; + } + return null; + } + /** + * set throttling entity to the platform cache + * @param throttlingCacheKey - lookup key to fetch cache type ThrottlingEntity + * @param throttlingCache - cache value to be set of type ThrottlingEntity + */ + setThrottlingCache(throttlingCacheKey, throttlingCache) { + this.setItem(throttlingCacheKey, throttlingCache); + } + /** + * Removes the cache item from memory with the given key. + * @param key - lookup key to remove a cache entity + * @param inMemory - key value map of the cache + */ + removeItem(key) { + this.logger.tracePii(`Item key: ${key}`, ""); + let result = false; + const cache = this.getCache(); + if (!!cache[key]) { + delete cache[key]; + result = true; + } + if (result) { + this.setCache(cache); + this.emitChange(); + } + return result; + } + /** + * Remove account entity from the platform cache if it's outdated + * @param accountKey - lookup key to fetch cache type AccountEntity + */ + removeOutdatedAccount(accountKey) { + this.removeItem(accountKey); + } + /** + * Checks whether key is in cache. + * @param key - look up key for a cache entity + */ + containsKey(key) { + return this.getKeys().includes(key); + } + /** + * Gets all keys in window. + */ + getKeys() { + this.logger.trace("Retrieving all cache keys", ""); + const cache = this.getCache(); + return [...Object.keys(cache)]; + } + /** + * Clears all cache entries created by MSAL (except tokens). + */ + clear() { + this.logger.trace("Clearing cache entries created by MSAL", ""); + const cacheKeys = this.getKeys(); + cacheKeys.forEach((key) => { + this.removeItem(key); + }); + this.emitChange(); + } + /** + * Initialize in memory cache from an exisiting cache vault + * @param cache - blob formatted cache (JSON) + */ + static generateInMemoryCache(cache) { + return Deserializer2.deserializeAllCache(Deserializer2.deserializeJSONBlob(cache)); + } + /** + * retrieves the final JSON + * @param inMemoryCache - itemised cache read from the JSON + */ + static generateJsonCache(inMemoryCache) { + return Serializer2.serializeAllCache(inMemoryCache); + } + /** + * Updates a credential's cache key if the current cache key is outdated + */ + updateCredentialCacheKey(currentCacheKey, credential) { + const updatedCacheKey = this.generateCredentialKey(credential); + if (currentCacheKey !== updatedCacheKey) { + const cacheItem = this.getItem(currentCacheKey); + if (cacheItem) { + this.removeItem(currentCacheKey); + this.setItem(updatedCacheKey, cacheItem); + this.logger.verbose(`Updated an outdated ${credential.credentialType} cache key`, ""); + return updatedCacheKey; + } else { + this.logger.error(`Attempted to update an outdated ${credential.credentialType} cache key but no item matching the outdated key was found in storage`, ""); + } + } + return currentCacheKey; + } + }; + } +}); + +// node_modules/@azure/identity/node_modules/@azure/msal-node/dist/cache/TokenCache.mjs +var defaultSerializedCache2, TokenCache2; +var init_TokenCache = __esm({ + "node_modules/@azure/identity/node_modules/@azure/msal-node/dist/cache/TokenCache.mjs"() { + "use strict"; + init_NodeStorage(); + init_index_node(); + init_Deserializer(); + init_Serializer(); + init_GuidGenerator(); + init_CryptoProvider(); + defaultSerializedCache2 = { + Account: {}, + IdToken: {}, + AccessToken: {}, + RefreshToken: {}, + AppMetadata: {} + }; + TokenCache2 = class { + constructor(storage, logger31, cachePlugin) { + this.cacheHasChanged = false; + this.storage = storage; + this.storage.registerChangeEmitter(this.handleChangeEvent.bind(this)); + if (cachePlugin) { + this.persistence = cachePlugin; + } + this.logger = logger31; + } + /** + * Set to true if cache state has changed since last time serialize or writeToPersistence was called + */ + hasChanged() { + return this.cacheHasChanged; + } + /** + * Serializes in memory cache to JSON + */ + serialize() { + this.logger.trace("Serializing in-memory cache", ""); + let finalState = Serializer2.serializeAllCache(this.storage.getInMemoryCache()); + if (this.cacheSnapshot) { + this.logger.trace("Reading cache snapshot from disk", ""); + finalState = this.mergeState(JSON.parse(this.cacheSnapshot), finalState); + } else { + this.logger.trace("No cache snapshot to merge", ""); + } + this.cacheHasChanged = false; + return JSON.stringify(finalState); + } + /** + * Deserializes JSON to in-memory cache. JSON should be in MSAL cache schema format + * @param cache - blob formatted cache + */ + deserialize(cache) { + this.logger.trace("Deserializing JSON to in-memory cache", ""); + this.cacheSnapshot = cache; + if (this.cacheSnapshot) { + this.logger.trace("Reading cache snapshot from disk", ""); + const deserializedCache = Deserializer2.deserializeAllCache(this.overlayDefaults(JSON.parse(this.cacheSnapshot))); + this.storage.setInMemoryCache(deserializedCache); + } else { + this.logger.trace("No cache snapshot to deserialize", ""); + } + } + /** + * Fetches the cache key-value map + */ + getKVStore() { + return this.storage.getCache(); + } + /** + * Gets cache snapshot in CacheKVStore format + */ + getCacheSnapshot() { + const deserializedPersistentStorage = NodeStorage2.generateInMemoryCache(this.cacheSnapshot); + return this.storage.inMemoryCacheToCache(deserializedPersistentStorage); + } + /** + * API that retrieves all accounts currently in cache to the user + */ + async getAllAccounts(correlationId = new CryptoProvider2().createNewGuid()) { + this.logger.trace("getAllAccounts called", correlationId); + let cacheContext; + try { + if (this.persistence) { + cacheContext = new TokenCacheContext2(this, false); + await this.persistence.beforeCacheAccess(cacheContext); + } + return this.storage.getAllAccounts({}, correlationId); + } finally { + if (this.persistence && cacheContext) { + await this.persistence.afterCacheAccess(cacheContext); + } + } + } + /** + * Returns the signed in account matching homeAccountId. + * (the account object is created at the time of successful login) + * or null when no matching account is found + * @param homeAccountId - unique identifier for an account (uid.utid) + */ + async getAccountByHomeId(homeAccountId) { + const allAccounts = await this.getAllAccounts(); + if (homeAccountId && allAccounts && allAccounts.length) { + return allAccounts.filter((accountObj) => accountObj.homeAccountId === homeAccountId)[0] || null; + } else { + return null; + } + } + /** + * Returns the signed in account matching localAccountId. + * (the account object is created at the time of successful login) + * or null when no matching account is found + * @param localAccountId - unique identifier of an account (sub/obj when homeAccountId cannot be populated) + */ + async getAccountByLocalId(localAccountId) { + const allAccounts = await this.getAllAccounts(); + if (localAccountId && allAccounts && allAccounts.length) { + return allAccounts.filter((accountObj) => accountObj.localAccountId === localAccountId)[0] || null; + } else { + return null; + } + } + /** + * API to remove a specific account and the relevant data from cache + * @param account - AccountInfo passed by the user + */ + async removeAccount(account, correlationId) { + this.logger.trace("removeAccount called", correlationId || ""); + let cacheContext; + try { + if (this.persistence) { + cacheContext = new TokenCacheContext2(this, true); + await this.persistence.beforeCacheAccess(cacheContext); + } + this.storage.removeAccount(account, correlationId || new GuidGenerator2().generateGuid()); + } finally { + if (this.persistence && cacheContext) { + await this.persistence.afterCacheAccess(cacheContext); + } + } + } + /** + * Overwrites in-memory cache with persistent cache + */ + async overwriteCache() { + if (!this.persistence) { + this.logger.info("No persistence layer specified, cache cannot be overwritten", ""); + return; + } + this.logger.info("Overwriting in-memory cache with persistent cache", ""); + this.storage.clear(); + const cacheContext = new TokenCacheContext2(this, false); + await this.persistence.beforeCacheAccess(cacheContext); + const cacheSnapshot = this.getCacheSnapshot(); + this.storage.setCache(cacheSnapshot); + await this.persistence.afterCacheAccess(cacheContext); + } + /** + * Called when the cache has changed state. + */ + handleChangeEvent() { + this.cacheHasChanged = true; + } + /** + * Merge in memory cache with the cache snapshot. + * @param oldState - cache before changes + * @param currentState - current cache state in the library + */ + mergeState(oldState, currentState) { + this.logger.trace("Merging in-memory cache with cache snapshot", ""); + const stateAfterRemoval = this.mergeRemovals(oldState, currentState); + return this.mergeUpdates(stateAfterRemoval, currentState); + } + /** + * Deep update of oldState based on newState values + * @param oldState - cache before changes + * @param newState - updated cache + */ + mergeUpdates(oldState, newState) { + Object.keys(newState).forEach((newKey) => { + const newValue = newState[newKey]; + if (!oldState.hasOwnProperty(newKey)) { + if (newValue !== null) { + oldState[newKey] = newValue; + } + } else { + const newValueNotNull = newValue !== null; + const newValueIsObject = typeof newValue === "object"; + const newValueIsNotArray = !Array.isArray(newValue); + const oldStateNotUndefinedOrNull = typeof oldState[newKey] !== "undefined" && oldState[newKey] !== null; + if (newValueNotNull && newValueIsObject && newValueIsNotArray && oldStateNotUndefinedOrNull) { + this.mergeUpdates(oldState[newKey], newValue); + } else { + oldState[newKey] = newValue; + } + } + }); + return oldState; + } + /** + * Removes entities in oldState that the were removed from newState. If there are any unknown values in root of + * oldState that are not recognized, they are left untouched. + * @param oldState - cache before changes + * @param newState - updated cache + */ + mergeRemovals(oldState, newState) { + this.logger.trace("Remove updated entries in cache", ""); + const accounts = oldState.Account ? this.mergeRemovalsDict(oldState.Account, newState.Account) : oldState.Account; + const accessTokens = oldState.AccessToken ? this.mergeRemovalsDict(oldState.AccessToken, newState.AccessToken) : oldState.AccessToken; + const refreshTokens = oldState.RefreshToken ? this.mergeRemovalsDict(oldState.RefreshToken, newState.RefreshToken) : oldState.RefreshToken; + const idTokens = oldState.IdToken ? this.mergeRemovalsDict(oldState.IdToken, newState.IdToken) : oldState.IdToken; + const appMetadata = oldState.AppMetadata ? this.mergeRemovalsDict(oldState.AppMetadata, newState.AppMetadata) : oldState.AppMetadata; + return { + ...oldState, + Account: accounts, + AccessToken: accessTokens, + RefreshToken: refreshTokens, + IdToken: idTokens, + AppMetadata: appMetadata + }; + } + /** + * Helper to merge new cache with the old one + * @param oldState - cache before changes + * @param newState - updated cache + */ + mergeRemovalsDict(oldState, newState) { + const finalState = { ...oldState }; + Object.keys(oldState).forEach((oldKey) => { + if (!newState || !newState.hasOwnProperty(oldKey)) { + delete finalState[oldKey]; + } + }); + return finalState; + } + /** + * Helper to overlay as a part of cache merge + * @param passedInCache - cache read from the blob + */ + overlayDefaults(passedInCache) { + this.logger.trace("Overlaying input cache with the default cache", ""); + return { + Account: { + ...defaultSerializedCache2.Account, + ...passedInCache.Account + }, + IdToken: { + ...defaultSerializedCache2.IdToken, + ...passedInCache.IdToken + }, + AccessToken: { + ...defaultSerializedCache2.AccessToken, + ...passedInCache.AccessToken + }, + RefreshToken: { + ...defaultSerializedCache2.RefreshToken, + ...passedInCache.RefreshToken + }, + AppMetadata: { + ...defaultSerializedCache2.AppMetadata, + ...passedInCache.AppMetadata + } + }; + } + }; + } +}); + +// node_modules/@azure/identity/node_modules/@azure/msal-node/dist/error/ClientAuthErrorCodes.mjs +var missingTenantIdError2, userTimeoutReached2, invalidAssertion2, invalidClientCredential2, deviceCodePollingCancelled2, deviceCodeExpired2, deviceCodeUnknownError2; +var init_ClientAuthErrorCodes2 = __esm({ + "node_modules/@azure/identity/node_modules/@azure/msal-node/dist/error/ClientAuthErrorCodes.mjs"() { + "use strict"; + missingTenantIdError2 = "missing_tenant_id_error"; + userTimeoutReached2 = "user_timeout_reached"; + invalidAssertion2 = "invalid_assertion"; + invalidClientCredential2 = "invalid_client_credential"; + deviceCodePollingCancelled2 = "device_code_polling_cancelled"; + deviceCodeExpired2 = "device_code_expired"; + deviceCodeUnknownError2 = "device_code_unknown_error"; + } +}); + +// node_modules/@azure/identity/node_modules/@azure/msal-node/dist/client/ClientAssertion.mjs +var import_jsonwebtoken2, ClientAssertion2; +var init_ClientAssertion = __esm({ + "node_modules/@azure/identity/node_modules/@azure/msal-node/dist/client/ClientAssertion.mjs"() { + "use strict"; + import_jsonwebtoken2 = __toESM(require_jsonwebtoken(), 1); + init_index_node(); + init_EncodingUtils(); + init_Constants2(); + init_ClientAuthErrorCodes2(); + ClientAssertion2 = class _ClientAssertion { + /** + * Initialize the ClientAssertion class from the clientAssertion passed by the user + * @param assertion - refer https://tools.ietf.org/html/rfc7521 + */ + static fromAssertion(assertion) { + const clientAssertion = new _ClientAssertion(); + clientAssertion.jwt = assertion; + return clientAssertion; + } + /** + * @deprecated Use fromCertificateWithSha256Thumbprint instead, with a SHA-256 thumprint + * Initialize the ClientAssertion class from the certificate passed by the user + * @param thumbprint - identifier of a certificate + * @param privateKey - secret key + * @param publicCertificate - electronic document provided to prove the ownership of the public key + */ + static fromCertificate(thumbprint, privateKey, publicCertificate) { + const clientAssertion = new _ClientAssertion(); + clientAssertion.privateKey = privateKey; + clientAssertion.thumbprint = thumbprint; + clientAssertion.useSha256 = false; + if (publicCertificate) { + clientAssertion.publicCertificate = this.parseCertificate(publicCertificate); + } + return clientAssertion; + } + /** + * Initialize the ClientAssertion class from the certificate passed by the user + * @param thumbprint - identifier of a certificate + * @param privateKey - secret key + * @param publicCertificate - electronic document provided to prove the ownership of the public key + */ + static fromCertificateWithSha256Thumbprint(thumbprint, privateKey, publicCertificate) { + const clientAssertion = new _ClientAssertion(); + clientAssertion.privateKey = privateKey; + clientAssertion.thumbprint = thumbprint; + clientAssertion.useSha256 = true; + if (publicCertificate) { + clientAssertion.publicCertificate = this.parseCertificate(publicCertificate); + } + return clientAssertion; + } + /** + * Update JWT for certificate based clientAssertion, if passed by the user, uses it as is + * @param cryptoProvider - library's crypto helper + * @param issuer - iss claim + * @param jwtAudience - aud claim + */ + getJwt(cryptoProvider, issuer, jwtAudience) { + if (this.privateKey && this.thumbprint) { + if (this.jwt && !this.isExpired() && issuer === this.issuer && jwtAudience === this.jwtAudience) { + return this.jwt; + } + return this.createJwt(cryptoProvider, issuer, jwtAudience); + } + if (this.jwt) { + return this.jwt; + } + throw createClientAuthError2(invalidAssertion2); + } + /** + * JWT format and required claims specified: https://tools.ietf.org/html/rfc7523#section-3 + */ + createJwt(cryptoProvider, issuer, jwtAudience) { + this.issuer = issuer; + this.jwtAudience = jwtAudience; + const issuedAt = TimeUtils_exports2.nowSeconds(); + this.expirationTime = issuedAt + 600; + const algorithm = this.useSha256 ? JwtConstants2.PSS_256 : JwtConstants2.RSA_256; + const header = { + alg: algorithm + }; + const thumbprintHeader = this.useSha256 ? JwtConstants2.X5T_256 : JwtConstants2.X5T; + Object.assign(header, { + [thumbprintHeader]: EncodingUtils2.base64EncodeUrl(this.thumbprint, Constants_exports.EncodingTypes.HEX) + }); + if (this.publicCertificate) { + Object.assign(header, { + [JwtConstants2.X5C]: this.publicCertificate + }); + } + const payload = { + [JwtConstants2.AUDIENCE]: this.jwtAudience, + [JwtConstants2.EXPIRATION_TIME]: this.expirationTime, + [JwtConstants2.ISSUER]: this.issuer, + [JwtConstants2.SUBJECT]: this.issuer, + [JwtConstants2.NOT_BEFORE]: issuedAt, + [JwtConstants2.JWT_ID]: cryptoProvider.createNewGuid() + }; + this.jwt = import_jsonwebtoken2.default.sign(payload, this.privateKey, { header }); + return this.jwt; + } + /** + * Utility API to check expiration + */ + isExpired() { + return this.expirationTime < TimeUtils_exports2.nowSeconds(); + } + /** + * Extracts the raw certs from a given certificate string and returns them in an array. + * @param publicCertificate - electronic document provided to prove the ownership of the public key + */ + static parseCertificate(publicCertificate) { + const regexToFindCerts = /-----BEGIN CERTIFICATE-----\r*\n(.+?)\r*\n-----END CERTIFICATE-----/gs; + const certs = []; + let matches; + while ((matches = regexToFindCerts.exec(publicCertificate)) !== null) { + certs.push(matches[1].replace(/\r*\n/g, "")); + } + return certs; + } + }; + } +}); + +// node_modules/@azure/identity/node_modules/@azure/msal-node/dist/packageMetadata.mjs +var name4, version5; +var init_packageMetadata2 = __esm({ + "node_modules/@azure/identity/node_modules/@azure/msal-node/dist/packageMetadata.mjs"() { + "use strict"; + name4 = "@azure/msal-node"; + version5 = "5.1.4"; + } +}); + +// node_modules/@azure/identity/node_modules/@azure/msal-node/dist/client/BaseClient.mjs +var BaseClient2; +var init_BaseClient = __esm({ + "node_modules/@azure/identity/node_modules/@azure/msal-node/dist/client/BaseClient.mjs"() { + "use strict"; + init_index_node(); + init_packageMetadata2(); + BaseClient2 = class { + constructor(configuration) { + this.config = buildClientConfiguration2(configuration); + this.logger = new Logger2(this.config.loggerOptions, name4, version5); + this.cryptoUtils = this.config.cryptoInterface; + this.cacheManager = this.config.storageInterface; + this.networkClient = this.config.networkInterface; + this.serverTelemetryManager = this.config.serverTelemetryManager; + this.authority = this.config.authOptions.authority; + this.performanceClient = new StubPerformanceClient2(); + } + /** + * Creates default headers for requests to token endpoint + */ + createTokenRequestHeaders(ccsCred) { + return Token_exports.createTokenRequestHeaders(this.logger, false, ccsCred); + } + /** + * Http post to token endpoint + * @param tokenEndpoint + * @param queryString + * @param headers + * @param thumbprint + */ + async executePostToTokenEndpoint(tokenEndpoint, queryString, headers, thumbprint, correlationId) { + return Token_exports.executePostToTokenEndpoint(tokenEndpoint, queryString, headers, thumbprint, correlationId, this.cacheManager, this.networkClient, this.logger, this.performanceClient, this.serverTelemetryManager); + } + /** + * Wraps sendPostRequestAsync with necessary preflight and postflight logic + * @param thumbprint - Request thumbprint for throttling + * @param tokenEndpoint - Endpoint to make the POST to + * @param options - Body and Headers to include on the POST request + * @param correlationId - CorrelationId for telemetry + */ + async sendPostRequest(thumbprint, tokenEndpoint, options, correlationId) { + return Token_exports.sendPostRequest(thumbprint, tokenEndpoint, options, correlationId, this.cacheManager, this.networkClient, this.logger, this.performanceClient); + } + /** + * Creates query string for the /token request + * @param request + */ + createTokenQueryParameters(request) { + return Token_exports.createTokenQueryParameters(request, this.config.authOptions.clientId, this.config.authOptions.redirectUri, this.performanceClient); + } + }; + } +}); + +// node_modules/@azure/identity/node_modules/@azure/msal-node/dist/client/UsernamePasswordClient.mjs +var UsernamePasswordClient2; +var init_UsernamePasswordClient = __esm({ + "node_modules/@azure/identity/node_modules/@azure/msal-node/dist/client/UsernamePasswordClient.mjs"() { + "use strict"; + init_index_node(); + init_Constants2(); + init_BaseClient(); + UsernamePasswordClient2 = class extends BaseClient2 { + constructor(configuration) { + super(configuration); + } + /** + * API to acquire a token by passing the username and password to the service in exchage of credentials + * password_grant + * @param request - CommonUsernamePasswordRequest + */ + async acquireToken(request) { + this.logger.info("in acquireToken call in username-password client", request.correlationId); + const reqTimestamp = TimeUtils_exports2.nowSeconds(); + const response = await this.executeTokenRequest(this.authority, request); + const responseHandler = new ResponseHandler2(this.config.authOptions.clientId, this.cacheManager, this.cryptoUtils, this.logger, this.performanceClient, this.config.serializableCache, this.config.persistencePlugin); + responseHandler.validateTokenResponse(response.body, request.correlationId); + const tokenResponse = responseHandler.handleServerTokenResponse(response.body, this.authority, reqTimestamp, request, ApiId2.acquireTokenByUsernamePassword); + return tokenResponse; + } + /** + * Executes POST request to token endpoint + * @param authority - authority object + * @param request - CommonUsernamePasswordRequest provided by the developer + */ + async executeTokenRequest(authority, request) { + const queryParametersString = this.createTokenQueryParameters(request); + const endpoint = UrlString2.appendQueryString(authority.tokenEndpoint, queryParametersString); + const requestBody = await this.createTokenRequestBody(request); + const headers = this.createTokenRequestHeaders({ + credential: request.username, + type: CcsCredentialType2.UPN + }); + const thumbprint = { + clientId: this.config.authOptions.clientId, + authority: authority.canonicalAuthority, + scopes: request.scopes, + claims: request.claims, + authenticationScheme: request.authenticationScheme, + resourceRequestMethod: request.resourceRequestMethod, + resourceRequestUri: request.resourceRequestUri, + shrClaims: request.shrClaims, + sshKid: request.sshKid + }; + return this.executePostToTokenEndpoint(endpoint, requestBody, headers, thumbprint, request.correlationId); + } + /** + * Generates a map for all the params to be sent to the service + * @param request - CommonUsernamePasswordRequest provided by the developer + */ + async createTokenRequestBody(request) { + const parameters = /* @__PURE__ */ new Map(); + RequestParameterBuilder_exports2.addClientId(parameters, this.config.authOptions.clientId); + RequestParameterBuilder_exports2.addUsername(parameters, request.username); + RequestParameterBuilder_exports2.addPassword(parameters, request.password); + RequestParameterBuilder_exports2.addScopes(parameters, request.scopes); + RequestParameterBuilder_exports2.addResponseType(parameters, Constants_exports.OAuthResponseType.IDTOKEN_TOKEN); + RequestParameterBuilder_exports2.addGrantType(parameters, Constants_exports.GrantType.RESOURCE_OWNER_PASSWORD_GRANT); + RequestParameterBuilder_exports2.addClientInfo(parameters); + RequestParameterBuilder_exports2.addLibraryInfo(parameters, this.config.libraryInfo); + RequestParameterBuilder_exports2.addApplicationTelemetry(parameters, this.config.telemetry.application); + RequestParameterBuilder_exports2.addThrottling(parameters); + if (this.serverTelemetryManager) { + RequestParameterBuilder_exports2.addServerTelemetry(parameters, this.serverTelemetryManager); + } + const correlationId = request.correlationId || this.config.cryptoInterface.createNewGuid(); + RequestParameterBuilder_exports2.addCorrelationId(parameters, correlationId); + if (this.config.clientCredentials.clientSecret) { + RequestParameterBuilder_exports2.addClientSecret(parameters, this.config.clientCredentials.clientSecret); + } + const clientAssertion = this.config.clientCredentials.clientAssertion; + if (clientAssertion) { + RequestParameterBuilder_exports2.addClientAssertion(parameters, await getClientAssertion2(clientAssertion.assertion, this.config.authOptions.clientId, request.resourceRequestUri)); + RequestParameterBuilder_exports2.addClientAssertionType(parameters, clientAssertion.assertionType); + } + if (!StringUtils2.isEmptyObj(request.claims) || this.config.authOptions.clientCapabilities && this.config.authOptions.clientCapabilities.length > 0) { + RequestParameterBuilder_exports2.addClaims(parameters, request.claims, this.config.authOptions.clientCapabilities); + } + if (this.config.systemOptions.preventCorsPreflight && request.username) { + RequestParameterBuilder_exports2.addCcsUpn(parameters, request.username); + } + return UrlUtils_exports2.mapToQueryString(parameters); + } + }; + } +}); + +// node_modules/@azure/identity/node_modules/@azure/msal-node/dist/protocol/Authorize.mjs +function getAuthCodeRequestUrl2(config2, authority, request, logger31) { + const parameters = Authorize_exports2.getStandardAuthorizeRequestParameters({ + ...config2.auth, + authority, + redirectUri: request.redirectUri || "" + }, request, logger31); + RequestParameterBuilder_exports2.addLibraryInfo(parameters, { + sku: Constants3.MSAL_SKU, + version: version5, + cpu: process.arch || "", + os: process.platform || "" + }); + if (config2.system.protocolMode !== ProtocolMode2.OIDC) { + RequestParameterBuilder_exports2.addApplicationTelemetry(parameters, config2.telemetry.application); + } + RequestParameterBuilder_exports2.addResponseType(parameters, Constants_exports.OAuthResponseType.CODE); + if (request.codeChallenge && request.codeChallengeMethod) { + RequestParameterBuilder_exports2.addCodeChallengeParams(parameters, request.codeChallenge, request.codeChallengeMethod); + } + RequestParameterBuilder_exports2.addExtraParameters(parameters, request.extraQueryParameters || {}); + return Authorize_exports2.getAuthorizeUrl(authority, parameters); +} +var init_Authorize2 = __esm({ + "node_modules/@azure/identity/node_modules/@azure/msal-node/dist/protocol/Authorize.mjs"() { + "use strict"; + init_index_node(); + init_Constants2(); + init_packageMetadata2(); + } +}); + +// node_modules/@azure/identity/node_modules/@azure/msal-node/dist/client/ClientApplication.mjs +var ClientApplication2; +var init_ClientApplication = __esm({ + "node_modules/@azure/identity/node_modules/@azure/msal-node/dist/client/ClientApplication.mjs"() { + "use strict"; + init_index_node(); + init_Configuration(); + init_CryptoProvider(); + init_NodeStorage(); + init_Constants2(); + init_TokenCache(); + init_ClientAssertion(); + init_packageMetadata2(); + init_NodeAuthError(); + init_UsernamePasswordClient(); + init_Authorize2(); + ClientApplication2 = class { + /** + * Constructor for the ClientApplication + */ + constructor(configuration) { + this.config = buildAppConfiguration2(configuration); + this.cryptoProvider = new CryptoProvider2(); + this.logger = new Logger2(this.config.system.loggerOptions, name4, version5); + this.storage = new NodeStorage2(this.logger, this.config.auth.clientId, this.cryptoProvider, buildStaticAuthorityOptions2(this.config.auth)); + this.tokenCache = new TokenCache2(this.storage, this.logger, this.config.cache.cachePlugin); + } + /** + * Creates the URL of the authorization request, letting the user input credentials and consent to the + * application. The URL targets the /authorize endpoint of the authority configured in the + * application object. + * + * Once the user inputs their credentials and consents, the authority will send a response to the redirect URI + * sent in the request and should contain an authorization code, which can then be used to acquire tokens via + * `acquireTokenByCode(AuthorizationCodeRequest)`. + */ + async getAuthCodeUrl(request) { + this.logger.info("getAuthCodeUrl called", request.correlationId || ""); + const validRequest = { + ...request, + ...await this.initializeBaseRequest(request), + responseMode: request.responseMode || Constants_exports.ResponseMode.QUERY, + authenticationScheme: Constants_exports.AuthenticationScheme.BEARER, + state: request.state || "", + nonce: request.nonce || "" + }; + const discoveredAuthority = await this.createAuthority(validRequest.authority, validRequest.correlationId, void 0, request.azureCloudOptions); + return getAuthCodeRequestUrl2(this.config, discoveredAuthority, validRequest, this.logger); + } + /** + * Acquires a token by exchanging the Authorization Code received from the first step of OAuth2.0 + * Authorization Code flow. + * + * `getAuthCodeUrl(AuthorizationCodeUrlRequest)` can be used to create the URL for the first step of OAuth2.0 + * Authorization Code flow. Ensure that values for redirectUri and scopes in AuthorizationCodeUrlRequest and + * AuthorizationCodeRequest are the same. + */ + async acquireTokenByCode(request, authCodePayLoad) { + this.logger.info("acquireTokenByCode called", request.correlationId || ""); + if (request.state && authCodePayLoad) { + this.logger.info("acquireTokenByCode - validating state", request.correlationId || ""); + this.validateState(request.state, authCodePayLoad.state || ""); + authCodePayLoad = { ...authCodePayLoad, state: "" }; + } + const validRequest = { + ...request, + ...await this.initializeBaseRequest(request), + authenticationScheme: Constants_exports.AuthenticationScheme.BEARER + }; + const serverTelemetryManager = this.initializeServerTelemetryManager(ApiId2.acquireTokenByCode, validRequest.correlationId); + try { + const discoveredAuthority = await this.createAuthority(validRequest.authority, validRequest.correlationId, void 0, request.azureCloudOptions); + const authClientConfig = await this.buildOauthClientConfiguration(discoveredAuthority, validRequest.correlationId, validRequest.redirectUri, serverTelemetryManager); + const authorizationCodeClient = new AuthorizationCodeClient2(authClientConfig, new StubPerformanceClient2()); + this.logger.verbose("Auth code client created", validRequest.correlationId); + return await authorizationCodeClient.acquireToken(validRequest, ApiId2.acquireTokenByCode, authCodePayLoad); + } catch (e) { + if (e instanceof AuthError2) { + e.setCorrelationId(validRequest.correlationId); + } + serverTelemetryManager.cacheFailedRequest(e); + throw e; + } + } + /** + * Acquires a token by exchanging the refresh token provided for a new set of tokens. + * + * This API is provided only for scenarios where you would like to migrate from ADAL to MSAL. Otherwise, it is + * recommended that you use `acquireTokenSilent()` for silent scenarios. When using `acquireTokenSilent()`, MSAL will + * handle the caching and refreshing of tokens automatically. + */ + async acquireTokenByRefreshToken(request) { + this.logger.info("acquireTokenByRefreshToken called", request.correlationId || ""); + const validRequest = { + ...request, + ...await this.initializeBaseRequest(request), + authenticationScheme: Constants_exports.AuthenticationScheme.BEARER + }; + const serverTelemetryManager = this.initializeServerTelemetryManager(ApiId2.acquireTokenByRefreshToken, validRequest.correlationId); + try { + const discoveredAuthority = await this.createAuthority(validRequest.authority, validRequest.correlationId, void 0, request.azureCloudOptions); + const refreshTokenClientConfig = await this.buildOauthClientConfiguration(discoveredAuthority, validRequest.correlationId, validRequest.redirectUri || "", serverTelemetryManager); + const refreshTokenClient = new RefreshTokenClient2(refreshTokenClientConfig, new StubPerformanceClient2()); + this.logger.verbose("Refresh token client created", validRequest.correlationId); + return await refreshTokenClient.acquireToken(validRequest, ApiId2.acquireTokenByRefreshToken); + } catch (e) { + if (e instanceof AuthError2) { + e.setCorrelationId(validRequest.correlationId); + } + serverTelemetryManager.cacheFailedRequest(e); + throw e; + } + } + /** + * Acquires a token silently when a user specifies the account the token is requested for. + * + * This API expects the user to provide an account object and looks into the cache to retrieve the token if present. + * There is also an optional "forceRefresh" boolean the user can send to bypass the cache for access_token and id_token. + * In case the refresh_token is expired or not found, an error is thrown + * and the guidance is for the user to call any interactive token acquisition API (eg: `acquireTokenByCode()`). + */ + async acquireTokenSilent(request) { + const validRequest = { + ...request, + ...await this.initializeBaseRequest(request), + forceRefresh: request.forceRefresh || false + }; + const serverTelemetryManager = this.initializeServerTelemetryManager(ApiId2.acquireTokenSilent, validRequest.correlationId, validRequest.forceRefresh); + try { + const discoveredAuthority = await this.createAuthority(validRequest.authority, validRequest.correlationId, void 0, request.azureCloudOptions); + const clientConfiguration = await this.buildOauthClientConfiguration(discoveredAuthority, validRequest.correlationId, validRequest.redirectUri || "", serverTelemetryManager); + const silentFlowClient = new SilentFlowClient2(clientConfiguration, new StubPerformanceClient2()); + this.logger.verbose("Silent flow client created", validRequest.correlationId); + try { + await this.tokenCache.overwriteCache(); + return await this.acquireCachedTokenSilent(validRequest, silentFlowClient, clientConfiguration); + } catch (error2) { + if (error2 instanceof ClientAuthError2 && error2.errorCode === ClientAuthErrorCodes_exports2.tokenRefreshRequired) { + const refreshTokenClient = new RefreshTokenClient2(clientConfiguration, new StubPerformanceClient2()); + return refreshTokenClient.acquireTokenByRefreshToken(validRequest, ApiId2.acquireTokenSilent); + } + throw error2; + } + } catch (error2) { + if (error2 instanceof AuthError2) { + error2.setCorrelationId(validRequest.correlationId); + } + serverTelemetryManager.cacheFailedRequest(error2); + throw error2; + } + } + async acquireCachedTokenSilent(validRequest, silentFlowClient, clientConfiguration) { + const [authResponse, cacheOutcome] = await silentFlowClient.acquireCachedToken({ + ...validRequest, + scopes: validRequest.scopes?.length ? validRequest.scopes : [...Constants_exports.OIDC_DEFAULT_SCOPES] + }); + if (cacheOutcome === Constants_exports.CacheOutcome.PROACTIVELY_REFRESHED) { + this.logger.info("ClientApplication:acquireCachedTokenSilent - Cached access token's refreshOn property has been exceeded'. It's not expired, but must be refreshed.", validRequest.correlationId); + const refreshTokenClient = new RefreshTokenClient2(clientConfiguration, new StubPerformanceClient2()); + try { + await refreshTokenClient.acquireTokenByRefreshToken(validRequest, ApiId2.acquireTokenSilent); + } catch { + } + } + return authResponse; + } + /** + * Acquires tokens with password grant by exchanging client applications username and password for credentials + * + * The latest OAuth 2.0 Security Best Current Practice disallows the password grant entirely. + * More details on this recommendation at https://tools.ietf.org/html/draft-ietf-oauth-security-topics-13#section-3.4 + * Microsoft's documentation and recommendations are at: + * https://docs.microsoft.com/en-us/azure/active-directory/develop/msal-authentication-flows#usernamepassword + * + * @param request - UsenamePasswordRequest + * @deprecated - Use a more secure flow instead + */ + async acquireTokenByUsernamePassword(request) { + this.logger.info("acquireTokenByUsernamePassword called", request.correlationId || ""); + const validRequest = { + ...request, + ...await this.initializeBaseRequest(request) + }; + const serverTelemetryManager = this.initializeServerTelemetryManager(ApiId2.acquireTokenByUsernamePassword, validRequest.correlationId); + try { + const discoveredAuthority = await this.createAuthority(validRequest.authority, validRequest.correlationId, void 0, request.azureCloudOptions); + const usernamePasswordClientConfig = await this.buildOauthClientConfiguration(discoveredAuthority, validRequest.correlationId, "", serverTelemetryManager); + const usernamePasswordClient = new UsernamePasswordClient2(usernamePasswordClientConfig); + this.logger.verbose("Username password client created", validRequest.correlationId); + return await usernamePasswordClient.acquireToken(validRequest); + } catch (e) { + if (e instanceof AuthError2) { + e.setCorrelationId(validRequest.correlationId); + } + serverTelemetryManager.cacheFailedRequest(e); + throw e; + } + } + /** + * Gets the token cache for the application. + */ + getTokenCache() { + this.logger.info("getTokenCache called", ""); + return this.tokenCache; + } + /** + * Validates OIDC state by comparing the user cached state with the state received from the server. + * + * This API is provided for scenarios where you would use OAuth2.0 state parameter to mitigate against + * CSRF attacks. + * For more information about state, visit https://datatracker.ietf.org/doc/html/rfc6819#section-3.6. + * @param state - Unique GUID generated by the user that is cached by the user and sent to the server during the first leg of the flow + * @param cachedState - This string is sent back by the server with the authorization code + */ + validateState(state3, cachedState) { + if (!state3) { + throw NodeAuthError2.createStateNotFoundError(); + } + if (state3 !== cachedState) { + throw createClientAuthError2(ClientAuthErrorCodes_exports2.stateMismatch); + } + } + /** + * Returns the logger instance + */ + getLogger() { + return this.logger; + } + /** + * Replaces the default logger set in configurations with new Logger with new configurations + * @param logger - Logger instance + */ + setLogger(logger31) { + this.logger = logger31; + } + /** + * Builds the common configuration to be passed to the common component based on the platform configurarion + * @param authority - user passed authority in configuration + * @param serverTelemetryManager - initializes servertelemetry if passed + */ + async buildOauthClientConfiguration(discoveredAuthority, requestCorrelationId, redirectUri, serverTelemetryManager) { + this.logger.verbose("buildOauthClientConfiguration called", requestCorrelationId); + this.logger.info(`Building oauth client configuration with the following authority: ${discoveredAuthority.tokenEndpoint}.`, requestCorrelationId); + serverTelemetryManager?.updateRegionDiscoveryMetadata(discoveredAuthority.regionDiscoveryMetadata); + const clientConfiguration = { + authOptions: { + clientId: this.config.auth.clientId, + authority: discoveredAuthority, + clientCapabilities: this.config.auth.clientCapabilities, + redirectUri, + isMcp: this.config.auth.isMcp + }, + loggerOptions: { + logLevel: this.config.system.loggerOptions.logLevel, + loggerCallback: this.config.system.loggerOptions.loggerCallback, + piiLoggingEnabled: this.config.system.loggerOptions.piiLoggingEnabled, + correlationId: requestCorrelationId + }, + cryptoInterface: this.cryptoProvider, + networkInterface: this.config.system.networkClient, + storageInterface: this.storage, + serverTelemetryManager, + clientCredentials: { + clientSecret: this.clientSecret, + clientAssertion: await this.getClientAssertion(discoveredAuthority) + }, + libraryInfo: { + sku: Constants3.MSAL_SKU, + version: version5, + cpu: process.arch || "", + os: process.platform || "" + }, + telemetry: this.config.telemetry, + persistencePlugin: this.config.cache.cachePlugin, + serializableCache: this.tokenCache + }; + return clientConfiguration; + } + async getClientAssertion(authority) { + if (this.developerProvidedClientAssertion) { + this.clientAssertion = ClientAssertion2.fromAssertion(await getClientAssertion2(this.developerProvidedClientAssertion, this.config.auth.clientId, authority.tokenEndpoint)); + } + return this.clientAssertion && { + assertion: this.clientAssertion.getJwt(this.cryptoProvider, this.config.auth.clientId, authority.tokenEndpoint), + assertionType: Constants3.JWT_BEARER_ASSERTION_TYPE + }; + } + /** + * Generates a request with the default scopes & generates a correlationId. + * @param authRequest - BaseAuthRequest for initialization + */ + async initializeBaseRequest(authRequest) { + const correlationId = authRequest.correlationId || this.cryptoProvider.createNewGuid(); + this.logger.verbose("initializeRequestScopes called", correlationId); + if (authRequest.authenticationScheme && authRequest.authenticationScheme === Constants_exports.AuthenticationScheme.POP) { + this.logger.verbose("Authentication Scheme 'pop' is not supported yet, setting Authentication Scheme to 'Bearer' for request", correlationId); + } + authRequest.authenticationScheme = Constants_exports.AuthenticationScheme.BEARER; + return { + ...authRequest, + scopes: [ + ...authRequest && authRequest.scopes || [], + ...Constants_exports.OIDC_DEFAULT_SCOPES + ], + correlationId, + authority: authRequest.authority || this.config.auth.authority + }; + } + /** + * Initializes the server telemetry payload + * @param apiId - Id for a specific request + * @param correlationId - GUID + * @param forceRefresh - boolean to indicate network call + */ + initializeServerTelemetryManager(apiId, correlationId, forceRefresh) { + const telemetryPayload = { + clientId: this.config.auth.clientId, + correlationId, + apiId, + forceRefresh: forceRefresh || false + }; + return new ServerTelemetryManager2(telemetryPayload, this.storage); + } + /** + * Create authority instance. If authority not passed in request, default to authority set on the application + * object. If no authority set in application object, then default to common authority. + * @param authorityString - authority from user configuration + */ + async createAuthority(authorityString, requestCorrelationId, azureRegionConfiguration, azureCloudOptions) { + this.logger.verbose("createAuthority called", requestCorrelationId); + const authorityUrl = Authority2.generateAuthority(authorityString, azureCloudOptions || this.config.auth.azureCloudOptions); + const authorityOptions = { + protocolMode: this.config.system.protocolMode, + knownAuthorities: this.config.auth.knownAuthorities, + cloudDiscoveryMetadata: this.config.auth.cloudDiscoveryMetadata, + authorityMetadata: this.config.auth.authorityMetadata, + azureRegionConfiguration + }; + return AuthorityFactory_exports2.createDiscoveredInstance(authorityUrl, this.config.system.networkClient, this.storage, authorityOptions, this.logger, requestCorrelationId, new StubPerformanceClient2()); + } + /** + * Clear the cache + */ + clearCache() { + this.storage.clear(); + } + }; + } +}); + +// node_modules/@azure/identity/node_modules/@azure/msal-node/dist/network/LoopbackClient.mjs +var import_http3, LoopbackClient2; +var init_LoopbackClient = __esm({ + "node_modules/@azure/identity/node_modules/@azure/msal-node/dist/network/LoopbackClient.mjs"() { + "use strict"; + init_index_node(); + import_http3 = __toESM(require("http"), 1); + init_NodeAuthError(); + init_Constants2(); + LoopbackClient2 = class { + /** + * Spins up a loopback server which returns the server response when the localhost redirectUri is hit + * @param successTemplate + * @param errorTemplate + * @returns + */ + async listenForAuthCode(successTemplate, errorTemplate) { + if (this.server) { + throw NodeAuthError2.createLoopbackServerAlreadyExistsError(); + } + return new Promise((resolve, reject) => { + this.server = import_http3.default.createServer((req, res) => { + const url2 = req.url; + if (!url2) { + res.end(errorTemplate || "Error occurred loading redirectUrl"); + reject(NodeAuthError2.createUnableToLoadRedirectUrlError()); + return; + } else if (url2 === Constants_exports.FORWARD_SLASH) { + res.end(successTemplate || "Auth code was successfully acquired. You can close this window now."); + return; + } + const redirectUri = this.getRedirectUri(); + const parsedUrl = new URL(url2, redirectUri); + const authCodeResponse = UrlUtils_exports2.getDeserializedResponse(parsedUrl.search) || {}; + if (authCodeResponse.code) { + res.writeHead(Constants_exports.HTTP_REDIRECT, { + location: redirectUri + }); + res.end(); + } + if (authCodeResponse.error) { + res.end(errorTemplate || `Error occurred: ${authCodeResponse.error}`); + } + resolve(authCodeResponse); + }); + this.server.listen(0, "127.0.0.1"); + }); + } + /** + * Get the port that the loopback server is running on + * @returns + */ + getRedirectUri() { + if (!this.server || !this.server.listening) { + throw NodeAuthError2.createNoLoopbackServerExistsError(); + } + const address = this.server.address(); + if (!address || typeof address === "string" || !address.port) { + this.closeServer(); + throw NodeAuthError2.createInvalidLoopbackAddressTypeError(); + } + const port = address && address.port; + return `${Constants3.HTTP_PROTOCOL}${Constants3.LOCALHOST}:${port}`; + } + /** + * Close the loopback server + */ + closeServer() { + if (this.server) { + this.server.close(); + if (typeof this.server.closeAllConnections === "function") { + this.server.closeAllConnections(); + } + this.server.unref(); + this.server = void 0; + } + } + }; + } +}); + +// node_modules/@azure/identity/node_modules/@azure/msal-node/dist/client/DeviceCodeClient.mjs +var DeviceCodeClient2; +var init_DeviceCodeClient = __esm({ + "node_modules/@azure/identity/node_modules/@azure/msal-node/dist/client/DeviceCodeClient.mjs"() { + "use strict"; + init_index_node(); + init_Constants2(); + init_ClientAuthErrorCodes2(); + init_BaseClient(); + DeviceCodeClient2 = class extends BaseClient2 { + constructor(configuration) { + super(configuration); + } + /** + * Gets device code from device code endpoint, calls back to with device code response, and + * polls token endpoint to exchange device code for tokens + * @param request - developer provided CommonDeviceCodeRequest + */ + async acquireToken(request) { + const deviceCodeResponse = await this.getDeviceCode(request); + request.deviceCodeCallback(deviceCodeResponse); + const reqTimestamp = TimeUtils_exports2.nowSeconds(); + const response = await this.acquireTokenWithDeviceCode(request, deviceCodeResponse); + const responseHandler = new ResponseHandler2(this.config.authOptions.clientId, this.cacheManager, this.cryptoUtils, this.logger, this.performanceClient, this.config.serializableCache, this.config.persistencePlugin); + responseHandler.validateTokenResponse(response, request.correlationId); + return responseHandler.handleServerTokenResponse(response, this.authority, reqTimestamp, request, ApiId2.acquireTokenByDeviceCode); + } + /** + * Creates device code request and executes http GET + * @param request - developer provided CommonDeviceCodeRequest + */ + async getDeviceCode(request) { + const queryParametersString = this.createExtraQueryParameters(request); + const endpoint = UrlString2.appendQueryString(this.authority.deviceCodeEndpoint, queryParametersString); + const queryString = this.createQueryString(request); + const headers = this.createTokenRequestHeaders(); + const thumbprint = { + clientId: this.config.authOptions.clientId, + authority: request.authority, + scopes: request.scopes, + claims: request.claims, + authenticationScheme: request.authenticationScheme, + resourceRequestMethod: request.resourceRequestMethod, + resourceRequestUri: request.resourceRequestUri, + shrClaims: request.shrClaims, + sshKid: request.sshKid + }; + return this.executePostRequestToDeviceCodeEndpoint(endpoint, queryString, headers, thumbprint, request.correlationId); + } + /** + * Creates query string for the device code request + * @param request - developer provided CommonDeviceCodeRequest + */ + createExtraQueryParameters(request) { + const parameters = /* @__PURE__ */ new Map(); + if (request.extraQueryParameters) { + RequestParameterBuilder_exports2.addExtraParameters(parameters, request.extraQueryParameters); + } + return UrlUtils_exports2.mapToQueryString(parameters); + } + /** + * Executes POST request to device code endpoint + * @param deviceCodeEndpoint - token endpoint + * @param queryString - string to be used in the body of the request + * @param headers - headers for the request + * @param thumbprint - unique request thumbprint + * @param correlationId - correlation id to be used in the request + */ + async executePostRequestToDeviceCodeEndpoint(deviceCodeEndpoint, queryString, headers, thumbprint, correlationId) { + const { body: { user_code: userCode, device_code: deviceCode, verification_uri: verificationUri, expires_in: expiresIn, interval, message } } = await this.sendPostRequest(thumbprint, deviceCodeEndpoint, { + body: queryString, + headers + }, correlationId); + return { + userCode, + deviceCode, + verificationUri, + expiresIn, + interval, + message + }; + } + /** + * Create device code endpoint query parameters and returns string + * @param request - developer provided CommonDeviceCodeRequest + */ + createQueryString(request) { + const parameters = /* @__PURE__ */ new Map(); + RequestParameterBuilder_exports2.addScopes(parameters, request.scopes); + RequestParameterBuilder_exports2.addClientId(parameters, this.config.authOptions.clientId); + if (request.extraQueryParameters) { + RequestParameterBuilder_exports2.addExtraParameters(parameters, request.extraQueryParameters); + } + if (request.claims || this.config.authOptions.clientCapabilities && this.config.authOptions.clientCapabilities.length > 0) { + RequestParameterBuilder_exports2.addClaims(parameters, request.claims, this.config.authOptions.clientCapabilities); + } + return UrlUtils_exports2.mapToQueryString(parameters); + } + /** + * Breaks the polling with specific conditions + * @param deviceCodeExpirationTime - expiration time for the device code request + * @param userSpecifiedTimeout - developer provided timeout, to be compared against deviceCodeExpirationTime + * @param userSpecifiedCancelFlag - boolean indicating the developer would like to cancel the request + */ + continuePolling(deviceCodeExpirationTime, userSpecifiedTimeout, userSpecifiedCancelFlag) { + if (userSpecifiedCancelFlag) { + this.logger.error("Token request cancelled by setting DeviceCodeRequest.cancel = true", ""); + throw createClientAuthError2(deviceCodePollingCancelled2); + } else if (userSpecifiedTimeout && userSpecifiedTimeout < deviceCodeExpirationTime && TimeUtils_exports2.nowSeconds() > userSpecifiedTimeout) { + this.logger.error(`User defined timeout for device code polling reached. The timeout was set for ${userSpecifiedTimeout}`, ""); + throw createClientAuthError2(userTimeoutReached2); + } else if (TimeUtils_exports2.nowSeconds() > deviceCodeExpirationTime) { + if (userSpecifiedTimeout) { + this.logger.verbose(`User specified timeout ignored as the device code has expired before the timeout elapsed. The user specified timeout was set for ${userSpecifiedTimeout}`, ""); + } + this.logger.error(`Device code expired. Expiration time of device code was ${deviceCodeExpirationTime}`, ""); + throw createClientAuthError2(deviceCodeExpired2); + } + return true; + } + /** + * Creates token request with device code response and polls token endpoint at interval set by the device code response + * @param request - developer provided CommonDeviceCodeRequest + * @param deviceCodeResponse - DeviceCodeResponse returned by the security token service device code endpoint + */ + async acquireTokenWithDeviceCode(request, deviceCodeResponse) { + const queryParametersString = this.createTokenQueryParameters(request); + const endpoint = UrlString2.appendQueryString(this.authority.tokenEndpoint, queryParametersString); + const requestBody = this.createTokenRequestBody(request, deviceCodeResponse); + const headers = this.createTokenRequestHeaders(); + const userSpecifiedTimeout = request.timeout ? TimeUtils_exports2.nowSeconds() + request.timeout : void 0; + const deviceCodeExpirationTime = TimeUtils_exports2.nowSeconds() + deviceCodeResponse.expiresIn; + const pollingIntervalMilli = deviceCodeResponse.interval * 1e3; + while (this.continuePolling(deviceCodeExpirationTime, userSpecifiedTimeout, request.cancel)) { + const thumbprint = { + clientId: this.config.authOptions.clientId, + authority: request.authority, + scopes: request.scopes, + claims: request.claims, + authenticationScheme: request.authenticationScheme, + resourceRequestMethod: request.resourceRequestMethod, + resourceRequestUri: request.resourceRequestUri, + shrClaims: request.shrClaims, + sshKid: request.sshKid + }; + const response = await this.executePostToTokenEndpoint(endpoint, requestBody, headers, thumbprint, request.correlationId); + if (response.body && response.body.error) { + if (response.body.error === Constants_exports.AUTHORIZATION_PENDING) { + this.logger.info("Authorization pending. Continue polling.", request.correlationId); + await TimeUtils_exports2.delay(pollingIntervalMilli); + } else { + this.logger.info("Unexpected error in polling from the server", request.correlationId); + throw createAuthError2(AuthErrorCodes_exports2.postRequestFailed, response.body.error); + } + } else { + this.logger.verbose("Authorization completed successfully. Polling stopped.", request.correlationId); + return response.body; + } + } + this.logger.error("Polling stopped for unknown reasons.", request.correlationId); + throw createClientAuthError2(deviceCodeUnknownError2); + } + /** + * Creates query parameters and converts to string. + * @param request - developer provided CommonDeviceCodeRequest + * @param deviceCodeResponse - DeviceCodeResponse returned by the security token service device code endpoint + */ + createTokenRequestBody(request, deviceCodeResponse) { + const parameters = /* @__PURE__ */ new Map(); + RequestParameterBuilder_exports2.addScopes(parameters, request.scopes); + RequestParameterBuilder_exports2.addClientId(parameters, this.config.authOptions.clientId); + RequestParameterBuilder_exports2.addGrantType(parameters, Constants_exports.GrantType.DEVICE_CODE_GRANT); + RequestParameterBuilder_exports2.addDeviceCode(parameters, deviceCodeResponse.deviceCode); + const correlationId = request.correlationId || this.config.cryptoInterface.createNewGuid(); + RequestParameterBuilder_exports2.addCorrelationId(parameters, correlationId); + RequestParameterBuilder_exports2.addClientInfo(parameters); + RequestParameterBuilder_exports2.addLibraryInfo(parameters, this.config.libraryInfo); + RequestParameterBuilder_exports2.addApplicationTelemetry(parameters, this.config.telemetry.application); + RequestParameterBuilder_exports2.addThrottling(parameters); + if (this.serverTelemetryManager) { + RequestParameterBuilder_exports2.addServerTelemetry(parameters, this.serverTelemetryManager); + } + if (!StringUtils2.isEmptyObj(request.claims) || this.config.authOptions.clientCapabilities && this.config.authOptions.clientCapabilities.length > 0) { + RequestParameterBuilder_exports2.addClaims(parameters, request.claims, this.config.authOptions.clientCapabilities); + } + return UrlUtils_exports2.mapToQueryString(parameters); + } + }; + } +}); + +// node_modules/@azure/identity/node_modules/@azure/msal-node/dist/client/PublicClientApplication.mjs +var PublicClientApplication2; +var init_PublicClientApplication = __esm({ + "node_modules/@azure/identity/node_modules/@azure/msal-node/dist/client/PublicClientApplication.mjs"() { + "use strict"; + init_Constants2(); + init_index_node(); + init_ClientApplication(); + init_NodeAuthError(); + init_LoopbackClient(); + init_DeviceCodeClient(); + init_packageMetadata2(); + PublicClientApplication2 = class extends ClientApplication2 { + /** + * Important attributes in the Configuration object for auth are: + * - clientID: the application ID of your application. You can obtain one by registering your application with our Application registration portal. + * - authority: the authority URL for your application. + * + * AAD authorities are of the form https://login.microsoftonline.com/\{Enter_the_Tenant_Info_Here\}. + * - If your application supports Accounts in one organizational directory, replace "Enter_the_Tenant_Info_Here" value with the Tenant Id or Tenant name (for example, contoso.microsoft.com). + * - If your application supports Accounts in any organizational directory, replace "Enter_the_Tenant_Info_Here" value with organizations. + * - If your application supports Accounts in any organizational directory and personal Microsoft accounts, replace "Enter_the_Tenant_Info_Here" value with common. + * - To restrict support to Personal Microsoft accounts only, replace "Enter_the_Tenant_Info_Here" value with consumers. + * + * Azure B2C authorities are of the form https://\{instance\}/\{tenant\}/\{policy\}. Each policy is considered + * its own authority. You will have to set the all of the knownAuthorities at the time of the client application + * construction. + * + * ADFS authorities are of the form https://\{instance\}/adfs. + */ + constructor(configuration) { + super(configuration); + if (this.config.broker.nativeBrokerPlugin) { + if (this.config.broker.nativeBrokerPlugin.isBrokerAvailable) { + this.nativeBrokerPlugin = this.config.broker.nativeBrokerPlugin; + this.nativeBrokerPlugin.setLogger(this.config.system.loggerOptions); + } else { + this.logger.warning("NativeBroker implementation was provided but the broker is unavailable.", ""); + } + } + this.skus = ServerTelemetryManager2.makeExtraSkuString({ + libraryName: Constants3.MSAL_SKU, + libraryVersion: version5 + }); + } + /** + * Acquires a token from the authority using OAuth2.0 device code flow. + * This flow is designed for devices that do not have access to a browser or have input constraints. + * The authorization server issues a DeviceCode object with a verification code, an end-user code, + * and the end-user verification URI. The DeviceCode object is provided through a callback, and the end-user should be + * instructed to use another device to navigate to the verification URI to input credentials. + * Since the client cannot receive incoming requests, it polls the authorization server repeatedly + * until the end-user completes input of credentials. + */ + async acquireTokenByDeviceCode(request) { + this.logger.info("acquireTokenByDeviceCode called", request.correlationId || ""); + enforceResourceParameter(this.config.auth.isMcp, request); + const validRequest = Object.assign(request, await this.initializeBaseRequest(request)); + const serverTelemetryManager = this.initializeServerTelemetryManager(ApiId2.acquireTokenByDeviceCode, validRequest.correlationId); + try { + const discoveredAuthority = await this.createAuthority(validRequest.authority, validRequest.correlationId, void 0, request.azureCloudOptions); + const deviceCodeConfig = await this.buildOauthClientConfiguration(discoveredAuthority, validRequest.correlationId, "", serverTelemetryManager); + const deviceCodeClient = new DeviceCodeClient2(deviceCodeConfig); + this.logger.verbose("Device code client created", validRequest.correlationId); + return await deviceCodeClient.acquireToken(validRequest); + } catch (e) { + if (e instanceof AuthError2) { + e.setCorrelationId(validRequest.correlationId); + } + serverTelemetryManager.cacheFailedRequest(e); + throw e; + } + } + /** + * Acquires a token interactively via the browser by requesting an authorization code then exchanging it for a token. + */ + async acquireTokenInteractive(request) { + const correlationId = request.correlationId || this.cryptoProvider.createNewGuid(); + this.logger.trace("acquireTokenInteractive called", correlationId); + enforceResourceParameter(this.config.auth.isMcp, request); + const { openBrowser, successTemplate, errorTemplate, windowHandle, loopbackClient: customLoopbackClient, ...remainingProperties } = request; + if (this.nativeBrokerPlugin) { + const brokerRequest = { + ...remainingProperties, + clientId: this.config.auth.clientId, + scopes: request.scopes || Constants_exports.OIDC_DEFAULT_SCOPES, + redirectUri: request.redirectUri || "", + authority: request.authority || this.config.auth.authority, + correlationId, + extraParameters: { + ...remainingProperties.extraQueryParameters, + ...remainingProperties.extraParameters, + [AADServerParamKeys_exports2.X_CLIENT_EXTRA_SKU]: this.skus + }, + accountId: remainingProperties.account?.nativeAccountId + }; + return this.nativeBrokerPlugin.acquireTokenInteractive(brokerRequest, windowHandle); + } + if (request.redirectUri) { + if (!this.config.broker.nativeBrokerPlugin) { + throw NodeAuthError2.createRedirectUriNotSupportedError(); + } + request.redirectUri = ""; + } + const { verifier, challenge } = await this.cryptoProvider.generatePkceCodes(); + const loopbackClient = customLoopbackClient || new LoopbackClient2(); + let authCodeResponse = {}; + let authCodeListenerError = null; + try { + const authCodeListener = loopbackClient.listenForAuthCode(successTemplate, errorTemplate).then((response) => { + authCodeResponse = response; + }).catch((e) => { + authCodeListenerError = e; + }); + const redirectUri = await this.waitForRedirectUri(loopbackClient); + const validRequest = { + ...remainingProperties, + correlationId, + scopes: request.scopes || Constants_exports.OIDC_DEFAULT_SCOPES, + redirectUri, + responseMode: Constants_exports.ResponseMode.QUERY, + codeChallenge: challenge, + codeChallengeMethod: Constants_exports.CodeChallengeMethodValues.S256 + }; + const authCodeUrl = await this.getAuthCodeUrl(validRequest); + await openBrowser(authCodeUrl); + await authCodeListener; + if (authCodeListenerError) { + throw authCodeListenerError; + } + if (authCodeResponse.error) { + throw new ServerError2(authCodeResponse.error, authCodeResponse.error_description, authCodeResponse.suberror); + } else if (!authCodeResponse.code) { + throw NodeAuthError2.createNoAuthCodeInResponseError(); + } + const clientInfo = authCodeResponse.client_info; + const tokenRequest = { + code: authCodeResponse.code, + codeVerifier: verifier, + clientInfo: clientInfo || "", + ...validRequest + }; + return await this.acquireTokenByCode(tokenRequest); + } finally { + loopbackClient.closeServer(); + } + } + /** + * Returns a token retrieved either from the cache or by exchanging the refresh token for a fresh access token. If brokering is enabled the token request will be serviced by the broker. + * @param request - developer provided SilentFlowRequest + * @returns + */ + async acquireTokenSilent(request) { + const correlationId = request.correlationId || this.cryptoProvider.createNewGuid(); + this.logger.trace("acquireTokenSilent called", correlationId); + enforceResourceParameter(this.config.auth.isMcp, request); + if (this.nativeBrokerPlugin) { + const brokerRequest = { + ...request, + clientId: this.config.auth.clientId, + scopes: request.scopes || Constants_exports.OIDC_DEFAULT_SCOPES, + redirectUri: request.redirectUri || "", + authority: request.authority || this.config.auth.authority, + correlationId, + extraParameters: { + ...request.extraQueryParameters, + ...request.extraParameters, + [AADServerParamKeys_exports2.X_CLIENT_EXTRA_SKU]: this.skus + }, + accountId: request.account.nativeAccountId, + forceRefresh: request.forceRefresh || false + }; + return this.nativeBrokerPlugin.acquireTokenSilent(brokerRequest); + } + if (request.redirectUri) { + if (!this.config.broker.nativeBrokerPlugin) { + throw NodeAuthError2.createRedirectUriNotSupportedError(); + } + request.redirectUri = ""; + } + return super.acquireTokenSilent(request); + } + /** + * Acquires a token by exchanging the authorization code received from the first step of OAuth 2.0 Authorization Code Flow. + * In MCP mode, a resource parameter is required on the request. + */ + async acquireTokenByCode(request, authCodePayLoad) { + enforceResourceParameter(this.config.auth.isMcp, request); + return super.acquireTokenByCode(request, authCodePayLoad); + } + /** + * Acquires a token by exchanging the refresh token provided for a new set of tokens. + * In MCP mode, a resource parameter is required on the request. + */ + async acquireTokenByRefreshToken(request) { + enforceResourceParameter(this.config.auth.isMcp, request); + return super.acquireTokenByRefreshToken(request); + } + /** + * Removes cache artifacts associated with the given account + * @param request - developer provided SignOutRequest + * @returns + */ + async signOut(request) { + if (this.nativeBrokerPlugin && request.account.nativeAccountId) { + const signoutRequest = { + clientId: this.config.auth.clientId, + accountId: request.account.nativeAccountId, + correlationId: request.correlationId || this.cryptoProvider.createNewGuid() + }; + await this.nativeBrokerPlugin.signOut(signoutRequest); + } + await this.getTokenCache().removeAccount(request.account, request.correlationId); + } + /** + * Returns all cached accounts for this application. If brokering is enabled this request will be serviced by the broker. + * @returns + */ + async getAllAccounts() { + if (this.nativeBrokerPlugin) { + const correlationId = this.cryptoProvider.createNewGuid(); + return this.nativeBrokerPlugin.getAllAccounts(this.config.auth.clientId, correlationId); + } + return this.getTokenCache().getAllAccounts(); + } + /** + * Attempts to retrieve the redirectUri from the loopback server. If the loopback server does not start listening for requests within the timeout this will throw. + * @param loopbackClient - developer provided custom loopback server implementation + * @returns + */ + async waitForRedirectUri(loopbackClient) { + return new Promise((resolve, reject) => { + let ticks = 0; + const id = setInterval(() => { + if (LOOPBACK_SERVER_CONSTANTS2.TIMEOUT_MS / LOOPBACK_SERVER_CONSTANTS2.INTERVAL_MS < ticks) { + clearInterval(id); + reject(NodeAuthError2.createLoopbackServerTimeoutError()); + return; + } + try { + const r = loopbackClient.getRedirectUri(); + clearInterval(id); + resolve(r); + return; + } catch (e) { + if (e instanceof AuthError2 && e.errorCode === NodeAuthErrorMessage2.noLoopbackServerExists.code) { + ticks++; + return; + } + clearInterval(id); + reject(e); + return; + } + }, LOOPBACK_SERVER_CONSTANTS2.INTERVAL_MS); + }); + } + }; + } +}); + +// node_modules/@azure/identity/node_modules/@azure/msal-node/dist/client/ClientCredentialClient.mjs +var ClientCredentialClient2; +var init_ClientCredentialClient = __esm({ + "node_modules/@azure/identity/node_modules/@azure/msal-node/dist/client/ClientCredentialClient.mjs"() { + "use strict"; + init_index_node(); + init_Constants2(); + init_BaseClient(); + ClientCredentialClient2 = class extends BaseClient2 { + constructor(configuration, appTokenProvider) { + super(configuration); + this.appTokenProvider = appTokenProvider; + } + /** + * Public API to acquire a token with ClientCredential Flow for Confidential clients + * @param request - CommonClientCredentialRequest provided by the developer + */ + async acquireToken(request) { + if (request.skipCache || request.claims) { + return this.executeTokenRequest(request, this.authority); + } + const [cachedAuthenticationResult, lastCacheOutcome] = await this.getCachedAuthenticationResult(request, this.config, this.cryptoUtils, this.authority, this.cacheManager, this.serverTelemetryManager); + if (cachedAuthenticationResult) { + if (lastCacheOutcome === Constants_exports.CacheOutcome.PROACTIVELY_REFRESHED) { + this.logger.info("ClientCredentialClient:getCachedAuthenticationResult - Cached access token's refreshOn property has been exceeded'. It's not expired, but must be refreshed.", request.correlationId); + const refreshAccessToken2 = true; + await this.executeTokenRequest(request, this.authority, refreshAccessToken2); + } + return cachedAuthenticationResult; + } else { + return this.executeTokenRequest(request, this.authority); + } + } + /** + * looks up cache if the tokens are cached already + */ + async getCachedAuthenticationResult(request, config2, cryptoUtils, authority, cacheManager, serverTelemetryManager) { + const clientConfiguration = config2; + const managedIdentityConfiguration = config2; + let lastCacheOutcome = Constants_exports.CacheOutcome.NOT_APPLICABLE; + let cacheContext; + if (clientConfiguration.serializableCache && clientConfiguration.persistencePlugin) { + cacheContext = new TokenCacheContext2(clientConfiguration.serializableCache, false); + await clientConfiguration.persistencePlugin.beforeCacheAccess(cacheContext); + } + const cachedAccessToken = this.readAccessTokenFromCache(authority, managedIdentityConfiguration.managedIdentityId?.id || clientConfiguration.authOptions.clientId, new ScopeSet2(request.scopes || []), cacheManager, request.correlationId); + if (clientConfiguration.serializableCache && clientConfiguration.persistencePlugin && cacheContext) { + await clientConfiguration.persistencePlugin.afterCacheAccess(cacheContext); + } + if (!cachedAccessToken) { + serverTelemetryManager?.setCacheOutcome(Constants_exports.CacheOutcome.NO_CACHED_ACCESS_TOKEN); + return [null, Constants_exports.CacheOutcome.NO_CACHED_ACCESS_TOKEN]; + } + if (TimeUtils_exports2.isTokenExpired(cachedAccessToken.expiresOn, clientConfiguration.systemOptions?.tokenRenewalOffsetSeconds || Constants_exports.DEFAULT_TOKEN_RENEWAL_OFFSET_SEC)) { + serverTelemetryManager?.setCacheOutcome(Constants_exports.CacheOutcome.CACHED_ACCESS_TOKEN_EXPIRED); + return [null, Constants_exports.CacheOutcome.CACHED_ACCESS_TOKEN_EXPIRED]; + } + if (cachedAccessToken.refreshOn && TimeUtils_exports2.isTokenExpired(cachedAccessToken.refreshOn.toString(), 0)) { + lastCacheOutcome = Constants_exports.CacheOutcome.PROACTIVELY_REFRESHED; + serverTelemetryManager?.setCacheOutcome(Constants_exports.CacheOutcome.PROACTIVELY_REFRESHED); + } + return [ + await ResponseHandler2.generateAuthenticationResult(cryptoUtils, authority, { + account: null, + idToken: null, + accessToken: cachedAccessToken, + refreshToken: null, + appMetadata: null + }, true, request, this.performanceClient), + lastCacheOutcome + ]; + } + /** + * Reads access token from the cache + */ + readAccessTokenFromCache(authority, id, scopeSet, cacheManager, correlationId) { + const accessTokenFilter = { + homeAccountId: "", + environment: authority.canonicalAuthorityUrlComponents.HostNameAndPort, + credentialType: Constants_exports.CredentialType.ACCESS_TOKEN, + clientId: id, + realm: authority.tenant, + target: ScopeSet2.createSearchScopes(scopeSet.asArray()) + }; + const accessTokens = cacheManager.getAccessTokensByFilter(accessTokenFilter, correlationId); + if (accessTokens.length < 1) { + return null; + } else if (accessTokens.length > 1) { + throw createClientAuthError2(ClientAuthErrorCodes_exports2.multipleMatchingTokens); + } + return accessTokens[0]; + } + /** + * Makes a network call to request the token from the service + * @param request - CommonClientCredentialRequest provided by the developer + * @param authority - authority object + */ + async executeTokenRequest(request, authority, refreshAccessToken2) { + let serverTokenResponse; + let reqTimestamp; + if (this.appTokenProvider) { + this.logger.info("Using appTokenProvider extensibility.", request.correlationId); + const appTokenPropviderParameters = { + correlationId: request.correlationId, + tenantId: this.config.authOptions.authority.tenant, + scopes: request.scopes, + claims: request.claims + }; + reqTimestamp = TimeUtils_exports2.nowSeconds(); + const appTokenProviderResult = await this.appTokenProvider(appTokenPropviderParameters); + serverTokenResponse = { + access_token: appTokenProviderResult.accessToken, + expires_in: appTokenProviderResult.expiresInSeconds, + refresh_in: appTokenProviderResult.refreshInSeconds, + token_type: Constants_exports.AuthenticationScheme.BEARER + }; + } else { + const queryParametersString = this.createTokenQueryParameters(request); + const endpoint = UrlString2.appendQueryString(authority.tokenEndpoint, queryParametersString); + const requestBody = await this.createTokenRequestBody(request); + const headers = this.createTokenRequestHeaders(); + const thumbprint = { + clientId: this.config.authOptions.clientId, + authority: request.authority, + scopes: request.scopes, + claims: request.claims, + authenticationScheme: request.authenticationScheme, + resourceRequestMethod: request.resourceRequestMethod, + resourceRequestUri: request.resourceRequestUri, + shrClaims: request.shrClaims, + sshKid: request.sshKid + }; + this.logger.info("Sending token request to endpoint: " + authority.tokenEndpoint, request.correlationId); + reqTimestamp = TimeUtils_exports2.nowSeconds(); + const response = await this.executePostToTokenEndpoint(endpoint, requestBody, headers, thumbprint, request.correlationId); + serverTokenResponse = response.body; + serverTokenResponse.status = response.status; + } + const responseHandler = new ResponseHandler2(this.config.authOptions.clientId, this.cacheManager, this.cryptoUtils, this.logger, this.performanceClient, this.config.serializableCache, this.config.persistencePlugin); + responseHandler.validateTokenResponse(serverTokenResponse, request.correlationId, refreshAccessToken2); + const tokenResponse = await responseHandler.handleServerTokenResponse(serverTokenResponse, this.authority, reqTimestamp, request, ApiId2.acquireTokenByClientCredential); + return tokenResponse; + } + /** + * generate the request to the server in the acceptable format + * @param request - CommonClientCredentialRequest provided by the developer + */ + async createTokenRequestBody(request) { + const parameters = /* @__PURE__ */ new Map(); + RequestParameterBuilder_exports2.addClientId(parameters, this.config.authOptions.clientId); + RequestParameterBuilder_exports2.addScopes(parameters, request.scopes, false); + RequestParameterBuilder_exports2.addGrantType(parameters, Constants_exports.GrantType.CLIENT_CREDENTIALS_GRANT); + RequestParameterBuilder_exports2.addLibraryInfo(parameters, this.config.libraryInfo); + RequestParameterBuilder_exports2.addApplicationTelemetry(parameters, this.config.telemetry.application); + RequestParameterBuilder_exports2.addThrottling(parameters); + if (this.serverTelemetryManager) { + RequestParameterBuilder_exports2.addServerTelemetry(parameters, this.serverTelemetryManager); + } + const correlationId = request.correlationId || this.config.cryptoInterface.createNewGuid(); + RequestParameterBuilder_exports2.addCorrelationId(parameters, correlationId); + if (this.config.clientCredentials.clientSecret) { + RequestParameterBuilder_exports2.addClientSecret(parameters, this.config.clientCredentials.clientSecret); + } + const clientAssertion = request.clientAssertion || this.config.clientCredentials.clientAssertion; + if (clientAssertion) { + RequestParameterBuilder_exports2.addClientAssertion(parameters, await getClientAssertion2(clientAssertion.assertion, this.config.authOptions.clientId, request.resourceRequestUri)); + RequestParameterBuilder_exports2.addClientAssertionType(parameters, clientAssertion.assertionType); + } + if (!StringUtils2.isEmptyObj(request.claims) || this.config.authOptions.clientCapabilities && this.config.authOptions.clientCapabilities.length > 0) { + RequestParameterBuilder_exports2.addClaims(parameters, request.claims, this.config.authOptions.clientCapabilities); + } + return UrlUtils_exports2.mapToQueryString(parameters); + } + }; + } +}); + +// node_modules/@azure/identity/node_modules/@azure/msal-node/dist/client/OnBehalfOfClient.mjs +var OnBehalfOfClient2; +var init_OnBehalfOfClient = __esm({ + "node_modules/@azure/identity/node_modules/@azure/msal-node/dist/client/OnBehalfOfClient.mjs"() { + "use strict"; + init_index_node(); + init_Constants2(); + init_EncodingUtils(); + init_BaseClient(); + OnBehalfOfClient2 = class extends BaseClient2 { + constructor(configuration) { + super(configuration); + } + /** + * Public API to acquire tokens with on behalf of flow + * @param request - developer provided CommonOnBehalfOfRequest + */ + async acquireToken(request) { + this.scopeSet = new ScopeSet2(request.scopes || []); + this.userAssertionHash = await this.cryptoUtils.hashString(request.oboAssertion); + if (request.skipCache || request.claims) { + return this.executeTokenRequest(request, this.authority, this.userAssertionHash); + } + try { + return await this.getCachedAuthenticationResult(request); + } catch (e) { + return await this.executeTokenRequest(request, this.authority, this.userAssertionHash); + } + } + /** + * look up cache for tokens + * Find idtoken in the cache + * Find accessToken based on user assertion and account info in the cache + * Please note we are not yet supported OBO tokens refreshed with long lived RT. User will have to send a new assertion if the current access token expires + * This is to prevent security issues when the assertion changes over time, however, longlived RT helps retaining the session + * @param request - developer provided CommonOnBehalfOfRequest + */ + async getCachedAuthenticationResult(request) { + const cachedAccessToken = this.readAccessTokenFromCacheForOBO(this.config.authOptions.clientId, request); + if (!cachedAccessToken) { + this.serverTelemetryManager?.setCacheOutcome(Constants_exports.CacheOutcome.NO_CACHED_ACCESS_TOKEN); + this.logger.info("SilentFlowClient:acquireCachedToken - No access token found in cache for the given properties.", request.correlationId); + throw createClientAuthError2(ClientAuthErrorCodes_exports2.tokenRefreshRequired); + } else if (TimeUtils_exports2.isTokenExpired(cachedAccessToken.expiresOn, this.config.systemOptions.tokenRenewalOffsetSeconds)) { + this.serverTelemetryManager?.setCacheOutcome(Constants_exports.CacheOutcome.CACHED_ACCESS_TOKEN_EXPIRED); + this.logger.info(`OnbehalfofFlow:getCachedAuthenticationResult - Cached access token is expired or will expire within ${this.config.systemOptions.tokenRenewalOffsetSeconds} seconds.`, request.correlationId); + throw createClientAuthError2(ClientAuthErrorCodes_exports2.tokenRefreshRequired); + } + const cachedIdToken = this.readIdTokenFromCacheForOBO(cachedAccessToken.homeAccountId, request.correlationId); + let idTokenClaims; + let cachedAccount = null; + if (cachedIdToken) { + idTokenClaims = AuthToken_exports.extractTokenClaims(cachedIdToken.secret, EncodingUtils2.base64Decode); + const localAccountId = idTokenClaims.oid || idTokenClaims.sub; + const accountInfo = { + homeAccountId: cachedIdToken.homeAccountId, + environment: cachedIdToken.environment, + tenantId: cachedIdToken.realm, + username: "", + localAccountId: localAccountId || "" + }; + cachedAccount = this.cacheManager.getAccount(this.cacheManager.generateAccountKey(accountInfo), request.correlationId); + } + if (this.config.serverTelemetryManager) { + this.config.serverTelemetryManager.incrementCacheHits(); + } + return ResponseHandler2.generateAuthenticationResult(this.cryptoUtils, this.authority, { + account: cachedAccount, + accessToken: cachedAccessToken, + idToken: cachedIdToken, + refreshToken: null, + appMetadata: null + }, true, request, this.performanceClient, idTokenClaims); + } + /** + * read idtoken from cache, this is a specific implementation for OBO as the requirements differ from a generic lookup in the cacheManager + * Certain use cases of OBO flow do not expect an idToken in the cache/or from the service + * @param atHomeAccountId - account id + */ + readIdTokenFromCacheForOBO(atHomeAccountId, correlationId) { + const idTokenFilter = { + homeAccountId: atHomeAccountId, + environment: this.authority.canonicalAuthorityUrlComponents.HostNameAndPort, + credentialType: Constants_exports.CredentialType.ID_TOKEN, + clientId: this.config.authOptions.clientId, + realm: this.authority.tenant + }; + const idTokenMap = this.cacheManager.getIdTokensByFilter(idTokenFilter, correlationId); + if (Object.values(idTokenMap).length < 1) { + return null; + } + return Object.values(idTokenMap)[0]; + } + /** + * Fetches the cached access token based on incoming assertion + * @param clientId - client id + * @param request - developer provided CommonOnBehalfOfRequest + */ + readAccessTokenFromCacheForOBO(clientId, request) { + const authScheme = request.authenticationScheme || Constants_exports.AuthenticationScheme.BEARER; + const credentialType = authScheme && authScheme.toLowerCase() !== Constants_exports.AuthenticationScheme.BEARER.toLowerCase() ? Constants_exports.CredentialType.ACCESS_TOKEN_WITH_AUTH_SCHEME : Constants_exports.CredentialType.ACCESS_TOKEN; + const accessTokenFilter = { + credentialType, + clientId, + target: ScopeSet2.createSearchScopes(this.scopeSet.asArray()), + tokenType: authScheme, + keyId: request.sshKid, + userAssertionHash: this.userAssertionHash + }; + const accessTokens = this.cacheManager.getAccessTokensByFilter(accessTokenFilter, request.correlationId); + const numAccessTokens = accessTokens.length; + if (numAccessTokens < 1) { + return null; + } else if (numAccessTokens > 1) { + throw createClientAuthError2(ClientAuthErrorCodes_exports2.multipleMatchingTokens); + } + return accessTokens[0]; + } + /** + * Make a network call to the server requesting credentials + * @param request - developer provided CommonOnBehalfOfRequest + * @param authority - authority object + */ + async executeTokenRequest(request, authority, userAssertionHash) { + const queryParametersString = this.createTokenQueryParameters(request); + const endpoint = UrlString2.appendQueryString(authority.tokenEndpoint, queryParametersString); + const requestBody = await this.createTokenRequestBody(request); + const headers = this.createTokenRequestHeaders(); + const thumbprint = { + clientId: this.config.authOptions.clientId, + authority: request.authority, + scopes: request.scopes, + claims: request.claims, + authenticationScheme: request.authenticationScheme, + resourceRequestMethod: request.resourceRequestMethod, + resourceRequestUri: request.resourceRequestUri, + shrClaims: request.shrClaims, + sshKid: request.sshKid + }; + const reqTimestamp = TimeUtils_exports2.nowSeconds(); + const response = await this.executePostToTokenEndpoint(endpoint, requestBody, headers, thumbprint, request.correlationId); + const responseHandler = new ResponseHandler2(this.config.authOptions.clientId, this.cacheManager, this.cryptoUtils, this.logger, this.performanceClient, this.config.serializableCache, this.config.persistencePlugin); + responseHandler.validateTokenResponse(response.body, request.correlationId); + const tokenResponse = await responseHandler.handleServerTokenResponse(response.body, this.authority, reqTimestamp, request, ApiId2.acquireTokenByOBO, void 0, userAssertionHash); + return tokenResponse; + } + /** + * generate a server request in accepable format + * @param request - developer provided CommonOnBehalfOfRequest + */ + async createTokenRequestBody(request) { + const parameters = /* @__PURE__ */ new Map(); + RequestParameterBuilder_exports2.addClientId(parameters, this.config.authOptions.clientId); + RequestParameterBuilder_exports2.addScopes(parameters, request.scopes); + RequestParameterBuilder_exports2.addGrantType(parameters, Constants_exports.GrantType.JWT_BEARER); + RequestParameterBuilder_exports2.addClientInfo(parameters); + RequestParameterBuilder_exports2.addLibraryInfo(parameters, this.config.libraryInfo); + RequestParameterBuilder_exports2.addApplicationTelemetry(parameters, this.config.telemetry.application); + RequestParameterBuilder_exports2.addThrottling(parameters); + if (this.serverTelemetryManager) { + RequestParameterBuilder_exports2.addServerTelemetry(parameters, this.serverTelemetryManager); + } + const correlationId = request.correlationId || this.config.cryptoInterface.createNewGuid(); + RequestParameterBuilder_exports2.addCorrelationId(parameters, correlationId); + RequestParameterBuilder_exports2.addRequestTokenUse(parameters, AADServerParamKeys_exports2.ON_BEHALF_OF); + RequestParameterBuilder_exports2.addOboAssertion(parameters, request.oboAssertion); + if (this.config.clientCredentials.clientSecret) { + RequestParameterBuilder_exports2.addClientSecret(parameters, this.config.clientCredentials.clientSecret); + } + const clientAssertion = this.config.clientCredentials.clientAssertion; + if (clientAssertion) { + RequestParameterBuilder_exports2.addClientAssertion(parameters, await getClientAssertion2(clientAssertion.assertion, this.config.authOptions.clientId, request.resourceRequestUri)); + RequestParameterBuilder_exports2.addClientAssertionType(parameters, clientAssertion.assertionType); + } + if (request.claims || this.config.authOptions.clientCapabilities && this.config.authOptions.clientCapabilities.length > 0) { + RequestParameterBuilder_exports2.addClaims(parameters, request.claims, this.config.authOptions.clientCapabilities); + } + return UrlUtils_exports2.mapToQueryString(parameters); + } + }; + } +}); + +// node_modules/@azure/identity/node_modules/@azure/msal-node/dist/client/ConfidentialClientApplication.mjs +var ConfidentialClientApplication2; +var init_ConfidentialClientApplication = __esm({ + "node_modules/@azure/identity/node_modules/@azure/msal-node/dist/client/ConfidentialClientApplication.mjs"() { + "use strict"; + init_ClientApplication(); + init_ClientAssertion(); + init_Constants2(); + init_index_node(); + init_ClientCredentialClient(); + init_OnBehalfOfClient(); + init_ClientAuthErrorCodes2(); + ConfidentialClientApplication2 = class extends ClientApplication2 { + /** + * Constructor for the ConfidentialClientApplication + * + * Required attributes in the Configuration object are: + * - clientID: the application ID of your application. You can obtain one by registering your application with our application registration portal + * - authority: the authority URL for your application. + * - client credential: Must set either client secret, certificate, or assertion for confidential clients. You can obtain a client secret from the application registration portal. + * + * In Azure AD, authority is a URL indicating of the form https://login.microsoftonline.com/\{Enter_the_Tenant_Info_Here\}. + * If your application supports Accounts in one organizational directory, replace "Enter_the_Tenant_Info_Here" value with the Tenant Id or Tenant name (for example, contoso.microsoft.com). + * If your application supports Accounts in any organizational directory, replace "Enter_the_Tenant_Info_Here" value with organizations. + * If your application supports Accounts in any organizational directory and personal Microsoft accounts, replace "Enter_the_Tenant_Info_Here" value with common. + * To restrict support to Personal Microsoft accounts only, replace "Enter_the_Tenant_Info_Here" value with consumers. + * + * In Azure B2C, authority is of the form https://\{instance\}/tfp/\{tenant\}/\{policyName\}/ + * Full B2C functionality will be available in this library in future versions. + * + * @param Configuration - configuration object for the MSAL ConfidentialClientApplication instance + */ + constructor(configuration) { + super(configuration); + const clientSecretNotEmpty = !!this.config.auth.clientSecret; + const clientAssertionNotEmpty = !!this.config.auth.clientAssertion; + const certificateNotEmpty = (!!this.config.auth.clientCertificate?.thumbprint || !!this.config.auth.clientCertificate?.thumbprintSha256) && !!this.config.auth.clientCertificate?.privateKey; + if (this.appTokenProvider) { + return; + } + if (clientSecretNotEmpty && clientAssertionNotEmpty || clientAssertionNotEmpty && certificateNotEmpty || clientSecretNotEmpty && certificateNotEmpty) { + throw createClientAuthError2(invalidClientCredential2); + } + if (this.config.auth.clientSecret) { + this.clientSecret = this.config.auth.clientSecret; + return; + } + if (this.config.auth.clientAssertion) { + this.developerProvidedClientAssertion = this.config.auth.clientAssertion; + return; + } + if (!certificateNotEmpty) { + throw createClientAuthError2(invalidClientCredential2); + } else { + this.clientAssertion = !!this.config.auth.clientCertificate.thumbprintSha256 ? ClientAssertion2.fromCertificateWithSha256Thumbprint(this.config.auth.clientCertificate.thumbprintSha256, this.config.auth.clientCertificate.privateKey, this.config.auth.clientCertificate.x5c) : ClientAssertion2.fromCertificate( + // guaranteed to be a string, due to prior error checking in this function + this.config.auth.clientCertificate.thumbprint, + this.config.auth.clientCertificate.privateKey, + this.config.auth.clientCertificate.x5c + ); + } + this.appTokenProvider = void 0; + } + /** + * This extensibility point only works for the client_credential flow, i.e. acquireTokenByClientCredential and + * is meant for Azure SDK to enhance Managed Identity support. + * + * @param IAppTokenProvider - Extensibility interface, which allows the app developer to return a token from a custom source. + */ + SetAppTokenProvider(provider) { + this.appTokenProvider = provider; + } + /** + * Acquires tokens from the authority for the application (not for an end user). + */ + async acquireTokenByClientCredential(request) { + this.logger.info("acquireTokenByClientCredential called", request.correlationId || ""); + let clientAssertion; + if (request.clientAssertion) { + clientAssertion = { + assertion: await getClientAssertion2( + request.clientAssertion, + this.config.auth.clientId + // tokenEndpoint will be undefined. resourceRequestUri is omitted in ClientCredentialRequest + ), + assertionType: Constants3.JWT_BEARER_ASSERTION_TYPE + }; + } + const baseRequest = await this.initializeBaseRequest(request); + const validBaseRequest = { + ...baseRequest, + scopes: baseRequest.scopes.filter((scope) => !Constants_exports.OIDC_DEFAULT_SCOPES.includes(scope)) + }; + const validRequest = { + ...request, + ...validBaseRequest, + clientAssertion + }; + const authority = new UrlString2(validRequest.authority); + const tenantId = authority.getUrlComponents().PathSegments[0]; + if (Object.values(Constants_exports.AADAuthority).includes(tenantId)) { + throw createClientAuthError2(missingTenantIdError2); + } + const ENV_MSAL_FORCE_REGION = process.env[MSAL_FORCE_REGION2]; + let region; + if (validRequest.azureRegion !== "DisableMsalForceRegion") { + if (!validRequest.azureRegion && ENV_MSAL_FORCE_REGION) { + region = ENV_MSAL_FORCE_REGION; + } else { + region = validRequest.azureRegion; + } + } + const azureRegionConfiguration = { + azureRegion: region, + environmentRegion: process.env[REGION_ENVIRONMENT_VARIABLE2] + }; + const serverTelemetryManager = this.initializeServerTelemetryManager(ApiId2.acquireTokenByClientCredential, validRequest.correlationId, validRequest.skipCache); + try { + const discoveredAuthority = await this.createAuthority(validRequest.authority, validRequest.correlationId, azureRegionConfiguration, request.azureCloudOptions); + const clientCredentialConfig = await this.buildOauthClientConfiguration(discoveredAuthority, validRequest.correlationId, "", serverTelemetryManager); + const clientCredentialClient = new ClientCredentialClient2(clientCredentialConfig, this.appTokenProvider); + this.logger.verbose("Client credential client created", validRequest.correlationId); + return await clientCredentialClient.acquireToken(validRequest); + } catch (e) { + if (e instanceof AuthError2) { + e.setCorrelationId(validRequest.correlationId); + } + serverTelemetryManager.cacheFailedRequest(e); + throw e; + } + } + /** + * Acquires tokens from the authority for the application. + * + * Used in scenarios where the current app is a middle-tier service which was called with a token + * representing an end user. The current app can use the token (oboAssertion) to request another + * token to access downstream web API, on behalf of that user. + * + * The current middle-tier app has no user interaction to obtain consent. + * See how to gain consent upfront for your middle-tier app from this article. + * https://docs.microsoft.com/en-us/azure/active-directory/develop/v2-oauth2-on-behalf-of-flow#gaining-consent-for-the-middle-tier-application + */ + async acquireTokenOnBehalfOf(request) { + this.logger.info("acquireTokenOnBehalfOf called", request.correlationId || ""); + const validRequest = { + ...request, + ...await this.initializeBaseRequest(request) + }; + try { + const discoveredAuthority = await this.createAuthority(validRequest.authority, validRequest.correlationId, void 0, request.azureCloudOptions); + const onBehalfOfConfig = await this.buildOauthClientConfiguration(discoveredAuthority, validRequest.correlationId, "", void 0); + const oboClient = new OnBehalfOfClient2(onBehalfOfConfig); + this.logger.verbose("On behalf of client created", validRequest.correlationId); + return await oboClient.acquireToken(validRequest); + } catch (e) { + if (e instanceof AuthError2) { + e.setCorrelationId(validRequest.correlationId); + } + throw e; + } + } + }; + } +}); + +// node_modules/@azure/identity/node_modules/@azure/msal-node/dist/utils/TimeUtils.mjs +function isIso86012(dateString) { + if (typeof dateString !== "string") { + return false; + } + const date4 = new Date(dateString); + return !isNaN(date4.getTime()) && date4.toISOString() === dateString; +} +var init_TimeUtils2 = __esm({ + "node_modules/@azure/identity/node_modules/@azure/msal-node/dist/utils/TimeUtils.mjs"() { + "use strict"; + } +}); + +// node_modules/@azure/identity/node_modules/@azure/msal-node/dist/network/HttpClientWithRetries.mjs +var HttpClientWithRetries2; +var init_HttpClientWithRetries = __esm({ + "node_modules/@azure/identity/node_modules/@azure/msal-node/dist/network/HttpClientWithRetries.mjs"() { + "use strict"; + init_index_node(); + init_Constants2(); + HttpClientWithRetries2 = class { + constructor(httpClientNoRetries, retryPolicy3, logger31) { + this.httpClientNoRetries = httpClientNoRetries; + this.retryPolicy = retryPolicy3; + this.logger = logger31; + } + async sendNetworkRequestAsyncHelper(httpMethod, url2, options) { + if (httpMethod === HttpMethod4.GET) { + return this.httpClientNoRetries.sendGetRequestAsync(url2, options); + } else { + return this.httpClientNoRetries.sendPostRequestAsync(url2, options); + } + } + async sendNetworkRequestAsync(httpMethod, url2, options) { + let response = await this.sendNetworkRequestAsyncHelper(httpMethod, url2, options); + if ("isNewRequest" in this.retryPolicy) { + this.retryPolicy.isNewRequest = true; + } + let currentRetry = 0; + while (await this.retryPolicy.pauseForRetry(response.status, currentRetry, this.logger, response.headers[Constants_exports.HeaderNames.RETRY_AFTER])) { + response = await this.sendNetworkRequestAsyncHelper(httpMethod, url2, options); + currentRetry++; + } + return response; + } + async sendGetRequestAsync(url2, options) { + return this.sendNetworkRequestAsync(HttpMethod4.GET, url2, options); + } + async sendPostRequestAsync(url2, options) { + return this.sendNetworkRequestAsync(HttpMethod4.POST, url2, options); + } + }; + } +}); + +// node_modules/@azure/identity/node_modules/@azure/msal-node/dist/client/ManagedIdentitySources/BaseManagedIdentitySource.mjs +var ManagedIdentityUserAssignedIdQueryParameterNames2, BaseManagedIdentitySource2; +var init_BaseManagedIdentitySource = __esm({ + "node_modules/@azure/identity/node_modules/@azure/msal-node/dist/client/ManagedIdentitySources/BaseManagedIdentitySource.mjs"() { + "use strict"; + init_index_node(); + init_Constants2(); + init_ManagedIdentityError(); + init_TimeUtils2(); + init_HttpClientWithRetries(); + init_ManagedIdentityErrorCodes(); + ManagedIdentityUserAssignedIdQueryParameterNames2 = { + MANAGED_IDENTITY_CLIENT_ID_2017: "clientid", + MANAGED_IDENTITY_CLIENT_ID: "client_id", + MANAGED_IDENTITY_OBJECT_ID: "object_id", + MANAGED_IDENTITY_RESOURCE_ID_IMDS: "msi_res_id", + MANAGED_IDENTITY_RESOURCE_ID_NON_IMDS: "mi_res_id" + }; + BaseManagedIdentitySource2 = class { + /** + * Creates an instance of BaseManagedIdentitySource. + * + * @param logger - Logger instance for diagnostic information + * @param nodeStorage - Storage interface for caching tokens + * @param networkClient - Network client for making HTTP requests + * @param cryptoProvider - Cryptographic provider for token operations + * @param disableInternalRetries - Whether to disable automatic retry logic + */ + constructor(logger31, nodeStorage, networkClient, cryptoProvider, disableInternalRetries) { + this.logger = logger31; + this.nodeStorage = nodeStorage; + this.networkClient = networkClient; + this.cryptoProvider = cryptoProvider; + this.disableInternalRetries = disableInternalRetries; + } + /** + * Processes the network response and converts it to a standardized server token response. + * This async version allows for source-specific response processing logic while maintaining + * backward compatibility with the synchronous version. + * + * @param response - The network response containing the managed identity token + * @param _networkClient - Network client used for the request (unused in base implementation) + * @param _networkRequest - The original network request parameters (unused in base implementation) + * @param _networkRequestOptions - The network request options (unused in base implementation) + * + * @returns Promise resolving to a standardized server authorization token response + */ + async getServerTokenResponseAsync(response, _networkClient, _networkRequest, _networkRequestOptions) { + return this.getServerTokenResponse(response); + } + /** + * Converts a managed identity token response to a standardized server authorization token response. + * Handles time format conversion, expiration calculation, and error mapping to ensure + * compatibility with the MSAL response handling pipeline. + * + * @param response - The network response containing the managed identity token + * + * @returns Standardized server authorization token response with normalized fields + */ + getServerTokenResponse(response) { + let refreshIn, expiresIn; + if (response.body.expires_on) { + if (isIso86012(response.body.expires_on)) { + response.body.expires_on = new Date(response.body.expires_on).getTime() / 1e3; + } + expiresIn = response.body.expires_on - TimeUtils_exports2.nowSeconds(); + if (expiresIn > 2 * 3600) { + refreshIn = expiresIn / 2; + } + } + const serverTokenResponse = { + status: response.status, + // success + access_token: response.body.access_token, + expires_in: expiresIn, + scope: response.body.resource, + token_type: response.body.token_type, + refresh_in: refreshIn, + // error + correlation_id: response.body.correlation_id || response.body.correlationId, + error: typeof response.body.error === "string" ? response.body.error : response.body.error?.code, + error_description: response.body.message || (typeof response.body.error === "string" ? response.body.error_description : response.body.error?.message), + error_codes: response.body.error_codes, + timestamp: response.body.timestamp, + trace_id: response.body.trace_id + }; + return serverTokenResponse; + } + /** + * Acquires an access token using the managed identity endpoint for the specified resource. + * This is the primary method for token acquisition, handling the complete flow from + * request creation through response processing and token caching. + * + * @param managedIdentityRequest - The managed identity request containing resource and optional parameters + * @param managedIdentityId - The managed identity configuration (system or user-assigned) + * @param fakeAuthority - Authority instance used for token caching (managed identity uses a placeholder authority) + * @param refreshAccessToken - Whether this is a token refresh operation + * + * @returns Promise resolving to an authentication result containing the access token and metadata + * + * @throws {AuthError} When network requests fail or token validation fails + * @throws {ClientAuthError} When network errors occur during the request + */ + async acquireTokenWithManagedIdentity(managedIdentityRequest, managedIdentityId, fakeAuthority, refreshAccessToken2) { + const networkRequest = this.createRequest(managedIdentityRequest.resource, managedIdentityId); + if (managedIdentityRequest.revokedTokenSha256Hash) { + this.logger.info(`[Managed Identity] The following claims are present in the request: ${managedIdentityRequest.claims}`, ""); + networkRequest.queryParameters[ManagedIdentityQueryParameters2.SHA256_TOKEN_TO_REFRESH] = managedIdentityRequest.revokedTokenSha256Hash; + } + if (managedIdentityRequest.clientCapabilities?.length) { + const clientCapabilities = managedIdentityRequest.clientCapabilities.toString(); + this.logger.info(`[Managed Identity] The following client capabilities are present in the request: ${clientCapabilities}`, ""); + networkRequest.queryParameters[ManagedIdentityQueryParameters2.XMS_CC] = clientCapabilities; + } + const headers = networkRequest.headers; + headers[Constants_exports.HeaderNames.CONTENT_TYPE] = Constants_exports.URL_FORM_CONTENT_TYPE; + const networkRequestOptions = { headers }; + if (Object.keys(networkRequest.bodyParameters).length) { + networkRequestOptions.body = networkRequest.computeParametersBodyString(); + } + const networkClientHelper = this.disableInternalRetries ? this.networkClient : new HttpClientWithRetries2(this.networkClient, networkRequest.retryPolicy, this.logger); + const reqTimestamp = TimeUtils_exports2.nowSeconds(); + let response; + try { + if (networkRequest.httpMethod === HttpMethod4.POST) { + response = await networkClientHelper.sendPostRequestAsync(networkRequest.computeUri(), networkRequestOptions); + } else { + response = await networkClientHelper.sendGetRequestAsync(networkRequest.computeUri(), networkRequestOptions); + } + } catch (error2) { + if (error2 instanceof AuthError2) { + throw error2; + } else { + throw createClientAuthError2(ClientAuthErrorCodes_exports2.networkError); + } + } + const responseHandler = new ResponseHandler2(managedIdentityId.id, this.nodeStorage, this.cryptoProvider, this.logger, new StubPerformanceClient2(), null, null); + const serverTokenResponse = await this.getServerTokenResponseAsync(response, networkClientHelper, networkRequest, networkRequestOptions); + responseHandler.validateTokenResponse(serverTokenResponse, serverTokenResponse.correlation_id || "", refreshAccessToken2); + return responseHandler.handleServerTokenResponse(serverTokenResponse, fakeAuthority, reqTimestamp, managedIdentityRequest, ApiId2.acquireTokenWithManagedIdentity); + } + /** + * Determines the appropriate query parameter name for user-assigned managed identity + * based on the identity type, API version, and endpoint characteristics. + * Different Azure services and API versions use different parameter names for the same identity types. + * + * @param managedIdentityIdType - The type of user-assigned managed identity (client ID, object ID, or resource ID) + * @param isImds - Whether the request is being made to the IMDS (Instance Metadata Service) endpoint + * @param usesApi2017 - Whether the endpoint uses the 2017-09-01 API version (affects client ID parameter name) + * + * @returns The correct query parameter name for the specified identity type and endpoint + * + * @throws {ManagedIdentityError} When an invalid managed identity ID type is provided + */ + getManagedIdentityUserAssignedIdQueryParameterKey(managedIdentityIdType, isImds, usesApi2017) { + switch (managedIdentityIdType) { + case ManagedIdentityIdType2.USER_ASSIGNED_CLIENT_ID: + this.logger.info(`[Managed Identity] [API version ${usesApi2017 ? "2017+" : "2019+"}] Adding user assigned client id to the request.`, ""); + return usesApi2017 ? ManagedIdentityUserAssignedIdQueryParameterNames2.MANAGED_IDENTITY_CLIENT_ID_2017 : ManagedIdentityUserAssignedIdQueryParameterNames2.MANAGED_IDENTITY_CLIENT_ID; + case ManagedIdentityIdType2.USER_ASSIGNED_RESOURCE_ID: + this.logger.info("[Managed Identity] Adding user assigned resource id to the request.", ""); + return isImds ? ManagedIdentityUserAssignedIdQueryParameterNames2.MANAGED_IDENTITY_RESOURCE_ID_IMDS : ManagedIdentityUserAssignedIdQueryParameterNames2.MANAGED_IDENTITY_RESOURCE_ID_NON_IMDS; + case ManagedIdentityIdType2.USER_ASSIGNED_OBJECT_ID: + this.logger.info("[Managed Identity] Adding user assigned object id to the request.", ""); + return ManagedIdentityUserAssignedIdQueryParameterNames2.MANAGED_IDENTITY_OBJECT_ID; + default: + throw createManagedIdentityError2(invalidManagedIdentityIdType2); + } + } + }; + BaseManagedIdentitySource2.getValidatedEnvVariableUrlString = (envVariableStringName, envVariable, sourceName, logger31) => { + try { + return new UrlString2(envVariable).urlString; + } catch (error2) { + logger31.info(`[Managed Identity] ${sourceName} managed identity is unavailable because the '${envVariableStringName}' environment variable is malformed.`, ""); + throw createManagedIdentityError2(MsiEnvironmentVariableUrlMalformedErrorCodes2[envVariableStringName]); + } + }; + } +}); + +// node_modules/@azure/identity/node_modules/@azure/msal-node/dist/retry/LinearRetryStrategy.mjs +var LinearRetryStrategy2; +var init_LinearRetryStrategy = __esm({ + "node_modules/@azure/identity/node_modules/@azure/msal-node/dist/retry/LinearRetryStrategy.mjs"() { + "use strict"; + LinearRetryStrategy2 = class { + /** + * Calculates the number of milliseconds to sleep based on the `retry-after` HTTP header. + * + * @param retryHeader - The value of the `retry-after` HTTP header. This can be either a number of seconds + * or an HTTP date string. + * @returns The number of milliseconds to sleep before retrying the request. If the `retry-after` header is not + * present or cannot be parsed, returns 0. + */ + calculateDelay(retryHeader, minimumDelay) { + if (!retryHeader) { + return minimumDelay; + } + let millisToSleep = Math.round(parseFloat(retryHeader) * 1e3); + if (isNaN(millisToSleep)) { + millisToSleep = new Date(retryHeader).valueOf() - (/* @__PURE__ */ new Date()).valueOf(); + } + return Math.max(minimumDelay, millisToSleep); + } + }; + } +}); + +// node_modules/@azure/identity/node_modules/@azure/msal-node/dist/retry/DefaultManagedIdentityRetryPolicy.mjs +var DEFAULT_MANAGED_IDENTITY_MAX_RETRIES, DEFAULT_MANAGED_IDENTITY_RETRY_DELAY_MS, DEFAULT_MANAGED_IDENTITY_HTTP_STATUS_CODES_TO_RETRY_ON2, DefaultManagedIdentityRetryPolicy2; +var init_DefaultManagedIdentityRetryPolicy = __esm({ + "node_modules/@azure/identity/node_modules/@azure/msal-node/dist/retry/DefaultManagedIdentityRetryPolicy.mjs"() { + "use strict"; + init_index_node(); + init_LinearRetryStrategy(); + DEFAULT_MANAGED_IDENTITY_MAX_RETRIES = 3; + DEFAULT_MANAGED_IDENTITY_RETRY_DELAY_MS = 1e3; + DEFAULT_MANAGED_IDENTITY_HTTP_STATUS_CODES_TO_RETRY_ON2 = [ + Constants_exports.HTTP_NOT_FOUND, + Constants_exports.HTTP_REQUEST_TIMEOUT, + Constants_exports.HTTP_TOO_MANY_REQUESTS, + Constants_exports.HTTP_SERVER_ERROR, + Constants_exports.HTTP_SERVICE_UNAVAILABLE, + Constants_exports.HTTP_GATEWAY_TIMEOUT + ]; + DefaultManagedIdentityRetryPolicy2 = class _DefaultManagedIdentityRetryPolicy { + constructor() { + this.linearRetryStrategy = new LinearRetryStrategy2(); + } + /* + * this is defined here as a static variable despite being defined as a constant outside of the + * class because it needs to be overridden in the unit tests so that the unit tests run faster + */ + static get DEFAULT_MANAGED_IDENTITY_RETRY_DELAY_MS() { + return DEFAULT_MANAGED_IDENTITY_RETRY_DELAY_MS; + } + async pauseForRetry(httpStatusCode, currentRetry, logger31, retryAfterHeader) { + if (DEFAULT_MANAGED_IDENTITY_HTTP_STATUS_CODES_TO_RETRY_ON2.includes(httpStatusCode) && currentRetry < DEFAULT_MANAGED_IDENTITY_MAX_RETRIES) { + const retryAfterDelay = this.linearRetryStrategy.calculateDelay(retryAfterHeader, _DefaultManagedIdentityRetryPolicy.DEFAULT_MANAGED_IDENTITY_RETRY_DELAY_MS); + logger31.verbose(`Retrying request in ${retryAfterDelay}ms (retry attempt: ${currentRetry + 1})`, ""); + await new Promise((resolve) => { + return setTimeout(resolve, retryAfterDelay); + }); + return true; + } + return false; + } + }; + } +}); + +// node_modules/@azure/identity/node_modules/@azure/msal-node/dist/config/ManagedIdentityRequestParameters.mjs +var ManagedIdentityRequestParameters2; +var init_ManagedIdentityRequestParameters = __esm({ + "node_modules/@azure/identity/node_modules/@azure/msal-node/dist/config/ManagedIdentityRequestParameters.mjs"() { + "use strict"; + init_index_node(); + init_DefaultManagedIdentityRetryPolicy(); + ManagedIdentityRequestParameters2 = class { + constructor(httpMethod, endpoint, retryPolicy3) { + this.httpMethod = httpMethod; + this._baseEndpoint = endpoint; + this.headers = {}; + this.bodyParameters = {}; + this.queryParameters = {}; + this.retryPolicy = retryPolicy3 || new DefaultManagedIdentityRetryPolicy2(); + } + computeUri() { + const parameters = /* @__PURE__ */ new Map(); + if (this.queryParameters) { + RequestParameterBuilder_exports2.addExtraParameters(parameters, this.queryParameters); + } + const queryParametersString = UrlUtils_exports2.mapToQueryString(parameters); + return UrlString2.appendQueryString(this._baseEndpoint, queryParametersString); + } + computeParametersBodyString() { + const parameters = /* @__PURE__ */ new Map(); + if (this.bodyParameters) { + RequestParameterBuilder_exports2.addExtraParameters(parameters, this.bodyParameters); + } + return UrlUtils_exports2.mapToQueryString(parameters); + } + }; + } +}); + +// node_modules/@azure/identity/node_modules/@azure/msal-node/dist/client/ManagedIdentitySources/AppService.mjs +var APP_SERVICE_MSI_API_VERSION, AppService2; +var init_AppService = __esm({ + "node_modules/@azure/identity/node_modules/@azure/msal-node/dist/client/ManagedIdentitySources/AppService.mjs"() { + "use strict"; + init_BaseManagedIdentitySource(); + init_Constants2(); + init_ManagedIdentityRequestParameters(); + APP_SERVICE_MSI_API_VERSION = "2019-08-01"; + AppService2 = class _AppService extends BaseManagedIdentitySource2 { + /** + * Creates a new instance of the AppService managed identity source. + * + * @param logger - Logger instance for diagnostic output + * @param nodeStorage - Node.js storage implementation for caching + * @param networkClient - Network client for making HTTP requests + * @param cryptoProvider - Cryptographic operations provider + * @param disableInternalRetries - Whether to disable internal retry logic + * @param identityEndpoint - The App Service identity endpoint URL + * @param identityHeader - The secret header value required for authentication + */ + constructor(logger31, nodeStorage, networkClient, cryptoProvider, disableInternalRetries, identityEndpoint, identityHeader) { + super(logger31, nodeStorage, networkClient, cryptoProvider, disableInternalRetries); + this.identityEndpoint = identityEndpoint; + this.identityHeader = identityHeader; + } + /** + * Retrieves the required environment variables for App Service managed identity. + * + * App Service managed identity requires two environment variables: + * - IDENTITY_ENDPOINT: The URL of the local metadata service + * - IDENTITY_HEADER: A secret header value for authentication + * + * @returns An array containing [identityEndpoint, identityHeader] values from environment variables. + * Either value may be undefined if the environment variable is not set. + */ + static getEnvironmentVariables() { + const identityEndpoint = process.env[ManagedIdentityEnvironmentVariableNames2.IDENTITY_ENDPOINT]; + const identityHeader = process.env[ManagedIdentityEnvironmentVariableNames2.IDENTITY_HEADER]; + return [identityEndpoint, identityHeader]; + } + /** + * Attempts to create an AppService managed identity source if the environment supports it. + * + * This method checks for the presence of required environment variables and validates + * the identity endpoint URL. If the environment is not suitable for App Service managed + * identity (missing environment variables or invalid endpoint), it returns null. + * + * @param logger - Logger instance for diagnostic output + * @param nodeStorage - Node.js storage implementation for caching + * @param networkClient - Network client for making HTTP requests + * @param cryptoProvider - Cryptographic operations provider + * @param disableInternalRetries - Whether to disable internal retry logic + * + * @returns A new AppService instance if the environment is suitable, null otherwise + */ + static tryCreate(logger31, nodeStorage, networkClient, cryptoProvider, disableInternalRetries) { + const [identityEndpoint, identityHeader] = _AppService.getEnvironmentVariables(); + if (!identityEndpoint || !identityHeader) { + logger31.info(`[Managed Identity] ${ManagedIdentitySourceNames2.APP_SERVICE} managed identity is unavailable because one or both of the '${ManagedIdentityEnvironmentVariableNames2.IDENTITY_HEADER}' and '${ManagedIdentityEnvironmentVariableNames2.IDENTITY_ENDPOINT}' environment variables are not defined.`, ""); + return null; + } + const validatedIdentityEndpoint = _AppService.getValidatedEnvVariableUrlString(ManagedIdentityEnvironmentVariableNames2.IDENTITY_ENDPOINT, identityEndpoint, ManagedIdentitySourceNames2.APP_SERVICE, logger31); + logger31.info(`[Managed Identity] Environment variables validation passed for ${ManagedIdentitySourceNames2.APP_SERVICE} managed identity. Endpoint URI: ${validatedIdentityEndpoint}. Creating ${ManagedIdentitySourceNames2.APP_SERVICE} managed identity.`, ""); + return new _AppService(logger31, nodeStorage, networkClient, cryptoProvider, disableInternalRetries, identityEndpoint, identityHeader); + } + /** + * Creates a managed identity token request for the App Service environment. + * + * This method constructs an HTTP GET request to the App Service identity endpoint + * with the required headers, query parameters, and managed identity configuration. + * The request includes the secret header for authentication and appropriate API version. + * + * @param resource - The target resource/scope for which to request an access token (e.g., "https://graph.microsoft.com/.default") + * @param managedIdentityId - The managed identity configuration specifying whether to use system-assigned or user-assigned identity + * + * @returns A configured ManagedIdentityRequestParameters object ready for network execution + */ + createRequest(resource, managedIdentityId) { + const request = new ManagedIdentityRequestParameters2(HttpMethod4.GET, this.identityEndpoint); + request.headers[ManagedIdentityHeaders2.APP_SERVICE_SECRET_HEADER_NAME] = this.identityHeader; + request.queryParameters[ManagedIdentityQueryParameters2.API_VERSION] = APP_SERVICE_MSI_API_VERSION; + request.queryParameters[ManagedIdentityQueryParameters2.RESOURCE] = resource; + if (managedIdentityId.idType !== ManagedIdentityIdType2.SYSTEM_ASSIGNED) { + request.queryParameters[this.getManagedIdentityUserAssignedIdQueryParameterKey(managedIdentityId.idType)] = managedIdentityId.id; + } + return request; + } + }; + } +}); + +// node_modules/@azure/identity/node_modules/@azure/msal-node/dist/client/ManagedIdentitySources/AzureArc.mjs +var import_fs3, import_path3, ARC_API_VERSION, DEFAULT_AZURE_ARC_IDENTITY_ENDPOINT, HIMDS_EXECUTABLE_HELPER_STRING, SUPPORTED_AZURE_ARC_PLATFORMS2, AZURE_ARC_FILE_DETECTION2, AzureArc2; +var init_AzureArc = __esm({ + "node_modules/@azure/identity/node_modules/@azure/msal-node/dist/client/ManagedIdentitySources/AzureArc.mjs"() { + "use strict"; + init_index_node(); + init_ManagedIdentityRequestParameters(); + init_BaseManagedIdentitySource(); + init_ManagedIdentityError(); + init_Constants2(); + import_fs3 = require("fs"); + import_path3 = __toESM(require("path"), 1); + init_ManagedIdentityErrorCodes(); + ARC_API_VERSION = "2019-11-01"; + DEFAULT_AZURE_ARC_IDENTITY_ENDPOINT = "http://127.0.0.1:40342/metadata/identity/oauth2/token"; + HIMDS_EXECUTABLE_HELPER_STRING = "N/A: himds executable exists"; + SUPPORTED_AZURE_ARC_PLATFORMS2 = { + win32: `${process.env["ProgramData"]}\\AzureConnectedMachineAgent\\Tokens\\`, + linux: "/var/opt/azcmagent/tokens/" + }; + AZURE_ARC_FILE_DETECTION2 = { + win32: `${process.env["ProgramFiles"]}\\AzureConnectedMachineAgent\\himds.exe`, + linux: "/opt/azcmagent/bin/himds" + }; + AzureArc2 = class _AzureArc extends BaseManagedIdentitySource2 { + /** + * Creates a new instance of the AzureArc managed identity source. + * + * @param logger - Logger instance for capturing telemetry and diagnostic information + * @param nodeStorage - Storage implementation for caching tokens and metadata + * @param networkClient - Network client for making HTTP requests to the identity endpoint + * @param cryptoProvider - Cryptographic operations provider for token validation and encryption + * @param disableInternalRetries - Flag to disable automatic retry logic for failed requests + * @param identityEndpoint - The Azure Arc identity endpoint URL for token requests + */ + constructor(logger31, nodeStorage, networkClient, cryptoProvider, disableInternalRetries, identityEndpoint) { + super(logger31, nodeStorage, networkClient, cryptoProvider, disableInternalRetries); + this.identityEndpoint = identityEndpoint; + } + /** + * Retrieves and validates Azure Arc environment variables for managed identity configuration. + * + * This method checks for IDENTITY_ENDPOINT and IMDS_ENDPOINT environment variables. + * If either is missing, it attempts to detect the Azure Arc environment by checking for + * the HIMDS executable at platform-specific paths. On successful detection, it returns + * the default identity endpoint and a helper string indicating file-based detection. + * + * @returns An array containing [identityEndpoint, imdsEndpoint] where both values are + * strings if Azure Arc is available, or undefined if not available. + */ + static getEnvironmentVariables() { + let identityEndpoint = process.env[ManagedIdentityEnvironmentVariableNames2.IDENTITY_ENDPOINT]; + let imdsEndpoint = process.env[ManagedIdentityEnvironmentVariableNames2.IMDS_ENDPOINT]; + if (!identityEndpoint || !imdsEndpoint) { + const fileDetectionPath = AZURE_ARC_FILE_DETECTION2[process.platform]; + try { + (0, import_fs3.accessSync)(fileDetectionPath, import_fs3.constants.F_OK | import_fs3.constants.R_OK); + identityEndpoint = DEFAULT_AZURE_ARC_IDENTITY_ENDPOINT; + imdsEndpoint = HIMDS_EXECUTABLE_HELPER_STRING; + } catch (err) { + } + } + return [identityEndpoint, imdsEndpoint]; + } + /** + * Attempts to create an AzureArc managed identity source instance. + * + * Validates the Azure Arc environment by checking environment variables + * and performing file-based detection. It ensures that only system-assigned managed identities + * are supported for Azure Arc scenarios. The method performs comprehensive validation of + * endpoint URLs and logs detailed information about the detection process. + * + * @param logger - Logger instance for capturing creation and validation steps + * @param nodeStorage - Storage implementation for the managed identity source + * @param networkClient - Network client for HTTP communication + * @param cryptoProvider - Cryptographic operations provider + * @param disableInternalRetries - Whether to disable automatic retry mechanisms + * @param managedIdentityId - The managed identity configuration, must be system-assigned + * + * @returns AzureArc instance if the environment supports Azure Arc managed identity, null otherwise + * + * @throws {ManagedIdentityError} When a user-assigned managed identity is specified (not supported for Azure Arc) + */ + static tryCreate(logger31, nodeStorage, networkClient, cryptoProvider, disableInternalRetries, managedIdentityId) { + const [identityEndpoint, imdsEndpoint] = _AzureArc.getEnvironmentVariables(); + if (!identityEndpoint || !imdsEndpoint) { + logger31.info(`[Managed Identity] ${ManagedIdentitySourceNames2.AZURE_ARC} managed identity is unavailable through environment variables because one or both of '${ManagedIdentityEnvironmentVariableNames2.IDENTITY_ENDPOINT}' and '${ManagedIdentityEnvironmentVariableNames2.IMDS_ENDPOINT}' are not defined. ${ManagedIdentitySourceNames2.AZURE_ARC} managed identity is also unavailable through file detection.`, ""); + return null; + } + if (imdsEndpoint === HIMDS_EXECUTABLE_HELPER_STRING) { + logger31.info(`[Managed Identity] ${ManagedIdentitySourceNames2.AZURE_ARC} managed identity is available through file detection. Defaulting to known ${ManagedIdentitySourceNames2.AZURE_ARC} endpoint: ${DEFAULT_AZURE_ARC_IDENTITY_ENDPOINT}. Creating ${ManagedIdentitySourceNames2.AZURE_ARC} managed identity.`, ""); + } else { + const validatedIdentityEndpoint = _AzureArc.getValidatedEnvVariableUrlString(ManagedIdentityEnvironmentVariableNames2.IDENTITY_ENDPOINT, identityEndpoint, ManagedIdentitySourceNames2.AZURE_ARC, logger31); + validatedIdentityEndpoint.endsWith("/") ? validatedIdentityEndpoint.slice(0, -1) : validatedIdentityEndpoint; + _AzureArc.getValidatedEnvVariableUrlString(ManagedIdentityEnvironmentVariableNames2.IMDS_ENDPOINT, imdsEndpoint, ManagedIdentitySourceNames2.AZURE_ARC, logger31); + logger31.info(`[Managed Identity] Environment variables validation passed for ${ManagedIdentitySourceNames2.AZURE_ARC} managed identity. Endpoint URI: ${validatedIdentityEndpoint}. Creating ${ManagedIdentitySourceNames2.AZURE_ARC} managed identity.`, ""); + } + if (managedIdentityId.idType !== ManagedIdentityIdType2.SYSTEM_ASSIGNED) { + throw createManagedIdentityError2(unableToCreateAzureArc2); + } + return new _AzureArc(logger31, nodeStorage, networkClient, cryptoProvider, disableInternalRetries, identityEndpoint); + } + /** + * Creates a properly formatted HTTP request for acquiring tokens from the Azure Arc identity endpoint. + * + * This method constructs a GET request to the Azure Arc HIMDS endpoint with the required metadata header + * and query parameters. The endpoint URL is normalized to use 127.0.0.1 instead of localhost for + * consistency. Additional body parameters are calculated by the base class during token acquisition. + * + * @param resource - The target resource/scope for which to request an access token (e.g., "https://graph.microsoft.com/.default") + * + * @returns A configured ManagedIdentityRequestParameters object ready for network execution + */ + createRequest(resource) { + const request = new ManagedIdentityRequestParameters2(HttpMethod4.GET, this.identityEndpoint.replace("localhost", "127.0.0.1")); + request.headers[ManagedIdentityHeaders2.METADATA_HEADER_NAME] = "true"; + request.queryParameters[ManagedIdentityQueryParameters2.API_VERSION] = ARC_API_VERSION; + request.queryParameters[ManagedIdentityQueryParameters2.RESOURCE] = resource; + return request; + } + /** + * Processes the server response and handles Azure Arc-specific authentication challenges. + * + * This method implements the Azure Arc authentication flow which may require reading a secret file + * for authorization. When the initial request returns HTTP 401 Unauthorized, it extracts the file + * path from the WWW-Authenticate header, validates the file location and size, reads the secret, + * and retries the request with Basic authentication. The method includes comprehensive security + * validations to prevent path traversal and ensure file integrity. + * + * @param originalResponse - The initial HTTP response from the identity endpoint + * @param networkClient - Network client for making the retry request if needed + * @param networkRequest - The original request parameters (modified with auth header for retry) + * @param networkRequestOptions - Additional options for network requests + * + * @returns A promise that resolves to the server token response with access token and metadata + * + * @throws {ManagedIdentityError} When: + * - WWW-Authenticate header is missing or has unsupported format + * - Platform is not supported (not Windows or Linux) + * - Secret file has invalid extension (not .key) + * - Secret file path doesn't match expected platform path + * - Secret file cannot be read or is too large (>4096 bytes) + * @throws {ClientAuthError} When network errors occur during retry request + */ + async getServerTokenResponseAsync(originalResponse, networkClient, networkRequest, networkRequestOptions) { + let retryResponse; + if (originalResponse.status === Constants_exports.HTTP_UNAUTHORIZED) { + const wwwAuthHeader = originalResponse.headers["www-authenticate"]; + if (!wwwAuthHeader) { + throw createManagedIdentityError2(wwwAuthenticateHeaderMissing2); + } + if (!wwwAuthHeader.includes("Basic realm=")) { + throw createManagedIdentityError2(wwwAuthenticateHeaderUnsupportedFormat2); + } + const secretFilePath = wwwAuthHeader.split("Basic realm=")[1]; + if (!SUPPORTED_AZURE_ARC_PLATFORMS2.hasOwnProperty(process.platform)) { + throw createManagedIdentityError2(platformNotSupported2); + } + const expectedSecretFilePath = SUPPORTED_AZURE_ARC_PLATFORMS2[process.platform]; + const fileName = import_path3.default.basename(secretFilePath); + if (!fileName.endsWith(".key")) { + throw createManagedIdentityError2(invalidFileExtension2); + } + if (expectedSecretFilePath + fileName !== secretFilePath) { + throw createManagedIdentityError2(invalidFilePath2); + } + let secretFileSize; + try { + secretFileSize = await (0, import_fs3.statSync)(secretFilePath).size; + } catch (e) { + throw createManagedIdentityError2(unableToReadSecretFile2); + } + if (secretFileSize > AZURE_ARC_SECRET_FILE_MAX_SIZE_BYTES2) { + throw createManagedIdentityError2(invalidSecret2); + } + let secret; + try { + secret = (0, import_fs3.readFileSync)(secretFilePath, Constants_exports.EncodingTypes.UTF8); + } catch (e) { + throw createManagedIdentityError2(unableToReadSecretFile2); + } + const authHeaderValue = `Basic ${secret}`; + this.logger.info(`[Managed Identity] Adding authorization header to the request.`, ""); + networkRequest.headers[ManagedIdentityHeaders2.AUTHORIZATION_HEADER_NAME] = authHeaderValue; + try { + retryResponse = await networkClient.sendGetRequestAsync(networkRequest.computeUri(), networkRequestOptions); + } catch (error2) { + if (error2 instanceof AuthError2) { + throw error2; + } else { + throw createClientAuthError2(ClientAuthErrorCodes_exports2.networkError); + } + } + } + return this.getServerTokenResponse(retryResponse || originalResponse); + } + }; + } +}); + +// node_modules/@azure/identity/node_modules/@azure/msal-node/dist/client/ManagedIdentitySources/CloudShell.mjs +var CloudShell2; +var init_CloudShell = __esm({ + "node_modules/@azure/identity/node_modules/@azure/msal-node/dist/client/ManagedIdentitySources/CloudShell.mjs"() { + "use strict"; + init_ManagedIdentityRequestParameters(); + init_BaseManagedIdentitySource(); + init_Constants2(); + init_ManagedIdentityError(); + init_ManagedIdentityErrorCodes(); + CloudShell2 = class _CloudShell extends BaseManagedIdentitySource2 { + /** + * Creates a new CloudShell managed identity source instance. + * + * @param logger - Logger instance for diagnostic logging + * @param nodeStorage - Node.js storage implementation for caching + * @param networkClient - HTTP client for making requests to the managed identity endpoint + * @param cryptoProvider - Cryptographic operations provider + * @param disableInternalRetries - Whether to disable automatic retry logic for failed requests + * @param msiEndpoint - The MSI endpoint URL obtained from environment variables + */ + constructor(logger31, nodeStorage, networkClient, cryptoProvider, disableInternalRetries, msiEndpoint) { + super(logger31, nodeStorage, networkClient, cryptoProvider, disableInternalRetries); + this.msiEndpoint = msiEndpoint; + } + /** + * Retrieves the required environment variables for Cloud Shell managed identity. + * + * Cloud Shell requires the MSI_ENDPOINT environment variable to be set, which + * contains the URL of the managed identity service endpoint. + * + * @returns An array containing the MSI_ENDPOINT environment variable value (or undefined if not set) + */ + static getEnvironmentVariables() { + const msiEndpoint = process.env[ManagedIdentityEnvironmentVariableNames2.MSI_ENDPOINT]; + return [msiEndpoint]; + } + /** + * Attempts to create a CloudShell managed identity source instance. + * + * This method validates that the required environment variables are present and + * creates a CloudShell instance if the environment is properly configured. + * Cloud Shell only supports system-assigned managed identities. + * + * @param logger - Logger instance for diagnostic logging + * @param nodeStorage - Node.js storage implementation for caching + * @param networkClient - HTTP client for making requests + * @param cryptoProvider - Cryptographic operations provider + * @param disableInternalRetries - Whether to disable automatic retry logic + * @param managedIdentityId - The managed identity configuration (must be system-assigned) + * + * @returns A CloudShell instance if the environment is valid, null otherwise + * + * @throws {ManagedIdentityError} When a user-assigned managed identity is requested, + * as Cloud Shell only supports system-assigned identities + */ + static tryCreate(logger31, nodeStorage, networkClient, cryptoProvider, disableInternalRetries, managedIdentityId) { + const [msiEndpoint] = _CloudShell.getEnvironmentVariables(); + if (!msiEndpoint) { + logger31.info(`[Managed Identity] ${ManagedIdentitySourceNames2.CLOUD_SHELL} managed identity is unavailable because the '${ManagedIdentityEnvironmentVariableNames2.MSI_ENDPOINT} environment variable is not defined.`, ""); + return null; + } + const validatedMsiEndpoint = _CloudShell.getValidatedEnvVariableUrlString(ManagedIdentityEnvironmentVariableNames2.MSI_ENDPOINT, msiEndpoint, ManagedIdentitySourceNames2.CLOUD_SHELL, logger31); + logger31.info(`[Managed Identity] Environment variable validation passed for ${ManagedIdentitySourceNames2.CLOUD_SHELL} managed identity. Endpoint URI: ${validatedMsiEndpoint}. Creating ${ManagedIdentitySourceNames2.CLOUD_SHELL} managed identity.`, ""); + if (managedIdentityId.idType !== ManagedIdentityIdType2.SYSTEM_ASSIGNED) { + throw createManagedIdentityError2(unableToCreateCloudShell2); + } + return new _CloudShell(logger31, nodeStorage, networkClient, cryptoProvider, disableInternalRetries, msiEndpoint); + } + /** + * Creates an HTTP request to acquire an access token from the Cloud Shell managed identity endpoint. + * + * This method constructs a POST request to the MSI endpoint with the required headers and + * body parameters for Cloud Shell authentication. The request includes the target resource + * for which the access token is being requested. + * + * @param resource - The target resource/scope for which to request an access token (e.g., "https://graph.microsoft.com/.default") + * + * @returns A configured ManagedIdentityRequestParameters object ready for network execution + */ + createRequest(resource) { + const request = new ManagedIdentityRequestParameters2(HttpMethod4.POST, this.msiEndpoint); + request.headers[ManagedIdentityHeaders2.METADATA_HEADER_NAME] = "true"; + request.bodyParameters[ManagedIdentityQueryParameters2.RESOURCE] = resource; + return request; + } + }; + } +}); + +// node_modules/@azure/identity/node_modules/@azure/msal-node/dist/retry/ExponentialRetryStrategy.mjs +var ExponentialRetryStrategy2; +var init_ExponentialRetryStrategy = __esm({ + "node_modules/@azure/identity/node_modules/@azure/msal-node/dist/retry/ExponentialRetryStrategy.mjs"() { + "use strict"; + ExponentialRetryStrategy2 = class { + constructor(minExponentialBackoff, maxExponentialBackoff, exponentialDeltaBackoff) { + this.minExponentialBackoff = minExponentialBackoff; + this.maxExponentialBackoff = maxExponentialBackoff; + this.exponentialDeltaBackoff = exponentialDeltaBackoff; + } + /** + * Calculates the exponential delay based on the current retry attempt. + * + * @param {number} currentRetry - The current retry attempt number. + * @returns {number} - The calculated exponential delay in milliseconds. + * + * The delay is calculated using the formula: + * - If `currentRetry` is 0, it returns the minimum backoff time. + * - Otherwise, it calculates the delay as the minimum of: + * - `(2^(currentRetry - 1)) * deltaBackoff` + * - `maxBackoff` + * + * This ensures that the delay increases exponentially with each retry attempt, + * but does not exceed the maximum backoff time. + */ + calculateDelay(currentRetry) { + if (currentRetry === 0) { + return this.minExponentialBackoff; + } + const exponentialDelay = Math.min(Math.pow(2, currentRetry - 1) * this.exponentialDeltaBackoff, this.maxExponentialBackoff); + return exponentialDelay; + } + }; + } +}); + +// node_modules/@azure/identity/node_modules/@azure/msal-node/dist/retry/ImdsRetryPolicy.mjs +var HTTP_STATUS_400_CODES_FOR_EXPONENTIAL_STRATEGY2, EXPONENTIAL_STRATEGY_NUM_RETRIES, LINEAR_STRATEGY_NUM_RETRIES, MIN_EXPONENTIAL_BACKOFF_MS, MAX_EXPONENTIAL_BACKOFF_MS, EXPONENTIAL_DELTA_BACKOFF_MS, HTTP_STATUS_GONE_RETRY_AFTER_MS2, ImdsRetryPolicy2; +var init_ImdsRetryPolicy = __esm({ + "node_modules/@azure/identity/node_modules/@azure/msal-node/dist/retry/ImdsRetryPolicy.mjs"() { + "use strict"; + init_index_node(); + init_ExponentialRetryStrategy(); + HTTP_STATUS_400_CODES_FOR_EXPONENTIAL_STRATEGY2 = [ + Constants_exports.HTTP_NOT_FOUND, + Constants_exports.HTTP_REQUEST_TIMEOUT, + Constants_exports.HTTP_GONE, + Constants_exports.HTTP_TOO_MANY_REQUESTS + ]; + EXPONENTIAL_STRATEGY_NUM_RETRIES = 3; + LINEAR_STRATEGY_NUM_RETRIES = 7; + MIN_EXPONENTIAL_BACKOFF_MS = 1e3; + MAX_EXPONENTIAL_BACKOFF_MS = 4e3; + EXPONENTIAL_DELTA_BACKOFF_MS = 2e3; + HTTP_STATUS_GONE_RETRY_AFTER_MS2 = 10 * 1e3; + ImdsRetryPolicy2 = class _ImdsRetryPolicy { + constructor() { + this.exponentialRetryStrategy = new ExponentialRetryStrategy2(_ImdsRetryPolicy.MIN_EXPONENTIAL_BACKOFF_MS, _ImdsRetryPolicy.MAX_EXPONENTIAL_BACKOFF_MS, _ImdsRetryPolicy.EXPONENTIAL_DELTA_BACKOFF_MS); + } + /* + * these are defined here as static variables despite being defined as constants outside of the + * class because they need to be overridden in the unit tests so that the unit tests run faster + */ + static get MIN_EXPONENTIAL_BACKOFF_MS() { + return MIN_EXPONENTIAL_BACKOFF_MS; + } + static get MAX_EXPONENTIAL_BACKOFF_MS() { + return MAX_EXPONENTIAL_BACKOFF_MS; + } + static get EXPONENTIAL_DELTA_BACKOFF_MS() { + return EXPONENTIAL_DELTA_BACKOFF_MS; + } + static get HTTP_STATUS_GONE_RETRY_AFTER_MS() { + return HTTP_STATUS_GONE_RETRY_AFTER_MS2; + } + set isNewRequest(value) { + this._isNewRequest = value; + } + /** + * Pauses execution for a calculated delay before retrying a request. + * + * @param httpStatusCode - The HTTP status code of the response. + * @param currentRetry - The current retry attempt number. + * @param retryAfterHeader - The value of the "retry-after" header from the response. + * @returns A promise that resolves to a boolean indicating whether a retry should be attempted. + */ + async pauseForRetry(httpStatusCode, currentRetry, logger31) { + if (this._isNewRequest) { + this._isNewRequest = false; + this.maxRetries = httpStatusCode === Constants_exports.HTTP_GONE ? LINEAR_STRATEGY_NUM_RETRIES : EXPONENTIAL_STRATEGY_NUM_RETRIES; + } + if ((HTTP_STATUS_400_CODES_FOR_EXPONENTIAL_STRATEGY2.includes(httpStatusCode) || httpStatusCode >= Constants_exports.HTTP_SERVER_ERROR_RANGE_START && httpStatusCode <= Constants_exports.HTTP_SERVER_ERROR_RANGE_END && currentRetry < this.maxRetries) && currentRetry < this.maxRetries) { + const retryAfterDelay = httpStatusCode === Constants_exports.HTTP_GONE ? _ImdsRetryPolicy.HTTP_STATUS_GONE_RETRY_AFTER_MS : this.exponentialRetryStrategy.calculateDelay(currentRetry); + logger31.verbose(`Retrying request in ${retryAfterDelay}ms (retry attempt: ${currentRetry + 1})`, ""); + await new Promise((resolve) => { + return setTimeout(resolve, retryAfterDelay); + }); + return true; + } + return false; + } + }; + } +}); + +// node_modules/@azure/identity/node_modules/@azure/msal-node/dist/client/ManagedIdentitySources/Imds.mjs +var IMDS_TOKEN_PATH2, DEFAULT_IMDS_ENDPOINT2, IMDS_API_VERSION, Imds2; +var init_Imds = __esm({ + "node_modules/@azure/identity/node_modules/@azure/msal-node/dist/client/ManagedIdentitySources/Imds.mjs"() { + "use strict"; + init_ManagedIdentityRequestParameters(); + init_BaseManagedIdentitySource(); + init_Constants2(); + init_ImdsRetryPolicy(); + IMDS_TOKEN_PATH2 = "/metadata/identity/oauth2/token"; + DEFAULT_IMDS_ENDPOINT2 = `http://169.254.169.254${IMDS_TOKEN_PATH2}`; + IMDS_API_VERSION = "2018-02-01"; + Imds2 = class _Imds extends BaseManagedIdentitySource2 { + /** + * Constructs an Imds instance with the specified configuration. + * + * @param logger - Logger instance for recording debug information and errors + * @param nodeStorage - NodeStorage instance used for token caching operations + * @param networkClient - Network client implementation for making HTTP requests to IMDS + * @param cryptoProvider - CryptoProvider for generating correlation IDs and other cryptographic operations + * @param disableInternalRetries - When true, disables the built-in retry logic for IMDS requests + * @param identityEndpoint - The complete IMDS endpoint URL including the token path + */ + constructor(logger31, nodeStorage, networkClient, cryptoProvider, disableInternalRetries, identityEndpoint) { + super(logger31, nodeStorage, networkClient, cryptoProvider, disableInternalRetries); + this.identityEndpoint = identityEndpoint; + } + /** + * Creates an Imds instance with the appropriate endpoint configuration. + * + * This method checks for the presence of the AZURE_POD_IDENTITY_AUTHORITY_HOST environment + * variable, which is used in Azure Kubernetes Service (AKS) environments with Azure AD + * Pod Identity. If found, it uses that endpoint; otherwise, it falls back to the standard + * IMDS endpoint (169.254.169.254). + * + * @param logger - Logger instance for recording endpoint discovery and validation + * @param nodeStorage - NodeStorage instance for token caching + * @param networkClient - Network client for HTTP requests + * @param cryptoProvider - CryptoProvider for cryptographic operations + * @param disableInternalRetries - Whether to disable built-in retry logic + * + * @returns A configured Imds instance ready to make token requests + */ + static tryCreate(logger31, nodeStorage, networkClient, cryptoProvider, disableInternalRetries) { + let validatedIdentityEndpoint; + if (process.env[ManagedIdentityEnvironmentVariableNames2.AZURE_POD_IDENTITY_AUTHORITY_HOST]) { + logger31.info(`[Managed Identity] Environment variable ${ManagedIdentityEnvironmentVariableNames2.AZURE_POD_IDENTITY_AUTHORITY_HOST} for ${ManagedIdentitySourceNames2.IMDS} returned endpoint: ${process.env[ManagedIdentityEnvironmentVariableNames2.AZURE_POD_IDENTITY_AUTHORITY_HOST]}`, ""); + validatedIdentityEndpoint = _Imds.getValidatedEnvVariableUrlString(ManagedIdentityEnvironmentVariableNames2.AZURE_POD_IDENTITY_AUTHORITY_HOST, `${process.env[ManagedIdentityEnvironmentVariableNames2.AZURE_POD_IDENTITY_AUTHORITY_HOST]}${IMDS_TOKEN_PATH2}`, ManagedIdentitySourceNames2.IMDS, logger31); + } else { + logger31.info(`[Managed Identity] Unable to find ${ManagedIdentityEnvironmentVariableNames2.AZURE_POD_IDENTITY_AUTHORITY_HOST} environment variable for ${ManagedIdentitySourceNames2.IMDS}, using the default endpoint.`, ""); + validatedIdentityEndpoint = DEFAULT_IMDS_ENDPOINT2; + } + return new _Imds(logger31, nodeStorage, networkClient, cryptoProvider, disableInternalRetries, validatedIdentityEndpoint); + } + /** + * Creates a properly configured HTTP request for acquiring an access token from IMDS. + * + * This method builds a complete request object with all necessary headers, query parameters, + * and retry policies required by the Azure Instance Metadata Service. + * + * Key request components: + * - HTTP GET method to the IMDS token endpoint + * - Metadata header set to "true" (required by IMDS) + * - API version parameter (currently "2018-02-01") + * - Resource parameter specifying the target audience + * - Identity-specific parameters for user-assigned managed identities + * - IMDS-specific retry policy + * + * @param resource - The target resource/scope for which to request an access token (e.g., "https://graph.microsoft.com/.default") + * @param managedIdentityId - The managed identity configuration specifying whether to use system-assigned or user-assigned identity + * + * @returns A configured ManagedIdentityRequestParameters object ready for network execution + */ + createRequest(resource, managedIdentityId) { + const request = new ManagedIdentityRequestParameters2(HttpMethod4.GET, this.identityEndpoint); + request.headers[ManagedIdentityHeaders2.METADATA_HEADER_NAME] = "true"; + request.queryParameters[ManagedIdentityQueryParameters2.API_VERSION] = IMDS_API_VERSION; + request.queryParameters[ManagedIdentityQueryParameters2.RESOURCE] = resource; + if (managedIdentityId.idType !== ManagedIdentityIdType2.SYSTEM_ASSIGNED) { + request.queryParameters[this.getManagedIdentityUserAssignedIdQueryParameterKey( + managedIdentityId.idType, + true + // indicates source is IMDS + )] = managedIdentityId.id; + } + request.retryPolicy = new ImdsRetryPolicy2(); + return request; + } + }; + } +}); + +// node_modules/@azure/identity/node_modules/@azure/msal-node/dist/client/ManagedIdentitySources/ServiceFabric.mjs +var SERVICE_FABRIC_MSI_API_VERSION, ServiceFabric2; +var init_ServiceFabric = __esm({ + "node_modules/@azure/identity/node_modules/@azure/msal-node/dist/client/ManagedIdentitySources/ServiceFabric.mjs"() { + "use strict"; + init_ManagedIdentityRequestParameters(); + init_BaseManagedIdentitySource(); + init_Constants2(); + SERVICE_FABRIC_MSI_API_VERSION = "2019-07-01-preview"; + ServiceFabric2 = class _ServiceFabric extends BaseManagedIdentitySource2 { + /** + * Constructs a new ServiceFabric managed identity source for acquiring tokens from Azure Service Fabric clusters. + * + * Service Fabric managed identity allows applications running in Service Fabric clusters to authenticate + * without storing credentials in code. This source handles token acquisition using the Service Fabric + * Managed Identity Token Service (MITS). + * + * @param logger - Logger instance for logging authentication events and debugging information + * @param nodeStorage - NodeStorage instance for caching tokens and other authentication artifacts + * @param networkClient - Network client for making HTTP requests to the Service Fabric identity endpoint + * @param cryptoProvider - Crypto provider for cryptographic operations like token validation + * @param disableInternalRetries - Whether to disable internal retry logic for failed requests + * @param identityEndpoint - The Service Fabric managed identity endpoint URL + * @param identityHeader - The Service Fabric managed identity secret header value + */ + constructor(logger31, nodeStorage, networkClient, cryptoProvider, disableInternalRetries, identityEndpoint, identityHeader) { + super(logger31, nodeStorage, networkClient, cryptoProvider, disableInternalRetries); + this.identityEndpoint = identityEndpoint; + this.identityHeader = identityHeader; + } + /** + * Retrieves the environment variables required for Service Fabric managed identity authentication. + * + * Service Fabric managed identity requires three specific environment variables to be set by the + * Service Fabric runtime: + * - IDENTITY_ENDPOINT: The endpoint URL for the Managed Identity Token Service (MITS) + * - IDENTITY_HEADER: A secret value used for authentication with the MITS + * - IDENTITY_SERVER_THUMBPRINT: The thumbprint of the MITS server certificate for secure communication + * + * @returns An array containing the identity endpoint, identity header, and identity server thumbprint values. + * Elements will be undefined if the corresponding environment variables are not set. + */ + static getEnvironmentVariables() { + const identityEndpoint = process.env[ManagedIdentityEnvironmentVariableNames2.IDENTITY_ENDPOINT]; + const identityHeader = process.env[ManagedIdentityEnvironmentVariableNames2.IDENTITY_HEADER]; + const identityServerThumbprint = process.env[ManagedIdentityEnvironmentVariableNames2.IDENTITY_SERVER_THUMBPRINT]; + return [identityEndpoint, identityHeader, identityServerThumbprint]; + } + /** + * Attempts to create a ServiceFabric managed identity source if the runtime environment supports it. + * + * Checks for the presence of all required Service Fabric environment variables + * and validates the endpoint URL format. It will only create a ServiceFabric instance if the application + * is running in a properly configured Service Fabric cluster with managed identity enabled. + * + * Note: User-assigned managed identities must be configured at the cluster level, not at runtime. + * This method will log a warning if a user-assigned identity is requested. + * + * @param logger - Logger instance for logging creation events and validation results + * @param nodeStorage - NodeStorage instance for caching tokens and authentication artifacts + * @param networkClient - Network client for making HTTP requests to the identity endpoint + * @param cryptoProvider - Crypto provider for cryptographic operations + * @param disableInternalRetries - Whether to disable internal retry logic for failed requests + * @param managedIdentityId - Managed identity identifier specifying system-assigned or user-assigned identity + * + * @returns A ServiceFabric instance if all environment variables are valid and present, otherwise null + */ + static tryCreate(logger31, nodeStorage, networkClient, cryptoProvider, disableInternalRetries, managedIdentityId) { + const [identityEndpoint, identityHeader, identityServerThumbprint] = _ServiceFabric.getEnvironmentVariables(); + if (!identityEndpoint || !identityHeader || !identityServerThumbprint) { + logger31.info(`[Managed Identity] ${ManagedIdentitySourceNames2.SERVICE_FABRIC} managed identity is unavailable because one or all of the '${ManagedIdentityEnvironmentVariableNames2.IDENTITY_HEADER}', '${ManagedIdentityEnvironmentVariableNames2.IDENTITY_ENDPOINT}' or '${ManagedIdentityEnvironmentVariableNames2.IDENTITY_SERVER_THUMBPRINT}' environment variables are not defined.`, ""); + return null; + } + const validatedIdentityEndpoint = _ServiceFabric.getValidatedEnvVariableUrlString(ManagedIdentityEnvironmentVariableNames2.IDENTITY_ENDPOINT, identityEndpoint, ManagedIdentitySourceNames2.SERVICE_FABRIC, logger31); + logger31.info(`[Managed Identity] Environment variables validation passed for ${ManagedIdentitySourceNames2.SERVICE_FABRIC} managed identity. Endpoint URI: ${validatedIdentityEndpoint}. Creating ${ManagedIdentitySourceNames2.SERVICE_FABRIC} managed identity.`, ""); + if (managedIdentityId.idType !== ManagedIdentityIdType2.SYSTEM_ASSIGNED) { + logger31.warning(`[Managed Identity] ${ManagedIdentitySourceNames2.SERVICE_FABRIC} user assigned managed identity is configured in the cluster, not during runtime. See also: https://learn.microsoft.com/en-us/azure/service-fabric/configure-existing-cluster-enable-managed-identity-token-service.`, ""); + } + return new _ServiceFabric(logger31, nodeStorage, networkClient, cryptoProvider, disableInternalRetries, identityEndpoint, identityHeader); + } + /** + * Creates HTTP request parameters for acquiring an access token from the Service Fabric Managed Identity Token Service (MITS). + * + * This method constructs a properly formatted HTTP GET request that includes: + * - The secret header for authentication with MITS + * - API version parameter for the Service Fabric MSI endpoint + * - Resource parameter specifying the target Azure service + * - Optional identity parameters for user-assigned managed identities + * + * The request follows the Service Fabric managed identity protocol and uses the 2019-07-01-preview API version. + * For user-assigned identities, the appropriate query parameter (client_id, object_id, or resource_id) is added + * based on the identity type. + * + * @param resource - The Azure resource URI for which the access token is requested (e.g., "https://vault.azure.net/") + * @param managedIdentityId - The managed identity configuration specifying system-assigned or user-assigned identity details + * + * @returns A configured ManagedIdentityRequestParameters object ready for network execution + */ + createRequest(resource, managedIdentityId) { + const request = new ManagedIdentityRequestParameters2(HttpMethod4.GET, this.identityEndpoint); + request.headers[ManagedIdentityHeaders2.ML_AND_SF_SECRET_HEADER_NAME] = this.identityHeader; + request.queryParameters[ManagedIdentityQueryParameters2.API_VERSION] = SERVICE_FABRIC_MSI_API_VERSION; + request.queryParameters[ManagedIdentityQueryParameters2.RESOURCE] = resource; + if (managedIdentityId.idType !== ManagedIdentityIdType2.SYSTEM_ASSIGNED) { + request.queryParameters[this.getManagedIdentityUserAssignedIdQueryParameterKey(managedIdentityId.idType)] = managedIdentityId.id; + } + return request; + } + }; + } +}); + +// node_modules/@azure/identity/node_modules/@azure/msal-node/dist/client/ManagedIdentitySources/MachineLearning.mjs +var MACHINE_LEARNING_MSI_API_VERSION, MANAGED_IDENTITY_MACHINE_LEARNING_UNSUPPORTED_ID_TYPE_ERROR2, MachineLearning2; +var init_MachineLearning = __esm({ + "node_modules/@azure/identity/node_modules/@azure/msal-node/dist/client/ManagedIdentitySources/MachineLearning.mjs"() { + "use strict"; + init_BaseManagedIdentitySource(); + init_Constants2(); + init_ManagedIdentityRequestParameters(); + MACHINE_LEARNING_MSI_API_VERSION = "2017-09-01"; + MANAGED_IDENTITY_MACHINE_LEARNING_UNSUPPORTED_ID_TYPE_ERROR2 = `Only client id is supported for user-assigned managed identity in ${ManagedIdentitySourceNames2.MACHINE_LEARNING}.`; + MachineLearning2 = class _MachineLearning extends BaseManagedIdentitySource2 { + /** + * Creates a new MachineLearning managed identity source instance. + * + * @param logger - Logger instance for diagnostic information + * @param nodeStorage - Node storage implementation for caching + * @param networkClient - Network client for making HTTP requests + * @param cryptoProvider - Cryptographic operations provider + * @param disableInternalRetries - Whether to disable automatic request retries + * @param msiEndpoint - The MSI endpoint URL from environment variables + * @param secret - The MSI secret from environment variables + */ + constructor(logger31, nodeStorage, networkClient, cryptoProvider, disableInternalRetries, msiEndpoint, secret) { + super(logger31, nodeStorage, networkClient, cryptoProvider, disableInternalRetries); + this.msiEndpoint = msiEndpoint; + this.secret = secret; + } + /** + * Retrieves the required environment variables for Azure Machine Learning managed identity. + * + * This method checks for the presence of MSI_ENDPOINT and MSI_SECRET environment variables + * that are automatically set by the Azure Machine Learning platform when managed identity + * is enabled for the compute instance or cluster. + * + * @returns An array containing [msiEndpoint, secret] where either value may be undefined + * if the corresponding environment variable is not set + */ + static getEnvironmentVariables() { + const msiEndpoint = process.env[ManagedIdentityEnvironmentVariableNames2.MSI_ENDPOINT]; + const secret = process.env[ManagedIdentityEnvironmentVariableNames2.MSI_SECRET]; + return [msiEndpoint, secret]; + } + /** + * Attempts to create a MachineLearning managed identity source. + * + * This method validates the Azure Machine Learning environment by checking for the required + * MSI_ENDPOINT and MSI_SECRET environment variables. If both are present and valid, + * it creates and returns a MachineLearning instance. If either is missing or invalid, + * it returns null, indicating that this managed identity source is not available + * in the current environment. + * + * @param logger - Logger instance for diagnostic information + * @param nodeStorage - Node storage implementation for caching + * @param networkClient - Network client for making HTTP requests + * @param cryptoProvider - Cryptographic operations provider + * @param disableInternalRetries - Whether to disable automatic request retries + * + * @returns A new MachineLearning instance if the environment is valid, null otherwise + */ + static tryCreate(logger31, nodeStorage, networkClient, cryptoProvider, disableInternalRetries) { + const [msiEndpoint, secret] = _MachineLearning.getEnvironmentVariables(); + if (!msiEndpoint || !secret) { + logger31.info(`[Managed Identity] ${ManagedIdentitySourceNames2.MACHINE_LEARNING} managed identity is unavailable because one or both of the '${ManagedIdentityEnvironmentVariableNames2.MSI_ENDPOINT}' and '${ManagedIdentityEnvironmentVariableNames2.MSI_SECRET}' environment variables are not defined.`, ""); + return null; + } + const validatedMsiEndpoint = _MachineLearning.getValidatedEnvVariableUrlString(ManagedIdentityEnvironmentVariableNames2.MSI_ENDPOINT, msiEndpoint, ManagedIdentitySourceNames2.MACHINE_LEARNING, logger31); + logger31.info(`[Managed Identity] Environment variables validation passed for ${ManagedIdentitySourceNames2.MACHINE_LEARNING} managed identity. Endpoint URI: ${validatedMsiEndpoint}. Creating ${ManagedIdentitySourceNames2.MACHINE_LEARNING} managed identity.`, ""); + return new _MachineLearning(logger31, nodeStorage, networkClient, cryptoProvider, disableInternalRetries, msiEndpoint, secret); + } + /** + * Creates a managed identity token request for Azure Machine Learning environments. + * + * This method constructs the HTTP request parameters needed to acquire an access token + * from the Azure Machine Learning managed identity endpoint. It handles both system-assigned + * and user-assigned managed identities with specific logic for each type: + * + * - System-assigned: Uses the DEFAULT_IDENTITY_CLIENT_ID environment variable + * - User-assigned: Only supports client ID-based identification (not object ID or resource ID) + * + * The request uses the 2017-09-01 API version and includes the required secret header + * for authentication with the MSI endpoint. + * + * @param resource - The target resource/scope for which to request an access token (e.g., "https://graph.microsoft.com/.default") + * @param managedIdentityId - The managed identity configuration specifying whether to use system-assigned or user-assigned identity + * + * @returns A configured ManagedIdentityRequestParameters object ready for network execution + * + * @throws Error if an unsupported managed identity ID type is specified (only client ID is supported for user-assigned) + */ + createRequest(resource, managedIdentityId) { + const request = new ManagedIdentityRequestParameters2(HttpMethod4.GET, this.msiEndpoint); + request.headers[ManagedIdentityHeaders2.METADATA_HEADER_NAME] = "true"; + request.headers[ManagedIdentityHeaders2.ML_AND_SF_SECRET_HEADER_NAME] = this.secret; + request.queryParameters[ManagedIdentityQueryParameters2.API_VERSION] = MACHINE_LEARNING_MSI_API_VERSION; + request.queryParameters[ManagedIdentityQueryParameters2.RESOURCE] = resource; + if (managedIdentityId.idType === ManagedIdentityIdType2.SYSTEM_ASSIGNED) { + request.queryParameters[ManagedIdentityUserAssignedIdQueryParameterNames2.MANAGED_IDENTITY_CLIENT_ID_2017] = process.env[ManagedIdentityEnvironmentVariableNames2.DEFAULT_IDENTITY_CLIENT_ID]; + } else if (managedIdentityId.idType === ManagedIdentityIdType2.USER_ASSIGNED_CLIENT_ID) { + request.queryParameters[this.getManagedIdentityUserAssignedIdQueryParameterKey( + managedIdentityId.idType, + false, + // isIMDS + true + // uses2017API + )] = managedIdentityId.id; + } else { + throw new Error(MANAGED_IDENTITY_MACHINE_LEARNING_UNSUPPORTED_ID_TYPE_ERROR2); + } + return request; + } + }; + } +}); + +// node_modules/@azure/identity/node_modules/@azure/msal-node/dist/client/ManagedIdentityClient.mjs +var ManagedIdentityClient2; +var init_ManagedIdentityClient = __esm({ + "node_modules/@azure/identity/node_modules/@azure/msal-node/dist/client/ManagedIdentityClient.mjs"() { + "use strict"; + init_AppService(); + init_AzureArc(); + init_CloudShell(); + init_Imds(); + init_ServiceFabric(); + init_ManagedIdentityError(); + init_Constants2(); + init_MachineLearning(); + init_ManagedIdentityErrorCodes(); + ManagedIdentityClient2 = class _ManagedIdentityClient { + constructor(logger31, nodeStorage, networkClient, cryptoProvider, disableInternalRetries) { + this.logger = logger31; + this.nodeStorage = nodeStorage; + this.networkClient = networkClient; + this.cryptoProvider = cryptoProvider; + this.disableInternalRetries = disableInternalRetries; + } + async sendManagedIdentityTokenRequest(managedIdentityRequest, managedIdentityId, fakeAuthority, refreshAccessToken2) { + if (!_ManagedIdentityClient.identitySource) { + _ManagedIdentityClient.identitySource = this.selectManagedIdentitySource(this.logger, this.nodeStorage, this.networkClient, this.cryptoProvider, this.disableInternalRetries, managedIdentityId); + } + return _ManagedIdentityClient.identitySource.acquireTokenWithManagedIdentity(managedIdentityRequest, managedIdentityId, fakeAuthority, refreshAccessToken2); + } + allEnvironmentVariablesAreDefined(environmentVariables) { + return Object.values(environmentVariables).every((environmentVariable) => { + return environmentVariable !== void 0; + }); + } + /** + * Determine the Managed Identity Source based on available environment variables. This API is consumed by ManagedIdentityApplication's getManagedIdentitySource. + * @returns ManagedIdentitySourceNames - The Managed Identity source's name + */ + getManagedIdentitySource() { + _ManagedIdentityClient.sourceName = this.allEnvironmentVariablesAreDefined(ServiceFabric2.getEnvironmentVariables()) ? ManagedIdentitySourceNames2.SERVICE_FABRIC : this.allEnvironmentVariablesAreDefined(AppService2.getEnvironmentVariables()) ? ManagedIdentitySourceNames2.APP_SERVICE : this.allEnvironmentVariablesAreDefined(MachineLearning2.getEnvironmentVariables()) ? ManagedIdentitySourceNames2.MACHINE_LEARNING : this.allEnvironmentVariablesAreDefined(CloudShell2.getEnvironmentVariables()) ? ManagedIdentitySourceNames2.CLOUD_SHELL : this.allEnvironmentVariablesAreDefined(AzureArc2.getEnvironmentVariables()) ? ManagedIdentitySourceNames2.AZURE_ARC : ManagedIdentitySourceNames2.DEFAULT_TO_IMDS; + return _ManagedIdentityClient.sourceName; + } + /** + * Tries to create a managed identity source for all sources + * @returns the managed identity Source + */ + selectManagedIdentitySource(logger31, nodeStorage, networkClient, cryptoProvider, disableInternalRetries, managedIdentityId) { + const source = ServiceFabric2.tryCreate(logger31, nodeStorage, networkClient, cryptoProvider, disableInternalRetries, managedIdentityId) || AppService2.tryCreate(logger31, nodeStorage, networkClient, cryptoProvider, disableInternalRetries) || MachineLearning2.tryCreate(logger31, nodeStorage, networkClient, cryptoProvider, disableInternalRetries) || CloudShell2.tryCreate(logger31, nodeStorage, networkClient, cryptoProvider, disableInternalRetries, managedIdentityId) || AzureArc2.tryCreate(logger31, nodeStorage, networkClient, cryptoProvider, disableInternalRetries, managedIdentityId) || Imds2.tryCreate(logger31, nodeStorage, networkClient, cryptoProvider, disableInternalRetries); + if (!source) { + throw createManagedIdentityError2(unableToCreateSource2); + } + return source; + } + }; + } +}); + +// node_modules/@azure/identity/node_modules/@azure/msal-node/dist/client/ManagedIdentityApplication.mjs +var SOURCES_THAT_SUPPORT_TOKEN_REVOCATION2, ManagedIdentityApplication2; +var init_ManagedIdentityApplication = __esm({ + "node_modules/@azure/identity/node_modules/@azure/msal-node/dist/client/ManagedIdentityApplication.mjs"() { + "use strict"; + init_index_node(); + init_Configuration(); + init_packageMetadata2(); + init_CryptoProvider(); + init_ClientCredentialClient(); + init_ManagedIdentityClient(); + init_NodeStorage(); + init_Constants2(); + init_HashUtils(); + SOURCES_THAT_SUPPORT_TOKEN_REVOCATION2 = [ManagedIdentitySourceNames2.SERVICE_FABRIC]; + ManagedIdentityApplication2 = class _ManagedIdentityApplication { + constructor(configuration) { + this.config = buildManagedIdentityConfiguration2(configuration || {}); + this.logger = new Logger2(this.config.system.loggerOptions, name4, version5); + const fakeStatusAuthorityOptions = { + canonicalAuthority: Constants_exports.DEFAULT_AUTHORITY + }; + if (!_ManagedIdentityApplication.nodeStorage) { + _ManagedIdentityApplication.nodeStorage = new NodeStorage2(this.logger, this.config.managedIdentityId.id, DEFAULT_CRYPTO_IMPLEMENTATION2, fakeStatusAuthorityOptions); + } + this.networkClient = this.config.system.networkClient; + this.cryptoProvider = new CryptoProvider2(); + const fakeAuthorityOptions = { + protocolMode: ProtocolMode2.AAD, + knownAuthorities: [DEFAULT_AUTHORITY_FOR_MANAGED_IDENTITY2], + cloudDiscoveryMetadata: "", + authorityMetadata: "" + }; + this.fakeAuthority = new Authority2( + DEFAULT_AUTHORITY_FOR_MANAGED_IDENTITY2, + this.networkClient, + _ManagedIdentityApplication.nodeStorage, + fakeAuthorityOptions, + this.logger, + this.cryptoProvider.createNewGuid(), + // correlationID + new StubPerformanceClient2(), + true + ); + this.fakeClientCredentialClient = new ClientCredentialClient2({ + authOptions: { + clientId: this.config.managedIdentityId.id, + authority: this.fakeAuthority + } + }); + this.managedIdentityClient = new ManagedIdentityClient2(this.logger, _ManagedIdentityApplication.nodeStorage, this.networkClient, this.cryptoProvider, this.config.disableInternalRetries); + this.hashUtils = new HashUtils2(); + } + /** + * Acquire an access token from the cache or the managed identity + * @param managedIdentityRequest - the ManagedIdentityRequestParams object passed in by the developer + * @returns the access token + */ + async acquireToken(managedIdentityRequestParams) { + if (!managedIdentityRequestParams.resource) { + throw createClientConfigurationError2(ClientConfigurationErrorCodes_exports.urlEmptyError); + } + const managedIdentityRequest = { + forceRefresh: managedIdentityRequestParams.forceRefresh, + resource: managedIdentityRequestParams.resource.replace("/.default", ""), + scopes: [ + managedIdentityRequestParams.resource.replace("/.default", "") + ], + authority: this.fakeAuthority.canonicalAuthority, + correlationId: this.cryptoProvider.createNewGuid(), + claims: managedIdentityRequestParams.claims, + clientCapabilities: this.config.clientCapabilities + }; + if (managedIdentityRequest.forceRefresh) { + return this.acquireTokenFromManagedIdentity(managedIdentityRequest, this.config.managedIdentityId, this.fakeAuthority); + } + const [cachedAuthenticationResult, lastCacheOutcome] = await this.fakeClientCredentialClient.getCachedAuthenticationResult(managedIdentityRequest, this.config, this.cryptoProvider, this.fakeAuthority, _ManagedIdentityApplication.nodeStorage); + if (managedIdentityRequest.claims) { + const sourceName = this.managedIdentityClient.getManagedIdentitySource(); + if (cachedAuthenticationResult && SOURCES_THAT_SUPPORT_TOKEN_REVOCATION2.includes(sourceName)) { + const revokedTokenSha256Hash = this.hashUtils.sha256(cachedAuthenticationResult.accessToken).toString(Constants_exports.EncodingTypes.HEX); + managedIdentityRequest.revokedTokenSha256Hash = revokedTokenSha256Hash; + } + return this.acquireTokenFromManagedIdentity(managedIdentityRequest, this.config.managedIdentityId, this.fakeAuthority); + } + if (cachedAuthenticationResult) { + if (lastCacheOutcome === Constants_exports.CacheOutcome.PROACTIVELY_REFRESHED) { + this.logger.info("ClientCredentialClient:getCachedAuthenticationResult - Cached access token's refreshOn property has been exceeded'. It's not expired, but must be refreshed.", managedIdentityRequest.correlationId); + const refreshAccessToken2 = true; + await this.acquireTokenFromManagedIdentity(managedIdentityRequest, this.config.managedIdentityId, this.fakeAuthority, refreshAccessToken2); + } + return cachedAuthenticationResult; + } else { + return this.acquireTokenFromManagedIdentity(managedIdentityRequest, this.config.managedIdentityId, this.fakeAuthority); + } + } + /** + * Acquires a token from a managed identity endpoint. + * + * @param managedIdentityRequest - The request object containing parameters for the managed identity token request. + * @param managedIdentityId - The identifier for the managed identity (e.g., client ID or resource ID). + * @param fakeAuthority - A placeholder authority used for the token request. + * @param refreshAccessToken - Optional flag indicating whether to force a refresh of the access token. + * @returns A promise that resolves to an AuthenticationResult containing the acquired token and related information. + */ + async acquireTokenFromManagedIdentity(managedIdentityRequest, managedIdentityId, fakeAuthority, refreshAccessToken2) { + return this.managedIdentityClient.sendManagedIdentityTokenRequest(managedIdentityRequest, managedIdentityId, fakeAuthority, refreshAccessToken2); + } + /** + * Determine the Managed Identity Source based on available environment variables. This API is consumed by Azure Identity SDK. + * @returns ManagedIdentitySourceNames - The Managed Identity source's name + */ + getManagedIdentitySource() { + return ManagedIdentityClient2.sourceName || this.managedIdentityClient.getManagedIdentitySource(); + } + }; + } +}); + +// node_modules/@azure/identity/node_modules/@azure/msal-node/dist/cache/distributed/DistributedCachePlugin.mjs +var DistributedCachePlugin2; +var init_DistributedCachePlugin = __esm({ + "node_modules/@azure/identity/node_modules/@azure/msal-node/dist/cache/distributed/DistributedCachePlugin.mjs"() { + "use strict"; + init_index_node(); + DistributedCachePlugin2 = class { + constructor(client, partitionManager) { + this.client = client; + this.partitionManager = partitionManager; + } + /** + * Deserializes the cache before accessing it + * @param cacheContext - TokenCacheContext + */ + async beforeCacheAccess(cacheContext) { + const partitionKey = await this.partitionManager.getKey(); + const cacheData = await this.client.get(partitionKey); + cacheContext.tokenCache.deserialize(cacheData); + } + /** + * Serializes the cache after accessing it + * @param cacheContext - TokenCacheContext + */ + async afterCacheAccess(cacheContext) { + if (cacheContext.cacheHasChanged) { + const kvStore = cacheContext.tokenCache.getKVStore(); + const accountEntities = Object.values(kvStore).filter((value) => AccountEntityUtils_exports.isAccountEntity(value)); + let partitionKey; + if (accountEntities.length > 0) { + const accountEntity = accountEntities[0]; + partitionKey = await this.partitionManager.extractKey(accountEntity); + } else { + partitionKey = await this.partitionManager.getKey(); + } + await this.client.set(partitionKey, cacheContext.tokenCache.serialize()); + } + } + }; + } +}); + +// node_modules/@azure/identity/node_modules/@azure/msal-node/dist/index.mjs +var dist_exports = {}; +__export(dist_exports, { + AuthError: () => AuthError2, + AuthErrorCodes: () => AuthErrorCodes_exports2, + AzureCloudInstance: () => AzureCloudInstance2, + ClientAssertion: () => ClientAssertion2, + ClientAuthError: () => ClientAuthError2, + ClientAuthErrorCodes: () => ClientAuthErrorCodes_exports2, + ClientConfigurationError: () => ClientConfigurationError2, + ClientConfigurationErrorCodes: () => ClientConfigurationErrorCodes_exports, + ConfidentialClientApplication: () => ConfidentialClientApplication2, + CryptoProvider: () => CryptoProvider2, + DistributedCachePlugin: () => DistributedCachePlugin2, + InteractionRequiredAuthError: () => InteractionRequiredAuthError2, + InteractionRequiredAuthErrorCodes: () => InteractionRequiredAuthErrorCodes_exports, + LogLevel: () => LogLevel2, + Logger: () => Logger2, + ManagedIdentityApplication: () => ManagedIdentityApplication2, + ManagedIdentitySourceNames: () => ManagedIdentitySourceNames2, + PromptValue: () => PromptValue3, + ProtocolMode: () => ProtocolMode2, + PublicClientApplication: () => PublicClientApplication2, + ResponseMode: () => ResponseMode3, + ServerError: () => ServerError2, + TokenCache: () => TokenCache2, + TokenCacheContext: () => TokenCacheContext2, + internals: () => internals_exports2, + version: () => version5 +}); +var PromptValue3, ResponseMode3; +var init_dist = __esm({ + "node_modules/@azure/identity/node_modules/@azure/msal-node/dist/index.mjs"() { + "use strict"; + init_internals(); + init_index_node(); + init_index_node(); + init_PublicClientApplication(); + init_ConfidentialClientApplication(); + init_ManagedIdentityApplication(); + init_ClientAssertion(); + init_TokenCache(); + init_DistributedCachePlugin(); + init_Constants2(); + init_CryptoProvider(); + init_packageMetadata2(); + PromptValue3 = Constants_exports.PromptValue; + ResponseMode3 = Constants_exports.ResponseMode; + } +}); + +// node_modules/@typespec/ts-http-runtime/dist/esm/util/random.js +function getRandomIntegerInclusive(min, max) { + min = Math.ceil(min); + max = Math.floor(max); + const offset = Math.floor(Math.random() * (max - min + 1)); + return offset + min; +} +var init_random = __esm({ + "node_modules/@typespec/ts-http-runtime/dist/esm/util/random.js"() { + } +}); + +// node_modules/@typespec/ts-http-runtime/dist/esm/util/delay.js +function calculateRetryDelay(retryAttempt, config2) { + const exponentialDelay = config2.retryDelayInMs * Math.pow(2, retryAttempt); + const clampedDelay = Math.min(config2.maxRetryDelayInMs, exponentialDelay); + const retryAfterInMs = clampedDelay / 2 + getRandomIntegerInclusive(0, clampedDelay / 2); + return { retryAfterInMs }; +} +var init_delay = __esm({ + "node_modules/@typespec/ts-http-runtime/dist/esm/util/delay.js"() { + init_random(); + } +}); + +// node_modules/@typespec/ts-http-runtime/dist/esm/util/object.js +function isObject(input) { + return typeof input === "object" && input !== null && !Array.isArray(input) && !(input instanceof RegExp) && !(input instanceof Date); +} +var init_object = __esm({ + "node_modules/@typespec/ts-http-runtime/dist/esm/util/object.js"() { + } +}); + +// node_modules/@typespec/ts-http-runtime/dist/esm/util/error.js +function isError(e) { + if (isObject(e)) { + const hasName = typeof e.name === "string"; + const hasMessage = typeof e.message === "string"; + return hasName && hasMessage; + } + return false; +} +var init_error = __esm({ + "node_modules/@typespec/ts-http-runtime/dist/esm/util/error.js"() { + init_object(); + } +}); + +// node_modules/@typespec/ts-http-runtime/dist/esm/util/sha256.js +var init_sha256 = __esm({ + "node_modules/@typespec/ts-http-runtime/dist/esm/util/sha256.js"() { + } +}); + +// node_modules/@typespec/ts-http-runtime/dist/esm/util/uuidUtils.js +function randomUUID() { + return crypto.randomUUID(); +} +var init_uuidUtils = __esm({ + "node_modules/@typespec/ts-http-runtime/dist/esm/util/uuidUtils.js"() { + } +}); + +// node_modules/@typespec/ts-http-runtime/dist/esm/util/checkEnvironment.js +var isBrowser, isWebWorker, isDeno, isBun, isNodeLike, isReactNative; +var init_checkEnvironment = __esm({ + "node_modules/@typespec/ts-http-runtime/dist/esm/util/checkEnvironment.js"() { + isBrowser = typeof window !== "undefined" && typeof window.document !== "undefined"; + isWebWorker = typeof self === "object" && typeof self?.importScripts === "function" && (self.constructor?.name === "DedicatedWorkerGlobalScope" || self.constructor?.name === "ServiceWorkerGlobalScope" || self.constructor?.name === "SharedWorkerGlobalScope"); + isDeno = typeof Deno !== "undefined" && typeof Deno.version !== "undefined" && typeof Deno.version.deno !== "undefined"; + isBun = typeof Bun !== "undefined" && typeof Bun.version !== "undefined"; + isNodeLike = typeof globalThis.process !== "undefined" && Boolean(globalThis.process.version) && Boolean(globalThis.process.versions?.node); + isReactNative = typeof navigator !== "undefined" && navigator?.product === "ReactNative"; + } +}); + +// node_modules/@typespec/ts-http-runtime/dist/esm/util/bytesEncoding.js +function uint8ArrayToString(bytes, format) { + return Buffer.from(bytes).toString(format); +} +function stringToUint8Array(value, format) { + return Buffer.from(value, format); +} +var init_bytesEncoding = __esm({ + "node_modules/@typespec/ts-http-runtime/dist/esm/util/bytesEncoding.js"() { + } +}); + +// node_modules/@typespec/ts-http-runtime/dist/esm/util/sanitizer.js +var RedactedString, defaultAllowedHeaderNames, defaultAllowedQueryParameters, Sanitizer; +var init_sanitizer = __esm({ + "node_modules/@typespec/ts-http-runtime/dist/esm/util/sanitizer.js"() { + init_object(); + RedactedString = "REDACTED"; + defaultAllowedHeaderNames = [ + "x-ms-client-request-id", + "x-ms-return-client-request-id", + "x-ms-useragent", + "x-ms-correlation-request-id", + "x-ms-request-id", + "client-request-id", + "ms-cv", + "return-client-request-id", + "traceparent", + "Access-Control-Allow-Credentials", + "Access-Control-Allow-Headers", + "Access-Control-Allow-Methods", + "Access-Control-Allow-Origin", + "Access-Control-Expose-Headers", + "Access-Control-Max-Age", + "Access-Control-Request-Headers", + "Access-Control-Request-Method", + "Origin", + "Accept", + "Accept-Encoding", + "Cache-Control", + "Connection", + "Content-Length", + "Content-Type", + "Date", + "ETag", + "Expires", + "If-Match", + "If-Modified-Since", + "If-None-Match", + "If-Unmodified-Since", + "Last-Modified", + "Pragma", + "Request-Id", + "Retry-After", + "Server", + "Transfer-Encoding", + "User-Agent", + "WWW-Authenticate" + ]; + defaultAllowedQueryParameters = ["api-version"]; + Sanitizer = class { + allowedHeaderNames; + allowedQueryParameters; + constructor({ additionalAllowedHeaderNames: allowedHeaderNames = [], additionalAllowedQueryParameters: allowedQueryParameters = [] } = {}) { + allowedHeaderNames = defaultAllowedHeaderNames.concat(allowedHeaderNames); + allowedQueryParameters = defaultAllowedQueryParameters.concat(allowedQueryParameters); + this.allowedHeaderNames = new Set(allowedHeaderNames.map((n) => n.toLowerCase())); + this.allowedQueryParameters = new Set(allowedQueryParameters.map((p) => p.toLowerCase())); + } + /** + * Sanitizes an object for logging. + * @param obj - The object to sanitize + * @returns - The sanitized object as a string + */ + sanitize(obj) { + const seen = /* @__PURE__ */ new Set(); + return JSON.stringify(obj, (key, value) => { + if (value instanceof Error) { + return { + ...value, + name: value.name, + message: value.message + }; + } + if (key === "headers" && isObject(value)) { + return this.sanitizeHeaders(value); + } else if (key === "url" && typeof value === "string") { + return this.sanitizeUrl(value); + } else if (key === "query" && isObject(value)) { + return this.sanitizeQuery(value); + } else if (key === "body") { + return void 0; + } else if (key === "response") { + return void 0; + } else if (key === "operationSpec") { + return void 0; + } else if (Array.isArray(value) || isObject(value)) { + if (seen.has(value)) { + return "[Circular]"; + } + seen.add(value); + } + return value; + }, 2); + } + /** + * Sanitizes a URL for logging. + * @param value - The URL to sanitize + * @returns - The sanitized URL as a string + */ + sanitizeUrl(value) { + if (typeof value !== "string" || value === null || value === "") { + return value; + } + const url2 = new URL(value); + if (!url2.search) { + return value; + } + for (const [key] of url2.searchParams) { + if (!this.allowedQueryParameters.has(key.toLowerCase())) { + url2.searchParams.set(key, RedactedString); + } + } + return url2.toString(); + } + sanitizeHeaders(obj) { + const sanitized = {}; + for (const key of Object.keys(obj)) { + if (this.allowedHeaderNames.has(key.toLowerCase())) { + sanitized[key] = obj[key]; + } else { + sanitized[key] = RedactedString; + } + } + return sanitized; + } + sanitizeQuery(value) { + if (typeof value !== "object" || value === null) { + return value; + } + const sanitized = {}; + for (const k of Object.keys(value)) { + if (this.allowedQueryParameters.has(k.toLowerCase())) { + sanitized[k] = value[k]; + } else { + sanitized[k] = RedactedString; + } + } + return sanitized; + } + }; + } +}); + +// node_modules/@typespec/ts-http-runtime/dist/esm/util/internal.js +var init_internal2 = __esm({ + "node_modules/@typespec/ts-http-runtime/dist/esm/util/internal.js"() { + init_delay(); + init_random(); + init_object(); + init_error(); + init_sha256(); + init_uuidUtils(); + init_checkEnvironment(); + init_bytesEncoding(); + init_sanitizer(); + } +}); + +// node_modules/@azure/core-util/dist/esm/aborterUtils.js +var init_aborterUtils = __esm({ + "node_modules/@azure/core-util/dist/esm/aborterUtils.js"() { + } +}); + +// node_modules/@azure/abort-controller/dist/esm/AbortError.js +var AbortError; +var init_AbortError = __esm({ + "node_modules/@azure/abort-controller/dist/esm/AbortError.js"() { + AbortError = class extends Error { + constructor(message) { + super(message); + this.name = "AbortError"; + } + }; + } +}); + +// node_modules/@azure/abort-controller/dist/esm/index.js +var init_esm3 = __esm({ + "node_modules/@azure/abort-controller/dist/esm/index.js"() { + init_AbortError(); + } +}); + +// node_modules/@azure/core-util/dist/esm/createAbortablePromise.js +function createAbortablePromise(buildPromise, options) { + const { cleanupBeforeAbort, abortSignal, abortErrorMsg } = options ?? {}; + return new Promise((resolve, reject) => { + function rejectOnAbort() { + reject(new AbortError(abortErrorMsg ?? "The operation was aborted.")); + } + function removeListeners() { + abortSignal?.removeEventListener("abort", onAbort); + } + function onAbort() { + cleanupBeforeAbort?.(); + removeListeners(); + rejectOnAbort(); + } + if (abortSignal?.aborted) { + return rejectOnAbort(); + } + try { + buildPromise((x) => { + removeListeners(); + resolve(x); + }, (x) => { + removeListeners(); + reject(x); + }); + } catch (err) { + reject(err); + } + abortSignal?.addEventListener("abort", onAbort); + }); +} +var init_createAbortablePromise = __esm({ + "node_modules/@azure/core-util/dist/esm/createAbortablePromise.js"() { + init_esm3(); + } +}); + +// node_modules/@azure/core-util/dist/esm/delay.js +function delay3(timeInMs, options) { + let token; + const { abortSignal, abortErrorMsg } = options ?? {}; + return createAbortablePromise((resolve) => { + token = setTimeout(resolve, timeInMs); + }, { + cleanupBeforeAbort: () => clearTimeout(token), + abortSignal, + abortErrorMsg: abortErrorMsg ?? StandardAbortMessage + }); +} +var StandardAbortMessage; +var init_delay2 = __esm({ + "node_modules/@azure/core-util/dist/esm/delay.js"() { + init_createAbortablePromise(); + init_internal2(); + StandardAbortMessage = "The delay was aborted."; + } +}); + +// node_modules/@azure/core-util/dist/esm/error.js +function getErrorMessage(e) { + if (isError(e)) { + return e.message; + } else { + let stringified; + try { + if (typeof e === "object" && e) { + stringified = JSON.stringify(e); + } else { + stringified = String(e); + } + } catch (err) { + stringified = "[unable to stringify input]"; + } + return `Unknown error ${stringified}`; + } +} +var init_error2 = __esm({ + "node_modules/@azure/core-util/dist/esm/error.js"() { + init_internal2(); + } +}); + +// node_modules/@azure/core-util/dist/esm/typeGuards.js +function isDefined(thing) { + return typeof thing !== "undefined" && thing !== null; +} +function isObjectWithProperties(thing, properties) { + if (!isDefined(thing) || typeof thing !== "object") { + return false; + } + for (const property of properties) { + if (!objectHasProperty(thing, property)) { + return false; + } + } + return true; +} +function objectHasProperty(thing, property) { + return isDefined(thing) && typeof thing === "object" && property in thing; +} +var init_typeGuards = __esm({ + "node_modules/@azure/core-util/dist/esm/typeGuards.js"() { + } +}); + +// node_modules/@azure/core-util/dist/esm/index.js +function calculateRetryDelay2(retryAttempt, config2) { + return calculateRetryDelay(retryAttempt, config2); +} +function isError2(e) { + return isError(e); +} +function uint8ArrayToString2(bytes, format) { + return uint8ArrayToString(bytes, format); +} +function stringToUint8Array2(value, format) { + return stringToUint8Array(value, format); +} +var isNode, isNodeLike2; +var init_esm4 = __esm({ + "node_modules/@azure/core-util/dist/esm/index.js"() { + init_internal2(); + init_aborterUtils(); + init_createAbortablePromise(); + init_delay2(); + init_error2(); + init_typeGuards(); + isNode = isNodeLike; + isNodeLike2 = isNodeLike; + } +}); + +// node_modules/@azure/identity/dist/esm/msal/msal.js +var init_msal = __esm({ + "node_modules/@azure/identity/dist/esm/msal/msal.js"() { + init_dist(); + } +}); + +// node_modules/@azure/identity/dist/esm/msal/utils.js +function ensureValidMsalToken(scopes, msalToken, getTokenOptions) { + const error2 = (message) => { + logger4.getToken.info(message); + return new AuthenticationRequiredError({ + scopes: Array.isArray(scopes) ? scopes : [scopes], + getTokenOptions, + message + }); + }; + if (!msalToken) { + throw error2("No response"); + } + if (!msalToken.expiresOn) { + throw error2(`Response had no "expiresOn" property.`); + } + if (!msalToken.accessToken) { + throw error2(`Response had no "accessToken" property.`); + } +} +function getAuthorityHost(options) { + let authorityHost = options?.authorityHost; + if (!authorityHost && isNodeLike2) { + authorityHost = process.env.AZURE_AUTHORITY_HOST; + } + return authorityHost ?? DefaultAuthorityHost; +} +function getAuthority(tenantId, host) { + if (!host) { + host = DefaultAuthorityHost; + } + if (new RegExp(`${tenantId}/?$`).test(host)) { + return host; + } + if (host.endsWith("/")) { + return host + tenantId; + } else { + return `${host}/${tenantId}`; + } +} +function getKnownAuthorities(tenantId, authorityHost, disableInstanceDiscovery) { + if (tenantId === "adfs" && authorityHost || disableInstanceDiscovery) { + return [authorityHost]; + } + return []; +} +function getMSALLogLevel(logLevel) { + switch (logLevel) { + case "error": + return dist_exports.LogLevel.Error; + case "info": + return dist_exports.LogLevel.Info; + case "verbose": + return dist_exports.LogLevel.Verbose; + case "warning": + return dist_exports.LogLevel.Warning; + default: + return dist_exports.LogLevel.Info; + } +} +function handleMsalError(scopes, error2, getTokenOptions) { + if (error2.name === "AuthError" || error2.name === "ClientAuthError" || error2.name === "BrowserAuthError") { + const msalError = error2; + switch (msalError.errorCode) { + case "endpoints_resolution_error": + logger4.info(formatError(scopes, error2.message)); + return new CredentialUnavailableError(error2.message); + case "device_code_polling_cancelled": + return new AbortError("The authentication has been aborted by the caller."); + case "consent_required": + case "interaction_required": + case "login_required": + logger4.info(formatError(scopes, `Authentication returned errorCode ${msalError.errorCode}`)); + break; + default: + logger4.info(formatError(scopes, `Failed to acquire token: ${error2.message}`)); + break; + } + } + if (error2.name === "ClientConfigurationError" || error2.name === "BrowserConfigurationAuthError" || error2.name === "AbortError" || error2.name === "AuthenticationError") { + return error2; + } + if (error2.name === "NativeAuthError") { + logger4.info(formatError(scopes, `Error from the native broker: ${error2.message} with status code: ${error2.statusCode}`)); + return error2; + } + return new AuthenticationRequiredError({ scopes, getTokenOptions, message: error2.message }); +} +function publicToMsal(account) { + return { + localAccountId: account.homeAccountId, + environment: account.authority, + username: account.username, + homeAccountId: account.homeAccountId, + tenantId: account.tenantId + }; +} +function msalToPublic(clientId, account) { + const record2 = { + authority: account.environment ?? DefaultAuthority, + homeAccountId: account.homeAccountId, + tenantId: account.tenantId || DefaultTenantId, + username: account.username, + clientId, + version: LatestAuthenticationRecordVersion + }; + return record2; +} +function serializeAuthenticationRecord(record2) { + return JSON.stringify(record2); +} +function deserializeAuthenticationRecord(serializedRecord) { + const parsed = JSON.parse(serializedRecord); + if (parsed.version && parsed.version !== LatestAuthenticationRecordVersion) { + throw Error("Unsupported AuthenticationRecord version"); + } + return parsed; +} +var logger4, LatestAuthenticationRecordVersion, defaultLoggerCallback; +var init_utils = __esm({ + "node_modules/@azure/identity/dist/esm/msal/utils.js"() { + init_errors(); + init_logging(); + init_constants(); + init_esm4(); + init_esm3(); + init_msal(); + logger4 = credentialLogger("IdentityUtils"); + LatestAuthenticationRecordVersion = "1.0"; + defaultLoggerCallback = (credLogger, platform3 = isNode ? "Node" : "Browser") => (level, message, containsPii) => { + if (containsPii) { + return; + } + switch (level) { + case dist_exports.LogLevel.Error: + credLogger.info(`MSAL ${platform3} V2 error: ${message}`); + return; + case dist_exports.LogLevel.Info: + credLogger.info(`MSAL ${platform3} V2 info message: ${message}`); + return; + case dist_exports.LogLevel.Verbose: + credLogger.info(`MSAL ${platform3} V2 verbose message: ${message}`); + return; + case dist_exports.LogLevel.Warning: + credLogger.info(`MSAL ${platform3} V2 warning: ${message}`); + return; + } + }; + } +}); + +// node_modules/@azure/core-client/dist/esm/base64.js +var init_base64 = __esm({ + "node_modules/@azure/core-client/dist/esm/base64.js"() { + } +}); + +// node_modules/@azure/core-client/dist/esm/interfaces.js +var XML_ATTRKEY, XML_CHARKEY; +var init_interfaces = __esm({ + "node_modules/@azure/core-client/dist/esm/interfaces.js"() { + XML_ATTRKEY = "$"; + XML_CHARKEY = "_"; + } +}); + +// node_modules/@azure/core-client/dist/esm/utils.js +function isPrimitiveBody(value, mapperTypeName) { + return mapperTypeName !== "Composite" && mapperTypeName !== "Dictionary" && (typeof value === "string" || typeof value === "number" || typeof value === "boolean" || mapperTypeName?.match(/^(Date|DateTime|DateTimeRfc1123|UnixTime|ByteArray|Base64Url)$/i) !== null || value === void 0 || value === null); +} +function handleNullableResponseAndWrappableBody(responseObject) { + const combinedHeadersAndBody = { + ...responseObject.headers, + ...responseObject.body + }; + if (responseObject.hasNullableType && Object.getOwnPropertyNames(combinedHeadersAndBody).length === 0) { + return responseObject.shouldWrapBody ? { body: null } : null; + } else { + return responseObject.shouldWrapBody ? { + ...responseObject.headers, + body: responseObject.body + } : combinedHeadersAndBody; + } +} +function flattenResponse(fullResponse, responseSpec) { + const parsedHeaders = fullResponse.parsedHeaders; + if (fullResponse.request.method === "HEAD") { + return { + ...parsedHeaders, + body: fullResponse.parsedBody + }; + } + const bodyMapper = responseSpec && responseSpec.bodyMapper; + const isNullable = Boolean(bodyMapper?.nullable); + const expectedBodyTypeName = bodyMapper?.type.name; + if (expectedBodyTypeName === "Stream") { + return { + ...parsedHeaders, + blobBody: fullResponse.blobBody, + readableStreamBody: fullResponse.readableStreamBody + }; + } + const modelProperties = expectedBodyTypeName === "Composite" && bodyMapper.type.modelProperties || {}; + const isPageableResponse = Object.keys(modelProperties).some((k) => modelProperties[k].serializedName === ""); + if (expectedBodyTypeName === "Sequence" || isPageableResponse) { + const arrayResponse = fullResponse.parsedBody ?? []; + for (const key of Object.keys(modelProperties)) { + if (modelProperties[key].serializedName) { + arrayResponse[key] = fullResponse.parsedBody?.[key]; + } + } + if (parsedHeaders) { + for (const key of Object.keys(parsedHeaders)) { + arrayResponse[key] = parsedHeaders[key]; + } + } + return isNullable && !fullResponse.parsedBody && !parsedHeaders && Object.getOwnPropertyNames(modelProperties).length === 0 ? null : arrayResponse; + } + return handleNullableResponseAndWrappableBody({ + body: fullResponse.parsedBody, + headers: parsedHeaders, + hasNullableType: isNullable, + shouldWrapBody: isPrimitiveBody(fullResponse.parsedBody, expectedBodyTypeName) + }); +} +var init_utils2 = __esm({ + "node_modules/@azure/core-client/dist/esm/utils.js"() { + } +}); + +// node_modules/@azure/core-client/dist/esm/serializer.js +var MapperTypeNames; +var init_serializer = __esm({ + "node_modules/@azure/core-client/dist/esm/serializer.js"() { + init_base64(); + init_interfaces(); + init_utils2(); + MapperTypeNames = { + Base64Url: "Base64Url", + Boolean: "Boolean", + ByteArray: "ByteArray", + Composite: "Composite", + Date: "Date", + DateTime: "DateTime", + DateTimeRfc1123: "DateTimeRfc1123", + Dictionary: "Dictionary", + Enum: "Enum", + Number: "Number", + Object: "Object", + Sequence: "Sequence", + String: "String", + Stream: "Stream", + TimeSpan: "TimeSpan", + UnixTime: "UnixTime" + }; + } +}); + +// node_modules/@typespec/ts-http-runtime/dist/esm/abort-controller/AbortError.js +var AbortError2; +var init_AbortError2 = __esm({ + "node_modules/@typespec/ts-http-runtime/dist/esm/abort-controller/AbortError.js"() { + AbortError2 = class extends Error { + constructor(message) { + super(message); + this.name = "AbortError"; + } + }; + } +}); + +// node_modules/@typespec/ts-http-runtime/dist/esm/httpHeaders.js +function normalizeName(name5) { + return name5.toLowerCase(); +} +function* headerIterator(map) { + for (const entry of map.values()) { + yield [entry.name, entry.value]; + } +} +function createHttpHeaders(rawHeaders) { + return new HttpHeadersImpl(rawHeaders); +} +var HttpHeadersImpl; +var init_httpHeaders = __esm({ + "node_modules/@typespec/ts-http-runtime/dist/esm/httpHeaders.js"() { + HttpHeadersImpl = class { + _headersMap; + constructor(rawHeaders) { + this._headersMap = /* @__PURE__ */ new Map(); + if (rawHeaders) { + for (const headerName of Object.keys(rawHeaders)) { + this.set(headerName, rawHeaders[headerName]); + } + } + } + /** + * Set a header in this collection with the provided name and value. The name is + * case-insensitive. + * @param name - The name of the header to set. This value is case-insensitive. + * @param value - The value of the header to set. + */ + set(name5, value) { + this._headersMap.set(normalizeName(name5), { name: name5, value: String(value).trim() }); + } + /** + * Get the header value for the provided header name, or undefined if no header exists in this + * collection with the provided name. + * @param name - The name of the header. This value is case-insensitive. + */ + get(name5) { + return this._headersMap.get(normalizeName(name5))?.value; + } + /** + * Get whether or not this header collection contains a header entry for the provided header name. + * @param name - The name of the header to set. This value is case-insensitive. + */ + has(name5) { + return this._headersMap.has(normalizeName(name5)); + } + /** + * Remove the header with the provided headerName. + * @param name - The name of the header to remove. + */ + delete(name5) { + this._headersMap.delete(normalizeName(name5)); + } + /** + * Get the JSON object representation of this HTTP header collection. + */ + toJSON(options = {}) { + const result = {}; + if (options.preserveCase) { + for (const entry of this._headersMap.values()) { + result[entry.name] = entry.value; + } + } else { + for (const [normalizedName, entry] of this._headersMap) { + result[normalizedName] = entry.value; + } + } + return result; + } + /** + * Get the string representation of this HTTP header collection. + */ + toString() { + return JSON.stringify(this.toJSON({ preserveCase: true })); + } + /** + * Iterate over tuples of header [name, value] pairs. + */ + [Symbol.iterator]() { + return headerIterator(this._headersMap); + } + }; + } +}); + +// node_modules/@typespec/ts-http-runtime/dist/esm/pipelineRequest.js +function createPipelineRequest(options) { + return new PipelineRequestImpl(options); +} +var PipelineRequestImpl; +var init_pipelineRequest = __esm({ + "node_modules/@typespec/ts-http-runtime/dist/esm/pipelineRequest.js"() { + init_httpHeaders(); + init_uuidUtils(); + PipelineRequestImpl = class { + url; + method; + headers; + timeout; + withCredentials; + body; + multipartBody; + formData; + streamResponseStatusCodes; + enableBrowserStreams; + proxySettings; + disableKeepAlive; + abortSignal; + requestId; + allowInsecureConnection; + onUploadProgress; + onDownloadProgress; + requestOverrides; + authSchemes; + constructor(options) { + this.url = options.url; + this.body = options.body; + this.headers = options.headers ?? createHttpHeaders(); + this.method = options.method ?? "GET"; + this.timeout = options.timeout ?? 0; + this.multipartBody = options.multipartBody; + this.formData = options.formData; + this.disableKeepAlive = options.disableKeepAlive ?? false; + this.proxySettings = options.proxySettings; + this.streamResponseStatusCodes = options.streamResponseStatusCodes; + this.withCredentials = options.withCredentials ?? false; + this.abortSignal = options.abortSignal; + this.onUploadProgress = options.onUploadProgress; + this.onDownloadProgress = options.onDownloadProgress; + this.requestId = options.requestId || randomUUID(); + this.allowInsecureConnection = options.allowInsecureConnection ?? false; + this.enableBrowserStreams = options.enableBrowserStreams ?? false; + this.requestOverrides = options.requestOverrides; + this.authSchemes = options.authSchemes; + } + }; + } +}); + +// node_modules/@typespec/ts-http-runtime/dist/esm/pipeline.js +function createEmptyPipeline() { + return HttpPipeline.create(); +} +var ValidPhaseNames, HttpPipeline; +var init_pipeline = __esm({ + "node_modules/@typespec/ts-http-runtime/dist/esm/pipeline.js"() { + ValidPhaseNames = /* @__PURE__ */ new Set(["Deserialize", "Serialize", "Retry", "Sign"]); + HttpPipeline = class _HttpPipeline { + _policies = []; + _orderedPolicies; + constructor(policies) { + this._policies = policies?.slice(0) ?? []; + this._orderedPolicies = void 0; + } + addPolicy(policy, options = {}) { + if (options.phase && options.afterPhase) { + throw new Error("Policies inside a phase cannot specify afterPhase."); + } + if (options.phase && !ValidPhaseNames.has(options.phase)) { + throw new Error(`Invalid phase name: ${options.phase}`); + } + if (options.afterPhase && !ValidPhaseNames.has(options.afterPhase)) { + throw new Error(`Invalid afterPhase name: ${options.afterPhase}`); + } + this._policies.push({ + policy, + options + }); + this._orderedPolicies = void 0; + } + removePolicy(options) { + const removedPolicies = []; + this._policies = this._policies.filter((policyDescriptor) => { + if (options.name && policyDescriptor.policy.name === options.name || options.phase && policyDescriptor.options.phase === options.phase) { + removedPolicies.push(policyDescriptor.policy); + return false; + } else { + return true; + } + }); + this._orderedPolicies = void 0; + return removedPolicies; + } + sendRequest(httpClient, request) { + const policies = this.getOrderedPolicies(); + const pipeline = policies.reduceRight((next, policy) => { + return (req) => { + return policy.sendRequest(req, next); + }; + }, (req) => httpClient.sendRequest(req)); + return pipeline(request); + } + getOrderedPolicies() { + if (!this._orderedPolicies) { + this._orderedPolicies = this.orderPolicies(); + } + return this._orderedPolicies; + } + clone() { + return new _HttpPipeline(this._policies); + } + static create() { + return new _HttpPipeline(); + } + orderPolicies() { + const result = []; + const policyMap = /* @__PURE__ */ new Map(); + function createPhase(name5) { + return { + name: name5, + policies: /* @__PURE__ */ new Set(), + hasRun: false, + hasAfterPolicies: false + }; + } + const serializePhase = createPhase("Serialize"); + const noPhase = createPhase("None"); + const deserializePhase = createPhase("Deserialize"); + const retryPhase = createPhase("Retry"); + const signPhase = createPhase("Sign"); + const orderedPhases = [serializePhase, noPhase, deserializePhase, retryPhase, signPhase]; + function getPhase(phase) { + if (phase === "Retry") { + return retryPhase; + } else if (phase === "Serialize") { + return serializePhase; + } else if (phase === "Deserialize") { + return deserializePhase; + } else if (phase === "Sign") { + return signPhase; + } else { + return noPhase; + } + } + for (const descriptor of this._policies) { + const policy = descriptor.policy; + const options = descriptor.options; + const policyName = policy.name; + if (policyMap.has(policyName)) { + throw new Error("Duplicate policy names not allowed in pipeline"); + } + const node = { + policy, + dependsOn: /* @__PURE__ */ new Set(), + dependants: /* @__PURE__ */ new Set() + }; + if (options.afterPhase) { + node.afterPhase = getPhase(options.afterPhase); + node.afterPhase.hasAfterPolicies = true; + } + policyMap.set(policyName, node); + const phase = getPhase(options.phase); + phase.policies.add(node); + } + for (const descriptor of this._policies) { + const { policy, options } = descriptor; + const policyName = policy.name; + const node = policyMap.get(policyName); + if (!node) { + throw new Error(`Missing node for policy ${policyName}`); + } + if (options.afterPolicies) { + for (const afterPolicyName of options.afterPolicies) { + const afterNode = policyMap.get(afterPolicyName); + if (afterNode) { + node.dependsOn.add(afterNode); + afterNode.dependants.add(node); + } + } + } + if (options.beforePolicies) { + for (const beforePolicyName of options.beforePolicies) { + const beforeNode = policyMap.get(beforePolicyName); + if (beforeNode) { + beforeNode.dependsOn.add(node); + node.dependants.add(beforeNode); + } + } + } + } + function walkPhase(phase) { + phase.hasRun = true; + for (const node of phase.policies) { + if (node.afterPhase && (!node.afterPhase.hasRun || node.afterPhase.policies.size)) { + continue; + } + if (node.dependsOn.size === 0) { + result.push(node.policy); + for (const dependant of node.dependants) { + dependant.dependsOn.delete(node); + } + policyMap.delete(node.policy.name); + phase.policies.delete(node); + } + } + } + function walkPhases() { + for (const phase of orderedPhases) { + walkPhase(phase); + if (phase.policies.size > 0 && phase !== noPhase) { + if (!noPhase.hasRun) { + walkPhase(noPhase); + } + return; + } + if (phase.hasAfterPolicies) { + walkPhase(noPhase); + } + } + } + let iteration = 0; + while (policyMap.size > 0) { + iteration++; + const initialResultLength = result.length; + walkPhases(); + if (result.length <= initialResultLength && iteration > 1) { + throw new Error("Cannot satisfy policy dependencies due to requirements cycle."); + } + } + return result; + } + }; + } +}); + +// node_modules/@typespec/ts-http-runtime/dist/esm/util/inspect.js +var import_node_util2, custom; +var init_inspect = __esm({ + "node_modules/@typespec/ts-http-runtime/dist/esm/util/inspect.js"() { + import_node_util2 = require("node:util"); + custom = import_node_util2.inspect.custom; + } +}); + +// node_modules/@typespec/ts-http-runtime/dist/esm/restError.js +function isRestError(e) { + if (e instanceof RestError) { + return true; + } + return isError(e) && e.name === "RestError"; +} +var errorSanitizer, RestError; +var init_restError = __esm({ + "node_modules/@typespec/ts-http-runtime/dist/esm/restError.js"() { + init_error(); + init_inspect(); + init_sanitizer(); + errorSanitizer = new Sanitizer(); + RestError = class _RestError extends Error { + /** + * Something went wrong when making the request. + * This means the actual request failed for some reason, + * such as a DNS issue or the connection being lost. + */ + static REQUEST_SEND_ERROR = "REQUEST_SEND_ERROR"; + /** + * This means that parsing the response from the server failed. + * It may have been malformed. + */ + static PARSE_ERROR = "PARSE_ERROR"; + /** + * The code of the error itself (use statics on RestError if possible.) + */ + code; + /** + * The HTTP status code of the request (if applicable.) + */ + statusCode; + /** + * The request that was made. + * This property is non-enumerable. + */ + request; + /** + * The response received (if any.) + * This property is non-enumerable. + */ + response; + /** + * Bonus property set by the throw site. + */ + details; + constructor(message, options = {}) { + super(message); + this.name = "RestError"; + this.code = options.code; + this.statusCode = options.statusCode; + Object.defineProperty(this, "request", { value: options.request, enumerable: false }); + Object.defineProperty(this, "response", { value: options.response, enumerable: false }); + const agent = this.request?.agent ? { + maxFreeSockets: this.request.agent.maxFreeSockets, + maxSockets: this.request.agent.maxSockets + } : void 0; + Object.defineProperty(this, custom, { + value: () => { + return `RestError: ${this.message} + ${errorSanitizer.sanitize({ + ...this, + request: { ...this.request, agent }, + response: this.response + })}`; + }, + enumerable: false + }); + Object.setPrototypeOf(this, _RestError.prototype); + } + }; + } +}); + +// node_modules/@typespec/ts-http-runtime/dist/esm/log.js +var logger5; +var init_log2 = __esm({ + "node_modules/@typespec/ts-http-runtime/dist/esm/log.js"() { + init_logger(); + logger5 = createClientLogger("ts-http-runtime"); + } +}); + +// node_modules/@typespec/ts-http-runtime/dist/esm/nodeHttpClient.js +function isReadableStream(body) { + return body && typeof body.pipe === "function"; +} +function isStreamComplete(stream) { + if (stream.readable === false) { + return Promise.resolve(); + } + return new Promise((resolve) => { + const handler = () => { + resolve(); + stream.removeListener("close", handler); + stream.removeListener("end", handler); + stream.removeListener("error", handler); + }; + stream.on("close", handler); + stream.on("end", handler); + stream.on("error", handler); + }); +} +function isArrayBuffer(body) { + return body && typeof body.byteLength === "number"; +} +function getResponseHeaders(res) { + const headers = createHttpHeaders(); + for (const header of Object.keys(res.headers)) { + const value = res.headers[header]; + if (Array.isArray(value)) { + if (value.length > 0) { + headers.set(header, value[0]); + } + } else if (value) { + headers.set(header, value); + } + } + return headers; +} +function getDecodedResponseStream(stream, headers) { + const contentEncoding = headers.get("Content-Encoding"); + if (contentEncoding === "gzip") { + const unzip = import_node_zlib.default.createGunzip(); + stream.pipe(unzip); + return unzip; + } else if (contentEncoding === "deflate") { + const inflate = import_node_zlib.default.createInflate(); + stream.pipe(inflate); + return inflate; + } + return stream; +} +function streamToText(stream) { + return new Promise((resolve, reject) => { + const buffer = []; + stream.on("data", (chunk) => { + if (Buffer.isBuffer(chunk)) { + buffer.push(chunk); + } else { + buffer.push(Buffer.from(chunk)); + } + }); + stream.on("end", () => { + resolve(Buffer.concat(buffer).toString("utf8")); + }); + stream.on("error", (e) => { + if (e && e?.name === "AbortError") { + reject(e); + } else { + reject(new RestError(`Error reading response as text: ${e.message}`, { + code: RestError.PARSE_ERROR + })); + } + }); + }); +} +function getBodyLength(body) { + if (!body) { + return 0; + } else if (Buffer.isBuffer(body)) { + return body.length; + } else if (isReadableStream(body)) { + return null; + } else if (isArrayBuffer(body)) { + return body.byteLength; + } else if (typeof body === "string") { + return Buffer.from(body).length; + } else { + return null; + } +} +function createNodeHttpClient() { + return new NodeHttpClient(); +} +var import_node_http, import_node_https, import_node_zlib, import_node_stream, DEFAULT_TLS_SETTINGS, ReportTransform, NodeHttpClient; +var init_nodeHttpClient = __esm({ + "node_modules/@typespec/ts-http-runtime/dist/esm/nodeHttpClient.js"() { + import_node_http = __toESM(require("node:http"), 1); + import_node_https = __toESM(require("node:https"), 1); + import_node_zlib = __toESM(require("node:zlib"), 1); + import_node_stream = require("node:stream"); + init_AbortError2(); + init_httpHeaders(); + init_restError(); + init_log2(); + init_sanitizer(); + DEFAULT_TLS_SETTINGS = {}; + ReportTransform = class extends import_node_stream.Transform { + loadedBytes = 0; + progressCallback; + // eslint-disable-next-line @typescript-eslint/no-unsafe-function-type + _transform(chunk, _encoding, callback) { + this.push(chunk); + this.loadedBytes += chunk.length; + try { + this.progressCallback({ loadedBytes: this.loadedBytes }); + callback(); + } catch (e) { + callback(e); + } + } + constructor(progressCallback) { + super(); + this.progressCallback = progressCallback; + } + }; + NodeHttpClient = class { + cachedHttpAgent; + cachedHttpsAgents = /* @__PURE__ */ new WeakMap(); + /** + * Makes a request over an underlying transport layer and returns the response. + * @param request - The request to be made. + */ + async sendRequest(request) { + const abortController = new AbortController(); + let abortListener; + if (request.abortSignal) { + if (request.abortSignal.aborted) { + throw new AbortError2("The operation was aborted. Request has already been canceled."); + } + abortListener = (event) => { + if (event.type === "abort") { + abortController.abort(); + } + }; + request.abortSignal.addEventListener("abort", abortListener); + } + let timeoutId; + if (request.timeout > 0) { + timeoutId = setTimeout(() => { + const sanitizer = new Sanitizer(); + logger5.info(`request to '${sanitizer.sanitizeUrl(request.url)}' timed out. canceling...`); + abortController.abort(); + }, request.timeout); + } + const acceptEncoding = request.headers.get("Accept-Encoding"); + const shouldDecompress = acceptEncoding?.includes("gzip") || acceptEncoding?.includes("deflate"); + let body = typeof request.body === "function" ? request.body() : request.body; + if (body && !request.headers.has("Content-Length")) { + const bodyLength = getBodyLength(body); + if (bodyLength !== null) { + request.headers.set("Content-Length", bodyLength); + } + } + let responseStream; + try { + if (body && request.onUploadProgress) { + const onUploadProgress = request.onUploadProgress; + const uploadReportStream = new ReportTransform(onUploadProgress); + uploadReportStream.on("error", (e) => { + logger5.error("Error in upload progress", e); + }); + if (isReadableStream(body)) { + body.pipe(uploadReportStream); + } else { + uploadReportStream.end(body); + } + body = uploadReportStream; + } + const res = await this.makeRequest(request, abortController, body); + if (timeoutId !== void 0) { + clearTimeout(timeoutId); + } + const headers = getResponseHeaders(res); + const status = res.statusCode ?? 0; + const response = { + status, + headers, + request + }; + if (request.method === "HEAD") { + res.resume(); + return response; + } + responseStream = shouldDecompress ? getDecodedResponseStream(res, headers) : res; + const onDownloadProgress = request.onDownloadProgress; + if (onDownloadProgress) { + const downloadReportStream = new ReportTransform(onDownloadProgress); + downloadReportStream.on("error", (e) => { + logger5.error("Error in download progress", e); + }); + responseStream.pipe(downloadReportStream); + responseStream = downloadReportStream; + } + if ( + // Value of POSITIVE_INFINITY in streamResponseStatusCodes is considered as any status code + request.streamResponseStatusCodes?.has(Number.POSITIVE_INFINITY) || request.streamResponseStatusCodes?.has(response.status) + ) { + response.readableStreamBody = responseStream; + } else { + response.bodyAsText = await streamToText(responseStream); + } + return response; + } finally { + if (request.abortSignal && abortListener) { + let uploadStreamDone = Promise.resolve(); + if (isReadableStream(body)) { + uploadStreamDone = isStreamComplete(body); + } + let downloadStreamDone = Promise.resolve(); + if (isReadableStream(responseStream)) { + downloadStreamDone = isStreamComplete(responseStream); + } + Promise.all([uploadStreamDone, downloadStreamDone]).then(() => { + if (abortListener) { + request.abortSignal?.removeEventListener("abort", abortListener); + } + }).catch((e) => { + logger5.warning("Error when cleaning up abortListener on httpRequest", e); + }); + } + } + } + makeRequest(request, abortController, body) { + const url2 = new URL(request.url); + const isInsecure = url2.protocol !== "https:"; + if (isInsecure && !request.allowInsecureConnection) { + throw new Error(`Cannot connect to ${request.url} while allowInsecureConnection is false.`); + } + const agent = request.agent ?? this.getOrCreateAgent(request, isInsecure); + const options = { + agent, + hostname: url2.hostname, + path: `${url2.pathname}${url2.search}`, + port: url2.port, + method: request.method, + headers: request.headers.toJSON({ preserveCase: true }), + ...request.requestOverrides + }; + return new Promise((resolve, reject) => { + const req = isInsecure ? import_node_http.default.request(options, resolve) : import_node_https.default.request(options, resolve); + req.once("error", (err) => { + reject(new RestError(err.message, { code: err.code ?? RestError.REQUEST_SEND_ERROR, request })); + }); + abortController.signal.addEventListener("abort", () => { + const abortError = new AbortError2("The operation was aborted. Rejecting from abort signal callback while making request."); + req.destroy(abortError); + reject(abortError); + }); + if (body && isReadableStream(body)) { + body.pipe(req); + } else if (body) { + if (typeof body === "string" || Buffer.isBuffer(body)) { + req.end(body); + } else if (isArrayBuffer(body)) { + req.end(ArrayBuffer.isView(body) ? Buffer.from(body.buffer) : Buffer.from(body)); + } else { + logger5.error("Unrecognized body type", body); + reject(new RestError("Unrecognized body type")); + } + } else { + req.end(); + } + }); + } + getOrCreateAgent(request, isInsecure) { + const disableKeepAlive = request.disableKeepAlive; + if (isInsecure) { + if (disableKeepAlive) { + return import_node_http.default.globalAgent; + } + if (!this.cachedHttpAgent) { + this.cachedHttpAgent = new import_node_http.default.Agent({ keepAlive: true }); + } + return this.cachedHttpAgent; + } else { + if (disableKeepAlive && !request.tlsSettings) { + return import_node_https.default.globalAgent; + } + const tlsSettings = request.tlsSettings ?? DEFAULT_TLS_SETTINGS; + let agent = this.cachedHttpsAgents.get(tlsSettings); + if (agent && agent.options.keepAlive === !disableKeepAlive) { + return agent; + } + logger5.info("No cached TLS Agent exist, creating a new Agent"); + agent = new import_node_https.default.Agent({ + // keepAlive is true if disableKeepAlive is false. + keepAlive: !disableKeepAlive, + // Since we are spreading, if no tslSettings were provided, nothing is added to the agent options. + ...tlsSettings + }); + this.cachedHttpsAgents.set(tlsSettings, agent); + return agent; + } + } + }; + } +}); + +// node_modules/@typespec/ts-http-runtime/dist/esm/defaultHttpClient.js +function createDefaultHttpClient() { + return createNodeHttpClient(); +} +var init_defaultHttpClient = __esm({ + "node_modules/@typespec/ts-http-runtime/dist/esm/defaultHttpClient.js"() { + init_nodeHttpClient(); + } +}); + +// node_modules/@typespec/ts-http-runtime/dist/esm/policies/logPolicy.js +function logPolicy(options = {}) { + const logger31 = options.logger ?? logger5.info; + const sanitizer = new Sanitizer({ + additionalAllowedHeaderNames: options.additionalAllowedHeaderNames, + additionalAllowedQueryParameters: options.additionalAllowedQueryParameters + }); + return { + name: logPolicyName, + async sendRequest(request, next) { + if (!logger31.enabled) { + return next(request); + } + logger31(`Request: ${sanitizer.sanitize(request)}`); + const response = await next(request); + logger31(`Response status code: ${response.status}`); + logger31(`Headers: ${sanitizer.sanitize(response.headers)}`); + return response; + } + }; +} +var logPolicyName; +var init_logPolicy = __esm({ + "node_modules/@typespec/ts-http-runtime/dist/esm/policies/logPolicy.js"() { + init_log2(); + init_sanitizer(); + logPolicyName = "logPolicy"; + } +}); + +// node_modules/@typespec/ts-http-runtime/dist/esm/policies/redirectPolicy.js +function redirectPolicy(options = {}) { + const { maxRetries = 20, allowCrossOriginRedirects = false } = options; + return { + name: redirectPolicyName, + async sendRequest(request, next) { + const response = await next(request); + return handleRedirect(next, response, maxRetries, allowCrossOriginRedirects); + } + }; +} +async function handleRedirect(next, response, maxRetries, allowCrossOriginRedirects, currentRetries = 0) { + const { request, status, headers } = response; + const locationHeader = headers.get("location"); + if (locationHeader && (status === 300 || status === 301 && allowedRedirect.includes(request.method) || status === 302 && allowedRedirect.includes(request.method) || status === 303 && request.method === "POST" || status === 307) && currentRetries < maxRetries) { + const url2 = new URL(locationHeader, request.url); + if (!allowCrossOriginRedirects) { + const originalUrl = new URL(request.url); + if (url2.origin !== originalUrl.origin) { + logger5.verbose(`Skipping cross-origin redirect from ${originalUrl.origin} to ${url2.origin}.`); + return response; + } + } + request.url = url2.toString(); + if (status === 303) { + request.method = "GET"; + request.headers.delete("Content-Length"); + delete request.body; + } + request.headers.delete("Authorization"); + const res = await next(request); + return handleRedirect(next, res, maxRetries, allowCrossOriginRedirects, currentRetries + 1); + } + return response; +} +var redirectPolicyName, allowedRedirect; +var init_redirectPolicy = __esm({ + "node_modules/@typespec/ts-http-runtime/dist/esm/policies/redirectPolicy.js"() { + init_log2(); + redirectPolicyName = "redirectPolicy"; + allowedRedirect = ["GET", "HEAD"]; + } +}); + +// node_modules/@typespec/ts-http-runtime/dist/esm/util/userAgentPlatform.js +function getHeaderName() { + return "User-Agent"; +} +async function setPlatformSpecificData(map) { + if (import_node_process2.default && import_node_process2.default.versions) { + const osInfo = `${import_node_os2.default.type()} ${import_node_os2.default.release()}; ${import_node_os2.default.arch()}`; + if (import_node_process2.default.versions.bun) { + map.set("Bun", `${import_node_process2.default.versions.bun} (${osInfo})`); + } else if (import_node_process2.default.versions.deno) { + map.set("Deno", `${import_node_process2.default.versions.deno} (${osInfo})`); + } else if (import_node_process2.default.versions.node) { + map.set("Node", `${import_node_process2.default.versions.node} (${osInfo})`); + } + } +} +var import_node_os2, import_node_process2; +var init_userAgentPlatform = __esm({ + "node_modules/@typespec/ts-http-runtime/dist/esm/util/userAgentPlatform.js"() { + import_node_os2 = __toESM(require("node:os"), 1); + import_node_process2 = __toESM(require("node:process"), 1); + } +}); + +// node_modules/@typespec/ts-http-runtime/dist/esm/constants.js +var SDK_VERSION2, DEFAULT_RETRY_POLICY_COUNT; +var init_constants2 = __esm({ + "node_modules/@typespec/ts-http-runtime/dist/esm/constants.js"() { + SDK_VERSION2 = "0.3.5"; + DEFAULT_RETRY_POLICY_COUNT = 3; + } +}); + +// node_modules/@typespec/ts-http-runtime/dist/esm/util/userAgent.js +function getUserAgentString(telemetryInfo) { + const parts = []; + for (const [key, value] of telemetryInfo) { + const token = value ? `${key}/${value}` : key; + parts.push(token); + } + return parts.join(" "); +} +function getUserAgentHeaderName() { + return getHeaderName(); +} +async function getUserAgentValue(prefix) { + const runtimeInfo = /* @__PURE__ */ new Map(); + runtimeInfo.set("ts-http-runtime", SDK_VERSION2); + await setPlatformSpecificData(runtimeInfo); + const defaultAgent = getUserAgentString(runtimeInfo); + const userAgentValue = prefix ? `${prefix} ${defaultAgent}` : defaultAgent; + return userAgentValue; +} +var init_userAgent = __esm({ + "node_modules/@typespec/ts-http-runtime/dist/esm/util/userAgent.js"() { + init_userAgentPlatform(); + init_constants2(); + } +}); + +// node_modules/@typespec/ts-http-runtime/dist/esm/policies/userAgentPolicy.js +function userAgentPolicy(options = {}) { + const userAgentValue = getUserAgentValue(options.userAgentPrefix); + return { + name: userAgentPolicyName, + async sendRequest(request, next) { + if (!request.headers.has(UserAgentHeaderName)) { + request.headers.set(UserAgentHeaderName, await userAgentValue); + } + return next(request); + } + }; +} +var UserAgentHeaderName, userAgentPolicyName; +var init_userAgentPolicy = __esm({ + "node_modules/@typespec/ts-http-runtime/dist/esm/policies/userAgentPolicy.js"() { + init_userAgent(); + UserAgentHeaderName = getUserAgentHeaderName(); + userAgentPolicyName = "userAgentPolicy"; + } +}); + +// node_modules/@typespec/ts-http-runtime/dist/esm/policies/decompressResponsePolicy.js +function decompressResponsePolicy() { + return { + name: decompressResponsePolicyName, + async sendRequest(request, next) { + if (request.method !== "HEAD") { + request.headers.set("Accept-Encoding", "gzip,deflate"); + } + return next(request); + } + }; +} +var decompressResponsePolicyName; +var init_decompressResponsePolicy = __esm({ + "node_modules/@typespec/ts-http-runtime/dist/esm/policies/decompressResponsePolicy.js"() { + decompressResponsePolicyName = "decompressResponsePolicy"; + } +}); + +// node_modules/@typespec/ts-http-runtime/dist/esm/util/helpers.js +function delay4(delayInMs, value, options) { + return new Promise((resolve, reject) => { + let timer = void 0; + let onAborted = void 0; + const rejectOnAbort = () => { + return reject(new AbortError2(options?.abortErrorMsg ? options?.abortErrorMsg : StandardAbortMessage2)); + }; + const removeListeners = () => { + if (options?.abortSignal && onAborted) { + options.abortSignal.removeEventListener("abort", onAborted); + } + }; + onAborted = () => { + if (timer) { + clearTimeout(timer); + } + removeListeners(); + return rejectOnAbort(); + }; + if (options?.abortSignal && options.abortSignal.aborted) { + return rejectOnAbort(); + } + timer = setTimeout(() => { + removeListeners(); + resolve(value); + }, delayInMs); + if (options?.abortSignal) { + options.abortSignal.addEventListener("abort", onAborted); + } + }); +} +function parseHeaderValueAsNumber(response, headerName) { + const value = response.headers.get(headerName); + if (!value) + return; + const valueAsNum = Number(value); + if (Number.isNaN(valueAsNum)) + return; + return valueAsNum; +} +var StandardAbortMessage2; +var init_helpers = __esm({ + "node_modules/@typespec/ts-http-runtime/dist/esm/util/helpers.js"() { + init_AbortError2(); + StandardAbortMessage2 = "The operation was aborted."; + } +}); + +// node_modules/@typespec/ts-http-runtime/dist/esm/retryStrategies/throttlingRetryStrategy.js +function getRetryAfterInMs(response) { + if (!(response && [429, 503].includes(response.status))) + return void 0; + try { + for (const header of AllRetryAfterHeaders) { + const retryAfterValue = parseHeaderValueAsNumber(response, header); + if (retryAfterValue === 0 || retryAfterValue) { + const multiplyingFactor = header === RetryAfterHeader ? 1e3 : 1; + return retryAfterValue * multiplyingFactor; + } + } + const retryAfterHeader = response.headers.get(RetryAfterHeader); + if (!retryAfterHeader) + return; + const date4 = Date.parse(retryAfterHeader); + const diff = date4 - Date.now(); + return Number.isFinite(diff) ? Math.max(0, diff) : void 0; + } catch { + return void 0; + } +} +function isThrottlingRetryResponse(response) { + return Number.isFinite(getRetryAfterInMs(response)); +} +function throttlingRetryStrategy() { + return { + name: "throttlingRetryStrategy", + retry({ response }) { + const retryAfterInMs = getRetryAfterInMs(response); + if (!Number.isFinite(retryAfterInMs)) { + return { skipStrategy: true }; + } + return { + retryAfterInMs + }; + } + }; +} +var RetryAfterHeader, AllRetryAfterHeaders; +var init_throttlingRetryStrategy = __esm({ + "node_modules/@typespec/ts-http-runtime/dist/esm/retryStrategies/throttlingRetryStrategy.js"() { + init_helpers(); + RetryAfterHeader = "Retry-After"; + AllRetryAfterHeaders = ["retry-after-ms", "x-ms-retry-after-ms", RetryAfterHeader]; + } +}); + +// node_modules/@typespec/ts-http-runtime/dist/esm/retryStrategies/exponentialRetryStrategy.js +function exponentialRetryStrategy(options = {}) { + const retryInterval = options.retryDelayInMs ?? DEFAULT_CLIENT_RETRY_INTERVAL; + const maxRetryInterval = options.maxRetryDelayInMs ?? DEFAULT_CLIENT_MAX_RETRY_INTERVAL; + return { + name: "exponentialRetryStrategy", + retry({ retryCount, response, responseError }) { + const matchedSystemError = isSystemError(responseError); + const ignoreSystemErrors = matchedSystemError && options.ignoreSystemErrors; + const isExponential = isExponentialRetryResponse(response); + const ignoreExponentialResponse = isExponential && options.ignoreHttpStatusCodes; + const unknownResponse = response && (isThrottlingRetryResponse(response) || !isExponential); + if (unknownResponse || ignoreExponentialResponse || ignoreSystemErrors) { + return { skipStrategy: true }; + } + if (responseError && !matchedSystemError && !isExponential) { + return { errorToThrow: responseError }; + } + return calculateRetryDelay(retryCount, { + retryDelayInMs: retryInterval, + maxRetryDelayInMs: maxRetryInterval + }); + } + }; +} +function isExponentialRetryResponse(response) { + return Boolean(response && response.status !== void 0 && (response.status >= 500 || response.status === 408) && response.status !== 501 && response.status !== 505); +} +function isSystemError(err) { + if (!err) { + return false; + } + return err.code === "ETIMEDOUT" || err.code === "ESOCKETTIMEDOUT" || err.code === "ECONNREFUSED" || err.code === "ECONNRESET" || err.code === "ENOENT" || err.code === "ENOTFOUND"; +} +var DEFAULT_CLIENT_RETRY_INTERVAL, DEFAULT_CLIENT_MAX_RETRY_INTERVAL; +var init_exponentialRetryStrategy = __esm({ + "node_modules/@typespec/ts-http-runtime/dist/esm/retryStrategies/exponentialRetryStrategy.js"() { + init_delay(); + init_throttlingRetryStrategy(); + DEFAULT_CLIENT_RETRY_INTERVAL = 1e3; + DEFAULT_CLIENT_MAX_RETRY_INTERVAL = 1e3 * 64; + } +}); + +// node_modules/@typespec/ts-http-runtime/dist/esm/policies/retryPolicy.js +function retryPolicy(strategies, options = { maxRetries: DEFAULT_RETRY_POLICY_COUNT }) { + const logger31 = options.logger || retryPolicyLogger; + return { + name: retryPolicyName, + async sendRequest(request, next) { + let response; + let responseError; + let retryCount = -1; + retryRequest: while (true) { + retryCount += 1; + response = void 0; + responseError = void 0; + try { + logger31.info(`Retry ${retryCount}: Attempting to send request`, request.requestId); + response = await next(request); + logger31.info(`Retry ${retryCount}: Received a response from request`, request.requestId); + } catch (e) { + logger31.error(`Retry ${retryCount}: Received an error from request`, request.requestId); + if (!isRestError(e)) { + throw e; + } + responseError = e; + response = e.response; + } + if (request.abortSignal?.aborted) { + logger31.error(`Retry ${retryCount}: Request aborted.`); + const abortError = new AbortError2(); + throw abortError; + } + if (retryCount >= (options.maxRetries ?? DEFAULT_RETRY_POLICY_COUNT)) { + logger31.info(`Retry ${retryCount}: Maximum retries reached. Returning the last received response, or throwing the last received error.`); + if (responseError) { + throw responseError; + } else if (response) { + return response; + } else { + throw new Error("Maximum retries reached with no response or error to throw"); + } + } + logger31.info(`Retry ${retryCount}: Processing ${strategies.length} retry strategies.`); + strategiesLoop: for (const strategy of strategies) { + const strategyLogger = strategy.logger || logger31; + strategyLogger.info(`Retry ${retryCount}: Processing retry strategy ${strategy.name}.`); + const modifiers = strategy.retry({ + retryCount, + response, + responseError + }); + if (modifiers.skipStrategy) { + strategyLogger.info(`Retry ${retryCount}: Skipped.`); + continue strategiesLoop; + } + const { errorToThrow, retryAfterInMs, redirectTo } = modifiers; + if (errorToThrow) { + strategyLogger.error(`Retry ${retryCount}: Retry strategy ${strategy.name} throws error:`, errorToThrow); + throw errorToThrow; + } + if (retryAfterInMs || retryAfterInMs === 0) { + strategyLogger.info(`Retry ${retryCount}: Retry strategy ${strategy.name} retries after ${retryAfterInMs}`); + await delay4(retryAfterInMs, void 0, { abortSignal: request.abortSignal }); + continue retryRequest; + } + if (redirectTo) { + strategyLogger.info(`Retry ${retryCount}: Retry strategy ${strategy.name} redirects to ${redirectTo}`); + request.url = redirectTo; + continue retryRequest; + } + } + if (responseError) { + logger31.info(`None of the retry strategies could work with the received error. Throwing it.`); + throw responseError; + } + if (response) { + logger31.info(`None of the retry strategies could work with the received response. Returning it.`); + return response; + } + } + } + }; +} +var retryPolicyLogger, retryPolicyName; +var init_retryPolicy = __esm({ + "node_modules/@typespec/ts-http-runtime/dist/esm/policies/retryPolicy.js"() { + init_helpers(); + init_restError(); + init_AbortError2(); + init_logger(); + init_constants2(); + retryPolicyLogger = createClientLogger("ts-http-runtime retryPolicy"); + retryPolicyName = "retryPolicy"; + } +}); + +// node_modules/@typespec/ts-http-runtime/dist/esm/policies/defaultRetryPolicy.js +function defaultRetryPolicy(options = {}) { + return { + name: defaultRetryPolicyName, + sendRequest: retryPolicy([throttlingRetryStrategy(), exponentialRetryStrategy(options)], { + maxRetries: options.maxRetries ?? DEFAULT_RETRY_POLICY_COUNT + }).sendRequest + }; +} +var defaultRetryPolicyName; +var init_defaultRetryPolicy = __esm({ + "node_modules/@typespec/ts-http-runtime/dist/esm/policies/defaultRetryPolicy.js"() { + init_exponentialRetryStrategy(); + init_throttlingRetryStrategy(); + init_retryPolicy(); + init_constants2(); + defaultRetryPolicyName = "defaultRetryPolicy"; + } +}); + +// node_modules/@typespec/ts-http-runtime/dist/esm/policies/formDataPolicy.js +function formDataToFormDataMap(formData) { + const formDataMap = {}; + for (const [key, value] of formData.entries()) { + formDataMap[key] ??= []; + formDataMap[key].push(value); + } + return formDataMap; +} +function formDataPolicy() { + return { + name: formDataPolicyName, + async sendRequest(request, next) { + if (isNodeLike && typeof FormData !== "undefined" && request.body instanceof FormData) { + request.formData = formDataToFormDataMap(request.body); + request.body = void 0; + } + if (request.formData) { + const contentType = request.headers.get("Content-Type"); + if (contentType && contentType.indexOf("application/x-www-form-urlencoded") !== -1) { + request.body = wwwFormUrlEncode(request.formData); + } else { + await prepareFormData(request.formData, request); + } + request.formData = void 0; + } + return next(request); + } + }; +} +function wwwFormUrlEncode(formData) { + const urlSearchParams = new URLSearchParams(); + for (const [key, value] of Object.entries(formData)) { + if (Array.isArray(value)) { + for (const subValue of value) { + urlSearchParams.append(key, subValue.toString()); + } + } else { + urlSearchParams.append(key, value.toString()); + } + } + return urlSearchParams.toString(); +} +async function prepareFormData(formData, request) { + const contentType = request.headers.get("Content-Type"); + if (contentType && !contentType.startsWith("multipart/form-data")) { + return; + } + request.headers.set("Content-Type", contentType ?? "multipart/form-data"); + const parts = []; + for (const [fieldName, values] of Object.entries(formData)) { + for (const value of Array.isArray(values) ? values : [values]) { + if (typeof value === "string") { + parts.push({ + headers: createHttpHeaders({ + "Content-Disposition": `form-data; name="${fieldName}"` + }), + body: stringToUint8Array(value, "utf-8") + }); + } else if (value === void 0 || value === null || typeof value !== "object") { + throw new Error(`Unexpected value for key ${fieldName}: ${value}. Value should be serialized to string first.`); + } else { + const fileName = value.name || "blob"; + const headers = createHttpHeaders(); + headers.set("Content-Disposition", `form-data; name="${fieldName}"; filename="${fileName}"`); + headers.set("Content-Type", value.type || "application/octet-stream"); + parts.push({ + headers, + body: value + }); + } + } + } + request.multipartBody = { parts }; +} +var formDataPolicyName; +var init_formDataPolicy = __esm({ + "node_modules/@typespec/ts-http-runtime/dist/esm/policies/formDataPolicy.js"() { + init_bytesEncoding(); + init_checkEnvironment(); + init_httpHeaders(); + formDataPolicyName = "formDataPolicy"; + } +}); + +// node_modules/debug/src/common.js +var require_common2 = __commonJS({ + "node_modules/debug/src/common.js"(exports2, module2) { + function setup(env) { + createDebug.debug = createDebug; + createDebug.default = createDebug; + createDebug.coerce = coerce2; + createDebug.disable = disable2; + createDebug.enable = enable2; + createDebug.enabled = enabled2; + createDebug.humanize = require_ms(); + createDebug.destroy = destroy2; + Object.keys(env).forEach((key) => { + createDebug[key] = env[key]; + }); + createDebug.names = []; + createDebug.skips = []; + createDebug.formatters = {}; + function selectColor(namespace) { + let hash = 0; + for (let i = 0; i < namespace.length; i++) { + hash = (hash << 5) - hash + namespace.charCodeAt(i); + hash |= 0; + } + return createDebug.colors[Math.abs(hash) % createDebug.colors.length]; + } + createDebug.selectColor = selectColor; + function createDebug(namespace) { + let prevTime; + let enableOverride = null; + let namespacesCache; + let enabledCache; + function debug(...args) { + if (!debug.enabled) { + return; + } + const self2 = debug; + const curr = Number(/* @__PURE__ */ new Date()); + const ms = curr - (prevTime || curr); + self2.diff = ms; + self2.prev = prevTime; + self2.curr = curr; + prevTime = curr; + args[0] = createDebug.coerce(args[0]); + if (typeof args[0] !== "string") { + args.unshift("%O"); + } + let index = 0; + args[0] = args[0].replace(/%([a-zA-Z%])/g, (match, format) => { + if (match === "%%") { + return "%"; + } + index++; + const formatter = createDebug.formatters[format]; + if (typeof formatter === "function") { + const val = args[index]; + match = formatter.call(self2, val); + args.splice(index, 1); + index--; + } + return match; + }); + createDebug.formatArgs.call(self2, args); + const logFn = self2.log || createDebug.log; + logFn.apply(self2, args); + } + debug.namespace = namespace; + debug.useColors = createDebug.useColors(); + debug.color = createDebug.selectColor(namespace); + debug.extend = extend3; + debug.destroy = createDebug.destroy; + Object.defineProperty(debug, "enabled", { + enumerable: true, + configurable: false, + get: () => { + if (enableOverride !== null) { + return enableOverride; + } + if (namespacesCache !== createDebug.namespaces) { + namespacesCache = createDebug.namespaces; + enabledCache = createDebug.enabled(namespace); + } + return enabledCache; + }, + set: (v) => { + enableOverride = v; + } + }); + if (typeof createDebug.init === "function") { + createDebug.init(debug); + } + return debug; + } + function extend3(namespace, delimiter) { + const newDebug = createDebug(this.namespace + (typeof delimiter === "undefined" ? ":" : delimiter) + namespace); + newDebug.log = this.log; + return newDebug; + } + function enable2(namespaces) { + createDebug.save(namespaces); + createDebug.namespaces = namespaces; + createDebug.names = []; + createDebug.skips = []; + const split = (typeof namespaces === "string" ? namespaces : "").trim().replace(/\s+/g, ",").split(",").filter(Boolean); + for (const ns of split) { + if (ns[0] === "-") { + createDebug.skips.push(ns.slice(1)); + } else { + createDebug.names.push(ns); + } + } + } + function matchesTemplate(search, template) { + let searchIndex = 0; + let templateIndex = 0; + let starIndex = -1; + let matchIndex = 0; + while (searchIndex < search.length) { + if (templateIndex < template.length && (template[templateIndex] === search[searchIndex] || template[templateIndex] === "*")) { + if (template[templateIndex] === "*") { + starIndex = templateIndex; + matchIndex = searchIndex; + templateIndex++; + } else { + searchIndex++; + templateIndex++; + } + } else if (starIndex !== -1) { + templateIndex = starIndex + 1; + matchIndex++; + searchIndex = matchIndex; + } else { + return false; + } + } + while (templateIndex < template.length && template[templateIndex] === "*") { + templateIndex++; + } + return templateIndex === template.length; + } + function disable2() { + const namespaces = [ + ...createDebug.names, + ...createDebug.skips.map((namespace) => "-" + namespace) + ].join(","); + createDebug.enable(""); + return namespaces; + } + function enabled2(name5) { + for (const skip of createDebug.skips) { + if (matchesTemplate(name5, skip)) { + return false; + } + } + for (const ns of createDebug.names) { + if (matchesTemplate(name5, ns)) { + return true; + } + } + return false; + } + function coerce2(val) { + if (val instanceof Error) { + return val.stack || val.message; + } + return val; + } + function destroy2() { + console.warn("Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`."); + } + createDebug.enable(createDebug.load()); + return createDebug; + } + module2.exports = setup; + } +}); + +// node_modules/debug/src/browser.js +var require_browser = __commonJS({ + "node_modules/debug/src/browser.js"(exports2, module2) { + exports2.formatArgs = formatArgs; + exports2.save = save; + exports2.load = load; + exports2.useColors = useColors; + exports2.storage = localstorage(); + exports2.destroy = /* @__PURE__ */ (() => { + let warned = false; + return () => { + if (!warned) { + warned = true; + console.warn("Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`."); + } + }; + })(); + exports2.colors = [ + "#0000CC", + "#0000FF", + "#0033CC", + "#0033FF", + "#0066CC", + "#0066FF", + "#0099CC", + "#0099FF", + "#00CC00", + "#00CC33", + "#00CC66", + "#00CC99", + "#00CCCC", + "#00CCFF", + "#3300CC", + "#3300FF", + "#3333CC", + "#3333FF", + "#3366CC", + "#3366FF", + "#3399CC", + "#3399FF", + "#33CC00", + "#33CC33", + "#33CC66", + "#33CC99", + "#33CCCC", + "#33CCFF", + "#6600CC", + "#6600FF", + "#6633CC", + "#6633FF", + "#66CC00", + "#66CC33", + "#9900CC", + "#9900FF", + "#9933CC", + "#9933FF", + "#99CC00", + "#99CC33", + "#CC0000", + "#CC0033", + "#CC0066", + "#CC0099", + "#CC00CC", + "#CC00FF", + "#CC3300", + "#CC3333", + "#CC3366", + "#CC3399", + "#CC33CC", + "#CC33FF", + "#CC6600", + "#CC6633", + "#CC9900", + "#CC9933", + "#CCCC00", + "#CCCC33", + "#FF0000", + "#FF0033", + "#FF0066", + "#FF0099", + "#FF00CC", + "#FF00FF", + "#FF3300", + "#FF3333", + "#FF3366", + "#FF3399", + "#FF33CC", + "#FF33FF", + "#FF6600", + "#FF6633", + "#FF9900", + "#FF9933", + "#FFCC00", + "#FFCC33" + ]; + function useColors() { + if (typeof window !== "undefined" && window.process && (window.process.type === "renderer" || window.process.__nwjs)) { + return true; + } + if (typeof navigator !== "undefined" && navigator.userAgent && navigator.userAgent.toLowerCase().match(/(edge|trident)\/(\d+)/)) { + return false; + } + let m; + return typeof document !== "undefined" && document.documentElement && document.documentElement.style && document.documentElement.style.WebkitAppearance || // Is firebug? http://stackoverflow.com/a/398120/376773 + typeof window !== "undefined" && window.console && (window.console.firebug || window.console.exception && window.console.table) || // Is firefox >= v31? + // https://developer.mozilla.org/en-US/docs/Tools/Web_Console#Styling_messages + typeof navigator !== "undefined" && navigator.userAgent && (m = navigator.userAgent.toLowerCase().match(/firefox\/(\d+)/)) && parseInt(m[1], 10) >= 31 || // Double check webkit in userAgent just in case we are in a worker + typeof navigator !== "undefined" && navigator.userAgent && navigator.userAgent.toLowerCase().match(/applewebkit\/(\d+)/); + } + function formatArgs(args) { + args[0] = (this.useColors ? "%c" : "") + this.namespace + (this.useColors ? " %c" : " ") + args[0] + (this.useColors ? "%c " : " ") + "+" + module2.exports.humanize(this.diff); + if (!this.useColors) { + return; + } + const c = "color: " + this.color; + args.splice(1, 0, c, "color: inherit"); + let index = 0; + let lastC = 0; + args[0].replace(/%[a-zA-Z%]/g, (match) => { + if (match === "%%") { + return; + } + index++; + if (match === "%c") { + lastC = index; + } + }); + args.splice(lastC, 0, c); + } + exports2.log = console.debug || console.log || (() => { + }); + function save(namespaces) { + try { + if (namespaces) { + exports2.storage.setItem("debug", namespaces); + } else { + exports2.storage.removeItem("debug"); + } + } catch (error2) { + } + } + function load() { + let r; + try { + r = exports2.storage.getItem("debug") || exports2.storage.getItem("DEBUG"); + } catch (error2) { + } + if (!r && typeof process !== "undefined" && "env" in process) { + r = process.env.DEBUG; + } + return r; + } + function localstorage() { + try { + return localStorage; + } catch (error2) { + } + } + module2.exports = require_common2()(exports2); + var { formatters } = module2.exports; + formatters.j = function(v) { + try { + return JSON.stringify(v); + } catch (error2) { + return "[UnexpectedJSONParseError]: " + error2.message; + } + }; + } +}); + +// node_modules/debug/src/node.js +var require_node3 = __commonJS({ + "node_modules/debug/src/node.js"(exports2, module2) { + var tty = require("tty"); + var util3 = require("util"); + exports2.init = init; + exports2.log = log2; + exports2.formatArgs = formatArgs; + exports2.save = save; + exports2.load = load; + exports2.useColors = useColors; + exports2.destroy = util3.deprecate( + () => { + }, + "Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`." + ); + exports2.colors = [6, 2, 3, 4, 5, 1]; + try { + const supportsColor = require("supports-color"); + if (supportsColor && (supportsColor.stderr || supportsColor).level >= 2) { + exports2.colors = [ + 20, + 21, + 26, + 27, + 32, + 33, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 56, + 57, + 62, + 63, + 68, + 69, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 92, + 93, + 98, + 99, + 112, + 113, + 128, + 129, + 134, + 135, + 148, + 149, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 178, + 179, + 184, + 185, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 214, + 215, + 220, + 221 + ]; + } + } catch (error2) { + } + exports2.inspectOpts = Object.keys(process.env).filter((key) => { + return /^debug_/i.test(key); + }).reduce((obj, key) => { + const prop = key.substring(6).toLowerCase().replace(/_([a-z])/g, (_, k) => { + return k.toUpperCase(); + }); + let val = process.env[key]; + if (/^(yes|on|true|enabled)$/i.test(val)) { + val = true; + } else if (/^(no|off|false|disabled)$/i.test(val)) { + val = false; + } else if (val === "null") { + val = null; + } else { + val = Number(val); + } + obj[prop] = val; + return obj; + }, {}); + function useColors() { + return "colors" in exports2.inspectOpts ? Boolean(exports2.inspectOpts.colors) : tty.isatty(process.stderr.fd); + } + function formatArgs(args) { + const { namespace: name5, useColors: useColors2 } = this; + if (useColors2) { + const c = this.color; + const colorCode = "\x1B[3" + (c < 8 ? c : "8;5;" + c); + const prefix = ` ${colorCode};1m${name5} \x1B[0m`; + args[0] = prefix + args[0].split("\n").join("\n" + prefix); + args.push(colorCode + "m+" + module2.exports.humanize(this.diff) + "\x1B[0m"); + } else { + args[0] = getDate() + name5 + " " + args[0]; + } + } + function getDate() { + if (exports2.inspectOpts.hideDate) { + return ""; + } + return (/* @__PURE__ */ new Date()).toISOString() + " "; + } + function log2(...args) { + return process.stderr.write(util3.formatWithOptions(exports2.inspectOpts, ...args) + "\n"); + } + function save(namespaces) { + if (namespaces) { + process.env.DEBUG = namespaces; + } else { + delete process.env.DEBUG; + } + } + function load() { + return process.env.DEBUG; + } + function init(debug) { + debug.inspectOpts = {}; + const keys = Object.keys(exports2.inspectOpts); + for (let i = 0; i < keys.length; i++) { + debug.inspectOpts[keys[i]] = exports2.inspectOpts[keys[i]]; + } + } + module2.exports = require_common2()(exports2); + var { formatters } = module2.exports; + formatters.o = function(v) { + this.inspectOpts.colors = this.useColors; + return util3.inspect(v, this.inspectOpts).split("\n").map((str) => str.trim()).join(" "); + }; + formatters.O = function(v) { + this.inspectOpts.colors = this.useColors; + return util3.inspect(v, this.inspectOpts); + }; + } +}); + +// node_modules/debug/src/index.js +var require_src = __commonJS({ + "node_modules/debug/src/index.js"(exports2, module2) { + if (typeof process === "undefined" || process.type === "renderer" || process.browser === true || process.__nwjs) { + module2.exports = require_browser(); + } else { + module2.exports = require_node3(); + } + } +}); + +// node_modules/agent-base/dist/helpers.js +var require_helpers = __commonJS({ + "node_modules/agent-base/dist/helpers.js"(exports2) { + "use strict"; + var __createBinding = exports2 && exports2.__createBinding || (Object.create ? (function(o, m, k, k2) { + if (k2 === void 0) k2 = k; + var desc = Object.getOwnPropertyDescriptor(m, k); + if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { + desc = { enumerable: true, get: function() { + return m[k]; + } }; + } + Object.defineProperty(o, k2, desc); + }) : (function(o, m, k, k2) { + if (k2 === void 0) k2 = k; + o[k2] = m[k]; + })); + var __setModuleDefault = exports2 && exports2.__setModuleDefault || (Object.create ? (function(o, v) { + Object.defineProperty(o, "default", { enumerable: true, value: v }); + }) : function(o, v) { + o["default"] = v; + }); + var __importStar = exports2 && exports2.__importStar || function(mod) { + if (mod && mod.__esModule) return mod; + var result = {}; + if (mod != null) { + for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); + } + __setModuleDefault(result, mod); + return result; + }; + Object.defineProperty(exports2, "__esModule", { value: true }); + exports2.req = exports2.json = exports2.toBuffer = void 0; + var http5 = __importStar(require("http")); + var https3 = __importStar(require("https")); + async function toBuffer(stream) { + let length = 0; + const chunks = []; + for await (const chunk of stream) { + length += chunk.length; + chunks.push(chunk); + } + return Buffer.concat(chunks, length); + } + exports2.toBuffer = toBuffer; + async function json(stream) { + const buf = await toBuffer(stream); + const str = buf.toString("utf8"); + try { + return JSON.parse(str); + } catch (_err) { + const err = _err; + err.message += ` (input: ${str})`; + throw err; + } + } + exports2.json = json; + function req(url2, opts = {}) { + const href = typeof url2 === "string" ? url2 : url2.href; + const req2 = (href.startsWith("https:") ? https3 : http5).request(url2, opts); + const promise = new Promise((resolve, reject) => { + req2.once("response", resolve).once("error", reject).end(); + }); + req2.then = promise.then.bind(promise); + return req2; + } + exports2.req = req; + } +}); + +// node_modules/agent-base/dist/index.js +var require_dist = __commonJS({ + "node_modules/agent-base/dist/index.js"(exports2) { + "use strict"; + var __createBinding = exports2 && exports2.__createBinding || (Object.create ? (function(o, m, k, k2) { + if (k2 === void 0) k2 = k; + var desc = Object.getOwnPropertyDescriptor(m, k); + if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { + desc = { enumerable: true, get: function() { + return m[k]; + } }; + } + Object.defineProperty(o, k2, desc); + }) : (function(o, m, k, k2) { + if (k2 === void 0) k2 = k; + o[k2] = m[k]; + })); + var __setModuleDefault = exports2 && exports2.__setModuleDefault || (Object.create ? (function(o, v) { + Object.defineProperty(o, "default", { enumerable: true, value: v }); + }) : function(o, v) { + o["default"] = v; + }); + var __importStar = exports2 && exports2.__importStar || function(mod) { + if (mod && mod.__esModule) return mod; + var result = {}; + if (mod != null) { + for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); + } + __setModuleDefault(result, mod); + return result; + }; + var __exportStar = exports2 && exports2.__exportStar || function(m, exports3) { + for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports3, p)) __createBinding(exports3, m, p); + }; + Object.defineProperty(exports2, "__esModule", { value: true }); + exports2.Agent = void 0; + var net = __importStar(require("net")); + var http5 = __importStar(require("http")); + var https_1 = require("https"); + __exportStar(require_helpers(), exports2); + var INTERNAL = /* @__PURE__ */ Symbol("AgentBaseInternalState"); + var Agent = class extends http5.Agent { + constructor(opts) { + super(opts); + this[INTERNAL] = {}; + } + /** + * Determine whether this is an `http` or `https` request. + */ + isSecureEndpoint(options) { + if (options) { + if (typeof options.secureEndpoint === "boolean") { + return options.secureEndpoint; + } + if (typeof options.protocol === "string") { + return options.protocol === "https:"; + } + } + const { stack } = new Error(); + if (typeof stack !== "string") + return false; + return stack.split("\n").some((l) => l.indexOf("(https.js:") !== -1 || l.indexOf("node:https:") !== -1); + } + // In order to support async signatures in `connect()` and Node's native + // connection pooling in `http.Agent`, the array of sockets for each origin + // has to be updated synchronously. This is so the length of the array is + // accurate when `addRequest()` is next called. We achieve this by creating a + // fake socket and adding it to `sockets[origin]` and incrementing + // `totalSocketCount`. + incrementSockets(name5) { + if (this.maxSockets === Infinity && this.maxTotalSockets === Infinity) { + return null; + } + if (!this.sockets[name5]) { + this.sockets[name5] = []; + } + const fakeSocket = new net.Socket({ writable: false }); + this.sockets[name5].push(fakeSocket); + this.totalSocketCount++; + return fakeSocket; + } + decrementSockets(name5, socket) { + if (!this.sockets[name5] || socket === null) { + return; + } + const sockets = this.sockets[name5]; + const index = sockets.indexOf(socket); + if (index !== -1) { + sockets.splice(index, 1); + this.totalSocketCount--; + if (sockets.length === 0) { + delete this.sockets[name5]; + } + } + } + // In order to properly update the socket pool, we need to call `getName()` on + // the core `https.Agent` if it is a secureEndpoint. + getName(options) { + const secureEndpoint = this.isSecureEndpoint(options); + if (secureEndpoint) { + return https_1.Agent.prototype.getName.call(this, options); + } + return super.getName(options); + } + createSocket(req, options, cb) { + const connectOpts = { + ...options, + secureEndpoint: this.isSecureEndpoint(options) + }; + const name5 = this.getName(connectOpts); + const fakeSocket = this.incrementSockets(name5); + Promise.resolve().then(() => this.connect(req, connectOpts)).then((socket) => { + this.decrementSockets(name5, fakeSocket); + if (socket instanceof http5.Agent) { + try { + return socket.addRequest(req, connectOpts); + } catch (err) { + return cb(err); + } + } + this[INTERNAL].currentSocket = socket; + super.createSocket(req, options, cb); + }, (err) => { + this.decrementSockets(name5, fakeSocket); + cb(err); + }); + } + createConnection() { + const socket = this[INTERNAL].currentSocket; + this[INTERNAL].currentSocket = void 0; + if (!socket) { + throw new Error("No socket was returned in the `connect()` function"); + } + return socket; + } + get defaultPort() { + return this[INTERNAL].defaultPort ?? (this.protocol === "https:" ? 443 : 80); + } + set defaultPort(v) { + if (this[INTERNAL]) { + this[INTERNAL].defaultPort = v; + } + } + get protocol() { + return this[INTERNAL].protocol ?? (this.isSecureEndpoint() ? "https:" : "http:"); + } + set protocol(v) { + if (this[INTERNAL]) { + this[INTERNAL].protocol = v; + } + } + }; + exports2.Agent = Agent; + } +}); + +// node_modules/https-proxy-agent/dist/parse-proxy-response.js +var require_parse_proxy_response = __commonJS({ + "node_modules/https-proxy-agent/dist/parse-proxy-response.js"(exports2) { + "use strict"; + var __importDefault = exports2 && exports2.__importDefault || function(mod) { + return mod && mod.__esModule ? mod : { "default": mod }; + }; + Object.defineProperty(exports2, "__esModule", { value: true }); + exports2.parseProxyResponse = void 0; + var debug_1 = __importDefault(require_src()); + var debug = (0, debug_1.default)("https-proxy-agent:parse-proxy-response"); + function parseProxyResponse(socket) { + return new Promise((resolve, reject) => { + let buffersLength = 0; + const buffers = []; + function read() { + const b = socket.read(); + if (b) + ondata(b); + else + socket.once("readable", read); + } + function cleanup() { + socket.removeListener("end", onend); + socket.removeListener("error", onerror); + socket.removeListener("readable", read); + } + function onend() { + cleanup(); + debug("onend"); + reject(new Error("Proxy connection ended before receiving CONNECT response")); + } + function onerror(err) { + cleanup(); + debug("onerror %o", err); + reject(err); + } + function ondata(b) { + buffers.push(b); + buffersLength += b.length; + const buffered = Buffer.concat(buffers, buffersLength); + const endOfHeaders = buffered.indexOf("\r\n\r\n"); + if (endOfHeaders === -1) { + debug("have not received end of HTTP headers yet..."); + read(); + return; + } + const headerParts = buffered.slice(0, endOfHeaders).toString("ascii").split("\r\n"); + const firstLine = headerParts.shift(); + if (!firstLine) { + socket.destroy(); + return reject(new Error("No header received from proxy CONNECT response")); + } + const firstLineParts = firstLine.split(" "); + const statusCode = +firstLineParts[1]; + const statusText = firstLineParts.slice(2).join(" "); + const headers = {}; + for (const header of headerParts) { + if (!header) + continue; + const firstColon = header.indexOf(":"); + if (firstColon === -1) { + socket.destroy(); + return reject(new Error(`Invalid header from proxy CONNECT response: "${header}"`)); + } + const key = header.slice(0, firstColon).toLowerCase(); + const value = header.slice(firstColon + 1).trimStart(); + const current = headers[key]; + if (typeof current === "string") { + headers[key] = [current, value]; + } else if (Array.isArray(current)) { + current.push(value); + } else { + headers[key] = value; + } + } + debug("got proxy server response: %o %o", firstLine, headers); + cleanup(); + resolve({ + connect: { + statusCode, + statusText, + headers + }, + buffered + }); + } + socket.on("error", onerror); + socket.on("end", onend); + read(); + }); + } + exports2.parseProxyResponse = parseProxyResponse; + } +}); + +// node_modules/https-proxy-agent/dist/index.js +var require_dist2 = __commonJS({ + "node_modules/https-proxy-agent/dist/index.js"(exports2) { + "use strict"; + var __createBinding = exports2 && exports2.__createBinding || (Object.create ? (function(o, m, k, k2) { + if (k2 === void 0) k2 = k; + var desc = Object.getOwnPropertyDescriptor(m, k); + if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { + desc = { enumerable: true, get: function() { + return m[k]; + } }; + } + Object.defineProperty(o, k2, desc); + }) : (function(o, m, k, k2) { + if (k2 === void 0) k2 = k; + o[k2] = m[k]; + })); + var __setModuleDefault = exports2 && exports2.__setModuleDefault || (Object.create ? (function(o, v) { + Object.defineProperty(o, "default", { enumerable: true, value: v }); + }) : function(o, v) { + o["default"] = v; + }); + var __importStar = exports2 && exports2.__importStar || function(mod) { + if (mod && mod.__esModule) return mod; + var result = {}; + if (mod != null) { + for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); + } + __setModuleDefault(result, mod); + return result; + }; + var __importDefault = exports2 && exports2.__importDefault || function(mod) { + return mod && mod.__esModule ? mod : { "default": mod }; + }; + Object.defineProperty(exports2, "__esModule", { value: true }); + exports2.HttpsProxyAgent = void 0; + var net = __importStar(require("net")); + var tls = __importStar(require("tls")); + var assert_1 = __importDefault(require("assert")); + var debug_1 = __importDefault(require_src()); + var agent_base_1 = require_dist(); + var url_1 = require("url"); + var parse_proxy_response_1 = require_parse_proxy_response(); + var debug = (0, debug_1.default)("https-proxy-agent"); + var setServernameFromNonIpHost = (options) => { + if (options.servername === void 0 && options.host && !net.isIP(options.host)) { + return { + ...options, + servername: options.host + }; + } + return options; + }; + var HttpsProxyAgent2 = class extends agent_base_1.Agent { + constructor(proxy, opts) { + super(opts); + this.options = { path: void 0 }; + this.proxy = typeof proxy === "string" ? new url_1.URL(proxy) : proxy; + this.proxyHeaders = opts?.headers ?? {}; + debug("Creating new HttpsProxyAgent instance: %o", this.proxy.href); + const host = (this.proxy.hostname || this.proxy.host).replace(/^\[|\]$/g, ""); + const port = this.proxy.port ? parseInt(this.proxy.port, 10) : this.proxy.protocol === "https:" ? 443 : 80; + this.connectOpts = { + // Attempt to negotiate http/1.1 for proxy servers that support http/2 + ALPNProtocols: ["http/1.1"], + ...opts ? omit2(opts, "headers") : null, + host, + port + }; + } + /** + * Called when the node-core HTTP client library is creating a + * new HTTP request. + */ + async connect(req, opts) { + const { proxy } = this; + if (!opts.host) { + throw new TypeError('No "host" provided'); + } + let socket; + if (proxy.protocol === "https:") { + debug("Creating `tls.Socket`: %o", this.connectOpts); + socket = tls.connect(setServernameFromNonIpHost(this.connectOpts)); + } else { + debug("Creating `net.Socket`: %o", this.connectOpts); + socket = net.connect(this.connectOpts); + } + const headers = typeof this.proxyHeaders === "function" ? this.proxyHeaders() : { ...this.proxyHeaders }; + const host = net.isIPv6(opts.host) ? `[${opts.host}]` : opts.host; + let payload = `CONNECT ${host}:${opts.port} HTTP/1.1\r +`; + if (proxy.username || proxy.password) { + const auth = `${decodeURIComponent(proxy.username)}:${decodeURIComponent(proxy.password)}`; + headers["Proxy-Authorization"] = `Basic ${Buffer.from(auth).toString("base64")}`; + } + headers.Host = `${host}:${opts.port}`; + if (!headers["Proxy-Connection"]) { + headers["Proxy-Connection"] = this.keepAlive ? "Keep-Alive" : "close"; + } + for (const name5 of Object.keys(headers)) { + payload += `${name5}: ${headers[name5]}\r +`; + } + const proxyResponsePromise = (0, parse_proxy_response_1.parseProxyResponse)(socket); + socket.write(`${payload}\r +`); + const { connect, buffered } = await proxyResponsePromise; + req.emit("proxyConnect", connect); + this.emit("proxyConnect", connect, req); + if (connect.statusCode === 200) { + req.once("socket", resume); + if (opts.secureEndpoint) { + debug("Upgrading socket connection to TLS"); + return tls.connect({ + ...omit2(setServernameFromNonIpHost(opts), "host", "path", "port"), + socket + }); + } + return socket; + } + socket.destroy(); + const fakeSocket = new net.Socket({ writable: false }); + fakeSocket.readable = true; + req.once("socket", (s) => { + debug("Replaying proxy buffer for failed request"); + (0, assert_1.default)(s.listenerCount("data") > 0); + s.push(buffered); + s.push(null); + }); + return fakeSocket; + } + }; + HttpsProxyAgent2.protocols = ["http", "https"]; + exports2.HttpsProxyAgent = HttpsProxyAgent2; + function resume(socket) { + socket.resume(); + } + function omit2(obj, ...keys) { + const ret = {}; + let key; + for (key in obj) { + if (!keys.includes(key)) { + ret[key] = obj[key]; + } + } + return ret; + } + } +}); + +// node_modules/http-proxy-agent/dist/index.js +var require_dist3 = __commonJS({ + "node_modules/http-proxy-agent/dist/index.js"(exports2) { + "use strict"; + var __createBinding = exports2 && exports2.__createBinding || (Object.create ? (function(o, m, k, k2) { + if (k2 === void 0) k2 = k; + var desc = Object.getOwnPropertyDescriptor(m, k); + if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { + desc = { enumerable: true, get: function() { + return m[k]; + } }; + } + Object.defineProperty(o, k2, desc); + }) : (function(o, m, k, k2) { + if (k2 === void 0) k2 = k; + o[k2] = m[k]; + })); + var __setModuleDefault = exports2 && exports2.__setModuleDefault || (Object.create ? (function(o, v) { + Object.defineProperty(o, "default", { enumerable: true, value: v }); + }) : function(o, v) { + o["default"] = v; + }); + var __importStar = exports2 && exports2.__importStar || function(mod) { + if (mod && mod.__esModule) return mod; + var result = {}; + if (mod != null) { + for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); + } + __setModuleDefault(result, mod); + return result; + }; + var __importDefault = exports2 && exports2.__importDefault || function(mod) { + return mod && mod.__esModule ? mod : { "default": mod }; + }; + Object.defineProperty(exports2, "__esModule", { value: true }); + exports2.HttpProxyAgent = void 0; + var net = __importStar(require("net")); + var tls = __importStar(require("tls")); + var debug_1 = __importDefault(require_src()); + var events_1 = require("events"); + var agent_base_1 = require_dist(); + var url_1 = require("url"); + var debug = (0, debug_1.default)("http-proxy-agent"); + var HttpProxyAgent2 = class extends agent_base_1.Agent { + constructor(proxy, opts) { + super(opts); + this.proxy = typeof proxy === "string" ? new url_1.URL(proxy) : proxy; + this.proxyHeaders = opts?.headers ?? {}; + debug("Creating new HttpProxyAgent instance: %o", this.proxy.href); + const host = (this.proxy.hostname || this.proxy.host).replace(/^\[|\]$/g, ""); + const port = this.proxy.port ? parseInt(this.proxy.port, 10) : this.proxy.protocol === "https:" ? 443 : 80; + this.connectOpts = { + ...opts ? omit2(opts, "headers") : null, + host, + port + }; + } + addRequest(req, opts) { + req._header = null; + this.setRequestProps(req, opts); + super.addRequest(req, opts); + } + setRequestProps(req, opts) { + const { proxy } = this; + const protocol = opts.secureEndpoint ? "https:" : "http:"; + const hostname2 = req.getHeader("host") || "localhost"; + const base = `${protocol}//${hostname2}`; + const url2 = new url_1.URL(req.path, base); + if (opts.port !== 80) { + url2.port = String(opts.port); + } + req.path = String(url2); + const headers = typeof this.proxyHeaders === "function" ? this.proxyHeaders() : { ...this.proxyHeaders }; + if (proxy.username || proxy.password) { + const auth = `${decodeURIComponent(proxy.username)}:${decodeURIComponent(proxy.password)}`; + headers["Proxy-Authorization"] = `Basic ${Buffer.from(auth).toString("base64")}`; + } + if (!headers["Proxy-Connection"]) { + headers["Proxy-Connection"] = this.keepAlive ? "Keep-Alive" : "close"; + } + for (const name5 of Object.keys(headers)) { + const value = headers[name5]; + if (value) { + req.setHeader(name5, value); + } + } + } + async connect(req, opts) { + req._header = null; + if (!req.path.includes("://")) { + this.setRequestProps(req, opts); + } + let first; + let endOfHeaders; + debug("Regenerating stored HTTP header string for request"); + req._implicitHeader(); + if (req.outputData && req.outputData.length > 0) { + debug("Patching connection write() output buffer with updated header"); + first = req.outputData[0].data; + endOfHeaders = first.indexOf("\r\n\r\n") + 4; + req.outputData[0].data = req._header + first.substring(endOfHeaders); + debug("Output buffer: %o", req.outputData[0].data); + } + let socket; + if (this.proxy.protocol === "https:") { + debug("Creating `tls.Socket`: %o", this.connectOpts); + socket = tls.connect(this.connectOpts); + } else { + debug("Creating `net.Socket`: %o", this.connectOpts); + socket = net.connect(this.connectOpts); + } + await (0, events_1.once)(socket, "connect"); + return socket; + } + }; + HttpProxyAgent2.protocols = ["http", "https"]; + exports2.HttpProxyAgent = HttpProxyAgent2; + function omit2(obj, ...keys) { + const ret = {}; + let key; + for (key in obj) { + if (!keys.includes(key)) { + ret[key] = obj[key]; + } + } + return ret; + } + } +}); + +// node_modules/@typespec/ts-http-runtime/dist/esm/policies/proxyPolicy.js +function getEnvironmentValue(name5) { + if (process.env[name5]) { + return process.env[name5]; + } else if (process.env[name5.toLowerCase()]) { + return process.env[name5.toLowerCase()]; + } + return void 0; +} +function loadEnvironmentProxyValue() { + if (!process) { + return void 0; + } + const httpsProxy = getEnvironmentValue(HTTPS_PROXY); + const allProxy = getEnvironmentValue(ALL_PROXY); + const httpProxy = getEnvironmentValue(HTTP_PROXY); + return httpsProxy || allProxy || httpProxy; +} +function isBypassed(uri, noProxyList, bypassedMap) { + if (noProxyList.length === 0) { + return false; + } + const host = new URL(uri).hostname; + if (bypassedMap?.has(host)) { + return bypassedMap.get(host); + } + let isBypassedFlag = false; + for (const pattern of noProxyList) { + if (pattern[0] === ".") { + if (host.endsWith(pattern)) { + isBypassedFlag = true; + } else { + if (host.length === pattern.length - 1 && host === pattern.slice(1)) { + isBypassedFlag = true; + } + } + } else { + if (host === pattern) { + isBypassedFlag = true; + } + } + } + bypassedMap?.set(host, isBypassedFlag); + return isBypassedFlag; +} +function loadNoProxy() { + const noProxy = getEnvironmentValue(NO_PROXY); + noProxyListLoaded = true; + if (noProxy) { + return noProxy.split(",").map((item) => item.trim()).filter((item) => item.length); + } + return []; +} +function getDefaultProxySettingsInternal() { + const envProxy = loadEnvironmentProxyValue(); + return envProxy ? new URL(envProxy) : void 0; +} +function getUrlFromProxySettings(settings) { + let parsedProxyUrl; + try { + parsedProxyUrl = new URL(settings.host); + } catch { + throw new Error(`Expecting a valid host string in proxy settings, but found "${settings.host}".`); + } + parsedProxyUrl.port = String(settings.port); + if (settings.username) { + parsedProxyUrl.username = settings.username; + } + if (settings.password) { + parsedProxyUrl.password = settings.password; + } + return parsedProxyUrl; +} +function setProxyAgentOnRequest(request, cachedAgents, proxyUrl) { + if (request.agent) { + return; + } + const url2 = new URL(request.url); + const isInsecure = url2.protocol !== "https:"; + if (request.tlsSettings) { + logger5.warning("TLS settings are not supported in combination with custom Proxy, certificates provided to the client will be ignored."); + } + if (isInsecure) { + if (!cachedAgents.httpProxyAgent) { + cachedAgents.httpProxyAgent = new import_http_proxy_agent.HttpProxyAgent(proxyUrl); + } + request.agent = cachedAgents.httpProxyAgent; + } else { + if (!cachedAgents.httpsProxyAgent) { + cachedAgents.httpsProxyAgent = new import_https_proxy_agent.HttpsProxyAgent(proxyUrl); + } + request.agent = cachedAgents.httpsProxyAgent; + } +} +function proxyPolicy(proxySettings, options) { + if (!noProxyListLoaded) { + globalNoProxyList.push(...loadNoProxy()); + } + const defaultProxy = proxySettings ? getUrlFromProxySettings(proxySettings) : getDefaultProxySettingsInternal(); + const cachedAgents = {}; + return { + name: proxyPolicyName, + async sendRequest(request, next) { + if (!request.proxySettings && defaultProxy && !isBypassed(request.url, options?.customNoProxyList ?? globalNoProxyList, options?.customNoProxyList ? void 0 : globalBypassedMap)) { + setProxyAgentOnRequest(request, cachedAgents, defaultProxy); + } else if (request.proxySettings) { + setProxyAgentOnRequest(request, cachedAgents, getUrlFromProxySettings(request.proxySettings)); + } + return next(request); + } + }; +} +var import_https_proxy_agent, import_http_proxy_agent, HTTPS_PROXY, HTTP_PROXY, ALL_PROXY, NO_PROXY, proxyPolicyName, globalNoProxyList, noProxyListLoaded, globalBypassedMap; +var init_proxyPolicy = __esm({ + "node_modules/@typespec/ts-http-runtime/dist/esm/policies/proxyPolicy.js"() { + import_https_proxy_agent = __toESM(require_dist2(), 1); + import_http_proxy_agent = __toESM(require_dist3(), 1); + init_log2(); + HTTPS_PROXY = "HTTPS_PROXY"; + HTTP_PROXY = "HTTP_PROXY"; + ALL_PROXY = "ALL_PROXY"; + NO_PROXY = "NO_PROXY"; + proxyPolicyName = "proxyPolicy"; + globalNoProxyList = []; + noProxyListLoaded = false; + globalBypassedMap = /* @__PURE__ */ new Map(); + } +}); + +// node_modules/@typespec/ts-http-runtime/dist/esm/policies/agentPolicy.js +function agentPolicy(agent) { + return { + name: agentPolicyName, + sendRequest: async (req, next) => { + if (!req.agent) { + req.agent = agent; + } + return next(req); + } + }; +} +var agentPolicyName; +var init_agentPolicy = __esm({ + "node_modules/@typespec/ts-http-runtime/dist/esm/policies/agentPolicy.js"() { + agentPolicyName = "agentPolicy"; + } +}); + +// node_modules/@typespec/ts-http-runtime/dist/esm/policies/tlsPolicy.js +function tlsPolicy(tlsSettings) { + return { + name: tlsPolicyName, + sendRequest: async (req, next) => { + if (!req.tlsSettings) { + req.tlsSettings = tlsSettings; + } + return next(req); + } + }; +} +var tlsPolicyName; +var init_tlsPolicy = __esm({ + "node_modules/@typespec/ts-http-runtime/dist/esm/policies/tlsPolicy.js"() { + tlsPolicyName = "tlsPolicy"; + } +}); + +// node_modules/@typespec/ts-http-runtime/dist/esm/util/typeGuards.js +function isNodeReadableStream(x) { + return Boolean(x && typeof x["pipe"] === "function"); +} +function isWebReadableStream(x) { + return Boolean(x && typeof x.getReader === "function" && typeof x.tee === "function"); +} +function isBinaryBody(body) { + return body !== void 0 && (body instanceof Uint8Array || isReadableStream2(body) || typeof body === "function" || typeof Blob !== "undefined" && body instanceof Blob); +} +function isReadableStream2(x) { + return isNodeReadableStream(x) || isWebReadableStream(x); +} +function isBlob(x) { + return typeof Blob !== "undefined" && x instanceof Blob; +} +var init_typeGuards2 = __esm({ + "node_modules/@typespec/ts-http-runtime/dist/esm/util/typeGuards.js"() { + } +}); + +// node_modules/@typespec/ts-http-runtime/dist/esm/util/concat.js +async function* streamAsyncIterator() { + const reader = this.getReader(); + try { + while (true) { + const { done, value } = await reader.read(); + if (done) { + return; + } + yield value; + } + } finally { + reader.releaseLock(); + } +} +function makeAsyncIterable(webStream) { + if (!webStream[Symbol.asyncIterator]) { + webStream[Symbol.asyncIterator] = streamAsyncIterator.bind(webStream); + } + if (!webStream.values) { + webStream.values = streamAsyncIterator.bind(webStream); + } +} +function ensureNodeStream(stream) { + if (stream instanceof ReadableStream) { + makeAsyncIterable(stream); + return import_stream.Readable.fromWeb(stream); + } else { + return stream; + } +} +function toStream(source) { + if (source instanceof Uint8Array) { + return import_stream.Readable.from(Buffer.from(source)); + } else if (isBlob(source)) { + return ensureNodeStream(source.stream()); + } else { + return ensureNodeStream(source); + } +} +async function concat(sources) { + return function() { + const streams = sources.map((x) => typeof x === "function" ? x() : x).map(toStream); + return import_stream.Readable.from((async function* () { + for (const stream of streams) { + for await (const chunk of stream) { + yield chunk; + } + } + })()); + }; +} +var import_stream; +var init_concat = __esm({ + "node_modules/@typespec/ts-http-runtime/dist/esm/util/concat.js"() { + import_stream = require("stream"); + init_typeGuards2(); + } +}); + +// node_modules/@typespec/ts-http-runtime/dist/esm/policies/multipartPolicy.js +function generateBoundary() { + return `----AzSDKFormBoundary${randomUUID()}`; +} +function encodeHeaders(headers) { + let result = ""; + for (const [key, value] of headers) { + result += `${key}: ${value}\r +`; + } + return result; +} +function getLength(source) { + if (source instanceof Uint8Array) { + return source.byteLength; + } else if (isBlob(source)) { + return source.size === -1 ? void 0 : source.size; + } else { + return void 0; + } +} +function getTotalLength(sources) { + let total = 0; + for (const source of sources) { + const partLength = getLength(source); + if (partLength === void 0) { + return void 0; + } else { + total += partLength; + } + } + return total; +} +async function buildRequestBody(request, parts, boundary) { + const sources = [ + stringToUint8Array(`--${boundary}`, "utf-8"), + ...parts.flatMap((part) => [ + stringToUint8Array("\r\n", "utf-8"), + stringToUint8Array(encodeHeaders(part.headers), "utf-8"), + stringToUint8Array("\r\n", "utf-8"), + part.body, + stringToUint8Array(`\r +--${boundary}`, "utf-8") + ]), + stringToUint8Array("--\r\n\r\n", "utf-8") + ]; + const contentLength = getTotalLength(sources); + if (contentLength) { + request.headers.set("Content-Length", contentLength); + } + request.body = await concat(sources); +} +function assertValidBoundary(boundary) { + if (boundary.length > maxBoundaryLength) { + throw new Error(`Multipart boundary "${boundary}" exceeds maximum length of 70 characters`); + } + if (Array.from(boundary).some((x) => !validBoundaryCharacters.has(x))) { + throw new Error(`Multipart boundary "${boundary}" contains invalid characters`); + } +} +function multipartPolicy() { + return { + name: multipartPolicyName, + async sendRequest(request, next) { + if (!request.multipartBody) { + return next(request); + } + if (request.body) { + throw new Error("multipartBody and regular body cannot be set at the same time"); + } + let boundary = request.multipartBody.boundary; + const contentTypeHeader = request.headers.get("Content-Type") ?? "multipart/mixed"; + const parsedHeader = contentTypeHeader.match(/^(multipart\/[^ ;]+)(?:; *boundary=(.+))?$/); + if (!parsedHeader) { + throw new Error(`Got multipart request body, but content-type header was not multipart: ${contentTypeHeader}`); + } + const [, contentType, parsedBoundary] = parsedHeader; + if (parsedBoundary && boundary && parsedBoundary !== boundary) { + throw new Error(`Multipart boundary was specified as ${parsedBoundary} in the header, but got ${boundary} in the request body`); + } + boundary ??= parsedBoundary; + if (boundary) { + assertValidBoundary(boundary); + } else { + boundary = generateBoundary(); + } + request.headers.set("Content-Type", `${contentType}; boundary=${boundary}`); + await buildRequestBody(request, request.multipartBody.parts, boundary); + request.multipartBody = void 0; + return next(request); + } + }; +} +var multipartPolicyName, maxBoundaryLength, validBoundaryCharacters; +var init_multipartPolicy = __esm({ + "node_modules/@typespec/ts-http-runtime/dist/esm/policies/multipartPolicy.js"() { + init_bytesEncoding(); + init_typeGuards2(); + init_uuidUtils(); + init_concat(); + multipartPolicyName = "multipartPolicy"; + maxBoundaryLength = 70; + validBoundaryCharacters = new Set(`abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789'()+,-./:=?`); + } +}); + +// node_modules/@typespec/ts-http-runtime/dist/esm/createPipelineFromOptions.js +function createPipelineFromOptions(options) { + const pipeline = createEmptyPipeline(); + if (isNodeLike) { + if (options.agent) { + pipeline.addPolicy(agentPolicy(options.agent)); + } + if (options.tlsOptions) { + pipeline.addPolicy(tlsPolicy(options.tlsOptions)); + } + pipeline.addPolicy(proxyPolicy(options.proxyOptions)); + pipeline.addPolicy(decompressResponsePolicy()); + } + pipeline.addPolicy(formDataPolicy(), { beforePolicies: [multipartPolicyName] }); + pipeline.addPolicy(userAgentPolicy(options.userAgentOptions)); + pipeline.addPolicy(multipartPolicy(), { afterPhase: "Deserialize" }); + pipeline.addPolicy(defaultRetryPolicy(options.retryOptions), { phase: "Retry" }); + if (isNodeLike) { + pipeline.addPolicy(redirectPolicy(options.redirectOptions), { afterPhase: "Retry" }); + } + pipeline.addPolicy(logPolicy(options.loggingOptions), { afterPhase: "Sign" }); + return pipeline; +} +var init_createPipelineFromOptions = __esm({ + "node_modules/@typespec/ts-http-runtime/dist/esm/createPipelineFromOptions.js"() { + init_logPolicy(); + init_pipeline(); + init_redirectPolicy(); + init_userAgentPolicy(); + init_decompressResponsePolicy(); + init_defaultRetryPolicy(); + init_formDataPolicy(); + init_checkEnvironment(); + init_proxyPolicy(); + init_agentPolicy(); + init_tlsPolicy(); + init_multipartPolicy(); + } +}); + +// node_modules/@typespec/ts-http-runtime/dist/esm/client/apiVersionPolicy.js +function apiVersionPolicy(options) { + return { + name: apiVersionPolicyName, + sendRequest: (req, next) => { + const url2 = new URL(req.url); + if (!url2.searchParams.get("api-version") && options.apiVersion) { + req.url = `${req.url}${Array.from(url2.searchParams.keys()).length > 0 ? "&" : "?"}api-version=${options.apiVersion}`; + } + return next(req); + } + }; +} +var apiVersionPolicyName; +var init_apiVersionPolicy = __esm({ + "node_modules/@typespec/ts-http-runtime/dist/esm/client/apiVersionPolicy.js"() { + apiVersionPolicyName = "ApiVersionPolicy"; + } +}); + +// node_modules/@typespec/ts-http-runtime/dist/esm/auth/credentials.js +function isOAuth2TokenCredential(credential) { + return "getOAuth2Token" in credential; +} +function isBearerTokenCredential(credential) { + return "getBearerToken" in credential; +} +function isBasicCredential(credential) { + return "username" in credential && "password" in credential; +} +function isApiKeyCredential(credential) { + return "key" in credential; +} +var init_credentials = __esm({ + "node_modules/@typespec/ts-http-runtime/dist/esm/auth/credentials.js"() { + } +}); + +// node_modules/@typespec/ts-http-runtime/dist/esm/policies/auth/checkInsecureConnection.js +function allowInsecureConnection(request, options) { + if (options.allowInsecureConnection && request.allowInsecureConnection) { + const url2 = new URL(request.url); + if (url2.hostname === "localhost" || url2.hostname === "127.0.0.1") { + return true; + } + } + return false; +} +function emitInsecureConnectionWarning() { + const warning = "Sending token over insecure transport. Assume any token issued is compromised."; + logger5.warning(warning); + if (typeof process?.emitWarning === "function" && !insecureConnectionWarningEmmitted) { + insecureConnectionWarningEmmitted = true; + process.emitWarning(warning); + } +} +function ensureSecureConnection(request, options) { + if (!request.url.toLowerCase().startsWith("https://")) { + if (allowInsecureConnection(request, options)) { + emitInsecureConnectionWarning(); + } else { + throw new Error("Authentication is not permitted for non-TLS protected (non-https) URLs when allowInsecureConnection is false."); + } + } +} +var insecureConnectionWarningEmmitted; +var init_checkInsecureConnection = __esm({ + "node_modules/@typespec/ts-http-runtime/dist/esm/policies/auth/checkInsecureConnection.js"() { + init_log2(); + insecureConnectionWarningEmmitted = false; + } +}); + +// node_modules/@typespec/ts-http-runtime/dist/esm/policies/auth/apiKeyAuthenticationPolicy.js +function apiKeyAuthenticationPolicy(options) { + return { + name: apiKeyAuthenticationPolicyName, + async sendRequest(request, next) { + ensureSecureConnection(request, options); + const scheme = (request.authSchemes ?? options.authSchemes)?.find((x) => x.kind === "apiKey"); + if (!scheme) { + return next(request); + } + if (scheme.apiKeyLocation !== "header") { + throw new Error(`Unsupported API key location: ${scheme.apiKeyLocation}`); + } + request.headers.set(scheme.name, options.credential.key); + return next(request); + } + }; +} +var apiKeyAuthenticationPolicyName; +var init_apiKeyAuthenticationPolicy = __esm({ + "node_modules/@typespec/ts-http-runtime/dist/esm/policies/auth/apiKeyAuthenticationPolicy.js"() { + init_checkInsecureConnection(); + apiKeyAuthenticationPolicyName = "apiKeyAuthenticationPolicy"; + } +}); + +// node_modules/@typespec/ts-http-runtime/dist/esm/policies/auth/basicAuthenticationPolicy.js +function basicAuthenticationPolicy(options) { + return { + name: basicAuthenticationPolicyName, + async sendRequest(request, next) { + ensureSecureConnection(request, options); + const scheme = (request.authSchemes ?? options.authSchemes)?.find((x) => x.kind === "http" && x.scheme === "basic"); + if (!scheme) { + return next(request); + } + const { username, password } = options.credential; + const headerValue = uint8ArrayToString(stringToUint8Array(`${username}:${password}`, "utf-8"), "base64"); + request.headers.set("Authorization", `Basic ${headerValue}`); + return next(request); + } + }; +} +var basicAuthenticationPolicyName; +var init_basicAuthenticationPolicy = __esm({ + "node_modules/@typespec/ts-http-runtime/dist/esm/policies/auth/basicAuthenticationPolicy.js"() { + init_bytesEncoding(); + init_checkInsecureConnection(); + basicAuthenticationPolicyName = "bearerAuthenticationPolicy"; + } +}); + +// node_modules/@typespec/ts-http-runtime/dist/esm/policies/auth/bearerAuthenticationPolicy.js +function bearerAuthenticationPolicy(options) { + return { + name: bearerAuthenticationPolicyName, + async sendRequest(request, next) { + ensureSecureConnection(request, options); + const scheme = (request.authSchemes ?? options.authSchemes)?.find((x) => x.kind === "http" && x.scheme === "bearer"); + if (!scheme) { + return next(request); + } + const token = await options.credential.getBearerToken({ + abortSignal: request.abortSignal + }); + request.headers.set("Authorization", `Bearer ${token}`); + return next(request); + } + }; +} +var bearerAuthenticationPolicyName; +var init_bearerAuthenticationPolicy = __esm({ + "node_modules/@typespec/ts-http-runtime/dist/esm/policies/auth/bearerAuthenticationPolicy.js"() { + init_checkInsecureConnection(); + bearerAuthenticationPolicyName = "bearerAuthenticationPolicy"; + } +}); + +// node_modules/@typespec/ts-http-runtime/dist/esm/policies/auth/oauth2AuthenticationPolicy.js +function oauth2AuthenticationPolicy(options) { + return { + name: oauth2AuthenticationPolicyName, + async sendRequest(request, next) { + ensureSecureConnection(request, options); + const scheme = (request.authSchemes ?? options.authSchemes)?.find((x) => x.kind === "oauth2"); + if (!scheme) { + return next(request); + } + const token = await options.credential.getOAuth2Token(scheme.flows, { + abortSignal: request.abortSignal + }); + request.headers.set("Authorization", `Bearer ${token}`); + return next(request); + } + }; +} +var oauth2AuthenticationPolicyName; +var init_oauth2AuthenticationPolicy = __esm({ + "node_modules/@typespec/ts-http-runtime/dist/esm/policies/auth/oauth2AuthenticationPolicy.js"() { + init_checkInsecureConnection(); + oauth2AuthenticationPolicyName = "oauth2AuthenticationPolicy"; + } +}); + +// node_modules/@typespec/ts-http-runtime/dist/esm/client/clientHelpers.js +function createDefaultPipeline(options = {}) { + const pipeline = createPipelineFromOptions(options); + pipeline.addPolicy(apiVersionPolicy(options)); + const { credential, authSchemes, allowInsecureConnection: allowInsecureConnection2 } = options; + if (credential) { + if (isApiKeyCredential(credential)) { + pipeline.addPolicy(apiKeyAuthenticationPolicy({ authSchemes, credential, allowInsecureConnection: allowInsecureConnection2 })); + } else if (isBasicCredential(credential)) { + pipeline.addPolicy(basicAuthenticationPolicy({ authSchemes, credential, allowInsecureConnection: allowInsecureConnection2 })); + } else if (isBearerTokenCredential(credential)) { + pipeline.addPolicy(bearerAuthenticationPolicy({ authSchemes, credential, allowInsecureConnection: allowInsecureConnection2 })); + } else if (isOAuth2TokenCredential(credential)) { + pipeline.addPolicy(oauth2AuthenticationPolicy({ authSchemes, credential, allowInsecureConnection: allowInsecureConnection2 })); + } + } + return pipeline; +} +function getCachedDefaultHttpsClient() { + if (!cachedHttpClient) { + cachedHttpClient = createDefaultHttpClient(); + } + return cachedHttpClient; +} +var cachedHttpClient; +var init_clientHelpers = __esm({ + "node_modules/@typespec/ts-http-runtime/dist/esm/client/clientHelpers.js"() { + init_defaultHttpClient(); + init_createPipelineFromOptions(); + init_apiVersionPolicy(); + init_credentials(); + init_apiKeyAuthenticationPolicy(); + init_basicAuthenticationPolicy(); + init_bearerAuthenticationPolicy(); + init_oauth2AuthenticationPolicy(); + } +}); + +// node_modules/@typespec/ts-http-runtime/dist/esm/client/multipart.js +function getHeaderValue(descriptor, headerName) { + if (descriptor.headers) { + const actualHeaderName = Object.keys(descriptor.headers).find((x) => x.toLowerCase() === headerName.toLowerCase()); + if (actualHeaderName) { + return descriptor.headers[actualHeaderName]; + } + } + return void 0; +} +function getPartContentType(descriptor) { + const contentTypeHeader = getHeaderValue(descriptor, "content-type"); + if (contentTypeHeader) { + return contentTypeHeader; + } + if (descriptor.contentType === null) { + return void 0; + } + if (descriptor.contentType) { + return descriptor.contentType; + } + const { body } = descriptor; + if (body === null || body === void 0) { + return void 0; + } + if (typeof body === "string" || typeof body === "number" || typeof body === "boolean") { + return "text/plain; charset=UTF-8"; + } + if (body instanceof Blob) { + return body.type || "application/octet-stream"; + } + if (isBinaryBody(body)) { + return "application/octet-stream"; + } + return "application/json"; +} +function escapeDispositionField(value) { + return JSON.stringify(value); +} +function getContentDisposition(descriptor) { + const contentDispositionHeader = getHeaderValue(descriptor, "content-disposition"); + if (contentDispositionHeader) { + return contentDispositionHeader; + } + if (descriptor.dispositionType === void 0 && descriptor.name === void 0 && descriptor.filename === void 0) { + return void 0; + } + const dispositionType = descriptor.dispositionType ?? "form-data"; + let disposition = dispositionType; + if (descriptor.name) { + disposition += `; name=${escapeDispositionField(descriptor.name)}`; + } + let filename = void 0; + if (descriptor.filename) { + filename = descriptor.filename; + } else if (typeof File !== "undefined" && descriptor.body instanceof File) { + const filenameFromFile = descriptor.body.name; + if (filenameFromFile !== "") { + filename = filenameFromFile; + } + } + if (filename) { + disposition += `; filename=${escapeDispositionField(filename)}`; + } + return disposition; +} +function normalizeBody(body, contentType) { + if (body === void 0) { + return new Uint8Array([]); + } + if (isBinaryBody(body)) { + return body; + } + if (typeof body === "string" || typeof body === "number" || typeof body === "boolean") { + return stringToUint8Array(String(body), "utf-8"); + } + if (contentType && /application\/(.+\+)?json(;.+)?/i.test(String(contentType))) { + return stringToUint8Array(JSON.stringify(body), "utf-8"); + } + throw new RestError(`Unsupported body/content-type combination: ${body}, ${contentType}`); +} +function buildBodyPart(descriptor) { + const contentType = getPartContentType(descriptor); + const contentDisposition = getContentDisposition(descriptor); + const headers = createHttpHeaders(descriptor.headers ?? {}); + if (contentType) { + headers.set("content-type", contentType); + } + if (contentDisposition) { + headers.set("content-disposition", contentDisposition); + } + const body = normalizeBody(descriptor.body, contentType); + return { + headers, + body + }; +} +function buildMultipartBody(parts) { + return { parts: parts.map(buildBodyPart) }; +} +var init_multipart = __esm({ + "node_modules/@typespec/ts-http-runtime/dist/esm/client/multipart.js"() { + init_restError(); + init_httpHeaders(); + init_bytesEncoding(); + init_typeGuards2(); + } +}); + +// node_modules/@typespec/ts-http-runtime/dist/esm/client/sendRequest.js +async function sendRequest(method, url2, pipeline, options = {}, customHttpClient) { + const httpClient = customHttpClient ?? getCachedDefaultHttpsClient(); + const request = buildPipelineRequest(method, url2, options); + try { + const response = await pipeline.sendRequest(httpClient, request); + const headers = response.headers.toJSON(); + const stream = response.readableStreamBody ?? response.browserStreamBody; + const parsedBody = options.responseAsStream || stream !== void 0 ? void 0 : getResponseBody(response); + const body = stream ?? parsedBody; + if (options?.onResponse) { + options.onResponse({ ...response, request, rawHeaders: headers, parsedBody }); + } + return { + request, + headers, + status: `${response.status}`, + body + }; + } catch (e) { + if (isRestError(e) && e.response && options.onResponse) { + const { response } = e; + const rawHeaders = response.headers.toJSON(); + options?.onResponse({ ...response, request, rawHeaders }, e); + } + throw e; + } +} +function getRequestContentType(options = {}) { + if (options.contentType) { + return options.contentType; + } + const headerContentType = options.headers?.["content-type"]; + if (typeof headerContentType === "string") { + return headerContentType; + } + return getContentType(options.body); +} +function getContentType(body) { + if (body === void 0) { + return void 0; + } + if (ArrayBuffer.isView(body)) { + return "application/octet-stream"; + } + if (isBlob(body) && body.type) { + return body.type; + } + if (typeof body === "string") { + try { + JSON.parse(body); + return "application/json"; + } catch (error2) { + return void 0; + } + } + return "application/json"; +} +function buildPipelineRequest(method, url2, options = {}) { + const requestContentType = getRequestContentType(options); + const { body, multipartBody } = getRequestBody(options.body, requestContentType); + const headers = createHttpHeaders({ + ...options.headers ? options.headers : {}, + accept: options.accept ?? options.headers?.accept ?? "application/json", + ...requestContentType && { + "content-type": requestContentType + } + }); + return createPipelineRequest({ + url: url2, + method, + body, + multipartBody, + headers, + allowInsecureConnection: options.allowInsecureConnection, + abortSignal: options.abortSignal, + onUploadProgress: options.onUploadProgress, + onDownloadProgress: options.onDownloadProgress, + timeout: options.timeout, + enableBrowserStreams: true, + streamResponseStatusCodes: options.responseAsStream ? /* @__PURE__ */ new Set([Number.POSITIVE_INFINITY]) : void 0 + }); +} +function getRequestBody(body, contentType = "") { + if (body === void 0) { + return { body: void 0 }; + } + if (typeof FormData !== "undefined" && body instanceof FormData) { + return { body }; + } + if (isBlob(body)) { + return { body }; + } + if (isReadableStream2(body)) { + return { body }; + } + if (typeof body === "function") { + return { body }; + } + if (ArrayBuffer.isView(body)) { + return { body: body instanceof Uint8Array ? body : JSON.stringify(body) }; + } + const firstType = contentType.split(";")[0]; + switch (firstType) { + case "application/json": + return { body: JSON.stringify(body) }; + case "multipart/form-data": + if (Array.isArray(body)) { + return { multipartBody: buildMultipartBody(body) }; + } + return { body: JSON.stringify(body) }; + case "text/plain": + return { body: String(body) }; + default: + if (typeof body === "string") { + return { body }; + } + return { body: JSON.stringify(body) }; + } +} +function getResponseBody(response) { + const contentType = response.headers.get("content-type") ?? ""; + const firstType = contentType.split(";")[0]; + const bodyToParse = response.bodyAsText ?? ""; + if (firstType === "text/plain") { + return String(bodyToParse); + } + try { + return bodyToParse ? JSON.parse(bodyToParse) : void 0; + } catch (error2) { + if (firstType === "application/json") { + throw createParseError(response, error2); + } + return String(bodyToParse); + } +} +function createParseError(response, err) { + const msg = `Error "${err}" occurred while parsing the response body - ${response.bodyAsText}.`; + const errCode = err.code ?? RestError.PARSE_ERROR; + return new RestError(msg, { + code: errCode, + statusCode: response.status, + request: response.request, + response + }); +} +var init_sendRequest = __esm({ + "node_modules/@typespec/ts-http-runtime/dist/esm/client/sendRequest.js"() { + init_restError(); + init_httpHeaders(); + init_pipelineRequest(); + init_clientHelpers(); + init_typeGuards2(); + init_multipart(); + } +}); + +// node_modules/@typespec/ts-http-runtime/dist/esm/client/urlHelpers.js +function isQueryParameterWithOptions(x) { + if (typeof x !== "object" || x === null || !Object.hasOwn(x, "value")) { + return false; + } + const value = x.value; + return typeof value?.toString === "function"; +} +function buildRequestUrl(endpoint, routePath, pathParameters, options = {}) { + if (routePath.startsWith("https://") || routePath.startsWith("http://")) { + return routePath; + } + endpoint = buildBaseUrl(endpoint, options); + const updatedRoutePath = buildRoutePath(routePath, pathParameters, options); + const requestUrl = appendQueryParams(appendPath(endpoint, updatedRoutePath), options); + const url2 = new URL(requestUrl); + return url2.toString(); +} +function appendPath(endpoint, pathToAppend) { + const endpointSearchStart = endpoint.indexOf("?"); + const pathSearchStart = pathToAppend.indexOf("?"); + const endpointParts = endpointSearchStart !== -1 ? [endpoint.substring(0, endpointSearchStart), endpoint.substring(endpointSearchStart + 1)] : [endpoint, ""]; + const pathParts = pathSearchStart !== -1 ? [pathToAppend.substring(0, pathSearchStart), pathToAppend.substring(pathSearchStart + 1)] : [pathToAppend, ""]; + const combinedSearch = [endpointParts[1], pathParts[1].replaceAll("?", "&")].filter(Boolean).join("&"); + const baseEndpoint = endpointParts[0].replace(/(^[^:]+:\/\/[^/]+)\/\/+/, "$1/"); + const basePathToAppend = pathParts[0]; + let combinedUrl = baseEndpoint; + if (!baseEndpoint.endsWith("/") && !basePathToAppend.startsWith("/") && basePathToAppend !== "") { + combinedUrl += `/${basePathToAppend}`; + } else if (baseEndpoint.endsWith("/") && basePathToAppend.startsWith("/")) { + combinedUrl += basePathToAppend.substring(1); + } else { + combinedUrl += basePathToAppend; + } + if (combinedSearch) { + combinedUrl += `?${combinedSearch}`; + } + return combinedUrl; +} +function getQueryParamValue(key, allowReserved, style, param) { + let separator; + if (style === "pipeDelimited") { + separator = "|"; + } else if (style === "spaceDelimited") { + separator = "%20"; + } else { + separator = ","; + } + let paramValues; + if (Array.isArray(param)) { + paramValues = param; + } else if (typeof param === "object" && param.toString === Object.prototype.toString) { + paramValues = Object.entries(param).flat(); + } else { + paramValues = [param]; + } + const value = paramValues.map((p) => { + if (p === null || p === void 0) { + return ""; + } + if (!p.toString || typeof p.toString !== "function") { + throw new Error(`Query parameters must be able to be represented as string, ${key} can't`); + } + const rawValue = p.toISOString !== void 0 ? p.toISOString() : p.toString(); + return allowReserved ? rawValue : encodeURIComponent(rawValue); + }).join(separator); + return `${allowReserved ? key : encodeURIComponent(key)}=${value}`; +} +function simpleParseQueryParams(queryString) { + const result = /* @__PURE__ */ new Map(); + if (!queryString || queryString[0] !== "?") { + return result; + } + queryString = queryString.slice(1); + const pairs = queryString.split("&"); + for (const pair of pairs) { + const eqIndex = pair.indexOf("="); + const name5 = eqIndex === -1 ? pair : pair.substring(0, eqIndex); + const value = eqIndex === -1 ? "" : pair.substring(eqIndex + 1); + const existingValue = result.get(name5); + if (existingValue !== void 0) { + if (Array.isArray(existingValue)) { + existingValue.push(value); + } else { + result.set(name5, [existingValue, value]); + } + } else { + result.set(name5, value); + } + } + return result; +} +function appendQueryParams(url2, options = {}) { + if (!options.queryParameters) { + return url2; + } + const parsedUrl = new URL(url2); + const queryParams = options.queryParameters; + const existingParams = simpleParseQueryParams(parsedUrl.search); + const newParamStrings = []; + for (const key of Object.keys(queryParams)) { + const param = queryParams[key]; + if (param === void 0 || param === null) { + continue; + } + const hasMetadata = isQueryParameterWithOptions(param); + const rawValue = hasMetadata ? param.value : param; + const explode = hasMetadata ? param.explode ?? false : false; + const style = hasMetadata && param.style ? param.style : "form"; + if (explode) { + if (Array.isArray(rawValue)) { + for (const item of rawValue) { + newParamStrings.push(getQueryParamValue(key, options.skipUrlEncoding ?? false, style, item)); + } + } else if (rawValue !== null && typeof rawValue === "object") { + for (const [actualKey, value] of Object.entries(rawValue)) { + newParamStrings.push(getQueryParamValue(actualKey, options.skipUrlEncoding ?? false, style, value)); + } + } else { + throw new Error("explode can only be set to true for objects and arrays"); + } + } else { + newParamStrings.push(getQueryParamValue(key, options.skipUrlEncoding ?? false, style, rawValue)); + } + } + for (const paramString of newParamStrings) { + const eqIndex = paramString.indexOf("="); + const name5 = paramString.substring(0, eqIndex); + const value = paramString.substring(eqIndex + 1); + const existingValue = existingParams.get(name5); + if (existingValue !== void 0) { + if (Array.isArray(existingValue)) { + if (!existingValue.includes(value)) { + existingValue.push(value); + } + } else if (existingValue !== value) { + existingParams.set(name5, [existingValue, value]); + } + } else { + existingParams.set(name5, value); + } + } + const searchPieces = []; + for (const [name5, value] of existingParams) { + if (Array.isArray(value)) { + for (const subValue of value) { + searchPieces.push(`${name5}=${subValue}`); + } + } else { + searchPieces.push(`${name5}=${value}`); + } + } + parsedUrl.search = searchPieces.length ? `?${searchPieces.join("&")}` : ""; + return parsedUrl.toString(); +} +function buildBaseUrl(endpoint, options) { + if (!options.pathParameters) { + return endpoint; + } + const pathParams = options.pathParameters; + for (const [key, param] of Object.entries(pathParams)) { + if (param === void 0 || param === null) { + throw new Error(`Path parameters ${key} must not be undefined or null`); + } + if (!param.toString || typeof param.toString !== "function") { + throw new Error(`Path parameters must be able to be represented as string, ${key} can't`); + } + let value = param.toISOString !== void 0 ? param.toISOString() : String(param); + if (!options.skipUrlEncoding) { + value = encodeURIComponent(param); + } + endpoint = replaceAll(endpoint, `{${key}}`, value) ?? ""; + } + return endpoint; +} +function buildRoutePath(routePath, pathParameters, options = {}) { + for (const pathParam of pathParameters) { + const allowReserved = typeof pathParam === "object" && (pathParam.allowReserved ?? false); + let value = typeof pathParam === "object" ? pathParam.value : pathParam; + if (!options.skipUrlEncoding && !allowReserved) { + value = encodeURIComponent(value); + } + routePath = routePath.replace(/\{[\w-]+\}/, String(value)); + } + return routePath; +} +function replaceAll(value, searchValue, replaceValue) { + return !value || !searchValue ? value : value.split(searchValue).join(replaceValue || ""); +} +var init_urlHelpers = __esm({ + "node_modules/@typespec/ts-http-runtime/dist/esm/client/urlHelpers.js"() { + } +}); + +// node_modules/@typespec/ts-http-runtime/dist/esm/client/getClient.js +function getClient(endpoint, clientOptions = {}) { + const pipeline = clientOptions.pipeline ?? createDefaultPipeline(clientOptions); + if (clientOptions.additionalPolicies?.length) { + for (const { policy, position } of clientOptions.additionalPolicies) { + const afterPhase = position === "perRetry" ? "Sign" : void 0; + pipeline.addPolicy(policy, { + afterPhase + }); + } + } + const { allowInsecureConnection: allowInsecureConnection2, httpClient } = clientOptions; + const endpointUrl = clientOptions.endpoint ?? endpoint; + const client = (path9, ...args) => { + const getUrl = (requestOptions) => buildRequestUrl(endpointUrl, path9, args, { allowInsecureConnection: allowInsecureConnection2, ...requestOptions }); + return { + get: (requestOptions = {}) => { + return buildOperation("GET", getUrl(requestOptions), pipeline, requestOptions, allowInsecureConnection2, httpClient); + }, + post: (requestOptions = {}) => { + return buildOperation("POST", getUrl(requestOptions), pipeline, requestOptions, allowInsecureConnection2, httpClient); + }, + put: (requestOptions = {}) => { + return buildOperation("PUT", getUrl(requestOptions), pipeline, requestOptions, allowInsecureConnection2, httpClient); + }, + patch: (requestOptions = {}) => { + return buildOperation("PATCH", getUrl(requestOptions), pipeline, requestOptions, allowInsecureConnection2, httpClient); + }, + delete: (requestOptions = {}) => { + return buildOperation("DELETE", getUrl(requestOptions), pipeline, requestOptions, allowInsecureConnection2, httpClient); + }, + head: (requestOptions = {}) => { + return buildOperation("HEAD", getUrl(requestOptions), pipeline, requestOptions, allowInsecureConnection2, httpClient); + }, + options: (requestOptions = {}) => { + return buildOperation("OPTIONS", getUrl(requestOptions), pipeline, requestOptions, allowInsecureConnection2, httpClient); + }, + trace: (requestOptions = {}) => { + return buildOperation("TRACE", getUrl(requestOptions), pipeline, requestOptions, allowInsecureConnection2, httpClient); + } + }; + }; + return { + path: client, + pathUnchecked: client, + pipeline + }; +} +function buildOperation(method, url2, pipeline, options, allowInsecureConnection2, httpClient) { + allowInsecureConnection2 = options.allowInsecureConnection ?? allowInsecureConnection2; + return { + then: function(onFulfilled, onrejected) { + return sendRequest(method, url2, pipeline, { ...options, allowInsecureConnection: allowInsecureConnection2 }, httpClient).then(onFulfilled, onrejected); + }, + async asBrowserStream() { + if (isNodeLike) { + throw new Error("`asBrowserStream` is supported only in the browser environment. Use `asNodeStream` instead to obtain the response body stream. If you require a Web stream of the response in Node, consider using `Readable.toWeb` on the result of `asNodeStream`."); + } else { + return sendRequest(method, url2, pipeline, { ...options, allowInsecureConnection: allowInsecureConnection2, responseAsStream: true }, httpClient); + } + }, + async asNodeStream() { + if (isNodeLike) { + return sendRequest(method, url2, pipeline, { ...options, allowInsecureConnection: allowInsecureConnection2, responseAsStream: true }, httpClient); + } else { + throw new Error("`isNodeStream` is not supported in the browser environment. Use `asBrowserStream` to obtain the response body stream."); + } + } + }; +} +var init_getClient = __esm({ + "node_modules/@typespec/ts-http-runtime/dist/esm/client/getClient.js"() { + init_clientHelpers(); + init_sendRequest(); + init_urlHelpers(); + init_checkEnvironment(); + } +}); + +// node_modules/@typespec/ts-http-runtime/dist/esm/client/operationOptionHelpers.js +function operationOptionsToRequestParameters(options) { + return { + allowInsecureConnection: options.requestOptions?.allowInsecureConnection, + timeout: options.requestOptions?.timeout, + skipUrlEncoding: options.requestOptions?.skipUrlEncoding, + abortSignal: options.abortSignal, + onUploadProgress: options.requestOptions?.onUploadProgress, + onDownloadProgress: options.requestOptions?.onDownloadProgress, + headers: { ...options.requestOptions?.headers }, + onResponse: options.onResponse + }; +} +var init_operationOptionHelpers = __esm({ + "node_modules/@typespec/ts-http-runtime/dist/esm/client/operationOptionHelpers.js"() { + } +}); + +// node_modules/@typespec/ts-http-runtime/dist/esm/client/restError.js +function createRestError(messageOrResponse, response) { + const resp = typeof messageOrResponse === "string" ? response : messageOrResponse; + const internalError = resp.body?.error ?? resp.body; + const message = typeof messageOrResponse === "string" ? messageOrResponse : internalError?.message ?? `Unexpected status code: ${resp.status}`; + return new RestError(message, { + statusCode: statusCodeToNumber(resp.status), + code: internalError?.code, + request: resp.request, + response: toPipelineResponse(resp) + }); +} +function toPipelineResponse(response) { + return { + headers: createHttpHeaders(response.headers), + request: response.request, + status: statusCodeToNumber(response.status) ?? -1 + }; +} +function statusCodeToNumber(statusCode) { + const status = Number.parseInt(statusCode); + return Number.isNaN(status) ? void 0 : status; +} +var init_restError2 = __esm({ + "node_modules/@typespec/ts-http-runtime/dist/esm/client/restError.js"() { + init_restError(); + init_httpHeaders(); + } +}); + +// node_modules/@typespec/ts-http-runtime/dist/esm/index.js +var init_esm5 = __esm({ + "node_modules/@typespec/ts-http-runtime/dist/esm/index.js"() { + init_AbortError2(); + init_logger(); + init_httpHeaders(); + init_pipelineRequest(); + init_pipeline(); + init_restError(); + init_bytesEncoding(); + init_defaultHttpClient(); + init_getClient(); + init_operationOptionHelpers(); + init_restError2(); + } +}); + +// node_modules/@azure/core-rest-pipeline/dist/esm/pipeline.js +function createEmptyPipeline2() { + return createEmptyPipeline(); +} +var init_pipeline2 = __esm({ + "node_modules/@azure/core-rest-pipeline/dist/esm/pipeline.js"() { + init_esm5(); + } +}); + +// node_modules/@azure/core-rest-pipeline/dist/esm/log.js +var logger6; +var init_log3 = __esm({ + "node_modules/@azure/core-rest-pipeline/dist/esm/log.js"() { + init_esm(); + logger6 = createClientLogger2("core-rest-pipeline"); + } +}); + +// node_modules/@typespec/ts-http-runtime/dist/esm/policies/exponentialRetryPolicy.js +var init_exponentialRetryPolicy = __esm({ + "node_modules/@typespec/ts-http-runtime/dist/esm/policies/exponentialRetryPolicy.js"() { + init_exponentialRetryStrategy(); + init_retryPolicy(); + init_constants2(); + } +}); + +// node_modules/@typespec/ts-http-runtime/dist/esm/policies/systemErrorRetryPolicy.js +var init_systemErrorRetryPolicy = __esm({ + "node_modules/@typespec/ts-http-runtime/dist/esm/policies/systemErrorRetryPolicy.js"() { + init_exponentialRetryStrategy(); + init_retryPolicy(); + init_constants2(); + } +}); + +// node_modules/@typespec/ts-http-runtime/dist/esm/policies/throttlingRetryPolicy.js +var init_throttlingRetryPolicy = __esm({ + "node_modules/@typespec/ts-http-runtime/dist/esm/policies/throttlingRetryPolicy.js"() { + init_throttlingRetryStrategy(); + init_retryPolicy(); + init_constants2(); + } +}); + +// node_modules/@typespec/ts-http-runtime/dist/esm/policies/internal.js +var init_internal3 = __esm({ + "node_modules/@typespec/ts-http-runtime/dist/esm/policies/internal.js"() { + init_agentPolicy(); + init_decompressResponsePolicy(); + init_defaultRetryPolicy(); + init_exponentialRetryPolicy(); + init_retryPolicy(); + init_systemErrorRetryPolicy(); + init_throttlingRetryPolicy(); + init_formDataPolicy(); + init_logPolicy(); + init_multipartPolicy(); + init_proxyPolicy(); + init_redirectPolicy(); + init_tlsPolicy(); + init_userAgentPolicy(); + } +}); + +// node_modules/@azure/core-rest-pipeline/dist/esm/policies/logPolicy.js +function logPolicy2(options = {}) { + return logPolicy({ + logger: logger6.info, + ...options + }); +} +var init_logPolicy2 = __esm({ + "node_modules/@azure/core-rest-pipeline/dist/esm/policies/logPolicy.js"() { + init_log3(); + init_internal3(); + } +}); + +// node_modules/@azure/core-rest-pipeline/dist/esm/policies/redirectPolicy.js +function redirectPolicy2(options = {}) { + return redirectPolicy(options); +} +var init_redirectPolicy2 = __esm({ + "node_modules/@azure/core-rest-pipeline/dist/esm/policies/redirectPolicy.js"() { + init_internal3(); + } +}); + +// node_modules/@azure/core-rest-pipeline/dist/esm/util/userAgentPlatform.js +function getHeaderName2() { + return "User-Agent"; +} +async function setPlatformSpecificData2(map) { + if (import_node_process3.default && import_node_process3.default.versions) { + const osInfo = `${import_node_os3.default.type()} ${import_node_os3.default.release()}; ${import_node_os3.default.arch()}`; + const versions = import_node_process3.default.versions; + if (versions.bun) { + map.set("Bun", `${versions.bun} (${osInfo})`); + } else if (versions.deno) { + map.set("Deno", `${versions.deno} (${osInfo})`); + } else if (versions.node) { + map.set("Node", `${versions.node} (${osInfo})`); + } + } +} +var import_node_os3, import_node_process3; +var init_userAgentPlatform2 = __esm({ + "node_modules/@azure/core-rest-pipeline/dist/esm/util/userAgentPlatform.js"() { + import_node_os3 = __toESM(require("node:os"), 1); + import_node_process3 = __toESM(require("node:process"), 1); + } +}); + +// node_modules/@azure/core-rest-pipeline/dist/esm/constants.js +var SDK_VERSION3, DEFAULT_RETRY_POLICY_COUNT2; +var init_constants3 = __esm({ + "node_modules/@azure/core-rest-pipeline/dist/esm/constants.js"() { + SDK_VERSION3 = "1.22.3"; + DEFAULT_RETRY_POLICY_COUNT2 = 3; + } +}); + +// node_modules/@azure/core-rest-pipeline/dist/esm/util/userAgent.js +function getUserAgentString2(telemetryInfo) { + const parts = []; + for (const [key, value] of telemetryInfo) { + const token = value ? `${key}/${value}` : key; + parts.push(token); + } + return parts.join(" "); +} +function getUserAgentHeaderName2() { + return getHeaderName2(); +} +async function getUserAgentValue2(prefix) { + const runtimeInfo = /* @__PURE__ */ new Map(); + runtimeInfo.set("core-rest-pipeline", SDK_VERSION3); + await setPlatformSpecificData2(runtimeInfo); + const defaultAgent = getUserAgentString2(runtimeInfo); + const userAgentValue = prefix ? `${prefix} ${defaultAgent}` : defaultAgent; + return userAgentValue; +} +var init_userAgent2 = __esm({ + "node_modules/@azure/core-rest-pipeline/dist/esm/util/userAgent.js"() { + init_userAgentPlatform2(); + init_constants3(); + } +}); + +// node_modules/@azure/core-rest-pipeline/dist/esm/policies/userAgentPolicy.js +function userAgentPolicy2(options = {}) { + const userAgentValue = getUserAgentValue2(options.userAgentPrefix); + return { + name: userAgentPolicyName2, + async sendRequest(request, next) { + if (!request.headers.has(UserAgentHeaderName2)) { + request.headers.set(UserAgentHeaderName2, await userAgentValue); + } + return next(request); + } + }; +} +var UserAgentHeaderName2, userAgentPolicyName2; +var init_userAgentPolicy2 = __esm({ + "node_modules/@azure/core-rest-pipeline/dist/esm/policies/userAgentPolicy.js"() { + init_userAgent2(); + UserAgentHeaderName2 = getUserAgentHeaderName2(); + userAgentPolicyName2 = "userAgentPolicy"; + } +}); + +// node_modules/@azure/core-rest-pipeline/dist/esm/util/file.js +function hasRawContent(x) { + return typeof x[rawContent] === "function"; +} +function getRawContent(blob) { + if (hasRawContent(blob)) { + return blob[rawContent](); + } else { + return blob; + } +} +var rawContent; +var init_file = __esm({ + "node_modules/@azure/core-rest-pipeline/dist/esm/util/file.js"() { + init_esm4(); + rawContent = /* @__PURE__ */ Symbol("rawContent"); + } +}); + +// node_modules/@azure/core-rest-pipeline/dist/esm/policies/multipartPolicy.js +function multipartPolicy2() { + const tspPolicy = multipartPolicy(); + return { + name: multipartPolicyName2, + sendRequest: async (request, next) => { + if (request.multipartBody) { + for (const part of request.multipartBody.parts) { + if (hasRawContent(part.body)) { + part.body = getRawContent(part.body); + } + } + } + return tspPolicy.sendRequest(request, next); + } + }; +} +var multipartPolicyName2; +var init_multipartPolicy2 = __esm({ + "node_modules/@azure/core-rest-pipeline/dist/esm/policies/multipartPolicy.js"() { + init_internal3(); + init_file(); + multipartPolicyName2 = multipartPolicyName; + } +}); + +// node_modules/@azure/core-rest-pipeline/dist/esm/policies/decompressResponsePolicy.js +function decompressResponsePolicy2() { + return decompressResponsePolicy(); +} +var init_decompressResponsePolicy2 = __esm({ + "node_modules/@azure/core-rest-pipeline/dist/esm/policies/decompressResponsePolicy.js"() { + init_internal3(); + } +}); + +// node_modules/@azure/core-rest-pipeline/dist/esm/policies/defaultRetryPolicy.js +function defaultRetryPolicy2(options = {}) { + return defaultRetryPolicy(options); +} +var init_defaultRetryPolicy2 = __esm({ + "node_modules/@azure/core-rest-pipeline/dist/esm/policies/defaultRetryPolicy.js"() { + init_internal3(); + } +}); + +// node_modules/@azure/core-rest-pipeline/dist/esm/policies/formDataPolicy.js +function formDataPolicy2() { + return formDataPolicy(); +} +var init_formDataPolicy2 = __esm({ + "node_modules/@azure/core-rest-pipeline/dist/esm/policies/formDataPolicy.js"() { + init_internal3(); + } +}); + +// node_modules/@azure/core-rest-pipeline/dist/esm/policies/proxyPolicy.js +function proxyPolicy2(proxySettings, options) { + return proxyPolicy(proxySettings, options); +} +var init_proxyPolicy2 = __esm({ + "node_modules/@azure/core-rest-pipeline/dist/esm/policies/proxyPolicy.js"() { + init_internal3(); + } +}); + +// node_modules/@azure/core-rest-pipeline/dist/esm/policies/setClientRequestIdPolicy.js +function setClientRequestIdPolicy(requestIdHeaderName = "x-ms-client-request-id") { + return { + name: setClientRequestIdPolicyName, + async sendRequest(request, next) { + if (!request.headers.has(requestIdHeaderName)) { + request.headers.set(requestIdHeaderName, request.requestId); + } + return next(request); + } + }; +} +var setClientRequestIdPolicyName; +var init_setClientRequestIdPolicy = __esm({ + "node_modules/@azure/core-rest-pipeline/dist/esm/policies/setClientRequestIdPolicy.js"() { + setClientRequestIdPolicyName = "setClientRequestIdPolicy"; + } +}); + +// node_modules/@azure/core-rest-pipeline/dist/esm/policies/agentPolicy.js +function agentPolicy2(agent) { + return agentPolicy(agent); +} +var init_agentPolicy2 = __esm({ + "node_modules/@azure/core-rest-pipeline/dist/esm/policies/agentPolicy.js"() { + init_internal3(); + } +}); + +// node_modules/@azure/core-rest-pipeline/dist/esm/policies/tlsPolicy.js +function tlsPolicy2(tlsSettings) { + return tlsPolicy(tlsSettings); +} +var init_tlsPolicy2 = __esm({ + "node_modules/@azure/core-rest-pipeline/dist/esm/policies/tlsPolicy.js"() { + init_internal3(); + } +}); + +// node_modules/@azure/core-rest-pipeline/dist/esm/restError.js +function isRestError2(e) { + return isRestError(e); +} +var RestError2; +var init_restError3 = __esm({ + "node_modules/@azure/core-rest-pipeline/dist/esm/restError.js"() { + init_esm5(); + RestError2 = RestError; + } +}); + +// node_modules/@azure/core-rest-pipeline/dist/esm/policies/tracingPolicy.js +function tracingPolicy(options = {}) { + const userAgentPromise = getUserAgentValue2(options.userAgentPrefix); + const sanitizer = new Sanitizer({ + additionalAllowedQueryParameters: options.additionalAllowedQueryParameters + }); + const tracingClient3 = tryCreateTracingClient(); + return { + name: tracingPolicyName, + async sendRequest(request, next) { + if (!tracingClient3) { + return next(request); + } + const userAgent = await userAgentPromise; + const spanAttributes = { + "http.url": sanitizer.sanitizeUrl(request.url), + "http.method": request.method, + "http.user_agent": userAgent, + requestId: request.requestId + }; + if (userAgent) { + spanAttributes["http.user_agent"] = userAgent; + } + const { span, tracingContext } = tryCreateSpan(tracingClient3, request, spanAttributes) ?? {}; + if (!span || !tracingContext) { + return next(request); + } + try { + const response = await tracingClient3.withContext(tracingContext, next, request); + tryProcessResponse(span, response); + return response; + } catch (err) { + tryProcessError(span, err); + throw err; + } + } + }; +} +function tryCreateTracingClient() { + try { + return createTracingClient({ + namespace: "", + packageName: "@azure/core-rest-pipeline", + packageVersion: SDK_VERSION3 + }); + } catch (e) { + logger6.warning(`Error when creating the TracingClient: ${getErrorMessage(e)}`); + return void 0; + } +} +function tryCreateSpan(tracingClient3, request, spanAttributes) { + try { + const { span, updatedOptions } = tracingClient3.startSpan(`HTTP ${request.method}`, { tracingOptions: request.tracingOptions }, { + spanKind: "client", + spanAttributes + }); + if (!span.isRecording()) { + span.end(); + return void 0; + } + const headers = tracingClient3.createRequestHeaders(updatedOptions.tracingOptions.tracingContext); + for (const [key, value] of Object.entries(headers)) { + request.headers.set(key, value); + } + return { span, tracingContext: updatedOptions.tracingOptions.tracingContext }; + } catch (e) { + logger6.warning(`Skipping creating a tracing span due to an error: ${getErrorMessage(e)}`); + return void 0; + } +} +function tryProcessError(span, error2) { + try { + span.setStatus({ + status: "error", + error: isError2(error2) ? error2 : void 0 + }); + if (isRestError2(error2) && error2.statusCode) { + span.setAttribute("http.status_code", error2.statusCode); + } + span.end(); + } catch (e) { + logger6.warning(`Skipping tracing span processing due to an error: ${getErrorMessage(e)}`); + } +} +function tryProcessResponse(span, response) { + try { + span.setAttribute("http.status_code", response.status); + const serviceRequestId = response.headers.get("x-ms-request-id"); + if (serviceRequestId) { + span.setAttribute("serviceRequestId", serviceRequestId); + } + if (response.status >= 400) { + span.setStatus({ + status: "error" + }); + } + span.end(); + } catch (e) { + logger6.warning(`Skipping tracing span processing due to an error: ${getErrorMessage(e)}`); + } +} +var tracingPolicyName; +var init_tracingPolicy = __esm({ + "node_modules/@azure/core-rest-pipeline/dist/esm/policies/tracingPolicy.js"() { + init_esm2(); + init_constants3(); + init_userAgent2(); + init_log3(); + init_esm4(); + init_restError3(); + init_internal2(); + tracingPolicyName = "tracingPolicy"; + } +}); + +// node_modules/@azure/core-rest-pipeline/dist/esm/util/wrapAbortSignal.js +function wrapAbortSignalLike(abortSignalLike) { + if (abortSignalLike instanceof AbortSignal) { + return { abortSignal: abortSignalLike }; + } + if (abortSignalLike.aborted) { + return { abortSignal: AbortSignal.abort(abortSignalLike.reason) }; + } + const controller = new AbortController(); + let needsCleanup = true; + function cleanup() { + if (needsCleanup) { + abortSignalLike.removeEventListener("abort", listener); + needsCleanup = false; + } + } + function listener() { + controller.abort(abortSignalLike.reason); + cleanup(); + } + abortSignalLike.addEventListener("abort", listener); + return { abortSignal: controller.signal, cleanup }; +} +var init_wrapAbortSignal = __esm({ + "node_modules/@azure/core-rest-pipeline/dist/esm/util/wrapAbortSignal.js"() { + } +}); + +// node_modules/@azure/core-rest-pipeline/dist/esm/policies/wrapAbortSignalLikePolicy.js +function wrapAbortSignalLikePolicy() { + return { + name: wrapAbortSignalLikePolicyName, + sendRequest: async (request, next) => { + if (!request.abortSignal) { + return next(request); + } + const { abortSignal, cleanup } = wrapAbortSignalLike(request.abortSignal); + request.abortSignal = abortSignal; + try { + return await next(request); + } finally { + cleanup?.(); + } + } + }; +} +var wrapAbortSignalLikePolicyName; +var init_wrapAbortSignalLikePolicy = __esm({ + "node_modules/@azure/core-rest-pipeline/dist/esm/policies/wrapAbortSignalLikePolicy.js"() { + init_wrapAbortSignal(); + wrapAbortSignalLikePolicyName = "wrapAbortSignalLikePolicy"; + } +}); + +// node_modules/@azure/core-rest-pipeline/dist/esm/createPipelineFromOptions.js +function createPipelineFromOptions2(options) { + const pipeline = createEmptyPipeline2(); + if (isNodeLike2) { + if (options.agent) { + pipeline.addPolicy(agentPolicy2(options.agent)); + } + if (options.tlsOptions) { + pipeline.addPolicy(tlsPolicy2(options.tlsOptions)); + } + pipeline.addPolicy(proxyPolicy2(options.proxyOptions)); + pipeline.addPolicy(decompressResponsePolicy2()); + } + pipeline.addPolicy(wrapAbortSignalLikePolicy()); + pipeline.addPolicy(formDataPolicy2(), { beforePolicies: [multipartPolicyName2] }); + pipeline.addPolicy(userAgentPolicy2(options.userAgentOptions)); + pipeline.addPolicy(setClientRequestIdPolicy(options.telemetryOptions?.clientRequestIdHeaderName)); + pipeline.addPolicy(multipartPolicy2(), { afterPhase: "Deserialize" }); + pipeline.addPolicy(defaultRetryPolicy2(options.retryOptions), { phase: "Retry" }); + pipeline.addPolicy(tracingPolicy({ ...options.userAgentOptions, ...options.loggingOptions }), { + afterPhase: "Retry" + }); + if (isNodeLike2) { + pipeline.addPolicy(redirectPolicy2(options.redirectOptions), { afterPhase: "Retry" }); + } + pipeline.addPolicy(logPolicy2(options.loggingOptions), { afterPhase: "Sign" }); + return pipeline; +} +var init_createPipelineFromOptions2 = __esm({ + "node_modules/@azure/core-rest-pipeline/dist/esm/createPipelineFromOptions.js"() { + init_logPolicy2(); + init_pipeline2(); + init_redirectPolicy2(); + init_userAgentPolicy2(); + init_multipartPolicy2(); + init_decompressResponsePolicy2(); + init_defaultRetryPolicy2(); + init_formDataPolicy2(); + init_esm4(); + init_proxyPolicy2(); + init_setClientRequestIdPolicy(); + init_agentPolicy2(); + init_tlsPolicy2(); + init_tracingPolicy(); + init_wrapAbortSignalLikePolicy(); + } +}); + +// node_modules/@azure/core-rest-pipeline/dist/esm/defaultHttpClient.js +function createDefaultHttpClient2() { + const client = createDefaultHttpClient(); + return { + async sendRequest(request) { + const { abortSignal, cleanup } = request.abortSignal ? wrapAbortSignalLike(request.abortSignal) : {}; + try { + request.abortSignal = abortSignal; + return await client.sendRequest(request); + } finally { + cleanup?.(); + } + } + }; +} +var init_defaultHttpClient2 = __esm({ + "node_modules/@azure/core-rest-pipeline/dist/esm/defaultHttpClient.js"() { + init_esm5(); + init_wrapAbortSignal(); + } +}); + +// node_modules/@azure/core-rest-pipeline/dist/esm/httpHeaders.js +function createHttpHeaders2(rawHeaders) { + return createHttpHeaders(rawHeaders); +} +var init_httpHeaders2 = __esm({ + "node_modules/@azure/core-rest-pipeline/dist/esm/httpHeaders.js"() { + init_esm5(); + } +}); + +// node_modules/@azure/core-rest-pipeline/dist/esm/pipelineRequest.js +function createPipelineRequest2(options) { + return createPipelineRequest(options); +} +var init_pipelineRequest2 = __esm({ + "node_modules/@azure/core-rest-pipeline/dist/esm/pipelineRequest.js"() { + init_esm5(); + } +}); + +// node_modules/@azure/core-rest-pipeline/dist/esm/policies/exponentialRetryPolicy.js +var init_exponentialRetryPolicy2 = __esm({ + "node_modules/@azure/core-rest-pipeline/dist/esm/policies/exponentialRetryPolicy.js"() { + init_internal3(); + } +}); + +// node_modules/@azure/core-rest-pipeline/dist/esm/policies/systemErrorRetryPolicy.js +var init_systemErrorRetryPolicy2 = __esm({ + "node_modules/@azure/core-rest-pipeline/dist/esm/policies/systemErrorRetryPolicy.js"() { + init_internal3(); + } +}); + +// node_modules/@azure/core-rest-pipeline/dist/esm/policies/throttlingRetryPolicy.js +var init_throttlingRetryPolicy2 = __esm({ + "node_modules/@azure/core-rest-pipeline/dist/esm/policies/throttlingRetryPolicy.js"() { + init_internal3(); + } +}); + +// node_modules/@azure/core-rest-pipeline/dist/esm/policies/retryPolicy.js +function retryPolicy2(strategies, options = { maxRetries: DEFAULT_RETRY_POLICY_COUNT2 }) { + return retryPolicy(strategies, { + logger: retryPolicyLogger2, + ...options + }); +} +var retryPolicyLogger2; +var init_retryPolicy2 = __esm({ + "node_modules/@azure/core-rest-pipeline/dist/esm/policies/retryPolicy.js"() { + init_esm(); + init_constants3(); + init_internal3(); + retryPolicyLogger2 = createClientLogger2("core-rest-pipeline retryPolicy"); + } +}); + +// node_modules/@azure/core-rest-pipeline/dist/esm/util/tokenCycler.js +async function beginRefresh(getAccessToken, retryIntervalInMs, refreshTimeout) { + async function tryGetAccessToken() { + if (Date.now() < refreshTimeout) { + try { + return await getAccessToken(); + } catch { + return null; + } + } else { + const finalToken = await getAccessToken(); + if (finalToken === null) { + throw new Error("Failed to refresh access token."); + } + return finalToken; + } + } + let token = await tryGetAccessToken(); + while (token === null) { + await delay3(retryIntervalInMs); + token = await tryGetAccessToken(); + } + return token; +} +function createTokenCycler(credential, tokenCyclerOptions) { + let refreshWorker = null; + let token = null; + let tenantId; + const options = { + ...DEFAULT_CYCLER_OPTIONS, + ...tokenCyclerOptions + }; + const cycler = { + /** + * Produces true if a refresh job is currently in progress. + */ + get isRefreshing() { + return refreshWorker !== null; + }, + /** + * Produces true if the cycler SHOULD refresh (we are within the refresh + * window and not already refreshing) + */ + get shouldRefresh() { + if (cycler.isRefreshing) { + return false; + } + if (token?.refreshAfterTimestamp && token.refreshAfterTimestamp < Date.now()) { + return true; + } + return (token?.expiresOnTimestamp ?? 0) - options.refreshWindowInMs < Date.now(); + }, + /** + * Produces true if the cycler MUST refresh (null or nearly-expired + * token). + */ + get mustRefresh() { + return token === null || token.expiresOnTimestamp - options.forcedRefreshWindowInMs < Date.now(); + } + }; + function refresh(scopes, getTokenOptions) { + if (!cycler.isRefreshing) { + const tryGetAccessToken = () => credential.getToken(scopes, getTokenOptions); + refreshWorker = beginRefresh( + tryGetAccessToken, + options.retryIntervalInMs, + // If we don't have a token, then we should timeout immediately + token?.expiresOnTimestamp ?? Date.now() + ).then((_token) => { + refreshWorker = null; + token = _token; + tenantId = getTokenOptions.tenantId; + return token; + }).catch((reason) => { + refreshWorker = null; + token = null; + tenantId = void 0; + throw reason; + }); + } + return refreshWorker; + } + return async (scopes, tokenOptions) => { + const hasClaimChallenge = Boolean(tokenOptions.claims); + const tenantIdChanged = tenantId !== tokenOptions.tenantId; + if (hasClaimChallenge) { + token = null; + } + const mustRefresh = tenantIdChanged || hasClaimChallenge || cycler.mustRefresh; + if (mustRefresh) { + return refresh(scopes, tokenOptions); + } + if (cycler.shouldRefresh) { + refresh(scopes, tokenOptions); + } + return token; + }; +} +var DEFAULT_CYCLER_OPTIONS; +var init_tokenCycler = __esm({ + "node_modules/@azure/core-rest-pipeline/dist/esm/util/tokenCycler.js"() { + init_esm4(); + DEFAULT_CYCLER_OPTIONS = { + forcedRefreshWindowInMs: 1e3, + // Force waiting for a refresh 1s before the token expires + retryIntervalInMs: 3e3, + // Allow refresh attempts every 3s + refreshWindowInMs: 1e3 * 60 * 2 + // Start refreshing 2m before expiry + }; + } +}); + +// node_modules/@azure/core-rest-pipeline/dist/esm/policies/bearerTokenAuthenticationPolicy.js +async function trySendRequest(request, next) { + try { + return [await next(request), void 0]; + } catch (e) { + if (isRestError2(e) && e.response) { + return [e.response, e]; + } else { + throw e; + } + } +} +async function defaultAuthorizeRequest(options) { + const { scopes, getAccessToken, request } = options; + const getTokenOptions = { + abortSignal: request.abortSignal, + tracingOptions: request.tracingOptions, + enableCae: true + }; + const accessToken = await getAccessToken(scopes, getTokenOptions); + if (accessToken) { + options.request.headers.set("Authorization", `Bearer ${accessToken.token}`); + } +} +function isChallengeResponse(response) { + return response.status === 401 && response.headers.has("WWW-Authenticate"); +} +async function authorizeRequestOnCaeChallenge(onChallengeOptions, caeClaims) { + const { scopes } = onChallengeOptions; + const accessToken = await onChallengeOptions.getAccessToken(scopes, { + enableCae: true, + claims: caeClaims + }); + if (!accessToken) { + return false; + } + onChallengeOptions.request.headers.set("Authorization", `${accessToken.tokenType ?? "Bearer"} ${accessToken.token}`); + return true; +} +function bearerTokenAuthenticationPolicy(options) { + const { credential, scopes, challengeCallbacks } = options; + const logger31 = options.logger || logger6; + const callbacks = { + authorizeRequest: challengeCallbacks?.authorizeRequest?.bind(challengeCallbacks) ?? defaultAuthorizeRequest, + authorizeRequestOnChallenge: challengeCallbacks?.authorizeRequestOnChallenge?.bind(challengeCallbacks) + }; + const getAccessToken = credential ? createTokenCycler( + credential + /* , options */ + ) : () => Promise.resolve(null); + return { + name: bearerTokenAuthenticationPolicyName, + /** + * If there's no challenge parameter: + * - It will try to retrieve the token using the cache, or the credential's getToken. + * - Then it will try the next policy with or without the retrieved token. + * + * It uses the challenge parameters to: + * - Skip a first attempt to get the token from the credential if there's no cached token, + * since it expects the token to be retrievable only after the challenge. + * - Prepare the outgoing request if the `prepareRequest` method has been provided. + * - Send an initial request to receive the challenge if it fails. + * - Process a challenge if the response contains it. + * - Retrieve a token with the challenge information, then re-send the request. + */ + async sendRequest(request, next) { + if (!request.url.toLowerCase().startsWith("https://")) { + throw new Error("Bearer token authentication is not permitted for non-TLS protected (non-https) URLs."); + } + await callbacks.authorizeRequest({ + scopes: Array.isArray(scopes) ? scopes : [scopes], + request, + getAccessToken, + logger: logger31 + }); + let response; + let error2; + let shouldSendRequest; + [response, error2] = await trySendRequest(request, next); + if (isChallengeResponse(response)) { + let claims = getCaeChallengeClaims(response.headers.get("WWW-Authenticate")); + if (claims) { + let parsedClaim; + try { + parsedClaim = atob(claims); + } catch (e) { + logger31.warning(`The WWW-Authenticate header contains "claims" that cannot be parsed. Unable to perform the Continuous Access Evaluation authentication flow. Unparsable claims: ${claims}`); + return response; + } + shouldSendRequest = await authorizeRequestOnCaeChallenge({ + scopes: Array.isArray(scopes) ? scopes : [scopes], + response, + request, + getAccessToken, + logger: logger31 + }, parsedClaim); + if (shouldSendRequest) { + [response, error2] = await trySendRequest(request, next); + } + } else if (callbacks.authorizeRequestOnChallenge) { + shouldSendRequest = await callbacks.authorizeRequestOnChallenge({ + scopes: Array.isArray(scopes) ? scopes : [scopes], + request, + response, + getAccessToken, + logger: logger31 + }); + if (shouldSendRequest) { + [response, error2] = await trySendRequest(request, next); + } + if (isChallengeResponse(response)) { + claims = getCaeChallengeClaims(response.headers.get("WWW-Authenticate")); + if (claims) { + let parsedClaim; + try { + parsedClaim = atob(claims); + } catch (e) { + logger31.warning(`The WWW-Authenticate header contains "claims" that cannot be parsed. Unable to perform the Continuous Access Evaluation authentication flow. Unparsable claims: ${claims}`); + return response; + } + shouldSendRequest = await authorizeRequestOnCaeChallenge({ + scopes: Array.isArray(scopes) ? scopes : [scopes], + response, + request, + getAccessToken, + logger: logger31 + }, parsedClaim); + if (shouldSendRequest) { + [response, error2] = await trySendRequest(request, next); + } + } + } + } + } + if (error2) { + throw error2; + } else { + return response; + } + } + }; +} +function parseChallenges(challenges) { + const challengeRegex = /(\w+)\s+((?:\w+=(?:"[^"]*"|[^,]*),?\s*)+)/g; + const paramRegex = /(\w+)="([^"]*)"/g; + const parsedChallenges = []; + let match; + while ((match = challengeRegex.exec(challenges)) !== null) { + const scheme = match[1]; + const paramsString = match[2]; + const params = {}; + let paramMatch; + while ((paramMatch = paramRegex.exec(paramsString)) !== null) { + params[paramMatch[1]] = paramMatch[2]; + } + parsedChallenges.push({ scheme, params }); + } + return parsedChallenges; +} +function getCaeChallengeClaims(challenges) { + if (!challenges) { + return; + } + const parsedChallenges = parseChallenges(challenges); + return parsedChallenges.find((x) => x.scheme === "Bearer" && x.params.claims && x.params.error === "insufficient_claims")?.params.claims; +} +var bearerTokenAuthenticationPolicyName; +var init_bearerTokenAuthenticationPolicy = __esm({ + "node_modules/@azure/core-rest-pipeline/dist/esm/policies/bearerTokenAuthenticationPolicy.js"() { + init_tokenCycler(); + init_log3(); + init_restError3(); + bearerTokenAuthenticationPolicyName = "bearerTokenAuthenticationPolicy"; + } +}); + +// node_modules/@azure/core-rest-pipeline/dist/esm/policies/ndJsonPolicy.js +var init_ndJsonPolicy = __esm({ + "node_modules/@azure/core-rest-pipeline/dist/esm/policies/ndJsonPolicy.js"() { + } +}); + +// node_modules/@azure/core-rest-pipeline/dist/esm/policies/auxiliaryAuthenticationHeaderPolicy.js +var init_auxiliaryAuthenticationHeaderPolicy = __esm({ + "node_modules/@azure/core-rest-pipeline/dist/esm/policies/auxiliaryAuthenticationHeaderPolicy.js"() { + init_tokenCycler(); + init_log3(); + } +}); + +// node_modules/@azure/core-rest-pipeline/dist/esm/index.js +var init_esm6 = __esm({ + "node_modules/@azure/core-rest-pipeline/dist/esm/index.js"() { + init_pipeline2(); + init_createPipelineFromOptions2(); + init_defaultHttpClient2(); + init_httpHeaders2(); + init_pipelineRequest2(); + init_restError3(); + init_decompressResponsePolicy2(); + init_exponentialRetryPolicy2(); + init_setClientRequestIdPolicy(); + init_logPolicy2(); + init_multipartPolicy2(); + init_proxyPolicy2(); + init_redirectPolicy2(); + init_systemErrorRetryPolicy2(); + init_throttlingRetryPolicy2(); + init_retryPolicy2(); + init_tracingPolicy(); + init_defaultRetryPolicy2(); + init_userAgentPolicy2(); + init_tlsPolicy2(); + init_formDataPolicy2(); + init_bearerTokenAuthenticationPolicy(); + init_ndJsonPolicy(); + init_auxiliaryAuthenticationHeaderPolicy(); + init_agentPolicy2(); + init_file(); + } +}); + +// node_modules/@azure/core-client/dist/commonjs/state.js +var require_state3 = __commonJS({ + "node_modules/@azure/core-client/dist/commonjs/state.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { value: true }); + exports2.state = void 0; + exports2.state = { + operationRequestMap: /* @__PURE__ */ new WeakMap() + }; + } +}); + +// node_modules/@azure/core-client/dist/esm/state.js +var import_state3, state2; +var init_state2 = __esm({ + "node_modules/@azure/core-client/dist/esm/state.js"() { + import_state3 = __toESM(require_state3(), 1); + state2 = import_state3.state; + } +}); + +// node_modules/@azure/core-client/dist/esm/operationHelpers.js +function getOperationArgumentValueFromParameter(operationArguments, parameter, fallbackObject) { + let parameterPath = parameter.parameterPath; + const parameterMapper = parameter.mapper; + let value; + if (typeof parameterPath === "string") { + parameterPath = [parameterPath]; + } + if (Array.isArray(parameterPath)) { + if (parameterPath.length > 0) { + if (parameterMapper.isConstant) { + value = parameterMapper.defaultValue; + } else { + let propertySearchResult = getPropertyFromParameterPath(operationArguments, parameterPath); + if (!propertySearchResult.propertyFound && fallbackObject) { + propertySearchResult = getPropertyFromParameterPath(fallbackObject, parameterPath); + } + let useDefaultValue = false; + if (!propertySearchResult.propertyFound) { + useDefaultValue = parameterMapper.required || parameterPath[0] === "options" && parameterPath.length === 2; + } + value = useDefaultValue ? parameterMapper.defaultValue : propertySearchResult.propertyValue; + } + } + } else { + if (parameterMapper.required) { + value = {}; + } + for (const propertyName in parameterPath) { + const propertyMapper = parameterMapper.type.modelProperties[propertyName]; + const propertyPath = parameterPath[propertyName]; + const propertyValue = getOperationArgumentValueFromParameter(operationArguments, { + parameterPath: propertyPath, + mapper: propertyMapper + }, fallbackObject); + if (propertyValue !== void 0) { + if (!value) { + value = {}; + } + value[propertyName] = propertyValue; + } + } + } + return value; +} +function getPropertyFromParameterPath(parent, parameterPath) { + const result = { propertyFound: false }; + let i = 0; + for (; i < parameterPath.length; ++i) { + const parameterPathPart = parameterPath[i]; + if (parent && parameterPathPart in parent) { + parent = parent[parameterPathPart]; + } else { + break; + } + } + if (i === parameterPath.length) { + result.propertyValue = parent; + result.propertyFound = true; + } + return result; +} +function hasOriginalRequest(request) { + return originalRequestSymbol in request; +} +function getOperationRequestInfo(request) { + if (hasOriginalRequest(request)) { + return getOperationRequestInfo(request[originalRequestSymbol]); + } + let info = state2.operationRequestMap.get(request); + if (!info) { + info = {}; + state2.operationRequestMap.set(request, info); + } + return info; +} +var originalRequestSymbol; +var init_operationHelpers = __esm({ + "node_modules/@azure/core-client/dist/esm/operationHelpers.js"() { + init_state2(); + originalRequestSymbol = /* @__PURE__ */ Symbol.for("@azure/core-client original request"); + } +}); + +// node_modules/@azure/core-client/dist/esm/deserializationPolicy.js +function deserializationPolicy(options = {}) { + const jsonContentTypes = options.expectedContentTypes?.json ?? defaultJsonContentTypes; + const xmlContentTypes = options.expectedContentTypes?.xml ?? defaultXmlContentTypes; + const parseXML = options.parseXML; + const serializerOptions = options.serializerOptions; + const updatedOptions = { + xml: { + rootName: serializerOptions?.xml.rootName ?? "", + includeRoot: serializerOptions?.xml.includeRoot ?? false, + xmlCharKey: serializerOptions?.xml.xmlCharKey ?? XML_CHARKEY + } + }; + return { + name: deserializationPolicyName, + async sendRequest(request, next) { + const response = await next(request); + return deserializeResponseBody(jsonContentTypes, xmlContentTypes, response, updatedOptions, parseXML); + } + }; +} +function getOperationResponseMap(parsedResponse) { + let result; + const request = parsedResponse.request; + const operationInfo = getOperationRequestInfo(request); + const operationSpec = operationInfo?.operationSpec; + if (operationSpec) { + if (!operationInfo?.operationResponseGetter) { + result = operationSpec.responses[parsedResponse.status]; + } else { + result = operationInfo?.operationResponseGetter(operationSpec, parsedResponse); + } + } + return result; +} +function shouldDeserializeResponse(parsedResponse) { + const request = parsedResponse.request; + const operationInfo = getOperationRequestInfo(request); + const shouldDeserialize = operationInfo?.shouldDeserialize; + let result; + if (shouldDeserialize === void 0) { + result = true; + } else if (typeof shouldDeserialize === "boolean") { + result = shouldDeserialize; + } else { + result = shouldDeserialize(parsedResponse); + } + return result; +} +async function deserializeResponseBody(jsonContentTypes, xmlContentTypes, response, options, parseXML) { + const parsedResponse = await parse(jsonContentTypes, xmlContentTypes, response, options, parseXML); + if (!shouldDeserializeResponse(parsedResponse)) { + return parsedResponse; + } + const operationInfo = getOperationRequestInfo(parsedResponse.request); + const operationSpec = operationInfo?.operationSpec; + if (!operationSpec || !operationSpec.responses) { + return parsedResponse; + } + const responseSpec = getOperationResponseMap(parsedResponse); + const { error: error2, shouldReturnResponse } = handleErrorResponse(parsedResponse, operationSpec, responseSpec, options); + if (error2) { + throw error2; + } else if (shouldReturnResponse) { + return parsedResponse; + } + if (responseSpec) { + if (responseSpec.bodyMapper) { + let valueToDeserialize = parsedResponse.parsedBody; + if (operationSpec.isXML && responseSpec.bodyMapper.type.name === MapperTypeNames.Sequence) { + valueToDeserialize = typeof valueToDeserialize === "object" ? valueToDeserialize[responseSpec.bodyMapper.xmlElementName] : []; + } + try { + parsedResponse.parsedBody = operationSpec.serializer.deserialize(responseSpec.bodyMapper, valueToDeserialize, "operationRes.parsedBody", options); + } catch (deserializeError) { + const restError = new RestError2(`Error ${deserializeError} occurred in deserializing the responseBody - ${parsedResponse.bodyAsText}`, { + statusCode: parsedResponse.status, + request: parsedResponse.request, + response: parsedResponse + }); + throw restError; + } + } else if (operationSpec.httpMethod === "HEAD") { + parsedResponse.parsedBody = response.status >= 200 && response.status < 300; + } + if (responseSpec.headersMapper) { + parsedResponse.parsedHeaders = operationSpec.serializer.deserialize(responseSpec.headersMapper, parsedResponse.headers.toJSON(), "operationRes.parsedHeaders", { xml: {}, ignoreUnknownProperties: true }); + } + } + return parsedResponse; +} +function isOperationSpecEmpty(operationSpec) { + const expectedStatusCodes = Object.keys(operationSpec.responses); + return expectedStatusCodes.length === 0 || expectedStatusCodes.length === 1 && expectedStatusCodes[0] === "default"; +} +function handleErrorResponse(parsedResponse, operationSpec, responseSpec, options) { + const isSuccessByStatus = 200 <= parsedResponse.status && parsedResponse.status < 300; + const isExpectedStatusCode = isOperationSpecEmpty(operationSpec) ? isSuccessByStatus : !!responseSpec; + if (isExpectedStatusCode) { + if (responseSpec) { + if (!responseSpec.isError) { + return { error: null, shouldReturnResponse: false }; + } + } else { + return { error: null, shouldReturnResponse: false }; + } + } + const errorResponseSpec = responseSpec ?? operationSpec.responses.default; + const initialErrorMessage = parsedResponse.request.streamResponseStatusCodes?.has(parsedResponse.status) ? `Unexpected status code: ${parsedResponse.status}` : parsedResponse.bodyAsText; + const error2 = new RestError2(initialErrorMessage, { + statusCode: parsedResponse.status, + request: parsedResponse.request, + response: parsedResponse + }); + if (!errorResponseSpec && !(parsedResponse.parsedBody?.error?.code && parsedResponse.parsedBody?.error?.message)) { + throw error2; + } + const defaultBodyMapper = errorResponseSpec?.bodyMapper; + const defaultHeadersMapper = errorResponseSpec?.headersMapper; + try { + if (parsedResponse.parsedBody) { + const parsedBody = parsedResponse.parsedBody; + let deserializedError; + if (defaultBodyMapper) { + let valueToDeserialize = parsedBody; + if (operationSpec.isXML && defaultBodyMapper.type.name === MapperTypeNames.Sequence) { + valueToDeserialize = []; + const elementName = defaultBodyMapper.xmlElementName; + if (typeof parsedBody === "object" && elementName) { + valueToDeserialize = parsedBody[elementName]; + } + } + deserializedError = operationSpec.serializer.deserialize(defaultBodyMapper, valueToDeserialize, "error.response.parsedBody", options); + } + const internalError = parsedBody.error || deserializedError || parsedBody; + error2.code = internalError.code; + if (internalError.message) { + error2.message = internalError.message; + } + if (defaultBodyMapper) { + error2.response.parsedBody = deserializedError; + } + } + if (parsedResponse.headers && defaultHeadersMapper) { + error2.response.parsedHeaders = operationSpec.serializer.deserialize(defaultHeadersMapper, parsedResponse.headers.toJSON(), "operationRes.parsedHeaders"); + } + } catch (defaultError) { + error2.message = `Error "${defaultError.message}" occurred in deserializing the responseBody - "${parsedResponse.bodyAsText}" for the default response.`; + } + return { error: error2, shouldReturnResponse: false }; +} +async function parse(jsonContentTypes, xmlContentTypes, operationResponse, opts, parseXML) { + if (!operationResponse.request.streamResponseStatusCodes?.has(operationResponse.status) && operationResponse.bodyAsText) { + const text = operationResponse.bodyAsText; + const contentType = operationResponse.headers.get("Content-Type") || ""; + const contentComponents = !contentType ? [] : contentType.split(";").map((component) => component.toLowerCase()); + try { + if (contentComponents.length === 0 || contentComponents.some((component) => jsonContentTypes.indexOf(component) !== -1)) { + operationResponse.parsedBody = JSON.parse(text); + return operationResponse; + } else if (contentComponents.some((component) => xmlContentTypes.indexOf(component) !== -1)) { + if (!parseXML) { + throw new Error("Parsing XML not supported."); + } + const body = await parseXML(text, opts.xml); + operationResponse.parsedBody = body; + return operationResponse; + } + } catch (err) { + const msg = `Error "${err}" occurred while parsing the response body - ${operationResponse.bodyAsText}.`; + const errCode = err.code || RestError2.PARSE_ERROR; + const e = new RestError2(msg, { + code: errCode, + statusCode: operationResponse.status, + request: operationResponse.request, + response: operationResponse + }); + throw e; + } + } + return operationResponse; +} +var defaultJsonContentTypes, defaultXmlContentTypes, deserializationPolicyName; +var init_deserializationPolicy = __esm({ + "node_modules/@azure/core-client/dist/esm/deserializationPolicy.js"() { + init_interfaces(); + init_esm6(); + init_serializer(); + init_operationHelpers(); + defaultJsonContentTypes = ["application/json", "text/json"]; + defaultXmlContentTypes = ["application/xml", "application/atom+xml"]; + deserializationPolicyName = "deserializationPolicy"; + } +}); + +// node_modules/@azure/core-client/dist/esm/interfaceHelpers.js +function getStreamingResponseStatusCodes(operationSpec) { + const result = /* @__PURE__ */ new Set(); + for (const statusCode in operationSpec.responses) { + const operationResponse = operationSpec.responses[statusCode]; + if (operationResponse.bodyMapper && operationResponse.bodyMapper.type.name === MapperTypeNames.Stream) { + result.add(Number(statusCode)); + } + } + return result; +} +function getPathStringFromParameter(parameter) { + const { parameterPath, mapper } = parameter; + let result; + if (typeof parameterPath === "string") { + result = parameterPath; + } else if (Array.isArray(parameterPath)) { + result = parameterPath.join("."); + } else { + result = mapper.serializedName; + } + return result; +} +var init_interfaceHelpers = __esm({ + "node_modules/@azure/core-client/dist/esm/interfaceHelpers.js"() { + init_serializer(); + } +}); + +// node_modules/@azure/core-client/dist/esm/serializationPolicy.js +function serializationPolicy(options = {}) { + const stringifyXML = options.stringifyXML; + return { + name: serializationPolicyName, + async sendRequest(request, next) { + const operationInfo = getOperationRequestInfo(request); + const operationSpec = operationInfo?.operationSpec; + const operationArguments = operationInfo?.operationArguments; + if (operationSpec && operationArguments) { + serializeHeaders(request, operationArguments, operationSpec); + serializeRequestBody(request, operationArguments, operationSpec, stringifyXML); + } + return next(request); + } + }; +} +function serializeHeaders(request, operationArguments, operationSpec) { + if (operationSpec.headerParameters) { + for (const headerParameter of operationSpec.headerParameters) { + let headerValue = getOperationArgumentValueFromParameter(operationArguments, headerParameter); + if (headerValue !== null && headerValue !== void 0 || headerParameter.mapper.required) { + headerValue = operationSpec.serializer.serialize(headerParameter.mapper, headerValue, getPathStringFromParameter(headerParameter)); + const headerCollectionPrefix = headerParameter.mapper.headerCollectionPrefix; + if (headerCollectionPrefix) { + for (const key of Object.keys(headerValue)) { + request.headers.set(headerCollectionPrefix + key, headerValue[key]); + } + } else { + request.headers.set(headerParameter.mapper.serializedName || getPathStringFromParameter(headerParameter), headerValue); + } + } + } + } + const customHeaders = operationArguments.options?.requestOptions?.customHeaders; + if (customHeaders) { + for (const customHeaderName of Object.keys(customHeaders)) { + request.headers.set(customHeaderName, customHeaders[customHeaderName]); + } + } +} +function serializeRequestBody(request, operationArguments, operationSpec, stringifyXML = function() { + throw new Error("XML serialization unsupported!"); +}) { + const serializerOptions = operationArguments.options?.serializerOptions; + const updatedOptions = { + xml: { + rootName: serializerOptions?.xml.rootName ?? "", + includeRoot: serializerOptions?.xml.includeRoot ?? false, + xmlCharKey: serializerOptions?.xml.xmlCharKey ?? XML_CHARKEY + } + }; + const xmlCharKey = updatedOptions.xml.xmlCharKey; + if (operationSpec.requestBody && operationSpec.requestBody.mapper) { + request.body = getOperationArgumentValueFromParameter(operationArguments, operationSpec.requestBody); + const bodyMapper = operationSpec.requestBody.mapper; + const { required: required2, serializedName, xmlName, xmlElementName, xmlNamespace, xmlNamespacePrefix, nullable: nullable2 } = bodyMapper; + const typeName = bodyMapper.type.name; + try { + if (request.body !== void 0 && request.body !== null || nullable2 && request.body === null || required2) { + const requestBodyParameterPathString = getPathStringFromParameter(operationSpec.requestBody); + request.body = operationSpec.serializer.serialize(bodyMapper, request.body, requestBodyParameterPathString, updatedOptions); + const isStream = typeName === MapperTypeNames.Stream; + if (operationSpec.isXML) { + const xmlnsKey = xmlNamespacePrefix ? `xmlns:${xmlNamespacePrefix}` : "xmlns"; + const value = getXmlValueWithNamespace(xmlNamespace, xmlnsKey, typeName, request.body, updatedOptions); + if (typeName === MapperTypeNames.Sequence) { + request.body = stringifyXML(prepareXMLRootList(value, xmlElementName || xmlName || serializedName, xmlnsKey, xmlNamespace), { rootName: xmlName || serializedName, xmlCharKey }); + } else if (!isStream) { + request.body = stringifyXML(value, { + rootName: xmlName || serializedName, + xmlCharKey + }); + } + } else if (typeName === MapperTypeNames.String && (operationSpec.contentType?.match("text/plain") || operationSpec.mediaType === "text")) { + return; + } else if (!isStream) { + request.body = JSON.stringify(request.body); + } + } + } catch (error2) { + throw new Error(`Error "${error2.message}" occurred in serializing the payload - ${JSON.stringify(serializedName, void 0, " ")}.`); + } + } else if (operationSpec.formDataParameters && operationSpec.formDataParameters.length > 0) { + request.formData = {}; + for (const formDataParameter of operationSpec.formDataParameters) { + const formDataParameterValue = getOperationArgumentValueFromParameter(operationArguments, formDataParameter); + if (formDataParameterValue !== void 0 && formDataParameterValue !== null) { + const formDataParameterPropertyName = formDataParameter.mapper.serializedName || getPathStringFromParameter(formDataParameter); + request.formData[formDataParameterPropertyName] = operationSpec.serializer.serialize(formDataParameter.mapper, formDataParameterValue, getPathStringFromParameter(formDataParameter), updatedOptions); + } + } + } +} +function getXmlValueWithNamespace(xmlNamespace, xmlnsKey, typeName, serializedValue, options) { + if (xmlNamespace && !["Composite", "Sequence", "Dictionary"].includes(typeName)) { + const result = {}; + result[options.xml.xmlCharKey] = serializedValue; + result[XML_ATTRKEY] = { [xmlnsKey]: xmlNamespace }; + return result; + } + return serializedValue; +} +function prepareXMLRootList(obj, elementName, xmlNamespaceKey, xmlNamespace) { + if (!Array.isArray(obj)) { + obj = [obj]; + } + if (!xmlNamespaceKey || !xmlNamespace) { + return { [elementName]: obj }; + } + const result = { [elementName]: obj }; + result[XML_ATTRKEY] = { [xmlNamespaceKey]: xmlNamespace }; + return result; +} +var serializationPolicyName; +var init_serializationPolicy = __esm({ + "node_modules/@azure/core-client/dist/esm/serializationPolicy.js"() { + init_interfaces(); + init_operationHelpers(); + init_serializer(); + init_interfaceHelpers(); + serializationPolicyName = "serializationPolicy"; + } +}); + +// node_modules/@azure/core-client/dist/esm/pipeline.js +function createClientPipeline(options = {}) { + const pipeline = createPipelineFromOptions2(options ?? {}); + if (options.credentialOptions) { + pipeline.addPolicy(bearerTokenAuthenticationPolicy({ + credential: options.credentialOptions.credential, + scopes: options.credentialOptions.credentialScopes + })); + } + pipeline.addPolicy(serializationPolicy(options.serializationOptions), { phase: "Serialize" }); + pipeline.addPolicy(deserializationPolicy(options.deserializationOptions), { + phase: "Deserialize" + }); + return pipeline; +} +var init_pipeline3 = __esm({ + "node_modules/@azure/core-client/dist/esm/pipeline.js"() { + init_deserializationPolicy(); + init_esm6(); + init_serializationPolicy(); + } +}); + +// node_modules/@azure/core-client/dist/esm/httpClientCache.js +function getCachedDefaultHttpClient() { + if (!cachedHttpClient2) { + cachedHttpClient2 = createDefaultHttpClient2(); + } + return cachedHttpClient2; +} +var cachedHttpClient2; +var init_httpClientCache = __esm({ + "node_modules/@azure/core-client/dist/esm/httpClientCache.js"() { + init_esm6(); + } +}); + +// node_modules/@azure/core-client/dist/esm/urlHelpers.js +function getRequestUrl(baseUri, operationSpec, operationArguments, fallbackObject) { + const urlReplacements = calculateUrlReplacements(operationSpec, operationArguments, fallbackObject); + let isAbsolutePath = false; + let requestUrl = replaceAll2(baseUri, urlReplacements); + if (operationSpec.path) { + let path9 = replaceAll2(operationSpec.path, urlReplacements); + if (operationSpec.path === "/{nextLink}" && path9.startsWith("/")) { + path9 = path9.substring(1); + } + if (isAbsoluteUrl(path9)) { + requestUrl = path9; + isAbsolutePath = true; + } else { + requestUrl = appendPath2(requestUrl, path9); + } + } + const { queryParams, sequenceParams } = calculateQueryParameters(operationSpec, operationArguments, fallbackObject); + requestUrl = appendQueryParams2(requestUrl, queryParams, sequenceParams, isAbsolutePath); + return requestUrl; +} +function replaceAll2(input, replacements) { + let result = input; + for (const [searchValue, replaceValue] of replacements) { + result = result.split(searchValue).join(replaceValue); + } + return result; +} +function calculateUrlReplacements(operationSpec, operationArguments, fallbackObject) { + const result = /* @__PURE__ */ new Map(); + if (operationSpec.urlParameters?.length) { + for (const urlParameter of operationSpec.urlParameters) { + let urlParameterValue = getOperationArgumentValueFromParameter(operationArguments, urlParameter, fallbackObject); + const parameterPathString = getPathStringFromParameter(urlParameter); + urlParameterValue = operationSpec.serializer.serialize(urlParameter.mapper, urlParameterValue, parameterPathString); + if (!urlParameter.skipEncoding) { + urlParameterValue = encodeURIComponent(urlParameterValue); + } + result.set(`{${urlParameter.mapper.serializedName || parameterPathString}}`, urlParameterValue); + } + } + return result; +} +function isAbsoluteUrl(url2) { + return url2.includes("://"); +} +function appendPath2(url2, pathToAppend) { + if (!pathToAppend) { + return url2; + } + const parsedUrl = new URL(url2); + let newPath = parsedUrl.pathname; + if (!newPath.endsWith("/")) { + newPath = `${newPath}/`; + } + if (pathToAppend.startsWith("/")) { + pathToAppend = pathToAppend.substring(1); + } + const searchStart = pathToAppend.indexOf("?"); + if (searchStart !== -1) { + const path9 = pathToAppend.substring(0, searchStart); + const search = pathToAppend.substring(searchStart + 1); + newPath = newPath + path9; + if (search) { + parsedUrl.search = parsedUrl.search ? `${parsedUrl.search}&${search}` : search; + } + } else { + newPath = newPath + pathToAppend; + } + parsedUrl.pathname = newPath; + return parsedUrl.toString(); +} +function calculateQueryParameters(operationSpec, operationArguments, fallbackObject) { + const result = /* @__PURE__ */ new Map(); + const sequenceParams = /* @__PURE__ */ new Set(); + if (operationSpec.queryParameters?.length) { + for (const queryParameter of operationSpec.queryParameters) { + if (queryParameter.mapper.type.name === "Sequence" && queryParameter.mapper.serializedName) { + sequenceParams.add(queryParameter.mapper.serializedName); + } + let queryParameterValue = getOperationArgumentValueFromParameter(operationArguments, queryParameter, fallbackObject); + if (queryParameterValue !== void 0 && queryParameterValue !== null || queryParameter.mapper.required) { + queryParameterValue = operationSpec.serializer.serialize(queryParameter.mapper, queryParameterValue, getPathStringFromParameter(queryParameter)); + const delimiter = queryParameter.collectionFormat ? CollectionFormatToDelimiterMap[queryParameter.collectionFormat] : ""; + if (Array.isArray(queryParameterValue)) { + queryParameterValue = queryParameterValue.map((item) => { + if (item === null || item === void 0) { + return ""; + } + return item; + }); + } + if (queryParameter.collectionFormat === "Multi" && queryParameterValue.length === 0) { + continue; + } else if (Array.isArray(queryParameterValue) && (queryParameter.collectionFormat === "SSV" || queryParameter.collectionFormat === "TSV")) { + queryParameterValue = queryParameterValue.join(delimiter); + } + if (!queryParameter.skipEncoding) { + if (Array.isArray(queryParameterValue)) { + queryParameterValue = queryParameterValue.map((item) => { + return encodeURIComponent(item); + }); + } else { + queryParameterValue = encodeURIComponent(queryParameterValue); + } + } + if (Array.isArray(queryParameterValue) && (queryParameter.collectionFormat === "CSV" || queryParameter.collectionFormat === "Pipes")) { + queryParameterValue = queryParameterValue.join(delimiter); + } + result.set(queryParameter.mapper.serializedName || getPathStringFromParameter(queryParameter), queryParameterValue); + } + } + } + return { + queryParams: result, + sequenceParams + }; +} +function simpleParseQueryParams2(queryString) { + const result = /* @__PURE__ */ new Map(); + if (!queryString || queryString[0] !== "?") { + return result; + } + queryString = queryString.slice(1); + const pairs = queryString.split("&"); + for (const pair of pairs) { + const [name5, value] = pair.split("=", 2); + const existingValue = result.get(name5); + if (existingValue) { + if (Array.isArray(existingValue)) { + existingValue.push(value); + } else { + result.set(name5, [existingValue, value]); + } + } else { + result.set(name5, value); + } + } + return result; +} +function appendQueryParams2(url2, queryParams, sequenceParams, noOverwrite = false) { + if (queryParams.size === 0) { + return url2; + } + const parsedUrl = new URL(url2); + const combinedParams = simpleParseQueryParams2(parsedUrl.search); + for (const [name5, value] of queryParams) { + const existingValue = combinedParams.get(name5); + if (Array.isArray(existingValue)) { + if (Array.isArray(value)) { + existingValue.push(...value); + const valueSet = new Set(existingValue); + combinedParams.set(name5, Array.from(valueSet)); + } else { + existingValue.push(value); + } + } else if (existingValue) { + if (Array.isArray(value)) { + value.unshift(existingValue); + } else if (sequenceParams.has(name5)) { + combinedParams.set(name5, [existingValue, value]); + } + if (!noOverwrite) { + combinedParams.set(name5, value); + } + } else { + combinedParams.set(name5, value); + } + } + const searchPieces = []; + for (const [name5, value] of combinedParams) { + if (typeof value === "string") { + searchPieces.push(`${name5}=${value}`); + } else if (Array.isArray(value)) { + for (const subValue of value) { + searchPieces.push(`${name5}=${subValue}`); + } + } else { + searchPieces.push(`${name5}=${value}`); + } + } + parsedUrl.search = searchPieces.length ? `?${searchPieces.join("&")}` : ""; + return parsedUrl.toString(); +} +var CollectionFormatToDelimiterMap; +var init_urlHelpers2 = __esm({ + "node_modules/@azure/core-client/dist/esm/urlHelpers.js"() { + init_operationHelpers(); + init_interfaceHelpers(); + CollectionFormatToDelimiterMap = { + CSV: ",", + SSV: " ", + Multi: "Multi", + TSV: " ", + Pipes: "|" + }; + } +}); + +// node_modules/@azure/core-client/dist/esm/log.js +var logger7; +var init_log4 = __esm({ + "node_modules/@azure/core-client/dist/esm/log.js"() { + init_esm(); + logger7 = createClientLogger2("core-client"); + } +}); + +// node_modules/@azure/core-client/dist/esm/serviceClient.js +function createDefaultPipeline2(options) { + const credentialScopes = getCredentialScopes(options); + const credentialOptions = options.credential && credentialScopes ? { credentialScopes, credential: options.credential } : void 0; + return createClientPipeline({ + ...options, + credentialOptions + }); +} +function getCredentialScopes(options) { + if (options.credentialScopes) { + return options.credentialScopes; + } + if (options.endpoint) { + return `${options.endpoint}/.default`; + } + if (options.baseUri) { + return `${options.baseUri}/.default`; + } + if (options.credential && !options.credentialScopes) { + throw new Error(`When using credentials, the ServiceClientOptions must contain either a endpoint or a credentialScopes. Unable to create a bearerTokenAuthenticationPolicy`); + } + return void 0; +} +var ServiceClient; +var init_serviceClient = __esm({ + "node_modules/@azure/core-client/dist/esm/serviceClient.js"() { + init_esm6(); + init_pipeline3(); + init_utils2(); + init_httpClientCache(); + init_operationHelpers(); + init_urlHelpers2(); + init_interfaceHelpers(); + init_log4(); + ServiceClient = class { + /** + * If specified, this is the base URI that requests will be made against for this ServiceClient. + * If it is not specified, then all OperationSpecs must contain a baseUrl property. + */ + _endpoint; + /** + * The default request content type for the service. + * Used if no requestContentType is present on an OperationSpec. + */ + _requestContentType; + /** + * Set to true if the request is sent over HTTP instead of HTTPS + */ + _allowInsecureConnection; + /** + * The HTTP client that will be used to send requests. + */ + _httpClient; + /** + * The pipeline used by this client to make requests + */ + pipeline; + /** + * The ServiceClient constructor + * @param options - The service client options that govern the behavior of the client. + */ + constructor(options = {}) { + this._requestContentType = options.requestContentType; + this._endpoint = options.endpoint ?? options.baseUri; + if (options.baseUri) { + logger7.warning("The baseUri option for SDK Clients has been deprecated, please use endpoint instead."); + } + this._allowInsecureConnection = options.allowInsecureConnection; + this._httpClient = options.httpClient || getCachedDefaultHttpClient(); + this.pipeline = options.pipeline || createDefaultPipeline2(options); + if (options.additionalPolicies?.length) { + for (const { policy, position } of options.additionalPolicies) { + const afterPhase = position === "perRetry" ? "Sign" : void 0; + this.pipeline.addPolicy(policy, { + afterPhase + }); + } + } + } + /** + * Send the provided httpRequest. + */ + async sendRequest(request) { + return this.pipeline.sendRequest(this._httpClient, request); + } + /** + * Send an HTTP request that is populated using the provided OperationSpec. + * @typeParam T - The typed result of the request, based on the OperationSpec. + * @param operationArguments - The arguments that the HTTP request's templated values will be populated from. + * @param operationSpec - The OperationSpec to use to populate the httpRequest. + */ + async sendOperationRequest(operationArguments, operationSpec) { + const endpoint = operationSpec.baseUrl || this._endpoint; + if (!endpoint) { + throw new Error("If operationSpec.baseUrl is not specified, then the ServiceClient must have a endpoint string property that contains the base URL to use."); + } + const url2 = getRequestUrl(endpoint, operationSpec, operationArguments, this); + const request = createPipelineRequest2({ + url: url2 + }); + request.method = operationSpec.httpMethod; + const operationInfo = getOperationRequestInfo(request); + operationInfo.operationSpec = operationSpec; + operationInfo.operationArguments = operationArguments; + const contentType = operationSpec.contentType || this._requestContentType; + if (contentType && operationSpec.requestBody) { + request.headers.set("Content-Type", contentType); + } + const options = operationArguments.options; + if (options) { + const requestOptions = options.requestOptions; + if (requestOptions) { + if (requestOptions.timeout) { + request.timeout = requestOptions.timeout; + } + if (requestOptions.onUploadProgress) { + request.onUploadProgress = requestOptions.onUploadProgress; + } + if (requestOptions.onDownloadProgress) { + request.onDownloadProgress = requestOptions.onDownloadProgress; + } + if (requestOptions.shouldDeserialize !== void 0) { + operationInfo.shouldDeserialize = requestOptions.shouldDeserialize; + } + if (requestOptions.allowInsecureConnection) { + request.allowInsecureConnection = true; + } + } + if (options.abortSignal) { + request.abortSignal = options.abortSignal; + } + if (options.tracingOptions) { + request.tracingOptions = options.tracingOptions; + } + } + if (this._allowInsecureConnection) { + request.allowInsecureConnection = true; + } + if (request.streamResponseStatusCodes === void 0) { + request.streamResponseStatusCodes = getStreamingResponseStatusCodes(operationSpec); + } + try { + const rawResponse = await this.sendRequest(request); + const flatResponse = flattenResponse(rawResponse, operationSpec.responses[rawResponse.status]); + if (options?.onResponse) { + options.onResponse(rawResponse, flatResponse); + } + return flatResponse; + } catch (error2) { + if (typeof error2 === "object" && error2?.response) { + const rawResponse = error2.response; + const flatResponse = flattenResponse(rawResponse, operationSpec.responses[error2.statusCode] || operationSpec.responses["default"]); + error2.details = flatResponse; + if (options?.onResponse) { + options.onResponse(rawResponse, flatResponse, error2); + } + } + throw error2; + } + } + }; + } +}); + +// node_modules/@azure/core-client/dist/esm/authorizeRequestOnClaimChallenge.js +var init_authorizeRequestOnClaimChallenge = __esm({ + "node_modules/@azure/core-client/dist/esm/authorizeRequestOnClaimChallenge.js"() { + init_log4(); + init_base64(); + } +}); + +// node_modules/@azure/core-client/dist/esm/authorizeRequestOnTenantChallenge.js +var init_authorizeRequestOnTenantChallenge = __esm({ + "node_modules/@azure/core-client/dist/esm/authorizeRequestOnTenantChallenge.js"() { + } +}); + +// node_modules/@azure/core-client/dist/esm/index.js +var init_esm7 = __esm({ + "node_modules/@azure/core-client/dist/esm/index.js"() { + init_serializer(); + init_serviceClient(); + init_pipeline3(); + init_interfaces(); + init_deserializationPolicy(); + init_serializationPolicy(); + init_authorizeRequestOnClaimChallenge(); + init_authorizeRequestOnTenantChallenge(); + } +}); + +// node_modules/@azure/identity/dist/esm/util/identityTokenEndpoint.js +function getIdentityTokenEndpointSuffix(tenantId) { + if (tenantId === "adfs") { + return "oauth2/token"; + } else { + return "oauth2/v2.0/token"; + } +} +var init_identityTokenEndpoint = __esm({ + "node_modules/@azure/identity/dist/esm/util/identityTokenEndpoint.js"() { + } +}); + +// node_modules/@azure/identity/dist/esm/credentials/managedIdentityCredential/utils.js +function mapScopesToResource(scopes) { + let scope = ""; + if (Array.isArray(scopes)) { + if (scopes.length !== 1) { + return; + } + scope = scopes[0]; + } else if (typeof scopes === "string") { + scope = scopes; + } + if (!scope.endsWith(DefaultScopeSuffix)) { + return scope; + } + return scope.substr(0, scope.lastIndexOf(DefaultScopeSuffix)); +} +function parseExpirationTimestamp(body) { + if (typeof body.expires_on === "number") { + return body.expires_on * 1e3; + } + if (typeof body.expires_on === "string") { + const asNumber = +body.expires_on; + if (!isNaN(asNumber)) { + return asNumber * 1e3; + } + const asDate = Date.parse(body.expires_on); + if (!isNaN(asDate)) { + return asDate; + } + } + if (typeof body.expires_in === "number") { + return Date.now() + body.expires_in * 1e3; + } + throw new Error(`Failed to parse token expiration from body. expires_in="${body.expires_in}", expires_on="${body.expires_on}"`); +} +function parseRefreshTimestamp(body) { + if (body.refresh_on) { + if (typeof body.refresh_on === "number") { + return body.refresh_on * 1e3; + } + if (typeof body.refresh_on === "string") { + const asNumber = +body.refresh_on; + if (!isNaN(asNumber)) { + return asNumber * 1e3; + } + const asDate = Date.parse(body.refresh_on); + if (!isNaN(asDate)) { + return asDate; + } + } + throw new Error(`Failed to parse refresh_on from body. refresh_on="${body.refresh_on}"`); + } else { + return void 0; + } +} +var DefaultScopeSuffix, serviceFabricErrorMessage; +var init_utils3 = __esm({ + "node_modules/@azure/identity/dist/esm/credentials/managedIdentityCredential/utils.js"() { + DefaultScopeSuffix = "/.default"; + serviceFabricErrorMessage = "Specifying a `clientId` or `resourceId` is not supported by the Service Fabric managed identity environment. The managed identity configuration is determined by the Service Fabric cluster resource configuration. See https://aka.ms/servicefabricmi for more information"; + } +}); + +// node_modules/@azure/identity/dist/esm/client/identityClient.js +function getIdentityClientAuthorityHost(options) { + let authorityHost = options?.authorityHost; + if (isNode) { + authorityHost = authorityHost ?? process.env.AZURE_AUTHORITY_HOST; + } + return authorityHost ?? DefaultAuthorityHost; +} +var noCorrelationId, IdentityClient; +var init_identityClient = __esm({ + "node_modules/@azure/identity/dist/esm/client/identityClient.js"() { + init_esm7(); + init_esm4(); + init_esm6(); + init_errors(); + init_identityTokenEndpoint(); + init_constants(); + init_tracing(); + init_logging(); + init_utils3(); + noCorrelationId = "noCorrelationId"; + IdentityClient = class extends ServiceClient { + authorityHost; + allowLoggingAccountIdentifiers; + abortControllers; + allowInsecureConnection = false; + // used for WorkloadIdentity + tokenCredentialOptions; + constructor(options) { + const packageDetails = `azsdk-js-identity/${SDK_VERSION}`; + const userAgentPrefix = options?.userAgentOptions?.userAgentPrefix ? `${options.userAgentOptions.userAgentPrefix} ${packageDetails}` : `${packageDetails}`; + const baseUri = getIdentityClientAuthorityHost(options); + if (!baseUri.startsWith("https:")) { + throw new Error("The authorityHost address must use the 'https' protocol."); + } + super({ + requestContentType: "application/json; charset=utf-8", + retryOptions: { + maxRetries: 3 + }, + ...options, + userAgentOptions: { + userAgentPrefix + }, + baseUri + }); + this.authorityHost = baseUri; + this.abortControllers = /* @__PURE__ */ new Map(); + this.allowLoggingAccountIdentifiers = options?.loggingOptions?.allowLoggingAccountIdentifiers; + this.tokenCredentialOptions = { ...options }; + if (options?.allowInsecureConnection) { + this.allowInsecureConnection = options.allowInsecureConnection; + } + } + async sendTokenRequest(request) { + logger2.info(`IdentityClient: sending token request to [${request.url}]`); + const response = await this.sendRequest(request); + if (response.bodyAsText && (response.status === 200 || response.status === 201)) { + const parsedBody = JSON.parse(response.bodyAsText); + if (!parsedBody.access_token) { + return null; + } + this.logIdentifiers(response); + const token = { + accessToken: { + token: parsedBody.access_token, + expiresOnTimestamp: parseExpirationTimestamp(parsedBody), + refreshAfterTimestamp: parseRefreshTimestamp(parsedBody), + tokenType: "Bearer" + }, + refreshToken: parsedBody.refresh_token + }; + logger2.info(`IdentityClient: [${request.url}] token acquired, expires on ${token.accessToken.expiresOnTimestamp}`); + return token; + } else { + const error2 = new AuthenticationError(response.status, response.bodyAsText); + logger2.warning(`IdentityClient: authentication error. HTTP status: ${response.status}, ${error2.errorResponse.errorDescription}`); + throw error2; + } + } + async refreshAccessToken(tenantId, clientId, scopes, refreshToken, clientSecret, options = {}) { + if (refreshToken === void 0) { + return null; + } + logger2.info(`IdentityClient: refreshing access token with client ID: ${clientId}, scopes: ${scopes} started`); + const refreshParams = { + grant_type: "refresh_token", + client_id: clientId, + refresh_token: refreshToken, + scope: scopes + }; + if (clientSecret !== void 0) { + refreshParams.client_secret = clientSecret; + } + const query = new URLSearchParams(refreshParams); + return tracingClient.withSpan("IdentityClient.refreshAccessToken", options, async (updatedOptions) => { + try { + const urlSuffix = getIdentityTokenEndpointSuffix(tenantId); + const request = createPipelineRequest2({ + url: `${this.authorityHost}/${tenantId}/${urlSuffix}`, + method: "POST", + body: query.toString(), + abortSignal: options.abortSignal, + headers: createHttpHeaders2({ + Accept: "application/json", + "Content-Type": "application/x-www-form-urlencoded" + }), + tracingOptions: updatedOptions.tracingOptions + }); + const response = await this.sendTokenRequest(request); + logger2.info(`IdentityClient: refreshed token for client ID: ${clientId}`); + return response; + } catch (err) { + if (err.name === AuthenticationErrorName && err.errorResponse.error === "interaction_required") { + logger2.info(`IdentityClient: interaction required for client ID: ${clientId}`); + return null; + } else { + logger2.warning(`IdentityClient: failed refreshing token for client ID: ${clientId}: ${err}`); + throw err; + } + } + }); + } + // Here is a custom layer that allows us to abort requests that go through MSAL, + // since MSAL doesn't allow us to pass options all the way through. + generateAbortSignal(correlationId) { + const controller = new AbortController(); + const controllers = this.abortControllers.get(correlationId) || []; + controllers.push(controller); + this.abortControllers.set(correlationId, controllers); + const existingOnAbort = controller.signal.onabort; + controller.signal.onabort = (...params) => { + this.abortControllers.set(correlationId, void 0); + if (existingOnAbort) { + existingOnAbort.apply(controller.signal, params); + } + }; + return controller.signal; + } + abortRequests(correlationId) { + const key = correlationId || noCorrelationId; + const controllers = [ + ...this.abortControllers.get(key) || [], + // MSAL passes no correlation ID to the get requests... + ...this.abortControllers.get(noCorrelationId) || [] + ]; + if (!controllers.length) { + return; + } + for (const controller of controllers) { + controller.abort(); + } + this.abortControllers.set(key, void 0); + } + getCorrelationId(options) { + const parameter = options?.body?.split("&").map((part) => part.split("=")).find(([key]) => key === "client-request-id"); + return parameter && parameter.length ? parameter[1] || noCorrelationId : noCorrelationId; + } + // The MSAL network module methods follow + async sendGetRequestAsync(url2, options) { + const request = createPipelineRequest2({ + url: url2, + method: "GET", + body: options?.body, + allowInsecureConnection: this.allowInsecureConnection, + headers: createHttpHeaders2(options?.headers), + abortSignal: this.generateAbortSignal(noCorrelationId) + }); + const response = await this.sendRequest(request); + this.logIdentifiers(response); + return { + body: response.bodyAsText ? JSON.parse(response.bodyAsText) : void 0, + headers: response.headers.toJSON(), + status: response.status + }; + } + async sendPostRequestAsync(url2, options) { + const request = createPipelineRequest2({ + url: url2, + method: "POST", + body: options?.body, + headers: createHttpHeaders2(options?.headers), + allowInsecureConnection: this.allowInsecureConnection, + // MSAL doesn't send the correlation ID on the get requests. + abortSignal: this.generateAbortSignal(this.getCorrelationId(options)) + }); + const response = await this.sendRequest(request); + this.logIdentifiers(response); + return { + body: response.bodyAsText ? JSON.parse(response.bodyAsText) : void 0, + headers: response.headers.toJSON(), + status: response.status + }; + } + /** + * + * @internal + */ + getTokenCredentialOptions() { + return this.tokenCredentialOptions; + } + /** + * If allowLoggingAccountIdentifiers was set on the constructor options + * we try to log the account identifiers by parsing the received access token. + * + * The account identifiers we try to log are: + * - `appid`: The application or Client Identifier. + * - `upn`: User Principal Name. + * - It might not be available in some authentication scenarios. + * - If it's not available, we put a placeholder: "No User Principal Name available". + * - `tid`: Tenant Identifier. + * - `oid`: Object Identifier of the authenticated user. + */ + logIdentifiers(response) { + if (!this.allowLoggingAccountIdentifiers || !response.bodyAsText) { + return; + } + const unavailableUpn = "No User Principal Name available"; + try { + const parsed = response.parsedBody || JSON.parse(response.bodyAsText); + const accessToken = parsed.access_token; + if (!accessToken) { + return; + } + const base64Metadata = accessToken.split(".")[1]; + const { appid, upn, tid, oid } = JSON.parse(Buffer.from(base64Metadata, "base64").toString("utf8")); + logger2.info(`[Authenticated account] Client ID: ${appid}. Tenant ID: ${tid}. User Principal Name: ${upn || unavailableUpn}. Object ID (user): ${oid}`); + } catch (e) { + logger2.warning("allowLoggingAccountIdentifiers was set, but we couldn't log the account information. Error:", e.message); + } + } + }; + } +}); + +// node_modules/@azure/identity/dist/esm/regionalAuthority.js +function calculateRegionalAuthority(regionalAuthority) { + let azureRegion = regionalAuthority; + if (azureRegion === void 0 && globalThis.process?.env?.AZURE_REGIONAL_AUTHORITY_NAME !== void 0) { + azureRegion = process.env.AZURE_REGIONAL_AUTHORITY_NAME; + } + if (azureRegion === RegionalAuthority.AutoDiscoverRegion) { + return "AUTO_DISCOVER"; + } + return azureRegion; +} +var RegionalAuthority; +var init_regionalAuthority = __esm({ + "node_modules/@azure/identity/dist/esm/regionalAuthority.js"() { + (function(RegionalAuthority2) { + RegionalAuthority2["AutoDiscoverRegion"] = "AutoDiscoverRegion"; + RegionalAuthority2["USWest"] = "westus"; + RegionalAuthority2["USWest2"] = "westus2"; + RegionalAuthority2["USCentral"] = "centralus"; + RegionalAuthority2["USEast"] = "eastus"; + RegionalAuthority2["USEast2"] = "eastus2"; + RegionalAuthority2["USNorthCentral"] = "northcentralus"; + RegionalAuthority2["USSouthCentral"] = "southcentralus"; + RegionalAuthority2["USWestCentral"] = "westcentralus"; + RegionalAuthority2["CanadaCentral"] = "canadacentral"; + RegionalAuthority2["CanadaEast"] = "canadaeast"; + RegionalAuthority2["BrazilSouth"] = "brazilsouth"; + RegionalAuthority2["EuropeNorth"] = "northeurope"; + RegionalAuthority2["EuropeWest"] = "westeurope"; + RegionalAuthority2["UKSouth"] = "uksouth"; + RegionalAuthority2["UKWest"] = "ukwest"; + RegionalAuthority2["FranceCentral"] = "francecentral"; + RegionalAuthority2["FranceSouth"] = "francesouth"; + RegionalAuthority2["SwitzerlandNorth"] = "switzerlandnorth"; + RegionalAuthority2["SwitzerlandWest"] = "switzerlandwest"; + RegionalAuthority2["GermanyNorth"] = "germanynorth"; + RegionalAuthority2["GermanyWestCentral"] = "germanywestcentral"; + RegionalAuthority2["NorwayWest"] = "norwaywest"; + RegionalAuthority2["NorwayEast"] = "norwayeast"; + RegionalAuthority2["AsiaEast"] = "eastasia"; + RegionalAuthority2["AsiaSouthEast"] = "southeastasia"; + RegionalAuthority2["JapanEast"] = "japaneast"; + RegionalAuthority2["JapanWest"] = "japanwest"; + RegionalAuthority2["AustraliaEast"] = "australiaeast"; + RegionalAuthority2["AustraliaSouthEast"] = "australiasoutheast"; + RegionalAuthority2["AustraliaCentral"] = "australiacentral"; + RegionalAuthority2["AustraliaCentral2"] = "australiacentral2"; + RegionalAuthority2["IndiaCentral"] = "centralindia"; + RegionalAuthority2["IndiaSouth"] = "southindia"; + RegionalAuthority2["IndiaWest"] = "westindia"; + RegionalAuthority2["KoreaSouth"] = "koreasouth"; + RegionalAuthority2["KoreaCentral"] = "koreacentral"; + RegionalAuthority2["UAECentral"] = "uaecentral"; + RegionalAuthority2["UAENorth"] = "uaenorth"; + RegionalAuthority2["SouthAfricaNorth"] = "southafricanorth"; + RegionalAuthority2["SouthAfricaWest"] = "southafricawest"; + RegionalAuthority2["ChinaNorth"] = "chinanorth"; + RegionalAuthority2["ChinaEast"] = "chinaeast"; + RegionalAuthority2["ChinaNorth2"] = "chinanorth2"; + RegionalAuthority2["ChinaEast2"] = "chinaeast2"; + RegionalAuthority2["GermanyCentral"] = "germanycentral"; + RegionalAuthority2["GermanyNorthEast"] = "germanynortheast"; + RegionalAuthority2["GovernmentUSVirginia"] = "usgovvirginia"; + RegionalAuthority2["GovernmentUSIowa"] = "usgoviowa"; + RegionalAuthority2["GovernmentUSArizona"] = "usgovarizona"; + RegionalAuthority2["GovernmentUSTexas"] = "usgovtexas"; + RegionalAuthority2["GovernmentUSDodEast"] = "usdodeast"; + RegionalAuthority2["GovernmentUSDodCentral"] = "usdodcentral"; + })(RegionalAuthority || (RegionalAuthority = {})); + } +}); + +// node_modules/@azure/identity/dist/esm/util/processMultiTenantRequest.js +function createConfigurationErrorMessage(tenantId) { + return `The current credential is not configured to acquire tokens for tenant ${tenantId}. To enable acquiring tokens for this tenant add it to the AdditionallyAllowedTenants on the credential options, or add "*" to AdditionallyAllowedTenants to allow acquiring tokens for any tenant.`; +} +function processMultiTenantRequest(tenantId, getTokenOptions, additionallyAllowedTenantIds = [], logger31) { + let resolvedTenantId; + if (process.env.AZURE_IDENTITY_DISABLE_MULTITENANTAUTH) { + resolvedTenantId = tenantId; + } else if (tenantId === "adfs") { + resolvedTenantId = tenantId; + } else { + resolvedTenantId = getTokenOptions?.tenantId ?? tenantId; + } + if (tenantId && resolvedTenantId !== tenantId && !additionallyAllowedTenantIds.includes("*") && !additionallyAllowedTenantIds.some((t) => t.localeCompare(resolvedTenantId) === 0)) { + const message = createConfigurationErrorMessage(resolvedTenantId); + logger31?.info(message); + throw new CredentialUnavailableError(message); + } + return resolvedTenantId; +} +var init_processMultiTenantRequest = __esm({ + "node_modules/@azure/identity/dist/esm/util/processMultiTenantRequest.js"() { + init_errors(); + } +}); + +// node_modules/@azure/identity/dist/esm/util/tenantIdUtils.js +function checkTenantId(logger31, tenantId) { + if (!tenantId.match(/^[0-9a-zA-Z-.]+$/)) { + const error2 = new Error("Invalid tenant id provided. You can locate your tenant id by following the instructions listed here: https://learn.microsoft.com/partner-center/find-ids-and-domain-names."); + logger31.info(formatError("", error2)); + throw error2; + } +} +function resolveTenantId(logger31, tenantId, clientId) { + if (tenantId) { + checkTenantId(logger31, tenantId); + return tenantId; + } + if (!clientId) { + clientId = DeveloperSignOnClientId; + } + if (clientId !== DeveloperSignOnClientId) { + return "common"; + } + return "organizations"; +} +function resolveAdditionallyAllowedTenantIds(additionallyAllowedTenants) { + if (!additionallyAllowedTenants || additionallyAllowedTenants.length === 0) { + return []; + } + if (additionallyAllowedTenants.includes("*")) { + return ALL_TENANTS; + } + return additionallyAllowedTenants; +} +var init_tenantIdUtils = __esm({ + "node_modules/@azure/identity/dist/esm/util/tenantIdUtils.js"() { + init_constants(); + init_logging(); + init_processMultiTenantRequest(); + } +}); + +// node_modules/is-docker/index.js +function hasDockerEnv() { + try { + import_node_fs.default.statSync("/.dockerenv"); + return true; + } catch { + return false; + } +} +function hasDockerCGroup() { + try { + return import_node_fs.default.readFileSync("/proc/self/cgroup", "utf8").includes("docker"); + } catch { + return false; + } +} +function isDocker() { + if (isDockerCached === void 0) { + isDockerCached = hasDockerEnv() || hasDockerCGroup(); + } + return isDockerCached; +} +var import_node_fs, isDockerCached; +var init_is_docker = __esm({ + "node_modules/is-docker/index.js"() { + import_node_fs = __toESM(require("node:fs"), 1); + } +}); + +// node_modules/is-inside-container/index.js +function isInsideContainer() { + if (cachedResult === void 0) { + cachedResult = hasContainerEnv() || isDocker(); + } + return cachedResult; +} +var import_node_fs2, cachedResult, hasContainerEnv; +var init_is_inside_container = __esm({ + "node_modules/is-inside-container/index.js"() { + import_node_fs2 = __toESM(require("node:fs"), 1); + init_is_docker(); + hasContainerEnv = () => { + try { + import_node_fs2.default.statSync("/run/.containerenv"); + return true; + } catch { + return false; + } + }; + } +}); + +// node_modules/is-wsl/index.js +var import_node_process4, import_node_os4, import_node_fs3, isWsl, is_wsl_default; +var init_is_wsl = __esm({ + "node_modules/is-wsl/index.js"() { + import_node_process4 = __toESM(require("node:process"), 1); + import_node_os4 = __toESM(require("node:os"), 1); + import_node_fs3 = __toESM(require("node:fs"), 1); + init_is_inside_container(); + isWsl = () => { + if (import_node_process4.default.platform !== "linux") { + return false; + } + if (import_node_os4.default.release().toLowerCase().includes("microsoft")) { + if (isInsideContainer()) { + return false; + } + return true; + } + try { + if (import_node_fs3.default.readFileSync("/proc/version", "utf8").toLowerCase().includes("microsoft")) { + return !isInsideContainer(); + } + } catch { + } + if (import_node_fs3.default.existsSync("/proc/sys/fs/binfmt_misc/WSLInterop") || import_node_fs3.default.existsSync("/run/WSL")) { + return !isInsideContainer(); + } + return false; + }; + is_wsl_default = import_node_process4.default.env.__IS_WSL_TEST__ ? isWsl : isWsl(); + } +}); + +// node_modules/@azure/identity/node_modules/wsl-utils/index.js +var import_node_process5, import_promises, wslDrivesMountPoint, powerShellPathFromWsl, powerShellPath; +var init_wsl_utils = __esm({ + "node_modules/@azure/identity/node_modules/wsl-utils/index.js"() { + import_node_process5 = __toESM(require("node:process"), 1); + import_promises = __toESM(require("node:fs/promises"), 1); + init_is_wsl(); + init_is_wsl(); + wslDrivesMountPoint = /* @__PURE__ */ (() => { + const defaultMountPoint = "/mnt/"; + let mountPoint; + return async function() { + if (mountPoint) { + return mountPoint; + } + const configFilePath = "/etc/wsl.conf"; + let isConfigFileExists = false; + try { + await import_promises.default.access(configFilePath, import_promises.constants.F_OK); + isConfigFileExists = true; + } catch { + } + if (!isConfigFileExists) { + return defaultMountPoint; + } + const configContent = await import_promises.default.readFile(configFilePath, { encoding: "utf8" }); + const configMountPoint = /(?.*)/g.exec(configContent); + if (!configMountPoint) { + return defaultMountPoint; + } + mountPoint = configMountPoint.groups.mountPoint.trim(); + mountPoint = mountPoint.endsWith("/") ? mountPoint : `${mountPoint}/`; + return mountPoint; + }; + })(); + powerShellPathFromWsl = async () => { + const mountPoint = await wslDrivesMountPoint(); + return `${mountPoint}c/Windows/System32/WindowsPowerShell/v1.0/powershell.exe`; + }; + powerShellPath = async () => { + if (is_wsl_default) { + return powerShellPathFromWsl(); + } + return `${import_node_process5.default.env.SYSTEMROOT || import_node_process5.default.env.windir || String.raw`C:\Windows`}\\System32\\WindowsPowerShell\\v1.0\\powershell.exe`; + }; + } +}); + +// node_modules/define-lazy-prop/index.js +function defineLazyProperty(object3, propertyName, valueGetter) { + const define2 = (value) => Object.defineProperty(object3, propertyName, { value, enumerable: true, writable: true }); + Object.defineProperty(object3, propertyName, { + configurable: true, + enumerable: true, + get() { + const result = valueGetter(); + define2(result); + return result; + }, + set(value) { + define2(value); + } + }); + return object3; +} +var init_define_lazy_prop = __esm({ + "node_modules/define-lazy-prop/index.js"() { + } +}); + +// node_modules/default-browser-id/index.js +async function defaultBrowserId() { + if (import_node_process6.default.platform !== "darwin") { + throw new Error("macOS only"); + } + const { stdout } = await execFileAsync("defaults", ["read", "com.apple.LaunchServices/com.apple.launchservices.secure", "LSHandlers"]); + const match = /LSHandlerRoleAll = "(?!-)(?[^"]+?)";\s+?LSHandlerURLScheme = (?:http|https);/.exec(stdout); + const browserId = match?.groups.id ?? "com.apple.Safari"; + if (browserId === "com.apple.safari") { + return "com.apple.Safari"; + } + return browserId; +} +var import_node_util3, import_node_process6, import_node_child_process, execFileAsync; +var init_default_browser_id = __esm({ + "node_modules/default-browser-id/index.js"() { + import_node_util3 = require("node:util"); + import_node_process6 = __toESM(require("node:process"), 1); + import_node_child_process = require("node:child_process"); + execFileAsync = (0, import_node_util3.promisify)(import_node_child_process.execFile); + } +}); + +// node_modules/run-applescript/index.js +async function runAppleScript(script, { humanReadableOutput = true, signal } = {}) { + if (import_node_process7.default.platform !== "darwin") { + throw new Error("macOS only"); + } + const outputArguments = humanReadableOutput ? [] : ["-ss"]; + const execOptions = {}; + if (signal) { + execOptions.signal = signal; + } + const { stdout } = await execFileAsync2("osascript", ["-e", script, outputArguments], execOptions); + return stdout.trim(); +} +var import_node_process7, import_node_util4, import_node_child_process2, execFileAsync2; +var init_run_applescript = __esm({ + "node_modules/run-applescript/index.js"() { + import_node_process7 = __toESM(require("node:process"), 1); + import_node_util4 = require("node:util"); + import_node_child_process2 = require("node:child_process"); + execFileAsync2 = (0, import_node_util4.promisify)(import_node_child_process2.execFile); + } +}); + +// node_modules/bundle-name/index.js +async function bundleName(bundleId) { + return runAppleScript(`tell application "Finder" to set app_path to application file id "${bundleId}" as string +tell application "System Events" to get value of property list item "CFBundleName" of property list file (app_path & ":Contents:Info.plist")`); +} +var init_bundle_name = __esm({ + "node_modules/bundle-name/index.js"() { + init_run_applescript(); + } +}); + +// node_modules/default-browser/windows.js +async function defaultBrowser(_execFileAsync = execFileAsync3) { + const { stdout } = await _execFileAsync("reg", [ + "QUERY", + " HKEY_CURRENT_USER\\Software\\Microsoft\\Windows\\Shell\\Associations\\UrlAssociations\\http\\UserChoice", + "/v", + "ProgId" + ]); + const match = /ProgId\s*REG_SZ\s*(?\S+)/.exec(stdout); + if (!match) { + throw new UnknownBrowserError(`Cannot find Windows browser in stdout: ${JSON.stringify(stdout)}`); + } + const { id } = match.groups; + const dotIndex = id.lastIndexOf("."); + const hyphenIndex = id.lastIndexOf("-"); + const baseIdByDot = dotIndex === -1 ? void 0 : id.slice(0, dotIndex); + const baseIdByHyphen = hyphenIndex === -1 ? void 0 : id.slice(0, hyphenIndex); + return windowsBrowserProgIds[id] ?? windowsBrowserProgIds[baseIdByDot] ?? windowsBrowserProgIds[baseIdByHyphen] ?? { name: id, id }; +} +var import_node_util5, import_node_child_process3, execFileAsync3, windowsBrowserProgIds, _windowsBrowserProgIdMap, UnknownBrowserError; +var init_windows = __esm({ + "node_modules/default-browser/windows.js"() { + import_node_util5 = require("node:util"); + import_node_child_process3 = require("node:child_process"); + execFileAsync3 = (0, import_node_util5.promisify)(import_node_child_process3.execFile); + windowsBrowserProgIds = { + MSEdgeHTM: { name: "Edge", id: "com.microsoft.edge" }, + // The missing `L` is correct. + MSEdgeBHTML: { name: "Edge Beta", id: "com.microsoft.edge.beta" }, + MSEdgeDHTML: { name: "Edge Dev", id: "com.microsoft.edge.dev" }, + AppXq0fevzme2pys62n3e0fbqa7peapykr8v: { name: "Edge", id: "com.microsoft.edge.old" }, + ChromeHTML: { name: "Chrome", id: "com.google.chrome" }, + ChromeBHTML: { name: "Chrome Beta", id: "com.google.chrome.beta" }, + ChromeDHTML: { name: "Chrome Dev", id: "com.google.chrome.dev" }, + ChromiumHTM: { name: "Chromium", id: "org.chromium.Chromium" }, + BraveHTML: { name: "Brave", id: "com.brave.Browser" }, + BraveBHTML: { name: "Brave Beta", id: "com.brave.Browser.beta" }, + BraveDHTML: { name: "Brave Dev", id: "com.brave.Browser.dev" }, + BraveSSHTM: { name: "Brave Nightly", id: "com.brave.Browser.nightly" }, + FirefoxURL: { name: "Firefox", id: "org.mozilla.firefox" }, + OperaStable: { name: "Opera", id: "com.operasoftware.Opera" }, + VivaldiHTM: { name: "Vivaldi", id: "com.vivaldi.Vivaldi" }, + "IE.HTTP": { name: "Internet Explorer", id: "com.microsoft.ie" } + }; + _windowsBrowserProgIdMap = new Map(Object.entries(windowsBrowserProgIds)); + UnknownBrowserError = class extends Error { + }; + } +}); + +// node_modules/default-browser/index.js +async function defaultBrowser2() { + if (import_node_process8.default.platform === "darwin") { + const id = await defaultBrowserId(); + const name5 = await bundleName(id); + return { name: name5, id }; + } + if (import_node_process8.default.platform === "linux") { + const { stdout } = await execFileAsync4("xdg-mime", ["query", "default", "x-scheme-handler/http"]); + const id = stdout.trim(); + const name5 = titleize(id.replace(/.desktop$/, "").replace("-", " ")); + return { name: name5, id }; + } + if (import_node_process8.default.platform === "win32") { + return defaultBrowser(); + } + throw new Error("Only macOS, Linux, and Windows are supported"); +} +var import_node_util6, import_node_process8, import_node_child_process4, execFileAsync4, titleize; +var init_default_browser = __esm({ + "node_modules/default-browser/index.js"() { + import_node_util6 = require("node:util"); + import_node_process8 = __toESM(require("node:process"), 1); + import_node_child_process4 = require("node:child_process"); + init_default_browser_id(); + init_bundle_name(); + init_windows(); + init_windows(); + execFileAsync4 = (0, import_node_util6.promisify)(import_node_child_process4.execFile); + titleize = (string4) => string4.toLowerCase().replaceAll(/(?:^|\s|-)\S/g, (x) => x.toUpperCase()); + } +}); + +// node_modules/@azure/identity/node_modules/open/index.js +var open_exports = {}; +__export(open_exports, { + apps: () => apps, + default: () => open_default, + openApp: () => openApp +}); +async function getWindowsDefaultBrowserFromWsl() { + const powershellPath = await powerShellPath(); + const rawCommand = String.raw`(Get-ItemProperty -Path "HKCU:\Software\Microsoft\Windows\Shell\Associations\UrlAssociations\http\UserChoice").ProgId`; + const encodedCommand = import_node_buffer.Buffer.from(rawCommand, "utf16le").toString("base64"); + const { stdout } = await execFile5( + powershellPath, + [ + "-NoProfile", + "-NonInteractive", + "-ExecutionPolicy", + "Bypass", + "-EncodedCommand", + encodedCommand + ], + { encoding: "utf8" } + ); + const progId = stdout.trim(); + const browserMap = { + ChromeHTML: "com.google.chrome", + BraveHTML: "com.brave.Browser", + MSEdgeHTM: "com.microsoft.edge", + FirefoxURL: "org.mozilla.firefox" + }; + return browserMap[progId] ? { id: browserMap[progId] } : {}; +} +function detectArchBinary(binary) { + if (typeof binary === "string" || Array.isArray(binary)) { + return binary; + } + const { [arch]: archBinary } = binary; + if (!archBinary) { + throw new Error(`${arch} is not supported`); + } + return archBinary; +} +function detectPlatformBinary({ [platform]: platformBinary }, { wsl }) { + if (wsl && is_wsl_default) { + return detectArchBinary(wsl); + } + if (!platformBinary) { + throw new Error(`${platform} is not supported`); + } + return detectArchBinary(platformBinary); +} +var import_node_process9, import_node_buffer, import_node_path, import_node_url, import_node_util7, import_node_child_process5, import_promises2, execFile5, __dirname3, localXdgOpenPath, platform, arch, pTryEach, baseOpen, open, openApp, apps, open_default; +var init_open = __esm({ + "node_modules/@azure/identity/node_modules/open/index.js"() { + import_node_process9 = __toESM(require("node:process"), 1); + import_node_buffer = require("node:buffer"); + import_node_path = __toESM(require("node:path"), 1); + import_node_url = require("node:url"); + import_node_util7 = require("node:util"); + import_node_child_process5 = __toESM(require("node:child_process"), 1); + import_promises2 = __toESM(require("node:fs/promises"), 1); + init_wsl_utils(); + init_define_lazy_prop(); + init_default_browser(); + init_is_inside_container(); + execFile5 = (0, import_node_util7.promisify)(import_node_child_process5.default.execFile); + __dirname3 = import_node_path.default.dirname((0, import_node_url.fileURLToPath)(__OPENSWARM_IMPORT_META_URL__)); + localXdgOpenPath = import_node_path.default.join(__dirname3, "xdg-open"); + ({ platform, arch } = import_node_process9.default); + pTryEach = async (array2, mapper) => { + let latestError; + for (const item of array2) { + try { + return await mapper(item); + } catch (error2) { + latestError = error2; + } + } + throw latestError; + }; + baseOpen = async (options) => { + options = { + wait: false, + background: false, + newInstance: false, + allowNonzeroExitCode: false, + ...options + }; + if (Array.isArray(options.app)) { + return pTryEach(options.app, (singleApp) => baseOpen({ + ...options, + app: singleApp + })); + } + let { name: app, arguments: appArguments = [] } = options.app ?? {}; + appArguments = [...appArguments]; + if (Array.isArray(app)) { + return pTryEach(app, (appName) => baseOpen({ + ...options, + app: { + name: appName, + arguments: appArguments + } + })); + } + if (app === "browser" || app === "browserPrivate") { + const ids = { + "com.google.chrome": "chrome", + "google-chrome.desktop": "chrome", + "com.brave.Browser": "brave", + "org.mozilla.firefox": "firefox", + "firefox.desktop": "firefox", + "com.microsoft.msedge": "edge", + "com.microsoft.edge": "edge", + "com.microsoft.edgemac": "edge", + "microsoft-edge.desktop": "edge" + }; + const flags = { + chrome: "--incognito", + brave: "--incognito", + firefox: "--private-window", + edge: "--inPrivate" + }; + const browser = is_wsl_default ? await getWindowsDefaultBrowserFromWsl() : await defaultBrowser2(); + if (browser.id in ids) { + const browserName = ids[browser.id]; + if (app === "browserPrivate") { + appArguments.push(flags[browserName]); + } + return baseOpen({ + ...options, + app: { + name: apps[browserName], + arguments: appArguments + } + }); + } + throw new Error(`${browser.name} is not supported as a default browser`); + } + let command; + const cliArguments = []; + const childProcessOptions = {}; + if (platform === "darwin") { + command = "open"; + if (options.wait) { + cliArguments.push("--wait-apps"); + } + if (options.background) { + cliArguments.push("--background"); + } + if (options.newInstance) { + cliArguments.push("--new"); + } + if (app) { + cliArguments.push("-a", app); + } + } else if (platform === "win32" || is_wsl_default && !isInsideContainer() && !app) { + command = await powerShellPath(); + cliArguments.push( + "-NoProfile", + "-NonInteractive", + "-ExecutionPolicy", + "Bypass", + "-EncodedCommand" + ); + if (!is_wsl_default) { + childProcessOptions.windowsVerbatimArguments = true; + } + const encodedArguments = ["Start"]; + if (options.wait) { + encodedArguments.push("-Wait"); + } + if (app) { + encodedArguments.push(`"\`"${app}\`""`); + if (options.target) { + appArguments.push(options.target); + } + } else if (options.target) { + encodedArguments.push(`"${options.target}"`); + } + if (appArguments.length > 0) { + appArguments = appArguments.map((argument) => `"\`"${argument}\`""`); + encodedArguments.push("-ArgumentList", appArguments.join(",")); + } + options.target = import_node_buffer.Buffer.from(encodedArguments.join(" "), "utf16le").toString("base64"); + } else { + if (app) { + command = app; + } else { + const isBundled = !__dirname3 || __dirname3 === "/"; + let exeLocalXdgOpen = false; + try { + await import_promises2.default.access(localXdgOpenPath, import_promises2.constants.X_OK); + exeLocalXdgOpen = true; + } catch { + } + const useSystemXdgOpen = import_node_process9.default.versions.electron ?? (platform === "android" || isBundled || !exeLocalXdgOpen); + command = useSystemXdgOpen ? "xdg-open" : localXdgOpenPath; + } + if (appArguments.length > 0) { + cliArguments.push(...appArguments); + } + if (!options.wait) { + childProcessOptions.stdio = "ignore"; + childProcessOptions.detached = true; + } + } + if (platform === "darwin" && appArguments.length > 0) { + cliArguments.push("--args", ...appArguments); + } + if (options.target) { + cliArguments.push(options.target); + } + const subprocess = import_node_child_process5.default.spawn(command, cliArguments, childProcessOptions); + if (options.wait) { + return new Promise((resolve, reject) => { + subprocess.once("error", reject); + subprocess.once("close", (exitCode) => { + if (!options.allowNonzeroExitCode && exitCode > 0) { + reject(new Error(`Exited with code ${exitCode}`)); + return; + } + resolve(subprocess); + }); + }); + } + subprocess.unref(); + return subprocess; + }; + open = (target, options) => { + if (typeof target !== "string") { + throw new TypeError("Expected a `target`"); + } + return baseOpen({ + ...options, + target + }); + }; + openApp = (name5, options) => { + if (typeof name5 !== "string" && !Array.isArray(name5)) { + throw new TypeError("Expected a valid `name`"); + } + const { arguments: appArguments = [] } = options ?? {}; + if (appArguments !== void 0 && appArguments !== null && !Array.isArray(appArguments)) { + throw new TypeError("Expected `appArguments` as Array type"); + } + return baseOpen({ + ...options, + app: { + name: name5, + arguments: appArguments + } + }); + }; + apps = {}; + defineLazyProperty(apps, "chrome", () => detectPlatformBinary({ + darwin: "google chrome", + win32: "chrome", + linux: ["google-chrome", "google-chrome-stable", "chromium"] + }, { + wsl: { + ia32: "/mnt/c/Program Files (x86)/Google/Chrome/Application/chrome.exe", + x64: ["/mnt/c/Program Files/Google/Chrome/Application/chrome.exe", "/mnt/c/Program Files (x86)/Google/Chrome/Application/chrome.exe"] + } + })); + defineLazyProperty(apps, "brave", () => detectPlatformBinary({ + darwin: "brave browser", + win32: "brave", + linux: ["brave-browser", "brave"] + }, { + wsl: { + ia32: "/mnt/c/Program Files (x86)/BraveSoftware/Brave-Browser/Application/brave.exe", + x64: ["/mnt/c/Program Files/BraveSoftware/Brave-Browser/Application/brave.exe", "/mnt/c/Program Files (x86)/BraveSoftware/Brave-Browser/Application/brave.exe"] + } + })); + defineLazyProperty(apps, "firefox", () => detectPlatformBinary({ + darwin: "firefox", + win32: String.raw`C:\Program Files\Mozilla Firefox\firefox.exe`, + linux: "firefox" + }, { + wsl: "/mnt/c/Program Files/Mozilla Firefox/firefox.exe" + })); + defineLazyProperty(apps, "edge", () => detectPlatformBinary({ + darwin: "microsoft edge", + win32: "msedge", + linux: ["microsoft-edge", "microsoft-edge-dev"] + }, { + wsl: "/mnt/c/Program Files (x86)/Microsoft/Edge/Application/msedge.exe" + })); + defineLazyProperty(apps, "browser", () => "browser"); + defineLazyProperty(apps, "browserPrivate", () => "browserPrivate"); + open_default = open; + } +}); + +// node_modules/@azure/identity/dist/esm/msal/nodeFlows/msalClient.js +function generateMsalConfiguration(clientId, tenantId, msalClientOptions = {}) { + const resolvedTenant = resolveTenantId(msalClientOptions.logger ?? msalLogger, tenantId, clientId); + const authority = getAuthority(resolvedTenant, getAuthorityHost(msalClientOptions)); + const httpClient = new IdentityClient({ + ...msalClientOptions.tokenCredentialOptions, + authorityHost: authority, + loggingOptions: msalClientOptions.loggingOptions + }); + const msalConfig = { + auth: { + clientId, + authority, + knownAuthorities: getKnownAuthorities(resolvedTenant, authority, msalClientOptions.disableInstanceDiscovery) + }, + system: { + networkClient: httpClient, + loggerOptions: { + loggerCallback: defaultLoggerCallback(msalClientOptions.logger ?? msalLogger), + logLevel: getMSALLogLevel(getLogLevel()), + piiLoggingEnabled: msalClientOptions.loggingOptions?.enableUnsafeSupportLogging + } + } + }; + return msalConfig; +} +function createMsalClient(clientId, tenantId, createMsalClientOptions = {}) { + const state3 = { + msalConfig: generateMsalConfiguration(clientId, tenantId, createMsalClientOptions), + cachedAccount: createMsalClientOptions.authenticationRecord ? publicToMsal(createMsalClientOptions.authenticationRecord) : null, + pluginConfiguration: msalPlugins.generatePluginConfiguration(createMsalClientOptions), + logger: createMsalClientOptions.logger ?? msalLogger + }; + const publicApps = /* @__PURE__ */ new Map(); + async function getPublicApp(options = {}) { + const appKey = options.enableCae ? "CAE" : "default"; + let publicClientApp = publicApps.get(appKey); + if (publicClientApp) { + state3.logger.getToken.info("Existing PublicClientApplication found in cache, returning it."); + return publicClientApp; + } + state3.logger.getToken.info(`Creating new PublicClientApplication with CAE ${options.enableCae ? "enabled" : "disabled"}.`); + const cachePlugin = options.enableCae ? state3.pluginConfiguration.cache.cachePluginCae : state3.pluginConfiguration.cache.cachePlugin; + state3.msalConfig.auth.clientCapabilities = options.enableCae ? ["cp1"] : void 0; + publicClientApp = new PublicClientApplication2({ + ...state3.msalConfig, + broker: { nativeBrokerPlugin: state3.pluginConfiguration.broker.nativeBrokerPlugin }, + cache: { cachePlugin: await cachePlugin } + }); + publicApps.set(appKey, publicClientApp); + return publicClientApp; + } + const confidentialApps = /* @__PURE__ */ new Map(); + async function getConfidentialApp(options = {}) { + const appKey = options.enableCae ? "CAE" : "default"; + let confidentialClientApp = confidentialApps.get(appKey); + if (confidentialClientApp) { + state3.logger.getToken.info("Existing ConfidentialClientApplication found in cache, returning it."); + return confidentialClientApp; + } + state3.logger.getToken.info(`Creating new ConfidentialClientApplication with CAE ${options.enableCae ? "enabled" : "disabled"}.`); + const cachePlugin = options.enableCae ? state3.pluginConfiguration.cache.cachePluginCae : state3.pluginConfiguration.cache.cachePlugin; + state3.msalConfig.auth.clientCapabilities = options.enableCae ? ["cp1"] : void 0; + confidentialClientApp = new ConfidentialClientApplication2({ + ...state3.msalConfig, + broker: { nativeBrokerPlugin: state3.pluginConfiguration.broker.nativeBrokerPlugin }, + cache: { cachePlugin: await cachePlugin } + }); + confidentialApps.set(appKey, confidentialClientApp); + return confidentialClientApp; + } + async function getTokenSilent(app, scopes, options = {}) { + if (state3.cachedAccount === null) { + state3.logger.getToken.info("No cached account found in local state."); + throw new AuthenticationRequiredError({ scopes }); + } + if (options.claims) { + state3.cachedClaims = options.claims; + } + const silentRequest = { + account: state3.cachedAccount, + scopes, + claims: state3.cachedClaims + }; + if (state3.pluginConfiguration.broker.isEnabled) { + silentRequest.extraQueryParameters ||= {}; + if (state3.pluginConfiguration.broker.enableMsaPassthrough) { + silentRequest.extraQueryParameters["msal_request_type"] = "consumer_passthrough"; + } + } + if (options.proofOfPossessionOptions) { + silentRequest.shrNonce = options.proofOfPossessionOptions.nonce; + silentRequest.authenticationScheme = "pop"; + silentRequest.resourceRequestMethod = options.proofOfPossessionOptions.resourceRequestMethod; + silentRequest.resourceRequestUri = options.proofOfPossessionOptions.resourceRequestUrl; + } + state3.logger.getToken.info("Attempting to acquire token silently"); + try { + return await app.acquireTokenSilent(silentRequest); + } catch (err) { + throw handleMsalError(scopes, err, options); + } + } + function calculateRequestAuthority(options) { + if (options?.tenantId) { + return getAuthority(options.tenantId, getAuthorityHost(createMsalClientOptions)); + } + return state3.msalConfig.auth.authority; + } + async function withSilentAuthentication(msalApp, scopes, options, onAuthenticationRequired) { + let response = null; + try { + response = await getTokenSilent(msalApp, scopes, options); + } catch (e) { + if (e.name !== "AuthenticationRequiredError") { + throw e; + } + if (options.disableAutomaticAuthentication) { + throw new AuthenticationRequiredError({ + scopes, + getTokenOptions: options, + message: "Automatic authentication has been disabled. You may call the authentication() method." + }); + } + } + if (response === null) { + try { + response = await onAuthenticationRequired(); + } catch (err) { + throw handleMsalError(scopes, err, options); + } + } + ensureValidMsalToken(scopes, response, options); + state3.cachedAccount = response?.account ?? null; + state3.logger.getToken.info(formatSuccess(scopes)); + return { + token: response.accessToken, + expiresOnTimestamp: response.expiresOn.getTime(), + refreshAfterTimestamp: response.refreshOn?.getTime(), + tokenType: response.tokenType + }; + } + async function getTokenByClientSecret(scopes, clientSecret, options = {}) { + state3.logger.getToken.info(`Attempting to acquire token using client secret`); + state3.msalConfig.auth.clientSecret = clientSecret; + const msalApp = await getConfidentialApp(options); + try { + const response = await msalApp.acquireTokenByClientCredential({ + scopes, + authority: calculateRequestAuthority(options), + azureRegion: calculateRegionalAuthority(), + claims: options?.claims + }); + ensureValidMsalToken(scopes, response, options); + state3.logger.getToken.info(formatSuccess(scopes)); + return { + token: response.accessToken, + expiresOnTimestamp: response.expiresOn.getTime(), + refreshAfterTimestamp: response.refreshOn?.getTime(), + tokenType: response.tokenType + }; + } catch (err) { + throw handleMsalError(scopes, err, options); + } + } + async function getTokenByClientAssertion(scopes, clientAssertion, options = {}) { + state3.logger.getToken.info(`Attempting to acquire token using client assertion`); + state3.msalConfig.auth.clientAssertion = clientAssertion; + const msalApp = await getConfidentialApp(options); + try { + const response = await msalApp.acquireTokenByClientCredential({ + scopes, + authority: calculateRequestAuthority(options), + azureRegion: calculateRegionalAuthority(), + claims: options?.claims, + clientAssertion + }); + ensureValidMsalToken(scopes, response, options); + state3.logger.getToken.info(formatSuccess(scopes)); + return { + token: response.accessToken, + expiresOnTimestamp: response.expiresOn.getTime(), + refreshAfterTimestamp: response.refreshOn?.getTime(), + tokenType: response.tokenType + }; + } catch (err) { + throw handleMsalError(scopes, err, options); + } + } + async function getTokenByClientCertificate(scopes, certificate, options = {}) { + state3.logger.getToken.info(`Attempting to acquire token using client certificate`); + state3.msalConfig.auth.clientCertificate = certificate; + const msalApp = await getConfidentialApp(options); + try { + const response = await msalApp.acquireTokenByClientCredential({ + scopes, + authority: calculateRequestAuthority(options), + azureRegion: calculateRegionalAuthority(), + claims: options?.claims + }); + ensureValidMsalToken(scopes, response, options); + state3.logger.getToken.info(formatSuccess(scopes)); + return { + token: response.accessToken, + expiresOnTimestamp: response.expiresOn.getTime(), + refreshAfterTimestamp: response.refreshOn?.getTime(), + tokenType: response.tokenType + }; + } catch (err) { + throw handleMsalError(scopes, err, options); + } + } + async function getTokenByDeviceCode(scopes, deviceCodeCallback, options = {}) { + state3.logger.getToken.info(`Attempting to acquire token using device code`); + const msalApp = await getPublicApp(options); + return withSilentAuthentication(msalApp, scopes, options, () => { + const requestOptions = { + scopes, + cancel: options?.abortSignal?.aborted ?? false, + deviceCodeCallback, + authority: calculateRequestAuthority(options), + claims: options?.claims + }; + const deviceCodeRequest = msalApp.acquireTokenByDeviceCode(requestOptions); + if (options.abortSignal) { + options.abortSignal.addEventListener("abort", () => { + requestOptions.cancel = true; + }); + } + return deviceCodeRequest; + }); + } + async function getTokenByUsernamePassword(scopes, username, password, options = {}) { + state3.logger.getToken.info(`Attempting to acquire token using username and password`); + const msalApp = await getPublicApp(options); + return withSilentAuthentication(msalApp, scopes, options, () => { + const requestOptions = { + scopes, + username, + password, + authority: calculateRequestAuthority(options), + claims: options?.claims + }; + return msalApp.acquireTokenByUsernamePassword(requestOptions); + }); + } + function getActiveAccount() { + if (!state3.cachedAccount) { + return void 0; + } + return msalToPublic(clientId, state3.cachedAccount); + } + async function getTokenByAuthorizationCode(scopes, redirectUri, authorizationCode, clientSecret, options = {}) { + state3.logger.getToken.info(`Attempting to acquire token using authorization code`); + let msalApp; + if (clientSecret) { + state3.msalConfig.auth.clientSecret = clientSecret; + msalApp = await getConfidentialApp(options); + } else { + msalApp = await getPublicApp(options); + } + return withSilentAuthentication(msalApp, scopes, options, () => { + return msalApp.acquireTokenByCode({ + scopes, + redirectUri, + code: authorizationCode, + authority: calculateRequestAuthority(options), + claims: options?.claims + }); + }); + } + async function getTokenOnBehalfOf(scopes, userAssertionToken, clientCredentials, options = {}) { + msalLogger.getToken.info(`Attempting to acquire token on behalf of another user`); + if (typeof clientCredentials === "string") { + msalLogger.getToken.info(`Using client secret for on behalf of flow`); + state3.msalConfig.auth.clientSecret = clientCredentials; + } else if (typeof clientCredentials === "function") { + msalLogger.getToken.info(`Using client assertion callback for on behalf of flow`); + state3.msalConfig.auth.clientAssertion = clientCredentials; + } else { + msalLogger.getToken.info(`Using client certificate for on behalf of flow`); + state3.msalConfig.auth.clientCertificate = clientCredentials; + } + const msalApp = await getConfidentialApp(options); + try { + const response = await msalApp.acquireTokenOnBehalfOf({ + scopes, + authority: calculateRequestAuthority(options), + claims: options.claims, + oboAssertion: userAssertionToken + }); + ensureValidMsalToken(scopes, response, options); + msalLogger.getToken.info(formatSuccess(scopes)); + return { + token: response.accessToken, + expiresOnTimestamp: response.expiresOn.getTime(), + refreshAfterTimestamp: response.refreshOn?.getTime(), + tokenType: response.tokenType + }; + } catch (err) { + throw handleMsalError(scopes, err, options); + } + } + function createBaseInteractiveRequest(scopes, options) { + return { + openBrowser: async (url2) => { + const open3 = await Promise.resolve().then(() => (init_open(), open_exports)); + await open3.default(url2, { newInstance: true }); + }, + scopes, + authority: calculateRequestAuthority(options), + claims: options?.claims, + loginHint: options?.loginHint, + errorTemplate: options?.browserCustomizationOptions?.errorMessage, + successTemplate: options?.browserCustomizationOptions?.successMessage, + prompt: options?.loginHint ? "login" : "select_account" + }; + } + async function getBrokeredTokenInternal(scopes, useDefaultBrokerAccount, options = {}) { + msalLogger.verbose("Authentication will resume through the broker"); + const app = await getPublicApp(options); + const interactiveRequest = createBaseInteractiveRequest(scopes, options); + if (state3.pluginConfiguration.broker.parentWindowHandle) { + interactiveRequest.windowHandle = Buffer.from(state3.pluginConfiguration.broker.parentWindowHandle); + } else { + msalLogger.warning("Parent window handle is not specified for the broker. This may cause unexpected behavior. Please provide the parentWindowHandle."); + } + if (state3.pluginConfiguration.broker.enableMsaPassthrough) { + (interactiveRequest.extraQueryParameters ??= {})["msal_request_type"] = "consumer_passthrough"; + } + if (useDefaultBrokerAccount) { + interactiveRequest.prompt = "none"; + msalLogger.verbose("Attempting broker authentication using the default broker account"); + } else { + msalLogger.verbose("Attempting broker authentication without the default broker account"); + } + if (options.proofOfPossessionOptions) { + interactiveRequest.shrNonce = options.proofOfPossessionOptions.nonce; + interactiveRequest.authenticationScheme = "pop"; + interactiveRequest.resourceRequestMethod = options.proofOfPossessionOptions.resourceRequestMethod; + interactiveRequest.resourceRequestUri = options.proofOfPossessionOptions.resourceRequestUrl; + } + try { + return await app.acquireTokenInteractive(interactiveRequest); + } catch (e) { + msalLogger.verbose(`Failed to authenticate through the broker: ${e.message}`); + if (options.disableAutomaticAuthentication) { + throw new AuthenticationRequiredError({ + scopes, + getTokenOptions: options, + message: "Cannot silently authenticate with default broker account." + }); + } + if (useDefaultBrokerAccount) { + return getBrokeredTokenInternal(scopes, false, options); + } else { + throw e; + } + } + } + async function getBrokeredToken(scopes, useDefaultBrokerAccount, options = {}) { + msalLogger.getToken.info(`Attempting to acquire token using brokered authentication with useDefaultBrokerAccount: ${useDefaultBrokerAccount}`); + const response = await getBrokeredTokenInternal(scopes, useDefaultBrokerAccount, options); + ensureValidMsalToken(scopes, response, options); + state3.cachedAccount = response?.account ?? null; + state3.logger.getToken.info(formatSuccess(scopes)); + return { + token: response.accessToken, + expiresOnTimestamp: response.expiresOn.getTime(), + refreshAfterTimestamp: response.refreshOn?.getTime(), + tokenType: response.tokenType + }; + } + async function getTokenByInteractiveRequest(scopes, options = {}) { + msalLogger.getToken.info(`Attempting to acquire token interactively`); + const app = await getPublicApp(options); + return withSilentAuthentication(app, scopes, options, async () => { + const interactiveRequest = createBaseInteractiveRequest(scopes, options); + if (state3.pluginConfiguration.broker.isEnabled) { + return getBrokeredTokenInternal(scopes, state3.pluginConfiguration.broker.useDefaultBrokerAccount ?? false, options); + } + if (options.proofOfPossessionOptions) { + interactiveRequest.shrNonce = options.proofOfPossessionOptions.nonce; + interactiveRequest.authenticationScheme = "pop"; + interactiveRequest.resourceRequestMethod = options.proofOfPossessionOptions.resourceRequestMethod; + interactiveRequest.resourceRequestUri = options.proofOfPossessionOptions.resourceRequestUrl; + } + return app.acquireTokenInteractive(interactiveRequest); + }); + } + return { + getActiveAccount, + getBrokeredToken, + getTokenByClientSecret, + getTokenByClientAssertion, + getTokenByClientCertificate, + getTokenByDeviceCode, + getTokenByUsernamePassword, + getTokenByAuthorizationCode, + getTokenOnBehalfOf, + getTokenByInteractiveRequest + }; +} +var msalLogger; +var init_msalClient = __esm({ + "node_modules/@azure/identity/dist/esm/msal/nodeFlows/msalClient.js"() { + init_dist(); + init_logging(); + init_msalPlugins(); + init_utils(); + init_errors(); + init_identityClient(); + init_regionalAuthority(); + init_esm(); + init_tenantIdUtils(); + msalLogger = credentialLogger("MsalClient"); + } +}); + +// node_modules/@azure/identity/dist/esm/credentials/clientCertificateCredential.js +async function parseCertificate(certificateConfiguration, sendCertificateChain) { + const certificate = certificateConfiguration.certificate; + const certificatePath = certificateConfiguration.certificatePath; + const certificateContents = certificate || await (0, import_promises3.readFile)(certificatePath, "utf8"); + const x5c = sendCertificateChain ? certificateContents : void 0; + const certificatePattern = /(-+BEGIN CERTIFICATE-+)(\n\r?|\r\n?)([A-Za-z0-9+/\n\r]+=*)(\n\r?|\r\n?)(-+END CERTIFICATE-+)/g; + const publicKeys = []; + let match; + do { + match = certificatePattern.exec(certificateContents); + if (match) { + publicKeys.push(match[3]); + } + } while (match); + if (publicKeys.length === 0) { + throw new Error("The file at the specified path does not contain a PEM-encoded certificate."); + } + const thumbprint = (0, import_node_crypto.createHash)("sha1").update(Buffer.from(publicKeys[0], "base64")).digest("hex").toUpperCase(); + const thumbprintSha256 = (0, import_node_crypto.createHash)("sha256").update(Buffer.from(publicKeys[0], "base64")).digest("hex").toUpperCase(); + return { + certificateContents, + thumbprintSha256, + thumbprint, + x5c + }; +} +var import_node_crypto, import_promises3, credentialName, logger8, ClientCertificateCredential; +var init_clientCertificateCredential = __esm({ + "node_modules/@azure/identity/dist/esm/credentials/clientCertificateCredential.js"() { + init_msalClient(); + import_node_crypto = require("node:crypto"); + init_tenantIdUtils(); + init_logging(); + import_promises3 = require("node:fs/promises"); + init_tracing(); + credentialName = "ClientCertificateCredential"; + logger8 = credentialLogger(credentialName); + ClientCertificateCredential = class { + tenantId; + additionallyAllowedTenantIds; + certificateConfiguration; + sendCertificateChain; + msalClient; + constructor(tenantId, clientId, certificatePathOrConfiguration, options = {}) { + if (!tenantId || !clientId) { + throw new Error(`${credentialName}: tenantId and clientId are required parameters.`); + } + this.tenantId = tenantId; + this.additionallyAllowedTenantIds = resolveAdditionallyAllowedTenantIds(options?.additionallyAllowedTenants); + this.sendCertificateChain = options.sendCertificateChain; + this.certificateConfiguration = { + ...typeof certificatePathOrConfiguration === "string" ? { + certificatePath: certificatePathOrConfiguration + } : certificatePathOrConfiguration + }; + const certificate = this.certificateConfiguration.certificate; + const certificatePath = this.certificateConfiguration.certificatePath; + if (!this.certificateConfiguration || !(certificate || certificatePath)) { + throw new Error(`${credentialName}: Provide either a PEM certificate in string form, or the path to that certificate in the filesystem. To troubleshoot, visit https://aka.ms/azsdk/js/identity/serviceprincipalauthentication/troubleshoot.`); + } + if (certificate && certificatePath) { + throw new Error(`${credentialName}: To avoid unexpected behaviors, providing both the contents of a PEM certificate and the path to a PEM certificate is forbidden. To troubleshoot, visit https://aka.ms/azsdk/js/identity/serviceprincipalauthentication/troubleshoot.`); + } + this.msalClient = createMsalClient(clientId, tenantId, { + ...options, + logger: logger8, + tokenCredentialOptions: options + }); + } + /** + * Authenticates with Microsoft Entra ID and returns an access token if successful. + * If authentication fails, a {@link CredentialUnavailableError} will be thrown with the details of the failure. + * + * @param scopes - The list of scopes for which the token will have access. + * @param options - The options used to configure any requests this + * TokenCredential implementation might make. + */ + async getToken(scopes, options = {}) { + return tracingClient.withSpan(`${credentialName}.getToken`, options, async (newOptions) => { + newOptions.tenantId = processMultiTenantRequest(this.tenantId, newOptions, this.additionallyAllowedTenantIds, logger8); + const arrayScopes = Array.isArray(scopes) ? scopes : [scopes]; + const certificate = await this.buildClientCertificate(); + return this.msalClient.getTokenByClientCertificate(arrayScopes, certificate, newOptions); + }); + } + async buildClientCertificate() { + const parts = await parseCertificate(this.certificateConfiguration, this.sendCertificateChain ?? false); + let privateKey; + if (this.certificateConfiguration.certificatePassword !== void 0) { + privateKey = (0, import_node_crypto.createPrivateKey)({ + key: parts.certificateContents, + passphrase: this.certificateConfiguration.certificatePassword, + format: "pem" + }).export({ + format: "pem", + type: "pkcs8" + }).toString(); + } else { + privateKey = parts.certificateContents; + } + return { + thumbprint: parts.thumbprint, + thumbprintSha256: parts.thumbprintSha256, + privateKey, + x5c: parts.x5c + }; + } + }; + } +}); + +// node_modules/@azure/identity/dist/esm/util/scopeUtils.js +function ensureScopes(scopes) { + return Array.isArray(scopes) ? scopes : [scopes]; +} +function ensureValidScopeForDevTimeCreds(scope, logger31) { + if (!scope.match(/^[0-9a-zA-Z-_.:/]+$/)) { + const error2 = new Error("Invalid scope was specified by the user or calling client"); + logger31.getToken.info(formatError(scope, error2)); + throw error2; + } +} +function getScopeResource(scope) { + return scope.replace(/\/.default$/, ""); +} +var init_scopeUtils = __esm({ + "node_modules/@azure/identity/dist/esm/util/scopeUtils.js"() { + init_logging(); + } +}); + +// node_modules/@azure/identity/dist/esm/credentials/clientSecretCredential.js +var logger9, ClientSecretCredential; +var init_clientSecretCredential = __esm({ + "node_modules/@azure/identity/dist/esm/credentials/clientSecretCredential.js"() { + init_msalClient(); + init_tenantIdUtils(); + init_errors(); + init_logging(); + init_scopeUtils(); + init_tracing(); + logger9 = credentialLogger("ClientSecretCredential"); + ClientSecretCredential = class { + tenantId; + additionallyAllowedTenantIds; + msalClient; + clientSecret; + /** + * Creates an instance of the ClientSecretCredential with the details + * needed to authenticate against Microsoft Entra ID with a client + * secret. + * + * @param tenantId - The Microsoft Entra tenant (directory) ID. + * @param clientId - The client (application) ID of an App Registration in the tenant. + * @param clientSecret - A client secret that was generated for the App Registration. + * @param options - Options for configuring the client which makes the authentication request. + */ + constructor(tenantId, clientId, clientSecret, options = {}) { + if (!tenantId) { + throw new CredentialUnavailableError("ClientSecretCredential: tenantId is a required parameter. To troubleshoot, visit https://aka.ms/azsdk/js/identity/serviceprincipalauthentication/troubleshoot."); + } + if (!clientId) { + throw new CredentialUnavailableError("ClientSecretCredential: clientId is a required parameter. To troubleshoot, visit https://aka.ms/azsdk/js/identity/serviceprincipalauthentication/troubleshoot."); + } + if (!clientSecret) { + throw new CredentialUnavailableError("ClientSecretCredential: clientSecret is a required parameter. To troubleshoot, visit https://aka.ms/azsdk/js/identity/serviceprincipalauthentication/troubleshoot."); + } + this.clientSecret = clientSecret; + this.tenantId = tenantId; + this.additionallyAllowedTenantIds = resolveAdditionallyAllowedTenantIds(options?.additionallyAllowedTenants); + this.msalClient = createMsalClient(clientId, tenantId, { + ...options, + logger: logger9, + tokenCredentialOptions: options + }); + } + /** + * Authenticates with Microsoft Entra ID and returns an access token if successful. + * If authentication fails, a {@link CredentialUnavailableError} will be thrown with the details of the failure. + * + * @param scopes - The list of scopes for which the token will have access. + * @param options - The options used to configure any requests this + * TokenCredential implementation might make. + */ + async getToken(scopes, options = {}) { + return tracingClient.withSpan(`${this.constructor.name}.getToken`, options, async (newOptions) => { + newOptions.tenantId = processMultiTenantRequest(this.tenantId, newOptions, this.additionallyAllowedTenantIds, logger9); + const arrayScopes = ensureScopes(scopes); + return this.msalClient.getTokenByClientSecret(arrayScopes, this.clientSecret, newOptions); + }); + } + }; + } +}); + +// node_modules/@azure/identity/dist/esm/credentials/usernamePasswordCredential.js +var logger10, UsernamePasswordCredential; +var init_usernamePasswordCredential = __esm({ + "node_modules/@azure/identity/dist/esm/credentials/usernamePasswordCredential.js"() { + init_msalClient(); + init_tenantIdUtils(); + init_errors(); + init_logging(); + init_scopeUtils(); + init_tracing(); + logger10 = credentialLogger("UsernamePasswordCredential"); + UsernamePasswordCredential = class { + tenantId; + additionallyAllowedTenantIds; + msalClient; + username; + password; + /** + * Creates an instance of the UsernamePasswordCredential with the details + * needed to authenticate against Microsoft Entra ID with a username + * and password. + * + * @param tenantId - The Microsoft Entra tenant (directory). + * @param clientId - The client (application) ID of an App Registration in the tenant. + * @param username - The user account's e-mail address (user name). + * @param password - The user account's account password + * @param options - Options for configuring the client which makes the authentication request. + */ + constructor(tenantId, clientId, username, password, options = {}) { + if (!tenantId) { + throw new CredentialUnavailableError("UsernamePasswordCredential: tenantId is a required parameter. To troubleshoot, visit https://aka.ms/azsdk/js/identity/usernamepasswordcredential/troubleshoot."); + } + if (!clientId) { + throw new CredentialUnavailableError("UsernamePasswordCredential: clientId is a required parameter. To troubleshoot, visit https://aka.ms/azsdk/js/identity/usernamepasswordcredential/troubleshoot."); + } + if (!username) { + throw new CredentialUnavailableError("UsernamePasswordCredential: username is a required parameter. To troubleshoot, visit https://aka.ms/azsdk/js/identity/usernamepasswordcredential/troubleshoot."); + } + if (!password) { + throw new CredentialUnavailableError("UsernamePasswordCredential: password is a required parameter. To troubleshoot, visit https://aka.ms/azsdk/js/identity/usernamepasswordcredential/troubleshoot."); + } + this.tenantId = tenantId; + this.additionallyAllowedTenantIds = resolveAdditionallyAllowedTenantIds(options?.additionallyAllowedTenants); + this.username = username; + this.password = password; + this.msalClient = createMsalClient(clientId, this.tenantId, { + ...options, + tokenCredentialOptions: options ?? {} + }); + } + /** + * Authenticates with Microsoft Entra ID and returns an access token if successful. + * If authentication fails, a {@link CredentialUnavailableError} will be thrown with the details of the failure. + * + * If the user provided the option `disableAutomaticAuthentication`, + * once the token can't be retrieved silently, + * this method won't attempt to request user interaction to retrieve the token. + * + * @param scopes - The list of scopes for which the token will have access. + * @param options - The options used to configure any requests this + * TokenCredential implementation might make. + */ + async getToken(scopes, options = {}) { + return tracingClient.withSpan(`${this.constructor.name}.getToken`, options, async (newOptions) => { + newOptions.tenantId = processMultiTenantRequest(this.tenantId, newOptions, this.additionallyAllowedTenantIds, logger10); + const arrayScopes = ensureScopes(scopes); + return this.msalClient.getTokenByUsernamePassword(arrayScopes, this.username, this.password, newOptions); + }); + } + }; + } +}); + +// node_modules/@azure/identity/dist/esm/credentials/environmentCredential.js +function getAdditionallyAllowedTenants() { + const additionallyAllowedValues = process.env.AZURE_ADDITIONALLY_ALLOWED_TENANTS ?? ""; + return additionallyAllowedValues.split(";"); +} +function getSendCertificateChain() { + const sendCertificateChain = (process.env.AZURE_CLIENT_SEND_CERTIFICATE_CHAIN ?? "").toLowerCase(); + const result = sendCertificateChain === "true" || sendCertificateChain === "1"; + logger11.verbose(`AZURE_CLIENT_SEND_CERTIFICATE_CHAIN: ${process.env.AZURE_CLIENT_SEND_CERTIFICATE_CHAIN}; sendCertificateChain: ${result}`); + return result; +} +var AllSupportedEnvironmentVariables, credentialName2, logger11, EnvironmentCredential; +var init_environmentCredential = __esm({ + "node_modules/@azure/identity/dist/esm/credentials/environmentCredential.js"() { + init_errors(); + init_logging(); + init_clientCertificateCredential(); + init_clientSecretCredential(); + init_usernamePasswordCredential(); + init_tenantIdUtils(); + init_tracing(); + AllSupportedEnvironmentVariables = [ + "AZURE_TENANT_ID", + "AZURE_CLIENT_ID", + "AZURE_CLIENT_SECRET", + "AZURE_CLIENT_CERTIFICATE_PATH", + "AZURE_CLIENT_CERTIFICATE_PASSWORD", + "AZURE_USERNAME", + "AZURE_PASSWORD", + "AZURE_ADDITIONALLY_ALLOWED_TENANTS", + "AZURE_CLIENT_SEND_CERTIFICATE_CHAIN" + ]; + credentialName2 = "EnvironmentCredential"; + logger11 = credentialLogger(credentialName2); + EnvironmentCredential = class { + _credential = void 0; + /** + * Creates an instance of the EnvironmentCredential class and decides what credential to use depending on the available environment variables. + * + * Required environment variables: + * - `AZURE_TENANT_ID`: The Microsoft Entra tenant (directory) ID. + * - `AZURE_CLIENT_ID`: The client (application) ID of an App Registration in the tenant. + * + * If setting the AZURE_TENANT_ID, then you can also set the additionally allowed tenants + * - `AZURE_ADDITIONALLY_ALLOWED_TENANTS`: For multi-tenant applications, specifies additional tenants for which the credential may acquire tokens with a single semicolon delimited string. Use * to allow all tenants. + * + * Environment variables used for client credential authentication: + * - `AZURE_CLIENT_SECRET`: A client secret that was generated for the App Registration. + * - `AZURE_CLIENT_CERTIFICATE_PATH`: The path to a PEM certificate to use during the authentication, instead of the client secret. + * - `AZURE_CLIENT_CERTIFICATE_PASSWORD`: (optional) password for the certificate file. + * - `AZURE_CLIENT_SEND_CERTIFICATE_CHAIN`: (optional) indicates that the certificate chain should be set in x5c header to support subject name / issuer based authentication. + * + * Username and password authentication is deprecated, since it doesn't support multifactor authentication (MFA). See https://aka.ms/azsdk/identity/mfa for more details. Users can still provide environment variables for this authentication method: + * - `AZURE_USERNAME`: Username to authenticate with. + * - `AZURE_PASSWORD`: Password to authenticate with. + * + * If the environment variables required to perform the authentication are missing, a {@link CredentialUnavailableError} will be thrown. + * If the authentication fails, or if there's an unknown error, an {@link AuthenticationError} will be thrown. + * + * @param options - Options for configuring the client which makes the authentication request. + */ + constructor(options) { + const assigned = processEnvVars(AllSupportedEnvironmentVariables).assigned.join(", "); + logger11.info(`Found the following environment variables: ${assigned}`); + const tenantId = process.env.AZURE_TENANT_ID, clientId = process.env.AZURE_CLIENT_ID, clientSecret = process.env.AZURE_CLIENT_SECRET; + const additionallyAllowedTenantIds = getAdditionallyAllowedTenants(); + const sendCertificateChain = getSendCertificateChain(); + const newOptions = { ...options, additionallyAllowedTenantIds, sendCertificateChain }; + if (tenantId) { + checkTenantId(logger11, tenantId); + } + if (tenantId && clientId && clientSecret) { + logger11.info(`Invoking ClientSecretCredential with tenant ID: ${tenantId}, clientId: ${clientId} and clientSecret: [REDACTED]`); + this._credential = new ClientSecretCredential(tenantId, clientId, clientSecret, newOptions); + return; + } + const certificatePath = process.env.AZURE_CLIENT_CERTIFICATE_PATH; + const certificatePassword = process.env.AZURE_CLIENT_CERTIFICATE_PASSWORD; + if (tenantId && clientId && certificatePath) { + logger11.info(`Invoking ClientCertificateCredential with tenant ID: ${tenantId}, clientId: ${clientId} and certificatePath: ${certificatePath}`); + this._credential = new ClientCertificateCredential(tenantId, clientId, { certificatePath, certificatePassword }, newOptions); + return; + } + const username = process.env.AZURE_USERNAME; + const password = process.env.AZURE_PASSWORD; + if (tenantId && clientId && username && password) { + logger11.info(`Invoking UsernamePasswordCredential with tenant ID: ${tenantId}, clientId: ${clientId} and username: ${username}`); + logger11.warning("Environment is configured to use username and password authentication. This authentication method is deprecated, as it doesn't support multifactor authentication (MFA). Use a more secure credential. For more details, see https://aka.ms/azsdk/identity/mfa."); + this._credential = new UsernamePasswordCredential(tenantId, clientId, username, password, newOptions); + } + } + /** + * Authenticates with Microsoft Entra ID and returns an access token if successful. + * + * @param scopes - The list of scopes for which the token will have access. + * @param options - Optional parameters. See {@link GetTokenOptions}. + */ + async getToken(scopes, options = {}) { + return tracingClient.withSpan(`${credentialName2}.getToken`, options, async (newOptions) => { + if (this._credential) { + try { + const result = await this._credential.getToken(scopes, newOptions); + logger11.getToken.info(formatSuccess(scopes)); + return result; + } catch (err) { + const authenticationError = new AuthenticationError(400, { + error: `${credentialName2} authentication failed. To troubleshoot, visit https://aka.ms/azsdk/js/identity/environmentcredential/troubleshoot.`, + error_description: err.message.toString().split("More details:").join("") + }); + logger11.getToken.info(formatError(scopes, authenticationError)); + throw authenticationError; + } + } + throw new CredentialUnavailableError(`${credentialName2} is unavailable. No underlying credential could be used. To troubleshoot, visit https://aka.ms/azsdk/js/identity/environmentcredential/troubleshoot.`); + }); + } + }; + } +}); + +// node_modules/@azure/identity/dist/esm/credentials/managedIdentityCredential/imdsRetryPolicy.js +function imdsRetryPolicy(msiRetryConfig) { + return retryPolicy2([ + { + name: "imdsRetryPolicy", + retry: ({ retryCount, response }) => { + if (response?.status !== 404 && response?.status !== 410) { + return { skipStrategy: true }; + } + const initialDelayMs = response?.status === 410 ? Math.max(MIN_DELAY_FOR_410_MS, msiRetryConfig.startDelayInMs) : msiRetryConfig.startDelayInMs; + return calculateRetryDelay2(retryCount, { + retryDelayInMs: initialDelayMs, + maxRetryDelayInMs: DEFAULT_CLIENT_MAX_RETRY_INTERVAL2 + }); + } + } + ], { + maxRetries: msiRetryConfig.maxRetries + }); +} +var DEFAULT_CLIENT_MAX_RETRY_INTERVAL2, MIN_DELAY_FOR_410_MS; +var init_imdsRetryPolicy = __esm({ + "node_modules/@azure/identity/dist/esm/credentials/managedIdentityCredential/imdsRetryPolicy.js"() { + init_esm6(); + init_esm4(); + DEFAULT_CLIENT_MAX_RETRY_INTERVAL2 = 1e3 * 64; + MIN_DELAY_FOR_410_MS = 3e3; + } +}); + +// node_modules/@azure/identity/dist/esm/credentials/managedIdentityCredential/imdsMsi.js +function prepareInvalidRequestOptions(scopes) { + const resource = mapScopesToResource(scopes); + if (!resource) { + throw new Error(`${msiName}: Multiple scopes are not supported.`); + } + const url2 = new URL(imdsEndpointPath, process.env.AZURE_POD_IDENTITY_AUTHORITY_HOST ?? imdsHost); + const rawHeaders = { + Accept: "application/json" + // intentionally leave out the Metadata header to invoke an error from IMDS endpoint. + }; + return { + // intentionally not including any query + url: `${url2}`, + method: "GET", + headers: createHttpHeaders2(rawHeaders) + }; +} +var msiName, logger12, imdsHost, imdsEndpointPath, imdsMsi; +var init_imdsMsi = __esm({ + "node_modules/@azure/identity/dist/esm/credentials/managedIdentityCredential/imdsMsi.js"() { + init_esm6(); + init_esm4(); + init_logging(); + init_utils3(); + init_tracing(); + msiName = "ManagedIdentityCredential - IMDS"; + logger12 = credentialLogger(msiName); + imdsHost = "http://169.254.169.254"; + imdsEndpointPath = "/metadata/identity/oauth2/token"; + imdsMsi = { + name: "imdsMsi", + async isAvailable(options) { + const { scopes, identityClient, getTokenOptions } = options; + const resource = mapScopesToResource(scopes); + if (!resource) { + logger12.info(`${msiName}: Unavailable. Multiple scopes are not supported.`); + return false; + } + if (process.env.AZURE_POD_IDENTITY_AUTHORITY_HOST) { + return true; + } + if (!identityClient) { + throw new Error("Missing IdentityClient"); + } + const requestOptions = prepareInvalidRequestOptions(resource); + return tracingClient.withSpan("ManagedIdentityCredential-pingImdsEndpoint", getTokenOptions ?? {}, async (updatedOptions) => { + requestOptions.tracingOptions = updatedOptions.tracingOptions; + const request = createPipelineRequest2(requestOptions); + request.timeout = updatedOptions.requestOptions?.timeout || 1e3; + request.allowInsecureConnection = true; + let response; + try { + logger12.info(`${msiName}: Pinging the Azure IMDS endpoint`); + response = await identityClient.sendRequest(request); + } catch (err) { + if (isError2(err)) { + logger12.verbose(`${msiName}: Caught error ${err.name}: ${err.message}`); + } + logger12.info(`${msiName}: The Azure IMDS endpoint is unavailable`); + return false; + } + if (response.status === 403) { + if (response.bodyAsText?.includes("unreachable")) { + logger12.info(`${msiName}: The Azure IMDS endpoint is unavailable`); + logger12.info(`${msiName}: ${response.bodyAsText}`); + return false; + } + } + logger12.info(`${msiName}: The Azure IMDS endpoint is available`); + return true; + }); + } + }; + } +}); + +// node_modules/@azure/identity/dist/esm/credentials/clientAssertionCredential.js +var logger13, ClientAssertionCredential; +var init_clientAssertionCredential = __esm({ + "node_modules/@azure/identity/dist/esm/credentials/clientAssertionCredential.js"() { + init_msalClient(); + init_tenantIdUtils(); + init_errors(); + init_logging(); + init_tracing(); + logger13 = credentialLogger("ClientAssertionCredential"); + ClientAssertionCredential = class { + msalClient; + tenantId; + additionallyAllowedTenantIds; + getAssertion; + options; + /** + * Creates an instance of the ClientAssertionCredential with the details + * needed to authenticate against Microsoft Entra ID with a client + * assertion provided by the developer through the `getAssertion` function parameter. + * + * @param tenantId - The Microsoft Entra tenant (directory) ID. + * @param clientId - The client (application) ID of an App Registration in the tenant. + * @param getAssertion - A function that retrieves the assertion for the credential to use. + * @param options - Options for configuring the client which makes the authentication request. + */ + constructor(tenantId, clientId, getAssertion, options = {}) { + if (!tenantId) { + throw new CredentialUnavailableError("ClientAssertionCredential: tenantId is a required parameter."); + } + if (!clientId) { + throw new CredentialUnavailableError("ClientAssertionCredential: clientId is a required parameter."); + } + if (!getAssertion) { + throw new CredentialUnavailableError("ClientAssertionCredential: clientAssertion is a required parameter."); + } + this.tenantId = tenantId; + this.additionallyAllowedTenantIds = resolveAdditionallyAllowedTenantIds(options?.additionallyAllowedTenants); + this.options = options; + this.getAssertion = getAssertion; + this.msalClient = createMsalClient(clientId, tenantId, { + ...options, + logger: logger13, + tokenCredentialOptions: this.options + }); + } + /** + * Authenticates with Microsoft Entra ID and returns an access token if successful. + * If authentication fails, a {@link CredentialUnavailableError} will be thrown with the details of the failure. + * + * @param scopes - The list of scopes for which the token will have access. + * @param options - The options used to configure any requests this + * TokenCredential implementation might make. + */ + async getToken(scopes, options = {}) { + return tracingClient.withSpan(`${this.constructor.name}.getToken`, options, async (newOptions) => { + newOptions.tenantId = processMultiTenantRequest(this.tenantId, newOptions, this.additionallyAllowedTenantIds, logger13); + const arrayScopes = Array.isArray(scopes) ? scopes : [scopes]; + return this.msalClient.getTokenByClientAssertion(arrayScopes, this.getAssertion, newOptions); + }); + } + }; + } +}); + +// node_modules/@azure/identity/dist/esm/credentials/workloadIdentityCredential.js +var import_promises4, credentialName3, SupportedWorkloadEnvironmentVariables, logger14, WorkloadIdentityCredential; +var init_workloadIdentityCredential = __esm({ + "node_modules/@azure/identity/dist/esm/credentials/workloadIdentityCredential.js"() { + init_logging(); + init_clientAssertionCredential(); + init_errors(); + init_tenantIdUtils(); + import_promises4 = require("node:fs/promises"); + credentialName3 = "WorkloadIdentityCredential"; + SupportedWorkloadEnvironmentVariables = [ + "AZURE_TENANT_ID", + "AZURE_CLIENT_ID", + "AZURE_FEDERATED_TOKEN_FILE" + ]; + logger14 = credentialLogger(credentialName3); + WorkloadIdentityCredential = class { + client; + azureFederatedTokenFileContent = void 0; + cacheDate = void 0; + federatedTokenFilePath; + /** + * WorkloadIdentityCredential supports Microsoft Entra Workload ID on Kubernetes. + * + * @param options - The identity client options to use for authentication. + */ + constructor(options) { + const assignedEnv = processEnvVars(SupportedWorkloadEnvironmentVariables).assigned.join(", "); + logger14.info(`Found the following environment variables: ${assignedEnv}`); + const workloadIdentityCredentialOptions = options ?? {}; + const tenantId = workloadIdentityCredentialOptions.tenantId || process.env.AZURE_TENANT_ID; + const clientId = workloadIdentityCredentialOptions.clientId || process.env.AZURE_CLIENT_ID; + this.federatedTokenFilePath = workloadIdentityCredentialOptions.tokenFilePath || process.env.AZURE_FEDERATED_TOKEN_FILE; + if (tenantId) { + checkTenantId(logger14, tenantId); + } + if (!clientId) { + throw new CredentialUnavailableError(`${credentialName3}: is unavailable. clientId is a required parameter. In DefaultAzureCredential and ManagedIdentityCredential, this can be provided as an environment variable - "AZURE_CLIENT_ID". + See the troubleshooting guide for more information: https://aka.ms/azsdk/js/identity/workloadidentitycredential/troubleshoot`); + } + if (!tenantId) { + throw new CredentialUnavailableError(`${credentialName3}: is unavailable. tenantId is a required parameter. In DefaultAzureCredential and ManagedIdentityCredential, this can be provided as an environment variable - "AZURE_TENANT_ID". + See the troubleshooting guide for more information: https://aka.ms/azsdk/js/identity/workloadidentitycredential/troubleshoot`); + } + if (!this.federatedTokenFilePath) { + throw new CredentialUnavailableError(`${credentialName3}: is unavailable. federatedTokenFilePath is a required parameter. In DefaultAzureCredential and ManagedIdentityCredential, this can be provided as an environment variable - "AZURE_FEDERATED_TOKEN_FILE". + See the troubleshooting guide for more information: https://aka.ms/azsdk/js/identity/workloadidentitycredential/troubleshoot`); + } + logger14.info(`Invoking ClientAssertionCredential with tenant ID: ${tenantId}, clientId: ${workloadIdentityCredentialOptions.clientId} and federated token path: [REDACTED]`); + this.client = new ClientAssertionCredential(tenantId, clientId, this.readFileContents.bind(this), options); + } + /** + * Authenticates with Microsoft Entra ID and returns an access token if successful. + * If authentication fails, a {@link CredentialUnavailableError} will be thrown with the details of the failure. + * + * @param scopes - The list of scopes for which the token will have access. + * @param options - The options used to configure any requests this + * TokenCredential implementation might make. + */ + async getToken(scopes, options) { + if (!this.client) { + const errorMessage = `${credentialName3}: is unavailable. tenantId, clientId, and federatedTokenFilePath are required parameters. + In DefaultAzureCredential and ManagedIdentityCredential, these can be provided as environment variables - + "AZURE_TENANT_ID", + "AZURE_CLIENT_ID", + "AZURE_FEDERATED_TOKEN_FILE". See the troubleshooting guide for more information: https://aka.ms/azsdk/js/identity/workloadidentitycredential/troubleshoot`; + logger14.info(errorMessage); + throw new CredentialUnavailableError(errorMessage); + } + logger14.info("Invoking getToken() of Client Assertion Credential"); + return this.client.getToken(scopes, options); + } + async readFileContents() { + if (this.cacheDate !== void 0 && Date.now() - this.cacheDate >= 1e3 * 60 * 5) { + this.azureFederatedTokenFileContent = void 0; + } + if (!this.federatedTokenFilePath) { + throw new CredentialUnavailableError(`${credentialName3}: is unavailable. Invalid file path provided ${this.federatedTokenFilePath}.`); + } + if (!this.azureFederatedTokenFileContent) { + const file = await (0, import_promises4.readFile)(this.federatedTokenFilePath, "utf8"); + const value = file.trim(); + if (!value) { + throw new CredentialUnavailableError(`${credentialName3}: is unavailable. No content on the file ${this.federatedTokenFilePath}.`); + } else { + this.azureFederatedTokenFileContent = value; + this.cacheDate = Date.now(); + } + } + return this.azureFederatedTokenFileContent; + } + }; + } +}); + +// node_modules/@azure/identity/dist/esm/credentials/managedIdentityCredential/tokenExchangeMsi.js +var msiName2, logger15, tokenExchangeMsi; +var init_tokenExchangeMsi = __esm({ + "node_modules/@azure/identity/dist/esm/credentials/managedIdentityCredential/tokenExchangeMsi.js"() { + init_workloadIdentityCredential(); + init_logging(); + msiName2 = "ManagedIdentityCredential - Token Exchange"; + logger15 = credentialLogger(msiName2); + tokenExchangeMsi = { + name: "tokenExchangeMsi", + async isAvailable(clientId) { + const env = process.env; + const result = Boolean((clientId || env.AZURE_CLIENT_ID) && env.AZURE_TENANT_ID && process.env.AZURE_FEDERATED_TOKEN_FILE); + if (!result) { + logger15.info(`${msiName2}: Unavailable. The environment variables needed are: AZURE_CLIENT_ID (or the client ID sent through the parameters), AZURE_TENANT_ID and AZURE_FEDERATED_TOKEN_FILE`); + } + return result; + }, + async getToken(configuration, getTokenOptions = {}) { + const { scopes, clientId } = configuration; + const identityClientTokenCredentialOptions = {}; + const workloadIdentityCredential = new WorkloadIdentityCredential({ + clientId, + tenantId: process.env.AZURE_TENANT_ID, + tokenFilePath: process.env.AZURE_FEDERATED_TOKEN_FILE, + ...identityClientTokenCredentialOptions, + disableInstanceDiscovery: true + }); + return workloadIdentityCredential.getToken(scopes, getTokenOptions); + } + }; + } +}); + +// node_modules/@azure/identity/dist/esm/credentials/managedIdentityCredential/index.js +function isNetworkError(err) { + if (err.errorCode === "network_error") { + return true; + } + if (err.code === "ENETUNREACH" || err.code === "EHOSTUNREACH") { + return true; + } + if (err.statusCode === 403 || err.code === 403) { + if (err.message.includes("unreachable")) { + return true; + } + } + return false; +} +var logger16, ManagedIdentityCredential; +var init_managedIdentityCredential = __esm({ + "node_modules/@azure/identity/dist/esm/credentials/managedIdentityCredential/index.js"() { + init_esm(); + init_dist(); + init_identityClient(); + init_errors(); + init_utils(); + init_imdsRetryPolicy(); + init_logging(); + init_tracing(); + init_imdsMsi(); + init_tokenExchangeMsi(); + init_utils3(); + logger16 = credentialLogger("ManagedIdentityCredential"); + ManagedIdentityCredential = class { + managedIdentityApp; + identityClient; + clientId; + resourceId; + objectId; + msiRetryConfig = { + maxRetries: 5, + startDelayInMs: 800, + intervalIncrement: 2 + }; + isAvailableIdentityClient; + sendProbeRequest; + /** + * @internal + * @hidden + */ + constructor(clientIdOrOptions, options) { + let _options; + if (typeof clientIdOrOptions === "string") { + this.clientId = clientIdOrOptions; + _options = options ?? {}; + } else { + this.clientId = clientIdOrOptions?.clientId; + _options = clientIdOrOptions ?? {}; + } + this.resourceId = _options?.resourceId; + this.objectId = _options?.objectId; + this.sendProbeRequest = _options?.sendProbeRequest ?? false; + const providedIds = [ + { key: "clientId", value: this.clientId }, + { key: "resourceId", value: this.resourceId }, + { key: "objectId", value: this.objectId } + ].filter((id) => id.value); + if (providedIds.length > 1) { + throw new Error(`ManagedIdentityCredential: only one of 'clientId', 'resourceId', or 'objectId' can be provided. Received values: ${JSON.stringify({ clientId: this.clientId, resourceId: this.resourceId, objectId: this.objectId })}`); + } + _options.allowInsecureConnection = true; + if (_options.retryOptions?.maxRetries !== void 0) { + this.msiRetryConfig.maxRetries = _options.retryOptions.maxRetries; + } + this.identityClient = new IdentityClient({ + ..._options, + additionalPolicies: [{ policy: imdsRetryPolicy(this.msiRetryConfig), position: "perCall" }] + }); + this.managedIdentityApp = new ManagedIdentityApplication2({ + managedIdentityIdParams: { + userAssignedClientId: this.clientId, + userAssignedResourceId: this.resourceId, + userAssignedObjectId: this.objectId + }, + system: { + disableInternalRetries: true, + networkClient: this.identityClient, + loggerOptions: { + logLevel: getMSALLogLevel(getLogLevel()), + piiLoggingEnabled: _options.loggingOptions?.enableUnsafeSupportLogging, + loggerCallback: defaultLoggerCallback(logger16) + } + } + }); + this.isAvailableIdentityClient = new IdentityClient({ + ..._options, + retryOptions: { + maxRetries: 0 + } + }); + const managedIdentitySource = this.managedIdentityApp.getManagedIdentitySource(); + if (managedIdentitySource === "CloudShell") { + if (this.clientId || this.resourceId || this.objectId) { + logger16.warning(`CloudShell MSI detected with user-provided IDs - throwing. Received values: ${JSON.stringify({ + clientId: this.clientId, + resourceId: this.resourceId, + objectId: this.objectId + })}.`); + throw new CredentialUnavailableError("ManagedIdentityCredential: Specifying a user-assigned managed identity is not supported for CloudShell at runtime. When using Managed Identity in CloudShell, omit the clientId, resourceId, and objectId parameters."); + } + } + if (managedIdentitySource === "ServiceFabric") { + if (this.clientId || this.resourceId || this.objectId) { + logger16.warning(`Service Fabric detected with user-provided IDs - throwing. Received values: ${JSON.stringify({ + clientId: this.clientId, + resourceId: this.resourceId, + objectId: this.objectId + })}.`); + throw new CredentialUnavailableError(`ManagedIdentityCredential: ${serviceFabricErrorMessage}`); + } + } + logger16.info(`Using ${managedIdentitySource} managed identity.`); + if (providedIds.length === 1) { + const { key, value } = providedIds[0]; + logger16.info(`${managedIdentitySource} with ${key}: ${value}`); + } + } + /** + * Authenticates with Microsoft Entra ID and returns an access token if successful. + * If authentication fails, a {@link CredentialUnavailableError} will be thrown with the details of the failure. + * If an unexpected error occurs, an {@link AuthenticationError} will be thrown with the details of the failure. + * + * @param scopes - The list of scopes for which the token will have access. + * @param options - The options used to configure any requests this + * TokenCredential implementation might make. + */ + async getToken(scopes, options = {}) { + logger16.getToken.info("Using the MSAL provider for Managed Identity."); + const resource = mapScopesToResource(scopes); + if (!resource) { + throw new CredentialUnavailableError(`ManagedIdentityCredential: Multiple scopes are not supported. Scopes: ${JSON.stringify(scopes)}`); + } + return tracingClient.withSpan("ManagedIdentityCredential.getToken", options, async () => { + try { + const isTokenExchangeMsi = await tokenExchangeMsi.isAvailable(this.clientId); + const identitySource = this.managedIdentityApp.getManagedIdentitySource(); + const isImdsMsi = identitySource === "DefaultToImds" || identitySource === "Imds"; + logger16.getToken.info(`MSAL Identity source: ${identitySource}`); + if (isTokenExchangeMsi) { + logger16.getToken.info("Using the token exchange managed identity."); + const result = await tokenExchangeMsi.getToken({ + scopes, + clientId: this.clientId, + identityClient: this.identityClient, + retryConfig: this.msiRetryConfig, + resourceId: this.resourceId + }); + if (result === null) { + throw new CredentialUnavailableError("Attempted to use the token exchange managed identity, but received a null response."); + } + return result; + } else if (isImdsMsi && this.sendProbeRequest) { + logger16.getToken.info("Using the IMDS endpoint to probe for availability."); + const isAvailable = await imdsMsi.isAvailable({ + scopes, + clientId: this.clientId, + getTokenOptions: options, + identityClient: this.isAvailableIdentityClient, + resourceId: this.resourceId + }); + if (!isAvailable) { + throw new CredentialUnavailableError(`Attempted to use the IMDS endpoint, but it is not available.`); + } + } + logger16.getToken.info("Calling into MSAL for managed identity token."); + const token = await this.managedIdentityApp.acquireToken({ + resource + }); + this.ensureValidMsalToken(scopes, token, options); + logger16.getToken.info(formatSuccess(scopes)); + return { + expiresOnTimestamp: token.expiresOn.getTime(), + token: token.accessToken, + refreshAfterTimestamp: token.refreshOn?.getTime(), + tokenType: "Bearer" + }; + } catch (err) { + logger16.getToken.error(formatError(scopes, err)); + if (err.name === "AuthenticationRequiredError") { + throw err; + } + if (isNetworkError(err)) { + throw new CredentialUnavailableError(`ManagedIdentityCredential: Network unreachable. Message: ${err.message}`, { cause: err }); + } + throw new CredentialUnavailableError(`ManagedIdentityCredential: Authentication failed. Message ${err.message}`, { cause: err }); + } + }); + } + /** + * Ensures the validity of the MSAL token + */ + ensureValidMsalToken(scopes, msalToken, getTokenOptions) { + const createError = (message) => { + logger16.getToken.info(message); + return new AuthenticationRequiredError({ + scopes: Array.isArray(scopes) ? scopes : [scopes], + getTokenOptions, + message + }); + }; + if (!msalToken) { + throw createError("No response."); + } + if (!msalToken.expiresOn) { + throw createError(`Response had no "expiresOn" property.`); + } + if (!msalToken.accessToken) { + throw createError(`Response had no "accessToken" property.`); + } + } + }; + } +}); + +// node_modules/@azure/identity/dist/esm/credentials/azureDeveloperCliCredential.js +var import_child_process, logger17, azureDeveloperCliPublicErrorMessages, developerCliCredentialInternals, AzureDeveloperCliCredential; +var init_azureDeveloperCliCredential = __esm({ + "node_modules/@azure/identity/dist/esm/credentials/azureDeveloperCliCredential.js"() { + init_logging(); + init_errors(); + import_child_process = __toESM(require("child_process"), 1); + init_tenantIdUtils(); + init_tracing(); + init_scopeUtils(); + logger17 = credentialLogger("AzureDeveloperCliCredential"); + azureDeveloperCliPublicErrorMessages = { + notInstalled: "Azure Developer CLI couldn't be found. To mitigate this issue, see the troubleshooting guidelines at https://aka.ms/azsdk/js/identity/azdevclicredential/troubleshoot.", + login: "Please run 'azd auth login' from a command prompt to authenticate before using this credential. For more information, see the troubleshooting guidelines at https://aka.ms/azsdk/js/identity/azdevclicredential/troubleshoot.", + unknown: "Unknown error while trying to retrieve the access token", + claim: "This credential doesn't support claims challenges. To authenticate with the required claims, please run the following command:" + }; + developerCliCredentialInternals = { + /** + * @internal + */ + getSafeWorkingDir() { + if (process.platform === "win32") { + let systemRoot = process.env.SystemRoot || process.env["SYSTEMROOT"]; + if (!systemRoot) { + logger17.getToken.warning("The SystemRoot environment variable is not set. This may cause issues when using the Azure Developer CLI credential."); + systemRoot = "C:\\Windows"; + } + return systemRoot; + } else { + return "/bin"; + } + }, + /** + * Gets the access token from Azure Developer CLI + * @param scopes - The scopes to use when getting the token + * @internal + */ + async getAzdAccessToken(scopes, tenantId, timeout, claims) { + let tenantSection = []; + if (tenantId) { + tenantSection = ["--tenant-id", tenantId]; + } + let claimsSections = []; + if (claims) { + const encodedClaims = btoa(claims); + claimsSections = ["--claims", encodedClaims]; + } + return new Promise((resolve, reject) => { + try { + const args = [ + "auth", + "token", + "--output", + "json", + "--no-prompt", + ...scopes.reduce((previous, current) => previous.concat("--scope", current), []), + ...tenantSection, + ...claimsSections + ]; + const command = ["azd", ...args].join(" "); + import_child_process.default.exec(command, { + cwd: developerCliCredentialInternals.getSafeWorkingDir(), + timeout + }, (error2, stdout, stderr) => { + resolve({ stdout, stderr, error: error2 }); + }); + } catch (err) { + reject(err); + } + }); + } + }; + AzureDeveloperCliCredential = class { + tenantId; + additionallyAllowedTenantIds; + timeout; + /** + * Creates an instance of the {@link AzureDeveloperCliCredential}. + * + * To use this credential, ensure that you have already logged + * in via the 'azd' tool using the command "azd auth login" from the commandline. + * + * @param options - Options, to optionally allow multi-tenant requests. + */ + constructor(options) { + if (options?.tenantId) { + checkTenantId(logger17, options?.tenantId); + this.tenantId = options?.tenantId; + } + this.additionallyAllowedTenantIds = resolveAdditionallyAllowedTenantIds(options?.additionallyAllowedTenants); + this.timeout = options?.processTimeoutInMs; + } + /** + * Authenticates with Microsoft Entra ID and returns an access token if successful. + * If authentication fails, a {@link CredentialUnavailableError} will be thrown with the details of the failure. + * + * @param scopes - The list of scopes for which the token will have access. + * @param options - The options used to configure any requests this + * TokenCredential implementation might make. + */ + async getToken(scopes, options = {}) { + const tenantId = processMultiTenantRequest(this.tenantId, options, this.additionallyAllowedTenantIds); + if (tenantId) { + checkTenantId(logger17, tenantId); + } + let scopeList; + if (typeof scopes === "string") { + scopeList = [scopes]; + } else { + scopeList = scopes; + } + logger17.getToken.info(`Using the scopes ${scopes}`); + return tracingClient.withSpan(`${this.constructor.name}.getToken`, options, async () => { + try { + scopeList.forEach((scope) => { + ensureValidScopeForDevTimeCreds(scope, logger17); + }); + const obj = await developerCliCredentialInternals.getAzdAccessToken(scopeList, tenantId, this.timeout, options.claims); + const isMFARequiredError = obj.stderr?.match("must use multi-factor authentication") || obj.stderr?.match("reauthentication required"); + const isNotLoggedInError = obj.stderr?.match("not logged in, run `azd login` to login") || obj.stderr?.match("not logged in, run `azd auth login` to login"); + const isNotInstallError = obj.stderr?.match("azd:(.*)not found") || obj.stderr?.startsWith("'azd' is not recognized"); + if (isNotInstallError || obj.error && obj.error.code === "ENOENT") { + const error2 = new CredentialUnavailableError(azureDeveloperCliPublicErrorMessages.notInstalled); + logger17.getToken.info(formatError(scopes, error2)); + throw error2; + } + if (isNotLoggedInError) { + const error2 = new CredentialUnavailableError(azureDeveloperCliPublicErrorMessages.login); + logger17.getToken.info(formatError(scopes, error2)); + throw error2; + } + if (isMFARequiredError) { + const scope = scopeList.reduce((previous, current) => previous.concat("--scope", current), []).join(" "); + const loginCmd = `azd auth login ${scope}`; + const error2 = new CredentialUnavailableError(`${azureDeveloperCliPublicErrorMessages.claim} ${loginCmd}`); + logger17.getToken.info(formatError(scopes, error2)); + throw error2; + } + try { + const resp = JSON.parse(obj.stdout); + logger17.getToken.info(formatSuccess(scopes)); + return { + token: resp.token, + expiresOnTimestamp: new Date(resp.expiresOn).getTime(), + tokenType: "Bearer" + }; + } catch (e) { + if (obj.stderr) { + throw new CredentialUnavailableError(obj.stderr); + } + throw e; + } + } catch (err) { + const error2 = err.name === "CredentialUnavailableError" ? err : new CredentialUnavailableError(err.message || azureDeveloperCliPublicErrorMessages.unknown); + logger17.getToken.info(formatError(scopes, error2)); + throw error2; + } + }); + } + }; + } +}); + +// node_modules/@azure/identity/dist/esm/util/subscriptionUtils.js +function checkSubscription(logger31, subscription) { + if (!subscription.match(/^[0-9a-zA-Z-._ ]+$/)) { + const error2 = new Error(`Subscription '${subscription}' contains invalid characters. If this is the name of a subscription, use its ID instead. You can locate your subscription by following the instructions listed here: https://learn.microsoft.com/azure/azure-portal/get-subscription-tenant-id`); + logger31.info(formatError("", error2)); + throw error2; + } +} +var init_subscriptionUtils = __esm({ + "node_modules/@azure/identity/dist/esm/util/subscriptionUtils.js"() { + init_logging(); + } +}); + +// node_modules/@azure/identity/dist/esm/credentials/azureCliCredential.js +var import_child_process2, logger18, azureCliPublicErrorMessages, cliCredentialInternals, AzureCliCredential; +var init_azureCliCredential = __esm({ + "node_modules/@azure/identity/dist/esm/credentials/azureCliCredential.js"() { + init_tenantIdUtils(); + init_logging(); + init_scopeUtils(); + init_errors(); + import_child_process2 = __toESM(require("child_process"), 1); + init_tracing(); + init_subscriptionUtils(); + logger18 = credentialLogger("AzureCliCredential"); + azureCliPublicErrorMessages = { + claim: "This credential doesn't support claims challenges. To authenticate with the required claims, please run the following command:", + notInstalled: "Azure CLI could not be found. Please visit https://aka.ms/azure-cli for installation instructions and then, once installed, authenticate to your Azure account using 'az login'.", + login: "Please run 'az login' from a command prompt to authenticate before using this credential.", + unknown: "Unknown error while trying to retrieve the access token", + unexpectedResponse: 'Unexpected response from Azure CLI when getting token. Expected "expiresOn" to be a RFC3339 date string. Got:' + }; + cliCredentialInternals = { + /** + * @internal + */ + getSafeWorkingDir() { + if (process.platform === "win32") { + let systemRoot = process.env.SystemRoot || process.env["SYSTEMROOT"]; + if (!systemRoot) { + logger18.getToken.warning("The SystemRoot environment variable is not set. This may cause issues when using the Azure CLI credential."); + systemRoot = "C:\\Windows"; + } + return systemRoot; + } else { + return "/bin"; + } + }, + /** + * Gets the access token from Azure CLI + * @param resource - The resource to use when getting the token + * @internal + */ + async getAzureCliAccessToken(resource, tenantId, subscription, timeout) { + let tenantSection = []; + let subscriptionSection = []; + if (tenantId) { + tenantSection = ["--tenant", tenantId]; + } + if (subscription) { + subscriptionSection = ["--subscription", `"${subscription}"`]; + } + return new Promise((resolve, reject) => { + try { + const args = [ + "account", + "get-access-token", + "--output", + "json", + "--resource", + resource, + ...tenantSection, + ...subscriptionSection + ]; + const command = ["az", ...args].join(" "); + import_child_process2.default.exec(command, { cwd: cliCredentialInternals.getSafeWorkingDir(), timeout }, (error2, stdout, stderr) => { + resolve({ stdout, stderr, error: error2 }); + }); + } catch (err) { + reject(err); + } + }); + } + }; + AzureCliCredential = class { + tenantId; + additionallyAllowedTenantIds; + timeout; + subscription; + /** + * Creates an instance of the {@link AzureCliCredential}. + * + * To use this credential, ensure that you have already logged + * in via the 'az' tool using the command "az login" from the commandline. + * + * @param options - Options, to optionally allow multi-tenant requests. + */ + constructor(options) { + if (options?.tenantId) { + checkTenantId(logger18, options?.tenantId); + this.tenantId = options?.tenantId; + } + if (options?.subscription) { + checkSubscription(logger18, options?.subscription); + this.subscription = options?.subscription; + } + this.additionallyAllowedTenantIds = resolveAdditionallyAllowedTenantIds(options?.additionallyAllowedTenants); + this.timeout = options?.processTimeoutInMs; + } + /** + * Authenticates with Microsoft Entra ID and returns an access token if successful. + * If authentication fails, a {@link CredentialUnavailableError} will be thrown with the details of the failure. + * + * @param scopes - The list of scopes for which the token will have access. + * @param options - The options used to configure any requests this + * TokenCredential implementation might make. + */ + async getToken(scopes, options = {}) { + const scope = typeof scopes === "string" ? scopes : scopes[0]; + const claimsValue = options.claims; + if (claimsValue && claimsValue.trim()) { + const encodedClaims = btoa(claimsValue); + let loginCmd = `az login --claims-challenge ${encodedClaims} --scope ${scope}`; + const tenantIdFromOptions = options.tenantId; + if (tenantIdFromOptions) { + loginCmd += ` --tenant ${tenantIdFromOptions}`; + } + const error2 = new CredentialUnavailableError(`${azureCliPublicErrorMessages.claim} ${loginCmd}`); + logger18.getToken.info(formatError(scope, error2)); + throw error2; + } + const tenantId = processMultiTenantRequest(this.tenantId, options, this.additionallyAllowedTenantIds); + if (tenantId) { + checkTenantId(logger18, tenantId); + } + if (this.subscription) { + checkSubscription(logger18, this.subscription); + } + logger18.getToken.info(`Using the scope ${scope}`); + return tracingClient.withSpan(`${this.constructor.name}.getToken`, options, async () => { + try { + ensureValidScopeForDevTimeCreds(scope, logger18); + const resource = getScopeResource(scope); + const obj = await cliCredentialInternals.getAzureCliAccessToken(resource, tenantId, this.subscription, this.timeout); + const specificScope = obj.stderr?.match("(.*)az login --scope(.*)"); + const isLoginError2 = obj.stderr?.match("(.*)az login(.*)") && !specificScope; + const isNotInstallError = obj.stderr?.match("az:(.*)not found") || obj.stderr?.startsWith("'az' is not recognized"); + if (isNotInstallError) { + const error2 = new CredentialUnavailableError(azureCliPublicErrorMessages.notInstalled); + logger18.getToken.info(formatError(scopes, error2)); + throw error2; + } + if (isLoginError2) { + const error2 = new CredentialUnavailableError(azureCliPublicErrorMessages.login); + logger18.getToken.info(formatError(scopes, error2)); + throw error2; + } + try { + const responseData = obj.stdout; + const response = this.parseRawResponse(responseData); + logger18.getToken.info(formatSuccess(scopes)); + return response; + } catch (e) { + if (obj.stderr) { + throw new CredentialUnavailableError(obj.stderr); + } + throw e; + } + } catch (err) { + const error2 = err.name === "CredentialUnavailableError" ? err : new CredentialUnavailableError(err.message || azureCliPublicErrorMessages.unknown); + logger18.getToken.info(formatError(scopes, error2)); + throw error2; + } + }); + } + /** + * Parses the raw JSON response from the Azure CLI into a usable AccessToken object + * + * @param rawResponse - The raw JSON response from the Azure CLI + * @returns An access token with the expiry time parsed from the raw response + * + * The expiryTime of the credential's access token, in milliseconds, is calculated as follows: + * + * When available, expires_on (introduced in Azure CLI v2.54.0) will be preferred. Otherwise falls back to expiresOn. + */ + parseRawResponse(rawResponse) { + const response = JSON.parse(rawResponse); + const token = response.accessToken; + let expiresOnTimestamp = Number.parseInt(response.expires_on, 10) * 1e3; + if (!isNaN(expiresOnTimestamp)) { + logger18.getToken.info("expires_on is available and is valid, using it"); + return { + token, + expiresOnTimestamp, + tokenType: "Bearer" + }; + } + expiresOnTimestamp = new Date(response.expiresOn).getTime(); + if (isNaN(expiresOnTimestamp)) { + throw new CredentialUnavailableError(`${azureCliPublicErrorMessages.unexpectedResponse} "${response.expiresOn}"`); + } + return { + token, + expiresOnTimestamp, + tokenType: "Bearer" + }; + } + }; + } +}); + +// node_modules/@azure/identity/dist/esm/util/processUtils.js +var import_node_child_process6, processUtils; +var init_processUtils = __esm({ + "node_modules/@azure/identity/dist/esm/util/processUtils.js"() { + import_node_child_process6 = __toESM(require("node:child_process"), 1); + processUtils = { + /** + * Promisifying childProcess.execFile + * @internal + */ + execFile(file, params, options) { + return new Promise((resolve, reject) => { + import_node_child_process6.default.execFile(file, params, options, (error2, stdout, stderr) => { + if (Buffer.isBuffer(stdout)) { + stdout = stdout.toString("utf8"); + } + if (Buffer.isBuffer(stderr)) { + stderr = stderr.toString("utf8"); + } + if (stderr || error2) { + reject(stderr ? new Error(stderr) : error2); + } else { + resolve(stdout); + } + }); + }); + } + }; + } +}); + +// node_modules/@azure/identity/dist/esm/credentials/azurePowerShellCredential.js +function formatCommand(commandName) { + if (isWindows) { + return `${commandName}.exe`; + } else { + return commandName; + } +} +async function runCommands(commands, timeout) { + const results = []; + for (const command of commands) { + const [file, ...parameters] = command; + const result = await processUtils.execFile(file, parameters, { + encoding: "utf8", + timeout + }); + results.push(result); + } + return results; +} +async function parseJsonToken(result) { + const jsonRegex = /{[^{}]*}/g; + const matches = result.match(jsonRegex); + let resultWithoutToken = result; + if (matches) { + try { + for (const item of matches) { + try { + const jsonContent = JSON.parse(item); + if (jsonContent?.Token) { + resultWithoutToken = resultWithoutToken.replace(item, ""); + if (resultWithoutToken) { + logger19.getToken.warning(resultWithoutToken); + } + return jsonContent; + } + } catch (e) { + continue; + } + } + } catch (e) { + throw new Error(`Unable to parse the output of PowerShell. Received output: ${result}`); + } + } + throw new Error(`No access token found in the output. Received output: ${result}`); +} +var logger19, isWindows, powerShellErrors, powerShellPublicErrorMessages, isLoginError, isNotInstalledError, commandStack, AzurePowerShellCredential; +var init_azurePowerShellCredential = __esm({ + "node_modules/@azure/identity/dist/esm/credentials/azurePowerShellCredential.js"() { + init_tenantIdUtils(); + init_logging(); + init_scopeUtils(); + init_errors(); + init_processUtils(); + init_tracing(); + logger19 = credentialLogger("AzurePowerShellCredential"); + isWindows = process.platform === "win32"; + powerShellErrors = { + login: "Run Connect-AzAccount to login", + installed: "The specified module 'Az.Accounts' with version '2.2.0' was not loaded because no valid module file was found in any module directory" + }; + powerShellPublicErrorMessages = { + login: "Please run 'Connect-AzAccount' from PowerShell to authenticate before using this credential.", + installed: `The 'Az.Account' module >= 2.2.0 is not installed. Install the Azure Az PowerShell module with: "Install-Module -Name Az -Scope CurrentUser -Repository PSGallery -Force".`, + claim: "This credential doesn't support claims challenges. To authenticate with the required claims, please run the following command:", + troubleshoot: `To troubleshoot, visit https://aka.ms/azsdk/js/identity/powershellcredential/troubleshoot.` + }; + isLoginError = (err) => err.message.match(`(.*)${powerShellErrors.login}(.*)`); + isNotInstalledError = (err) => err.message.match(powerShellErrors.installed); + commandStack = [formatCommand("pwsh")]; + if (isWindows) { + commandStack.push(formatCommand("powershell")); + } + AzurePowerShellCredential = class { + tenantId; + additionallyAllowedTenantIds; + timeout; + /** + * Creates an instance of the {@link AzurePowerShellCredential}. + * + * To use this credential: + * - Install the Azure Az PowerShell module with: + * `Install-Module -Name Az -Scope CurrentUser -Repository PSGallery -Force`. + * - You have already logged in to Azure PowerShell using the command + * `Connect-AzAccount` from the command line. + * + * @param options - Options, to optionally allow multi-tenant requests. + */ + constructor(options) { + if (options?.tenantId) { + checkTenantId(logger19, options?.tenantId); + this.tenantId = options?.tenantId; + } + this.additionallyAllowedTenantIds = resolveAdditionallyAllowedTenantIds(options?.additionallyAllowedTenants); + this.timeout = options?.processTimeoutInMs; + } + /** + * Gets the access token from Azure PowerShell + * @param resource - The resource to use when getting the token + */ + async getAzurePowerShellAccessToken(resource, tenantId, timeout) { + for (const powerShellCommand of [...commandStack]) { + try { + await runCommands([[powerShellCommand, "/?"]], timeout); + } catch (e) { + commandStack.shift(); + continue; + } + const results = await runCommands([ + [ + powerShellCommand, + "-NoProfile", + "-NonInteractive", + "-Command", + ` + $tenantId = "${tenantId ?? ""}" + $m = Import-Module Az.Accounts -MinimumVersion 2.2.0 -PassThru + $useSecureString = $m.Version -ge [version]'2.17.0' -and $m.Version -lt [version]'5.0.0' + + $params = @{ + ResourceUrl = "${resource}" + } + + if ($tenantId.Length -gt 0) { + $params["TenantId"] = $tenantId + } + + if ($useSecureString) { + $params["AsSecureString"] = $true + } + + $token = Get-AzAccessToken @params + + $result = New-Object -TypeName PSObject + $result | Add-Member -MemberType NoteProperty -Name ExpiresOn -Value $token.ExpiresOn + + if ($token.Token -is [System.Security.SecureString]) { + if ($PSVersionTable.PSVersion.Major -lt 7) { + $ssPtr = [System.Runtime.InteropServices.Marshal]::SecureStringToBSTR($token.Token) + try { + $result | Add-Member -MemberType NoteProperty -Name Token -Value ([System.Runtime.InteropServices.Marshal]::PtrToStringBSTR($ssPtr)) + } + finally { + [System.Runtime.InteropServices.Marshal]::ZeroFreeBSTR($ssPtr) + } + } + else { + $result | Add-Member -MemberType NoteProperty -Name Token -Value ($token.Token | ConvertFrom-SecureString -AsPlainText) + } + } + else { + $result | Add-Member -MemberType NoteProperty -Name Token -Value $token.Token + } + + Write-Output (ConvertTo-Json $result) + ` + ] + ]); + const result = results[0]; + return parseJsonToken(result); + } + throw new Error(`Unable to execute PowerShell. Ensure that it is installed in your system`); + } + /** + * Authenticates with Microsoft Entra ID and returns an access token if successful. + * If the authentication cannot be performed through PowerShell, a {@link CredentialUnavailableError} will be thrown. + * + * @param scopes - The list of scopes for which the token will have access. + * @param options - The options used to configure any requests this TokenCredential implementation might make. + */ + async getToken(scopes, options = {}) { + return tracingClient.withSpan(`${this.constructor.name}.getToken`, options, async () => { + const scope = typeof scopes === "string" ? scopes : scopes[0]; + const claimsValue = options.claims; + if (claimsValue && claimsValue.trim()) { + const encodedClaims = btoa(claimsValue); + let loginCmd = `Connect-AzAccount -ClaimsChallenge ${encodedClaims}`; + const tenantIdFromOptions = options.tenantId; + if (tenantIdFromOptions) { + loginCmd += ` -Tenant ${tenantIdFromOptions}`; + } + const error2 = new CredentialUnavailableError(`${powerShellPublicErrorMessages.claim} ${loginCmd}`); + logger19.getToken.info(formatError(scope, error2)); + throw error2; + } + const tenantId = processMultiTenantRequest(this.tenantId, options, this.additionallyAllowedTenantIds); + if (tenantId) { + checkTenantId(logger19, tenantId); + } + try { + ensureValidScopeForDevTimeCreds(scope, logger19); + logger19.getToken.info(`Using the scope ${scope}`); + const resource = getScopeResource(scope); + const response = await this.getAzurePowerShellAccessToken(resource, tenantId, this.timeout); + logger19.getToken.info(formatSuccess(scopes)); + return { + token: response.Token, + expiresOnTimestamp: new Date(response.ExpiresOn).getTime(), + tokenType: "Bearer" + }; + } catch (err) { + if (isNotInstalledError(err)) { + const error3 = new CredentialUnavailableError(powerShellPublicErrorMessages.installed); + logger19.getToken.info(formatError(scope, error3)); + throw error3; + } else if (isLoginError(err)) { + const error3 = new CredentialUnavailableError(powerShellPublicErrorMessages.login); + logger19.getToken.info(formatError(scope, error3)); + throw error3; + } + const error2 = new CredentialUnavailableError(`${err}. ${powerShellPublicErrorMessages.troubleshoot}`); + logger19.getToken.info(formatError(scope, error2)); + throw error2; + } + }); + } + }; + } +}); + +// node_modules/@azure/identity/dist/esm/credentials/visualStudioCodeCredential.js +function checkUnsupportedTenant(tenantId) { + const unsupportedTenantError = unsupportedTenantIds[tenantId]; + if (unsupportedTenantError) { + throw new CredentialUnavailableError(unsupportedTenantError); + } +} +var import_promises5, CommonTenantId, VSCodeClientId, logger20, unsupportedTenantIds, VisualStudioCodeCredential; +var init_visualStudioCodeCredential = __esm({ + "node_modules/@azure/identity/dist/esm/credentials/visualStudioCodeCredential.js"() { + init_logging(); + init_tenantIdUtils(); + init_errors(); + init_tenantIdUtils(); + init_msalClient(); + init_scopeUtils(); + init_msalPlugins(); + init_utils(); + import_promises5 = require("node:fs/promises"); + CommonTenantId = "common"; + VSCodeClientId = "aebc6443-996d-45c2-90f0-388ff96faa56"; + logger20 = credentialLogger("VisualStudioCodeCredential"); + unsupportedTenantIds = { + adfs: "The VisualStudioCodeCredential does not support authentication with ADFS tenants." + }; + VisualStudioCodeCredential = class { + tenantId; + additionallyAllowedTenantIds; + msalClient; + options; + /** + * Creates an instance of VisualStudioCodeCredential to use for automatically authenticating via VSCode. + * + * **Note**: `VisualStudioCodeCredential` is provided by a plugin package: + * `@azure/identity-vscode`. If this package is not installed, then authentication using + * `VisualStudioCodeCredential` will not be available. + * + * @param options - Options for configuring the client which makes the authentication request. + */ + constructor(options) { + this.options = options || {}; + if (options && options.tenantId) { + checkTenantId(logger20, options.tenantId); + this.tenantId = options.tenantId; + } else { + this.tenantId = CommonTenantId; + } + this.additionallyAllowedTenantIds = resolveAdditionallyAllowedTenantIds(options?.additionallyAllowedTenants); + checkUnsupportedTenant(this.tenantId); + } + /** + * Runs preparations for any further getToken request: + * - Validates that the plugin is available. + * - Loads the authentication record from VSCode if available. + * - Creates the MSAL client with the loaded plugin and authentication record. + */ + async prepare(scopes) { + const tenantId = processMultiTenantRequest(this.tenantId, this.options, this.additionallyAllowedTenantIds, logger20) || this.tenantId; + if (!hasVSCodePlugin() || !vsCodeAuthRecordPath) { + throw new CredentialUnavailableError("Visual Studio Code Authentication is not available. Ensure you have have Azure Resources Extension installed in VS Code, signed into Azure via VS Code, installed the @azure/identity-vscode package, and properly configured the extension."); + } + const authenticationRecord = await this.loadAuthRecord(vsCodeAuthRecordPath, scopes); + this.msalClient = createMsalClient(VSCodeClientId, tenantId, { + ...this.options, + isVSCodeCredential: true, + brokerOptions: { + enabled: true, + parentWindowHandle: new Uint8Array(0), + useDefaultBrokerAccount: true + }, + authenticationRecord + }); + } + /** + * The promise of the single preparation that will be executed at the first getToken request for an instance of this class. + */ + preparePromise; + /** + * Runs preparations for any further getToken, but only once. + */ + prepareOnce(scopes) { + if (!this.preparePromise) { + this.preparePromise = this.prepare(scopes); + } + return this.preparePromise; + } + /** + * Returns the token found by searching VSCode's authentication cache or + * returns null if no token could be found. + * + * @param scopes - The list of scopes for which the token will have access. + * @param options - The options used to configure any requests this + * `TokenCredential` implementation might make. + */ + async getToken(scopes, options) { + const scopeArray = ensureScopes(scopes); + await this.prepareOnce(scopeArray); + if (!this.msalClient) { + throw new CredentialUnavailableError("Visual Studio Code Authentication failed to initialize. Ensure you have have Azure Resources Extension installed in VS Code, signed into Azure via VS Code, installed the @azure/identity-vscode package, and properly configured the extension."); + } + return this.msalClient.getTokenByInteractiveRequest(scopeArray, { + ...options, + disableAutomaticAuthentication: true + }); + } + /** + * Loads the authentication record from the specified path. + * @param authRecordPath - The path to the authentication record file. + * @param scopes - The list of scopes for which the token will have access. + * @returns The authentication record or undefined if loading fails. + */ + async loadAuthRecord(authRecordPath, scopes) { + try { + const authRecordContent = await (0, import_promises5.readFile)(authRecordPath, { encoding: "utf8" }); + return deserializeAuthenticationRecord(authRecordContent); + } catch (error2) { + logger20.getToken.info(formatError(scopes, error2)); + throw new CredentialUnavailableError("Cannot load authentication record in Visual Studio Code. Ensure you have have Azure Resources Extension installed in VS Code, signed into Azure via VS Code, installed the @azure/identity-vscode package, and properly configured the extension."); + } + } + }; + } +}); + +// node_modules/@azure/identity/dist/esm/credentials/brokerCredential.js +var logger21, BrokerCredential; +var init_brokerCredential = __esm({ + "node_modules/@azure/identity/dist/esm/credentials/brokerCredential.js"() { + init_tenantIdUtils(); + init_logging(); + init_scopeUtils(); + init_tracing(); + init_msalClient(); + init_constants(); + init_errors(); + logger21 = credentialLogger("BrokerCredential"); + BrokerCredential = class { + brokerMsalClient; + brokerTenantId; + brokerAdditionallyAllowedTenantIds; + /** + * Creates an instance of BrokerCredential with the required broker options. + * + * This credential uses WAM (Web Account Manager) for authentication, which provides + * better security and user experience on Windows platforms. + * + * @param options - Options for configuring the broker credential, including required broker options. + */ + constructor(options) { + this.brokerTenantId = resolveTenantId(logger21, options.tenantId); + this.brokerAdditionallyAllowedTenantIds = resolveAdditionallyAllowedTenantIds(options?.additionallyAllowedTenants); + const msalClientOptions = { + ...options, + tokenCredentialOptions: options, + logger: logger21, + brokerOptions: { + enabled: true, + parentWindowHandle: new Uint8Array(0), + useDefaultBrokerAccount: true + } + }; + this.brokerMsalClient = createMsalClient(DeveloperSignOnClientId, this.brokerTenantId, msalClientOptions); + } + /** + * Authenticates with Microsoft Entra ID using WAM broker and returns an access token if successful. + * If authentication fails, a {@link CredentialUnavailableError} will be thrown with the details of the failure. + * + * This method extends the base getToken method to support silentAuthenticationOnly option + * when using broker authentication. + * + * @param scopes - The list of scopes for which the token will have access. + * @param options - The options used to configure the token request, including silentAuthenticationOnly option. + */ + async getToken(scopes, options = {}) { + return tracingClient.withSpan(`${this.constructor.name}.getToken`, options, async (newOptions) => { + newOptions.tenantId = processMultiTenantRequest(this.brokerTenantId, newOptions, this.brokerAdditionallyAllowedTenantIds, logger21); + const arrayScopes = ensureScopes(scopes); + try { + return this.brokerMsalClient.getBrokeredToken(arrayScopes, true, { + ...newOptions, + disableAutomaticAuthentication: true + }); + } catch (e) { + logger21.getToken.info(formatError(arrayScopes, e)); + throw new CredentialUnavailableError("Failed to acquire token using broker authentication", { cause: e }); + } + }); + } + }; + } +}); + +// node_modules/@azure/identity/dist/esm/credentials/defaultAzureCredentialFunctions.js +function createDefaultBrokerCredential(options = {}) { + return new BrokerCredential(options); +} +function createDefaultVisualStudioCodeCredential(options = {}) { + return new VisualStudioCodeCredential(options); +} +function createDefaultManagedIdentityCredential(options = {}) { + options.retryOptions ??= { + maxRetries: 5, + retryDelayInMs: 800 + }; + options.sendProbeRequest ??= true; + const managedIdentityClientId = options?.managedIdentityClientId ?? process.env.AZURE_CLIENT_ID; + const workloadIdentityClientId = options?.workloadIdentityClientId ?? managedIdentityClientId; + const managedResourceId = options?.managedIdentityResourceId; + const workloadFile = process.env.AZURE_FEDERATED_TOKEN_FILE; + const tenantId = options?.tenantId ?? process.env.AZURE_TENANT_ID; + if (managedResourceId) { + const managedIdentityResourceIdOptions = { + ...options, + resourceId: managedResourceId + }; + return new ManagedIdentityCredential(managedIdentityResourceIdOptions); + } + if (workloadFile && workloadIdentityClientId) { + const workloadIdentityCredentialOptions = { + ...options, + tenantId + }; + return new ManagedIdentityCredential(workloadIdentityClientId, workloadIdentityCredentialOptions); + } + if (managedIdentityClientId) { + const managedIdentityClientOptions = { + ...options, + clientId: managedIdentityClientId + }; + return new ManagedIdentityCredential(managedIdentityClientOptions); + } + return new ManagedIdentityCredential(options); +} +function createDefaultWorkloadIdentityCredential(options) { + const managedIdentityClientId = options?.managedIdentityClientId ?? process.env.AZURE_CLIENT_ID; + const workloadIdentityClientId = options?.workloadIdentityClientId ?? managedIdentityClientId; + const workloadFile = process.env.AZURE_FEDERATED_TOKEN_FILE; + const tenantId = options?.tenantId ?? process.env.AZURE_TENANT_ID; + if (workloadFile && workloadIdentityClientId) { + const workloadIdentityCredentialOptions = { + ...options, + tenantId, + clientId: workloadIdentityClientId, + tokenFilePath: workloadFile + }; + return new WorkloadIdentityCredential(workloadIdentityCredentialOptions); + } + if (tenantId) { + const workloadIdentityClientTenantOptions = { + ...options, + tenantId + }; + return new WorkloadIdentityCredential(workloadIdentityClientTenantOptions); + } + return new WorkloadIdentityCredential(options); +} +function createDefaultAzureDeveloperCliCredential(options = {}) { + return new AzureDeveloperCliCredential(options); +} +function createDefaultAzureCliCredential(options = {}) { + return new AzureCliCredential(options); +} +function createDefaultAzurePowershellCredential(options = {}) { + return new AzurePowerShellCredential(options); +} +function createDefaultEnvironmentCredential(options = {}) { + return new EnvironmentCredential(options); +} +var init_defaultAzureCredentialFunctions = __esm({ + "node_modules/@azure/identity/dist/esm/credentials/defaultAzureCredentialFunctions.js"() { + init_environmentCredential(); + init_managedIdentityCredential(); + init_workloadIdentityCredential(); + init_azureDeveloperCliCredential(); + init_azureCliCredential(); + init_azurePowerShellCredential(); + init_visualStudioCodeCredential(); + init_brokerCredential(); + } +}); + +// node_modules/@azure/identity/dist/esm/credentials/defaultAzureCredential.js +function validateRequiredEnvVars(options) { + if (options?.requiredEnvVars) { + const requiredVars = Array.isArray(options.requiredEnvVars) ? options.requiredEnvVars : [options.requiredEnvVars]; + const missing = requiredVars.filter((envVar) => !process.env[envVar]); + if (missing.length > 0) { + const errorMessage = `Required environment ${missing.length === 1 ? "variable" : "variables"} '${missing.join(", ")}' for DefaultAzureCredential ${missing.length === 1 ? "is" : "are"} not set or empty.`; + logger22.warning(errorMessage); + throw new Error(errorMessage); + } + } +} +var logger22, UnavailableDefaultCredential, DefaultAzureCredential; +var init_defaultAzureCredential = __esm({ + "node_modules/@azure/identity/dist/esm/credentials/defaultAzureCredential.js"() { + init_chainedTokenCredential(); + init_logging(); + init_defaultAzureCredentialFunctions(); + logger22 = credentialLogger("DefaultAzureCredential"); + UnavailableDefaultCredential = class { + credentialUnavailableErrorMessage; + credentialName; + constructor(credentialName6, message) { + this.credentialName = credentialName6; + this.credentialUnavailableErrorMessage = message; + } + getToken() { + logger22.getToken.info(`Skipping ${this.credentialName}, reason: ${this.credentialUnavailableErrorMessage}`); + return Promise.resolve(null); + } + }; + DefaultAzureCredential = class extends ChainedTokenCredential { + constructor(options) { + validateRequiredEnvVars(options); + const azureTokenCredentials = process.env.AZURE_TOKEN_CREDENTIALS ? process.env.AZURE_TOKEN_CREDENTIALS.trim().toLowerCase() : void 0; + const devCredentialFunctions = [ + createDefaultVisualStudioCodeCredential, + createDefaultAzureCliCredential, + createDefaultAzurePowershellCredential, + createDefaultAzureDeveloperCliCredential, + createDefaultBrokerCredential + ]; + const prodCredentialFunctions = [ + createDefaultEnvironmentCredential, + createDefaultWorkloadIdentityCredential, + createDefaultManagedIdentityCredential + ]; + let credentialFunctions = []; + const validCredentialNames = "EnvironmentCredential, WorkloadIdentityCredential, ManagedIdentityCredential, VisualStudioCodeCredential, AzureCliCredential, AzurePowerShellCredential, AzureDeveloperCliCredential"; + if (azureTokenCredentials) { + switch (azureTokenCredentials) { + case "dev": + credentialFunctions = devCredentialFunctions; + break; + case "prod": + credentialFunctions = prodCredentialFunctions; + break; + case "environmentcredential": + credentialFunctions = [createDefaultEnvironmentCredential]; + break; + case "workloadidentitycredential": + credentialFunctions = [createDefaultWorkloadIdentityCredential]; + break; + case "managedidentitycredential": + credentialFunctions = [ + () => createDefaultManagedIdentityCredential({ sendProbeRequest: false }) + ]; + break; + case "visualstudiocodecredential": + credentialFunctions = [createDefaultVisualStudioCodeCredential]; + break; + case "azureclicredential": + credentialFunctions = [createDefaultAzureCliCredential]; + break; + case "azurepowershellcredential": + credentialFunctions = [createDefaultAzurePowershellCredential]; + break; + case "azuredeveloperclicredential": + credentialFunctions = [createDefaultAzureDeveloperCliCredential]; + break; + default: { + const errorMessage = `Invalid value for AZURE_TOKEN_CREDENTIALS = ${process.env.AZURE_TOKEN_CREDENTIALS}. Valid values are 'prod' or 'dev' or any of these credentials - ${validCredentialNames}.`; + logger22.warning(errorMessage); + throw new Error(errorMessage); + } + } + } else { + credentialFunctions = [...prodCredentialFunctions, ...devCredentialFunctions]; + } + const credentials = credentialFunctions.map((createCredentialFn) => { + try { + return createCredentialFn(options ?? {}); + } catch (err) { + logger22.warning(`Skipped ${createCredentialFn.name} because of an error creating the credential: ${err}`); + return new UnavailableDefaultCredential(createCredentialFn.name, err.message); + } + }); + super(...credentials); + } + }; + } +}); + +// node_modules/@azure/identity/dist/esm/credentials/interactiveBrowserCredential.js +var logger23, InteractiveBrowserCredential; +var init_interactiveBrowserCredential = __esm({ + "node_modules/@azure/identity/dist/esm/credentials/interactiveBrowserCredential.js"() { + init_tenantIdUtils(); + init_logging(); + init_scopeUtils(); + init_tracing(); + init_msalClient(); + init_constants(); + logger23 = credentialLogger("InteractiveBrowserCredential"); + InteractiveBrowserCredential = class { + tenantId; + additionallyAllowedTenantIds; + msalClient; + disableAutomaticAuthentication; + browserCustomizationOptions; + loginHint; + /** + * Creates an instance of InteractiveBrowserCredential with the details needed. + * + * This credential uses the [Authorization Code Flow](https://learn.microsoft.com/entra/identity-platform/v2-oauth2-auth-code-flow). + * On Node.js, it will open a browser window while it listens for a redirect response from the authentication service. + * On browsers, it authenticates via popups. The `loginStyle` optional parameter can be set to `redirect` to authenticate by redirecting the user to an Azure secure login page, which then will redirect the user back to the web application where the authentication started. + * + * For Node.js, if a `clientId` is provided, the Microsoft Entra application will need to be configured to have a "Mobile and desktop applications" redirect endpoint. + * Follow our guide on [setting up Redirect URIs for Desktop apps that calls to web APIs](https://learn.microsoft.com/entra/identity-platform/scenario-desktop-app-registration#redirect-uris). + * + * @param options - Options for configuring the client which makes the authentication requests. + */ + constructor(options) { + this.tenantId = resolveTenantId(logger23, options.tenantId, options.clientId); + this.additionallyAllowedTenantIds = resolveAdditionallyAllowedTenantIds(options?.additionallyAllowedTenants); + const msalClientOptions = { + ...options, + tokenCredentialOptions: options, + logger: logger23 + }; + const ibcNodeOptions = options; + this.browserCustomizationOptions = ibcNodeOptions.browserCustomizationOptions; + this.loginHint = ibcNodeOptions.loginHint; + if (ibcNodeOptions?.brokerOptions?.enabled) { + if (!ibcNodeOptions?.brokerOptions?.parentWindowHandle) { + throw new Error("In order to do WAM authentication, `parentWindowHandle` under `brokerOptions` is a required parameter"); + } else { + msalClientOptions.brokerOptions = { + enabled: true, + parentWindowHandle: ibcNodeOptions.brokerOptions.parentWindowHandle, + legacyEnableMsaPassthrough: ibcNodeOptions.brokerOptions?.legacyEnableMsaPassthrough, + useDefaultBrokerAccount: ibcNodeOptions.brokerOptions?.useDefaultBrokerAccount + }; + } + } + this.msalClient = createMsalClient(options.clientId ?? DeveloperSignOnClientId, this.tenantId, msalClientOptions); + this.disableAutomaticAuthentication = options?.disableAutomaticAuthentication; + } + /** + * Authenticates with Microsoft Entra ID and returns an access token if successful. + * If authentication fails, a {@link CredentialUnavailableError} will be thrown with the details of the failure. + * + * If the user provided the option `disableAutomaticAuthentication`, + * once the token can't be retrieved silently, + * this method won't attempt to request user interaction to retrieve the token. + * + * @param scopes - The list of scopes for which the token will have access. + * @param options - The options used to configure any requests this + * TokenCredential implementation might make. + */ + async getToken(scopes, options = {}) { + return tracingClient.withSpan(`${this.constructor.name}.getToken`, options, async (newOptions) => { + newOptions.tenantId = processMultiTenantRequest(this.tenantId, newOptions, this.additionallyAllowedTenantIds, logger23); + const arrayScopes = ensureScopes(scopes); + return this.msalClient.getTokenByInteractiveRequest(arrayScopes, { + ...newOptions, + disableAutomaticAuthentication: this.disableAutomaticAuthentication, + browserCustomizationOptions: this.browserCustomizationOptions, + loginHint: this.loginHint + }); + }); + } + /** + * Authenticates with Microsoft Entra ID and returns an access token if successful. + * If authentication fails, a {@link CredentialUnavailableError} will be thrown with the details of the failure. + * + * If the token can't be retrieved silently, this method will always generate a challenge for the user. + * + * On Node.js, this credential has [Proof Key for Code Exchange (PKCE)](https://datatracker.ietf.org/doc/html/rfc7636) enabled by default. + * PKCE is a security feature that mitigates authentication code interception attacks. + * + * @param scopes - The list of scopes for which the token will have access. + * @param options - The options used to configure any requests this + * TokenCredential implementation might make. + */ + async authenticate(scopes, options = {}) { + return tracingClient.withSpan(`${this.constructor.name}.authenticate`, options, async (newOptions) => { + const arrayScopes = ensureScopes(scopes); + await this.msalClient.getTokenByInteractiveRequest(arrayScopes, { + ...newOptions, + disableAutomaticAuthentication: false, + // this method should always allow user interaction + browserCustomizationOptions: this.browserCustomizationOptions, + loginHint: this.loginHint + }); + return this.msalClient.getActiveAccount(); + }); + } + }; + } +}); + +// node_modules/@azure/identity/dist/esm/credentials/deviceCodeCredential.js +function defaultDeviceCodePromptCallback(deviceCodeInfo) { + console.log(deviceCodeInfo.message); +} +var logger24, DeviceCodeCredential; +var init_deviceCodeCredential = __esm({ + "node_modules/@azure/identity/dist/esm/credentials/deviceCodeCredential.js"() { + init_tenantIdUtils(); + init_logging(); + init_scopeUtils(); + init_tracing(); + init_msalClient(); + init_constants(); + logger24 = credentialLogger("DeviceCodeCredential"); + DeviceCodeCredential = class { + tenantId; + additionallyAllowedTenantIds; + disableAutomaticAuthentication; + msalClient; + userPromptCallback; + /** + * Creates an instance of DeviceCodeCredential with the details needed + * to initiate the device code authorization flow with Microsoft Entra ID. + * + * A message will be logged, giving users a code that they can use to authenticate once they go to https://microsoft.com/devicelogin + * + * Developers can configure how this message is shown by passing a custom `userPromptCallback`: + * + * ```ts snippet:device_code_credential_example + * import { DeviceCodeCredential } from "@azure/identity"; + * + * const credential = new DeviceCodeCredential({ + * tenantId: process.env.AZURE_TENANT_ID, + * clientId: process.env.AZURE_CLIENT_ID, + * userPromptCallback: (info) => { + * console.log("CUSTOMIZED PROMPT CALLBACK", info.message); + * }, + * }); + * ``` + * + * @param options - Options for configuring the client which makes the authentication requests. + */ + constructor(options) { + this.tenantId = options?.tenantId; + this.additionallyAllowedTenantIds = resolveAdditionallyAllowedTenantIds(options?.additionallyAllowedTenants); + const clientId = options?.clientId ?? DeveloperSignOnClientId; + const tenantId = resolveTenantId(logger24, options?.tenantId, clientId); + this.userPromptCallback = options?.userPromptCallback ?? defaultDeviceCodePromptCallback; + this.msalClient = createMsalClient(clientId, tenantId, { + ...options, + logger: logger24, + tokenCredentialOptions: options || {} + }); + this.disableAutomaticAuthentication = options?.disableAutomaticAuthentication; + } + /** + * Authenticates with Microsoft Entra ID and returns an access token if successful. + * If authentication fails, a {@link CredentialUnavailableError} will be thrown with the details of the failure. + * + * If the user provided the option `disableAutomaticAuthentication`, + * once the token can't be retrieved silently, + * this method won't attempt to request user interaction to retrieve the token. + * + * @param scopes - The list of scopes for which the token will have access. + * @param options - The options used to configure any requests this + * TokenCredential implementation might make. + */ + async getToken(scopes, options = {}) { + return tracingClient.withSpan(`${this.constructor.name}.getToken`, options, async (newOptions) => { + newOptions.tenantId = processMultiTenantRequest(this.tenantId, newOptions, this.additionallyAllowedTenantIds, logger24); + const arrayScopes = ensureScopes(scopes); + return this.msalClient.getTokenByDeviceCode(arrayScopes, this.userPromptCallback, { + ...newOptions, + disableAutomaticAuthentication: this.disableAutomaticAuthentication + }); + }); + } + /** + * Authenticates with Microsoft Entra ID and returns an access token if successful. + * If authentication fails, a {@link CredentialUnavailableError} will be thrown with the details of the failure. + * + * If the token can't be retrieved silently, this method will always generate a challenge for the user. + * + * @param scopes - The list of scopes for which the token will have access. + * @param options - The options used to configure any requests this + * TokenCredential implementation might make. + */ + async authenticate(scopes, options = {}) { + return tracingClient.withSpan(`${this.constructor.name}.authenticate`, options, async (newOptions) => { + const arrayScopes = Array.isArray(scopes) ? scopes : [scopes]; + await this.msalClient.getTokenByDeviceCode(arrayScopes, this.userPromptCallback, { + ...newOptions, + disableAutomaticAuthentication: false + // this method should always allow user interaction + }); + return this.msalClient.getActiveAccount(); + }); + } + }; + } +}); + +// node_modules/@azure/identity/dist/esm/credentials/azurePipelinesCredential.js +function handleOidcResponse(response) { + const text = response.bodyAsText; + if (!text) { + logger25.error(`${credentialName4}: Authentication Failed. Received null token from OIDC request. Response status- ${response.status}. Complete response - ${JSON.stringify(response)}`); + throw new AuthenticationError(response.status, { + error: `${credentialName4}: Authentication Failed. Received null token from OIDC request.`, + error_description: `${JSON.stringify(response)}. See the troubleshooting guide for more information: https://aka.ms/azsdk/js/identity/azurepipelinescredential/troubleshoot` + }); + } + try { + const result = JSON.parse(text); + if (result?.oidcToken) { + return result.oidcToken; + } else { + const errorMessage = `${credentialName4}: Authentication Failed. oidcToken field not detected in the response.`; + let errorDescription = ``; + if (response.status !== 200) { + errorDescription = `Response body = ${text}. Response Headers ["x-vss-e2eid"] = ${response.headers.get("x-vss-e2eid")} and ["x-msedge-ref"] = ${response.headers.get("x-msedge-ref")}. See the troubleshooting guide for more information: https://aka.ms/azsdk/js/identity/azurepipelinescredential/troubleshoot`; + } + logger25.error(errorMessage); + logger25.error(errorDescription); + throw new AuthenticationError(response.status, { + error: errorMessage, + error_description: errorDescription + }); + } + } catch (e) { + const errorDetails = `${credentialName4}: Authentication Failed. oidcToken field not detected in the response.`; + logger25.error(`Response from service = ${text}, Response Headers ["x-vss-e2eid"] = ${response.headers.get("x-vss-e2eid")} + and ["x-msedge-ref"] = ${response.headers.get("x-msedge-ref")}, error message = ${e.message}`); + logger25.error(errorDetails); + throw new AuthenticationError(response.status, { + error: errorDetails, + error_description: `Response = ${text}. Response headers ["x-vss-e2eid"] = ${response.headers.get("x-vss-e2eid")} and ["x-msedge-ref"] = ${response.headers.get("x-msedge-ref")}. See the troubleshooting guide for more information: https://aka.ms/azsdk/js/identity/azurepipelinescredential/troubleshoot` + }); + } +} +var credentialName4, logger25, OIDC_API_VERSION, AzurePipelinesCredential; +var init_azurePipelinesCredential = __esm({ + "node_modules/@azure/identity/dist/esm/credentials/azurePipelinesCredential.js"() { + init_errors(); + init_esm6(); + init_clientAssertionCredential(); + init_identityClient(); + init_tenantIdUtils(); + init_logging(); + credentialName4 = "AzurePipelinesCredential"; + logger25 = credentialLogger(credentialName4); + OIDC_API_VERSION = "7.1"; + AzurePipelinesCredential = class { + clientAssertionCredential; + identityClient; + /** + * AzurePipelinesCredential supports Federated Identity on Azure Pipelines through Service Connections. + * @param tenantId - tenantId associated with the service connection + * @param clientId - clientId associated with the service connection + * @param serviceConnectionId - Unique ID for the service connection, as found in the querystring's resourceId key + * @param systemAccessToken - The pipeline's System.AccessToken value. + * @param options - The identity client options to use for authentication. + */ + constructor(tenantId, clientId, serviceConnectionId, systemAccessToken, options = {}) { + if (!clientId) { + throw new CredentialUnavailableError(`${credentialName4}: is unavailable. clientId is a required parameter.`); + } + if (!tenantId) { + throw new CredentialUnavailableError(`${credentialName4}: is unavailable. tenantId is a required parameter.`); + } + if (!serviceConnectionId) { + throw new CredentialUnavailableError(`${credentialName4}: is unavailable. serviceConnectionId is a required parameter.`); + } + if (!systemAccessToken) { + throw new CredentialUnavailableError(`${credentialName4}: is unavailable. systemAccessToken is a required parameter.`); + } + options.loggingOptions = { + ...options?.loggingOptions, + additionalAllowedHeaderNames: [ + ...options.loggingOptions?.additionalAllowedHeaderNames ?? [], + "x-vss-e2eid", + "x-msedge-ref" + ] + }; + this.identityClient = new IdentityClient(options); + checkTenantId(logger25, tenantId); + logger25.info(`Invoking AzurePipelinesCredential with tenant ID: ${tenantId}, client ID: ${clientId}, and service connection ID: ${serviceConnectionId}`); + if (!process.env.SYSTEM_OIDCREQUESTURI) { + throw new CredentialUnavailableError(`${credentialName4}: is unavailable. Ensure that you're running this task in an Azure Pipeline, so that following missing system variable(s) can be defined- "SYSTEM_OIDCREQUESTURI"`); + } + const oidcRequestUrl = `${process.env.SYSTEM_OIDCREQUESTURI}?api-version=${OIDC_API_VERSION}&serviceConnectionId=${serviceConnectionId}`; + logger25.info(`Invoking ClientAssertionCredential with tenant ID: ${tenantId}, client ID: ${clientId} and service connection ID: ${serviceConnectionId}`); + this.clientAssertionCredential = new ClientAssertionCredential(tenantId, clientId, this.requestOidcToken.bind(this, oidcRequestUrl, systemAccessToken), options); + } + /** + * Authenticates with Microsoft Entra ID and returns an access token if successful. + * If authentication fails, a {@link CredentialUnavailableError} or {@link AuthenticationError} will be thrown with the details of the failure. + * + * @param scopes - The list of scopes for which the token will have access. + * @param options - The options used to configure any requests this + * TokenCredential implementation might make. + */ + async getToken(scopes, options) { + if (!this.clientAssertionCredential) { + const errorMessage = `${credentialName4}: is unavailable. To use Federation Identity in Azure Pipelines, the following parameters are required - + tenantId, + clientId, + serviceConnectionId, + systemAccessToken, + "SYSTEM_OIDCREQUESTURI". + See the troubleshooting guide for more information: https://aka.ms/azsdk/js/identity/azurepipelinescredential/troubleshoot`; + logger25.error(errorMessage); + throw new CredentialUnavailableError(errorMessage); + } + logger25.info("Invoking getToken() of Client Assertion Credential"); + return this.clientAssertionCredential.getToken(scopes, options); + } + /** + * + * @param oidcRequestUrl - oidc request url + * @param systemAccessToken - system access token + * @returns OIDC token from Azure Pipelines + */ + async requestOidcToken(oidcRequestUrl, systemAccessToken) { + logger25.info("Requesting OIDC token from Azure Pipelines..."); + logger25.info(oidcRequestUrl); + const request = createPipelineRequest2({ + url: oidcRequestUrl, + method: "POST", + headers: createHttpHeaders2({ + "Content-Type": "application/json", + Authorization: `Bearer ${systemAccessToken}`, + // Prevents the service from responding with a redirect HTTP status code (useful for automation). + "X-TFS-FedAuthRedirect": "Suppress" + }) + }); + const response = await this.identityClient.sendRequest(request); + return handleOidcResponse(response); + } + }; + } +}); + +// node_modules/@azure/identity/dist/esm/credentials/authorizationCodeCredential.js +var logger26, AuthorizationCodeCredential; +var init_authorizationCodeCredential = __esm({ + "node_modules/@azure/identity/dist/esm/credentials/authorizationCodeCredential.js"() { + init_tenantIdUtils(); + init_tenantIdUtils(); + init_logging(); + init_scopeUtils(); + init_tracing(); + init_msalClient(); + logger26 = credentialLogger("AuthorizationCodeCredential"); + AuthorizationCodeCredential = class { + msalClient; + disableAutomaticAuthentication; + authorizationCode; + redirectUri; + tenantId; + additionallyAllowedTenantIds; + clientSecret; + /** + * @hidden + * @internal + */ + constructor(tenantId, clientId, clientSecretOrAuthorizationCode, authorizationCodeOrRedirectUri, redirectUriOrOptions, options) { + checkTenantId(logger26, tenantId); + this.clientSecret = clientSecretOrAuthorizationCode; + if (typeof redirectUriOrOptions === "string") { + this.authorizationCode = authorizationCodeOrRedirectUri; + this.redirectUri = redirectUriOrOptions; + } else { + this.authorizationCode = clientSecretOrAuthorizationCode; + this.redirectUri = authorizationCodeOrRedirectUri; + this.clientSecret = void 0; + options = redirectUriOrOptions; + } + this.tenantId = tenantId; + this.additionallyAllowedTenantIds = resolveAdditionallyAllowedTenantIds(options?.additionallyAllowedTenants); + this.msalClient = createMsalClient(clientId, tenantId, { + ...options, + logger: logger26, + tokenCredentialOptions: options ?? {} + }); + } + /** + * Authenticates with Microsoft Entra ID and returns an access token if successful. + * If authentication fails, a {@link CredentialUnavailableError} will be thrown with the details of the failure. + * + * @param scopes - The list of scopes for which the token will have access. + * @param options - The options used to configure any requests this + * TokenCredential implementation might make. + */ + async getToken(scopes, options = {}) { + return tracingClient.withSpan(`${this.constructor.name}.getToken`, options, async (newOptions) => { + const tenantId = processMultiTenantRequest(this.tenantId, newOptions, this.additionallyAllowedTenantIds); + newOptions.tenantId = tenantId; + const arrayScopes = ensureScopes(scopes); + return this.msalClient.getTokenByAuthorizationCode(arrayScopes, this.redirectUri, this.authorizationCode, this.clientSecret, { + ...newOptions, + disableAutomaticAuthentication: this.disableAutomaticAuthentication + }); + }); + } + }; + } +}); + +// node_modules/@azure/identity/dist/esm/credentials/onBehalfOfCredential.js +var import_node_crypto2, import_promises6, credentialName5, logger27, OnBehalfOfCredential; +var init_onBehalfOfCredential = __esm({ + "node_modules/@azure/identity/dist/esm/credentials/onBehalfOfCredential.js"() { + init_msalClient(); + init_logging(); + init_tenantIdUtils(); + init_errors(); + import_node_crypto2 = require("node:crypto"); + init_scopeUtils(); + import_promises6 = require("node:fs/promises"); + init_tracing(); + credentialName5 = "OnBehalfOfCredential"; + logger27 = credentialLogger(credentialName5); + OnBehalfOfCredential = class { + tenantId; + additionallyAllowedTenantIds; + msalClient; + sendCertificateChain; + certificatePath; + clientSecret; + userAssertionToken; + clientAssertion; + constructor(options) { + const { clientSecret } = options; + const { certificatePath, sendCertificateChain } = options; + const { getAssertion } = options; + const { tenantId, clientId, userAssertionToken, additionallyAllowedTenants: additionallyAllowedTenantIds } = options; + if (!tenantId) { + throw new CredentialUnavailableError(`${credentialName5}: tenantId is a required parameter. To troubleshoot, visit https://aka.ms/azsdk/js/identity/serviceprincipalauthentication/troubleshoot.`); + } + if (!clientId) { + throw new CredentialUnavailableError(`${credentialName5}: clientId is a required parameter. To troubleshoot, visit https://aka.ms/azsdk/js/identity/serviceprincipalauthentication/troubleshoot.`); + } + if (!clientSecret && !certificatePath && !getAssertion) { + throw new CredentialUnavailableError(`${credentialName5}: You must provide one of clientSecret, certificatePath, or a getAssertion callback but none were provided. To troubleshoot, visit https://aka.ms/azsdk/js/identity/serviceprincipalauthentication/troubleshoot.`); + } + if (!userAssertionToken) { + throw new CredentialUnavailableError(`${credentialName5}: userAssertionToken is a required parameter. To troubleshoot, visit https://aka.ms/azsdk/js/identity/serviceprincipalauthentication/troubleshoot.`); + } + this.certificatePath = certificatePath; + this.clientSecret = clientSecret; + this.userAssertionToken = userAssertionToken; + this.sendCertificateChain = sendCertificateChain; + this.clientAssertion = getAssertion; + this.tenantId = tenantId; + this.additionallyAllowedTenantIds = resolveAdditionallyAllowedTenantIds(additionallyAllowedTenantIds); + this.msalClient = createMsalClient(clientId, this.tenantId, { + ...options, + logger: logger27, + tokenCredentialOptions: options + }); + } + /** + * Authenticates with Microsoft Entra ID and returns an access token if successful. + * If authentication fails, a {@link CredentialUnavailableError} will be thrown with the details of the failure. + * + * @param scopes - The list of scopes for which the token will have access. + * @param options - The options used to configure the underlying network requests. + */ + async getToken(scopes, options = {}) { + return tracingClient.withSpan(`${credentialName5}.getToken`, options, async (newOptions) => { + newOptions.tenantId = processMultiTenantRequest(this.tenantId, newOptions, this.additionallyAllowedTenantIds, logger27); + const arrayScopes = ensureScopes(scopes); + if (this.certificatePath) { + const clientCertificate = await this.buildClientCertificate(this.certificatePath); + return this.msalClient.getTokenOnBehalfOf(arrayScopes, this.userAssertionToken, clientCertificate, newOptions); + } else if (this.clientSecret) { + return this.msalClient.getTokenOnBehalfOf(arrayScopes, this.userAssertionToken, this.clientSecret, options); + } else if (this.clientAssertion) { + return this.msalClient.getTokenOnBehalfOf(arrayScopes, this.userAssertionToken, this.clientAssertion, options); + } else { + throw new Error("Expected either clientSecret or certificatePath or clientAssertion to be defined."); + } + }); + } + async buildClientCertificate(certificatePath) { + try { + const parts = await this.parseCertificate({ certificatePath }, this.sendCertificateChain); + return { + thumbprint: parts.thumbprint, + thumbprintSha256: parts.thumbprintSha256, + privateKey: parts.certificateContents, + x5c: parts.x5c + }; + } catch (error2) { + logger27.info(formatError("", error2)); + throw error2; + } + } + async parseCertificate(configuration, sendCertificateChain) { + const certificatePath = configuration.certificatePath; + const certificateContents = await (0, import_promises6.readFile)(certificatePath, "utf8"); + const x5c = sendCertificateChain ? certificateContents : void 0; + const certificatePattern = /(-+BEGIN CERTIFICATE-+)(\n\r?|\r\n?)([A-Za-z0-9+/\n\r]+=*)(\n\r?|\r\n?)(-+END CERTIFICATE-+)/g; + const publicKeys = []; + let match; + do { + match = certificatePattern.exec(certificateContents); + if (match) { + publicKeys.push(match[3]); + } + } while (match); + if (publicKeys.length === 0) { + throw new Error("The file at the specified path does not contain a PEM-encoded certificate."); + } + const thumbprint = (0, import_node_crypto2.createHash)("sha1").update(Buffer.from(publicKeys[0], "base64")).digest("hex").toUpperCase(); + const thumbprintSha256 = (0, import_node_crypto2.createHash)("sha256").update(Buffer.from(publicKeys[0], "base64")).digest("hex").toUpperCase(); + return { + certificateContents, + thumbprintSha256, + thumbprint, + x5c + }; + } + }; + } +}); + +// node_modules/@azure/identity/dist/esm/tokenProvider.js +function getBearerTokenProvider(credential, scopes, options) { + const { abortSignal, tracingOptions } = options || {}; + const pipeline = createEmptyPipeline2(); + pipeline.addPolicy(bearerTokenAuthenticationPolicy({ credential, scopes })); + async function getRefreshedToken() { + const res = await pipeline.sendRequest({ + sendRequest: (request) => Promise.resolve({ + request, + status: 200, + headers: request.headers + }) + }, createPipelineRequest2({ + url: "https://example.com", + abortSignal, + tracingOptions + })); + const accessToken = res.headers.get("authorization")?.split(" ")[1]; + if (!accessToken) { + throw new Error("Failed to get access token"); + } + return accessToken; + } + return getRefreshedToken; +} +var init_tokenProvider = __esm({ + "node_modules/@azure/identity/dist/esm/tokenProvider.js"() { + init_esm6(); + } +}); + +// node_modules/@azure/identity/dist/esm/index.js +var esm_exports = {}; +__export(esm_exports, { + AggregateAuthenticationError: () => AggregateAuthenticationError, + AggregateAuthenticationErrorName: () => AggregateAuthenticationErrorName, + AuthenticationError: () => AuthenticationError, + AuthenticationErrorName: () => AuthenticationErrorName, + AuthenticationRequiredError: () => AuthenticationRequiredError, + AuthorizationCodeCredential: () => AuthorizationCodeCredential, + AzureAuthorityHosts: () => AzureAuthorityHosts, + AzureCliCredential: () => AzureCliCredential, + AzureDeveloperCliCredential: () => AzureDeveloperCliCredential, + AzurePipelinesCredential: () => AzurePipelinesCredential, + AzurePowerShellCredential: () => AzurePowerShellCredential, + ChainedTokenCredential: () => ChainedTokenCredential, + ClientAssertionCredential: () => ClientAssertionCredential, + ClientCertificateCredential: () => ClientCertificateCredential, + ClientSecretCredential: () => ClientSecretCredential, + CredentialUnavailableError: () => CredentialUnavailableError, + CredentialUnavailableErrorName: () => CredentialUnavailableErrorName, + DefaultAzureCredential: () => DefaultAzureCredential, + DeviceCodeCredential: () => DeviceCodeCredential, + EnvironmentCredential: () => EnvironmentCredential, + InteractiveBrowserCredential: () => InteractiveBrowserCredential, + ManagedIdentityCredential: () => ManagedIdentityCredential, + OnBehalfOfCredential: () => OnBehalfOfCredential, + UsernamePasswordCredential: () => UsernamePasswordCredential, + VisualStudioCodeCredential: () => VisualStudioCodeCredential, + WorkloadIdentityCredential: () => WorkloadIdentityCredential, + deserializeAuthenticationRecord: () => deserializeAuthenticationRecord, + getBearerTokenProvider: () => getBearerTokenProvider, + getDefaultAzureCredential: () => getDefaultAzureCredential, + logger: () => logger2, + serializeAuthenticationRecord: () => serializeAuthenticationRecord, + useIdentityPlugin: () => useIdentityPlugin +}); +function getDefaultAzureCredential() { + return new DefaultAzureCredential(); +} +var init_esm8 = __esm({ + "node_modules/@azure/identity/dist/esm/index.js"() { + init_consumer(); + init_defaultAzureCredential(); + init_errors(); + init_utils(); + init_chainedTokenCredential(); + init_clientSecretCredential(); + init_defaultAzureCredential(); + init_environmentCredential(); + init_clientCertificateCredential(); + init_clientAssertionCredential(); + init_azureCliCredential(); + init_azureDeveloperCliCredential(); + init_interactiveBrowserCredential(); + init_managedIdentityCredential(); + init_deviceCodeCredential(); + init_azurePipelinesCredential(); + init_authorizationCodeCredential(); + init_azurePowerShellCredential(); + init_usernamePasswordCredential(); + init_visualStudioCodeCredential(); + init_onBehalfOfCredential(); + init_workloadIdentityCredential(); + init_logging(); + init_constants(); + init_tokenProvider(); + } +}); + +// node_modules/@azure/keyvault-secrets/dist/esm/logger.js +var logger28; +var init_logger2 = __esm({ + "node_modules/@azure/keyvault-secrets/dist/esm/logger.js"() { + init_esm(); + logger28 = createClientLogger2("keyvault-secrets"); + } +}); + +// node_modules/@azure-rest/core-client/dist/esm/restError.js +function createRestError2(messageOrResponse, response) { + if (typeof messageOrResponse === "string") { + return createRestError(messageOrResponse, response); + } else { + return createRestError(messageOrResponse); + } +} +var init_restError4 = __esm({ + "node_modules/@azure-rest/core-client/dist/esm/restError.js"() { + init_esm5(); + } +}); + +// node_modules/@azure/core-auth/dist/esm/azureKeyCredential.js +var init_azureKeyCredential = __esm({ + "node_modules/@azure/core-auth/dist/esm/azureKeyCredential.js"() { + } +}); + +// node_modules/@azure/core-auth/dist/esm/keyCredential.js +function isKeyCredential(credential) { + return isObjectWithProperties(credential, ["key"]) && typeof credential.key === "string"; +} +var init_keyCredential = __esm({ + "node_modules/@azure/core-auth/dist/esm/keyCredential.js"() { + init_esm4(); + } +}); + +// node_modules/@azure/core-auth/dist/esm/azureNamedKeyCredential.js +var init_azureNamedKeyCredential = __esm({ + "node_modules/@azure/core-auth/dist/esm/azureNamedKeyCredential.js"() { + init_esm4(); + } +}); + +// node_modules/@azure/core-auth/dist/esm/azureSASCredential.js +var init_azureSASCredential = __esm({ + "node_modules/@azure/core-auth/dist/esm/azureSASCredential.js"() { + init_esm4(); + } +}); + +// node_modules/@azure/core-auth/dist/esm/tokenCredential.js +function isTokenCredential(credential) { + const castCredential = credential; + return castCredential && typeof castCredential.getToken === "function" && (castCredential.signRequest === void 0 || castCredential.getToken.length > 0); +} +var init_tokenCredential = __esm({ + "node_modules/@azure/core-auth/dist/esm/tokenCredential.js"() { + } +}); + +// node_modules/@azure/core-auth/dist/esm/index.js +var init_esm9 = __esm({ + "node_modules/@azure/core-auth/dist/esm/index.js"() { + init_azureKeyCredential(); + init_keyCredential(); + init_azureNamedKeyCredential(); + init_azureSASCredential(); + init_tokenCredential(); + } +}); + +// node_modules/@azure-rest/core-client/dist/esm/apiVersionPolicy.js +function apiVersionPolicy2(options) { + return { + name: apiVersionPolicyName2, + sendRequest: (req, next) => { + const url2 = new URL(req.url); + if (!url2.searchParams.get("api-version") && options.apiVersion) { + req.url = `${req.url}${Array.from(url2.searchParams.keys()).length > 0 ? "&" : "?"}api-version=${options.apiVersion}`; + } + return next(req); + } + }; +} +var apiVersionPolicyName2; +var init_apiVersionPolicy2 = __esm({ + "node_modules/@azure-rest/core-client/dist/esm/apiVersionPolicy.js"() { + apiVersionPolicyName2 = "ApiVersionPolicy"; + } +}); + +// node_modules/@azure-rest/core-client/dist/esm/keyCredentialAuthenticationPolicy.js +function keyCredentialAuthenticationPolicy(credential, apiKeyHeaderName) { + return { + name: keyCredentialAuthenticationPolicyName, + async sendRequest(request, next) { + request.headers.set(apiKeyHeaderName, credential.key); + return next(request); + } + }; +} +var keyCredentialAuthenticationPolicyName; +var init_keyCredentialAuthenticationPolicy = __esm({ + "node_modules/@azure-rest/core-client/dist/esm/keyCredentialAuthenticationPolicy.js"() { + keyCredentialAuthenticationPolicyName = "keyCredentialAuthenticationPolicy"; + } +}); + +// node_modules/@azure-rest/core-client/dist/esm/clientHelpers.js +function addCredentialPipelinePolicy(pipeline, endpoint, options = {}) { + const { credential, clientOptions } = options; + if (!credential) { + return; + } + if (isTokenCredential(credential)) { + const tokenPolicy = bearerTokenAuthenticationPolicy({ + credential, + scopes: clientOptions?.credentials?.scopes ?? `${endpoint}/.default` + }); + pipeline.addPolicy(tokenPolicy); + } else if (isKeyCredential2(credential)) { + if (!clientOptions?.credentials?.apiKeyHeaderName) { + throw new Error(`Missing API Key Header Name`); + } + const keyPolicy = keyCredentialAuthenticationPolicy(credential, clientOptions?.credentials?.apiKeyHeaderName); + pipeline.addPolicy(keyPolicy); + } +} +function createDefaultPipeline3(endpoint, credential, options = {}) { + const pipeline = createPipelineFromOptions2(options); + pipeline.addPolicy(apiVersionPolicy2(options)); + addCredentialPipelinePolicy(pipeline, endpoint, { credential, clientOptions: options }); + return pipeline; +} +function isKeyCredential2(credential) { + return credential.key !== void 0; +} +var init_clientHelpers2 = __esm({ + "node_modules/@azure-rest/core-client/dist/esm/clientHelpers.js"() { + init_esm6(); + init_esm9(); + init_apiVersionPolicy2(); + init_keyCredentialAuthenticationPolicy(); + } +}); + +// node_modules/@azure-rest/core-client/dist/esm/operationOptionHelpers.js +function operationOptionsToRequestParameters2(options) { + return operationOptionsToRequestParameters(options); +} +var init_operationOptionHelpers2 = __esm({ + "node_modules/@azure-rest/core-client/dist/esm/operationOptionHelpers.js"() { + init_esm5(); + } +}); + +// node_modules/@azure-rest/core-client/dist/esm/getClient.js +function wrapRequestParameters(parameters) { + if (parameters.onResponse) { + return { + ...parameters, + onResponse(rawResponse, error2) { + parameters.onResponse?.(rawResponse, error2, error2); + } + }; + } + return parameters; +} +function getClient2(endpoint, credentialsOrPipelineOptions, clientOptions = {}) { + let credentials; + if (credentialsOrPipelineOptions) { + if (isCredential(credentialsOrPipelineOptions)) { + credentials = credentialsOrPipelineOptions; + } else { + clientOptions = credentialsOrPipelineOptions ?? {}; + } + } + const pipeline = clientOptions.pipeline ?? createDefaultPipeline3(endpoint, credentials, clientOptions); + const tspClient = getClient(endpoint, { + ...clientOptions, + pipeline + }); + const client = (path9, ...args) => { + return { + get: (requestOptions = {}) => { + return tspClient.path(path9, ...args).get(wrapRequestParameters(requestOptions)); + }, + post: (requestOptions = {}) => { + return tspClient.path(path9, ...args).post(wrapRequestParameters(requestOptions)); + }, + put: (requestOptions = {}) => { + return tspClient.path(path9, ...args).put(wrapRequestParameters(requestOptions)); + }, + patch: (requestOptions = {}) => { + return tspClient.path(path9, ...args).patch(wrapRequestParameters(requestOptions)); + }, + delete: (requestOptions = {}) => { + return tspClient.path(path9, ...args).delete(wrapRequestParameters(requestOptions)); + }, + head: (requestOptions = {}) => { + return tspClient.path(path9, ...args).head(wrapRequestParameters(requestOptions)); + }, + options: (requestOptions = {}) => { + return tspClient.path(path9, ...args).options(wrapRequestParameters(requestOptions)); + }, + trace: (requestOptions = {}) => { + return tspClient.path(path9, ...args).trace(wrapRequestParameters(requestOptions)); + } + }; + }; + return { + path: client, + pathUnchecked: client, + pipeline: tspClient.pipeline + }; +} +function isCredential(param) { + return isKeyCredential(param) || isTokenCredential(param); +} +var init_getClient2 = __esm({ + "node_modules/@azure-rest/core-client/dist/esm/getClient.js"() { + init_esm9(); + init_clientHelpers2(); + init_esm5(); + } +}); + +// node_modules/@azure-rest/core-client/dist/esm/index.js +var init_esm10 = __esm({ + "node_modules/@azure-rest/core-client/dist/esm/index.js"() { + init_restError4(); + init_clientHelpers2(); + init_operationOptionHelpers2(); + init_getClient2(); + } +}); + +// node_modules/@azure/keyvault-secrets/dist/esm/constants.js +var SDK_VERSION4; +var init_constants4 = __esm({ + "node_modules/@azure/keyvault-secrets/dist/esm/constants.js"() { + SDK_VERSION4 = "4.11.1"; + } +}); + +// node_modules/@azure/keyvault-secrets/dist/esm/api/keyVaultContext.js +function createKeyVault(endpointParam, credential, options = {}) { + const endpointUrl = options.endpoint ?? options.baseUrl ?? String(endpointParam); + const prefixFromOptions = options?.userAgentOptions?.userAgentPrefix; + const userAgentInfo = `azsdk-js-keyvault-secrets/${SDK_VERSION4}`; + const userAgentPrefix = prefixFromOptions ? `${prefixFromOptions} azsdk-js-api ${userAgentInfo}` : `azsdk-js-api ${userAgentInfo}`; + const { apiVersion: _, ...updatedOptions } = { + ...options, + userAgentOptions: { userAgentPrefix }, + loggingOptions: { logger: options.loggingOptions?.logger ?? logger28.info }, + credentials: { + scopes: options.credentials?.scopes ?? ["https://vault.azure.net/.default"] + } + }; + const clientContext = getClient2(endpointUrl, credential, updatedOptions); + clientContext.pipeline.removePolicy({ name: "ApiVersionPolicy" }); + const apiVersion = options.apiVersion ?? "2025-07-01"; + clientContext.pipeline.addPolicy({ + name: "ClientApiVersionPolicy", + sendRequest: (req, next) => { + const url2 = new URL(req.url); + if (!url2.searchParams.get("api-version")) { + req.url = `${req.url}${Array.from(url2.searchParams.keys()).length > 0 ? "&" : "?"}api-version=${apiVersion}`; + } + return next(req); + } + }); + return { ...clientContext, apiVersion }; +} +var init_keyVaultContext = __esm({ + "node_modules/@azure/keyvault-secrets/dist/esm/api/keyVaultContext.js"() { + init_logger2(); + init_esm10(); + init_constants4(); + } +}); + +// node_modules/@azure/keyvault-secrets/dist/esm/models/models.js +function secretSetParametersSerializer(item) { + return { + value: item["value"], + tags: item["tags"], + contentType: item["contentType"], + attributes: !item["secretAttributes"] ? item["secretAttributes"] : secretAttributesSerializer(item["secretAttributes"]) + }; +} +function secretAttributesSerializer(item) { + return { + enabled: item["enabled"], + nbf: !item["notBefore"] ? item["notBefore"] : item["notBefore"].getTime() / 1e3 | 0, + exp: !item["expires"] ? item["expires"] : item["expires"].getTime() / 1e3 | 0 + }; +} +function secretAttributesDeserializer(item) { + return { + enabled: item["enabled"], + notBefore: !item["nbf"] ? item["nbf"] : new Date(item["nbf"] * 1e3), + expires: !item["exp"] ? item["exp"] : new Date(item["exp"] * 1e3), + created: !item["created"] ? item["created"] : new Date(item["created"] * 1e3), + updated: !item["updated"] ? item["updated"] : new Date(item["updated"] * 1e3), + recoverableDays: item["recoverableDays"], + recoveryLevel: item["recoveryLevel"] + }; +} +function secretBundleDeserializer(item) { + return { + value: item["value"], + id: item["id"], + contentType: item["contentType"], + attributes: !item["attributes"] ? item["attributes"] : secretAttributesDeserializer(item["attributes"]), + tags: item["tags"], + kid: item["kid"], + managed: item["managed"], + previousVersion: item["previousVersion"] + }; +} +function keyVaultErrorDeserializer(item) { + return { + error: !item["error"] ? item["error"] : _keyVaultErrorErrorDeserializer(item["error"]) + }; +} +function _keyVaultErrorErrorDeserializer(item) { + return { + code: item["code"], + message: item["message"], + innerError: !item["innererror"] ? item["innererror"] : _keyVaultErrorErrorDeserializer(item["innererror"]) + }; +} +function deletedSecretBundleDeserializer(item) { + return { + value: item["value"], + id: item["id"], + contentType: item["contentType"], + attributes: !item["attributes"] ? item["attributes"] : secretAttributesDeserializer(item["attributes"]), + tags: item["tags"], + kid: item["kid"], + managed: item["managed"], + previousVersion: item["previousVersion"], + recoveryId: item["recoveryId"], + scheduledPurgeDate: !item["scheduledPurgeDate"] ? item["scheduledPurgeDate"] : new Date(item["scheduledPurgeDate"] * 1e3), + deletedDate: !item["deletedDate"] ? item["deletedDate"] : new Date(item["deletedDate"] * 1e3) + }; +} +function secretUpdateParametersSerializer(item) { + return { + contentType: item["contentType"], + attributes: !item["secretAttributes"] ? item["secretAttributes"] : secretAttributesSerializer(item["secretAttributes"]), + tags: item["tags"] + }; +} +function _secretListResultDeserializer(item) { + return { + value: !item["value"] ? item["value"] : secretItemArrayDeserializer(item["value"]), + nextLink: item["nextLink"] + }; +} +function secretItemArrayDeserializer(result) { + return result.map((item) => { + return secretItemDeserializer(item); + }); +} +function secretItemDeserializer(item) { + return { + id: item["id"], + attributes: !item["attributes"] ? item["attributes"] : secretAttributesDeserializer(item["attributes"]), + tags: item["tags"], + contentType: item["contentType"], + managed: item["managed"] + }; +} +function _deletedSecretListResultDeserializer(item) { + return { + value: !item["value"] ? item["value"] : deletedSecretItemArrayDeserializer(item["value"]), + nextLink: item["nextLink"] + }; +} +function deletedSecretItemArrayDeserializer(result) { + return result.map((item) => { + return deletedSecretItemDeserializer(item); + }); +} +function deletedSecretItemDeserializer(item) { + return { + id: item["id"], + attributes: !item["attributes"] ? item["attributes"] : secretAttributesDeserializer(item["attributes"]), + tags: item["tags"], + contentType: item["contentType"], + managed: item["managed"], + recoveryId: item["recoveryId"], + scheduledPurgeDate: !item["scheduledPurgeDate"] ? item["scheduledPurgeDate"] : new Date(item["scheduledPurgeDate"] * 1e3), + deletedDate: !item["deletedDate"] ? item["deletedDate"] : new Date(item["deletedDate"] * 1e3) + }; +} +function backupSecretResultDeserializer(item) { + return { + value: !item["value"] ? item["value"] : typeof item["value"] === "string" ? stringToUint8Array2(item["value"], "base64url") : item["value"] + }; +} +function secretRestoreParametersSerializer(item) { + return { value: uint8ArrayToString2(item["secretBundleBackup"], "base64url") }; +} +var KnownDeletionRecoveryLevel, KnownContentType, KnownVersions; +var init_models = __esm({ + "node_modules/@azure/keyvault-secrets/dist/esm/models/models.js"() { + init_esm4(); + (function(KnownDeletionRecoveryLevel2) { + KnownDeletionRecoveryLevel2["Purgeable"] = "Purgeable"; + KnownDeletionRecoveryLevel2["RecoverablePurgeable"] = "Recoverable+Purgeable"; + KnownDeletionRecoveryLevel2["Recoverable"] = "Recoverable"; + KnownDeletionRecoveryLevel2["RecoverableProtectedSubscription"] = "Recoverable+ProtectedSubscription"; + KnownDeletionRecoveryLevel2["CustomizedRecoverablePurgeable"] = "CustomizedRecoverable+Purgeable"; + KnownDeletionRecoveryLevel2["CustomizedRecoverable"] = "CustomizedRecoverable"; + KnownDeletionRecoveryLevel2["CustomizedRecoverableProtectedSubscription"] = "CustomizedRecoverable+ProtectedSubscription"; + })(KnownDeletionRecoveryLevel || (KnownDeletionRecoveryLevel = {})); + (function(KnownContentType2) { + KnownContentType2["PFX"] = "application/x-pkcs12"; + KnownContentType2["PEM"] = "application/x-pem-file"; + })(KnownContentType || (KnownContentType = {})); + (function(KnownVersions2) { + KnownVersions2["V75"] = "7.5"; + KnownVersions2["V76Preview2"] = "7.6-preview.2"; + KnownVersions2["V76"] = "7.6"; + KnownVersions2["V20250701"] = "2025-07-01"; + })(KnownVersions || (KnownVersions = {})); + } +}); + +// node_modules/@azure/keyvault-secrets/dist/esm/static-helpers/pagingHelpers.js +function buildPagedAsyncIterator(client, getInitialResponse, processResponseBody, expectedStatuses, options = {}) { + const itemName = options.itemName ?? "value"; + const nextLinkName = options.nextLinkName ?? "nextLink"; + const pagedResult = { + getPage: async (pageLink) => { + const result = pageLink === void 0 ? await getInitialResponse() : await client.pathUnchecked(pageLink).get(); + checkPagingRequest(result, expectedStatuses); + const results = await processResponseBody(result); + const nextLink = getNextLink(results, nextLinkName); + const values = getElements(results, itemName); + return { + page: values, + nextPageLink: nextLink + }; + }, + byPage: (settings) => { + const { continuationToken } = settings ?? {}; + return getPageAsyncIterator(pagedResult, { + pageLink: continuationToken + }); + } + }; + return getPagedAsyncIterator(pagedResult); +} +function getPagedAsyncIterator(pagedResult) { + const iter = getItemAsyncIterator(pagedResult); + return { + next() { + return iter.next(); + }, + [Symbol.asyncIterator]() { + return this; + }, + byPage: pagedResult?.byPage ?? ((settings) => { + const { continuationToken } = settings ?? {}; + return getPageAsyncIterator(pagedResult, { + pageLink: continuationToken + }); + }) + }; +} +async function* getItemAsyncIterator(pagedResult) { + const pages = getPageAsyncIterator(pagedResult); + for await (const page of pages) { + yield* page; + } +} +async function* getPageAsyncIterator(pagedResult, options = {}) { + const { pageLink } = options; + let response = await pagedResult.getPage(pageLink ?? pagedResult.firstPageLink); + if (!response) { + return; + } + let result = response.page; + result.continuationToken = response.nextPageLink; + yield result; + while (response.nextPageLink) { + response = await pagedResult.getPage(response.nextPageLink); + if (!response) { + return; + } + result = response.page; + result.continuationToken = response.nextPageLink; + yield result; + } +} +function getNextLink(body, nextLinkName) { + if (!nextLinkName) { + return void 0; + } + const nextLink = body[nextLinkName]; + if (typeof nextLink !== "string" && typeof nextLink !== "undefined" && nextLink !== null) { + throw new RestError2(`Body Property ${nextLinkName} should be a string or undefined or null but got ${typeof nextLink}`); + } + if (nextLink === null) { + return void 0; + } + return nextLink; +} +function getElements(body, itemName) { + const value = body[itemName]; + if (!Array.isArray(value)) { + throw new RestError2(`Couldn't paginate response + Body doesn't contain an array property with name: ${itemName}`); + } + return value ?? []; +} +function checkPagingRequest(response, expectedStatuses) { + if (!expectedStatuses.includes(response.status)) { + throw createRestError2(`Pagination failed with unexpected statusCode ${response.status}`, response); + } +} +var init_pagingHelpers = __esm({ + "node_modules/@azure/keyvault-secrets/dist/esm/static-helpers/pagingHelpers.js"() { + init_esm10(); + init_esm6(); + } +}); + +// node_modules/@azure/keyvault-secrets/dist/esm/static-helpers/urlTemplate.js +function encodeComponent(val, reserved, op) { + return (reserved ?? op === "+") || op === "#" ? encodeReservedComponent(val) : encodeRFC3986URIComponent(val); +} +function encodeReservedComponent(str) { + return str.split(/(%[0-9A-Fa-f]{2})/g).map((part) => !/%[0-9A-Fa-f]/.test(part) ? encodeURI(part) : part).join(""); +} +function encodeRFC3986URIComponent(str) { + return encodeURIComponent(str).replace(/[!'()*]/g, (c) => `%${c.charCodeAt(0).toString(16).toUpperCase()}`); +} +function isDefined2(val) { + return val !== void 0 && val !== null; +} +function getNamedAndIfEmpty(op) { + return [!!op && [";", "?", "&"].includes(op), !!op && ["?", "&"].includes(op) ? "=" : ""]; +} +function getFirstOrSep(op, isFirst = false) { + if (isFirst) { + return !op || op === "+" ? "" : op; + } else if (!op || op === "+" || op === "#") { + return ","; + } else if (op === "?") { + return "&"; + } else { + return op; + } +} +function getExpandedValue(option) { + let isFirst = option.isFirst; + const { op, varName, varValue: value, reserved } = option; + const vals = []; + const [named, ifEmpty] = getNamedAndIfEmpty(op); + if (Array.isArray(value)) { + for (const val of value.filter(isDefined2)) { + vals.push(`${getFirstOrSep(op, isFirst)}`); + if (named && varName) { + vals.push(`${encodeURIComponent(varName)}`); + val === "" ? vals.push(ifEmpty) : vals.push("="); + } + vals.push(encodeComponent(val, reserved, op)); + isFirst = false; + } + } else if (typeof value === "object") { + for (const key of Object.keys(value)) { + const val = value[key]; + if (!isDefined2(val)) { + continue; + } + vals.push(`${getFirstOrSep(op, isFirst)}`); + if (key) { + vals.push(`${encodeURIComponent(key)}`); + named && val === "" ? vals.push(ifEmpty) : vals.push("="); + } + vals.push(encodeComponent(val, reserved, op)); + isFirst = false; + } + } + return vals.join(""); +} +function getNonExpandedValue(option) { + const { op, varName, varValue: value, isFirst, reserved } = option; + const vals = []; + const first = getFirstOrSep(op, isFirst); + const [named, ifEmpty] = getNamedAndIfEmpty(op); + if (named && varName) { + vals.push(encodeComponent(varName, reserved, op)); + if (value === "") { + if (!ifEmpty) { + vals.push(ifEmpty); + } + return !vals.join("") ? void 0 : `${first}${vals.join("")}`; + } + vals.push("="); + } + const items = []; + if (Array.isArray(value)) { + for (const val of value.filter(isDefined2)) { + items.push(encodeComponent(val, reserved, op)); + } + } else if (typeof value === "object") { + for (const key of Object.keys(value)) { + if (!isDefined2(value[key])) { + continue; + } + items.push(encodeRFC3986URIComponent(key)); + items.push(encodeComponent(value[key], reserved, op)); + } + } + vals.push(items.join(",")); + return !vals.join(",") ? void 0 : `${first}${vals.join("")}`; +} +function getVarValue(option) { + const { op, varName, modifier, isFirst, reserved, varValue: value } = option; + if (!isDefined2(value)) { + return void 0; + } else if (["string", "number", "boolean"].includes(typeof value)) { + let val = value.toString(); + const [named, ifEmpty] = getNamedAndIfEmpty(op); + const vals = [getFirstOrSep(op, isFirst)]; + if (named && varName) { + vals.push(varName); + val === "" ? vals.push(ifEmpty) : vals.push("="); + } + if (modifier && modifier !== "*") { + val = val.substring(0, parseInt(modifier, 10)); + } + vals.push(encodeComponent(val, reserved, op)); + return vals.join(""); + } else if (modifier === "*") { + return getExpandedValue(option); + } else { + return getNonExpandedValue(option); + } +} +function expandUrlTemplate(template, context3, option) { + return template.replace(/\{([^\{\}]+)\}|([^\{\}]+)/g, (_, expr, text) => { + if (!expr) { + return encodeReservedComponent(text); + } + let op; + if (["+", "#", ".", "/", ";", "?", "&"].includes(expr[0])) { + op = expr[0], expr = expr.slice(1); + } + const varList = expr.split(/,/g); + const result = []; + for (const varSpec of varList) { + const varMatch = /([^:\*]*)(?::(\d+)|(\*))?/.exec(varSpec); + if (!varMatch || !varMatch[1]) { + continue; + } + const varValue = getVarValue({ + isFirst: result.length === 0, + op, + varValue: context3[varMatch[1]], + varName: varMatch[1], + modifier: varMatch[2] || varMatch[3], + reserved: option?.allowReserved + }); + if (varValue) { + result.push(varValue); + } + } + return result.join(""); + }); +} +var init_urlTemplate = __esm({ + "node_modules/@azure/keyvault-secrets/dist/esm/static-helpers/urlTemplate.js"() { + } +}); + +// node_modules/@azure/keyvault-secrets/dist/esm/api/operations.js +function _restoreSecretSend(context3, parameters, options = { requestOptions: {} }) { + const path9 = expandUrlTemplate("/secrets/restore{?api%2Dversion}", { + "api%2Dversion": context3.apiVersion + }, { + allowReserved: options?.requestOptions?.skipUrlEncoding + }); + return context3.path(path9).post({ + ...operationOptionsToRequestParameters2(options), + contentType: "application/json", + headers: { + accept: "application/json", + ...options.requestOptions?.headers + }, + body: secretRestoreParametersSerializer(parameters) + }); +} +async function _restoreSecretDeserialize(result) { + const expectedStatuses = ["200"]; + if (!expectedStatuses.includes(result.status)) { + const error2 = createRestError2(result); + error2.details = keyVaultErrorDeserializer(result.body); + throw error2; + } + return secretBundleDeserializer(result.body); +} +async function restoreSecret(context3, parameters, options = { requestOptions: {} }) { + const result = await _restoreSecretSend(context3, parameters, options); + return _restoreSecretDeserialize(result); +} +function _backupSecretSend(context3, secretName, options = { requestOptions: {} }) { + const path9 = expandUrlTemplate("/secrets/{secret-name}/backup{?api%2Dversion}", { + "secret-name": secretName, + "api%2Dversion": context3.apiVersion + }, { + allowReserved: options?.requestOptions?.skipUrlEncoding + }); + return context3.path(path9).post({ + ...operationOptionsToRequestParameters2(options), + headers: { + accept: "application/json", + ...options.requestOptions?.headers + } + }); +} +async function _backupSecretDeserialize(result) { + const expectedStatuses = ["200"]; + if (!expectedStatuses.includes(result.status)) { + const error2 = createRestError2(result); + error2.details = keyVaultErrorDeserializer(result.body); + throw error2; + } + return backupSecretResultDeserializer(result.body); +} +async function backupSecret(context3, secretName, options = { requestOptions: {} }) { + const result = await _backupSecretSend(context3, secretName, options); + return _backupSecretDeserialize(result); +} +function _recoverDeletedSecretSend(context3, secretName, options = { requestOptions: {} }) { + const path9 = expandUrlTemplate("/deletedsecrets/{secret-name}/recover{?api%2Dversion}", { + "secret-name": secretName, + "api%2Dversion": context3.apiVersion + }, { + allowReserved: options?.requestOptions?.skipUrlEncoding + }); + return context3.path(path9).post({ + ...operationOptionsToRequestParameters2(options), + headers: { + accept: "application/json", + ...options.requestOptions?.headers + } + }); +} +async function _recoverDeletedSecretDeserialize(result) { + const expectedStatuses = ["200"]; + if (!expectedStatuses.includes(result.status)) { + const error2 = createRestError2(result); + error2.details = keyVaultErrorDeserializer(result.body); + throw error2; + } + return secretBundleDeserializer(result.body); +} +async function recoverDeletedSecret(context3, secretName, options = { requestOptions: {} }) { + const result = await _recoverDeletedSecretSend(context3, secretName, options); + return _recoverDeletedSecretDeserialize(result); +} +function _purgeDeletedSecretSend(context3, secretName, options = { requestOptions: {} }) { + const path9 = expandUrlTemplate("/deletedsecrets/{secret-name}{?api%2Dversion}", { + "secret-name": secretName, + "api%2Dversion": context3.apiVersion + }, { + allowReserved: options?.requestOptions?.skipUrlEncoding + }); + return context3.path(path9).delete({ + ...operationOptionsToRequestParameters2(options), + headers: { + accept: "application/json", + ...options.requestOptions?.headers + } + }); +} +async function _purgeDeletedSecretDeserialize(result) { + const expectedStatuses = ["204"]; + if (!expectedStatuses.includes(result.status)) { + const error2 = createRestError2(result); + error2.details = keyVaultErrorDeserializer(result.body); + throw error2; + } + return; +} +async function purgeDeletedSecret(context3, secretName, options = { requestOptions: {} }) { + const result = await _purgeDeletedSecretSend(context3, secretName, options); + return _purgeDeletedSecretDeserialize(result); +} +function _getDeletedSecretSend(context3, secretName, options = { requestOptions: {} }) { + const path9 = expandUrlTemplate("/deletedsecrets/{secret-name}{?api%2Dversion}", { + "secret-name": secretName, + "api%2Dversion": context3.apiVersion + }, { + allowReserved: options?.requestOptions?.skipUrlEncoding + }); + return context3.path(path9).get({ + ...operationOptionsToRequestParameters2(options), + headers: { + accept: "application/json", + ...options.requestOptions?.headers + } + }); +} +async function _getDeletedSecretDeserialize(result) { + const expectedStatuses = ["200"]; + if (!expectedStatuses.includes(result.status)) { + const error2 = createRestError2(result); + error2.details = keyVaultErrorDeserializer(result.body); + throw error2; + } + return deletedSecretBundleDeserializer(result.body); +} +async function getDeletedSecret(context3, secretName, options = { requestOptions: {} }) { + const result = await _getDeletedSecretSend(context3, secretName, options); + return _getDeletedSecretDeserialize(result); +} +function _getDeletedSecretsSend(context3, options = { requestOptions: {} }) { + const path9 = expandUrlTemplate("/deletedsecrets{?api%2Dversion,maxresults}", { + "api%2Dversion": context3.apiVersion, + maxresults: options?.maxresults + }, { + allowReserved: options?.requestOptions?.skipUrlEncoding + }); + return context3.path(path9).get({ + ...operationOptionsToRequestParameters2(options), + headers: { + accept: "application/json", + ...options.requestOptions?.headers + } + }); +} +async function _getDeletedSecretsDeserialize(result) { + const expectedStatuses = ["200"]; + if (!expectedStatuses.includes(result.status)) { + const error2 = createRestError2(result); + error2.details = keyVaultErrorDeserializer(result.body); + throw error2; + } + return _deletedSecretListResultDeserializer(result.body); +} +function getDeletedSecrets(context3, options = { requestOptions: {} }) { + return buildPagedAsyncIterator(context3, () => _getDeletedSecretsSend(context3, options), _getDeletedSecretsDeserialize, ["200"], { itemName: "value", nextLinkName: "nextLink" }); +} +function _getSecretVersionsSend(context3, secretName, options = { requestOptions: {} }) { + const path9 = expandUrlTemplate("/secrets/{secret-name}/versions{?api%2Dversion,maxresults}", { + "secret-name": secretName, + "api%2Dversion": context3.apiVersion, + maxresults: options?.maxresults + }, { + allowReserved: options?.requestOptions?.skipUrlEncoding + }); + return context3.path(path9).get({ + ...operationOptionsToRequestParameters2(options), + headers: { + accept: "application/json", + ...options.requestOptions?.headers + } + }); +} +async function _getSecretVersionsDeserialize(result) { + const expectedStatuses = ["200"]; + if (!expectedStatuses.includes(result.status)) { + const error2 = createRestError2(result); + error2.details = keyVaultErrorDeserializer(result.body); + throw error2; + } + return _secretListResultDeserializer(result.body); +} +function getSecretVersions(context3, secretName, options = { requestOptions: {} }) { + return buildPagedAsyncIterator(context3, () => _getSecretVersionsSend(context3, secretName, options), _getSecretVersionsDeserialize, ["200"], { itemName: "value", nextLinkName: "nextLink" }); +} +function _getSecretsSend(context3, options = { requestOptions: {} }) { + const path9 = expandUrlTemplate("/secrets{?api%2Dversion,maxresults}", { + "api%2Dversion": context3.apiVersion, + maxresults: options?.maxresults + }, { + allowReserved: options?.requestOptions?.skipUrlEncoding + }); + return context3.path(path9).get({ + ...operationOptionsToRequestParameters2(options), + headers: { + accept: "application/json", + ...options.requestOptions?.headers + } + }); +} +async function _getSecretsDeserialize(result) { + const expectedStatuses = ["200"]; + if (!expectedStatuses.includes(result.status)) { + const error2 = createRestError2(result); + error2.details = keyVaultErrorDeserializer(result.body); + throw error2; + } + return _secretListResultDeserializer(result.body); +} +function getSecrets(context3, options = { requestOptions: {} }) { + return buildPagedAsyncIterator(context3, () => _getSecretsSend(context3, options), _getSecretsDeserialize, ["200"], { itemName: "value", nextLinkName: "nextLink" }); +} +function _getSecretSend(context3, secretName, secretVersion, options = { requestOptions: {} }) { + const path9 = expandUrlTemplate("/secrets/{secret-name}/{secret-version}{?api%2Dversion,outContentType}", { + "secret-name": secretName, + "secret-version": secretVersion, + "api%2Dversion": context3.apiVersion, + outContentType: options?.outContentType + }, { + allowReserved: options?.requestOptions?.skipUrlEncoding + }); + return context3.path(path9).get({ + ...operationOptionsToRequestParameters2(options), + headers: { + accept: "application/json", + ...options.requestOptions?.headers + } + }); +} +async function _getSecretDeserialize(result) { + const expectedStatuses = ["200"]; + if (!expectedStatuses.includes(result.status)) { + const error2 = createRestError2(result); + error2.details = keyVaultErrorDeserializer(result.body); + throw error2; + } + return secretBundleDeserializer(result.body); +} +async function getSecret(context3, secretName, secretVersion, options = { requestOptions: {} }) { + const result = await _getSecretSend(context3, secretName, secretVersion, options); + return _getSecretDeserialize(result); +} +function _updateSecretSend(context3, secretName, secretVersion, parameters, options = { requestOptions: {} }) { + const path9 = expandUrlTemplate("/secrets/{secret-name}/{secret-version}{?api%2Dversion}", { + "secret-name": secretName, + "secret-version": secretVersion, + "api%2Dversion": context3.apiVersion + }, { + allowReserved: options?.requestOptions?.skipUrlEncoding + }); + return context3.path(path9).patch({ + ...operationOptionsToRequestParameters2(options), + contentType: "application/json", + headers: { + accept: "application/json", + ...options.requestOptions?.headers + }, + body: secretUpdateParametersSerializer(parameters) + }); +} +async function _updateSecretDeserialize(result) { + const expectedStatuses = ["200"]; + if (!expectedStatuses.includes(result.status)) { + const error2 = createRestError2(result); + error2.details = keyVaultErrorDeserializer(result.body); + throw error2; + } + return secretBundleDeserializer(result.body); +} +async function updateSecret(context3, secretName, secretVersion, parameters, options = { requestOptions: {} }) { + const result = await _updateSecretSend(context3, secretName, secretVersion, parameters, options); + return _updateSecretDeserialize(result); +} +function _deleteSecretSend(context3, secretName, options = { requestOptions: {} }) { + const path9 = expandUrlTemplate("/secrets/{secret-name}{?api%2Dversion}", { + "secret-name": secretName, + "api%2Dversion": context3.apiVersion + }, { + allowReserved: options?.requestOptions?.skipUrlEncoding + }); + return context3.path(path9).delete({ + ...operationOptionsToRequestParameters2(options), + headers: { + accept: "application/json", + ...options.requestOptions?.headers + } + }); +} +async function _deleteSecretDeserialize(result) { + const expectedStatuses = ["200"]; + if (!expectedStatuses.includes(result.status)) { + const error2 = createRestError2(result); + error2.details = keyVaultErrorDeserializer(result.body); + throw error2; + } + return deletedSecretBundleDeserializer(result.body); +} +async function deleteSecret(context3, secretName, options = { requestOptions: {} }) { + const result = await _deleteSecretSend(context3, secretName, options); + return _deleteSecretDeserialize(result); +} +function _setSecretSend(context3, secretName, parameters, options = { requestOptions: {} }) { + const path9 = expandUrlTemplate("/secrets/{secret-name}{?api%2Dversion}", { + "secret-name": secretName, + "api%2Dversion": context3.apiVersion + }, { + allowReserved: options?.requestOptions?.skipUrlEncoding + }); + return context3.path(path9).put({ + ...operationOptionsToRequestParameters2(options), + contentType: "application/json", + headers: { + accept: "application/json", + ...options.requestOptions?.headers + }, + body: secretSetParametersSerializer(parameters) + }); +} +async function _setSecretDeserialize(result) { + const expectedStatuses = ["200"]; + if (!expectedStatuses.includes(result.status)) { + const error2 = createRestError2(result); + error2.details = keyVaultErrorDeserializer(result.body); + throw error2; + } + return secretBundleDeserializer(result.body); +} +async function setSecret(context3, secretName, parameters, options = { requestOptions: {} }) { + const result = await _setSecretSend(context3, secretName, parameters, options); + return _setSecretDeserialize(result); +} +var init_operations = __esm({ + "node_modules/@azure/keyvault-secrets/dist/esm/api/operations.js"() { + init_models(); + init_pagingHelpers(); + init_urlTemplate(); + init_esm10(); + } +}); + +// node_modules/@azure/keyvault-secrets/dist/esm/api/index.js +var init_api = __esm({ + "node_modules/@azure/keyvault-secrets/dist/esm/api/index.js"() { + init_keyVaultContext(); + init_operations(); + } +}); + +// node_modules/@azure/keyvault-secrets/dist/esm/keyVaultClient.js +var KeyVaultClient; +var init_keyVaultClient = __esm({ + "node_modules/@azure/keyvault-secrets/dist/esm/keyVaultClient.js"() { + init_api(); + init_operations(); + KeyVaultClient = class { + _client; + /** The pipeline used by this client to make requests */ + pipeline; + /** The key vault client performs cryptographic key operations and vault operations against the Key Vault service. */ + constructor(endpointParam, credential, options = {}) { + const prefixFromOptions = options?.userAgentOptions?.userAgentPrefix; + const userAgentPrefix = prefixFromOptions ? `${prefixFromOptions} azsdk-js-client` : `azsdk-js-client`; + this._client = createKeyVault(endpointParam, credential, { + ...options, + userAgentOptions: { userAgentPrefix } + }); + this.pipeline = this._client.pipeline; + } + /** Restores a backed up secret, and all its versions, to a vault. This operation requires the secrets/restore permission. */ + restoreSecret(parameters, options = { requestOptions: {} }) { + return restoreSecret(this._client, parameters, options); + } + /** Requests that a backup of the specified secret be downloaded to the client. All versions of the secret will be downloaded. This operation requires the secrets/backup permission. */ + backupSecret(secretName, options = { requestOptions: {} }) { + return backupSecret(this._client, secretName, options); + } + /** Recovers the deleted secret in the specified vault. This operation can only be performed on a soft-delete enabled vault. This operation requires the secrets/recover permission. */ + recoverDeletedSecret(secretName, options = { requestOptions: {} }) { + return recoverDeletedSecret(this._client, secretName, options); + } + /** The purge deleted secret operation removes the secret permanently, without the possibility of recovery. This operation can only be enabled on a soft-delete enabled vault. This operation requires the secrets/purge permission. */ + purgeDeletedSecret(secretName, options = { requestOptions: {} }) { + return purgeDeletedSecret(this._client, secretName, options); + } + /** The Get Deleted Secret operation returns the specified deleted secret along with its attributes. This operation requires the secrets/get permission. */ + getDeletedSecret(secretName, options = { requestOptions: {} }) { + return getDeletedSecret(this._client, secretName, options); + } + /** The Get Deleted Secrets operation returns the secrets that have been deleted for a vault enabled for soft-delete. This operation requires the secrets/list permission. */ + getDeletedSecrets(options = { requestOptions: {} }) { + return getDeletedSecrets(this._client, options); + } + /** The full secret identifier and attributes are provided in the response. No values are returned for the secrets. This operations requires the secrets/list permission. */ + getSecretVersions(secretName, options = { requestOptions: {} }) { + return getSecretVersions(this._client, secretName, options); + } + /** The Get Secrets operation is applicable to the entire vault. However, only the base secret identifier and its attributes are provided in the response. Individual secret versions are not listed in the response. This operation requires the secrets/list permission. */ + getSecrets(options = { requestOptions: {} }) { + return getSecrets(this._client, options); + } + /** The GET operation is applicable to any secret stored in Azure Key Vault. This operation requires the secrets/get permission. */ + getSecret(secretName, secretVersion, options = { requestOptions: {} }) { + return getSecret(this._client, secretName, secretVersion, options); + } + /** The UPDATE operation changes specified attributes of an existing stored secret. Attributes that are not specified in the request are left unchanged. The value of a secret itself cannot be changed. This operation requires the secrets/set permission. */ + updateSecret(secretName, secretVersion, parameters, options = { requestOptions: {} }) { + return updateSecret(this._client, secretName, secretVersion, parameters, options); + } + /** The DELETE operation applies to any secret stored in Azure Key Vault. DELETE cannot be applied to an individual version of a secret. This operation requires the secrets/delete permission. */ + deleteSecret(secretName, options = { requestOptions: {} }) { + return deleteSecret(this._client, secretName, options); + } + /** The SET operation adds a secret to the Azure Key Vault. If the named secret already exists, Azure Key Vault creates a new version of that secret. This operation requires the secrets/set permission. */ + setSecret(secretName, parameters, options = { requestOptions: {} }) { + return setSecret(this._client, secretName, parameters, options); + } + }; + } +}); + +// node_modules/@azure/keyvault-common/dist/esm/parseWWWAuthenticate.js +function parseWWWAuthenticateHeader(headerValue) { + const pairDelimiter = /,? +/; + const parsed = headerValue.split(pairDelimiter).reduce((kvPairs, p) => { + if (p.match(/\w="/)) { + const [key, ...value] = p.split("="); + if (validWWWAuthenticateProperties.includes(key)) { + return { ...kvPairs, [key]: value.join("=").slice(1, -1) }; + } + } + return kvPairs; + }, {}); + if (parsed.authorization) { + try { + const tenantId = new URL(parsed.authorization).pathname.substring(1); + if (tenantId) { + parsed.tenantId = tenantId; + } + } catch (_) { + throw new Error(`The challenge authorization URI '${parsed.authorization}' is invalid.`); + } + } + return parsed; +} +var validWWWAuthenticateProperties; +var init_parseWWWAuthenticate = __esm({ + "node_modules/@azure/keyvault-common/dist/esm/parseWWWAuthenticate.js"() { + validWWWAuthenticateProperties = [ + "authorization", + "authorization_url", + "resource", + "scope", + "tenantId", + "claims", + "error" + ]; + } +}); + +// node_modules/@azure/keyvault-common/dist/esm/tokenCycler.js +async function beginRefresh2(getAccessToken, retryIntervalInMs, refreshTimeout) { + async function tryGetAccessToken() { + if (Date.now() < refreshTimeout) { + try { + return await getAccessToken(); + } catch { + return null; + } + } else { + const finalToken = await getAccessToken(); + if (finalToken === null) { + throw new Error("Failed to refresh access token."); + } + return finalToken; + } + } + let token = await tryGetAccessToken(); + while (token === null) { + await delay3(retryIntervalInMs); + token = await tryGetAccessToken(); + } + return token; +} +function createTokenCycler2(credential, tokenCyclerOptions) { + let refreshWorker = null; + let token = null; + let tenantId; + const options = { + ...DEFAULT_CYCLER_OPTIONS2, + ...tokenCyclerOptions + }; + const cycler = { + /** + * Produces true if a refresh job is currently in progress. + */ + get isRefreshing() { + return refreshWorker !== null; + }, + /** + * Produces true if the cycler SHOULD refresh (we are within the refresh + * window and not already refreshing) + */ + get shouldRefresh() { + if (cycler.isRefreshing) { + return false; + } + if (token?.refreshAfterTimestamp && token.refreshAfterTimestamp < Date.now()) { + return true; + } + return (token?.expiresOnTimestamp ?? 0) - options.refreshWindowInMs < Date.now(); + }, + /** + * Produces true if the cycler MUST refresh (null or nearly-expired + * token). + */ + get mustRefresh() { + return token === null || token.expiresOnTimestamp - options.forcedRefreshWindowInMs < Date.now(); + } + }; + function refresh(scopes, getTokenOptions) { + if (!cycler.isRefreshing) { + const tryGetAccessToken = () => credential.getToken(scopes, getTokenOptions); + refreshWorker = beginRefresh2( + tryGetAccessToken, + options.retryIntervalInMs, + // If we don't have a token, then we should timeout immediately + token?.expiresOnTimestamp ?? Date.now() + ).then((_token) => { + refreshWorker = null; + token = _token; + tenantId = getTokenOptions.tenantId; + return token; + }).catch((reason) => { + refreshWorker = null; + token = null; + tenantId = void 0; + throw reason; + }); + } + return refreshWorker; + } + return async (scopes, tokenOptions) => { + const hasClaimChallenge = Boolean(tokenOptions.claims); + const tenantIdChanged = tenantId !== tokenOptions.tenantId; + if (hasClaimChallenge) { + token = null; + } + const mustRefresh = tenantIdChanged || hasClaimChallenge || cycler.mustRefresh; + if (mustRefresh) { + return refresh(scopes, tokenOptions); + } + if (cycler.shouldRefresh) { + refresh(scopes, tokenOptions); + } + return token; + }; +} +var DEFAULT_CYCLER_OPTIONS2; +var init_tokenCycler2 = __esm({ + "node_modules/@azure/keyvault-common/dist/esm/tokenCycler.js"() { + init_esm4(); + DEFAULT_CYCLER_OPTIONS2 = { + forcedRefreshWindowInMs: 1e3, + // Force waiting for a refresh 1s before the token expires + retryIntervalInMs: 3e3, + // Allow refresh attempts every 3s + refreshWindowInMs: 1e3 * 60 * 2 + // Start refreshing 2m before expiry + }; + } +}); + +// node_modules/@azure/keyvault-common/dist/esm/logger.js +var logger29; +var init_logger3 = __esm({ + "node_modules/@azure/keyvault-common/dist/esm/logger.js"() { + init_esm(); + logger29 = createClientLogger2("keyvault-common"); + } +}); + +// node_modules/@azure/keyvault-common/dist/esm/keyVaultAuthenticationPolicy.js +function verifyChallengeResource(scope, request) { + let scopeAsUrl; + try { + scopeAsUrl = new URL(scope); + } catch (e) { + throw new Error(`The challenge contains invalid scope '${scope}'`); + } + const requestUrl = new URL(request.url); + if (!requestUrl.hostname.endsWith(`.${scopeAsUrl.hostname}`)) { + throw new Error(`The challenge resource '${scopeAsUrl.hostname}' does not match the requested domain. Set disableChallengeResourceVerification to true in your client options to disable. See https://aka.ms/azsdk/blog/vault-uri for more information.`); + } +} +function keyVaultAuthenticationPolicy(credential, options = {}) { + const { disableChallengeResourceVerification } = options; + let challengeState = { status: "none" }; + const getAccessToken = createTokenCycler2(credential); + function requestToOptions(request) { + return { + abortSignal: request.abortSignal, + requestOptions: { + timeout: request.timeout > 0 ? request.timeout : void 0 + }, + tracingOptions: request.tracingOptions + }; + } + async function authorizeRequest(request) { + const requestOptions = requestToOptions(request); + switch (challengeState.status) { + case "none": + challengeState = { + status: "started", + originalBody: request.body + }; + request.body = null; + break; + case "started": + break; + // Retry, we should not overwrite the original body + case "complete": { + const token = await getAccessToken(challengeState.scopes, { + ...requestOptions, + enableCae: true, + tenantId: challengeState.tenantId + }); + if (token) { + request.headers.set("authorization", `Bearer ${token.token}`); + } + break; + } + } + } + async function handleChallenge(request, response, next) { + if (response.status !== 401) { + return response; + } + if (request.body === null && challengeState.status === "started") { + request.body = challengeState.originalBody; + } + const getTokenOptions = requestToOptions(request); + const challenge = response.headers.get("WWW-Authenticate"); + if (!challenge) { + logger29.warning("keyVaultAuthentication policy encountered a 401 response without a corresponding WWW-Authenticate header. This is unexpected. Not handling the 401 response."); + return response; + } + const parsedChallenge = parseWWWAuthenticateHeader(challenge); + const scope = parsedChallenge.resource ? parsedChallenge.resource + "/.default" : parsedChallenge.scope; + if (!scope) { + return response; + } + if (!disableChallengeResourceVerification) { + verifyChallengeResource(scope, request); + } + const accessToken = await getAccessToken([scope], { + ...getTokenOptions, + enableCae: true, + tenantId: parsedChallenge.tenantId + }); + if (!accessToken) { + return response; + } + request.headers.set("Authorization", `Bearer ${accessToken.token}`); + challengeState = { + status: "complete", + scopes: [scope], + tenantId: parsedChallenge.tenantId + }; + return next(request); + } + async function handleCaeChallenge(request, response, next) { + if (challengeState.status !== "complete") { + return response; + } + if (response.status !== 401) { + return response; + } + const getTokenOptions = requestToOptions(request); + const challenge = response.headers.get("WWW-Authenticate"); + if (!challenge) { + return response; + } + const { claims: base64EncodedClaims, error: error2 } = parseWWWAuthenticateHeader(challenge); + if (error2 !== "insufficient_claims" || base64EncodedClaims === void 0) { + return response; + } + const claims = atob(base64EncodedClaims); + const accessToken = await getAccessToken(challengeState.scopes, { + ...getTokenOptions, + enableCae: true, + tenantId: challengeState.tenantId, + claims + }); + request.headers.set("Authorization", `Bearer ${accessToken.token}`); + return next(request); + } + async function sendRequest2(request, next) { + await authorizeRequest(request); + let response = await next(request); + response = await handleChallenge(request, response, next); + response = await handleCaeChallenge(request, response, next); + return response; + } + return { + name: keyVaultAuthenticationPolicyName, + sendRequest: sendRequest2 + }; +} +var keyVaultAuthenticationPolicyName; +var init_keyVaultAuthenticationPolicy = __esm({ + "node_modules/@azure/keyvault-common/dist/esm/keyVaultAuthenticationPolicy.js"() { + init_parseWWWAuthenticate(); + init_tokenCycler2(); + init_logger3(); + keyVaultAuthenticationPolicyName = "keyVaultAuthenticationPolicy"; + } +}); + +// node_modules/@azure/keyvault-common/dist/esm/parseKeyVaultIdentifier.js +function parseKeyVaultIdentifier(collection, identifier) { + if (typeof collection !== "string" || !(collection = collection.trim())) { + throw new Error("Invalid collection argument"); + } + if (typeof identifier !== "string" || !(identifier = identifier.trim())) { + throw new Error("Invalid identifier argument"); + } + let baseUri; + try { + baseUri = new URL(identifier); + } catch (e) { + throw new Error(`Invalid ${collection} identifier: ${identifier}. Not a valid URI`); + } + const segments = (baseUri.pathname || "").split("/"); + if (segments.length !== 3 && segments.length !== 4) { + throw new Error(`Invalid ${collection} identifier: ${identifier}. Bad number of segments: ${segments.length}`); + } + if (collection !== segments[1]) { + throw new Error(`Invalid ${collection} identifier: ${identifier}. segment [1] should be "${collection}", found "${segments[1]}"`); + } + const vaultUrl = `${baseUri.protocol}//${baseUri.host}`; + const name5 = segments[2]; + const version8 = segments.length === 4 ? segments[3] : void 0; + return { + vaultUrl, + name: name5, + version: version8 + }; +} +var init_parseKeyVaultIdentifier = __esm({ + "node_modules/@azure/keyvault-common/dist/esm/parseKeyVaultIdentifier.js"() { + } +}); + +// node_modules/@azure/keyvault-common/dist/esm/index.js +var init_esm11 = __esm({ + "node_modules/@azure/keyvault-common/dist/esm/index.js"() { + init_keyVaultAuthenticationPolicy(); + init_parseKeyVaultIdentifier(); + } +}); + +// node_modules/@azure/keyvault-secrets/dist/esm/secretsModels.js +var LATEST_API_VERSION; +var init_secretsModels = __esm({ + "node_modules/@azure/keyvault-secrets/dist/esm/secretsModels.js"() { + LATEST_API_VERSION = "2025-07-01"; + } +}); + +// node_modules/@azure/keyvault-secrets/dist/esm/identifier.js +function parseKeyVaultSecretIdentifier(id) { + const urlParts = id.split("/"); + const collection = urlParts[3]; + return { + sourceId: id, + ...parseKeyVaultIdentifier(collection, id) + }; +} +var init_identifier = __esm({ + "node_modules/@azure/keyvault-secrets/dist/esm/identifier.js"() { + init_esm11(); + } +}); + +// node_modules/@azure/keyvault-secrets/dist/esm/transformations.js +function getSecretFromSecretBundle(bundle) { + const secretBundle = bundle; + const deletedSecretBundle = bundle; + const parsedId = parseKeyVaultSecretIdentifier(secretBundle.id); + const attributes = secretBundle.attributes; + delete secretBundle.attributes; + const resultObject = { + value: secretBundle.value, + name: parsedId.name, + properties: { + expiresOn: attributes?.expires, + createdOn: attributes?.created, + updatedOn: attributes?.updated, + enabled: attributes?.enabled, + notBefore: attributes?.notBefore, + recoverableDays: attributes?.recoverableDays, + recoveryLevel: attributes?.recoveryLevel, + id: secretBundle.id, + contentType: secretBundle.contentType, + tags: secretBundle.tags, + managed: secretBundle.managed, + previousVersion: secretBundle.previousVersion, + vaultUrl: parsedId.vaultUrl, + version: parsedId.version, + name: parsedId.name, + certificateKeyId: secretBundle.kid + } + }; + if (deletedSecretBundle.recoveryId) { + resultObject.properties.recoveryId = deletedSecretBundle.recoveryId; + resultObject.properties.scheduledPurgeDate = deletedSecretBundle.scheduledPurgeDate; + resultObject.properties.deletedOn = deletedSecretBundle.deletedDate; + resultObject.recoveryId = deletedSecretBundle.recoveryId; + resultObject.scheduledPurgeDate = deletedSecretBundle.scheduledPurgeDate; + resultObject.deletedOn = deletedSecretBundle.deletedDate; + } + if (attributes) { + if (attributes.vaultUrl) { + delete resultObject.properties.vaultUrl; + } + if (attributes.expires) { + delete resultObject.properties.expires; + } + if (attributes.created) { + delete resultObject.properties.created; + } + if (attributes.updated) { + delete resultObject.properties.updated; + } + } + return resultObject; +} +function mapPagedAsyncIterable(operation, operationOptions, mapper) { + let iter = void 0; + return { + async next() { + iter ??= operation({ ...operationOptions, maxresults: void 0 }); + const result = await iter.next(); + return { + ...result, + value: result.value && mapper(result.value) + }; + }, + [Symbol.asyncIterator]() { + return this; + }, + async *byPage(settings) { + const iteratorByPage = operation({ + ...operationOptions, + maxresults: settings?.maxPageSize + }).byPage(settings); + for await (const page of iteratorByPage) { + yield page.map(mapper); + } + } + }; +} +var init_transformations = __esm({ + "node_modules/@azure/keyvault-secrets/dist/esm/transformations.js"() { + init_identifier(); + } +}); + +// node_modules/@azure/keyvault-secrets/dist/esm/tracing.js +var tracingClient2; +var init_tracing2 = __esm({ + "node_modules/@azure/keyvault-secrets/dist/esm/tracing.js"() { + init_esm2(); + init_constants4(); + tracingClient2 = createTracingClient({ + namespace: "Microsoft.KeyVault", + packageName: "@azure/keyvault-secrets", + packageVersion: SDK_VERSION4 + }); + } +}); + +// node_modules/@azure/core-lro/dist/esm/logger.js +var logger30; +var init_logger4 = __esm({ + "node_modules/@azure/core-lro/dist/esm/logger.js"() { + init_esm(); + logger30 = createClientLogger2("core-lro"); + } +}); + +// node_modules/@azure/core-lro/dist/esm/poller/constants.js +var init_constants5 = __esm({ + "node_modules/@azure/core-lro/dist/esm/poller/constants.js"() { + } +}); + +// node_modules/@azure/core-lro/dist/esm/poller/operation.js +var init_operation = __esm({ + "node_modules/@azure/core-lro/dist/esm/poller/operation.js"() { + init_logger4(); + init_constants5(); + } +}); + +// node_modules/@azure/core-lro/dist/esm/http/operation.js +var init_operation2 = __esm({ + "node_modules/@azure/core-lro/dist/esm/http/operation.js"() { + init_operation(); + init_logger4(); + } +}); + +// node_modules/@azure/core-lro/dist/esm/poller/poller.js +var init_poller = __esm({ + "node_modules/@azure/core-lro/dist/esm/poller/poller.js"() { + init_operation(); + init_constants5(); + init_esm4(); + } +}); + +// node_modules/@azure/core-lro/dist/esm/http/poller.js +var init_poller2 = __esm({ + "node_modules/@azure/core-lro/dist/esm/http/poller.js"() { + init_operation2(); + init_poller(); + } +}); + +// node_modules/@azure/core-lro/dist/esm/legacy/lroEngine/operation.js +var init_operation3 = __esm({ + "node_modules/@azure/core-lro/dist/esm/legacy/lroEngine/operation.js"() { + init_operation2(); + init_logger4(); + } +}); + +// node_modules/@azure/core-lro/dist/esm/legacy/poller.js +var PollerStoppedError, PollerCancelledError, Poller; +var init_poller3 = __esm({ + "node_modules/@azure/core-lro/dist/esm/legacy/poller.js"() { + PollerStoppedError = class _PollerStoppedError extends Error { + constructor(message) { + super(message); + this.name = "PollerStoppedError"; + Object.setPrototypeOf(this, _PollerStoppedError.prototype); + } + }; + PollerCancelledError = class _PollerCancelledError extends Error { + constructor(message) { + super(message); + this.name = "PollerCancelledError"; + Object.setPrototypeOf(this, _PollerCancelledError.prototype); + } + }; + Poller = class { + /** + * A poller needs to be initialized by passing in at least the basic properties of the `PollOperation`. + * + * When writing an implementation of a Poller, this implementation needs to deal with the initialization + * of any custom state beyond the basic definition of the poller. The basic poller assumes that the poller's + * operation has already been defined, at least its basic properties. The code below shows how to approach + * the definition of the constructor of a new custom poller. + * + * ```ts + * export class MyPoller extends Poller { + * constructor({ + * // Anything you might need outside of the basics + * }) { + * let state: MyOperationState = { + * privateProperty: private, + * publicProperty: public, + * }; + * + * const operation = { + * state, + * update, + * cancel, + * toString + * } + * + * // Sending the operation to the parent's constructor. + * super(operation); + * + * // You can assign more local properties here. + * } + * } + * ``` + * + * Inside of this constructor, a new promise is created. This will be used to + * tell the user when the poller finishes (see `pollUntilDone()`). The promise's + * resolve and reject methods are also used internally to control when to resolve + * or reject anyone waiting for the poller to finish. + * + * The constructor of a custom implementation of a poller is where any serialized version of + * a previous poller's operation should be deserialized into the operation sent to the + * base constructor. For example: + * + * ```ts + * export class MyPoller extends Poller { + * constructor( + * baseOperation: string | undefined + * ) { + * let state: MyOperationState = {}; + * if (baseOperation) { + * state = { + * ...JSON.parse(baseOperation).state, + * ...state + * }; + * } + * const operation = { + * state, + * // ... + * } + * super(operation); + * } + * } + * ``` + * + * @param operation - Must contain the basic properties of `PollOperation`. + */ + constructor(operation) { + this.resolveOnUnsuccessful = false; + this.stopped = true; + this.pollProgressCallbacks = []; + this.operation = operation; + this.promise = new Promise((resolve, reject) => { + this.resolve = resolve; + this.reject = reject; + }); + this.promise.catch(() => { + }); + } + /** + * Starts a loop that will break only if the poller is done + * or if the poller is stopped. + */ + async startPolling(pollOptions = {}) { + if (this.stopped) { + this.stopped = false; + } + while (!this.isStopped() && !this.isDone()) { + await this.poll(pollOptions); + await this.delay(); + } + } + /** + * pollOnce does one polling, by calling to the update method of the underlying + * poll operation to make any relevant change effective. + * + * It only optionally receives an object with an abortSignal property, from \@azure/abort-controller's AbortSignalLike. + * + * @param options - Optional properties passed to the operation's update method. + */ + async pollOnce(options = {}) { + if (!this.isDone()) { + this.operation = await this.operation.update({ + abortSignal: options.abortSignal, + fireProgress: this.fireProgress.bind(this) + }); + } + this.processUpdatedState(); + } + /** + * fireProgress calls the functions passed in via onProgress the method of the poller. + * + * It loops over all of the callbacks received from onProgress, and executes them, sending them + * the current operation state. + * + * @param state - The current operation state. + */ + fireProgress(state3) { + for (const callback of this.pollProgressCallbacks) { + callback(state3); + } + } + /** + * Invokes the underlying operation's cancel method. + */ + async cancelOnce(options = {}) { + this.operation = await this.operation.cancel(options); + } + /** + * Returns a promise that will resolve once a single polling request finishes. + * It does this by calling the update method of the Poller's operation. + * + * It only optionally receives an object with an abortSignal property, from \@azure/abort-controller's AbortSignalLike. + * + * @param options - Optional properties passed to the operation's update method. + */ + poll(options = {}) { + if (!this.pollOncePromise) { + this.pollOncePromise = this.pollOnce(options); + const clearPollOncePromise = () => { + this.pollOncePromise = void 0; + }; + this.pollOncePromise.then(clearPollOncePromise, clearPollOncePromise).catch(this.reject); + } + return this.pollOncePromise; + } + processUpdatedState() { + if (this.operation.state.error) { + this.stopped = true; + if (!this.resolveOnUnsuccessful) { + this.reject(this.operation.state.error); + throw this.operation.state.error; + } + } + if (this.operation.state.isCancelled) { + this.stopped = true; + if (!this.resolveOnUnsuccessful) { + const error2 = new PollerCancelledError("Operation was canceled"); + this.reject(error2); + throw error2; + } + } + if (this.isDone() && this.resolve) { + this.resolve(this.getResult()); + } + } + /** + * Returns a promise that will resolve once the underlying operation is completed. + */ + async pollUntilDone(pollOptions = {}) { + if (this.stopped) { + this.startPolling(pollOptions).catch(this.reject); + } + this.processUpdatedState(); + return this.promise; + } + /** + * Invokes the provided callback after each polling is completed, + * sending the current state of the poller's operation. + * + * It returns a method that can be used to stop receiving updates on the given callback function. + */ + onProgress(callback) { + this.pollProgressCallbacks.push(callback); + return () => { + this.pollProgressCallbacks = this.pollProgressCallbacks.filter((c) => c !== callback); + }; + } + /** + * Returns true if the poller has finished polling. + */ + isDone() { + const state3 = this.operation.state; + return Boolean(state3.isCompleted || state3.isCancelled || state3.error); + } + /** + * Stops the poller from continuing to poll. + */ + stopPolling() { + if (!this.stopped) { + this.stopped = true; + if (this.reject) { + this.reject(new PollerStoppedError("This poller is already stopped")); + } + } + } + /** + * Returns true if the poller is stopped. + */ + isStopped() { + return this.stopped; + } + /** + * Attempts to cancel the underlying operation. + * + * It only optionally receives an object with an abortSignal property, from \@azure/abort-controller's AbortSignalLike. + * + * If it's called again before it finishes, it will throw an error. + * + * @param options - Optional properties passed to the operation's update method. + */ + cancelOperation(options = {}) { + if (!this.cancelPromise) { + this.cancelPromise = this.cancelOnce(options); + } else if (options.abortSignal) { + throw new Error("A cancel request is currently pending"); + } + return this.cancelPromise; + } + /** + * Returns the state of the operation. + * + * Even though TState will be the same type inside any of the methods of any extension of the Poller class, + * implementations of the pollers can customize what's shared with the public by writing their own + * version of the `getOperationState` method, and by defining two types, one representing the internal state of the poller + * and a public type representing a safe to share subset of the properties of the internal state. + * Their definition of getOperationState can then return their public type. + * + * Example: + * + * ```ts + * // Let's say we have our poller's operation state defined as: + * interface MyOperationState extends PollOperationState { + * privateProperty?: string; + * publicProperty?: string; + * } + * + * // To allow us to have a true separation of public and private state, we have to define another interface: + * interface PublicState extends PollOperationState { + * publicProperty?: string; + * } + * + * // Then, we define our Poller as follows: + * export class MyPoller extends Poller { + * // ... More content is needed here ... + * + * public getOperationState(): PublicState { + * const state: PublicState = this.operation.state; + * return { + * // Properties from PollOperationState + * isStarted: state.isStarted, + * isCompleted: state.isCompleted, + * isCancelled: state.isCancelled, + * error: state.error, + * result: state.result, + * + * // The only other property needed by PublicState. + * publicProperty: state.publicProperty + * } + * } + * } + * ``` + * + * You can see this in the tests of this repository, go to the file: + * `../test/utils/testPoller.ts` + * and look for the getOperationState implementation. + */ + getOperationState() { + return this.operation.state; + } + /** + * Returns the result value of the operation, + * regardless of the state of the poller. + * It can return undefined or an incomplete form of the final TResult value + * depending on the implementation. + */ + getResult() { + const state3 = this.operation.state; + return state3.result; + } + /** + * Returns a serialized version of the poller's operation + * by invoking the operation's toString method. + */ + toString() { + return this.operation.toString(); + } + }; + } +}); + +// node_modules/@azure/core-lro/dist/esm/legacy/lroEngine/lroEngine.js +var init_lroEngine = __esm({ + "node_modules/@azure/core-lro/dist/esm/legacy/lroEngine/lroEngine.js"() { + init_operation3(); + init_constants5(); + init_poller3(); + init_operation(); + } +}); + +// node_modules/@azure/core-lro/dist/esm/legacy/lroEngine/index.js +var init_lroEngine2 = __esm({ + "node_modules/@azure/core-lro/dist/esm/legacy/lroEngine/index.js"() { + init_lroEngine(); + } +}); + +// node_modules/@azure/core-lro/dist/esm/legacy/pollOperation.js +var init_pollOperation = __esm({ + "node_modules/@azure/core-lro/dist/esm/legacy/pollOperation.js"() { + } +}); + +// node_modules/@azure/core-lro/dist/esm/index.js +var init_esm12 = __esm({ + "node_modules/@azure/core-lro/dist/esm/index.js"() { + init_poller2(); + init_lroEngine2(); + init_poller3(); + init_pollOperation(); + } +}); + +// node_modules/@azure/keyvault-secrets/dist/esm/lro/keyVaultSecretPoller.js +var KeyVaultSecretPoller, KeyVaultSecretPollOperation; +var init_keyVaultSecretPoller = __esm({ + "node_modules/@azure/keyvault-secrets/dist/esm/lro/keyVaultSecretPoller.js"() { + init_esm12(); + init_esm4(); + KeyVaultSecretPoller = class extends Poller { + /** + * Defines how much time the poller is going to wait before making a new request to the service. + */ + intervalInMs = 2e3; + /** + * The method used by the poller to wait before attempting to update its operation. + */ + async delay() { + return delay3(this.intervalInMs); + } + }; + KeyVaultSecretPollOperation = class { + state; + cancelMessage = ""; + constructor(state3, options = {}) { + this.state = state3; + if (options.cancelMessage) { + this.cancelMessage = options.cancelMessage; + } + } + /** + * Meant to reach to the service and update the Poller operation. + * @param options - The optional parameters, which is only an abortSignal from \@azure/abort-controller + */ + async update() { + throw new Error("Operation not supported."); + } + /** + * Meant to reach to the service and cancel the Poller operation. + * @param options - The optional parameters, which is only an abortSignal from \@azure/abort-controller + */ + async cancel() { + throw new Error(this.cancelMessage); + } + /** + * Serializes the Poller operation. + */ + toString() { + return JSON.stringify({ + state: this.state + }); + } + }; + } +}); + +// node_modules/@azure/keyvault-secrets/dist/esm/lro/delete/operation.js +var DeleteSecretPollOperation; +var init_operation4 = __esm({ + "node_modules/@azure/keyvault-secrets/dist/esm/lro/delete/operation.js"() { + init_keyVaultSecretPoller(); + init_transformations(); + init_tracing2(); + DeleteSecretPollOperation = class extends KeyVaultSecretPollOperation { + state; + client; + operationOptions; + constructor(state3, client, operationOptions = {}) { + super(state3, { cancelMessage: "Canceling the deletion of a secret is not supported." }); + this.state = state3; + this.client = client; + this.operationOptions = operationOptions; + } + /** + * Sends a delete request for the given Key Vault Key's name to the Key Vault service. + * Since the Key Vault Key won't be immediately deleted, we have {@link beginDeleteKey}. + */ + deleteSecret(name5, options = {}) { + return tracingClient2.withSpan("DeleteSecretPoller.deleteSecret", options, async (updatedOptions) => { + const response = await this.client.deleteSecret(name5, updatedOptions); + return getSecretFromSecretBundle(response); + }); + } + /** + * The getDeletedSecret method returns the specified deleted secret along with its properties. + * This operation requires the secrets/get permission. + */ + getDeletedSecret(name5, options = {}) { + return tracingClient2.withSpan("DeleteSecretPoller.getDeletedSecret", options, async (updatedOptions) => { + const response = await this.client.getDeletedSecret(name5, updatedOptions); + return getSecretFromSecretBundle(response); + }); + } + /** + * Reaches to the service and updates the delete secret's poll operation. + */ + async update(options = {}) { + const state3 = this.state; + const { name: name5 } = state3; + if (options.abortSignal) { + this.operationOptions.abortSignal = options.abortSignal; + } + if (!state3.isStarted) { + const deletedSecret = await this.deleteSecret(name5, this.operationOptions); + state3.isStarted = true; + state3.result = deletedSecret; + if (!deletedSecret.properties.recoveryId) { + state3.isCompleted = true; + } + } + if (!state3.isCompleted) { + try { + state3.result = await this.getDeletedSecret(name5, this.operationOptions); + state3.isCompleted = true; + } catch (error2) { + if (error2.statusCode === 403) { + state3.isCompleted = true; + } else if (error2.statusCode !== 404) { + state3.error = error2; + state3.isCompleted = true; + throw error2; + } + } + } + return this; + } + }; + } +}); + +// node_modules/@azure/keyvault-secrets/dist/esm/lro/delete/poller.js +var DeleteSecretPoller; +var init_poller4 = __esm({ + "node_modules/@azure/keyvault-secrets/dist/esm/lro/delete/poller.js"() { + init_operation4(); + init_keyVaultSecretPoller(); + DeleteSecretPoller = class extends KeyVaultSecretPoller { + constructor(options) { + const { client, name: name5, operationOptions, intervalInMs = 2e3, resumeFrom } = options; + let state3; + if (resumeFrom) { + state3 = JSON.parse(resumeFrom).state; + } + const operation = new DeleteSecretPollOperation({ + ...state3, + name: name5 + }, client, operationOptions); + super(operation); + this.intervalInMs = intervalInMs; + } + }; + } +}); + +// node_modules/@azure/keyvault-secrets/dist/esm/lro/recover/operation.js +var RecoverDeletedSecretPollOperation; +var init_operation5 = __esm({ + "node_modules/@azure/keyvault-secrets/dist/esm/lro/recover/operation.js"() { + init_keyVaultSecretPoller(); + init_transformations(); + init_tracing2(); + RecoverDeletedSecretPollOperation = class extends KeyVaultSecretPollOperation { + state; + client; + options; + constructor(state3, client, options = {}) { + super(state3, { cancelMessage: "Canceling the recovery of a deleted secret is not supported." }); + this.state = state3; + this.client = client; + this.options = options; + } + /** + * The getSecret method returns the specified secret along with its properties. + * This operation requires the secrets/get permission. + */ + getSecret(name5, options = {}) { + return tracingClient2.withSpan("RecoverDeletedSecretPoller.getSecret", options, async (updatedOptions) => { + const response = await this.client.getSecret(name5, options && options.version ? options.version : "", updatedOptions); + return getSecretFromSecretBundle(response); + }); + } + /** + * The recoverDeletedSecret method recovers the specified deleted secret along with its properties. + * This operation requires the secrets/recover permission. + */ + recoverDeletedSecret(name5, options = {}) { + return tracingClient2.withSpan("RecoverDeletedSecretPoller.recoverDeletedSecret", options, async (updatedOptions) => { + const response = await this.client.recoverDeletedSecret(name5, updatedOptions); + return getSecretFromSecretBundle(response); + }); + } + /** + * Reaches to the service and updates the delete secret's poll operation. + */ + async update(options = {}) { + const state3 = this.state; + const { name: name5 } = state3; + if (options.abortSignal) { + this.options.abortSignal = options.abortSignal; + } + if (!state3.isStarted) { + try { + state3.result = (await this.getSecret(name5, this.options)).properties; + state3.isCompleted = true; + } catch { + } + if (!state3.isCompleted) { + state3.result = (await this.recoverDeletedSecret(name5, this.options)).properties; + state3.isStarted = true; + } + } + if (!state3.isCompleted) { + try { + state3.result = (await this.getSecret(name5, this.options)).properties; + state3.isCompleted = true; + } catch (error2) { + if (error2.statusCode === 403) { + state3.isCompleted = true; + } else if (error2.statusCode !== 404) { + state3.error = error2; + state3.isCompleted = true; + throw error2; + } + } + } + return this; + } + }; + } +}); + +// node_modules/@azure/keyvault-secrets/dist/esm/lro/recover/poller.js +var RecoverDeletedSecretPoller; +var init_poller5 = __esm({ + "node_modules/@azure/keyvault-secrets/dist/esm/lro/recover/poller.js"() { + init_operation5(); + init_keyVaultSecretPoller(); + RecoverDeletedSecretPoller = class extends KeyVaultSecretPoller { + constructor(options) { + const { client, name: name5, operationOptions, intervalInMs = 2e3, resumeFrom } = options; + let state3; + if (resumeFrom) { + state3 = JSON.parse(resumeFrom).state; + } + const operation = new RecoverDeletedSecretPollOperation({ + ...state3, + name: name5 + }, client, operationOptions); + super(operation); + this.intervalInMs = intervalInMs; + } + }; + } +}); + +// node_modules/@azure/keyvault-secrets/dist/esm/index.js +var esm_exports2 = {}; +__export(esm_exports2, { + KnownContentType: () => KnownContentType, + KnownDeletionRecoveryLevel: () => KnownDeletionRecoveryLevel, + SecretClient: () => SecretClient, + logger: () => logger28, + parseKeyVaultSecretIdentifier: () => parseKeyVaultSecretIdentifier +}); +var SecretClient; +var init_esm13 = __esm({ + "node_modules/@azure/keyvault-secrets/dist/esm/index.js"() { + init_logger2(); + init_keyVaultClient(); + init_esm11(); + init_secretsModels(); + init_models(); + init_identifier(); + init_transformations(); + init_tracing2(); + init_esm6(); + init_constants4(); + init_poller4(); + init_poller5(); + SecretClient = class { + /** + * The base URL to the vault + */ + vaultUrl; + /** + * A reference to the auto-generated KeyVault HTTP client. + */ + client; + /** + * Creates an instance of SecretClient. + * + * Example usage: + * ```ts snippet:ReadmeSampleCreateClient + * import { DefaultAzureCredential } from "@azure/identity"; + * import { SecretClient } from "@azure/keyvault-secrets"; + * + * const credential = new DefaultAzureCredential(); + * + * // Build the URL to reach your key vault + * const vaultName = ""; + * const url = `https://${vaultName}.vault.azure.net`; + * + * // Lastly, create our secrets client and connect to the service + * const client = new SecretClient(url, credential); + * ``` + * @param vaultUrl - The base URL to the vault. You should validate that this URL references a valid Key Vault resource. See https://aka.ms/azsdk/blog/vault-uri for details. + * @param credential - An object that implements the `TokenCredential` interface used to authenticate requests to the service. Use the \@azure/identity package to create a credential that suits your needs. + * @param pipelineOptions - Pipeline options used to configure Key Vault API requests. + * Omit this parameter to use the default pipeline configuration. + */ + constructor(vaultUrl, credential, pipelineOptions = {}) { + this.vaultUrl = vaultUrl; + const internalPipelineOptions = { + ...pipelineOptions, + userAgentOptions: { + userAgentPrefix: `${pipelineOptions.userAgentOptions?.userAgentPrefix ?? ""} azsdk-js-keyvault-secrets/${SDK_VERSION4}` + }, + apiVersion: pipelineOptions.serviceVersion || LATEST_API_VERSION, + loggingOptions: { + logger: logger28.info, + additionalAllowedHeaderNames: [ + "x-ms-keyvault-region", + "x-ms-keyvault-network-info", + "x-ms-keyvault-service-version" + ] + } + }; + this.client = new KeyVaultClient(this.vaultUrl, credential, internalPipelineOptions); + this.client.pipeline.removePolicy({ name: bearerTokenAuthenticationPolicyName }); + this.client.pipeline.addPolicy(keyVaultAuthenticationPolicy(credential, pipelineOptions), {}); + this.client.pipeline.addPolicy({ + name: "ContentTypePolicy", + sendRequest(request, next) { + const contentType = request.headers.get("Content-Type") ?? ""; + if (contentType.startsWith("application/json")) { + request.headers.set("Content-Type", "application/json"); + } + return next(request); + } + }); + } + /** + * The setSecret method adds a secret or secret version to the Azure Key Vault. If the named secret + * already exists, Azure Key Vault creates a new version of that secret. + * This operation requires the secrets/set permission. + * + * Example usage: + * ```ts snippet:ReadmeSampleCreateSecret + * import { DefaultAzureCredential } from "@azure/identity"; + * import { SecretClient } from "@azure/keyvault-secrets"; + * + * const credential = new DefaultAzureCredential(); + * + * const vaultName = ""; + * const url = `https://${vaultName}.vault.azure.net`; + * + * const client = new SecretClient(url, credential); + * + * const secretName = "MySecretName"; + * + * const result = await client.setSecret(secretName, "MySecretValue"); + * console.log("result: ", result); + * ``` + * Adds a secret in a specified key vault. + * @param secretName - The name of the secret. + * @param value - The value of the secret. + * @param options - The optional parameters. + */ + setSecret(secretName, value, options = {}) { + const { enabled: enabled2, notBefore, expiresOn: expires, tags, ...remainingOptions } = options; + return tracingClient2.withSpan("SecretClient.setSecret", remainingOptions, async (updatedOptions) => { + const response = await this.client.setSecret(secretName, { value, secretAttributes: { enabled: enabled2, notBefore, expires }, tags }, updatedOptions); + return getSecretFromSecretBundle(response); + }); + } + /** + * Deletes a secret stored in Azure Key Vault. + * This function returns a Long Running Operation poller that allows you to wait indefinitely until the secret is deleted. + * + * This operation requires the secrets/delete permission. + * + * Example usage: + * ```ts snippet:ReadmeSampleDeleteSecret + * import { DefaultAzureCredential } from "@azure/identity"; + * import { SecretClient } from "@azure/keyvault-secrets"; + * + * const credential = new DefaultAzureCredential(); + * + * const vaultName = ""; + * const url = `https://${vaultName}.vault.azure.net`; + * + * const client = new SecretClient(url, credential); + * + * const secretName = "MySecretName"; + * + * await client.beginDeleteSecret(secretName); + * ``` + * Deletes a secret from a specified key vault. + * @param secretName - The name of the secret. + * @param options - The optional parameters. + */ + async beginDeleteSecret(name5, options = {}) { + const poller = new DeleteSecretPoller({ + name: name5, + client: this.client, + ...options, + operationOptions: options + }); + await poller.poll(); + return poller; + } + /** + * The updateSecret method changes specified attributes of an existing stored secret. Properties that + * are not specified in the request are left unchanged. The value of a secret itself cannot be + * changed. This operation requires the secrets/set permission. + * + * Example usage: + * ```ts snippet:ReadmeSampleUpdateSecretAttributes + * import { DefaultAzureCredential } from "@azure/identity"; + * import { SecretClient } from "@azure/keyvault-secrets"; + * + * const credential = new DefaultAzureCredential(); + * + * const vaultName = ""; + * const url = `https://${vaultName}.vault.azure.net`; + * + * const client = new SecretClient(url, credential); + * + * const secretName = "MySecretName"; + * + * const result = await client.getSecret(secretName); + * await client.updateSecretProperties(secretName, result.properties.version, { enabled: false }); + * ``` + * Updates the attributes associated with a specified secret in a given key vault. + * @param secretName - The name of the secret. + * @param secretVersion - The version of the secret. + * @param options - The optional parameters. + */ + async updateSecretProperties(secretName, secretVersion, options = {}) { + const { enabled: enabled2, notBefore, expiresOn: expires, tags, ...remainingOptions } = options; + return tracingClient2.withSpan("SecretClient.updateSecretProperties", remainingOptions, async (updatedOptions) => { + const response = await this.client.updateSecret(secretName, secretVersion, { secretAttributes: { enabled: enabled2, notBefore, expires }, tags }, updatedOptions); + return getSecretFromSecretBundle(response).properties; + }); + } + /** + * The getSecret method is applicable to any secret stored in Azure Key Vault. This operation requires + * the secrets/get permission. + * + * Example usage: + * ```ts snippet:ReadmeSampleGetSecret + * import { DefaultAzureCredential } from "@azure/identity"; + * import { SecretClient } from "@azure/keyvault-secrets"; + * + * const credential = new DefaultAzureCredential(); + * + * const vaultName = ""; + * const url = `https://${vaultName}.vault.azure.net`; + * + * const client = new SecretClient(url, credential); + * + * const secretName = "MySecretName"; + * + * const latestSecret = await client.getSecret(secretName); + * console.log(`Latest version of the secret ${secretName}: `, latestSecret); + * + * const specificSecret = await client.getSecret(secretName, { + * version: latestSecret.properties.version!, + * }); + * console.log( + * `The secret ${secretName} at the version ${latestSecret.properties.version!}: `, + * specificSecret, + * ); + * ``` + * Get a specified secret from a given key vault. + * @param secretName - The name of the secret. + * @param options - The optional parameters. + */ + getSecret(secretName, options = {}) { + return tracingClient2.withSpan("SecretClient.getSecret", options, async (updatedOptions) => { + const response = await this.client.getSecret(secretName, options && options.version ? options.version : "", updatedOptions); + return getSecretFromSecretBundle(response); + }); + } + /** + * The getDeletedSecret method returns the specified deleted secret along with its attributes. + * This operation requires the secrets/get permission. + * + * Example usage: + * ```ts snippet:ReadmeSampleGetDeletedSecret + * import { DefaultAzureCredential } from "@azure/identity"; + * import { SecretClient } from "@azure/keyvault-secrets"; + * + * const credential = new DefaultAzureCredential(); + * + * const vaultName = ""; + * const url = `https://${vaultName}.vault.azure.net`; + * + * const client = new SecretClient(url, credential); + * + * const secretName = "MySecretName"; + * + * const result = await client.getDeletedSecret("MyDeletedSecret"); + * ``` + * Gets the specified deleted secret. + * @param secretName - The name of the secret. + * @param options - The optional parameters. + */ + getDeletedSecret(secretName, options = {}) { + return tracingClient2.withSpan("SecretClient.getDeletedSecret", options, async (updatedOptions) => { + const response = await this.client.getDeletedSecret(secretName, updatedOptions); + return getSecretFromSecretBundle(response); + }); + } + /** + * The purge deleted secret operation removes the secret permanently, without the possibility of + * recovery. This operation can only be enabled on a soft-delete enabled vault. This operation + * requires the secrets/purge permission. + * + * Example usage: + * ```ts snippet:ReadmeSamplePurgeDeletedSecret + * import { DefaultAzureCredential } from "@azure/identity"; + * import { SecretClient } from "@azure/keyvault-secrets"; + * + * const credential = new DefaultAzureCredential(); + * + * const vaultName = ""; + * const url = `https://${vaultName}.vault.azure.net`; + * + * const client = new SecretClient(url, credential); + * + * const secretName = "MySecretName"; + * + * const deletePoller = await client.beginDeleteSecret(secretName); + * await deletePoller.pollUntilDone(); + * + * await client.purgeDeletedSecret(secretName); + * ``` + * Permanently deletes the specified secret. + * @param secretName - The name of the secret. + * @param options - The optional parameters. + */ + purgeDeletedSecret(secretName, options = {}) { + return tracingClient2.withSpan("SecretClient.purgeDeletedSecret", options, async (updatedOptions) => { + await this.client.purgeDeletedSecret(secretName, updatedOptions); + }); + } + /** + * Recovers the deleted secret in the specified vault. + * This function returns a Long Running Operation poller that allows you to wait indefinitely until the secret is recovered. + * + * This operation requires the secrets/recover permission. + * + * Example usage: + * ```ts snippet:ReadmeSampleRecoverDeletedSecret + * import { DefaultAzureCredential } from "@azure/identity"; + * import { SecretClient } from "@azure/keyvault-secrets"; + * + * const credential = new DefaultAzureCredential(); + * + * const vaultName = ""; + * const url = `https://${vaultName}.vault.azure.net`; + * + * const client = new SecretClient(url, credential); + * + * const secretName = "MySecretName"; + * + * const deletePoller = await client.beginDeleteSecret(secretName); + * await deletePoller.pollUntilDone(); + * + * const recoverPoller = await client.beginRecoverDeletedSecret(secretName); + * const deletedSecret = await recoverPoller.pollUntilDone(); + * console.log(deletedSecret); + * ``` + * Recovers the deleted secret to the latest version. + * @param secretName - The name of the deleted secret. + * @param options - The optional parameters. + */ + async beginRecoverDeletedSecret(name5, options = {}) { + const poller = new RecoverDeletedSecretPoller({ + name: name5, + client: this.client, + ...options, + operationOptions: options + }); + await poller.poll(); + return poller; + } + /** + * Requests that a backup of the specified secret be downloaded to the client. All versions of the + * secret will be downloaded. This operation requires the secrets/backup permission. + * + * Example usage: + * ```ts snippet:ReadmeSampleBackupSecret + * import { DefaultAzureCredential } from "@azure/identity"; + * import { SecretClient } from "@azure/keyvault-secrets"; + * + * const credential = new DefaultAzureCredential(); + * + * const vaultName = ""; + * const url = `https://${vaultName}.vault.azure.net`; + * + * const client = new SecretClient(url, credential); + * + * const secretName = "MySecretName"; + * + * const backupResult = await client.backupSecret(secretName); + * ``` + * Backs up the specified secret. + * @param secretName - The name of the secret. + * @param options - The optional parameters. + */ + backupSecret(secretName, options = {}) { + return tracingClient2.withSpan("SecretClient.backupSecret", options, async (updatedOptions) => { + const response = await this.client.backupSecret(secretName, updatedOptions); + return response.value; + }); + } + /** + * Restores a backed up secret, and all its versions, to a vault. This operation requires the + * secrets/restore permission. + * + * Example usage: + * ```ts snippet:ReadmeSampleRestoreSecret + * import { DefaultAzureCredential } from "@azure/identity"; + * import { SecretClient } from "@azure/keyvault-secrets"; + * + * const credential = new DefaultAzureCredential(); + * + * const vaultName = ""; + * const url = `https://${vaultName}.vault.azure.net`; + * + * const client = new SecretClient(url, credential); + * + * const secretName = "MySecretName"; + * + * const backupResult = await client.backupSecret(secretName); + * + * await client.restoreSecretBackup(backupResult); + * ``` + * Restores a backed up secret to a vault. + * @param secretBundleBackup - The backup blob associated with a secret bundle. + * @param options - The optional parameters. + */ + restoreSecretBackup(secretBundleBackup, options = {}) { + return tracingClient2.withSpan("SecretClient.restoreSecretBackup", options, async (updatedOptions) => { + const response = await this.client.restoreSecret({ secretBundleBackup }, updatedOptions); + return getSecretFromSecretBundle(response).properties; + }); + } + /** + * Iterates all versions of the given secret in the vault. The full secret identifier and attributes are provided + * in the response. No values are returned for the secrets. This operations requires the secrets/list permission. + * + * Example usage: + * ```ts snippet:ReadmeSampleListSecrets + * import { DefaultAzureCredential } from "@azure/identity"; + * import { SecretClient } from "@azure/keyvault-secrets"; + * + * const credential = new DefaultAzureCredential(); + * + * const vaultName = ""; + * const url = `https://${vaultName}.vault.azure.net`; + * + * const client = new SecretClient(url, credential); + * + * const secretName = "MySecretName"; + * + * for await (const secretProperties of client.listPropertiesOfSecrets()) { + * console.log("Secret properties: ", secretProperties); + * } + * + * for await (const deletedSecret of client.listDeletedSecrets()) { + * console.log("Deleted secret: ", deletedSecret); + * } + * + * for await (const versionProperties of client.listPropertiesOfSecretVersions(secretName)) { + * console.log("Version properties: ", versionProperties); + * } + * ``` + * @param secretName - Name of the secret to fetch versions for. + * @param options - The optional parameters. + */ + listPropertiesOfSecretVersions(secretName, options = {}) { + return mapPagedAsyncIterable((updatedOptions) => this.client.getSecretVersions(secretName, updatedOptions), options, (item) => getSecretFromSecretBundle(item).properties); + } + /** + * Iterates the latest version of all secrets in the vault. The full secret identifier and attributes are provided + * in the response. No values are returned for the secrets. This operations requires the secrets/list permission. + * + * Example usage: + * ```ts snippet:ReadmeSampleListSecrets + * import { DefaultAzureCredential } from "@azure/identity"; + * import { SecretClient } from "@azure/keyvault-secrets"; + * + * const credential = new DefaultAzureCredential(); + * + * const vaultName = ""; + * const url = `https://${vaultName}.vault.azure.net`; + * + * const client = new SecretClient(url, credential); + * + * const secretName = "MySecretName"; + * + * for await (const secretProperties of client.listPropertiesOfSecrets()) { + * console.log("Secret properties: ", secretProperties); + * } + * + * for await (const deletedSecret of client.listDeletedSecrets()) { + * console.log("Deleted secret: ", deletedSecret); + * } + * + * for await (const versionProperties of client.listPropertiesOfSecretVersions(secretName)) { + * console.log("Version properties: ", versionProperties); + * } + * ``` + * List all secrets in the vault. + * @param options - The optional parameters. + */ + listPropertiesOfSecrets(options = {}) { + return mapPagedAsyncIterable(this.client.getSecrets.bind(this.client), options, (item) => getSecretFromSecretBundle(item).properties); + } + /** + * Iterates the deleted secrets in the vault. The full secret identifier and attributes are provided + * in the response. No values are returned for the secrets. This operations requires the secrets/list permission. + * + * Example usage: + * ```ts snippet:ReadmeSampleListSecrets + * import { DefaultAzureCredential } from "@azure/identity"; + * import { SecretClient } from "@azure/keyvault-secrets"; + * + * const credential = new DefaultAzureCredential(); + * + * const vaultName = ""; + * const url = `https://${vaultName}.vault.azure.net`; + * + * const client = new SecretClient(url, credential); + * + * const secretName = "MySecretName"; + * + * for await (const secretProperties of client.listPropertiesOfSecrets()) { + * console.log("Secret properties: ", secretProperties); + * } + * + * for await (const deletedSecret of client.listDeletedSecrets()) { + * console.log("Deleted secret: ", deletedSecret); + * } + * + * for await (const versionProperties of client.listPropertiesOfSecretVersions(secretName)) { + * console.log("Version properties: ", versionProperties); + * } + * ``` + * List all secrets in the vault. + * @param options - The optional parameters. + */ + listDeletedSecrets(options = {}) { + return mapPagedAsyncIterable(this.client.getDeletedSecrets.bind(this.client), options, getSecretFromSecretBundle); + } + }; + } +}); + +// node_modules/powershell-utils/index.js +var import_node_process10, import_node_buffer2, import_node_util8, import_node_child_process7, execFile6, powerShellPath2, executePowerShell; +var init_powershell_utils = __esm({ + "node_modules/powershell-utils/index.js"() { + import_node_process10 = __toESM(require("node:process"), 1); + import_node_buffer2 = require("node:buffer"); + import_node_util8 = require("node:util"); + import_node_child_process7 = __toESM(require("node:child_process"), 1); + execFile6 = (0, import_node_util8.promisify)(import_node_child_process7.default.execFile); + powerShellPath2 = () => `${import_node_process10.default.env.SYSTEMROOT || import_node_process10.default.env.windir || String.raw`C:\Windows`}\\System32\\WindowsPowerShell\\v1.0\\powershell.exe`; + executePowerShell = async (command, options = {}) => { + const { + powerShellPath: psPath, + ...execFileOptions + } = options; + const encodedCommand = executePowerShell.encodeCommand(command); + return execFile6( + psPath ?? powerShellPath2(), + [ + ...executePowerShell.argumentsPrefix, + encodedCommand + ], + { + encoding: "utf8", + ...execFileOptions + } + ); + }; + executePowerShell.argumentsPrefix = [ + "-NoProfile", + "-NonInteractive", + "-ExecutionPolicy", + "Bypass", + "-EncodedCommand" + ]; + executePowerShell.encodeCommand = (command) => import_node_buffer2.Buffer.from(command, "utf16le").toString("base64"); + executePowerShell.escapeArgument = (value) => `'${String(value).replaceAll("'", "''")}'`; + } +}); + +// node_modules/wsl-utils/utilities.js +function parseMountPointFromConfig(content) { + for (const line of content.split("\n")) { + if (/^\s*#/.test(line)) { + continue; + } + const match = /^\s*root\s*=\s*(?"[^"]*"|'[^']*'|[^#]*)/.exec(line); + if (!match) { + continue; + } + return match.groups.mountPoint.trim().replaceAll(/^["']|["']$/g, ""); + } +} +var init_utilities = __esm({ + "node_modules/wsl-utils/utilities.js"() { + } +}); + +// node_modules/wsl-utils/index.js +var import_node_util9, import_node_child_process8, import_promises7, execFile7, wslDrivesMountPoint2, powerShellPathFromWsl2, powerShellPath3, canAccessPowerShellPromise, canAccessPowerShell, wslDefaultBrowser, convertWslPathToWindows; +var init_wsl_utils2 = __esm({ + "node_modules/wsl-utils/index.js"() { + import_node_util9 = require("node:util"); + import_node_child_process8 = __toESM(require("node:child_process"), 1); + import_promises7 = __toESM(require("node:fs/promises"), 1); + init_is_wsl(); + init_powershell_utils(); + init_utilities(); + init_is_wsl(); + execFile7 = (0, import_node_util9.promisify)(import_node_child_process8.default.execFile); + wslDrivesMountPoint2 = /* @__PURE__ */ (() => { + const defaultMountPoint = "/mnt/"; + let mountPoint; + return async function() { + if (mountPoint) { + return mountPoint; + } + const configFilePath = "/etc/wsl.conf"; + let isConfigFileExists = false; + try { + await import_promises7.default.access(configFilePath, import_promises7.constants.F_OK); + isConfigFileExists = true; + } catch { + } + if (!isConfigFileExists) { + return defaultMountPoint; + } + const configContent = await import_promises7.default.readFile(configFilePath, { encoding: "utf8" }); + const parsedMountPoint = parseMountPointFromConfig(configContent); + if (parsedMountPoint === void 0) { + return defaultMountPoint; + } + mountPoint = parsedMountPoint; + mountPoint = mountPoint.endsWith("/") ? mountPoint : `${mountPoint}/`; + return mountPoint; + }; + })(); + powerShellPathFromWsl2 = async () => { + const mountPoint = await wslDrivesMountPoint2(); + return `${mountPoint}c/Windows/System32/WindowsPowerShell/v1.0/powershell.exe`; + }; + powerShellPath3 = is_wsl_default ? powerShellPathFromWsl2 : powerShellPath2; + canAccessPowerShell = async () => { + canAccessPowerShellPromise ??= (async () => { + try { + const psPath = await powerShellPath3(); + await import_promises7.default.access(psPath, import_promises7.constants.X_OK); + return true; + } catch { + return false; + } + })(); + return canAccessPowerShellPromise; + }; + wslDefaultBrowser = async () => { + const psPath = await powerShellPath3(); + const command = String.raw`(Get-ItemProperty -Path "HKCU:\Software\Microsoft\Windows\Shell\Associations\UrlAssociations\http\UserChoice").ProgId`; + const { stdout } = await executePowerShell(command, { powerShellPath: psPath }); + return stdout.trim(); + }; + convertWslPathToWindows = async (path9) => { + if (/^[a-z]+:\/\//i.test(path9)) { + return path9; + } + try { + const { stdout } = await execFile7("wslpath", ["-aw", path9], { encoding: "utf8" }); + return stdout.trim(); + } catch { + return path9; + } + }; + } +}); + +// node_modules/is-in-ssh/index.js +var import_node_process11, isInSsh, is_in_ssh_default; +var init_is_in_ssh = __esm({ + "node_modules/is-in-ssh/index.js"() { + import_node_process11 = __toESM(require("node:process"), 1); + isInSsh = Boolean(import_node_process11.default.env.SSH_CONNECTION || import_node_process11.default.env.SSH_CLIENT || import_node_process11.default.env.SSH_TTY); + is_in_ssh_default = isInSsh; + } +}); + +// node_modules/open/index.js +var open_exports2 = {}; +__export(open_exports2, { + apps: () => apps2, + default: () => open_default2, + openApp: () => openApp2 +}); +function detectArchBinary2(binary) { + if (typeof binary === "string" || Array.isArray(binary)) { + return binary; + } + const { [arch2]: archBinary } = binary; + if (!archBinary) { + throw new Error(`${arch2} is not supported`); + } + return archBinary; +} +function detectPlatformBinary2({ [platform2]: platformBinary }, { wsl } = {}) { + if (wsl && is_wsl_default) { + return detectArchBinary2(wsl); + } + if (!platformBinary) { + throw new Error(`${platform2} is not supported`); + } + return detectArchBinary2(platformBinary); +} +var import_node_process12, import_node_path2, import_node_url2, import_node_child_process9, import_promises8, fallbackAttemptSymbol, __dirname4, localXdgOpenPath2, platform2, arch2, tryEachApp, baseOpen2, open2, openApp2, apps2, open_default2; +var init_open2 = __esm({ + "node_modules/open/index.js"() { + import_node_process12 = __toESM(require("node:process"), 1); + import_node_path2 = __toESM(require("node:path"), 1); + import_node_url2 = require("node:url"); + import_node_child_process9 = __toESM(require("node:child_process"), 1); + import_promises8 = __toESM(require("node:fs/promises"), 1); + init_wsl_utils2(); + init_powershell_utils(); + init_define_lazy_prop(); + init_default_browser(); + init_is_inside_container(); + init_is_in_ssh(); + fallbackAttemptSymbol = /* @__PURE__ */ Symbol("fallbackAttempt"); + __dirname4 = __OPENSWARM_IMPORT_META_URL__ ? import_node_path2.default.dirname((0, import_node_url2.fileURLToPath)(__OPENSWARM_IMPORT_META_URL__)) : ""; + localXdgOpenPath2 = import_node_path2.default.join(__dirname4, "xdg-open"); + ({ platform: platform2, arch: arch2 } = import_node_process12.default); + tryEachApp = async (apps3, opener) => { + if (apps3.length === 0) { + return; + } + const errors = []; + for (const app of apps3) { + try { + return await opener(app); + } catch (error2) { + errors.push(error2); + } + } + throw new AggregateError(errors, "Failed to open in all supported apps"); + }; + baseOpen2 = async (options) => { + options = { + wait: false, + background: false, + newInstance: false, + allowNonzeroExitCode: false, + ...options + }; + const isFallbackAttempt = options[fallbackAttemptSymbol] === true; + delete options[fallbackAttemptSymbol]; + if (Array.isArray(options.app)) { + return tryEachApp(options.app, (singleApp) => baseOpen2({ + ...options, + app: singleApp, + [fallbackAttemptSymbol]: true + })); + } + let { name: app, arguments: appArguments = [] } = options.app ?? {}; + appArguments = [...appArguments]; + if (Array.isArray(app)) { + return tryEachApp(app, (appName) => baseOpen2({ + ...options, + app: { + name: appName, + arguments: appArguments + }, + [fallbackAttemptSymbol]: true + })); + } + if (app === "browser" || app === "browserPrivate") { + const ids = { + "com.google.chrome": "chrome", + "google-chrome.desktop": "chrome", + "com.brave.browser": "brave", + "org.mozilla.firefox": "firefox", + "firefox.desktop": "firefox", + "com.microsoft.msedge": "edge", + "com.microsoft.edge": "edge", + "com.microsoft.edgemac": "edge", + "microsoft-edge.desktop": "edge", + "com.apple.safari": "safari" + }; + const flags = { + chrome: "--incognito", + brave: "--incognito", + firefox: "--private-window", + edge: "--inPrivate" + // Safari doesn't support private mode via command line + }; + let browser; + if (is_wsl_default) { + const progId = await wslDefaultBrowser(); + const browserInfo = _windowsBrowserProgIdMap.get(progId); + browser = browserInfo ?? {}; + } else { + browser = await defaultBrowser2(); + } + if (browser.id in ids) { + const browserName = ids[browser.id.toLowerCase()]; + if (app === "browserPrivate") { + if (browserName === "safari") { + throw new Error("Safari doesn't support opening in private mode via command line"); + } + appArguments.push(flags[browserName]); + } + return baseOpen2({ + ...options, + app: { + name: apps2[browserName], + arguments: appArguments + } + }); + } + throw new Error(`${browser.name} is not supported as a default browser`); + } + let command; + const cliArguments = []; + const childProcessOptions = {}; + let shouldUseWindowsInWsl = false; + if (is_wsl_default && !isInsideContainer() && !is_in_ssh_default && !app) { + shouldUseWindowsInWsl = await canAccessPowerShell(); + } + if (platform2 === "darwin") { + command = "open"; + if (options.wait) { + cliArguments.push("--wait-apps"); + } + if (options.background) { + cliArguments.push("--background"); + } + if (options.newInstance) { + cliArguments.push("--new"); + } + if (app) { + cliArguments.push("-a", app); + } + } else if (platform2 === "win32" || shouldUseWindowsInWsl) { + command = await powerShellPath3(); + cliArguments.push(...executePowerShell.argumentsPrefix); + if (!is_wsl_default) { + childProcessOptions.windowsVerbatimArguments = true; + } + if (is_wsl_default && options.target) { + options.target = await convertWslPathToWindows(options.target); + } + const encodedArguments = ["$ProgressPreference = 'SilentlyContinue';", "Start"]; + if (options.wait) { + encodedArguments.push("-Wait"); + } + if (app) { + encodedArguments.push(executePowerShell.escapeArgument(app)); + if (options.target) { + appArguments.push(options.target); + } + } else if (options.target) { + encodedArguments.push(executePowerShell.escapeArgument(options.target)); + } + if (appArguments.length > 0) { + appArguments = appArguments.map((argument) => executePowerShell.escapeArgument(argument)); + encodedArguments.push("-ArgumentList", appArguments.join(",")); + } + options.target = executePowerShell.encodeCommand(encodedArguments.join(" ")); + if (!options.wait) { + childProcessOptions.stdio = "ignore"; + } + } else { + if (app) { + command = app; + } else { + const isBundled = !__dirname4 || __dirname4 === "/"; + let exeLocalXdgOpen = false; + try { + await import_promises8.default.access(localXdgOpenPath2, import_promises8.constants.X_OK); + exeLocalXdgOpen = true; + } catch { + } + const useSystemXdgOpen = import_node_process12.default.versions.electron ?? (platform2 === "android" || isBundled || !exeLocalXdgOpen); + command = useSystemXdgOpen ? "xdg-open" : localXdgOpenPath2; + } + if (appArguments.length > 0) { + cliArguments.push(...appArguments); + } + if (!options.wait) { + childProcessOptions.stdio = "ignore"; + childProcessOptions.detached = true; + } + } + if (platform2 === "darwin" && appArguments.length > 0) { + cliArguments.push("--args", ...appArguments); + } + if (options.target) { + cliArguments.push(options.target); + } + const subprocess = import_node_child_process9.default.spawn(command, cliArguments, childProcessOptions); + if (options.wait) { + return new Promise((resolve, reject) => { + subprocess.once("error", reject); + subprocess.once("close", (exitCode) => { + if (!options.allowNonzeroExitCode && exitCode !== 0) { + reject(new Error(`Exited with code ${exitCode}`)); + return; + } + resolve(subprocess); + }); + }); + } + if (isFallbackAttempt) { + return new Promise((resolve, reject) => { + subprocess.once("error", reject); + subprocess.once("spawn", () => { + subprocess.once("close", (exitCode) => { + subprocess.off("error", reject); + if (exitCode !== 0) { + reject(new Error(`Exited with code ${exitCode}`)); + return; + } + subprocess.unref(); + resolve(subprocess); + }); + }); + }); + } + subprocess.unref(); + return new Promise((resolve, reject) => { + subprocess.once("error", reject); + subprocess.once("spawn", () => { + subprocess.off("error", reject); + resolve(subprocess); + }); + }); + }; + open2 = (target, options) => { + if (typeof target !== "string") { + throw new TypeError("Expected a `target`"); + } + return baseOpen2({ + ...options, + target + }); + }; + openApp2 = (name5, options) => { + if (typeof name5 !== "string" && !Array.isArray(name5)) { + throw new TypeError("Expected a valid `name`"); + } + const { arguments: appArguments = [] } = options ?? {}; + if (appArguments !== void 0 && appArguments !== null && !Array.isArray(appArguments)) { + throw new TypeError("Expected `appArguments` as Array type"); + } + return baseOpen2({ + ...options, + app: { + name: name5, + arguments: appArguments + } + }); + }; + apps2 = { + browser: "browser", + browserPrivate: "browserPrivate" + }; + defineLazyProperty(apps2, "chrome", () => detectPlatformBinary2({ + darwin: "google chrome", + win32: "chrome", + // `chromium-browser` is the older deb package name used by Ubuntu/Debian before snap. + linux: ["google-chrome", "google-chrome-stable", "chromium", "chromium-browser"] + }, { + wsl: { + ia32: "/mnt/c/Program Files (x86)/Google/Chrome/Application/chrome.exe", + x64: ["/mnt/c/Program Files/Google/Chrome/Application/chrome.exe", "/mnt/c/Program Files (x86)/Google/Chrome/Application/chrome.exe"] + } + })); + defineLazyProperty(apps2, "brave", () => detectPlatformBinary2({ + darwin: "brave browser", + win32: "brave", + linux: ["brave-browser", "brave"] + }, { + wsl: { + ia32: "/mnt/c/Program Files (x86)/BraveSoftware/Brave-Browser/Application/brave.exe", + x64: ["/mnt/c/Program Files/BraveSoftware/Brave-Browser/Application/brave.exe", "/mnt/c/Program Files (x86)/BraveSoftware/Brave-Browser/Application/brave.exe"] + } + })); + defineLazyProperty(apps2, "firefox", () => detectPlatformBinary2({ + darwin: "firefox", + win32: String.raw`C:\Program Files\Mozilla Firefox\firefox.exe`, + linux: "firefox" + }, { + wsl: "/mnt/c/Program Files/Mozilla Firefox/firefox.exe" + })); + defineLazyProperty(apps2, "edge", () => detectPlatformBinary2({ + darwin: "microsoft edge", + win32: "msedge", + linux: ["microsoft-edge", "microsoft-edge-dev"] + }, { + wsl: "/mnt/c/Program Files (x86)/Microsoft/Edge/Application/msedge.exe" + })); + defineLazyProperty(apps2, "safari", () => detectPlatformBinary2({ + darwin: "Safari" + })); + open_default2 = open2; + } +}); + +// node_modules/ajv/dist/compile/codegen/code.js +var require_code = __commonJS({ + "node_modules/ajv/dist/compile/codegen/code.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { value: true }); + exports2.regexpCode = exports2.getEsmExportName = exports2.getProperty = exports2.safeStringify = exports2.stringify = exports2.strConcat = exports2.addCodeArg = exports2.str = exports2._ = exports2.nil = exports2._Code = exports2.Name = exports2.IDENTIFIER = exports2._CodeOrName = void 0; + var _CodeOrName = class { + }; + exports2._CodeOrName = _CodeOrName; + exports2.IDENTIFIER = /^[a-z$_][a-z$_0-9]*$/i; + var Name = class extends _CodeOrName { + constructor(s) { + super(); + if (!exports2.IDENTIFIER.test(s)) + throw new Error("CodeGen: name must be a valid identifier"); + this.str = s; + } + toString() { + return this.str; + } + emptyStr() { + return false; + } + get names() { + return { [this.str]: 1 }; + } + }; + exports2.Name = Name; + var _Code = class extends _CodeOrName { + constructor(code) { + super(); + this._items = typeof code === "string" ? [code] : code; + } + toString() { + return this.str; + } + emptyStr() { + if (this._items.length > 1) + return false; + const item = this._items[0]; + return item === "" || item === '""'; + } + get str() { + var _a; + return (_a = this._str) !== null && _a !== void 0 ? _a : this._str = this._items.reduce((s, c) => `${s}${c}`, ""); + } + get names() { + var _a; + return (_a = this._names) !== null && _a !== void 0 ? _a : this._names = this._items.reduce((names, c) => { + if (c instanceof Name) + names[c.str] = (names[c.str] || 0) + 1; + return names; + }, {}); + } + }; + exports2._Code = _Code; + exports2.nil = new _Code(""); + function _(strs, ...args) { + const code = [strs[0]]; + let i = 0; + while (i < args.length) { + addCodeArg(code, args[i]); + code.push(strs[++i]); + } + return new _Code(code); + } + exports2._ = _; + var plus = new _Code("+"); + function str(strs, ...args) { + const expr = [safeStringify(strs[0])]; + let i = 0; + while (i < args.length) { + expr.push(plus); + addCodeArg(expr, args[i]); + expr.push(plus, safeStringify(strs[++i])); + } + optimize(expr); + return new _Code(expr); + } + exports2.str = str; + function addCodeArg(code, arg) { + if (arg instanceof _Code) + code.push(...arg._items); + else if (arg instanceof Name) + code.push(arg); + else + code.push(interpolate(arg)); + } + exports2.addCodeArg = addCodeArg; + function optimize(expr) { + let i = 1; + while (i < expr.length - 1) { + if (expr[i] === plus) { + const res = mergeExprItems(expr[i - 1], expr[i + 1]); + if (res !== void 0) { + expr.splice(i - 1, 3, res); + continue; + } + expr[i++] = "+"; + } + i++; + } + } + function mergeExprItems(a, b) { + if (b === '""') + return a; + if (a === '""') + return b; + if (typeof a == "string") { + if (b instanceof Name || a[a.length - 1] !== '"') + return; + if (typeof b != "string") + return `${a.slice(0, -1)}${b}"`; + if (b[0] === '"') + return a.slice(0, -1) + b.slice(1); + return; + } + if (typeof b == "string" && b[0] === '"' && !(a instanceof Name)) + return `"${a}${b.slice(1)}`; + return; + } + function strConcat(c1, c2) { + return c2.emptyStr() ? c1 : c1.emptyStr() ? c2 : str`${c1}${c2}`; + } + exports2.strConcat = strConcat; + function interpolate(x) { + return typeof x == "number" || typeof x == "boolean" || x === null ? x : safeStringify(Array.isArray(x) ? x.join(",") : x); + } + function stringify2(x) { + return new _Code(safeStringify(x)); + } + exports2.stringify = stringify2; + function safeStringify(x) { + return JSON.stringify(x).replace(/\u2028/g, "\\u2028").replace(/\u2029/g, "\\u2029"); + } + exports2.safeStringify = safeStringify; + function getProperty(key) { + return typeof key == "string" && exports2.IDENTIFIER.test(key) ? new _Code(`.${key}`) : _`[${key}]`; + } + exports2.getProperty = getProperty; + function getEsmExportName(key) { + if (typeof key == "string" && exports2.IDENTIFIER.test(key)) { + return new _Code(`${key}`); + } + throw new Error(`CodeGen: invalid export name: ${key}, use explicit $id name mapping`); + } + exports2.getEsmExportName = getEsmExportName; + function regexpCode(rx) { + return new _Code(rx.toString()); + } + exports2.regexpCode = regexpCode; + } +}); + +// node_modules/ajv/dist/compile/codegen/scope.js +var require_scope = __commonJS({ + "node_modules/ajv/dist/compile/codegen/scope.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { value: true }); + exports2.ValueScope = exports2.ValueScopeName = exports2.Scope = exports2.varKinds = exports2.UsedValueState = void 0; + var code_1 = require_code(); + var ValueError = class extends Error { + constructor(name5) { + super(`CodeGen: "code" for ${name5} not defined`); + this.value = name5.value; + } + }; + var UsedValueState; + (function(UsedValueState2) { + UsedValueState2[UsedValueState2["Started"] = 0] = "Started"; + UsedValueState2[UsedValueState2["Completed"] = 1] = "Completed"; + })(UsedValueState || (exports2.UsedValueState = UsedValueState = {})); + exports2.varKinds = { + const: new code_1.Name("const"), + let: new code_1.Name("let"), + var: new code_1.Name("var") + }; + var Scope = class { + constructor({ prefixes, parent } = {}) { + this._names = {}; + this._prefixes = prefixes; + this._parent = parent; + } + toName(nameOrPrefix) { + return nameOrPrefix instanceof code_1.Name ? nameOrPrefix : this.name(nameOrPrefix); + } + name(prefix) { + return new code_1.Name(this._newName(prefix)); + } + _newName(prefix) { + const ng = this._names[prefix] || this._nameGroup(prefix); + return `${prefix}${ng.index++}`; + } + _nameGroup(prefix) { + var _a, _b; + if (((_b = (_a = this._parent) === null || _a === void 0 ? void 0 : _a._prefixes) === null || _b === void 0 ? void 0 : _b.has(prefix)) || this._prefixes && !this._prefixes.has(prefix)) { + throw new Error(`CodeGen: prefix "${prefix}" is not allowed in this scope`); + } + return this._names[prefix] = { prefix, index: 0 }; + } + }; + exports2.Scope = Scope; + var ValueScopeName = class extends code_1.Name { + constructor(prefix, nameStr) { + super(nameStr); + this.prefix = prefix; + } + setValue(value, { property, itemIndex }) { + this.value = value; + this.scopePath = (0, code_1._)`.${new code_1.Name(property)}[${itemIndex}]`; + } + }; + exports2.ValueScopeName = ValueScopeName; + var line = (0, code_1._)`\n`; + var ValueScope = class extends Scope { + constructor(opts) { + super(opts); + this._values = {}; + this._scope = opts.scope; + this.opts = { ...opts, _n: opts.lines ? line : code_1.nil }; + } + get() { + return this._scope; + } + name(prefix) { + return new ValueScopeName(prefix, this._newName(prefix)); + } + value(nameOrPrefix, value) { + var _a; + if (value.ref === void 0) + throw new Error("CodeGen: ref must be passed in value"); + const name5 = this.toName(nameOrPrefix); + const { prefix } = name5; + const valueKey = (_a = value.key) !== null && _a !== void 0 ? _a : value.ref; + let vs = this._values[prefix]; + if (vs) { + const _name = vs.get(valueKey); + if (_name) + return _name; + } else { + vs = this._values[prefix] = /* @__PURE__ */ new Map(); + } + vs.set(valueKey, name5); + const s = this._scope[prefix] || (this._scope[prefix] = []); + const itemIndex = s.length; + s[itemIndex] = value.ref; + name5.setValue(value, { property: prefix, itemIndex }); + return name5; + } + getValue(prefix, keyOrRef) { + const vs = this._values[prefix]; + if (!vs) + return; + return vs.get(keyOrRef); + } + scopeRefs(scopeName, values = this._values) { + return this._reduceValues(values, (name5) => { + if (name5.scopePath === void 0) + throw new Error(`CodeGen: name "${name5}" has no value`); + return (0, code_1._)`${scopeName}${name5.scopePath}`; + }); + } + scopeCode(values = this._values, usedValues, getCode) { + return this._reduceValues(values, (name5) => { + if (name5.value === void 0) + throw new Error(`CodeGen: name "${name5}" has no value`); + return name5.value.code; + }, usedValues, getCode); + } + _reduceValues(values, valueCode, usedValues = {}, getCode) { + let code = code_1.nil; + for (const prefix in values) { + const vs = values[prefix]; + if (!vs) + continue; + const nameSet = usedValues[prefix] = usedValues[prefix] || /* @__PURE__ */ new Map(); + vs.forEach((name5) => { + if (nameSet.has(name5)) + return; + nameSet.set(name5, UsedValueState.Started); + let c = valueCode(name5); + if (c) { + const def = this.opts.es5 ? exports2.varKinds.var : exports2.varKinds.const; + code = (0, code_1._)`${code}${def} ${name5} = ${c};${this.opts._n}`; + } else if (c = getCode === null || getCode === void 0 ? void 0 : getCode(name5)) { + code = (0, code_1._)`${code}${c}${this.opts._n}`; + } else { + throw new ValueError(name5); + } + nameSet.set(name5, UsedValueState.Completed); + }); + } + return code; + } + }; + exports2.ValueScope = ValueScope; + } +}); + +// node_modules/ajv/dist/compile/codegen/index.js +var require_codegen = __commonJS({ + "node_modules/ajv/dist/compile/codegen/index.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { value: true }); + exports2.or = exports2.and = exports2.not = exports2.CodeGen = exports2.operators = exports2.varKinds = exports2.ValueScopeName = exports2.ValueScope = exports2.Scope = exports2.Name = exports2.regexpCode = exports2.stringify = exports2.getProperty = exports2.nil = exports2.strConcat = exports2.str = exports2._ = void 0; + var code_1 = require_code(); + var scope_1 = require_scope(); + var code_2 = require_code(); + Object.defineProperty(exports2, "_", { enumerable: true, get: function() { + return code_2._; + } }); + Object.defineProperty(exports2, "str", { enumerable: true, get: function() { + return code_2.str; + } }); + Object.defineProperty(exports2, "strConcat", { enumerable: true, get: function() { + return code_2.strConcat; + } }); + Object.defineProperty(exports2, "nil", { enumerable: true, get: function() { + return code_2.nil; + } }); + Object.defineProperty(exports2, "getProperty", { enumerable: true, get: function() { + return code_2.getProperty; + } }); + Object.defineProperty(exports2, "stringify", { enumerable: true, get: function() { + return code_2.stringify; + } }); + Object.defineProperty(exports2, "regexpCode", { enumerable: true, get: function() { + return code_2.regexpCode; + } }); + Object.defineProperty(exports2, "Name", { enumerable: true, get: function() { + return code_2.Name; + } }); + var scope_2 = require_scope(); + Object.defineProperty(exports2, "Scope", { enumerable: true, get: function() { + return scope_2.Scope; + } }); + Object.defineProperty(exports2, "ValueScope", { enumerable: true, get: function() { + return scope_2.ValueScope; + } }); + Object.defineProperty(exports2, "ValueScopeName", { enumerable: true, get: function() { + return scope_2.ValueScopeName; + } }); + Object.defineProperty(exports2, "varKinds", { enumerable: true, get: function() { + return scope_2.varKinds; + } }); + exports2.operators = { + GT: new code_1._Code(">"), + GTE: new code_1._Code(">="), + LT: new code_1._Code("<"), + LTE: new code_1._Code("<="), + EQ: new code_1._Code("==="), + NEQ: new code_1._Code("!=="), + NOT: new code_1._Code("!"), + OR: new code_1._Code("||"), + AND: new code_1._Code("&&"), + ADD: new code_1._Code("+") + }; + var Node = class { + optimizeNodes() { + return this; + } + optimizeNames(_names, _constants) { + return this; + } + }; + var Def = class extends Node { + constructor(varKind, name5, rhs) { + super(); + this.varKind = varKind; + this.name = name5; + this.rhs = rhs; + } + render({ es5, _n }) { + const varKind = es5 ? scope_1.varKinds.var : this.varKind; + const rhs = this.rhs === void 0 ? "" : ` = ${this.rhs}`; + return `${varKind} ${this.name}${rhs};` + _n; + } + optimizeNames(names, constants2) { + if (!names[this.name.str]) + return; + if (this.rhs) + this.rhs = optimizeExpr(this.rhs, names, constants2); + return this; + } + get names() { + return this.rhs instanceof code_1._CodeOrName ? this.rhs.names : {}; + } + }; + var Assign = class extends Node { + constructor(lhs, rhs, sideEffects) { + super(); + this.lhs = lhs; + this.rhs = rhs; + this.sideEffects = sideEffects; + } + render({ _n }) { + return `${this.lhs} = ${this.rhs};` + _n; + } + optimizeNames(names, constants2) { + if (this.lhs instanceof code_1.Name && !names[this.lhs.str] && !this.sideEffects) + return; + this.rhs = optimizeExpr(this.rhs, names, constants2); + return this; + } + get names() { + const names = this.lhs instanceof code_1.Name ? {} : { ...this.lhs.names }; + return addExprNames(names, this.rhs); + } + }; + var AssignOp = class extends Assign { + constructor(lhs, op, rhs, sideEffects) { + super(lhs, rhs, sideEffects); + this.op = op; + } + render({ _n }) { + return `${this.lhs} ${this.op}= ${this.rhs};` + _n; + } + }; + var Label = class extends Node { + constructor(label) { + super(); + this.label = label; + this.names = {}; + } + render({ _n }) { + return `${this.label}:` + _n; + } + }; + var Break = class extends Node { + constructor(label) { + super(); + this.label = label; + this.names = {}; + } + render({ _n }) { + const label = this.label ? ` ${this.label}` : ""; + return `break${label};` + _n; + } + }; + var Throw = class extends Node { + constructor(error2) { + super(); + this.error = error2; + } + render({ _n }) { + return `throw ${this.error};` + _n; + } + get names() { + return this.error.names; + } + }; + var AnyCode = class extends Node { + constructor(code) { + super(); + this.code = code; + } + render({ _n }) { + return `${this.code};` + _n; + } + optimizeNodes() { + return `${this.code}` ? this : void 0; + } + optimizeNames(names, constants2) { + this.code = optimizeExpr(this.code, names, constants2); + return this; + } + get names() { + return this.code instanceof code_1._CodeOrName ? this.code.names : {}; + } + }; + var ParentNode = class extends Node { + constructor(nodes = []) { + super(); + this.nodes = nodes; + } + render(opts) { + return this.nodes.reduce((code, n) => code + n.render(opts), ""); + } + optimizeNodes() { + const { nodes } = this; + let i = nodes.length; + while (i--) { + const n = nodes[i].optimizeNodes(); + if (Array.isArray(n)) + nodes.splice(i, 1, ...n); + else if (n) + nodes[i] = n; + else + nodes.splice(i, 1); + } + return nodes.length > 0 ? this : void 0; + } + optimizeNames(names, constants2) { + const { nodes } = this; + let i = nodes.length; + while (i--) { + const n = nodes[i]; + if (n.optimizeNames(names, constants2)) + continue; + subtractNames(names, n.names); + nodes.splice(i, 1); + } + return nodes.length > 0 ? this : void 0; + } + get names() { + return this.nodes.reduce((names, n) => addNames(names, n.names), {}); + } + }; + var BlockNode = class extends ParentNode { + render(opts) { + return "{" + opts._n + super.render(opts) + "}" + opts._n; + } + }; + var Root = class extends ParentNode { + }; + var Else = class extends BlockNode { + }; + Else.kind = "else"; + var If = class _If extends BlockNode { + constructor(condition, nodes) { + super(nodes); + this.condition = condition; + } + render(opts) { + let code = `if(${this.condition})` + super.render(opts); + if (this.else) + code += "else " + this.else.render(opts); + return code; + } + optimizeNodes() { + super.optimizeNodes(); + const cond = this.condition; + if (cond === true) + return this.nodes; + let e = this.else; + if (e) { + const ns = e.optimizeNodes(); + e = this.else = Array.isArray(ns) ? new Else(ns) : ns; + } + if (e) { + if (cond === false) + return e instanceof _If ? e : e.nodes; + if (this.nodes.length) + return this; + return new _If(not(cond), e instanceof _If ? [e] : e.nodes); + } + if (cond === false || !this.nodes.length) + return void 0; + return this; + } + optimizeNames(names, constants2) { + var _a; + this.else = (_a = this.else) === null || _a === void 0 ? void 0 : _a.optimizeNames(names, constants2); + if (!(super.optimizeNames(names, constants2) || this.else)) + return; + this.condition = optimizeExpr(this.condition, names, constants2); + return this; + } + get names() { + const names = super.names; + addExprNames(names, this.condition); + if (this.else) + addNames(names, this.else.names); + return names; + } + }; + If.kind = "if"; + var For = class extends BlockNode { + }; + For.kind = "for"; + var ForLoop = class extends For { + constructor(iteration) { + super(); + this.iteration = iteration; + } + render(opts) { + return `for(${this.iteration})` + super.render(opts); + } + optimizeNames(names, constants2) { + if (!super.optimizeNames(names, constants2)) + return; + this.iteration = optimizeExpr(this.iteration, names, constants2); + return this; + } + get names() { + return addNames(super.names, this.iteration.names); + } + }; + var ForRange = class extends For { + constructor(varKind, name5, from, to) { + super(); + this.varKind = varKind; + this.name = name5; + this.from = from; + this.to = to; + } + render(opts) { + const varKind = opts.es5 ? scope_1.varKinds.var : this.varKind; + const { name: name5, from, to } = this; + return `for(${varKind} ${name5}=${from}; ${name5}<${to}; ${name5}++)` + super.render(opts); + } + get names() { + const names = addExprNames(super.names, this.from); + return addExprNames(names, this.to); + } + }; + var ForIter = class extends For { + constructor(loop, varKind, name5, iterable) { + super(); + this.loop = loop; + this.varKind = varKind; + this.name = name5; + this.iterable = iterable; + } + render(opts) { + return `for(${this.varKind} ${this.name} ${this.loop} ${this.iterable})` + super.render(opts); + } + optimizeNames(names, constants2) { + if (!super.optimizeNames(names, constants2)) + return; + this.iterable = optimizeExpr(this.iterable, names, constants2); + return this; + } + get names() { + return addNames(super.names, this.iterable.names); + } + }; + var Func = class extends BlockNode { + constructor(name5, args, async) { + super(); + this.name = name5; + this.args = args; + this.async = async; + } + render(opts) { + const _async = this.async ? "async " : ""; + return `${_async}function ${this.name}(${this.args})` + super.render(opts); + } + }; + Func.kind = "func"; + var Return = class extends ParentNode { + render(opts) { + return "return " + super.render(opts); + } + }; + Return.kind = "return"; + var Try = class extends BlockNode { + render(opts) { + let code = "try" + super.render(opts); + if (this.catch) + code += this.catch.render(opts); + if (this.finally) + code += this.finally.render(opts); + return code; + } + optimizeNodes() { + var _a, _b; + super.optimizeNodes(); + (_a = this.catch) === null || _a === void 0 ? void 0 : _a.optimizeNodes(); + (_b = this.finally) === null || _b === void 0 ? void 0 : _b.optimizeNodes(); + return this; + } + optimizeNames(names, constants2) { + var _a, _b; + super.optimizeNames(names, constants2); + (_a = this.catch) === null || _a === void 0 ? void 0 : _a.optimizeNames(names, constants2); + (_b = this.finally) === null || _b === void 0 ? void 0 : _b.optimizeNames(names, constants2); + return this; + } + get names() { + const names = super.names; + if (this.catch) + addNames(names, this.catch.names); + if (this.finally) + addNames(names, this.finally.names); + return names; + } + }; + var Catch = class extends BlockNode { + constructor(error2) { + super(); + this.error = error2; + } + render(opts) { + return `catch(${this.error})` + super.render(opts); + } + }; + Catch.kind = "catch"; + var Finally = class extends BlockNode { + render(opts) { + return "finally" + super.render(opts); + } + }; + Finally.kind = "finally"; + var CodeGen = class { + constructor(extScope, opts = {}) { + this._values = {}; + this._blockStarts = []; + this._constants = {}; + this.opts = { ...opts, _n: opts.lines ? "\n" : "" }; + this._extScope = extScope; + this._scope = new scope_1.Scope({ parent: extScope }); + this._nodes = [new Root()]; + } + toString() { + return this._root.render(this.opts); + } + // returns unique name in the internal scope + name(prefix) { + return this._scope.name(prefix); + } + // reserves unique name in the external scope + scopeName(prefix) { + return this._extScope.name(prefix); + } + // reserves unique name in the external scope and assigns value to it + scopeValue(prefixOrName, value) { + const name5 = this._extScope.value(prefixOrName, value); + const vs = this._values[name5.prefix] || (this._values[name5.prefix] = /* @__PURE__ */ new Set()); + vs.add(name5); + return name5; + } + getScopeValue(prefix, keyOrRef) { + return this._extScope.getValue(prefix, keyOrRef); + } + // return code that assigns values in the external scope to the names that are used internally + // (same names that were returned by gen.scopeName or gen.scopeValue) + scopeRefs(scopeName) { + return this._extScope.scopeRefs(scopeName, this._values); + } + scopeCode() { + return this._extScope.scopeCode(this._values); + } + _def(varKind, nameOrPrefix, rhs, constant) { + const name5 = this._scope.toName(nameOrPrefix); + if (rhs !== void 0 && constant) + this._constants[name5.str] = rhs; + this._leafNode(new Def(varKind, name5, rhs)); + return name5; + } + // `const` declaration (`var` in es5 mode) + const(nameOrPrefix, rhs, _constant) { + return this._def(scope_1.varKinds.const, nameOrPrefix, rhs, _constant); + } + // `let` declaration with optional assignment (`var` in es5 mode) + let(nameOrPrefix, rhs, _constant) { + return this._def(scope_1.varKinds.let, nameOrPrefix, rhs, _constant); + } + // `var` declaration with optional assignment + var(nameOrPrefix, rhs, _constant) { + return this._def(scope_1.varKinds.var, nameOrPrefix, rhs, _constant); + } + // assignment code + assign(lhs, rhs, sideEffects) { + return this._leafNode(new Assign(lhs, rhs, sideEffects)); + } + // `+=` code + add(lhs, rhs) { + return this._leafNode(new AssignOp(lhs, exports2.operators.ADD, rhs)); + } + // appends passed SafeExpr to code or executes Block + code(c) { + if (typeof c == "function") + c(); + else if (c !== code_1.nil) + this._leafNode(new AnyCode(c)); + return this; + } + // returns code for object literal for the passed argument list of key-value pairs + object(...keyValues) { + const code = ["{"]; + for (const [key, value] of keyValues) { + if (code.length > 1) + code.push(","); + code.push(key); + if (key !== value || this.opts.es5) { + code.push(":"); + (0, code_1.addCodeArg)(code, value); + } + } + code.push("}"); + return new code_1._Code(code); + } + // `if` clause (or statement if `thenBody` and, optionally, `elseBody` are passed) + if(condition, thenBody, elseBody) { + this._blockNode(new If(condition)); + if (thenBody && elseBody) { + this.code(thenBody).else().code(elseBody).endIf(); + } else if (thenBody) { + this.code(thenBody).endIf(); + } else if (elseBody) { + throw new Error('CodeGen: "else" body without "then" body'); + } + return this; + } + // `else if` clause - invalid without `if` or after `else` clauses + elseIf(condition) { + return this._elseNode(new If(condition)); + } + // `else` clause - only valid after `if` or `else if` clauses + else() { + return this._elseNode(new Else()); + } + // end `if` statement (needed if gen.if was used only with condition) + endIf() { + return this._endBlockNode(If, Else); + } + _for(node, forBody) { + this._blockNode(node); + if (forBody) + this.code(forBody).endFor(); + return this; + } + // a generic `for` clause (or statement if `forBody` is passed) + for(iteration, forBody) { + return this._for(new ForLoop(iteration), forBody); + } + // `for` statement for a range of values + forRange(nameOrPrefix, from, to, forBody, varKind = this.opts.es5 ? scope_1.varKinds.var : scope_1.varKinds.let) { + const name5 = this._scope.toName(nameOrPrefix); + return this._for(new ForRange(varKind, name5, from, to), () => forBody(name5)); + } + // `for-of` statement (in es5 mode replace with a normal for loop) + forOf(nameOrPrefix, iterable, forBody, varKind = scope_1.varKinds.const) { + const name5 = this._scope.toName(nameOrPrefix); + if (this.opts.es5) { + const arr = iterable instanceof code_1.Name ? iterable : this.var("_arr", iterable); + return this.forRange("_i", 0, (0, code_1._)`${arr}.length`, (i) => { + this.var(name5, (0, code_1._)`${arr}[${i}]`); + forBody(name5); + }); + } + return this._for(new ForIter("of", varKind, name5, iterable), () => forBody(name5)); + } + // `for-in` statement. + // With option `ownProperties` replaced with a `for-of` loop for object keys + forIn(nameOrPrefix, obj, forBody, varKind = this.opts.es5 ? scope_1.varKinds.var : scope_1.varKinds.const) { + if (this.opts.ownProperties) { + return this.forOf(nameOrPrefix, (0, code_1._)`Object.keys(${obj})`, forBody); + } + const name5 = this._scope.toName(nameOrPrefix); + return this._for(new ForIter("in", varKind, name5, obj), () => forBody(name5)); + } + // end `for` loop + endFor() { + return this._endBlockNode(For); + } + // `label` statement + label(label) { + return this._leafNode(new Label(label)); + } + // `break` statement + break(label) { + return this._leafNode(new Break(label)); + } + // `return` statement + return(value) { + const node = new Return(); + this._blockNode(node); + this.code(value); + if (node.nodes.length !== 1) + throw new Error('CodeGen: "return" should have one node'); + return this._endBlockNode(Return); + } + // `try` statement + try(tryBody, catchCode, finallyCode) { + if (!catchCode && !finallyCode) + throw new Error('CodeGen: "try" without "catch" and "finally"'); + const node = new Try(); + this._blockNode(node); + this.code(tryBody); + if (catchCode) { + const error2 = this.name("e"); + this._currNode = node.catch = new Catch(error2); + catchCode(error2); + } + if (finallyCode) { + this._currNode = node.finally = new Finally(); + this.code(finallyCode); + } + return this._endBlockNode(Catch, Finally); + } + // `throw` statement + throw(error2) { + return this._leafNode(new Throw(error2)); + } + // start self-balancing block + block(body, nodeCount) { + this._blockStarts.push(this._nodes.length); + if (body) + this.code(body).endBlock(nodeCount); + return this; + } + // end the current self-balancing block + endBlock(nodeCount) { + const len = this._blockStarts.pop(); + if (len === void 0) + throw new Error("CodeGen: not in self-balancing block"); + const toClose = this._nodes.length - len; + if (toClose < 0 || nodeCount !== void 0 && toClose !== nodeCount) { + throw new Error(`CodeGen: wrong number of nodes: ${toClose} vs ${nodeCount} expected`); + } + this._nodes.length = len; + return this; + } + // `function` heading (or definition if funcBody is passed) + func(name5, args = code_1.nil, async, funcBody) { + this._blockNode(new Func(name5, args, async)); + if (funcBody) + this.code(funcBody).endFunc(); + return this; + } + // end function definition + endFunc() { + return this._endBlockNode(Func); + } + optimize(n = 1) { + while (n-- > 0) { + this._root.optimizeNodes(); + this._root.optimizeNames(this._root.names, this._constants); + } + } + _leafNode(node) { + this._currNode.nodes.push(node); + return this; + } + _blockNode(node) { + this._currNode.nodes.push(node); + this._nodes.push(node); + } + _endBlockNode(N1, N2) { + const n = this._currNode; + if (n instanceof N1 || N2 && n instanceof N2) { + this._nodes.pop(); + return this; + } + throw new Error(`CodeGen: not in block "${N2 ? `${N1.kind}/${N2.kind}` : N1.kind}"`); + } + _elseNode(node) { + const n = this._currNode; + if (!(n instanceof If)) { + throw new Error('CodeGen: "else" without "if"'); + } + this._currNode = n.else = node; + return this; + } + get _root() { + return this._nodes[0]; + } + get _currNode() { + const ns = this._nodes; + return ns[ns.length - 1]; + } + set _currNode(node) { + const ns = this._nodes; + ns[ns.length - 1] = node; + } + }; + exports2.CodeGen = CodeGen; + function addNames(names, from) { + for (const n in from) + names[n] = (names[n] || 0) + (from[n] || 0); + return names; + } + function addExprNames(names, from) { + return from instanceof code_1._CodeOrName ? addNames(names, from.names) : names; + } + function optimizeExpr(expr, names, constants2) { + if (expr instanceof code_1.Name) + return replaceName(expr); + if (!canOptimize(expr)) + return expr; + return new code_1._Code(expr._items.reduce((items, c) => { + if (c instanceof code_1.Name) + c = replaceName(c); + if (c instanceof code_1._Code) + items.push(...c._items); + else + items.push(c); + return items; + }, [])); + function replaceName(n) { + const c = constants2[n.str]; + if (c === void 0 || names[n.str] !== 1) + return n; + delete names[n.str]; + return c; + } + function canOptimize(e) { + return e instanceof code_1._Code && e._items.some((c) => c instanceof code_1.Name && names[c.str] === 1 && constants2[c.str] !== void 0); + } + } + function subtractNames(names, from) { + for (const n in from) + names[n] = (names[n] || 0) - (from[n] || 0); + } + function not(x) { + return typeof x == "boolean" || typeof x == "number" || x === null ? !x : (0, code_1._)`!${par(x)}`; + } + exports2.not = not; + var andCode = mappend(exports2.operators.AND); + function and(...args) { + return args.reduce(andCode); + } + exports2.and = and; + var orCode = mappend(exports2.operators.OR); + function or(...args) { + return args.reduce(orCode); + } + exports2.or = or; + function mappend(op) { + return (x, y) => x === code_1.nil ? y : y === code_1.nil ? x : (0, code_1._)`${par(x)} ${op} ${par(y)}`; + } + function par(x) { + return x instanceof code_1.Name ? x : (0, code_1._)`(${x})`; + } + } +}); + +// node_modules/ajv/dist/compile/util.js +var require_util = __commonJS({ + "node_modules/ajv/dist/compile/util.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { value: true }); + exports2.checkStrictMode = exports2.getErrorPath = exports2.Type = exports2.useFunc = exports2.setEvaluated = exports2.evaluatedPropsToName = exports2.mergeEvaluated = exports2.eachItem = exports2.unescapeJsonPointer = exports2.escapeJsonPointer = exports2.escapeFragment = exports2.unescapeFragment = exports2.schemaRefOrVal = exports2.schemaHasRulesButRef = exports2.schemaHasRules = exports2.checkUnknownRules = exports2.alwaysValidSchema = exports2.toHash = void 0; + var codegen_1 = require_codegen(); + var code_1 = require_code(); + function toHash(arr) { + const hash = {}; + for (const item of arr) + hash[item] = true; + return hash; + } + exports2.toHash = toHash; + function alwaysValidSchema(it, schema) { + if (typeof schema == "boolean") + return schema; + if (Object.keys(schema).length === 0) + return true; + checkUnknownRules(it, schema); + return !schemaHasRules(schema, it.self.RULES.all); + } + exports2.alwaysValidSchema = alwaysValidSchema; + function checkUnknownRules(it, schema = it.schema) { + const { opts, self: self2 } = it; + if (!opts.strictSchema) + return; + if (typeof schema === "boolean") + return; + const rules = self2.RULES.keywords; + for (const key in schema) { + if (!rules[key]) + checkStrictMode(it, `unknown keyword: "${key}"`); + } + } + exports2.checkUnknownRules = checkUnknownRules; + function schemaHasRules(schema, rules) { + if (typeof schema == "boolean") + return !schema; + for (const key in schema) + if (rules[key]) + return true; + return false; + } + exports2.schemaHasRules = schemaHasRules; + function schemaHasRulesButRef(schema, RULES) { + if (typeof schema == "boolean") + return !schema; + for (const key in schema) + if (key !== "$ref" && RULES.all[key]) + return true; + return false; + } + exports2.schemaHasRulesButRef = schemaHasRulesButRef; + function schemaRefOrVal({ topSchemaRef, schemaPath }, schema, keyword, $data) { + if (!$data) { + if (typeof schema == "number" || typeof schema == "boolean") + return schema; + if (typeof schema == "string") + return (0, codegen_1._)`${schema}`; + } + return (0, codegen_1._)`${topSchemaRef}${schemaPath}${(0, codegen_1.getProperty)(keyword)}`; + } + exports2.schemaRefOrVal = schemaRefOrVal; + function unescapeFragment(str) { + return unescapeJsonPointer(decodeURIComponent(str)); + } + exports2.unescapeFragment = unescapeFragment; + function escapeFragment(str) { + return encodeURIComponent(escapeJsonPointer(str)); + } + exports2.escapeFragment = escapeFragment; + function escapeJsonPointer(str) { + if (typeof str == "number") + return `${str}`; + return str.replace(/~/g, "~0").replace(/\//g, "~1"); + } + exports2.escapeJsonPointer = escapeJsonPointer; + function unescapeJsonPointer(str) { + return str.replace(/~1/g, "/").replace(/~0/g, "~"); + } + exports2.unescapeJsonPointer = unescapeJsonPointer; + function eachItem(xs, f) { + if (Array.isArray(xs)) { + for (const x of xs) + f(x); + } else { + f(xs); + } + } + exports2.eachItem = eachItem; + function makeMergeEvaluated({ mergeNames, mergeToName, mergeValues: mergeValues3, resultToName }) { + return (gen, from, to, toName) => { + const res = to === void 0 ? from : to instanceof codegen_1.Name ? (from instanceof codegen_1.Name ? mergeNames(gen, from, to) : mergeToName(gen, from, to), to) : from instanceof codegen_1.Name ? (mergeToName(gen, to, from), from) : mergeValues3(from, to); + return toName === codegen_1.Name && !(res instanceof codegen_1.Name) ? resultToName(gen, res) : res; + }; + } + exports2.mergeEvaluated = { + props: makeMergeEvaluated({ + mergeNames: (gen, from, to) => gen.if((0, codegen_1._)`${to} !== true && ${from} !== undefined`, () => { + gen.if((0, codegen_1._)`${from} === true`, () => gen.assign(to, true), () => gen.assign(to, (0, codegen_1._)`${to} || {}`).code((0, codegen_1._)`Object.assign(${to}, ${from})`)); + }), + mergeToName: (gen, from, to) => gen.if((0, codegen_1._)`${to} !== true`, () => { + if (from === true) { + gen.assign(to, true); + } else { + gen.assign(to, (0, codegen_1._)`${to} || {}`); + setEvaluated(gen, to, from); + } + }), + mergeValues: (from, to) => from === true ? true : { ...from, ...to }, + resultToName: evaluatedPropsToName + }), + items: makeMergeEvaluated({ + mergeNames: (gen, from, to) => gen.if((0, codegen_1._)`${to} !== true && ${from} !== undefined`, () => gen.assign(to, (0, codegen_1._)`${from} === true ? true : ${to} > ${from} ? ${to} : ${from}`)), + mergeToName: (gen, from, to) => gen.if((0, codegen_1._)`${to} !== true`, () => gen.assign(to, from === true ? true : (0, codegen_1._)`${to} > ${from} ? ${to} : ${from}`)), + mergeValues: (from, to) => from === true ? true : Math.max(from, to), + resultToName: (gen, items) => gen.var("items", items) + }) + }; + function evaluatedPropsToName(gen, ps) { + if (ps === true) + return gen.var("props", true); + const props = gen.var("props", (0, codegen_1._)`{}`); + if (ps !== void 0) + setEvaluated(gen, props, ps); + return props; + } + exports2.evaluatedPropsToName = evaluatedPropsToName; + function setEvaluated(gen, props, ps) { + Object.keys(ps).forEach((p) => gen.assign((0, codegen_1._)`${props}${(0, codegen_1.getProperty)(p)}`, true)); + } + exports2.setEvaluated = setEvaluated; + var snippets = {}; + function useFunc(gen, f) { + return gen.scopeValue("func", { + ref: f, + code: snippets[f.code] || (snippets[f.code] = new code_1._Code(f.code)) + }); + } + exports2.useFunc = useFunc; + var Type; + (function(Type2) { + Type2[Type2["Num"] = 0] = "Num"; + Type2[Type2["Str"] = 1] = "Str"; + })(Type || (exports2.Type = Type = {})); + function getErrorPath(dataProp, dataPropType, jsPropertySyntax) { + if (dataProp instanceof codegen_1.Name) { + const isNumber = dataPropType === Type.Num; + return jsPropertySyntax ? isNumber ? (0, codegen_1._)`"[" + ${dataProp} + "]"` : (0, codegen_1._)`"['" + ${dataProp} + "']"` : isNumber ? (0, codegen_1._)`"/" + ${dataProp}` : (0, codegen_1._)`"/" + ${dataProp}.replace(/~/g, "~0").replace(/\\//g, "~1")`; + } + return jsPropertySyntax ? (0, codegen_1.getProperty)(dataProp).toString() : "/" + escapeJsonPointer(dataProp); + } + exports2.getErrorPath = getErrorPath; + function checkStrictMode(it, msg, mode = it.opts.strictSchema) { + if (!mode) + return; + msg = `strict mode: ${msg}`; + if (mode === true) + throw new Error(msg); + it.self.logger.warn(msg); + } + exports2.checkStrictMode = checkStrictMode; + } +}); + +// node_modules/ajv/dist/compile/names.js +var require_names = __commonJS({ + "node_modules/ajv/dist/compile/names.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { value: true }); + var codegen_1 = require_codegen(); + var names = { + // validation function arguments + data: new codegen_1.Name("data"), + // data passed to validation function + // args passed from referencing schema + valCxt: new codegen_1.Name("valCxt"), + // validation/data context - should not be used directly, it is destructured to the names below + instancePath: new codegen_1.Name("instancePath"), + parentData: new codegen_1.Name("parentData"), + parentDataProperty: new codegen_1.Name("parentDataProperty"), + rootData: new codegen_1.Name("rootData"), + // root data - same as the data passed to the first/top validation function + dynamicAnchors: new codegen_1.Name("dynamicAnchors"), + // used to support recursiveRef and dynamicRef + // function scoped variables + vErrors: new codegen_1.Name("vErrors"), + // null or array of validation errors + errors: new codegen_1.Name("errors"), + // counter of validation errors + this: new codegen_1.Name("this"), + // "globals" + self: new codegen_1.Name("self"), + scope: new codegen_1.Name("scope"), + // JTD serialize/parse name for JSON string and position + json: new codegen_1.Name("json"), + jsonPos: new codegen_1.Name("jsonPos"), + jsonLen: new codegen_1.Name("jsonLen"), + jsonPart: new codegen_1.Name("jsonPart") + }; + exports2.default = names; + } +}); + +// node_modules/ajv/dist/compile/errors.js +var require_errors3 = __commonJS({ + "node_modules/ajv/dist/compile/errors.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { value: true }); + exports2.extendErrors = exports2.resetErrorsCount = exports2.reportExtraError = exports2.reportError = exports2.keyword$DataError = exports2.keywordError = void 0; + var codegen_1 = require_codegen(); + var util_1 = require_util(); + var names_1 = require_names(); + exports2.keywordError = { + message: ({ keyword }) => (0, codegen_1.str)`must pass "${keyword}" keyword validation` + }; + exports2.keyword$DataError = { + message: ({ keyword, schemaType }) => schemaType ? (0, codegen_1.str)`"${keyword}" keyword must be ${schemaType} ($data)` : (0, codegen_1.str)`"${keyword}" keyword is invalid ($data)` + }; + function reportError(cxt, error2 = exports2.keywordError, errorPaths, overrideAllErrors) { + const { it } = cxt; + const { gen, compositeRule, allErrors } = it; + const errObj = errorObjectCode(cxt, error2, errorPaths); + if (overrideAllErrors !== null && overrideAllErrors !== void 0 ? overrideAllErrors : compositeRule || allErrors) { + addError(gen, errObj); + } else { + returnErrors(it, (0, codegen_1._)`[${errObj}]`); + } + } + exports2.reportError = reportError; + function reportExtraError(cxt, error2 = exports2.keywordError, errorPaths) { + const { it } = cxt; + const { gen, compositeRule, allErrors } = it; + const errObj = errorObjectCode(cxt, error2, errorPaths); + addError(gen, errObj); + if (!(compositeRule || allErrors)) { + returnErrors(it, names_1.default.vErrors); + } + } + exports2.reportExtraError = reportExtraError; + function resetErrorsCount(gen, errsCount) { + gen.assign(names_1.default.errors, errsCount); + gen.if((0, codegen_1._)`${names_1.default.vErrors} !== null`, () => gen.if(errsCount, () => gen.assign((0, codegen_1._)`${names_1.default.vErrors}.length`, errsCount), () => gen.assign(names_1.default.vErrors, null))); + } + exports2.resetErrorsCount = resetErrorsCount; + function extendErrors({ gen, keyword, schemaValue, data, errsCount, it }) { + if (errsCount === void 0) + throw new Error("ajv implementation error"); + const err = gen.name("err"); + gen.forRange("i", errsCount, names_1.default.errors, (i) => { + gen.const(err, (0, codegen_1._)`${names_1.default.vErrors}[${i}]`); + gen.if((0, codegen_1._)`${err}.instancePath === undefined`, () => gen.assign((0, codegen_1._)`${err}.instancePath`, (0, codegen_1.strConcat)(names_1.default.instancePath, it.errorPath))); + gen.assign((0, codegen_1._)`${err}.schemaPath`, (0, codegen_1.str)`${it.errSchemaPath}/${keyword}`); + if (it.opts.verbose) { + gen.assign((0, codegen_1._)`${err}.schema`, schemaValue); + gen.assign((0, codegen_1._)`${err}.data`, data); + } + }); + } + exports2.extendErrors = extendErrors; + function addError(gen, errObj) { + const err = gen.const("err", errObj); + gen.if((0, codegen_1._)`${names_1.default.vErrors} === null`, () => gen.assign(names_1.default.vErrors, (0, codegen_1._)`[${err}]`), (0, codegen_1._)`${names_1.default.vErrors}.push(${err})`); + gen.code((0, codegen_1._)`${names_1.default.errors}++`); + } + function returnErrors(it, errs) { + const { gen, validateName, schemaEnv } = it; + if (schemaEnv.$async) { + gen.throw((0, codegen_1._)`new ${it.ValidationError}(${errs})`); + } else { + gen.assign((0, codegen_1._)`${validateName}.errors`, errs); + gen.return(false); + } + } + var E = { + keyword: new codegen_1.Name("keyword"), + schemaPath: new codegen_1.Name("schemaPath"), + // also used in JTD errors + params: new codegen_1.Name("params"), + propertyName: new codegen_1.Name("propertyName"), + message: new codegen_1.Name("message"), + schema: new codegen_1.Name("schema"), + parentSchema: new codegen_1.Name("parentSchema") + }; + function errorObjectCode(cxt, error2, errorPaths) { + const { createErrors } = cxt.it; + if (createErrors === false) + return (0, codegen_1._)`{}`; + return errorObject(cxt, error2, errorPaths); + } + function errorObject(cxt, error2, errorPaths = {}) { + const { gen, it } = cxt; + const keyValues = [ + errorInstancePath(it, errorPaths), + errorSchemaPath(cxt, errorPaths) + ]; + extraErrorProps(cxt, error2, keyValues); + return gen.object(...keyValues); + } + function errorInstancePath({ errorPath }, { instancePath }) { + const instPath = instancePath ? (0, codegen_1.str)`${errorPath}${(0, util_1.getErrorPath)(instancePath, util_1.Type.Str)}` : errorPath; + return [names_1.default.instancePath, (0, codegen_1.strConcat)(names_1.default.instancePath, instPath)]; + } + function errorSchemaPath({ keyword, it: { errSchemaPath } }, { schemaPath, parentSchema }) { + let schPath = parentSchema ? errSchemaPath : (0, codegen_1.str)`${errSchemaPath}/${keyword}`; + if (schemaPath) { + schPath = (0, codegen_1.str)`${schPath}${(0, util_1.getErrorPath)(schemaPath, util_1.Type.Str)}`; + } + return [E.schemaPath, schPath]; + } + function extraErrorProps(cxt, { params, message }, keyValues) { + const { keyword, data, schemaValue, it } = cxt; + const { opts, propertyName, topSchemaRef, schemaPath } = it; + keyValues.push([E.keyword, keyword], [E.params, typeof params == "function" ? params(cxt) : params || (0, codegen_1._)`{}`]); + if (opts.messages) { + keyValues.push([E.message, typeof message == "function" ? message(cxt) : message]); + } + if (opts.verbose) { + keyValues.push([E.schema, schemaValue], [E.parentSchema, (0, codegen_1._)`${topSchemaRef}${schemaPath}`], [names_1.default.data, data]); + } + if (propertyName) + keyValues.push([E.propertyName, propertyName]); + } + } +}); + +// node_modules/ajv/dist/compile/validate/boolSchema.js +var require_boolSchema = __commonJS({ + "node_modules/ajv/dist/compile/validate/boolSchema.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { value: true }); + exports2.boolOrEmptySchema = exports2.topBoolOrEmptySchema = void 0; + var errors_1 = require_errors3(); + var codegen_1 = require_codegen(); + var names_1 = require_names(); + var boolError = { + message: "boolean schema is false" + }; + function topBoolOrEmptySchema(it) { + const { gen, schema, validateName } = it; + if (schema === false) { + falseSchemaError(it, false); + } else if (typeof schema == "object" && schema.$async === true) { + gen.return(names_1.default.data); + } else { + gen.assign((0, codegen_1._)`${validateName}.errors`, null); + gen.return(true); + } + } + exports2.topBoolOrEmptySchema = topBoolOrEmptySchema; + function boolOrEmptySchema(it, valid) { + const { gen, schema } = it; + if (schema === false) { + gen.var(valid, false); + falseSchemaError(it); + } else { + gen.var(valid, true); + } + } + exports2.boolOrEmptySchema = boolOrEmptySchema; + function falseSchemaError(it, overrideAllErrors) { + const { gen, data } = it; + const cxt = { + gen, + keyword: "false schema", + data, + schema: false, + schemaCode: false, + schemaValue: false, + params: {}, + it + }; + (0, errors_1.reportError)(cxt, boolError, void 0, overrideAllErrors); + } + } +}); + +// node_modules/ajv/dist/compile/rules.js +var require_rules = __commonJS({ + "node_modules/ajv/dist/compile/rules.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { value: true }); + exports2.getRules = exports2.isJSONType = void 0; + var _jsonTypes = ["string", "number", "integer", "boolean", "null", "object", "array"]; + var jsonTypes = new Set(_jsonTypes); + function isJSONType(x) { + return typeof x == "string" && jsonTypes.has(x); + } + exports2.isJSONType = isJSONType; + function getRules() { + const groups = { + number: { type: "number", rules: [] }, + string: { type: "string", rules: [] }, + array: { type: "array", rules: [] }, + object: { type: "object", rules: [] } + }; + return { + types: { ...groups, integer: true, boolean: true, null: true }, + rules: [{ rules: [] }, groups.number, groups.string, groups.array, groups.object], + post: { rules: [] }, + all: {}, + keywords: {} + }; + } + exports2.getRules = getRules; + } +}); + +// node_modules/ajv/dist/compile/validate/applicability.js +var require_applicability = __commonJS({ + "node_modules/ajv/dist/compile/validate/applicability.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { value: true }); + exports2.shouldUseRule = exports2.shouldUseGroup = exports2.schemaHasRulesForType = void 0; + function schemaHasRulesForType({ schema, self: self2 }, type) { + const group = self2.RULES.types[type]; + return group && group !== true && shouldUseGroup(schema, group); + } + exports2.schemaHasRulesForType = schemaHasRulesForType; + function shouldUseGroup(schema, group) { + return group.rules.some((rule) => shouldUseRule(schema, rule)); + } + exports2.shouldUseGroup = shouldUseGroup; + function shouldUseRule(schema, rule) { + var _a; + return schema[rule.keyword] !== void 0 || ((_a = rule.definition.implements) === null || _a === void 0 ? void 0 : _a.some((kwd) => schema[kwd] !== void 0)); + } + exports2.shouldUseRule = shouldUseRule; + } +}); + +// node_modules/ajv/dist/compile/validate/dataType.js +var require_dataType = __commonJS({ + "node_modules/ajv/dist/compile/validate/dataType.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { value: true }); + exports2.reportTypeError = exports2.checkDataTypes = exports2.checkDataType = exports2.coerceAndCheckDataType = exports2.getJSONTypes = exports2.getSchemaTypes = exports2.DataType = void 0; + var rules_1 = require_rules(); + var applicability_1 = require_applicability(); + var errors_1 = require_errors3(); + var codegen_1 = require_codegen(); + var util_1 = require_util(); + var DataType; + (function(DataType2) { + DataType2[DataType2["Correct"] = 0] = "Correct"; + DataType2[DataType2["Wrong"] = 1] = "Wrong"; + })(DataType || (exports2.DataType = DataType = {})); + function getSchemaTypes(schema) { + const types = getJSONTypes(schema.type); + const hasNull = types.includes("null"); + if (hasNull) { + if (schema.nullable === false) + throw new Error("type: null contradicts nullable: false"); + } else { + if (!types.length && schema.nullable !== void 0) { + throw new Error('"nullable" cannot be used without "type"'); + } + if (schema.nullable === true) + types.push("null"); + } + return types; + } + exports2.getSchemaTypes = getSchemaTypes; + function getJSONTypes(ts) { + const types = Array.isArray(ts) ? ts : ts ? [ts] : []; + if (types.every(rules_1.isJSONType)) + return types; + throw new Error("type must be JSONType or JSONType[]: " + types.join(",")); + } + exports2.getJSONTypes = getJSONTypes; + function coerceAndCheckDataType(it, types) { + const { gen, data, opts } = it; + const coerceTo = coerceToTypes(types, opts.coerceTypes); + const checkTypes = types.length > 0 && !(coerceTo.length === 0 && types.length === 1 && (0, applicability_1.schemaHasRulesForType)(it, types[0])); + if (checkTypes) { + const wrongType = checkDataTypes(types, data, opts.strictNumbers, DataType.Wrong); + gen.if(wrongType, () => { + if (coerceTo.length) + coerceData(it, types, coerceTo); + else + reportTypeError(it); + }); + } + return checkTypes; + } + exports2.coerceAndCheckDataType = coerceAndCheckDataType; + var COERCIBLE = /* @__PURE__ */ new Set(["string", "number", "integer", "boolean", "null"]); + function coerceToTypes(types, coerceTypes) { + return coerceTypes ? types.filter((t) => COERCIBLE.has(t) || coerceTypes === "array" && t === "array") : []; + } + function coerceData(it, types, coerceTo) { + const { gen, data, opts } = it; + const dataType = gen.let("dataType", (0, codegen_1._)`typeof ${data}`); + const coerced = gen.let("coerced", (0, codegen_1._)`undefined`); + if (opts.coerceTypes === "array") { + gen.if((0, codegen_1._)`${dataType} == 'object' && Array.isArray(${data}) && ${data}.length == 1`, () => gen.assign(data, (0, codegen_1._)`${data}[0]`).assign(dataType, (0, codegen_1._)`typeof ${data}`).if(checkDataTypes(types, data, opts.strictNumbers), () => gen.assign(coerced, data))); + } + gen.if((0, codegen_1._)`${coerced} !== undefined`); + for (const t of coerceTo) { + if (COERCIBLE.has(t) || t === "array" && opts.coerceTypes === "array") { + coerceSpecificType(t); + } + } + gen.else(); + reportTypeError(it); + gen.endIf(); + gen.if((0, codegen_1._)`${coerced} !== undefined`, () => { + gen.assign(data, coerced); + assignParentData(it, coerced); + }); + function coerceSpecificType(t) { + switch (t) { + case "string": + gen.elseIf((0, codegen_1._)`${dataType} == "number" || ${dataType} == "boolean"`).assign(coerced, (0, codegen_1._)`"" + ${data}`).elseIf((0, codegen_1._)`${data} === null`).assign(coerced, (0, codegen_1._)`""`); + return; + case "number": + gen.elseIf((0, codegen_1._)`${dataType} == "boolean" || ${data} === null + || (${dataType} == "string" && ${data} && ${data} == +${data})`).assign(coerced, (0, codegen_1._)`+${data}`); + return; + case "integer": + gen.elseIf((0, codegen_1._)`${dataType} === "boolean" || ${data} === null + || (${dataType} === "string" && ${data} && ${data} == +${data} && !(${data} % 1))`).assign(coerced, (0, codegen_1._)`+${data}`); + return; + case "boolean": + gen.elseIf((0, codegen_1._)`${data} === "false" || ${data} === 0 || ${data} === null`).assign(coerced, false).elseIf((0, codegen_1._)`${data} === "true" || ${data} === 1`).assign(coerced, true); + return; + case "null": + gen.elseIf((0, codegen_1._)`${data} === "" || ${data} === 0 || ${data} === false`); + gen.assign(coerced, null); + return; + case "array": + gen.elseIf((0, codegen_1._)`${dataType} === "string" || ${dataType} === "number" + || ${dataType} === "boolean" || ${data} === null`).assign(coerced, (0, codegen_1._)`[${data}]`); + } + } + } + function assignParentData({ gen, parentData, parentDataProperty }, expr) { + gen.if((0, codegen_1._)`${parentData} !== undefined`, () => gen.assign((0, codegen_1._)`${parentData}[${parentDataProperty}]`, expr)); + } + function checkDataType(dataType, data, strictNums, correct = DataType.Correct) { + const EQ = correct === DataType.Correct ? codegen_1.operators.EQ : codegen_1.operators.NEQ; + let cond; + switch (dataType) { + case "null": + return (0, codegen_1._)`${data} ${EQ} null`; + case "array": + cond = (0, codegen_1._)`Array.isArray(${data})`; + break; + case "object": + cond = (0, codegen_1._)`${data} && typeof ${data} == "object" && !Array.isArray(${data})`; + break; + case "integer": + cond = numCond((0, codegen_1._)`!(${data} % 1) && !isNaN(${data})`); + break; + case "number": + cond = numCond(); + break; + default: + return (0, codegen_1._)`typeof ${data} ${EQ} ${dataType}`; + } + return correct === DataType.Correct ? cond : (0, codegen_1.not)(cond); + function numCond(_cond = codegen_1.nil) { + return (0, codegen_1.and)((0, codegen_1._)`typeof ${data} == "number"`, _cond, strictNums ? (0, codegen_1._)`isFinite(${data})` : codegen_1.nil); + } + } + exports2.checkDataType = checkDataType; + function checkDataTypes(dataTypes, data, strictNums, correct) { + if (dataTypes.length === 1) { + return checkDataType(dataTypes[0], data, strictNums, correct); + } + let cond; + const types = (0, util_1.toHash)(dataTypes); + if (types.array && types.object) { + const notObj = (0, codegen_1._)`typeof ${data} != "object"`; + cond = types.null ? notObj : (0, codegen_1._)`!${data} || ${notObj}`; + delete types.null; + delete types.array; + delete types.object; + } else { + cond = codegen_1.nil; + } + if (types.number) + delete types.integer; + for (const t in types) + cond = (0, codegen_1.and)(cond, checkDataType(t, data, strictNums, correct)); + return cond; + } + exports2.checkDataTypes = checkDataTypes; + var typeError = { + message: ({ schema }) => `must be ${schema}`, + params: ({ schema, schemaValue }) => typeof schema == "string" ? (0, codegen_1._)`{type: ${schema}}` : (0, codegen_1._)`{type: ${schemaValue}}` + }; + function reportTypeError(it) { + const cxt = getTypeErrorContext(it); + (0, errors_1.reportError)(cxt, typeError); + } + exports2.reportTypeError = reportTypeError; + function getTypeErrorContext(it) { + const { gen, data, schema } = it; + const schemaCode = (0, util_1.schemaRefOrVal)(it, schema, "type"); + return { + gen, + keyword: "type", + data, + schema: schema.type, + schemaCode, + schemaValue: schemaCode, + parentSchema: schema, + params: {}, + it + }; + } + } +}); + +// node_modules/ajv/dist/compile/validate/defaults.js +var require_defaults = __commonJS({ + "node_modules/ajv/dist/compile/validate/defaults.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { value: true }); + exports2.assignDefaults = void 0; + var codegen_1 = require_codegen(); + var util_1 = require_util(); + function assignDefaults(it, ty) { + const { properties, items } = it.schema; + if (ty === "object" && properties) { + for (const key in properties) { + assignDefault(it, key, properties[key].default); + } + } else if (ty === "array" && Array.isArray(items)) { + items.forEach((sch, i) => assignDefault(it, i, sch.default)); + } + } + exports2.assignDefaults = assignDefaults; + function assignDefault(it, prop, defaultValue) { + const { gen, compositeRule, data, opts } = it; + if (defaultValue === void 0) + return; + const childData = (0, codegen_1._)`${data}${(0, codegen_1.getProperty)(prop)}`; + if (compositeRule) { + (0, util_1.checkStrictMode)(it, `default is ignored for: ${childData}`); + return; + } + let condition = (0, codegen_1._)`${childData} === undefined`; + if (opts.useDefaults === "empty") { + condition = (0, codegen_1._)`${condition} || ${childData} === null || ${childData} === ""`; + } + gen.if(condition, (0, codegen_1._)`${childData} = ${(0, codegen_1.stringify)(defaultValue)}`); + } + } +}); + +// node_modules/ajv/dist/vocabularies/code.js +var require_code2 = __commonJS({ + "node_modules/ajv/dist/vocabularies/code.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { value: true }); + exports2.validateUnion = exports2.validateArray = exports2.usePattern = exports2.callValidateCode = exports2.schemaProperties = exports2.allSchemaProperties = exports2.noPropertyInData = exports2.propertyInData = exports2.isOwnProperty = exports2.hasPropFunc = exports2.reportMissingProp = exports2.checkMissingProp = exports2.checkReportMissingProp = void 0; + var codegen_1 = require_codegen(); + var util_1 = require_util(); + var names_1 = require_names(); + var util_2 = require_util(); + function checkReportMissingProp(cxt, prop) { + const { gen, data, it } = cxt; + gen.if(noPropertyInData(gen, data, prop, it.opts.ownProperties), () => { + cxt.setParams({ missingProperty: (0, codegen_1._)`${prop}` }, true); + cxt.error(); + }); + } + exports2.checkReportMissingProp = checkReportMissingProp; + function checkMissingProp({ gen, data, it: { opts } }, properties, missing) { + return (0, codegen_1.or)(...properties.map((prop) => (0, codegen_1.and)(noPropertyInData(gen, data, prop, opts.ownProperties), (0, codegen_1._)`${missing} = ${prop}`))); + } + exports2.checkMissingProp = checkMissingProp; + function reportMissingProp(cxt, missing) { + cxt.setParams({ missingProperty: missing }, true); + cxt.error(); + } + exports2.reportMissingProp = reportMissingProp; + function hasPropFunc(gen) { + return gen.scopeValue("func", { + // eslint-disable-next-line @typescript-eslint/unbound-method + ref: Object.prototype.hasOwnProperty, + code: (0, codegen_1._)`Object.prototype.hasOwnProperty` + }); + } + exports2.hasPropFunc = hasPropFunc; + function isOwnProperty(gen, data, property) { + return (0, codegen_1._)`${hasPropFunc(gen)}.call(${data}, ${property})`; + } + exports2.isOwnProperty = isOwnProperty; + function propertyInData(gen, data, property, ownProperties) { + const cond = (0, codegen_1._)`${data}${(0, codegen_1.getProperty)(property)} !== undefined`; + return ownProperties ? (0, codegen_1._)`${cond} && ${isOwnProperty(gen, data, property)}` : cond; + } + exports2.propertyInData = propertyInData; + function noPropertyInData(gen, data, property, ownProperties) { + const cond = (0, codegen_1._)`${data}${(0, codegen_1.getProperty)(property)} === undefined`; + return ownProperties ? (0, codegen_1.or)(cond, (0, codegen_1.not)(isOwnProperty(gen, data, property))) : cond; + } + exports2.noPropertyInData = noPropertyInData; + function allSchemaProperties(schemaMap) { + return schemaMap ? Object.keys(schemaMap).filter((p) => p !== "__proto__") : []; + } + exports2.allSchemaProperties = allSchemaProperties; + function schemaProperties(it, schemaMap) { + return allSchemaProperties(schemaMap).filter((p) => !(0, util_1.alwaysValidSchema)(it, schemaMap[p])); + } + exports2.schemaProperties = schemaProperties; + function callValidateCode({ schemaCode, data, it: { gen, topSchemaRef, schemaPath, errorPath }, it }, func, context3, passSchema) { + const dataAndSchema = passSchema ? (0, codegen_1._)`${schemaCode}, ${data}, ${topSchemaRef}${schemaPath}` : data; + const valCxt = [ + [names_1.default.instancePath, (0, codegen_1.strConcat)(names_1.default.instancePath, errorPath)], + [names_1.default.parentData, it.parentData], + [names_1.default.parentDataProperty, it.parentDataProperty], + [names_1.default.rootData, names_1.default.rootData] + ]; + if (it.opts.dynamicRef) + valCxt.push([names_1.default.dynamicAnchors, names_1.default.dynamicAnchors]); + const args = (0, codegen_1._)`${dataAndSchema}, ${gen.object(...valCxt)}`; + return context3 !== codegen_1.nil ? (0, codegen_1._)`${func}.call(${context3}, ${args})` : (0, codegen_1._)`${func}(${args})`; + } + exports2.callValidateCode = callValidateCode; + var newRegExp = (0, codegen_1._)`new RegExp`; + function usePattern({ gen, it: { opts } }, pattern) { + const u = opts.unicodeRegExp ? "u" : ""; + const { regExp } = opts.code; + const rx = regExp(pattern, u); + return gen.scopeValue("pattern", { + key: rx.toString(), + ref: rx, + code: (0, codegen_1._)`${regExp.code === "new RegExp" ? newRegExp : (0, util_2.useFunc)(gen, regExp)}(${pattern}, ${u})` + }); + } + exports2.usePattern = usePattern; + function validateArray(cxt) { + const { gen, data, keyword, it } = cxt; + const valid = gen.name("valid"); + if (it.allErrors) { + const validArr = gen.let("valid", true); + validateItems(() => gen.assign(validArr, false)); + return validArr; + } + gen.var(valid, true); + validateItems(() => gen.break()); + return valid; + function validateItems(notValid) { + const len = gen.const("len", (0, codegen_1._)`${data}.length`); + gen.forRange("i", 0, len, (i) => { + cxt.subschema({ + keyword, + dataProp: i, + dataPropType: util_1.Type.Num + }, valid); + gen.if((0, codegen_1.not)(valid), notValid); + }); + } + } + exports2.validateArray = validateArray; + function validateUnion(cxt) { + const { gen, schema, keyword, it } = cxt; + if (!Array.isArray(schema)) + throw new Error("ajv implementation error"); + const alwaysValid = schema.some((sch) => (0, util_1.alwaysValidSchema)(it, sch)); + if (alwaysValid && !it.opts.unevaluated) + return; + const valid = gen.let("valid", false); + const schValid = gen.name("_valid"); + gen.block(() => schema.forEach((_sch, i) => { + const schCxt = cxt.subschema({ + keyword, + schemaProp: i, + compositeRule: true + }, schValid); + gen.assign(valid, (0, codegen_1._)`${valid} || ${schValid}`); + const merged = cxt.mergeValidEvaluated(schCxt, schValid); + if (!merged) + gen.if((0, codegen_1.not)(valid)); + })); + cxt.result(valid, () => cxt.reset(), () => cxt.error(true)); + } + exports2.validateUnion = validateUnion; + } +}); + +// node_modules/ajv/dist/compile/validate/keyword.js +var require_keyword = __commonJS({ + "node_modules/ajv/dist/compile/validate/keyword.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { value: true }); + exports2.validateKeywordUsage = exports2.validSchemaType = exports2.funcKeywordCode = exports2.macroKeywordCode = void 0; + var codegen_1 = require_codegen(); + var names_1 = require_names(); + var code_1 = require_code2(); + var errors_1 = require_errors3(); + function macroKeywordCode(cxt, def) { + const { gen, keyword, schema, parentSchema, it } = cxt; + const macroSchema = def.macro.call(it.self, schema, parentSchema, it); + const schemaRef = useKeyword(gen, keyword, macroSchema); + if (it.opts.validateSchema !== false) + it.self.validateSchema(macroSchema, true); + const valid = gen.name("valid"); + cxt.subschema({ + schema: macroSchema, + schemaPath: codegen_1.nil, + errSchemaPath: `${it.errSchemaPath}/${keyword}`, + topSchemaRef: schemaRef, + compositeRule: true + }, valid); + cxt.pass(valid, () => cxt.error(true)); + } + exports2.macroKeywordCode = macroKeywordCode; + function funcKeywordCode(cxt, def) { + var _a; + const { gen, keyword, schema, parentSchema, $data, it } = cxt; + checkAsyncKeyword(it, def); + const validate2 = !$data && def.compile ? def.compile.call(it.self, schema, parentSchema, it) : def.validate; + const validateRef = useKeyword(gen, keyword, validate2); + const valid = gen.let("valid"); + cxt.block$data(valid, validateKeyword); + cxt.ok((_a = def.valid) !== null && _a !== void 0 ? _a : valid); + function validateKeyword() { + if (def.errors === false) { + assignValid(); + if (def.modifying) + modifyData(cxt); + reportErrs(() => cxt.error()); + } else { + const ruleErrs = def.async ? validateAsync() : validateSync(); + if (def.modifying) + modifyData(cxt); + reportErrs(() => addErrs(cxt, ruleErrs)); + } + } + function validateAsync() { + const ruleErrs = gen.let("ruleErrs", null); + gen.try(() => assignValid((0, codegen_1._)`await `), (e) => gen.assign(valid, false).if((0, codegen_1._)`${e} instanceof ${it.ValidationError}`, () => gen.assign(ruleErrs, (0, codegen_1._)`${e}.errors`), () => gen.throw(e))); + return ruleErrs; + } + function validateSync() { + const validateErrs = (0, codegen_1._)`${validateRef}.errors`; + gen.assign(validateErrs, null); + assignValid(codegen_1.nil); + return validateErrs; + } + function assignValid(_await = def.async ? (0, codegen_1._)`await ` : codegen_1.nil) { + const passCxt = it.opts.passContext ? names_1.default.this : names_1.default.self; + const passSchema = !("compile" in def && !$data || def.schema === false); + gen.assign(valid, (0, codegen_1._)`${_await}${(0, code_1.callValidateCode)(cxt, validateRef, passCxt, passSchema)}`, def.modifying); + } + function reportErrs(errors) { + var _a2; + gen.if((0, codegen_1.not)((_a2 = def.valid) !== null && _a2 !== void 0 ? _a2 : valid), errors); + } + } + exports2.funcKeywordCode = funcKeywordCode; + function modifyData(cxt) { + const { gen, data, it } = cxt; + gen.if(it.parentData, () => gen.assign(data, (0, codegen_1._)`${it.parentData}[${it.parentDataProperty}]`)); + } + function addErrs(cxt, errs) { + const { gen } = cxt; + gen.if((0, codegen_1._)`Array.isArray(${errs})`, () => { + gen.assign(names_1.default.vErrors, (0, codegen_1._)`${names_1.default.vErrors} === null ? ${errs} : ${names_1.default.vErrors}.concat(${errs})`).assign(names_1.default.errors, (0, codegen_1._)`${names_1.default.vErrors}.length`); + (0, errors_1.extendErrors)(cxt); + }, () => cxt.error()); + } + function checkAsyncKeyword({ schemaEnv }, def) { + if (def.async && !schemaEnv.$async) + throw new Error("async keyword in sync schema"); + } + function useKeyword(gen, keyword, result) { + if (result === void 0) + throw new Error(`keyword "${keyword}" failed to compile`); + return gen.scopeValue("keyword", typeof result == "function" ? { ref: result } : { ref: result, code: (0, codegen_1.stringify)(result) }); + } + function validSchemaType(schema, schemaType, allowUndefined = false) { + return !schemaType.length || schemaType.some((st) => st === "array" ? Array.isArray(schema) : st === "object" ? schema && typeof schema == "object" && !Array.isArray(schema) : typeof schema == st || allowUndefined && typeof schema == "undefined"); + } + exports2.validSchemaType = validSchemaType; + function validateKeywordUsage({ schema, opts, self: self2, errSchemaPath }, def, keyword) { + if (Array.isArray(def.keyword) ? !def.keyword.includes(keyword) : def.keyword !== keyword) { + throw new Error("ajv implementation error"); + } + const deps = def.dependencies; + if (deps === null || deps === void 0 ? void 0 : deps.some((kwd) => !Object.prototype.hasOwnProperty.call(schema, kwd))) { + throw new Error(`parent schema must have dependencies of ${keyword}: ${deps.join(",")}`); + } + if (def.validateSchema) { + const valid = def.validateSchema(schema[keyword]); + if (!valid) { + const msg = `keyword "${keyword}" value is invalid at path "${errSchemaPath}": ` + self2.errorsText(def.validateSchema.errors); + if (opts.validateSchema === "log") + self2.logger.error(msg); + else + throw new Error(msg); + } + } + } + exports2.validateKeywordUsage = validateKeywordUsage; + } +}); + +// node_modules/ajv/dist/compile/validate/subschema.js +var require_subschema = __commonJS({ + "node_modules/ajv/dist/compile/validate/subschema.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { value: true }); + exports2.extendSubschemaMode = exports2.extendSubschemaData = exports2.getSubschema = void 0; + var codegen_1 = require_codegen(); + var util_1 = require_util(); + function getSubschema(it, { keyword, schemaProp, schema, schemaPath, errSchemaPath, topSchemaRef }) { + if (keyword !== void 0 && schema !== void 0) { + throw new Error('both "keyword" and "schema" passed, only one allowed'); + } + if (keyword !== void 0) { + const sch = it.schema[keyword]; + return schemaProp === void 0 ? { + schema: sch, + schemaPath: (0, codegen_1._)`${it.schemaPath}${(0, codegen_1.getProperty)(keyword)}`, + errSchemaPath: `${it.errSchemaPath}/${keyword}` + } : { + schema: sch[schemaProp], + schemaPath: (0, codegen_1._)`${it.schemaPath}${(0, codegen_1.getProperty)(keyword)}${(0, codegen_1.getProperty)(schemaProp)}`, + errSchemaPath: `${it.errSchemaPath}/${keyword}/${(0, util_1.escapeFragment)(schemaProp)}` + }; + } + if (schema !== void 0) { + if (schemaPath === void 0 || errSchemaPath === void 0 || topSchemaRef === void 0) { + throw new Error('"schemaPath", "errSchemaPath" and "topSchemaRef" are required with "schema"'); + } + return { + schema, + schemaPath, + topSchemaRef, + errSchemaPath + }; + } + throw new Error('either "keyword" or "schema" must be passed'); + } + exports2.getSubschema = getSubschema; + function extendSubschemaData(subschema, it, { dataProp, dataPropType: dpType, data, dataTypes, propertyName }) { + if (data !== void 0 && dataProp !== void 0) { + throw new Error('both "data" and "dataProp" passed, only one allowed'); + } + const { gen } = it; + if (dataProp !== void 0) { + const { errorPath, dataPathArr, opts } = it; + const nextData = gen.let("data", (0, codegen_1._)`${it.data}${(0, codegen_1.getProperty)(dataProp)}`, true); + dataContextProps(nextData); + subschema.errorPath = (0, codegen_1.str)`${errorPath}${(0, util_1.getErrorPath)(dataProp, dpType, opts.jsPropertySyntax)}`; + subschema.parentDataProperty = (0, codegen_1._)`${dataProp}`; + subschema.dataPathArr = [...dataPathArr, subschema.parentDataProperty]; + } + if (data !== void 0) { + const nextData = data instanceof codegen_1.Name ? data : gen.let("data", data, true); + dataContextProps(nextData); + if (propertyName !== void 0) + subschema.propertyName = propertyName; + } + if (dataTypes) + subschema.dataTypes = dataTypes; + function dataContextProps(_nextData) { + subschema.data = _nextData; + subschema.dataLevel = it.dataLevel + 1; + subschema.dataTypes = []; + it.definedProperties = /* @__PURE__ */ new Set(); + subschema.parentData = it.data; + subschema.dataNames = [...it.dataNames, _nextData]; + } + } + exports2.extendSubschemaData = extendSubschemaData; + function extendSubschemaMode(subschema, { jtdDiscriminator, jtdMetadata, compositeRule, createErrors, allErrors }) { + if (compositeRule !== void 0) + subschema.compositeRule = compositeRule; + if (createErrors !== void 0) + subschema.createErrors = createErrors; + if (allErrors !== void 0) + subschema.allErrors = allErrors; + subschema.jtdDiscriminator = jtdDiscriminator; + subschema.jtdMetadata = jtdMetadata; + } + exports2.extendSubschemaMode = extendSubschemaMode; + } +}); + +// node_modules/fast-deep-equal/index.js +var require_fast_deep_equal = __commonJS({ + "node_modules/fast-deep-equal/index.js"(exports2, module2) { + "use strict"; + module2.exports = function equal(a, b) { + if (a === b) return true; + if (a && b && typeof a == "object" && typeof b == "object") { + if (a.constructor !== b.constructor) return false; + var length, i, keys; + if (Array.isArray(a)) { + length = a.length; + if (length != b.length) return false; + for (i = length; i-- !== 0; ) + if (!equal(a[i], b[i])) return false; + return true; + } + if (a.constructor === RegExp) return a.source === b.source && a.flags === b.flags; + if (a.valueOf !== Object.prototype.valueOf) return a.valueOf() === b.valueOf(); + if (a.toString !== Object.prototype.toString) return a.toString() === b.toString(); + keys = Object.keys(a); + length = keys.length; + if (length !== Object.keys(b).length) return false; + for (i = length; i-- !== 0; ) + if (!Object.prototype.hasOwnProperty.call(b, keys[i])) return false; + for (i = length; i-- !== 0; ) { + var key = keys[i]; + if (!equal(a[key], b[key])) return false; + } + return true; + } + return a !== a && b !== b; + }; + } +}); + +// node_modules/json-schema-traverse/index.js +var require_json_schema_traverse = __commonJS({ + "node_modules/json-schema-traverse/index.js"(exports2, module2) { + "use strict"; + var traverse = module2.exports = function(schema, opts, cb) { + if (typeof opts == "function") { + cb = opts; + opts = {}; + } + cb = opts.cb || cb; + var pre = typeof cb == "function" ? cb : cb.pre || function() { + }; + var post = cb.post || function() { + }; + _traverse(opts, pre, post, schema, "", schema); + }; + traverse.keywords = { + additionalItems: true, + items: true, + contains: true, + additionalProperties: true, + propertyNames: true, + not: true, + if: true, + then: true, + else: true + }; + traverse.arrayKeywords = { + items: true, + allOf: true, + anyOf: true, + oneOf: true + }; + traverse.propsKeywords = { + $defs: true, + definitions: true, + properties: true, + patternProperties: true, + dependencies: true + }; + traverse.skipKeywords = { + default: true, + enum: true, + const: true, + required: true, + maximum: true, + minimum: true, + exclusiveMaximum: true, + exclusiveMinimum: true, + multipleOf: true, + maxLength: true, + minLength: true, + pattern: true, + format: true, + maxItems: true, + minItems: true, + uniqueItems: true, + maxProperties: true, + minProperties: true + }; + function _traverse(opts, pre, post, schema, jsonPtr, rootSchema, parentJsonPtr, parentKeyword, parentSchema, keyIndex) { + if (schema && typeof schema == "object" && !Array.isArray(schema)) { + pre(schema, jsonPtr, rootSchema, parentJsonPtr, parentKeyword, parentSchema, keyIndex); + for (var key in schema) { + var sch = schema[key]; + if (Array.isArray(sch)) { + if (key in traverse.arrayKeywords) { + for (var i = 0; i < sch.length; i++) + _traverse(opts, pre, post, sch[i], jsonPtr + "/" + key + "/" + i, rootSchema, jsonPtr, key, schema, i); + } + } else if (key in traverse.propsKeywords) { + if (sch && typeof sch == "object") { + for (var prop in sch) + _traverse(opts, pre, post, sch[prop], jsonPtr + "/" + key + "/" + escapeJsonPtr(prop), rootSchema, jsonPtr, key, schema, prop); + } + } else if (key in traverse.keywords || opts.allKeys && !(key in traverse.skipKeywords)) { + _traverse(opts, pre, post, sch, jsonPtr + "/" + key, rootSchema, jsonPtr, key, schema); + } + } + post(schema, jsonPtr, rootSchema, parentJsonPtr, parentKeyword, parentSchema, keyIndex); + } + } + function escapeJsonPtr(str) { + return str.replace(/~/g, "~0").replace(/\//g, "~1"); + } + } +}); + +// node_modules/ajv/dist/compile/resolve.js +var require_resolve = __commonJS({ + "node_modules/ajv/dist/compile/resolve.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { value: true }); + exports2.getSchemaRefs = exports2.resolveUrl = exports2.normalizeId = exports2._getFullPath = exports2.getFullPath = exports2.inlineRef = void 0; + var util_1 = require_util(); + var equal = require_fast_deep_equal(); + var traverse = require_json_schema_traverse(); + var SIMPLE_INLINED = /* @__PURE__ */ new Set([ + "type", + "format", + "pattern", + "maxLength", + "minLength", + "maxProperties", + "minProperties", + "maxItems", + "minItems", + "maximum", + "minimum", + "uniqueItems", + "multipleOf", + "required", + "enum", + "const" + ]); + function inlineRef(schema, limit = true) { + if (typeof schema == "boolean") + return true; + if (limit === true) + return !hasRef(schema); + if (!limit) + return false; + return countKeys(schema) <= limit; + } + exports2.inlineRef = inlineRef; + var REF_KEYWORDS = /* @__PURE__ */ new Set([ + "$ref", + "$recursiveRef", + "$recursiveAnchor", + "$dynamicRef", + "$dynamicAnchor" + ]); + function hasRef(schema) { + for (const key in schema) { + if (REF_KEYWORDS.has(key)) + return true; + const sch = schema[key]; + if (Array.isArray(sch) && sch.some(hasRef)) + return true; + if (typeof sch == "object" && hasRef(sch)) + return true; + } + return false; + } + function countKeys(schema) { + let count = 0; + for (const key in schema) { + if (key === "$ref") + return Infinity; + count++; + if (SIMPLE_INLINED.has(key)) + continue; + if (typeof schema[key] == "object") { + (0, util_1.eachItem)(schema[key], (sch) => count += countKeys(sch)); + } + if (count === Infinity) + return Infinity; + } + return count; + } + function getFullPath(resolver, id = "", normalize) { + if (normalize !== false) + id = normalizeId(id); + const p = resolver.parse(id); + return _getFullPath(resolver, p); + } + exports2.getFullPath = getFullPath; + function _getFullPath(resolver, p) { + const serialized = resolver.serialize(p); + return serialized.split("#")[0] + "#"; + } + exports2._getFullPath = _getFullPath; + var TRAILING_SLASH_HASH = /#\/?$/; + function normalizeId(id) { + return id ? id.replace(TRAILING_SLASH_HASH, "") : ""; + } + exports2.normalizeId = normalizeId; + function resolveUrl(resolver, baseId, id) { + id = normalizeId(id); + return resolver.resolve(baseId, id); + } + exports2.resolveUrl = resolveUrl; + var ANCHOR = /^[a-z_][-a-z0-9._]*$/i; + function getSchemaRefs(schema, baseId) { + if (typeof schema == "boolean") + return {}; + const { schemaId, uriResolver } = this.opts; + const schId = normalizeId(schema[schemaId] || baseId); + const baseIds = { "": schId }; + const pathPrefix = getFullPath(uriResolver, schId, false); + const localRefs = {}; + const schemaRefs = /* @__PURE__ */ new Set(); + traverse(schema, { allKeys: true }, (sch, jsonPtr, _, parentJsonPtr) => { + if (parentJsonPtr === void 0) + return; + const fullPath = pathPrefix + jsonPtr; + let innerBaseId = baseIds[parentJsonPtr]; + if (typeof sch[schemaId] == "string") + innerBaseId = addRef.call(this, sch[schemaId]); + addAnchor.call(this, sch.$anchor); + addAnchor.call(this, sch.$dynamicAnchor); + baseIds[jsonPtr] = innerBaseId; + function addRef(ref) { + const _resolve = this.opts.uriResolver.resolve; + ref = normalizeId(innerBaseId ? _resolve(innerBaseId, ref) : ref); + if (schemaRefs.has(ref)) + throw ambiguos(ref); + schemaRefs.add(ref); + let schOrRef = this.refs[ref]; + if (typeof schOrRef == "string") + schOrRef = this.refs[schOrRef]; + if (typeof schOrRef == "object") { + checkAmbiguosRef(sch, schOrRef.schema, ref); + } else if (ref !== normalizeId(fullPath)) { + if (ref[0] === "#") { + checkAmbiguosRef(sch, localRefs[ref], ref); + localRefs[ref] = sch; + } else { + this.refs[ref] = fullPath; + } + } + return ref; + } + function addAnchor(anchor) { + if (typeof anchor == "string") { + if (!ANCHOR.test(anchor)) + throw new Error(`invalid anchor "${anchor}"`); + addRef.call(this, `#${anchor}`); + } + } + }); + return localRefs; + function checkAmbiguosRef(sch1, sch2, ref) { + if (sch2 !== void 0 && !equal(sch1, sch2)) + throw ambiguos(ref); + } + function ambiguos(ref) { + return new Error(`reference "${ref}" resolves to more than one schema`); + } + } + exports2.getSchemaRefs = getSchemaRefs; + } +}); + +// node_modules/ajv/dist/compile/validate/index.js +var require_validate = __commonJS({ + "node_modules/ajv/dist/compile/validate/index.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { value: true }); + exports2.getData = exports2.KeywordCxt = exports2.validateFunctionCode = void 0; + var boolSchema_1 = require_boolSchema(); + var dataType_1 = require_dataType(); + var applicability_1 = require_applicability(); + var dataType_2 = require_dataType(); + var defaults_1 = require_defaults(); + var keyword_1 = require_keyword(); + var subschema_1 = require_subschema(); + var codegen_1 = require_codegen(); + var names_1 = require_names(); + var resolve_1 = require_resolve(); + var util_1 = require_util(); + var errors_1 = require_errors3(); + function validateFunctionCode(it) { + if (isSchemaObj(it)) { + checkKeywords(it); + if (schemaCxtHasRules(it)) { + topSchemaObjCode(it); + return; + } + } + validateFunction(it, () => (0, boolSchema_1.topBoolOrEmptySchema)(it)); + } + exports2.validateFunctionCode = validateFunctionCode; + function validateFunction({ gen, validateName, schema, schemaEnv, opts }, body) { + if (opts.code.es5) { + gen.func(validateName, (0, codegen_1._)`${names_1.default.data}, ${names_1.default.valCxt}`, schemaEnv.$async, () => { + gen.code((0, codegen_1._)`"use strict"; ${funcSourceUrl(schema, opts)}`); + destructureValCxtES5(gen, opts); + gen.code(body); + }); + } else { + gen.func(validateName, (0, codegen_1._)`${names_1.default.data}, ${destructureValCxt(opts)}`, schemaEnv.$async, () => gen.code(funcSourceUrl(schema, opts)).code(body)); + } + } + function destructureValCxt(opts) { + return (0, codegen_1._)`{${names_1.default.instancePath}="", ${names_1.default.parentData}, ${names_1.default.parentDataProperty}, ${names_1.default.rootData}=${names_1.default.data}${opts.dynamicRef ? (0, codegen_1._)`, ${names_1.default.dynamicAnchors}={}` : codegen_1.nil}}={}`; + } + function destructureValCxtES5(gen, opts) { + gen.if(names_1.default.valCxt, () => { + gen.var(names_1.default.instancePath, (0, codegen_1._)`${names_1.default.valCxt}.${names_1.default.instancePath}`); + gen.var(names_1.default.parentData, (0, codegen_1._)`${names_1.default.valCxt}.${names_1.default.parentData}`); + gen.var(names_1.default.parentDataProperty, (0, codegen_1._)`${names_1.default.valCxt}.${names_1.default.parentDataProperty}`); + gen.var(names_1.default.rootData, (0, codegen_1._)`${names_1.default.valCxt}.${names_1.default.rootData}`); + if (opts.dynamicRef) + gen.var(names_1.default.dynamicAnchors, (0, codegen_1._)`${names_1.default.valCxt}.${names_1.default.dynamicAnchors}`); + }, () => { + gen.var(names_1.default.instancePath, (0, codegen_1._)`""`); + gen.var(names_1.default.parentData, (0, codegen_1._)`undefined`); + gen.var(names_1.default.parentDataProperty, (0, codegen_1._)`undefined`); + gen.var(names_1.default.rootData, names_1.default.data); + if (opts.dynamicRef) + gen.var(names_1.default.dynamicAnchors, (0, codegen_1._)`{}`); + }); + } + function topSchemaObjCode(it) { + const { schema, opts, gen } = it; + validateFunction(it, () => { + if (opts.$comment && schema.$comment) + commentKeyword(it); + checkNoDefault(it); + gen.let(names_1.default.vErrors, null); + gen.let(names_1.default.errors, 0); + if (opts.unevaluated) + resetEvaluated(it); + typeAndKeywords(it); + returnResults(it); + }); + return; + } + function resetEvaluated(it) { + const { gen, validateName } = it; + it.evaluated = gen.const("evaluated", (0, codegen_1._)`${validateName}.evaluated`); + gen.if((0, codegen_1._)`${it.evaluated}.dynamicProps`, () => gen.assign((0, codegen_1._)`${it.evaluated}.props`, (0, codegen_1._)`undefined`)); + gen.if((0, codegen_1._)`${it.evaluated}.dynamicItems`, () => gen.assign((0, codegen_1._)`${it.evaluated}.items`, (0, codegen_1._)`undefined`)); + } + function funcSourceUrl(schema, opts) { + const schId = typeof schema == "object" && schema[opts.schemaId]; + return schId && (opts.code.source || opts.code.process) ? (0, codegen_1._)`/*# sourceURL=${schId} */` : codegen_1.nil; + } + function subschemaCode(it, valid) { + if (isSchemaObj(it)) { + checkKeywords(it); + if (schemaCxtHasRules(it)) { + subSchemaObjCode(it, valid); + return; + } + } + (0, boolSchema_1.boolOrEmptySchema)(it, valid); + } + function schemaCxtHasRules({ schema, self: self2 }) { + if (typeof schema == "boolean") + return !schema; + for (const key in schema) + if (self2.RULES.all[key]) + return true; + return false; + } + function isSchemaObj(it) { + return typeof it.schema != "boolean"; + } + function subSchemaObjCode(it, valid) { + const { schema, gen, opts } = it; + if (opts.$comment && schema.$comment) + commentKeyword(it); + updateContext(it); + checkAsyncSchema(it); + const errsCount = gen.const("_errs", names_1.default.errors); + typeAndKeywords(it, errsCount); + gen.var(valid, (0, codegen_1._)`${errsCount} === ${names_1.default.errors}`); + } + function checkKeywords(it) { + (0, util_1.checkUnknownRules)(it); + checkRefsAndKeywords(it); + } + function typeAndKeywords(it, errsCount) { + if (it.opts.jtd) + return schemaKeywords(it, [], false, errsCount); + const types = (0, dataType_1.getSchemaTypes)(it.schema); + const checkedTypes = (0, dataType_1.coerceAndCheckDataType)(it, types); + schemaKeywords(it, types, !checkedTypes, errsCount); + } + function checkRefsAndKeywords(it) { + const { schema, errSchemaPath, opts, self: self2 } = it; + if (schema.$ref && opts.ignoreKeywordsWithRef && (0, util_1.schemaHasRulesButRef)(schema, self2.RULES)) { + self2.logger.warn(`$ref: keywords ignored in schema at path "${errSchemaPath}"`); + } + } + function checkNoDefault(it) { + const { schema, opts } = it; + if (schema.default !== void 0 && opts.useDefaults && opts.strictSchema) { + (0, util_1.checkStrictMode)(it, "default is ignored in the schema root"); + } + } + function updateContext(it) { + const schId = it.schema[it.opts.schemaId]; + if (schId) + it.baseId = (0, resolve_1.resolveUrl)(it.opts.uriResolver, it.baseId, schId); + } + function checkAsyncSchema(it) { + if (it.schema.$async && !it.schemaEnv.$async) + throw new Error("async schema in sync schema"); + } + function commentKeyword({ gen, schemaEnv, schema, errSchemaPath, opts }) { + const msg = schema.$comment; + if (opts.$comment === true) { + gen.code((0, codegen_1._)`${names_1.default.self}.logger.log(${msg})`); + } else if (typeof opts.$comment == "function") { + const schemaPath = (0, codegen_1.str)`${errSchemaPath}/$comment`; + const rootName = gen.scopeValue("root", { ref: schemaEnv.root }); + gen.code((0, codegen_1._)`${names_1.default.self}.opts.$comment(${msg}, ${schemaPath}, ${rootName}.schema)`); + } + } + function returnResults(it) { + const { gen, schemaEnv, validateName, ValidationError: ValidationError2, opts } = it; + if (schemaEnv.$async) { + gen.if((0, codegen_1._)`${names_1.default.errors} === 0`, () => gen.return(names_1.default.data), () => gen.throw((0, codegen_1._)`new ${ValidationError2}(${names_1.default.vErrors})`)); + } else { + gen.assign((0, codegen_1._)`${validateName}.errors`, names_1.default.vErrors); + if (opts.unevaluated) + assignEvaluated(it); + gen.return((0, codegen_1._)`${names_1.default.errors} === 0`); + } + } + function assignEvaluated({ gen, evaluated, props, items }) { + if (props instanceof codegen_1.Name) + gen.assign((0, codegen_1._)`${evaluated}.props`, props); + if (items instanceof codegen_1.Name) + gen.assign((0, codegen_1._)`${evaluated}.items`, items); + } + function schemaKeywords(it, types, typeErrors, errsCount) { + const { gen, schema, data, allErrors, opts, self: self2 } = it; + const { RULES } = self2; + if (schema.$ref && (opts.ignoreKeywordsWithRef || !(0, util_1.schemaHasRulesButRef)(schema, RULES))) { + gen.block(() => keywordCode(it, "$ref", RULES.all.$ref.definition)); + return; + } + if (!opts.jtd) + checkStrictTypes(it, types); + gen.block(() => { + for (const group of RULES.rules) + groupKeywords(group); + groupKeywords(RULES.post); + }); + function groupKeywords(group) { + if (!(0, applicability_1.shouldUseGroup)(schema, group)) + return; + if (group.type) { + gen.if((0, dataType_2.checkDataType)(group.type, data, opts.strictNumbers)); + iterateKeywords(it, group); + if (types.length === 1 && types[0] === group.type && typeErrors) { + gen.else(); + (0, dataType_2.reportTypeError)(it); + } + gen.endIf(); + } else { + iterateKeywords(it, group); + } + if (!allErrors) + gen.if((0, codegen_1._)`${names_1.default.errors} === ${errsCount || 0}`); + } + } + function iterateKeywords(it, group) { + const { gen, schema, opts: { useDefaults } } = it; + if (useDefaults) + (0, defaults_1.assignDefaults)(it, group.type); + gen.block(() => { + for (const rule of group.rules) { + if ((0, applicability_1.shouldUseRule)(schema, rule)) { + keywordCode(it, rule.keyword, rule.definition, group.type); + } + } + }); + } + function checkStrictTypes(it, types) { + if (it.schemaEnv.meta || !it.opts.strictTypes) + return; + checkContextTypes(it, types); + if (!it.opts.allowUnionTypes) + checkMultipleTypes(it, types); + checkKeywordTypes(it, it.dataTypes); + } + function checkContextTypes(it, types) { + if (!types.length) + return; + if (!it.dataTypes.length) { + it.dataTypes = types; + return; + } + types.forEach((t) => { + if (!includesType(it.dataTypes, t)) { + strictTypesError(it, `type "${t}" not allowed by context "${it.dataTypes.join(",")}"`); + } + }); + narrowSchemaTypes(it, types); + } + function checkMultipleTypes(it, ts) { + if (ts.length > 1 && !(ts.length === 2 && ts.includes("null"))) { + strictTypesError(it, "use allowUnionTypes to allow union type keyword"); + } + } + function checkKeywordTypes(it, ts) { + const rules = it.self.RULES.all; + for (const keyword in rules) { + const rule = rules[keyword]; + if (typeof rule == "object" && (0, applicability_1.shouldUseRule)(it.schema, rule)) { + const { type } = rule.definition; + if (type.length && !type.some((t) => hasApplicableType(ts, t))) { + strictTypesError(it, `missing type "${type.join(",")}" for keyword "${keyword}"`); + } + } + } + } + function hasApplicableType(schTs, kwdT) { + return schTs.includes(kwdT) || kwdT === "number" && schTs.includes("integer"); + } + function includesType(ts, t) { + return ts.includes(t) || t === "integer" && ts.includes("number"); + } + function narrowSchemaTypes(it, withTypes) { + const ts = []; + for (const t of it.dataTypes) { + if (includesType(withTypes, t)) + ts.push(t); + else if (withTypes.includes("integer") && t === "number") + ts.push("integer"); + } + it.dataTypes = ts; + } + function strictTypesError(it, msg) { + const schemaPath = it.schemaEnv.baseId + it.errSchemaPath; + msg += ` at "${schemaPath}" (strictTypes)`; + (0, util_1.checkStrictMode)(it, msg, it.opts.strictTypes); + } + var KeywordCxt = class { + constructor(it, def, keyword) { + (0, keyword_1.validateKeywordUsage)(it, def, keyword); + this.gen = it.gen; + this.allErrors = it.allErrors; + this.keyword = keyword; + this.data = it.data; + this.schema = it.schema[keyword]; + this.$data = def.$data && it.opts.$data && this.schema && this.schema.$data; + this.schemaValue = (0, util_1.schemaRefOrVal)(it, this.schema, keyword, this.$data); + this.schemaType = def.schemaType; + this.parentSchema = it.schema; + this.params = {}; + this.it = it; + this.def = def; + if (this.$data) { + this.schemaCode = it.gen.const("vSchema", getData(this.$data, it)); + } else { + this.schemaCode = this.schemaValue; + if (!(0, keyword_1.validSchemaType)(this.schema, def.schemaType, def.allowUndefined)) { + throw new Error(`${keyword} value must be ${JSON.stringify(def.schemaType)}`); + } + } + if ("code" in def ? def.trackErrors : def.errors !== false) { + this.errsCount = it.gen.const("_errs", names_1.default.errors); + } + } + result(condition, successAction, failAction) { + this.failResult((0, codegen_1.not)(condition), successAction, failAction); + } + failResult(condition, successAction, failAction) { + this.gen.if(condition); + if (failAction) + failAction(); + else + this.error(); + if (successAction) { + this.gen.else(); + successAction(); + if (this.allErrors) + this.gen.endIf(); + } else { + if (this.allErrors) + this.gen.endIf(); + else + this.gen.else(); + } + } + pass(condition, failAction) { + this.failResult((0, codegen_1.not)(condition), void 0, failAction); + } + fail(condition) { + if (condition === void 0) { + this.error(); + if (!this.allErrors) + this.gen.if(false); + return; + } + this.gen.if(condition); + this.error(); + if (this.allErrors) + this.gen.endIf(); + else + this.gen.else(); + } + fail$data(condition) { + if (!this.$data) + return this.fail(condition); + const { schemaCode } = this; + this.fail((0, codegen_1._)`${schemaCode} !== undefined && (${(0, codegen_1.or)(this.invalid$data(), condition)})`); + } + error(append, errorParams, errorPaths) { + if (errorParams) { + this.setParams(errorParams); + this._error(append, errorPaths); + this.setParams({}); + return; + } + this._error(append, errorPaths); + } + _error(append, errorPaths) { + ; + (append ? errors_1.reportExtraError : errors_1.reportError)(this, this.def.error, errorPaths); + } + $dataError() { + (0, errors_1.reportError)(this, this.def.$dataError || errors_1.keyword$DataError); + } + reset() { + if (this.errsCount === void 0) + throw new Error('add "trackErrors" to keyword definition'); + (0, errors_1.resetErrorsCount)(this.gen, this.errsCount); + } + ok(cond) { + if (!this.allErrors) + this.gen.if(cond); + } + setParams(obj, assign) { + if (assign) + Object.assign(this.params, obj); + else + this.params = obj; + } + block$data(valid, codeBlock, $dataValid = codegen_1.nil) { + this.gen.block(() => { + this.check$data(valid, $dataValid); + codeBlock(); + }); + } + check$data(valid = codegen_1.nil, $dataValid = codegen_1.nil) { + if (!this.$data) + return; + const { gen, schemaCode, schemaType, def } = this; + gen.if((0, codegen_1.or)((0, codegen_1._)`${schemaCode} === undefined`, $dataValid)); + if (valid !== codegen_1.nil) + gen.assign(valid, true); + if (schemaType.length || def.validateSchema) { + gen.elseIf(this.invalid$data()); + this.$dataError(); + if (valid !== codegen_1.nil) + gen.assign(valid, false); + } + gen.else(); + } + invalid$data() { + const { gen, schemaCode, schemaType, def, it } = this; + return (0, codegen_1.or)(wrong$DataType(), invalid$DataSchema()); + function wrong$DataType() { + if (schemaType.length) { + if (!(schemaCode instanceof codegen_1.Name)) + throw new Error("ajv implementation error"); + const st = Array.isArray(schemaType) ? schemaType : [schemaType]; + return (0, codegen_1._)`${(0, dataType_2.checkDataTypes)(st, schemaCode, it.opts.strictNumbers, dataType_2.DataType.Wrong)}`; + } + return codegen_1.nil; + } + function invalid$DataSchema() { + if (def.validateSchema) { + const validateSchemaRef = gen.scopeValue("validate$data", { ref: def.validateSchema }); + return (0, codegen_1._)`!${validateSchemaRef}(${schemaCode})`; + } + return codegen_1.nil; + } + } + subschema(appl, valid) { + const subschema = (0, subschema_1.getSubschema)(this.it, appl); + (0, subschema_1.extendSubschemaData)(subschema, this.it, appl); + (0, subschema_1.extendSubschemaMode)(subschema, appl); + const nextContext = { ...this.it, ...subschema, items: void 0, props: void 0 }; + subschemaCode(nextContext, valid); + return nextContext; + } + mergeEvaluated(schemaCxt, toName) { + const { it, gen } = this; + if (!it.opts.unevaluated) + return; + if (it.props !== true && schemaCxt.props !== void 0) { + it.props = util_1.mergeEvaluated.props(gen, schemaCxt.props, it.props, toName); + } + if (it.items !== true && schemaCxt.items !== void 0) { + it.items = util_1.mergeEvaluated.items(gen, schemaCxt.items, it.items, toName); + } + } + mergeValidEvaluated(schemaCxt, valid) { + const { it, gen } = this; + if (it.opts.unevaluated && (it.props !== true || it.items !== true)) { + gen.if(valid, () => this.mergeEvaluated(schemaCxt, codegen_1.Name)); + return true; + } + } + }; + exports2.KeywordCxt = KeywordCxt; + function keywordCode(it, keyword, def, ruleType) { + const cxt = new KeywordCxt(it, def, keyword); + if ("code" in def) { + def.code(cxt, ruleType); + } else if (cxt.$data && def.validate) { + (0, keyword_1.funcKeywordCode)(cxt, def); + } else if ("macro" in def) { + (0, keyword_1.macroKeywordCode)(cxt, def); + } else if (def.compile || def.validate) { + (0, keyword_1.funcKeywordCode)(cxt, def); + } + } + var JSON_POINTER = /^\/(?:[^~]|~0|~1)*$/; + var RELATIVE_JSON_POINTER = /^([0-9]+)(#|\/(?:[^~]|~0|~1)*)?$/; + function getData($data, { dataLevel, dataNames, dataPathArr }) { + let jsonPointer; + let data; + if ($data === "") + return names_1.default.rootData; + if ($data[0] === "/") { + if (!JSON_POINTER.test($data)) + throw new Error(`Invalid JSON-pointer: ${$data}`); + jsonPointer = $data; + data = names_1.default.rootData; + } else { + const matches = RELATIVE_JSON_POINTER.exec($data); + if (!matches) + throw new Error(`Invalid JSON-pointer: ${$data}`); + const up = +matches[1]; + jsonPointer = matches[2]; + if (jsonPointer === "#") { + if (up >= dataLevel) + throw new Error(errorMsg("property/index", up)); + return dataPathArr[dataLevel - up]; + } + if (up > dataLevel) + throw new Error(errorMsg("data", up)); + data = dataNames[dataLevel - up]; + if (!jsonPointer) + return data; + } + let expr = data; + const segments = jsonPointer.split("/"); + for (const segment of segments) { + if (segment) { + data = (0, codegen_1._)`${data}${(0, codegen_1.getProperty)((0, util_1.unescapeJsonPointer)(segment))}`; + expr = (0, codegen_1._)`${expr} && ${data}`; + } + } + return expr; + function errorMsg(pointerType, up) { + return `Cannot access ${pointerType} ${up} levels up, current level is ${dataLevel}`; + } + } + exports2.getData = getData; + } +}); + +// node_modules/ajv/dist/runtime/validation_error.js +var require_validation_error = __commonJS({ + "node_modules/ajv/dist/runtime/validation_error.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { value: true }); + var ValidationError2 = class extends Error { + constructor(errors) { + super("validation failed"); + this.errors = errors; + this.ajv = this.validation = true; + } + }; + exports2.default = ValidationError2; + } +}); + +// node_modules/ajv/dist/compile/ref_error.js +var require_ref_error = __commonJS({ + "node_modules/ajv/dist/compile/ref_error.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { value: true }); + var resolve_1 = require_resolve(); + var MissingRefError = class extends Error { + constructor(resolver, baseId, ref, msg) { + super(msg || `can't resolve reference ${ref} from id ${baseId}`); + this.missingRef = (0, resolve_1.resolveUrl)(resolver, baseId, ref); + this.missingSchema = (0, resolve_1.normalizeId)((0, resolve_1.getFullPath)(resolver, this.missingRef)); + } + }; + exports2.default = MissingRefError; + } +}); + +// node_modules/ajv/dist/compile/index.js +var require_compile = __commonJS({ + "node_modules/ajv/dist/compile/index.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { value: true }); + exports2.resolveSchema = exports2.getCompilingSchema = exports2.resolveRef = exports2.compileSchema = exports2.SchemaEnv = void 0; + var codegen_1 = require_codegen(); + var validation_error_1 = require_validation_error(); + var names_1 = require_names(); + var resolve_1 = require_resolve(); + var util_1 = require_util(); + var validate_1 = require_validate(); + var SchemaEnv = class { + constructor(env) { + var _a; + this.refs = {}; + this.dynamicAnchors = {}; + let schema; + if (typeof env.schema == "object") + schema = env.schema; + this.schema = env.schema; + this.schemaId = env.schemaId; + this.root = env.root || this; + this.baseId = (_a = env.baseId) !== null && _a !== void 0 ? _a : (0, resolve_1.normalizeId)(schema === null || schema === void 0 ? void 0 : schema[env.schemaId || "$id"]); + this.schemaPath = env.schemaPath; + this.localRefs = env.localRefs; + this.meta = env.meta; + this.$async = schema === null || schema === void 0 ? void 0 : schema.$async; + this.refs = {}; + } + }; + exports2.SchemaEnv = SchemaEnv; + function compileSchema(sch) { + const _sch = getCompilingSchema.call(this, sch); + if (_sch) + return _sch; + const rootId = (0, resolve_1.getFullPath)(this.opts.uriResolver, sch.root.baseId); + const { es5, lines } = this.opts.code; + const { ownProperties } = this.opts; + const gen = new codegen_1.CodeGen(this.scope, { es5, lines, ownProperties }); + let _ValidationError; + if (sch.$async) { + _ValidationError = gen.scopeValue("Error", { + ref: validation_error_1.default, + code: (0, codegen_1._)`require("ajv/dist/runtime/validation_error").default` + }); + } + const validateName = gen.scopeName("validate"); + sch.validateName = validateName; + const schemaCxt = { + gen, + allErrors: this.opts.allErrors, + data: names_1.default.data, + parentData: names_1.default.parentData, + parentDataProperty: names_1.default.parentDataProperty, + dataNames: [names_1.default.data], + dataPathArr: [codegen_1.nil], + // TODO can its length be used as dataLevel if nil is removed? + dataLevel: 0, + dataTypes: [], + definedProperties: /* @__PURE__ */ new Set(), + topSchemaRef: gen.scopeValue("schema", this.opts.code.source === true ? { ref: sch.schema, code: (0, codegen_1.stringify)(sch.schema) } : { ref: sch.schema }), + validateName, + ValidationError: _ValidationError, + schema: sch.schema, + schemaEnv: sch, + rootId, + baseId: sch.baseId || rootId, + schemaPath: codegen_1.nil, + errSchemaPath: sch.schemaPath || (this.opts.jtd ? "" : "#"), + errorPath: (0, codegen_1._)`""`, + opts: this.opts, + self: this + }; + let sourceCode; + try { + this._compilations.add(sch); + (0, validate_1.validateFunctionCode)(schemaCxt); + gen.optimize(this.opts.code.optimize); + const validateCode = gen.toString(); + sourceCode = `${gen.scopeRefs(names_1.default.scope)}return ${validateCode}`; + if (this.opts.code.process) + sourceCode = this.opts.code.process(sourceCode, sch); + const makeValidate = new Function(`${names_1.default.self}`, `${names_1.default.scope}`, sourceCode); + const validate2 = makeValidate(this, this.scope.get()); + this.scope.value(validateName, { ref: validate2 }); + validate2.errors = null; + validate2.schema = sch.schema; + validate2.schemaEnv = sch; + if (sch.$async) + validate2.$async = true; + if (this.opts.code.source === true) { + validate2.source = { validateName, validateCode, scopeValues: gen._values }; + } + if (this.opts.unevaluated) { + const { props, items } = schemaCxt; + validate2.evaluated = { + props: props instanceof codegen_1.Name ? void 0 : props, + items: items instanceof codegen_1.Name ? void 0 : items, + dynamicProps: props instanceof codegen_1.Name, + dynamicItems: items instanceof codegen_1.Name + }; + if (validate2.source) + validate2.source.evaluated = (0, codegen_1.stringify)(validate2.evaluated); + } + sch.validate = validate2; + return sch; + } catch (e) { + delete sch.validate; + delete sch.validateName; + if (sourceCode) + this.logger.error("Error compiling schema, function code:", sourceCode); + throw e; + } finally { + this._compilations.delete(sch); + } + } + exports2.compileSchema = compileSchema; + function resolveRef(root, baseId, ref) { + var _a; + ref = (0, resolve_1.resolveUrl)(this.opts.uriResolver, baseId, ref); + const schOrFunc = root.refs[ref]; + if (schOrFunc) + return schOrFunc; + let _sch = resolve.call(this, root, ref); + if (_sch === void 0) { + const schema = (_a = root.localRefs) === null || _a === void 0 ? void 0 : _a[ref]; + const { schemaId } = this.opts; + if (schema) + _sch = new SchemaEnv({ schema, schemaId, root, baseId }); + } + if (_sch === void 0) + return; + return root.refs[ref] = inlineOrCompile.call(this, _sch); + } + exports2.resolveRef = resolveRef; + function inlineOrCompile(sch) { + if ((0, resolve_1.inlineRef)(sch.schema, this.opts.inlineRefs)) + return sch.schema; + return sch.validate ? sch : compileSchema.call(this, sch); + } + function getCompilingSchema(schEnv) { + for (const sch of this._compilations) { + if (sameSchemaEnv(sch, schEnv)) + return sch; + } + } + exports2.getCompilingSchema = getCompilingSchema; + function sameSchemaEnv(s1, s2) { + return s1.schema === s2.schema && s1.root === s2.root && s1.baseId === s2.baseId; + } + function resolve(root, ref) { + let sch; + while (typeof (sch = this.refs[ref]) == "string") + ref = sch; + return sch || this.schemas[ref] || resolveSchema.call(this, root, ref); + } + function resolveSchema(root, ref) { + const p = this.opts.uriResolver.parse(ref); + const refPath = (0, resolve_1._getFullPath)(this.opts.uriResolver, p); + let baseId = (0, resolve_1.getFullPath)(this.opts.uriResolver, root.baseId, void 0); + if (Object.keys(root.schema).length > 0 && refPath === baseId) { + return getJsonPointer.call(this, p, root); + } + const id = (0, resolve_1.normalizeId)(refPath); + const schOrRef = this.refs[id] || this.schemas[id]; + if (typeof schOrRef == "string") { + const sch = resolveSchema.call(this, root, schOrRef); + if (typeof (sch === null || sch === void 0 ? void 0 : sch.schema) !== "object") + return; + return getJsonPointer.call(this, p, sch); + } + if (typeof (schOrRef === null || schOrRef === void 0 ? void 0 : schOrRef.schema) !== "object") + return; + if (!schOrRef.validate) + compileSchema.call(this, schOrRef); + if (id === (0, resolve_1.normalizeId)(ref)) { + const { schema } = schOrRef; + const { schemaId } = this.opts; + const schId = schema[schemaId]; + if (schId) + baseId = (0, resolve_1.resolveUrl)(this.opts.uriResolver, baseId, schId); + return new SchemaEnv({ schema, schemaId, root, baseId }); + } + return getJsonPointer.call(this, p, schOrRef); + } + exports2.resolveSchema = resolveSchema; + var PREVENT_SCOPE_CHANGE = /* @__PURE__ */ new Set([ + "properties", + "patternProperties", + "enum", + "dependencies", + "definitions" + ]); + function getJsonPointer(parsedRef, { baseId, schema, root }) { + var _a; + if (((_a = parsedRef.fragment) === null || _a === void 0 ? void 0 : _a[0]) !== "/") + return; + for (const part of parsedRef.fragment.slice(1).split("/")) { + if (typeof schema === "boolean") + return; + const partSchema = schema[(0, util_1.unescapeFragment)(part)]; + if (partSchema === void 0) + return; + schema = partSchema; + const schId = typeof schema === "object" && schema[this.opts.schemaId]; + if (!PREVENT_SCOPE_CHANGE.has(part) && schId) { + baseId = (0, resolve_1.resolveUrl)(this.opts.uriResolver, baseId, schId); + } + } + let env; + if (typeof schema != "boolean" && schema.$ref && !(0, util_1.schemaHasRulesButRef)(schema, this.RULES)) { + const $ref = (0, resolve_1.resolveUrl)(this.opts.uriResolver, baseId, schema.$ref); + env = resolveSchema.call(this, root, $ref); + } + const { schemaId } = this.opts; + env = env || new SchemaEnv({ schema, schemaId, root, baseId }); + if (env.schema !== env.root.schema) + return env; + return void 0; + } + } +}); + +// node_modules/ajv/dist/refs/data.json +var require_data = __commonJS({ + "node_modules/ajv/dist/refs/data.json"(exports2, module2) { + module2.exports = { + $id: "https://raw.githubusercontent.com/ajv-validator/ajv/master/lib/refs/data.json#", + description: "Meta-schema for $data reference (JSON AnySchema extension proposal)", + type: "object", + required: ["$data"], + properties: { + $data: { + type: "string", + anyOf: [{ format: "relative-json-pointer" }, { format: "json-pointer" }] + } + }, + additionalProperties: false + }; + } +}); + +// node_modules/fast-uri/lib/utils.js +var require_utils = __commonJS({ + "node_modules/fast-uri/lib/utils.js"(exports2, module2) { + "use strict"; + var isUUID = RegExp.prototype.test.bind(/^[\da-f]{8}-[\da-f]{4}-[\da-f]{4}-[\da-f]{4}-[\da-f]{12}$/iu); + var isIPv4 = RegExp.prototype.test.bind(/^(?:(?:25[0-5]|2[0-4]\d|1\d{2}|[1-9]\d|\d)\.){3}(?:25[0-5]|2[0-4]\d|1\d{2}|[1-9]\d|\d)$/u); + function stringArrayToHexStripped(input) { + let acc = ""; + let code = 0; + let i = 0; + for (i = 0; i < input.length; i++) { + code = input[i].charCodeAt(0); + if (code === 48) { + continue; + } + if (!(code >= 48 && code <= 57 || code >= 65 && code <= 70 || code >= 97 && code <= 102)) { + return ""; + } + acc += input[i]; + break; + } + for (i += 1; i < input.length; i++) { + code = input[i].charCodeAt(0); + if (!(code >= 48 && code <= 57 || code >= 65 && code <= 70 || code >= 97 && code <= 102)) { + return ""; + } + acc += input[i]; + } + return acc; + } + var nonSimpleDomain = RegExp.prototype.test.bind(/[^!"$&'()*+,\-.;=_`a-z{}~]/u); + function consumeIsZone(buffer) { + buffer.length = 0; + return true; + } + function consumeHextets(buffer, address, output) { + if (buffer.length) { + const hex = stringArrayToHexStripped(buffer); + if (hex !== "") { + address.push(hex); + } else { + output.error = true; + return false; + } + buffer.length = 0; + } + return true; + } + function getIPV6(input) { + let tokenCount = 0; + const output = { error: false, address: "", zone: "" }; + const address = []; + const buffer = []; + let endipv6Encountered = false; + let endIpv6 = false; + let consume = consumeHextets; + for (let i = 0; i < input.length; i++) { + const cursor = input[i]; + if (cursor === "[" || cursor === "]") { + continue; + } + if (cursor === ":") { + if (endipv6Encountered === true) { + endIpv6 = true; + } + if (!consume(buffer, address, output)) { + break; + } + if (++tokenCount > 7) { + output.error = true; + break; + } + if (i > 0 && input[i - 1] === ":") { + endipv6Encountered = true; + } + address.push(":"); + continue; + } else if (cursor === "%") { + if (!consume(buffer, address, output)) { + break; + } + consume = consumeIsZone; + } else { + buffer.push(cursor); + continue; + } + } + if (buffer.length) { + if (consume === consumeIsZone) { + output.zone = buffer.join(""); + } else if (endIpv6) { + address.push(buffer.join("")); + } else { + address.push(stringArrayToHexStripped(buffer)); + } + } + output.address = address.join(""); + return output; + } + function normalizeIPv6(host) { + if (findToken(host, ":") < 2) { + return { host, isIPV6: false }; + } + const ipv62 = getIPV6(host); + if (!ipv62.error) { + let newHost = ipv62.address; + let escapedHost = ipv62.address; + if (ipv62.zone) { + newHost += "%" + ipv62.zone; + escapedHost += "%25" + ipv62.zone; + } + return { host: newHost, isIPV6: true, escapedHost }; + } else { + return { host, isIPV6: false }; + } + } + function findToken(str, token) { + let ind = 0; + for (let i = 0; i < str.length; i++) { + if (str[i] === token) ind++; + } + return ind; + } + function removeDotSegments(path9) { + let input = path9; + const output = []; + let nextSlash = -1; + let len = 0; + while (len = input.length) { + if (len === 1) { + if (input === ".") { + break; + } else if (input === "/") { + output.push("/"); + break; + } else { + output.push(input); + break; + } + } else if (len === 2) { + if (input[0] === ".") { + if (input[1] === ".") { + break; + } else if (input[1] === "/") { + input = input.slice(2); + continue; + } + } else if (input[0] === "/") { + if (input[1] === "." || input[1] === "/") { + output.push("/"); + break; + } + } + } else if (len === 3) { + if (input === "/..") { + if (output.length !== 0) { + output.pop(); + } + output.push("/"); + break; + } + } + if (input[0] === ".") { + if (input[1] === ".") { + if (input[2] === "/") { + input = input.slice(3); + continue; + } + } else if (input[1] === "/") { + input = input.slice(2); + continue; + } + } else if (input[0] === "/") { + if (input[1] === ".") { + if (input[2] === "/") { + input = input.slice(2); + continue; + } else if (input[2] === ".") { + if (input[3] === "/") { + input = input.slice(3); + if (output.length !== 0) { + output.pop(); + } + continue; + } + } + } + } + if ((nextSlash = input.indexOf("/", 1)) === -1) { + output.push(input); + break; + } else { + output.push(input.slice(0, nextSlash)); + input = input.slice(nextSlash); + } + } + return output.join(""); + } + function normalizeComponentEncoding(component, esc2) { + const func = esc2 !== true ? escape : unescape; + if (component.scheme !== void 0) { + component.scheme = func(component.scheme); + } + if (component.userinfo !== void 0) { + component.userinfo = func(component.userinfo); + } + if (component.host !== void 0) { + component.host = func(component.host); + } + if (component.path !== void 0) { + component.path = func(component.path); + } + if (component.query !== void 0) { + component.query = func(component.query); + } + if (component.fragment !== void 0) { + component.fragment = func(component.fragment); + } + return component; + } + function recomposeAuthority(component) { + const uriTokens = []; + if (component.userinfo !== void 0) { + uriTokens.push(component.userinfo); + uriTokens.push("@"); + } + if (component.host !== void 0) { + let host = unescape(component.host); + if (!isIPv4(host)) { + const ipV6res = normalizeIPv6(host); + if (ipV6res.isIPV6 === true) { + host = `[${ipV6res.escapedHost}]`; + } else { + host = component.host; + } + } + uriTokens.push(host); + } + if (typeof component.port === "number" || typeof component.port === "string") { + uriTokens.push(":"); + uriTokens.push(String(component.port)); + } + return uriTokens.length ? uriTokens.join("") : void 0; + } + module2.exports = { + nonSimpleDomain, + recomposeAuthority, + normalizeComponentEncoding, + removeDotSegments, + isIPv4, + isUUID, + normalizeIPv6, + stringArrayToHexStripped + }; + } +}); + +// node_modules/fast-uri/lib/schemes.js +var require_schemes = __commonJS({ + "node_modules/fast-uri/lib/schemes.js"(exports2, module2) { + "use strict"; + var { isUUID } = require_utils(); + var URN_REG = /([\da-z][\d\-a-z]{0,31}):((?:[\w!$'()*+,\-.:;=@]|%[\da-f]{2})+)/iu; + var supportedSchemeNames = ( + /** @type {const} */ + [ + "http", + "https", + "ws", + "wss", + "urn", + "urn:uuid" + ] + ); + function isValidSchemeName(name5) { + return supportedSchemeNames.indexOf( + /** @type {*} */ + name5 + ) !== -1; + } + function wsIsSecure(wsComponent) { + if (wsComponent.secure === true) { + return true; + } else if (wsComponent.secure === false) { + return false; + } else if (wsComponent.scheme) { + return wsComponent.scheme.length === 3 && (wsComponent.scheme[0] === "w" || wsComponent.scheme[0] === "W") && (wsComponent.scheme[1] === "s" || wsComponent.scheme[1] === "S") && (wsComponent.scheme[2] === "s" || wsComponent.scheme[2] === "S"); + } else { + return false; + } + } + function httpParse(component) { + if (!component.host) { + component.error = component.error || "HTTP URIs must have a host."; + } + return component; + } + function httpSerialize(component) { + const secure = String(component.scheme).toLowerCase() === "https"; + if (component.port === (secure ? 443 : 80) || component.port === "") { + component.port = void 0; + } + if (!component.path) { + component.path = "/"; + } + return component; + } + function wsParse(wsComponent) { + wsComponent.secure = wsIsSecure(wsComponent); + wsComponent.resourceName = (wsComponent.path || "/") + (wsComponent.query ? "?" + wsComponent.query : ""); + wsComponent.path = void 0; + wsComponent.query = void 0; + return wsComponent; + } + function wsSerialize(wsComponent) { + if (wsComponent.port === (wsIsSecure(wsComponent) ? 443 : 80) || wsComponent.port === "") { + wsComponent.port = void 0; + } + if (typeof wsComponent.secure === "boolean") { + wsComponent.scheme = wsComponent.secure ? "wss" : "ws"; + wsComponent.secure = void 0; + } + if (wsComponent.resourceName) { + const [path9, query] = wsComponent.resourceName.split("?"); + wsComponent.path = path9 && path9 !== "/" ? path9 : void 0; + wsComponent.query = query; + wsComponent.resourceName = void 0; + } + wsComponent.fragment = void 0; + return wsComponent; + } + function urnParse(urnComponent, options) { + if (!urnComponent.path) { + urnComponent.error = "URN can not be parsed"; + return urnComponent; + } + const matches = urnComponent.path.match(URN_REG); + if (matches) { + const scheme = options.scheme || urnComponent.scheme || "urn"; + urnComponent.nid = matches[1].toLowerCase(); + urnComponent.nss = matches[2]; + const urnScheme = `${scheme}:${options.nid || urnComponent.nid}`; + const schemeHandler = getSchemeHandler(urnScheme); + urnComponent.path = void 0; + if (schemeHandler) { + urnComponent = schemeHandler.parse(urnComponent, options); + } + } else { + urnComponent.error = urnComponent.error || "URN can not be parsed."; + } + return urnComponent; + } + function urnSerialize(urnComponent, options) { + if (urnComponent.nid === void 0) { + throw new Error("URN without nid cannot be serialized"); + } + const scheme = options.scheme || urnComponent.scheme || "urn"; + const nid = urnComponent.nid.toLowerCase(); + const urnScheme = `${scheme}:${options.nid || nid}`; + const schemeHandler = getSchemeHandler(urnScheme); + if (schemeHandler) { + urnComponent = schemeHandler.serialize(urnComponent, options); + } + const uriComponent = urnComponent; + const nss = urnComponent.nss; + uriComponent.path = `${nid || options.nid}:${nss}`; + options.skipEscape = true; + return uriComponent; + } + function urnuuidParse(urnComponent, options) { + const uuidComponent = urnComponent; + uuidComponent.uuid = uuidComponent.nss; + uuidComponent.nss = void 0; + if (!options.tolerant && (!uuidComponent.uuid || !isUUID(uuidComponent.uuid))) { + uuidComponent.error = uuidComponent.error || "UUID is not valid."; + } + return uuidComponent; + } + function urnuuidSerialize(uuidComponent) { + const urnComponent = uuidComponent; + urnComponent.nss = (uuidComponent.uuid || "").toLowerCase(); + return urnComponent; + } + var http5 = ( + /** @type {SchemeHandler} */ + { + scheme: "http", + domainHost: true, + parse: httpParse, + serialize: httpSerialize + } + ); + var https3 = ( + /** @type {SchemeHandler} */ + { + scheme: "https", + domainHost: http5.domainHost, + parse: httpParse, + serialize: httpSerialize + } + ); + var ws = ( + /** @type {SchemeHandler} */ + { + scheme: "ws", + domainHost: true, + parse: wsParse, + serialize: wsSerialize + } + ); + var wss = ( + /** @type {SchemeHandler} */ + { + scheme: "wss", + domainHost: ws.domainHost, + parse: ws.parse, + serialize: ws.serialize + } + ); + var urn = ( + /** @type {SchemeHandler} */ + { + scheme: "urn", + parse: urnParse, + serialize: urnSerialize, + skipNormalize: true + } + ); + var urnuuid = ( + /** @type {SchemeHandler} */ + { + scheme: "urn:uuid", + parse: urnuuidParse, + serialize: urnuuidSerialize, + skipNormalize: true + } + ); + var SCHEMES = ( + /** @type {Record} */ + { + http: http5, + https: https3, + ws, + wss, + urn, + "urn:uuid": urnuuid + } + ); + Object.setPrototypeOf(SCHEMES, null); + function getSchemeHandler(scheme) { + return scheme && (SCHEMES[ + /** @type {SchemeName} */ + scheme + ] || SCHEMES[ + /** @type {SchemeName} */ + scheme.toLowerCase() + ]) || void 0; + } + module2.exports = { + wsIsSecure, + SCHEMES, + isValidSchemeName, + getSchemeHandler + }; + } +}); + +// node_modules/fast-uri/index.js +var require_fast_uri = __commonJS({ + "node_modules/fast-uri/index.js"(exports2, module2) { + "use strict"; + var { normalizeIPv6, removeDotSegments, recomposeAuthority, normalizeComponentEncoding, isIPv4, nonSimpleDomain } = require_utils(); + var { SCHEMES, getSchemeHandler } = require_schemes(); + function normalize(uri, options) { + if (typeof uri === "string") { + uri = /** @type {T} */ + serialize(parse4(uri, options), options); + } else if (typeof uri === "object") { + uri = /** @type {T} */ + parse4(serialize(uri, options), options); + } + return uri; + } + function resolve(baseURI, relativeURI, options) { + const schemelessOptions = options ? Object.assign({ scheme: "null" }, options) : { scheme: "null" }; + const resolved = resolveComponent(parse4(baseURI, schemelessOptions), parse4(relativeURI, schemelessOptions), schemelessOptions, true); + schemelessOptions.skipEscape = true; + return serialize(resolved, schemelessOptions); + } + function resolveComponent(base, relative, options, skipNormalization) { + const target = {}; + if (!skipNormalization) { + base = parse4(serialize(base, options), options); + relative = parse4(serialize(relative, options), options); + } + options = options || {}; + if (!options.tolerant && relative.scheme) { + target.scheme = relative.scheme; + target.userinfo = relative.userinfo; + target.host = relative.host; + target.port = relative.port; + target.path = removeDotSegments(relative.path || ""); + target.query = relative.query; + } else { + if (relative.userinfo !== void 0 || relative.host !== void 0 || relative.port !== void 0) { + target.userinfo = relative.userinfo; + target.host = relative.host; + target.port = relative.port; + target.path = removeDotSegments(relative.path || ""); + target.query = relative.query; + } else { + if (!relative.path) { + target.path = base.path; + if (relative.query !== void 0) { + target.query = relative.query; + } else { + target.query = base.query; + } + } else { + if (relative.path[0] === "/") { + target.path = removeDotSegments(relative.path); + } else { + if ((base.userinfo !== void 0 || base.host !== void 0 || base.port !== void 0) && !base.path) { + target.path = "/" + relative.path; + } else if (!base.path) { + target.path = relative.path; + } else { + target.path = base.path.slice(0, base.path.lastIndexOf("/") + 1) + relative.path; + } + target.path = removeDotSegments(target.path); + } + target.query = relative.query; + } + target.userinfo = base.userinfo; + target.host = base.host; + target.port = base.port; + } + target.scheme = base.scheme; + } + target.fragment = relative.fragment; + return target; + } + function equal(uriA, uriB, options) { + if (typeof uriA === "string") { + uriA = unescape(uriA); + uriA = serialize(normalizeComponentEncoding(parse4(uriA, options), true), { ...options, skipEscape: true }); + } else if (typeof uriA === "object") { + uriA = serialize(normalizeComponentEncoding(uriA, true), { ...options, skipEscape: true }); + } + if (typeof uriB === "string") { + uriB = unescape(uriB); + uriB = serialize(normalizeComponentEncoding(parse4(uriB, options), true), { ...options, skipEscape: true }); + } else if (typeof uriB === "object") { + uriB = serialize(normalizeComponentEncoding(uriB, true), { ...options, skipEscape: true }); + } + return uriA.toLowerCase() === uriB.toLowerCase(); + } + function serialize(cmpts, opts) { + const component = { + host: cmpts.host, + scheme: cmpts.scheme, + userinfo: cmpts.userinfo, + port: cmpts.port, + path: cmpts.path, + query: cmpts.query, + nid: cmpts.nid, + nss: cmpts.nss, + uuid: cmpts.uuid, + fragment: cmpts.fragment, + reference: cmpts.reference, + resourceName: cmpts.resourceName, + secure: cmpts.secure, + error: "" + }; + const options = Object.assign({}, opts); + const uriTokens = []; + const schemeHandler = getSchemeHandler(options.scheme || component.scheme); + if (schemeHandler && schemeHandler.serialize) schemeHandler.serialize(component, options); + if (component.path !== void 0) { + if (!options.skipEscape) { + component.path = escape(component.path); + if (component.scheme !== void 0) { + component.path = component.path.split("%3A").join(":"); + } + } else { + component.path = unescape(component.path); + } + } + if (options.reference !== "suffix" && component.scheme) { + uriTokens.push(component.scheme, ":"); + } + const authority = recomposeAuthority(component); + if (authority !== void 0) { + if (options.reference !== "suffix") { + uriTokens.push("//"); + } + uriTokens.push(authority); + if (component.path && component.path[0] !== "/") { + uriTokens.push("/"); + } + } + if (component.path !== void 0) { + let s = component.path; + if (!options.absolutePath && (!schemeHandler || !schemeHandler.absolutePath)) { + s = removeDotSegments(s); + } + if (authority === void 0 && s[0] === "/" && s[1] === "/") { + s = "/%2F" + s.slice(2); + } + uriTokens.push(s); + } + if (component.query !== void 0) { + uriTokens.push("?", component.query); + } + if (component.fragment !== void 0) { + uriTokens.push("#", component.fragment); + } + return uriTokens.join(""); + } + var URI_PARSE = /^(?:([^#/:?]+):)?(?:\/\/((?:([^#/?@]*)@)?(\[[^#/?\]]+\]|[^#/:?]*)(?::(\d*))?))?([^#?]*)(?:\?([^#]*))?(?:#((?:.|[\n\r])*))?/u; + function parse4(uri, opts) { + const options = Object.assign({}, opts); + const parsed = { + scheme: void 0, + userinfo: void 0, + host: "", + port: void 0, + path: "", + query: void 0, + fragment: void 0 + }; + let isIP2 = false; + if (options.reference === "suffix") { + if (options.scheme) { + uri = options.scheme + ":" + uri; + } else { + uri = "//" + uri; + } + } + const matches = uri.match(URI_PARSE); + if (matches) { + parsed.scheme = matches[1]; + parsed.userinfo = matches[3]; + parsed.host = matches[4]; + parsed.port = parseInt(matches[5], 10); + parsed.path = matches[6] || ""; + parsed.query = matches[7]; + parsed.fragment = matches[8]; + if (isNaN(parsed.port)) { + parsed.port = matches[5]; + } + if (parsed.host) { + const ipv4result = isIPv4(parsed.host); + if (ipv4result === false) { + const ipv6result = normalizeIPv6(parsed.host); + parsed.host = ipv6result.host.toLowerCase(); + isIP2 = ipv6result.isIPV6; + } else { + isIP2 = true; + } + } + if (parsed.scheme === void 0 && parsed.userinfo === void 0 && parsed.host === void 0 && parsed.port === void 0 && parsed.query === void 0 && !parsed.path) { + parsed.reference = "same-document"; + } else if (parsed.scheme === void 0) { + parsed.reference = "relative"; + } else if (parsed.fragment === void 0) { + parsed.reference = "absolute"; + } else { + parsed.reference = "uri"; + } + if (options.reference && options.reference !== "suffix" && options.reference !== parsed.reference) { + parsed.error = parsed.error || "URI is not a " + options.reference + " reference."; + } + const schemeHandler = getSchemeHandler(options.scheme || parsed.scheme); + if (!options.unicodeSupport && (!schemeHandler || !schemeHandler.unicodeSupport)) { + if (parsed.host && (options.domainHost || schemeHandler && schemeHandler.domainHost) && isIP2 === false && nonSimpleDomain(parsed.host)) { + try { + parsed.host = URL.domainToASCII(parsed.host.toLowerCase()); + } catch (e) { + parsed.error = parsed.error || "Host's domain name can not be converted to ASCII: " + e; + } + } + } + if (!schemeHandler || schemeHandler && !schemeHandler.skipNormalize) { + if (uri.indexOf("%") !== -1) { + if (parsed.scheme !== void 0) { + parsed.scheme = unescape(parsed.scheme); + } + if (parsed.host !== void 0) { + parsed.host = unescape(parsed.host); + } + } + if (parsed.path) { + parsed.path = escape(unescape(parsed.path)); + } + if (parsed.fragment) { + parsed.fragment = encodeURI(decodeURIComponent(parsed.fragment)); + } + } + if (schemeHandler && schemeHandler.parse) { + schemeHandler.parse(parsed, options); + } + } else { + parsed.error = parsed.error || "URI can not be parsed."; + } + return parsed; + } + var fastUri = { + SCHEMES, + normalize, + resolve, + resolveComponent, + equal, + serialize, + parse: parse4 + }; + module2.exports = fastUri; + module2.exports.default = fastUri; + module2.exports.fastUri = fastUri; + } +}); + +// node_modules/ajv/dist/runtime/uri.js +var require_uri = __commonJS({ + "node_modules/ajv/dist/runtime/uri.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { value: true }); + var uri = require_fast_uri(); + uri.code = 'require("ajv/dist/runtime/uri").default'; + exports2.default = uri; + } +}); + +// node_modules/ajv/dist/core.js +var require_core = __commonJS({ + "node_modules/ajv/dist/core.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { value: true }); + exports2.CodeGen = exports2.Name = exports2.nil = exports2.stringify = exports2.str = exports2._ = exports2.KeywordCxt = void 0; + var validate_1 = require_validate(); + Object.defineProperty(exports2, "KeywordCxt", { enumerable: true, get: function() { + return validate_1.KeywordCxt; + } }); + var codegen_1 = require_codegen(); + Object.defineProperty(exports2, "_", { enumerable: true, get: function() { + return codegen_1._; + } }); + Object.defineProperty(exports2, "str", { enumerable: true, get: function() { + return codegen_1.str; + } }); + Object.defineProperty(exports2, "stringify", { enumerable: true, get: function() { + return codegen_1.stringify; + } }); + Object.defineProperty(exports2, "nil", { enumerable: true, get: function() { + return codegen_1.nil; + } }); + Object.defineProperty(exports2, "Name", { enumerable: true, get: function() { + return codegen_1.Name; + } }); + Object.defineProperty(exports2, "CodeGen", { enumerable: true, get: function() { + return codegen_1.CodeGen; + } }); + var validation_error_1 = require_validation_error(); + var ref_error_1 = require_ref_error(); + var rules_1 = require_rules(); + var compile_1 = require_compile(); + var codegen_2 = require_codegen(); + var resolve_1 = require_resolve(); + var dataType_1 = require_dataType(); + var util_1 = require_util(); + var $dataRefSchema = require_data(); + var uri_1 = require_uri(); + var defaultRegExp = (str, flags) => new RegExp(str, flags); + defaultRegExp.code = "new RegExp"; + var META_IGNORE_OPTIONS = ["removeAdditional", "useDefaults", "coerceTypes"]; + var EXT_SCOPE_NAMES = /* @__PURE__ */ new Set([ + "validate", + "serialize", + "parse", + "wrapper", + "root", + "schema", + "keyword", + "pattern", + "formats", + "validate$data", + "func", + "obj", + "Error" + ]); + var removedOptions = { + errorDataPath: "", + format: "`validateFormats: false` can be used instead.", + nullable: '"nullable" keyword is supported by default.', + jsonPointers: "Deprecated jsPropertySyntax can be used instead.", + extendRefs: "Deprecated ignoreKeywordsWithRef can be used instead.", + missingRefs: "Pass empty schema with $id that should be ignored to ajv.addSchema.", + processCode: "Use option `code: {process: (code, schemaEnv: object) => string}`", + sourceCode: "Use option `code: {source: true}`", + strictDefaults: "It is default now, see option `strict`.", + strictKeywords: "It is default now, see option `strict`.", + uniqueItems: '"uniqueItems" keyword is always validated.', + unknownFormats: "Disable strict mode or pass `true` to `ajv.addFormat` (or `formats` option).", + cache: "Map is used as cache, schema object as key.", + serialize: "Map is used as cache, schema object as key.", + ajvErrors: "It is default now." + }; + var deprecatedOptions = { + ignoreKeywordsWithRef: "", + jsPropertySyntax: "", + unicode: '"minLength"/"maxLength" account for unicode characters by default.' + }; + var MAX_EXPRESSION = 200; + function requiredOptions(o) { + var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r, _s, _t, _u, _v, _w, _x, _y, _z, _0; + const s = o.strict; + const _optz = (_a = o.code) === null || _a === void 0 ? void 0 : _a.optimize; + const optimize = _optz === true || _optz === void 0 ? 1 : _optz || 0; + const regExp = (_c = (_b = o.code) === null || _b === void 0 ? void 0 : _b.regExp) !== null && _c !== void 0 ? _c : defaultRegExp; + const uriResolver = (_d = o.uriResolver) !== null && _d !== void 0 ? _d : uri_1.default; + return { + strictSchema: (_f = (_e = o.strictSchema) !== null && _e !== void 0 ? _e : s) !== null && _f !== void 0 ? _f : true, + strictNumbers: (_h = (_g = o.strictNumbers) !== null && _g !== void 0 ? _g : s) !== null && _h !== void 0 ? _h : true, + strictTypes: (_k = (_j = o.strictTypes) !== null && _j !== void 0 ? _j : s) !== null && _k !== void 0 ? _k : "log", + strictTuples: (_m = (_l = o.strictTuples) !== null && _l !== void 0 ? _l : s) !== null && _m !== void 0 ? _m : "log", + strictRequired: (_p = (_o = o.strictRequired) !== null && _o !== void 0 ? _o : s) !== null && _p !== void 0 ? _p : false, + code: o.code ? { ...o.code, optimize, regExp } : { optimize, regExp }, + loopRequired: (_q = o.loopRequired) !== null && _q !== void 0 ? _q : MAX_EXPRESSION, + loopEnum: (_r = o.loopEnum) !== null && _r !== void 0 ? _r : MAX_EXPRESSION, + meta: (_s = o.meta) !== null && _s !== void 0 ? _s : true, + messages: (_t = o.messages) !== null && _t !== void 0 ? _t : true, + inlineRefs: (_u = o.inlineRefs) !== null && _u !== void 0 ? _u : true, + schemaId: (_v = o.schemaId) !== null && _v !== void 0 ? _v : "$id", + addUsedSchema: (_w = o.addUsedSchema) !== null && _w !== void 0 ? _w : true, + validateSchema: (_x = o.validateSchema) !== null && _x !== void 0 ? _x : true, + validateFormats: (_y = o.validateFormats) !== null && _y !== void 0 ? _y : true, + unicodeRegExp: (_z = o.unicodeRegExp) !== null && _z !== void 0 ? _z : true, + int32range: (_0 = o.int32range) !== null && _0 !== void 0 ? _0 : true, + uriResolver + }; + } + var Ajv2 = class { + constructor(opts = {}) { + this.schemas = {}; + this.refs = {}; + this.formats = /* @__PURE__ */ Object.create(null); + this._compilations = /* @__PURE__ */ new Set(); + this._loading = {}; + this._cache = /* @__PURE__ */ new Map(); + opts = this.opts = { ...opts, ...requiredOptions(opts) }; + const { es5, lines } = this.opts.code; + this.scope = new codegen_2.ValueScope({ scope: {}, prefixes: EXT_SCOPE_NAMES, es5, lines }); + this.logger = getLogger(opts.logger); + const formatOpt = opts.validateFormats; + opts.validateFormats = false; + this.RULES = (0, rules_1.getRules)(); + checkOptions.call(this, removedOptions, opts, "NOT SUPPORTED"); + checkOptions.call(this, deprecatedOptions, opts, "DEPRECATED", "warn"); + this._metaOpts = getMetaSchemaOptions.call(this); + if (opts.formats) + addInitialFormats.call(this); + this._addVocabularies(); + this._addDefaultMetaSchema(); + if (opts.keywords) + addInitialKeywords.call(this, opts.keywords); + if (typeof opts.meta == "object") + this.addMetaSchema(opts.meta); + addInitialSchemas.call(this); + opts.validateFormats = formatOpt; + } + _addVocabularies() { + this.addKeyword("$async"); + } + _addDefaultMetaSchema() { + const { $data, meta, schemaId } = this.opts; + let _dataRefSchema = $dataRefSchema; + if (schemaId === "id") { + _dataRefSchema = { ...$dataRefSchema }; + _dataRefSchema.id = _dataRefSchema.$id; + delete _dataRefSchema.$id; + } + if (meta && $data) + this.addMetaSchema(_dataRefSchema, _dataRefSchema[schemaId], false); + } + defaultMeta() { + const { meta, schemaId } = this.opts; + return this.opts.defaultMeta = typeof meta == "object" ? meta[schemaId] || meta : void 0; + } + validate(schemaKeyRef, data) { + let v; + if (typeof schemaKeyRef == "string") { + v = this.getSchema(schemaKeyRef); + if (!v) + throw new Error(`no schema with key or ref "${schemaKeyRef}"`); + } else { + v = this.compile(schemaKeyRef); + } + const valid = v(data); + if (!("$async" in v)) + this.errors = v.errors; + return valid; + } + compile(schema, _meta) { + const sch = this._addSchema(schema, _meta); + return sch.validate || this._compileSchemaEnv(sch); + } + compileAsync(schema, meta) { + if (typeof this.opts.loadSchema != "function") { + throw new Error("options.loadSchema should be a function"); + } + const { loadSchema } = this.opts; + return runCompileAsync.call(this, schema, meta); + async function runCompileAsync(_schema, _meta) { + await loadMetaSchema.call(this, _schema.$schema); + const sch = this._addSchema(_schema, _meta); + return sch.validate || _compileAsync.call(this, sch); + } + async function loadMetaSchema($ref) { + if ($ref && !this.getSchema($ref)) { + await runCompileAsync.call(this, { $ref }, true); + } + } + async function _compileAsync(sch) { + try { + return this._compileSchemaEnv(sch); + } catch (e) { + if (!(e instanceof ref_error_1.default)) + throw e; + checkLoaded.call(this, e); + await loadMissingSchema.call(this, e.missingSchema); + return _compileAsync.call(this, sch); + } + } + function checkLoaded({ missingSchema: ref, missingRef }) { + if (this.refs[ref]) { + throw new Error(`AnySchema ${ref} is loaded but ${missingRef} cannot be resolved`); + } + } + async function loadMissingSchema(ref) { + const _schema = await _loadSchema.call(this, ref); + if (!this.refs[ref]) + await loadMetaSchema.call(this, _schema.$schema); + if (!this.refs[ref]) + this.addSchema(_schema, ref, meta); + } + async function _loadSchema(ref) { + const p = this._loading[ref]; + if (p) + return p; + try { + return await (this._loading[ref] = loadSchema(ref)); + } finally { + delete this._loading[ref]; + } + } + } + // Adds schema to the instance + addSchema(schema, key, _meta, _validateSchema = this.opts.validateSchema) { + if (Array.isArray(schema)) { + for (const sch of schema) + this.addSchema(sch, void 0, _meta, _validateSchema); + return this; + } + let id; + if (typeof schema === "object") { + const { schemaId } = this.opts; + id = schema[schemaId]; + if (id !== void 0 && typeof id != "string") { + throw new Error(`schema ${schemaId} must be string`); + } + } + key = (0, resolve_1.normalizeId)(key || id); + this._checkUnique(key); + this.schemas[key] = this._addSchema(schema, _meta, key, _validateSchema, true); + return this; + } + // Add schema that will be used to validate other schemas + // options in META_IGNORE_OPTIONS are alway set to false + addMetaSchema(schema, key, _validateSchema = this.opts.validateSchema) { + this.addSchema(schema, key, true, _validateSchema); + return this; + } + // Validate schema against its meta-schema + validateSchema(schema, throwOrLogError) { + if (typeof schema == "boolean") + return true; + let $schema; + $schema = schema.$schema; + if ($schema !== void 0 && typeof $schema != "string") { + throw new Error("$schema must be a string"); + } + $schema = $schema || this.opts.defaultMeta || this.defaultMeta(); + if (!$schema) { + this.logger.warn("meta-schema not available"); + this.errors = null; + return true; + } + const valid = this.validate($schema, schema); + if (!valid && throwOrLogError) { + const message = "schema is invalid: " + this.errorsText(); + if (this.opts.validateSchema === "log") + this.logger.error(message); + else + throw new Error(message); + } + return valid; + } + // Get compiled schema by `key` or `ref`. + // (`key` that was passed to `addSchema` or full schema reference - `schema.$id` or resolved id) + getSchema(keyRef) { + let sch; + while (typeof (sch = getSchEnv.call(this, keyRef)) == "string") + keyRef = sch; + if (sch === void 0) { + const { schemaId } = this.opts; + const root = new compile_1.SchemaEnv({ schema: {}, schemaId }); + sch = compile_1.resolveSchema.call(this, root, keyRef); + if (!sch) + return; + this.refs[keyRef] = sch; + } + return sch.validate || this._compileSchemaEnv(sch); + } + // Remove cached schema(s). + // If no parameter is passed all schemas but meta-schemas are removed. + // If RegExp is passed all schemas with key/id matching pattern but meta-schemas are removed. + // Even if schema is referenced by other schemas it still can be removed as other schemas have local references. + removeSchema(schemaKeyRef) { + if (schemaKeyRef instanceof RegExp) { + this._removeAllSchemas(this.schemas, schemaKeyRef); + this._removeAllSchemas(this.refs, schemaKeyRef); + return this; + } + switch (typeof schemaKeyRef) { + case "undefined": + this._removeAllSchemas(this.schemas); + this._removeAllSchemas(this.refs); + this._cache.clear(); + return this; + case "string": { + const sch = getSchEnv.call(this, schemaKeyRef); + if (typeof sch == "object") + this._cache.delete(sch.schema); + delete this.schemas[schemaKeyRef]; + delete this.refs[schemaKeyRef]; + return this; + } + case "object": { + const cacheKey2 = schemaKeyRef; + this._cache.delete(cacheKey2); + let id = schemaKeyRef[this.opts.schemaId]; + if (id) { + id = (0, resolve_1.normalizeId)(id); + delete this.schemas[id]; + delete this.refs[id]; + } + return this; + } + default: + throw new Error("ajv.removeSchema: invalid parameter"); + } + } + // add "vocabulary" - a collection of keywords + addVocabulary(definitions) { + for (const def of definitions) + this.addKeyword(def); + return this; + } + addKeyword(kwdOrDef, def) { + let keyword; + if (typeof kwdOrDef == "string") { + keyword = kwdOrDef; + if (typeof def == "object") { + this.logger.warn("these parameters are deprecated, see docs for addKeyword"); + def.keyword = keyword; + } + } else if (typeof kwdOrDef == "object" && def === void 0) { + def = kwdOrDef; + keyword = def.keyword; + if (Array.isArray(keyword) && !keyword.length) { + throw new Error("addKeywords: keyword must be string or non-empty array"); + } + } else { + throw new Error("invalid addKeywords parameters"); + } + checkKeyword.call(this, keyword, def); + if (!def) { + (0, util_1.eachItem)(keyword, (kwd) => addRule.call(this, kwd)); + return this; + } + keywordMetaschema.call(this, def); + const definition = { + ...def, + type: (0, dataType_1.getJSONTypes)(def.type), + schemaType: (0, dataType_1.getJSONTypes)(def.schemaType) + }; + (0, util_1.eachItem)(keyword, definition.type.length === 0 ? (k) => addRule.call(this, k, definition) : (k) => definition.type.forEach((t) => addRule.call(this, k, definition, t))); + return this; + } + getKeyword(keyword) { + const rule = this.RULES.all[keyword]; + return typeof rule == "object" ? rule.definition : !!rule; + } + // Remove keyword + removeKeyword(keyword) { + const { RULES } = this; + delete RULES.keywords[keyword]; + delete RULES.all[keyword]; + for (const group of RULES.rules) { + const i = group.rules.findIndex((rule) => rule.keyword === keyword); + if (i >= 0) + group.rules.splice(i, 1); + } + return this; + } + // Add format + addFormat(name5, format) { + if (typeof format == "string") + format = new RegExp(format); + this.formats[name5] = format; + return this; + } + errorsText(errors = this.errors, { separator = ", ", dataVar = "data" } = {}) { + if (!errors || errors.length === 0) + return "No errors"; + return errors.map((e) => `${dataVar}${e.instancePath} ${e.message}`).reduce((text, msg) => text + separator + msg); + } + $dataMetaSchema(metaSchema, keywordsJsonPointers) { + const rules = this.RULES.all; + metaSchema = JSON.parse(JSON.stringify(metaSchema)); + for (const jsonPointer of keywordsJsonPointers) { + const segments = jsonPointer.split("/").slice(1); + let keywords = metaSchema; + for (const seg of segments) + keywords = keywords[seg]; + for (const key in rules) { + const rule = rules[key]; + if (typeof rule != "object") + continue; + const { $data } = rule.definition; + const schema = keywords[key]; + if ($data && schema) + keywords[key] = schemaOrData(schema); + } + } + return metaSchema; + } + _removeAllSchemas(schemas, regex) { + for (const keyRef in schemas) { + const sch = schemas[keyRef]; + if (!regex || regex.test(keyRef)) { + if (typeof sch == "string") { + delete schemas[keyRef]; + } else if (sch && !sch.meta) { + this._cache.delete(sch.schema); + delete schemas[keyRef]; + } + } + } + } + _addSchema(schema, meta, baseId, validateSchema = this.opts.validateSchema, addSchema = this.opts.addUsedSchema) { + let id; + const { schemaId } = this.opts; + if (typeof schema == "object") { + id = schema[schemaId]; + } else { + if (this.opts.jtd) + throw new Error("schema must be object"); + else if (typeof schema != "boolean") + throw new Error("schema must be object or boolean"); + } + let sch = this._cache.get(schema); + if (sch !== void 0) + return sch; + baseId = (0, resolve_1.normalizeId)(id || baseId); + const localRefs = resolve_1.getSchemaRefs.call(this, schema, baseId); + sch = new compile_1.SchemaEnv({ schema, schemaId, meta, baseId, localRefs }); + this._cache.set(sch.schema, sch); + if (addSchema && !baseId.startsWith("#")) { + if (baseId) + this._checkUnique(baseId); + this.refs[baseId] = sch; + } + if (validateSchema) + this.validateSchema(schema, true); + return sch; + } + _checkUnique(id) { + if (this.schemas[id] || this.refs[id]) { + throw new Error(`schema with key or id "${id}" already exists`); + } + } + _compileSchemaEnv(sch) { + if (sch.meta) + this._compileMetaSchema(sch); + else + compile_1.compileSchema.call(this, sch); + if (!sch.validate) + throw new Error("ajv implementation error"); + return sch.validate; + } + _compileMetaSchema(sch) { + const currentOpts = this.opts; + this.opts = this._metaOpts; + try { + compile_1.compileSchema.call(this, sch); + } finally { + this.opts = currentOpts; + } + } + }; + Ajv2.ValidationError = validation_error_1.default; + Ajv2.MissingRefError = ref_error_1.default; + exports2.default = Ajv2; + function checkOptions(checkOpts, options, msg, log2 = "error") { + for (const key in checkOpts) { + const opt = key; + if (opt in options) + this.logger[log2](`${msg}: option ${key}. ${checkOpts[opt]}`); + } + } + function getSchEnv(keyRef) { + keyRef = (0, resolve_1.normalizeId)(keyRef); + return this.schemas[keyRef] || this.refs[keyRef]; + } + function addInitialSchemas() { + const optsSchemas = this.opts.schemas; + if (!optsSchemas) + return; + if (Array.isArray(optsSchemas)) + this.addSchema(optsSchemas); + else + for (const key in optsSchemas) + this.addSchema(optsSchemas[key], key); + } + function addInitialFormats() { + for (const name5 in this.opts.formats) { + const format = this.opts.formats[name5]; + if (format) + this.addFormat(name5, format); + } + } + function addInitialKeywords(defs) { + if (Array.isArray(defs)) { + this.addVocabulary(defs); + return; + } + this.logger.warn("keywords option as map is deprecated, pass array"); + for (const keyword in defs) { + const def = defs[keyword]; + if (!def.keyword) + def.keyword = keyword; + this.addKeyword(def); + } + } + function getMetaSchemaOptions() { + const metaOpts = { ...this.opts }; + for (const opt of META_IGNORE_OPTIONS) + delete metaOpts[opt]; + return metaOpts; + } + var noLogs = { log() { + }, warn() { + }, error() { + } }; + function getLogger(logger31) { + if (logger31 === false) + return noLogs; + if (logger31 === void 0) + return console; + if (logger31.log && logger31.warn && logger31.error) + return logger31; + throw new Error("logger must implement log, warn and error methods"); + } + var KEYWORD_NAME = /^[a-z_$][a-z0-9_$:-]*$/i; + function checkKeyword(keyword, def) { + const { RULES } = this; + (0, util_1.eachItem)(keyword, (kwd) => { + if (RULES.keywords[kwd]) + throw new Error(`Keyword ${kwd} is already defined`); + if (!KEYWORD_NAME.test(kwd)) + throw new Error(`Keyword ${kwd} has invalid name`); + }); + if (!def) + return; + if (def.$data && !("code" in def || "validate" in def)) { + throw new Error('$data keyword must have "code" or "validate" function'); + } + } + function addRule(keyword, definition, dataType) { + var _a; + const post = definition === null || definition === void 0 ? void 0 : definition.post; + if (dataType && post) + throw new Error('keyword with "post" flag cannot have "type"'); + const { RULES } = this; + let ruleGroup = post ? RULES.post : RULES.rules.find(({ type: t }) => t === dataType); + if (!ruleGroup) { + ruleGroup = { type: dataType, rules: [] }; + RULES.rules.push(ruleGroup); + } + RULES.keywords[keyword] = true; + if (!definition) + return; + const rule = { + keyword, + definition: { + ...definition, + type: (0, dataType_1.getJSONTypes)(definition.type), + schemaType: (0, dataType_1.getJSONTypes)(definition.schemaType) + } + }; + if (definition.before) + addBeforeRule.call(this, ruleGroup, rule, definition.before); + else + ruleGroup.rules.push(rule); + RULES.all[keyword] = rule; + (_a = definition.implements) === null || _a === void 0 ? void 0 : _a.forEach((kwd) => this.addKeyword(kwd)); + } + function addBeforeRule(ruleGroup, rule, before) { + const i = ruleGroup.rules.findIndex((_rule) => _rule.keyword === before); + if (i >= 0) { + ruleGroup.rules.splice(i, 0, rule); + } else { + ruleGroup.rules.push(rule); + this.logger.warn(`rule ${before} is not defined`); + } + } + function keywordMetaschema(def) { + let { metaSchema } = def; + if (metaSchema === void 0) + return; + if (def.$data && this.opts.$data) + metaSchema = schemaOrData(metaSchema); + def.validateSchema = this.compile(metaSchema, true); + } + var $dataRef = { + $ref: "https://raw.githubusercontent.com/ajv-validator/ajv/master/lib/refs/data.json#" + }; + function schemaOrData(schema) { + return { anyOf: [schema, $dataRef] }; + } + } +}); + +// node_modules/ajv/dist/vocabularies/core/id.js +var require_id = __commonJS({ + "node_modules/ajv/dist/vocabularies/core/id.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { value: true }); + var def = { + keyword: "id", + code() { + throw new Error('NOT SUPPORTED: keyword "id", use "$id" for schema ID'); + } + }; + exports2.default = def; + } +}); + +// node_modules/ajv/dist/vocabularies/core/ref.js +var require_ref = __commonJS({ + "node_modules/ajv/dist/vocabularies/core/ref.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { value: true }); + exports2.callRef = exports2.getValidate = void 0; + var ref_error_1 = require_ref_error(); + var code_1 = require_code2(); + var codegen_1 = require_codegen(); + var names_1 = require_names(); + var compile_1 = require_compile(); + var util_1 = require_util(); + var def = { + keyword: "$ref", + schemaType: "string", + code(cxt) { + const { gen, schema: $ref, it } = cxt; + const { baseId, schemaEnv: env, validateName, opts, self: self2 } = it; + const { root } = env; + if (($ref === "#" || $ref === "#/") && baseId === root.baseId) + return callRootRef(); + const schOrEnv = compile_1.resolveRef.call(self2, root, baseId, $ref); + if (schOrEnv === void 0) + throw new ref_error_1.default(it.opts.uriResolver, baseId, $ref); + if (schOrEnv instanceof compile_1.SchemaEnv) + return callValidate(schOrEnv); + return inlineRefSchema(schOrEnv); + function callRootRef() { + if (env === root) + return callRef(cxt, validateName, env, env.$async); + const rootName = gen.scopeValue("root", { ref: root }); + return callRef(cxt, (0, codegen_1._)`${rootName}.validate`, root, root.$async); + } + function callValidate(sch) { + const v = getValidate(cxt, sch); + callRef(cxt, v, sch, sch.$async); + } + function inlineRefSchema(sch) { + const schName = gen.scopeValue("schema", opts.code.source === true ? { ref: sch, code: (0, codegen_1.stringify)(sch) } : { ref: sch }); + const valid = gen.name("valid"); + const schCxt = cxt.subschema({ + schema: sch, + dataTypes: [], + schemaPath: codegen_1.nil, + topSchemaRef: schName, + errSchemaPath: $ref + }, valid); + cxt.mergeEvaluated(schCxt); + cxt.ok(valid); + } + } + }; + function getValidate(cxt, sch) { + const { gen } = cxt; + return sch.validate ? gen.scopeValue("validate", { ref: sch.validate }) : (0, codegen_1._)`${gen.scopeValue("wrapper", { ref: sch })}.validate`; + } + exports2.getValidate = getValidate; + function callRef(cxt, v, sch, $async) { + const { gen, it } = cxt; + const { allErrors, schemaEnv: env, opts } = it; + const passCxt = opts.passContext ? names_1.default.this : codegen_1.nil; + if ($async) + callAsyncRef(); + else + callSyncRef(); + function callAsyncRef() { + if (!env.$async) + throw new Error("async schema referenced by sync schema"); + const valid = gen.let("valid"); + gen.try(() => { + gen.code((0, codegen_1._)`await ${(0, code_1.callValidateCode)(cxt, v, passCxt)}`); + addEvaluatedFrom(v); + if (!allErrors) + gen.assign(valid, true); + }, (e) => { + gen.if((0, codegen_1._)`!(${e} instanceof ${it.ValidationError})`, () => gen.throw(e)); + addErrorsFrom(e); + if (!allErrors) + gen.assign(valid, false); + }); + cxt.ok(valid); + } + function callSyncRef() { + cxt.result((0, code_1.callValidateCode)(cxt, v, passCxt), () => addEvaluatedFrom(v), () => addErrorsFrom(v)); + } + function addErrorsFrom(source) { + const errs = (0, codegen_1._)`${source}.errors`; + gen.assign(names_1.default.vErrors, (0, codegen_1._)`${names_1.default.vErrors} === null ? ${errs} : ${names_1.default.vErrors}.concat(${errs})`); + gen.assign(names_1.default.errors, (0, codegen_1._)`${names_1.default.vErrors}.length`); + } + function addEvaluatedFrom(source) { + var _a; + if (!it.opts.unevaluated) + return; + const schEvaluated = (_a = sch === null || sch === void 0 ? void 0 : sch.validate) === null || _a === void 0 ? void 0 : _a.evaluated; + if (it.props !== true) { + if (schEvaluated && !schEvaluated.dynamicProps) { + if (schEvaluated.props !== void 0) { + it.props = util_1.mergeEvaluated.props(gen, schEvaluated.props, it.props); + } + } else { + const props = gen.var("props", (0, codegen_1._)`${source}.evaluated.props`); + it.props = util_1.mergeEvaluated.props(gen, props, it.props, codegen_1.Name); + } + } + if (it.items !== true) { + if (schEvaluated && !schEvaluated.dynamicItems) { + if (schEvaluated.items !== void 0) { + it.items = util_1.mergeEvaluated.items(gen, schEvaluated.items, it.items); + } + } else { + const items = gen.var("items", (0, codegen_1._)`${source}.evaluated.items`); + it.items = util_1.mergeEvaluated.items(gen, items, it.items, codegen_1.Name); + } + } + } + } + exports2.callRef = callRef; + exports2.default = def; + } +}); + +// node_modules/ajv/dist/vocabularies/core/index.js +var require_core2 = __commonJS({ + "node_modules/ajv/dist/vocabularies/core/index.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { value: true }); + var id_1 = require_id(); + var ref_1 = require_ref(); + var core = [ + "$schema", + "$id", + "$defs", + "$vocabulary", + { keyword: "$comment" }, + "definitions", + id_1.default, + ref_1.default + ]; + exports2.default = core; + } +}); + +// node_modules/ajv/dist/vocabularies/validation/limitNumber.js +var require_limitNumber = __commonJS({ + "node_modules/ajv/dist/vocabularies/validation/limitNumber.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { value: true }); + var codegen_1 = require_codegen(); + var ops = codegen_1.operators; + var KWDs = { + maximum: { okStr: "<=", ok: ops.LTE, fail: ops.GT }, + minimum: { okStr: ">=", ok: ops.GTE, fail: ops.LT }, + exclusiveMaximum: { okStr: "<", ok: ops.LT, fail: ops.GTE }, + exclusiveMinimum: { okStr: ">", ok: ops.GT, fail: ops.LTE } + }; + var error2 = { + message: ({ keyword, schemaCode }) => (0, codegen_1.str)`must be ${KWDs[keyword].okStr} ${schemaCode}`, + params: ({ keyword, schemaCode }) => (0, codegen_1._)`{comparison: ${KWDs[keyword].okStr}, limit: ${schemaCode}}` + }; + var def = { + keyword: Object.keys(KWDs), + type: "number", + schemaType: "number", + $data: true, + error: error2, + code(cxt) { + const { keyword, data, schemaCode } = cxt; + cxt.fail$data((0, codegen_1._)`${data} ${KWDs[keyword].fail} ${schemaCode} || isNaN(${data})`); + } + }; + exports2.default = def; + } +}); + +// node_modules/ajv/dist/vocabularies/validation/multipleOf.js +var require_multipleOf = __commonJS({ + "node_modules/ajv/dist/vocabularies/validation/multipleOf.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { value: true }); + var codegen_1 = require_codegen(); + var error2 = { + message: ({ schemaCode }) => (0, codegen_1.str)`must be multiple of ${schemaCode}`, + params: ({ schemaCode }) => (0, codegen_1._)`{multipleOf: ${schemaCode}}` + }; + var def = { + keyword: "multipleOf", + type: "number", + schemaType: "number", + $data: true, + error: error2, + code(cxt) { + const { gen, data, schemaCode, it } = cxt; + const prec = it.opts.multipleOfPrecision; + const res = gen.let("res"); + const invalid = prec ? (0, codegen_1._)`Math.abs(Math.round(${res}) - ${res}) > 1e-${prec}` : (0, codegen_1._)`${res} !== parseInt(${res})`; + cxt.fail$data((0, codegen_1._)`(${schemaCode} === 0 || (${res} = ${data}/${schemaCode}, ${invalid}))`); + } + }; + exports2.default = def; + } +}); + +// node_modules/ajv/dist/runtime/ucs2length.js +var require_ucs2length = __commonJS({ + "node_modules/ajv/dist/runtime/ucs2length.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { value: true }); + function ucs2length(str) { + const len = str.length; + let length = 0; + let pos = 0; + let value; + while (pos < len) { + length++; + value = str.charCodeAt(pos++); + if (value >= 55296 && value <= 56319 && pos < len) { + value = str.charCodeAt(pos); + if ((value & 64512) === 56320) + pos++; + } + } + return length; + } + exports2.default = ucs2length; + ucs2length.code = 'require("ajv/dist/runtime/ucs2length").default'; + } +}); + +// node_modules/ajv/dist/vocabularies/validation/limitLength.js +var require_limitLength = __commonJS({ + "node_modules/ajv/dist/vocabularies/validation/limitLength.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { value: true }); + var codegen_1 = require_codegen(); + var util_1 = require_util(); + var ucs2length_1 = require_ucs2length(); + var error2 = { + message({ keyword, schemaCode }) { + const comp = keyword === "maxLength" ? "more" : "fewer"; + return (0, codegen_1.str)`must NOT have ${comp} than ${schemaCode} characters`; + }, + params: ({ schemaCode }) => (0, codegen_1._)`{limit: ${schemaCode}}` + }; + var def = { + keyword: ["maxLength", "minLength"], + type: "string", + schemaType: "number", + $data: true, + error: error2, + code(cxt) { + const { keyword, data, schemaCode, it } = cxt; + const op = keyword === "maxLength" ? codegen_1.operators.GT : codegen_1.operators.LT; + const len = it.opts.unicode === false ? (0, codegen_1._)`${data}.length` : (0, codegen_1._)`${(0, util_1.useFunc)(cxt.gen, ucs2length_1.default)}(${data})`; + cxt.fail$data((0, codegen_1._)`${len} ${op} ${schemaCode}`); + } + }; + exports2.default = def; + } +}); + +// node_modules/ajv/dist/vocabularies/validation/pattern.js +var require_pattern = __commonJS({ + "node_modules/ajv/dist/vocabularies/validation/pattern.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { value: true }); + var code_1 = require_code2(); + var util_1 = require_util(); + var codegen_1 = require_codegen(); + var error2 = { + message: ({ schemaCode }) => (0, codegen_1.str)`must match pattern "${schemaCode}"`, + params: ({ schemaCode }) => (0, codegen_1._)`{pattern: ${schemaCode}}` + }; + var def = { + keyword: "pattern", + type: "string", + schemaType: "string", + $data: true, + error: error2, + code(cxt) { + const { gen, data, $data, schema, schemaCode, it } = cxt; + const u = it.opts.unicodeRegExp ? "u" : ""; + if ($data) { + const { regExp } = it.opts.code; + const regExpCode = regExp.code === "new RegExp" ? (0, codegen_1._)`new RegExp` : (0, util_1.useFunc)(gen, regExp); + const valid = gen.let("valid"); + gen.try(() => gen.assign(valid, (0, codegen_1._)`${regExpCode}(${schemaCode}, ${u}).test(${data})`), () => gen.assign(valid, false)); + cxt.fail$data((0, codegen_1._)`!${valid}`); + } else { + const regExp = (0, code_1.usePattern)(cxt, schema); + cxt.fail$data((0, codegen_1._)`!${regExp}.test(${data})`); + } + } + }; + exports2.default = def; + } +}); + +// node_modules/ajv/dist/vocabularies/validation/limitProperties.js +var require_limitProperties = __commonJS({ + "node_modules/ajv/dist/vocabularies/validation/limitProperties.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { value: true }); + var codegen_1 = require_codegen(); + var error2 = { + message({ keyword, schemaCode }) { + const comp = keyword === "maxProperties" ? "more" : "fewer"; + return (0, codegen_1.str)`must NOT have ${comp} than ${schemaCode} properties`; + }, + params: ({ schemaCode }) => (0, codegen_1._)`{limit: ${schemaCode}}` + }; + var def = { + keyword: ["maxProperties", "minProperties"], + type: "object", + schemaType: "number", + $data: true, + error: error2, + code(cxt) { + const { keyword, data, schemaCode } = cxt; + const op = keyword === "maxProperties" ? codegen_1.operators.GT : codegen_1.operators.LT; + cxt.fail$data((0, codegen_1._)`Object.keys(${data}).length ${op} ${schemaCode}`); + } + }; + exports2.default = def; + } +}); + +// node_modules/ajv/dist/vocabularies/validation/required.js +var require_required = __commonJS({ + "node_modules/ajv/dist/vocabularies/validation/required.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { value: true }); + var code_1 = require_code2(); + var codegen_1 = require_codegen(); + var util_1 = require_util(); + var error2 = { + message: ({ params: { missingProperty } }) => (0, codegen_1.str)`must have required property '${missingProperty}'`, + params: ({ params: { missingProperty } }) => (0, codegen_1._)`{missingProperty: ${missingProperty}}` + }; + var def = { + keyword: "required", + type: "object", + schemaType: "array", + $data: true, + error: error2, + code(cxt) { + const { gen, schema, schemaCode, data, $data, it } = cxt; + const { opts } = it; + if (!$data && schema.length === 0) + return; + const useLoop = schema.length >= opts.loopRequired; + if (it.allErrors) + allErrorsMode(); + else + exitOnErrorMode(); + if (opts.strictRequired) { + const props = cxt.parentSchema.properties; + const { definedProperties } = cxt.it; + for (const requiredKey of schema) { + if ((props === null || props === void 0 ? void 0 : props[requiredKey]) === void 0 && !definedProperties.has(requiredKey)) { + const schemaPath = it.schemaEnv.baseId + it.errSchemaPath; + const msg = `required property "${requiredKey}" is not defined at "${schemaPath}" (strictRequired)`; + (0, util_1.checkStrictMode)(it, msg, it.opts.strictRequired); + } + } + } + function allErrorsMode() { + if (useLoop || $data) { + cxt.block$data(codegen_1.nil, loopAllRequired); + } else { + for (const prop of schema) { + (0, code_1.checkReportMissingProp)(cxt, prop); + } + } + } + function exitOnErrorMode() { + const missing = gen.let("missing"); + if (useLoop || $data) { + const valid = gen.let("valid", true); + cxt.block$data(valid, () => loopUntilMissing(missing, valid)); + cxt.ok(valid); + } else { + gen.if((0, code_1.checkMissingProp)(cxt, schema, missing)); + (0, code_1.reportMissingProp)(cxt, missing); + gen.else(); + } + } + function loopAllRequired() { + gen.forOf("prop", schemaCode, (prop) => { + cxt.setParams({ missingProperty: prop }); + gen.if((0, code_1.noPropertyInData)(gen, data, prop, opts.ownProperties), () => cxt.error()); + }); + } + function loopUntilMissing(missing, valid) { + cxt.setParams({ missingProperty: missing }); + gen.forOf(missing, schemaCode, () => { + gen.assign(valid, (0, code_1.propertyInData)(gen, data, missing, opts.ownProperties)); + gen.if((0, codegen_1.not)(valid), () => { + cxt.error(); + gen.break(); + }); + }, codegen_1.nil); + } + } + }; + exports2.default = def; + } +}); + +// node_modules/ajv/dist/vocabularies/validation/limitItems.js +var require_limitItems = __commonJS({ + "node_modules/ajv/dist/vocabularies/validation/limitItems.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { value: true }); + var codegen_1 = require_codegen(); + var error2 = { + message({ keyword, schemaCode }) { + const comp = keyword === "maxItems" ? "more" : "fewer"; + return (0, codegen_1.str)`must NOT have ${comp} than ${schemaCode} items`; + }, + params: ({ schemaCode }) => (0, codegen_1._)`{limit: ${schemaCode}}` + }; + var def = { + keyword: ["maxItems", "minItems"], + type: "array", + schemaType: "number", + $data: true, + error: error2, + code(cxt) { + const { keyword, data, schemaCode } = cxt; + const op = keyword === "maxItems" ? codegen_1.operators.GT : codegen_1.operators.LT; + cxt.fail$data((0, codegen_1._)`${data}.length ${op} ${schemaCode}`); + } + }; + exports2.default = def; + } +}); + +// node_modules/ajv/dist/runtime/equal.js +var require_equal = __commonJS({ + "node_modules/ajv/dist/runtime/equal.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { value: true }); + var equal = require_fast_deep_equal(); + equal.code = 'require("ajv/dist/runtime/equal").default'; + exports2.default = equal; + } +}); + +// node_modules/ajv/dist/vocabularies/validation/uniqueItems.js +var require_uniqueItems = __commonJS({ + "node_modules/ajv/dist/vocabularies/validation/uniqueItems.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { value: true }); + var dataType_1 = require_dataType(); + var codegen_1 = require_codegen(); + var util_1 = require_util(); + var equal_1 = require_equal(); + var error2 = { + message: ({ params: { i, j } }) => (0, codegen_1.str)`must NOT have duplicate items (items ## ${j} and ${i} are identical)`, + params: ({ params: { i, j } }) => (0, codegen_1._)`{i: ${i}, j: ${j}}` + }; + var def = { + keyword: "uniqueItems", + type: "array", + schemaType: "boolean", + $data: true, + error: error2, + code(cxt) { + const { gen, data, $data, schema, parentSchema, schemaCode, it } = cxt; + if (!$data && !schema) + return; + const valid = gen.let("valid"); + const itemTypes = parentSchema.items ? (0, dataType_1.getSchemaTypes)(parentSchema.items) : []; + cxt.block$data(valid, validateUniqueItems, (0, codegen_1._)`${schemaCode} === false`); + cxt.ok(valid); + function validateUniqueItems() { + const i = gen.let("i", (0, codegen_1._)`${data}.length`); + const j = gen.let("j"); + cxt.setParams({ i, j }); + gen.assign(valid, true); + gen.if((0, codegen_1._)`${i} > 1`, () => (canOptimize() ? loopN : loopN2)(i, j)); + } + function canOptimize() { + return itemTypes.length > 0 && !itemTypes.some((t) => t === "object" || t === "array"); + } + function loopN(i, j) { + const item = gen.name("item"); + const wrongType = (0, dataType_1.checkDataTypes)(itemTypes, item, it.opts.strictNumbers, dataType_1.DataType.Wrong); + const indices = gen.const("indices", (0, codegen_1._)`{}`); + gen.for((0, codegen_1._)`;${i}--;`, () => { + gen.let(item, (0, codegen_1._)`${data}[${i}]`); + gen.if(wrongType, (0, codegen_1._)`continue`); + if (itemTypes.length > 1) + gen.if((0, codegen_1._)`typeof ${item} == "string"`, (0, codegen_1._)`${item} += "_"`); + gen.if((0, codegen_1._)`typeof ${indices}[${item}] == "number"`, () => { + gen.assign(j, (0, codegen_1._)`${indices}[${item}]`); + cxt.error(); + gen.assign(valid, false).break(); + }).code((0, codegen_1._)`${indices}[${item}] = ${i}`); + }); + } + function loopN2(i, j) { + const eql = (0, util_1.useFunc)(gen, equal_1.default); + const outer = gen.name("outer"); + gen.label(outer).for((0, codegen_1._)`;${i}--;`, () => gen.for((0, codegen_1._)`${j} = ${i}; ${j}--;`, () => gen.if((0, codegen_1._)`${eql}(${data}[${i}], ${data}[${j}])`, () => { + cxt.error(); + gen.assign(valid, false).break(outer); + }))); + } + } + }; + exports2.default = def; + } +}); + +// node_modules/ajv/dist/vocabularies/validation/const.js +var require_const = __commonJS({ + "node_modules/ajv/dist/vocabularies/validation/const.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { value: true }); + var codegen_1 = require_codegen(); + var util_1 = require_util(); + var equal_1 = require_equal(); + var error2 = { + message: "must be equal to constant", + params: ({ schemaCode }) => (0, codegen_1._)`{allowedValue: ${schemaCode}}` + }; + var def = { + keyword: "const", + $data: true, + error: error2, + code(cxt) { + const { gen, data, $data, schemaCode, schema } = cxt; + if ($data || schema && typeof schema == "object") { + cxt.fail$data((0, codegen_1._)`!${(0, util_1.useFunc)(gen, equal_1.default)}(${data}, ${schemaCode})`); + } else { + cxt.fail((0, codegen_1._)`${schema} !== ${data}`); + } + } + }; + exports2.default = def; + } +}); + +// node_modules/ajv/dist/vocabularies/validation/enum.js +var require_enum = __commonJS({ + "node_modules/ajv/dist/vocabularies/validation/enum.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { value: true }); + var codegen_1 = require_codegen(); + var util_1 = require_util(); + var equal_1 = require_equal(); + var error2 = { + message: "must be equal to one of the allowed values", + params: ({ schemaCode }) => (0, codegen_1._)`{allowedValues: ${schemaCode}}` + }; + var def = { + keyword: "enum", + schemaType: "array", + $data: true, + error: error2, + code(cxt) { + const { gen, data, $data, schema, schemaCode, it } = cxt; + if (!$data && schema.length === 0) + throw new Error("enum must have non-empty array"); + const useLoop = schema.length >= it.opts.loopEnum; + let eql; + const getEql = () => eql !== null && eql !== void 0 ? eql : eql = (0, util_1.useFunc)(gen, equal_1.default); + let valid; + if (useLoop || $data) { + valid = gen.let("valid"); + cxt.block$data(valid, loopEnum); + } else { + if (!Array.isArray(schema)) + throw new Error("ajv implementation error"); + const vSchema = gen.const("vSchema", schemaCode); + valid = (0, codegen_1.or)(...schema.map((_x, i) => equalCode(vSchema, i))); + } + cxt.pass(valid); + function loopEnum() { + gen.assign(valid, false); + gen.forOf("v", schemaCode, (v) => gen.if((0, codegen_1._)`${getEql()}(${data}, ${v})`, () => gen.assign(valid, true).break())); + } + function equalCode(vSchema, i) { + const sch = schema[i]; + return typeof sch === "object" && sch !== null ? (0, codegen_1._)`${getEql()}(${data}, ${vSchema}[${i}])` : (0, codegen_1._)`${data} === ${sch}`; + } + } + }; + exports2.default = def; + } +}); + +// node_modules/ajv/dist/vocabularies/validation/index.js +var require_validation = __commonJS({ + "node_modules/ajv/dist/vocabularies/validation/index.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { value: true }); + var limitNumber_1 = require_limitNumber(); + var multipleOf_1 = require_multipleOf(); + var limitLength_1 = require_limitLength(); + var pattern_1 = require_pattern(); + var limitProperties_1 = require_limitProperties(); + var required_1 = require_required(); + var limitItems_1 = require_limitItems(); + var uniqueItems_1 = require_uniqueItems(); + var const_1 = require_const(); + var enum_1 = require_enum(); + var validation = [ + // number + limitNumber_1.default, + multipleOf_1.default, + // string + limitLength_1.default, + pattern_1.default, + // object + limitProperties_1.default, + required_1.default, + // array + limitItems_1.default, + uniqueItems_1.default, + // any + { keyword: "type", schemaType: ["string", "array"] }, + { keyword: "nullable", schemaType: "boolean" }, + const_1.default, + enum_1.default + ]; + exports2.default = validation; + } +}); + +// node_modules/ajv/dist/vocabularies/applicator/additionalItems.js +var require_additionalItems = __commonJS({ + "node_modules/ajv/dist/vocabularies/applicator/additionalItems.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { value: true }); + exports2.validateAdditionalItems = void 0; + var codegen_1 = require_codegen(); + var util_1 = require_util(); + var error2 = { + message: ({ params: { len } }) => (0, codegen_1.str)`must NOT have more than ${len} items`, + params: ({ params: { len } }) => (0, codegen_1._)`{limit: ${len}}` + }; + var def = { + keyword: "additionalItems", + type: "array", + schemaType: ["boolean", "object"], + before: "uniqueItems", + error: error2, + code(cxt) { + const { parentSchema, it } = cxt; + const { items } = parentSchema; + if (!Array.isArray(items)) { + (0, util_1.checkStrictMode)(it, '"additionalItems" is ignored when "items" is not an array of schemas'); + return; + } + validateAdditionalItems(cxt, items); + } + }; + function validateAdditionalItems(cxt, items) { + const { gen, schema, data, keyword, it } = cxt; + it.items = true; + const len = gen.const("len", (0, codegen_1._)`${data}.length`); + if (schema === false) { + cxt.setParams({ len: items.length }); + cxt.pass((0, codegen_1._)`${len} <= ${items.length}`); + } else if (typeof schema == "object" && !(0, util_1.alwaysValidSchema)(it, schema)) { + const valid = gen.var("valid", (0, codegen_1._)`${len} <= ${items.length}`); + gen.if((0, codegen_1.not)(valid), () => validateItems(valid)); + cxt.ok(valid); + } + function validateItems(valid) { + gen.forRange("i", items.length, len, (i) => { + cxt.subschema({ keyword, dataProp: i, dataPropType: util_1.Type.Num }, valid); + if (!it.allErrors) + gen.if((0, codegen_1.not)(valid), () => gen.break()); + }); + } + } + exports2.validateAdditionalItems = validateAdditionalItems; + exports2.default = def; + } +}); + +// node_modules/ajv/dist/vocabularies/applicator/items.js +var require_items = __commonJS({ + "node_modules/ajv/dist/vocabularies/applicator/items.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { value: true }); + exports2.validateTuple = void 0; + var codegen_1 = require_codegen(); + var util_1 = require_util(); + var code_1 = require_code2(); + var def = { + keyword: "items", + type: "array", + schemaType: ["object", "array", "boolean"], + before: "uniqueItems", + code(cxt) { + const { schema, it } = cxt; + if (Array.isArray(schema)) + return validateTuple(cxt, "additionalItems", schema); + it.items = true; + if ((0, util_1.alwaysValidSchema)(it, schema)) + return; + cxt.ok((0, code_1.validateArray)(cxt)); + } + }; + function validateTuple(cxt, extraItems, schArr = cxt.schema) { + const { gen, parentSchema, data, keyword, it } = cxt; + checkStrictTuple(parentSchema); + if (it.opts.unevaluated && schArr.length && it.items !== true) { + it.items = util_1.mergeEvaluated.items(gen, schArr.length, it.items); + } + const valid = gen.name("valid"); + const len = gen.const("len", (0, codegen_1._)`${data}.length`); + schArr.forEach((sch, i) => { + if ((0, util_1.alwaysValidSchema)(it, sch)) + return; + gen.if((0, codegen_1._)`${len} > ${i}`, () => cxt.subschema({ + keyword, + schemaProp: i, + dataProp: i + }, valid)); + cxt.ok(valid); + }); + function checkStrictTuple(sch) { + const { opts, errSchemaPath } = it; + const l = schArr.length; + const fullTuple = l === sch.minItems && (l === sch.maxItems || sch[extraItems] === false); + if (opts.strictTuples && !fullTuple) { + const msg = `"${keyword}" is ${l}-tuple, but minItems or maxItems/${extraItems} are not specified or different at path "${errSchemaPath}"`; + (0, util_1.checkStrictMode)(it, msg, opts.strictTuples); + } + } + } + exports2.validateTuple = validateTuple; + exports2.default = def; + } +}); + +// node_modules/ajv/dist/vocabularies/applicator/prefixItems.js +var require_prefixItems = __commonJS({ + "node_modules/ajv/dist/vocabularies/applicator/prefixItems.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { value: true }); + var items_1 = require_items(); + var def = { + keyword: "prefixItems", + type: "array", + schemaType: ["array"], + before: "uniqueItems", + code: (cxt) => (0, items_1.validateTuple)(cxt, "items") + }; + exports2.default = def; + } +}); + +// node_modules/ajv/dist/vocabularies/applicator/items2020.js +var require_items2020 = __commonJS({ + "node_modules/ajv/dist/vocabularies/applicator/items2020.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { value: true }); + var codegen_1 = require_codegen(); + var util_1 = require_util(); + var code_1 = require_code2(); + var additionalItems_1 = require_additionalItems(); + var error2 = { + message: ({ params: { len } }) => (0, codegen_1.str)`must NOT have more than ${len} items`, + params: ({ params: { len } }) => (0, codegen_1._)`{limit: ${len}}` + }; + var def = { + keyword: "items", + type: "array", + schemaType: ["object", "boolean"], + before: "uniqueItems", + error: error2, + code(cxt) { + const { schema, parentSchema, it } = cxt; + const { prefixItems } = parentSchema; + it.items = true; + if ((0, util_1.alwaysValidSchema)(it, schema)) + return; + if (prefixItems) + (0, additionalItems_1.validateAdditionalItems)(cxt, prefixItems); + else + cxt.ok((0, code_1.validateArray)(cxt)); + } + }; + exports2.default = def; + } +}); + +// node_modules/ajv/dist/vocabularies/applicator/contains.js +var require_contains = __commonJS({ + "node_modules/ajv/dist/vocabularies/applicator/contains.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { value: true }); + var codegen_1 = require_codegen(); + var util_1 = require_util(); + var error2 = { + message: ({ params: { min, max } }) => max === void 0 ? (0, codegen_1.str)`must contain at least ${min} valid item(s)` : (0, codegen_1.str)`must contain at least ${min} and no more than ${max} valid item(s)`, + params: ({ params: { min, max } }) => max === void 0 ? (0, codegen_1._)`{minContains: ${min}}` : (0, codegen_1._)`{minContains: ${min}, maxContains: ${max}}` + }; + var def = { + keyword: "contains", + type: "array", + schemaType: ["object", "boolean"], + before: "uniqueItems", + trackErrors: true, + error: error2, + code(cxt) { + const { gen, schema, parentSchema, data, it } = cxt; + let min; + let max; + const { minContains, maxContains } = parentSchema; + if (it.opts.next) { + min = minContains === void 0 ? 1 : minContains; + max = maxContains; + } else { + min = 1; + } + const len = gen.const("len", (0, codegen_1._)`${data}.length`); + cxt.setParams({ min, max }); + if (max === void 0 && min === 0) { + (0, util_1.checkStrictMode)(it, `"minContains" == 0 without "maxContains": "contains" keyword ignored`); + return; + } + if (max !== void 0 && min > max) { + (0, util_1.checkStrictMode)(it, `"minContains" > "maxContains" is always invalid`); + cxt.fail(); + return; + } + if ((0, util_1.alwaysValidSchema)(it, schema)) { + let cond = (0, codegen_1._)`${len} >= ${min}`; + if (max !== void 0) + cond = (0, codegen_1._)`${cond} && ${len} <= ${max}`; + cxt.pass(cond); + return; + } + it.items = true; + const valid = gen.name("valid"); + if (max === void 0 && min === 1) { + validateItems(valid, () => gen.if(valid, () => gen.break())); + } else if (min === 0) { + gen.let(valid, true); + if (max !== void 0) + gen.if((0, codegen_1._)`${data}.length > 0`, validateItemsWithCount); + } else { + gen.let(valid, false); + validateItemsWithCount(); + } + cxt.result(valid, () => cxt.reset()); + function validateItemsWithCount() { + const schValid = gen.name("_valid"); + const count = gen.let("count", 0); + validateItems(schValid, () => gen.if(schValid, () => checkLimits(count))); + } + function validateItems(_valid, block) { + gen.forRange("i", 0, len, (i) => { + cxt.subschema({ + keyword: "contains", + dataProp: i, + dataPropType: util_1.Type.Num, + compositeRule: true + }, _valid); + block(); + }); + } + function checkLimits(count) { + gen.code((0, codegen_1._)`${count}++`); + if (max === void 0) { + gen.if((0, codegen_1._)`${count} >= ${min}`, () => gen.assign(valid, true).break()); + } else { + gen.if((0, codegen_1._)`${count} > ${max}`, () => gen.assign(valid, false).break()); + if (min === 1) + gen.assign(valid, true); + else + gen.if((0, codegen_1._)`${count} >= ${min}`, () => gen.assign(valid, true)); + } + } + } + }; + exports2.default = def; + } +}); + +// node_modules/ajv/dist/vocabularies/applicator/dependencies.js +var require_dependencies = __commonJS({ + "node_modules/ajv/dist/vocabularies/applicator/dependencies.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { value: true }); + exports2.validateSchemaDeps = exports2.validatePropertyDeps = exports2.error = void 0; + var codegen_1 = require_codegen(); + var util_1 = require_util(); + var code_1 = require_code2(); + exports2.error = { + message: ({ params: { property, depsCount, deps } }) => { + const property_ies = depsCount === 1 ? "property" : "properties"; + return (0, codegen_1.str)`must have ${property_ies} ${deps} when property ${property} is present`; + }, + params: ({ params: { property, depsCount, deps, missingProperty } }) => (0, codegen_1._)`{property: ${property}, + missingProperty: ${missingProperty}, + depsCount: ${depsCount}, + deps: ${deps}}` + // TODO change to reference + }; + var def = { + keyword: "dependencies", + type: "object", + schemaType: "object", + error: exports2.error, + code(cxt) { + const [propDeps, schDeps] = splitDependencies(cxt); + validatePropertyDeps(cxt, propDeps); + validateSchemaDeps(cxt, schDeps); + } + }; + function splitDependencies({ schema }) { + const propertyDeps = {}; + const schemaDeps = {}; + for (const key in schema) { + if (key === "__proto__") + continue; + const deps = Array.isArray(schema[key]) ? propertyDeps : schemaDeps; + deps[key] = schema[key]; + } + return [propertyDeps, schemaDeps]; + } + function validatePropertyDeps(cxt, propertyDeps = cxt.schema) { + const { gen, data, it } = cxt; + if (Object.keys(propertyDeps).length === 0) + return; + const missing = gen.let("missing"); + for (const prop in propertyDeps) { + const deps = propertyDeps[prop]; + if (deps.length === 0) + continue; + const hasProperty = (0, code_1.propertyInData)(gen, data, prop, it.opts.ownProperties); + cxt.setParams({ + property: prop, + depsCount: deps.length, + deps: deps.join(", ") + }); + if (it.allErrors) { + gen.if(hasProperty, () => { + for (const depProp of deps) { + (0, code_1.checkReportMissingProp)(cxt, depProp); + } + }); + } else { + gen.if((0, codegen_1._)`${hasProperty} && (${(0, code_1.checkMissingProp)(cxt, deps, missing)})`); + (0, code_1.reportMissingProp)(cxt, missing); + gen.else(); + } + } + } + exports2.validatePropertyDeps = validatePropertyDeps; + function validateSchemaDeps(cxt, schemaDeps = cxt.schema) { + const { gen, data, keyword, it } = cxt; + const valid = gen.name("valid"); + for (const prop in schemaDeps) { + if ((0, util_1.alwaysValidSchema)(it, schemaDeps[prop])) + continue; + gen.if( + (0, code_1.propertyInData)(gen, data, prop, it.opts.ownProperties), + () => { + const schCxt = cxt.subschema({ keyword, schemaProp: prop }, valid); + cxt.mergeValidEvaluated(schCxt, valid); + }, + () => gen.var(valid, true) + // TODO var + ); + cxt.ok(valid); + } + } + exports2.validateSchemaDeps = validateSchemaDeps; + exports2.default = def; + } +}); + +// node_modules/ajv/dist/vocabularies/applicator/propertyNames.js +var require_propertyNames = __commonJS({ + "node_modules/ajv/dist/vocabularies/applicator/propertyNames.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { value: true }); + var codegen_1 = require_codegen(); + var util_1 = require_util(); + var error2 = { + message: "property name must be valid", + params: ({ params }) => (0, codegen_1._)`{propertyName: ${params.propertyName}}` + }; + var def = { + keyword: "propertyNames", + type: "object", + schemaType: ["object", "boolean"], + error: error2, + code(cxt) { + const { gen, schema, data, it } = cxt; + if ((0, util_1.alwaysValidSchema)(it, schema)) + return; + const valid = gen.name("valid"); + gen.forIn("key", data, (key) => { + cxt.setParams({ propertyName: key }); + cxt.subschema({ + keyword: "propertyNames", + data: key, + dataTypes: ["string"], + propertyName: key, + compositeRule: true + }, valid); + gen.if((0, codegen_1.not)(valid), () => { + cxt.error(true); + if (!it.allErrors) + gen.break(); + }); + }); + cxt.ok(valid); + } + }; + exports2.default = def; + } +}); + +// node_modules/ajv/dist/vocabularies/applicator/additionalProperties.js +var require_additionalProperties = __commonJS({ + "node_modules/ajv/dist/vocabularies/applicator/additionalProperties.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { value: true }); + var code_1 = require_code2(); + var codegen_1 = require_codegen(); + var names_1 = require_names(); + var util_1 = require_util(); + var error2 = { + message: "must NOT have additional properties", + params: ({ params }) => (0, codegen_1._)`{additionalProperty: ${params.additionalProperty}}` + }; + var def = { + keyword: "additionalProperties", + type: ["object"], + schemaType: ["boolean", "object"], + allowUndefined: true, + trackErrors: true, + error: error2, + code(cxt) { + const { gen, schema, parentSchema, data, errsCount, it } = cxt; + if (!errsCount) + throw new Error("ajv implementation error"); + const { allErrors, opts } = it; + it.props = true; + if (opts.removeAdditional !== "all" && (0, util_1.alwaysValidSchema)(it, schema)) + return; + const props = (0, code_1.allSchemaProperties)(parentSchema.properties); + const patProps = (0, code_1.allSchemaProperties)(parentSchema.patternProperties); + checkAdditionalProperties(); + cxt.ok((0, codegen_1._)`${errsCount} === ${names_1.default.errors}`); + function checkAdditionalProperties() { + gen.forIn("key", data, (key) => { + if (!props.length && !patProps.length) + additionalPropertyCode(key); + else + gen.if(isAdditional(key), () => additionalPropertyCode(key)); + }); + } + function isAdditional(key) { + let definedProp; + if (props.length > 8) { + const propsSchema = (0, util_1.schemaRefOrVal)(it, parentSchema.properties, "properties"); + definedProp = (0, code_1.isOwnProperty)(gen, propsSchema, key); + } else if (props.length) { + definedProp = (0, codegen_1.or)(...props.map((p) => (0, codegen_1._)`${key} === ${p}`)); + } else { + definedProp = codegen_1.nil; + } + if (patProps.length) { + definedProp = (0, codegen_1.or)(definedProp, ...patProps.map((p) => (0, codegen_1._)`${(0, code_1.usePattern)(cxt, p)}.test(${key})`)); + } + return (0, codegen_1.not)(definedProp); + } + function deleteAdditional(key) { + gen.code((0, codegen_1._)`delete ${data}[${key}]`); + } + function additionalPropertyCode(key) { + if (opts.removeAdditional === "all" || opts.removeAdditional && schema === false) { + deleteAdditional(key); + return; + } + if (schema === false) { + cxt.setParams({ additionalProperty: key }); + cxt.error(); + if (!allErrors) + gen.break(); + return; + } + if (typeof schema == "object" && !(0, util_1.alwaysValidSchema)(it, schema)) { + const valid = gen.name("valid"); + if (opts.removeAdditional === "failing") { + applyAdditionalSchema(key, valid, false); + gen.if((0, codegen_1.not)(valid), () => { + cxt.reset(); + deleteAdditional(key); + }); + } else { + applyAdditionalSchema(key, valid); + if (!allErrors) + gen.if((0, codegen_1.not)(valid), () => gen.break()); + } + } + } + function applyAdditionalSchema(key, valid, errors) { + const subschema = { + keyword: "additionalProperties", + dataProp: key, + dataPropType: util_1.Type.Str + }; + if (errors === false) { + Object.assign(subschema, { + compositeRule: true, + createErrors: false, + allErrors: false + }); + } + cxt.subschema(subschema, valid); + } + } + }; + exports2.default = def; + } +}); + +// node_modules/ajv/dist/vocabularies/applicator/properties.js +var require_properties = __commonJS({ + "node_modules/ajv/dist/vocabularies/applicator/properties.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { value: true }); + var validate_1 = require_validate(); + var code_1 = require_code2(); + var util_1 = require_util(); + var additionalProperties_1 = require_additionalProperties(); + var def = { + keyword: "properties", + type: "object", + schemaType: "object", + code(cxt) { + const { gen, schema, parentSchema, data, it } = cxt; + if (it.opts.removeAdditional === "all" && parentSchema.additionalProperties === void 0) { + additionalProperties_1.default.code(new validate_1.KeywordCxt(it, additionalProperties_1.default, "additionalProperties")); + } + const allProps = (0, code_1.allSchemaProperties)(schema); + for (const prop of allProps) { + it.definedProperties.add(prop); + } + if (it.opts.unevaluated && allProps.length && it.props !== true) { + it.props = util_1.mergeEvaluated.props(gen, (0, util_1.toHash)(allProps), it.props); + } + const properties = allProps.filter((p) => !(0, util_1.alwaysValidSchema)(it, schema[p])); + if (properties.length === 0) + return; + const valid = gen.name("valid"); + for (const prop of properties) { + if (hasDefault(prop)) { + applyPropertySchema(prop); + } else { + gen.if((0, code_1.propertyInData)(gen, data, prop, it.opts.ownProperties)); + applyPropertySchema(prop); + if (!it.allErrors) + gen.else().var(valid, true); + gen.endIf(); + } + cxt.it.definedProperties.add(prop); + cxt.ok(valid); + } + function hasDefault(prop) { + return it.opts.useDefaults && !it.compositeRule && schema[prop].default !== void 0; + } + function applyPropertySchema(prop) { + cxt.subschema({ + keyword: "properties", + schemaProp: prop, + dataProp: prop + }, valid); + } + } + }; + exports2.default = def; + } +}); + +// node_modules/ajv/dist/vocabularies/applicator/patternProperties.js +var require_patternProperties = __commonJS({ + "node_modules/ajv/dist/vocabularies/applicator/patternProperties.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { value: true }); + var code_1 = require_code2(); + var codegen_1 = require_codegen(); + var util_1 = require_util(); + var util_2 = require_util(); + var def = { + keyword: "patternProperties", + type: "object", + schemaType: "object", + code(cxt) { + const { gen, schema, data, parentSchema, it } = cxt; + const { opts } = it; + const patterns = (0, code_1.allSchemaProperties)(schema); + const alwaysValidPatterns = patterns.filter((p) => (0, util_1.alwaysValidSchema)(it, schema[p])); + if (patterns.length === 0 || alwaysValidPatterns.length === patterns.length && (!it.opts.unevaluated || it.props === true)) { + return; + } + const checkProperties = opts.strictSchema && !opts.allowMatchingProperties && parentSchema.properties; + const valid = gen.name("valid"); + if (it.props !== true && !(it.props instanceof codegen_1.Name)) { + it.props = (0, util_2.evaluatedPropsToName)(gen, it.props); + } + const { props } = it; + validatePatternProperties(); + function validatePatternProperties() { + for (const pat of patterns) { + if (checkProperties) + checkMatchingProperties(pat); + if (it.allErrors) { + validateProperties(pat); + } else { + gen.var(valid, true); + validateProperties(pat); + gen.if(valid); + } + } + } + function checkMatchingProperties(pat) { + for (const prop in checkProperties) { + if (new RegExp(pat).test(prop)) { + (0, util_1.checkStrictMode)(it, `property ${prop} matches pattern ${pat} (use allowMatchingProperties)`); + } + } + } + function validateProperties(pat) { + gen.forIn("key", data, (key) => { + gen.if((0, codegen_1._)`${(0, code_1.usePattern)(cxt, pat)}.test(${key})`, () => { + const alwaysValid = alwaysValidPatterns.includes(pat); + if (!alwaysValid) { + cxt.subschema({ + keyword: "patternProperties", + schemaProp: pat, + dataProp: key, + dataPropType: util_2.Type.Str + }, valid); + } + if (it.opts.unevaluated && props !== true) { + gen.assign((0, codegen_1._)`${props}[${key}]`, true); + } else if (!alwaysValid && !it.allErrors) { + gen.if((0, codegen_1.not)(valid), () => gen.break()); + } + }); + }); + } + } + }; + exports2.default = def; + } +}); + +// node_modules/ajv/dist/vocabularies/applicator/not.js +var require_not = __commonJS({ + "node_modules/ajv/dist/vocabularies/applicator/not.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { value: true }); + var util_1 = require_util(); + var def = { + keyword: "not", + schemaType: ["object", "boolean"], + trackErrors: true, + code(cxt) { + const { gen, schema, it } = cxt; + if ((0, util_1.alwaysValidSchema)(it, schema)) { + cxt.fail(); + return; + } + const valid = gen.name("valid"); + cxt.subschema({ + keyword: "not", + compositeRule: true, + createErrors: false, + allErrors: false + }, valid); + cxt.failResult(valid, () => cxt.reset(), () => cxt.error()); + }, + error: { message: "must NOT be valid" } + }; + exports2.default = def; + } +}); + +// node_modules/ajv/dist/vocabularies/applicator/anyOf.js +var require_anyOf = __commonJS({ + "node_modules/ajv/dist/vocabularies/applicator/anyOf.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { value: true }); + var code_1 = require_code2(); + var def = { + keyword: "anyOf", + schemaType: "array", + trackErrors: true, + code: code_1.validateUnion, + error: { message: "must match a schema in anyOf" } + }; + exports2.default = def; + } +}); + +// node_modules/ajv/dist/vocabularies/applicator/oneOf.js +var require_oneOf = __commonJS({ + "node_modules/ajv/dist/vocabularies/applicator/oneOf.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { value: true }); + var codegen_1 = require_codegen(); + var util_1 = require_util(); + var error2 = { + message: "must match exactly one schema in oneOf", + params: ({ params }) => (0, codegen_1._)`{passingSchemas: ${params.passing}}` + }; + var def = { + keyword: "oneOf", + schemaType: "array", + trackErrors: true, + error: error2, + code(cxt) { + const { gen, schema, parentSchema, it } = cxt; + if (!Array.isArray(schema)) + throw new Error("ajv implementation error"); + if (it.opts.discriminator && parentSchema.discriminator) + return; + const schArr = schema; + const valid = gen.let("valid", false); + const passing = gen.let("passing", null); + const schValid = gen.name("_valid"); + cxt.setParams({ passing }); + gen.block(validateOneOf); + cxt.result(valid, () => cxt.reset(), () => cxt.error(true)); + function validateOneOf() { + schArr.forEach((sch, i) => { + let schCxt; + if ((0, util_1.alwaysValidSchema)(it, sch)) { + gen.var(schValid, true); + } else { + schCxt = cxt.subschema({ + keyword: "oneOf", + schemaProp: i, + compositeRule: true + }, schValid); + } + if (i > 0) { + gen.if((0, codegen_1._)`${schValid} && ${valid}`).assign(valid, false).assign(passing, (0, codegen_1._)`[${passing}, ${i}]`).else(); + } + gen.if(schValid, () => { + gen.assign(valid, true); + gen.assign(passing, i); + if (schCxt) + cxt.mergeEvaluated(schCxt, codegen_1.Name); + }); + }); + } + } + }; + exports2.default = def; + } +}); + +// node_modules/ajv/dist/vocabularies/applicator/allOf.js +var require_allOf = __commonJS({ + "node_modules/ajv/dist/vocabularies/applicator/allOf.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { value: true }); + var util_1 = require_util(); + var def = { + keyword: "allOf", + schemaType: "array", + code(cxt) { + const { gen, schema, it } = cxt; + if (!Array.isArray(schema)) + throw new Error("ajv implementation error"); + const valid = gen.name("valid"); + schema.forEach((sch, i) => { + if ((0, util_1.alwaysValidSchema)(it, sch)) + return; + const schCxt = cxt.subschema({ keyword: "allOf", schemaProp: i }, valid); + cxt.ok(valid); + cxt.mergeEvaluated(schCxt); + }); + } + }; + exports2.default = def; + } +}); + +// node_modules/ajv/dist/vocabularies/applicator/if.js +var require_if = __commonJS({ + "node_modules/ajv/dist/vocabularies/applicator/if.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { value: true }); + var codegen_1 = require_codegen(); + var util_1 = require_util(); + var error2 = { + message: ({ params }) => (0, codegen_1.str)`must match "${params.ifClause}" schema`, + params: ({ params }) => (0, codegen_1._)`{failingKeyword: ${params.ifClause}}` + }; + var def = { + keyword: "if", + schemaType: ["object", "boolean"], + trackErrors: true, + error: error2, + code(cxt) { + const { gen, parentSchema, it } = cxt; + if (parentSchema.then === void 0 && parentSchema.else === void 0) { + (0, util_1.checkStrictMode)(it, '"if" without "then" and "else" is ignored'); + } + const hasThen = hasSchema(it, "then"); + const hasElse = hasSchema(it, "else"); + if (!hasThen && !hasElse) + return; + const valid = gen.let("valid", true); + const schValid = gen.name("_valid"); + validateIf(); + cxt.reset(); + if (hasThen && hasElse) { + const ifClause = gen.let("ifClause"); + cxt.setParams({ ifClause }); + gen.if(schValid, validateClause("then", ifClause), validateClause("else", ifClause)); + } else if (hasThen) { + gen.if(schValid, validateClause("then")); + } else { + gen.if((0, codegen_1.not)(schValid), validateClause("else")); + } + cxt.pass(valid, () => cxt.error(true)); + function validateIf() { + const schCxt = cxt.subschema({ + keyword: "if", + compositeRule: true, + createErrors: false, + allErrors: false + }, schValid); + cxt.mergeEvaluated(schCxt); + } + function validateClause(keyword, ifClause) { + return () => { + const schCxt = cxt.subschema({ keyword }, schValid); + gen.assign(valid, schValid); + cxt.mergeValidEvaluated(schCxt, valid); + if (ifClause) + gen.assign(ifClause, (0, codegen_1._)`${keyword}`); + else + cxt.setParams({ ifClause: keyword }); + }; + } + } + }; + function hasSchema(it, keyword) { + const schema = it.schema[keyword]; + return schema !== void 0 && !(0, util_1.alwaysValidSchema)(it, schema); + } + exports2.default = def; + } +}); + +// node_modules/ajv/dist/vocabularies/applicator/thenElse.js +var require_thenElse = __commonJS({ + "node_modules/ajv/dist/vocabularies/applicator/thenElse.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { value: true }); + var util_1 = require_util(); + var def = { + keyword: ["then", "else"], + schemaType: ["object", "boolean"], + code({ keyword, parentSchema, it }) { + if (parentSchema.if === void 0) + (0, util_1.checkStrictMode)(it, `"${keyword}" without "if" is ignored`); + } + }; + exports2.default = def; + } +}); + +// node_modules/ajv/dist/vocabularies/applicator/index.js +var require_applicator = __commonJS({ + "node_modules/ajv/dist/vocabularies/applicator/index.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { value: true }); + var additionalItems_1 = require_additionalItems(); + var prefixItems_1 = require_prefixItems(); + var items_1 = require_items(); + var items2020_1 = require_items2020(); + var contains_1 = require_contains(); + var dependencies_1 = require_dependencies(); + var propertyNames_1 = require_propertyNames(); + var additionalProperties_1 = require_additionalProperties(); + var properties_1 = require_properties(); + var patternProperties_1 = require_patternProperties(); + var not_1 = require_not(); + var anyOf_1 = require_anyOf(); + var oneOf_1 = require_oneOf(); + var allOf_1 = require_allOf(); + var if_1 = require_if(); + var thenElse_1 = require_thenElse(); + function getApplicator(draft2020 = false) { + const applicator = [ + // any + not_1.default, + anyOf_1.default, + oneOf_1.default, + allOf_1.default, + if_1.default, + thenElse_1.default, + // object + propertyNames_1.default, + additionalProperties_1.default, + dependencies_1.default, + properties_1.default, + patternProperties_1.default + ]; + if (draft2020) + applicator.push(prefixItems_1.default, items2020_1.default); + else + applicator.push(additionalItems_1.default, items_1.default); + applicator.push(contains_1.default); + return applicator; + } + exports2.default = getApplicator; + } +}); + +// node_modules/ajv/dist/vocabularies/format/format.js +var require_format2 = __commonJS({ + "node_modules/ajv/dist/vocabularies/format/format.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { value: true }); + var codegen_1 = require_codegen(); + var error2 = { + message: ({ schemaCode }) => (0, codegen_1.str)`must match format "${schemaCode}"`, + params: ({ schemaCode }) => (0, codegen_1._)`{format: ${schemaCode}}` + }; + var def = { + keyword: "format", + type: ["number", "string"], + schemaType: "string", + $data: true, + error: error2, + code(cxt, ruleType) { + const { gen, data, $data, schema, schemaCode, it } = cxt; + const { opts, errSchemaPath, schemaEnv, self: self2 } = it; + if (!opts.validateFormats) + return; + if ($data) + validate$DataFormat(); + else + validateFormat(); + function validate$DataFormat() { + const fmts = gen.scopeValue("formats", { + ref: self2.formats, + code: opts.code.formats + }); + const fDef = gen.const("fDef", (0, codegen_1._)`${fmts}[${schemaCode}]`); + const fType = gen.let("fType"); + const format = gen.let("format"); + gen.if((0, codegen_1._)`typeof ${fDef} == "object" && !(${fDef} instanceof RegExp)`, () => gen.assign(fType, (0, codegen_1._)`${fDef}.type || "string"`).assign(format, (0, codegen_1._)`${fDef}.validate`), () => gen.assign(fType, (0, codegen_1._)`"string"`).assign(format, fDef)); + cxt.fail$data((0, codegen_1.or)(unknownFmt(), invalidFmt())); + function unknownFmt() { + if (opts.strictSchema === false) + return codegen_1.nil; + return (0, codegen_1._)`${schemaCode} && !${format}`; + } + function invalidFmt() { + const callFormat = schemaEnv.$async ? (0, codegen_1._)`(${fDef}.async ? await ${format}(${data}) : ${format}(${data}))` : (0, codegen_1._)`${format}(${data})`; + const validData = (0, codegen_1._)`(typeof ${format} == "function" ? ${callFormat} : ${format}.test(${data}))`; + return (0, codegen_1._)`${format} && ${format} !== true && ${fType} === ${ruleType} && !${validData}`; + } + } + function validateFormat() { + const formatDef = self2.formats[schema]; + if (!formatDef) { + unknownFormat(); + return; + } + if (formatDef === true) + return; + const [fmtType, format, fmtRef] = getFormat(formatDef); + if (fmtType === ruleType) + cxt.pass(validCondition()); + function unknownFormat() { + if (opts.strictSchema === false) { + self2.logger.warn(unknownMsg()); + return; + } + throw new Error(unknownMsg()); + function unknownMsg() { + return `unknown format "${schema}" ignored in schema at path "${errSchemaPath}"`; + } + } + function getFormat(fmtDef) { + const code = fmtDef instanceof RegExp ? (0, codegen_1.regexpCode)(fmtDef) : opts.code.formats ? (0, codegen_1._)`${opts.code.formats}${(0, codegen_1.getProperty)(schema)}` : void 0; + const fmt = gen.scopeValue("formats", { key: schema, ref: fmtDef, code }); + if (typeof fmtDef == "object" && !(fmtDef instanceof RegExp)) { + return [fmtDef.type || "string", fmtDef.validate, (0, codegen_1._)`${fmt}.validate`]; + } + return ["string", fmtDef, fmt]; + } + function validCondition() { + if (typeof formatDef == "object" && !(formatDef instanceof RegExp) && formatDef.async) { + if (!schemaEnv.$async) + throw new Error("async format in sync schema"); + return (0, codegen_1._)`await ${fmtRef}(${data})`; + } + return typeof format == "function" ? (0, codegen_1._)`${fmtRef}(${data})` : (0, codegen_1._)`${fmtRef}.test(${data})`; + } + } + } + }; + exports2.default = def; + } +}); + +// node_modules/ajv/dist/vocabularies/format/index.js +var require_format3 = __commonJS({ + "node_modules/ajv/dist/vocabularies/format/index.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { value: true }); + var format_1 = require_format2(); + var format = [format_1.default]; + exports2.default = format; + } +}); + +// node_modules/ajv/dist/vocabularies/metadata.js +var require_metadata2 = __commonJS({ + "node_modules/ajv/dist/vocabularies/metadata.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { value: true }); + exports2.contentVocabulary = exports2.metadataVocabulary = void 0; + exports2.metadataVocabulary = [ + "title", + "description", + "default", + "deprecated", + "readOnly", + "writeOnly", + "examples" + ]; + exports2.contentVocabulary = [ + "contentMediaType", + "contentEncoding", + "contentSchema" + ]; + } +}); + +// node_modules/ajv/dist/vocabularies/draft7.js +var require_draft7 = __commonJS({ + "node_modules/ajv/dist/vocabularies/draft7.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { value: true }); + var core_1 = require_core2(); + var validation_1 = require_validation(); + var applicator_1 = require_applicator(); + var format_1 = require_format3(); + var metadata_1 = require_metadata2(); + var draft7Vocabularies = [ + core_1.default, + validation_1.default, + (0, applicator_1.default)(), + format_1.default, + metadata_1.metadataVocabulary, + metadata_1.contentVocabulary + ]; + exports2.default = draft7Vocabularies; + } +}); + +// node_modules/ajv/dist/vocabularies/discriminator/types.js +var require_types = __commonJS({ + "node_modules/ajv/dist/vocabularies/discriminator/types.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { value: true }); + exports2.DiscrError = void 0; + var DiscrError; + (function(DiscrError2) { + DiscrError2["Tag"] = "tag"; + DiscrError2["Mapping"] = "mapping"; + })(DiscrError || (exports2.DiscrError = DiscrError = {})); + } +}); + +// node_modules/ajv/dist/vocabularies/discriminator/index.js +var require_discriminator = __commonJS({ + "node_modules/ajv/dist/vocabularies/discriminator/index.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { value: true }); + var codegen_1 = require_codegen(); + var types_1 = require_types(); + var compile_1 = require_compile(); + var ref_error_1 = require_ref_error(); + var util_1 = require_util(); + var error2 = { + message: ({ params: { discrError, tagName } }) => discrError === types_1.DiscrError.Tag ? `tag "${tagName}" must be string` : `value of tag "${tagName}" must be in oneOf`, + params: ({ params: { discrError, tag, tagName } }) => (0, codegen_1._)`{error: ${discrError}, tag: ${tagName}, tagValue: ${tag}}` + }; + var def = { + keyword: "discriminator", + type: "object", + schemaType: "object", + error: error2, + code(cxt) { + const { gen, data, schema, parentSchema, it } = cxt; + const { oneOf } = parentSchema; + if (!it.opts.discriminator) { + throw new Error("discriminator: requires discriminator option"); + } + const tagName = schema.propertyName; + if (typeof tagName != "string") + throw new Error("discriminator: requires propertyName"); + if (schema.mapping) + throw new Error("discriminator: mapping is not supported"); + if (!oneOf) + throw new Error("discriminator: requires oneOf keyword"); + const valid = gen.let("valid", false); + const tag = gen.const("tag", (0, codegen_1._)`${data}${(0, codegen_1.getProperty)(tagName)}`); + gen.if((0, codegen_1._)`typeof ${tag} == "string"`, () => validateMapping(), () => cxt.error(false, { discrError: types_1.DiscrError.Tag, tag, tagName })); + cxt.ok(valid); + function validateMapping() { + const mapping = getMapping(); + gen.if(false); + for (const tagValue in mapping) { + gen.elseIf((0, codegen_1._)`${tag} === ${tagValue}`); + gen.assign(valid, applyTagSchema(mapping[tagValue])); + } + gen.else(); + cxt.error(false, { discrError: types_1.DiscrError.Mapping, tag, tagName }); + gen.endIf(); + } + function applyTagSchema(schemaProp) { + const _valid = gen.name("valid"); + const schCxt = cxt.subschema({ keyword: "oneOf", schemaProp }, _valid); + cxt.mergeEvaluated(schCxt, codegen_1.Name); + return _valid; + } + function getMapping() { + var _a; + const oneOfMapping = {}; + const topRequired = hasRequired(parentSchema); + let tagRequired = true; + for (let i = 0; i < oneOf.length; i++) { + let sch = oneOf[i]; + if ((sch === null || sch === void 0 ? void 0 : sch.$ref) && !(0, util_1.schemaHasRulesButRef)(sch, it.self.RULES)) { + const ref = sch.$ref; + sch = compile_1.resolveRef.call(it.self, it.schemaEnv.root, it.baseId, ref); + if (sch instanceof compile_1.SchemaEnv) + sch = sch.schema; + if (sch === void 0) + throw new ref_error_1.default(it.opts.uriResolver, it.baseId, ref); + } + const propSch = (_a = sch === null || sch === void 0 ? void 0 : sch.properties) === null || _a === void 0 ? void 0 : _a[tagName]; + if (typeof propSch != "object") { + throw new Error(`discriminator: oneOf subschemas (or referenced schemas) must have "properties/${tagName}"`); + } + tagRequired = tagRequired && (topRequired || hasRequired(sch)); + addMappings(propSch, i); + } + if (!tagRequired) + throw new Error(`discriminator: "${tagName}" must be required`); + return oneOfMapping; + function hasRequired({ required: required2 }) { + return Array.isArray(required2) && required2.includes(tagName); + } + function addMappings(sch, i) { + if (sch.const) { + addMapping(sch.const, i); + } else if (sch.enum) { + for (const tagValue of sch.enum) { + addMapping(tagValue, i); + } + } else { + throw new Error(`discriminator: "properties/${tagName}" must have "const" or "enum"`); + } + } + function addMapping(tagValue, i) { + if (typeof tagValue != "string" || tagValue in oneOfMapping) { + throw new Error(`discriminator: "${tagName}" values must be unique strings`); + } + oneOfMapping[tagValue] = i; + } + } + } + }; + exports2.default = def; + } +}); + +// node_modules/ajv/dist/refs/json-schema-draft-07.json +var require_json_schema_draft_07 = __commonJS({ + "node_modules/ajv/dist/refs/json-schema-draft-07.json"(exports2, module2) { + module2.exports = { + $schema: "http://json-schema.org/draft-07/schema#", + $id: "http://json-schema.org/draft-07/schema#", + title: "Core schema meta-schema", + definitions: { + schemaArray: { + type: "array", + minItems: 1, + items: { $ref: "#" } + }, + nonNegativeInteger: { + type: "integer", + minimum: 0 + }, + nonNegativeIntegerDefault0: { + allOf: [{ $ref: "#/definitions/nonNegativeInteger" }, { default: 0 }] + }, + simpleTypes: { + enum: ["array", "boolean", "integer", "null", "number", "object", "string"] + }, + stringArray: { + type: "array", + items: { type: "string" }, + uniqueItems: true, + default: [] + } + }, + type: ["object", "boolean"], + properties: { + $id: { + type: "string", + format: "uri-reference" + }, + $schema: { + type: "string", + format: "uri" + }, + $ref: { + type: "string", + format: "uri-reference" + }, + $comment: { + type: "string" + }, + title: { + type: "string" + }, + description: { + type: "string" + }, + default: true, + readOnly: { + type: "boolean", + default: false + }, + examples: { + type: "array", + items: true + }, + multipleOf: { + type: "number", + exclusiveMinimum: 0 + }, + maximum: { + type: "number" + }, + exclusiveMaximum: { + type: "number" + }, + minimum: { + type: "number" + }, + exclusiveMinimum: { + type: "number" + }, + maxLength: { $ref: "#/definitions/nonNegativeInteger" }, + minLength: { $ref: "#/definitions/nonNegativeIntegerDefault0" }, + pattern: { + type: "string", + format: "regex" + }, + additionalItems: { $ref: "#" }, + items: { + anyOf: [{ $ref: "#" }, { $ref: "#/definitions/schemaArray" }], + default: true + }, + maxItems: { $ref: "#/definitions/nonNegativeInteger" }, + minItems: { $ref: "#/definitions/nonNegativeIntegerDefault0" }, + uniqueItems: { + type: "boolean", + default: false + }, + contains: { $ref: "#" }, + maxProperties: { $ref: "#/definitions/nonNegativeInteger" }, + minProperties: { $ref: "#/definitions/nonNegativeIntegerDefault0" }, + required: { $ref: "#/definitions/stringArray" }, + additionalProperties: { $ref: "#" }, + definitions: { + type: "object", + additionalProperties: { $ref: "#" }, + default: {} + }, + properties: { + type: "object", + additionalProperties: { $ref: "#" }, + default: {} + }, + patternProperties: { + type: "object", + additionalProperties: { $ref: "#" }, + propertyNames: { format: "regex" }, + default: {} + }, + dependencies: { + type: "object", + additionalProperties: { + anyOf: [{ $ref: "#" }, { $ref: "#/definitions/stringArray" }] + } + }, + propertyNames: { $ref: "#" }, + const: true, + enum: { + type: "array", + items: true, + minItems: 1, + uniqueItems: true + }, + type: { + anyOf: [ + { $ref: "#/definitions/simpleTypes" }, + { + type: "array", + items: { $ref: "#/definitions/simpleTypes" }, + minItems: 1, + uniqueItems: true + } + ] + }, + format: { type: "string" }, + contentMediaType: { type: "string" }, + contentEncoding: { type: "string" }, + if: { $ref: "#" }, + then: { $ref: "#" }, + else: { $ref: "#" }, + allOf: { $ref: "#/definitions/schemaArray" }, + anyOf: { $ref: "#/definitions/schemaArray" }, + oneOf: { $ref: "#/definitions/schemaArray" }, + not: { $ref: "#" } + }, + default: true + }; + } +}); + +// node_modules/ajv/dist/ajv.js +var require_ajv = __commonJS({ + "node_modules/ajv/dist/ajv.js"(exports2, module2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { value: true }); + exports2.MissingRefError = exports2.ValidationError = exports2.CodeGen = exports2.Name = exports2.nil = exports2.stringify = exports2.str = exports2._ = exports2.KeywordCxt = exports2.Ajv = void 0; + var core_1 = require_core(); + var draft7_1 = require_draft7(); + var discriminator_1 = require_discriminator(); + var draft7MetaSchema = require_json_schema_draft_07(); + var META_SUPPORT_DATA = ["/properties"]; + var META_SCHEMA_ID = "http://json-schema.org/draft-07/schema"; + var Ajv2 = class extends core_1.default { + _addVocabularies() { + super._addVocabularies(); + draft7_1.default.forEach((v) => this.addVocabulary(v)); + if (this.opts.discriminator) + this.addKeyword(discriminator_1.default); + } + _addDefaultMetaSchema() { + super._addDefaultMetaSchema(); + if (!this.opts.meta) + return; + const metaSchema = this.opts.$data ? this.$dataMetaSchema(draft7MetaSchema, META_SUPPORT_DATA) : draft7MetaSchema; + this.addMetaSchema(metaSchema, META_SCHEMA_ID, false); + this.refs["http://json-schema.org/schema"] = META_SCHEMA_ID; + } + defaultMeta() { + return this.opts.defaultMeta = super.defaultMeta() || (this.getSchema(META_SCHEMA_ID) ? META_SCHEMA_ID : void 0); + } + }; + exports2.Ajv = Ajv2; + module2.exports = exports2 = Ajv2; + module2.exports.Ajv = Ajv2; + Object.defineProperty(exports2, "__esModule", { value: true }); + exports2.default = Ajv2; + var validate_1 = require_validate(); + Object.defineProperty(exports2, "KeywordCxt", { enumerable: true, get: function() { + return validate_1.KeywordCxt; + } }); + var codegen_1 = require_codegen(); + Object.defineProperty(exports2, "_", { enumerable: true, get: function() { + return codegen_1._; + } }); + Object.defineProperty(exports2, "str", { enumerable: true, get: function() { + return codegen_1.str; + } }); + Object.defineProperty(exports2, "stringify", { enumerable: true, get: function() { + return codegen_1.stringify; + } }); + Object.defineProperty(exports2, "nil", { enumerable: true, get: function() { + return codegen_1.nil; + } }); + Object.defineProperty(exports2, "Name", { enumerable: true, get: function() { + return codegen_1.Name; + } }); + Object.defineProperty(exports2, "CodeGen", { enumerable: true, get: function() { + return codegen_1.CodeGen; + } }); + var validation_error_1 = require_validation_error(); + Object.defineProperty(exports2, "ValidationError", { enumerable: true, get: function() { + return validation_error_1.default; + } }); + var ref_error_1 = require_ref_error(); + Object.defineProperty(exports2, "MissingRefError", { enumerable: true, get: function() { + return ref_error_1.default; + } }); + } +}); + +// node_modules/ajv-formats/dist/formats.js +var require_formats = __commonJS({ + "node_modules/ajv-formats/dist/formats.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { value: true }); + exports2.formatNames = exports2.fastFormats = exports2.fullFormats = void 0; + function fmtDef(validate2, compare) { + return { validate: validate2, compare }; + } + exports2.fullFormats = { + // date: http://tools.ietf.org/html/rfc3339#section-5.6 + date: fmtDef(date4, compareDate), + // date-time: http://tools.ietf.org/html/rfc3339#section-5.6 + time: fmtDef(getTime(true), compareTime), + "date-time": fmtDef(getDateTime(true), compareDateTime), + "iso-time": fmtDef(getTime(), compareIsoTime), + "iso-date-time": fmtDef(getDateTime(), compareIsoDateTime), + // duration: https://tools.ietf.org/html/rfc3339#appendix-A + duration: /^P(?!$)((\d+Y)?(\d+M)?(\d+D)?(T(?=\d)(\d+H)?(\d+M)?(\d+S)?)?|(\d+W)?)$/, + uri, + "uri-reference": /^(?:[a-z][a-z0-9+\-.]*:)?(?:\/?\/(?:(?:[a-z0-9\-._~!$&'()*+,;=:]|%[0-9a-f]{2})*@)?(?:\[(?:(?:(?:(?:[0-9a-f]{1,4}:){6}|::(?:[0-9a-f]{1,4}:){5}|(?:[0-9a-f]{1,4})?::(?:[0-9a-f]{1,4}:){4}|(?:(?:[0-9a-f]{1,4}:){0,1}[0-9a-f]{1,4})?::(?:[0-9a-f]{1,4}:){3}|(?:(?:[0-9a-f]{1,4}:){0,2}[0-9a-f]{1,4})?::(?:[0-9a-f]{1,4}:){2}|(?:(?:[0-9a-f]{1,4}:){0,3}[0-9a-f]{1,4})?::[0-9a-f]{1,4}:|(?:(?:[0-9a-f]{1,4}:){0,4}[0-9a-f]{1,4})?::)(?:[0-9a-f]{1,4}:[0-9a-f]{1,4}|(?:(?:25[0-5]|2[0-4]\d|[01]?\d\d?)\.){3}(?:25[0-5]|2[0-4]\d|[01]?\d\d?))|(?:(?:[0-9a-f]{1,4}:){0,5}[0-9a-f]{1,4})?::[0-9a-f]{1,4}|(?:(?:[0-9a-f]{1,4}:){0,6}[0-9a-f]{1,4})?::)|[Vv][0-9a-f]+\.[a-z0-9\-._~!$&'()*+,;=:]+)\]|(?:(?:25[0-5]|2[0-4]\d|[01]?\d\d?)\.){3}(?:25[0-5]|2[0-4]\d|[01]?\d\d?)|(?:[a-z0-9\-._~!$&'"()*+,;=]|%[0-9a-f]{2})*)(?::\d*)?(?:\/(?:[a-z0-9\-._~!$&'"()*+,;=:@]|%[0-9a-f]{2})*)*|\/(?:(?:[a-z0-9\-._~!$&'"()*+,;=:@]|%[0-9a-f]{2})+(?:\/(?:[a-z0-9\-._~!$&'"()*+,;=:@]|%[0-9a-f]{2})*)*)?|(?:[a-z0-9\-._~!$&'"()*+,;=:@]|%[0-9a-f]{2})+(?:\/(?:[a-z0-9\-._~!$&'"()*+,;=:@]|%[0-9a-f]{2})*)*)?(?:\?(?:[a-z0-9\-._~!$&'"()*+,;=:@/?]|%[0-9a-f]{2})*)?(?:#(?:[a-z0-9\-._~!$&'"()*+,;=:@/?]|%[0-9a-f]{2})*)?$/i, + // uri-template: https://tools.ietf.org/html/rfc6570 + "uri-template": /^(?:(?:[^\x00-\x20"'<>%\\^`{|}]|%[0-9a-f]{2})|\{[+#./;?&=,!@|]?(?:[a-z0-9_]|%[0-9a-f]{2})+(?::[1-9][0-9]{0,3}|\*)?(?:,(?:[a-z0-9_]|%[0-9a-f]{2})+(?::[1-9][0-9]{0,3}|\*)?)*\})*$/i, + // For the source: https://gist.github.com/dperini/729294 + // For test cases: https://mathiasbynens.be/demo/url-regex + url: /^(?:https?|ftp):\/\/(?:\S+(?::\S*)?@)?(?:(?!(?:10|127)(?:\.\d{1,3}){3})(?!(?:169\.254|192\.168)(?:\.\d{1,3}){2})(?!172\.(?:1[6-9]|2\d|3[0-1])(?:\.\d{1,3}){2})(?:[1-9]\d?|1\d\d|2[01]\d|22[0-3])(?:\.(?:1?\d{1,2}|2[0-4]\d|25[0-5])){2}(?:\.(?:[1-9]\d?|1\d\d|2[0-4]\d|25[0-4]))|(?:(?:[a-z0-9\u{00a1}-\u{ffff}]+-)*[a-z0-9\u{00a1}-\u{ffff}]+)(?:\.(?:[a-z0-9\u{00a1}-\u{ffff}]+-)*[a-z0-9\u{00a1}-\u{ffff}]+)*(?:\.(?:[a-z\u{00a1}-\u{ffff}]{2,})))(?::\d{2,5})?(?:\/[^\s]*)?$/iu, + email: /^[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?$/i, + hostname: /^(?=.{1,253}\.?$)[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?(?:\.[a-z0-9](?:[-0-9a-z]{0,61}[0-9a-z])?)*\.?$/i, + // optimized https://www.safaribooksonline.com/library/view/regular-expressions-cookbook/9780596802837/ch07s16.html + ipv4: /^(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)\.){3}(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)$/, + ipv6: /^((([0-9a-f]{1,4}:){7}([0-9a-f]{1,4}|:))|(([0-9a-f]{1,4}:){6}(:[0-9a-f]{1,4}|((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3})|:))|(([0-9a-f]{1,4}:){5}(((:[0-9a-f]{1,4}){1,2})|:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3})|:))|(([0-9a-f]{1,4}:){4}(((:[0-9a-f]{1,4}){1,3})|((:[0-9a-f]{1,4})?:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(([0-9a-f]{1,4}:){3}(((:[0-9a-f]{1,4}){1,4})|((:[0-9a-f]{1,4}){0,2}:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(([0-9a-f]{1,4}:){2}(((:[0-9a-f]{1,4}){1,5})|((:[0-9a-f]{1,4}){0,3}:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(([0-9a-f]{1,4}:){1}(((:[0-9a-f]{1,4}){1,6})|((:[0-9a-f]{1,4}){0,4}:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(:(((:[0-9a-f]{1,4}){1,7})|((:[0-9a-f]{1,4}){0,5}:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:)))$/i, + regex, + // uuid: http://tools.ietf.org/html/rfc4122 + uuid: /^(?:urn:uuid:)?[0-9a-f]{8}-(?:[0-9a-f]{4}-){3}[0-9a-f]{12}$/i, + // JSON-pointer: https://tools.ietf.org/html/rfc6901 + // uri fragment: https://tools.ietf.org/html/rfc3986#appendix-A + "json-pointer": /^(?:\/(?:[^~/]|~0|~1)*)*$/, + "json-pointer-uri-fragment": /^#(?:\/(?:[a-z0-9_\-.!$&'()*+,;:=@]|%[0-9a-f]{2}|~0|~1)*)*$/i, + // relative JSON-pointer: http://tools.ietf.org/html/draft-luff-relative-json-pointer-00 + "relative-json-pointer": /^(?:0|[1-9][0-9]*)(?:#|(?:\/(?:[^~/]|~0|~1)*)*)$/, + // the following formats are used by the openapi specification: https://spec.openapis.org/oas/v3.0.0#data-types + // byte: https://github.com/miguelmota/is-base64 + byte, + // signed 32 bit integer + int32: { type: "number", validate: validateInt32 }, + // signed 64 bit integer + int64: { type: "number", validate: validateInt64 }, + // C-type float + float: { type: "number", validate: validateNumber }, + // C-type double + double: { type: "number", validate: validateNumber }, + // hint to the UI to hide input strings + password: true, + // unchecked string payload + binary: true + }; + exports2.fastFormats = { + ...exports2.fullFormats, + date: fmtDef(/^\d\d\d\d-[0-1]\d-[0-3]\d$/, compareDate), + time: fmtDef(/^(?:[0-2]\d:[0-5]\d:[0-5]\d|23:59:60)(?:\.\d+)?(?:z|[+-]\d\d(?::?\d\d)?)$/i, compareTime), + "date-time": fmtDef(/^\d\d\d\d-[0-1]\d-[0-3]\dt(?:[0-2]\d:[0-5]\d:[0-5]\d|23:59:60)(?:\.\d+)?(?:z|[+-]\d\d(?::?\d\d)?)$/i, compareDateTime), + "iso-time": fmtDef(/^(?:[0-2]\d:[0-5]\d:[0-5]\d|23:59:60)(?:\.\d+)?(?:z|[+-]\d\d(?::?\d\d)?)?$/i, compareIsoTime), + "iso-date-time": fmtDef(/^\d\d\d\d-[0-1]\d-[0-3]\d[t\s](?:[0-2]\d:[0-5]\d:[0-5]\d|23:59:60)(?:\.\d+)?(?:z|[+-]\d\d(?::?\d\d)?)?$/i, compareIsoDateTime), + // uri: https://github.com/mafintosh/is-my-json-valid/blob/master/formats.js + uri: /^(?:[a-z][a-z0-9+\-.]*:)(?:\/?\/)?[^\s]*$/i, + "uri-reference": /^(?:(?:[a-z][a-z0-9+\-.]*:)?\/?\/)?(?:[^\\\s#][^\s#]*)?(?:#[^\\\s]*)?$/i, + // email (sources from jsen validator): + // http://stackoverflow.com/questions/201323/using-a-regular-expression-to-validate-an-email-address#answer-8829363 + // http://www.w3.org/TR/html5/forms.html#valid-e-mail-address (search for 'wilful violation') + email: /^[a-z0-9.!#$%&'*+/=?^_`{|}~-]+@[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?(?:\.[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?)*$/i + }; + exports2.formatNames = Object.keys(exports2.fullFormats); + function isLeapYear(year) { + return year % 4 === 0 && (year % 100 !== 0 || year % 400 === 0); + } + var DATE = /^(\d\d\d\d)-(\d\d)-(\d\d)$/; + var DAYS = [0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]; + function date4(str) { + const matches = DATE.exec(str); + if (!matches) + return false; + const year = +matches[1]; + const month = +matches[2]; + const day = +matches[3]; + return month >= 1 && month <= 12 && day >= 1 && day <= (month === 2 && isLeapYear(year) ? 29 : DAYS[month]); + } + function compareDate(d1, d2) { + if (!(d1 && d2)) + return void 0; + if (d1 > d2) + return 1; + if (d1 < d2) + return -1; + return 0; + } + var TIME = /^(\d\d):(\d\d):(\d\d(?:\.\d+)?)(z|([+-])(\d\d)(?::?(\d\d))?)?$/i; + function getTime(strictTimeZone) { + return function time3(str) { + const matches = TIME.exec(str); + if (!matches) + return false; + const hr = +matches[1]; + const min = +matches[2]; + const sec = +matches[3]; + const tz = matches[4]; + const tzSign = matches[5] === "-" ? -1 : 1; + const tzH = +(matches[6] || 0); + const tzM = +(matches[7] || 0); + if (tzH > 23 || tzM > 59 || strictTimeZone && !tz) + return false; + if (hr <= 23 && min <= 59 && sec < 60) + return true; + const utcMin = min - tzM * tzSign; + const utcHr = hr - tzH * tzSign - (utcMin < 0 ? 1 : 0); + return (utcHr === 23 || utcHr === -1) && (utcMin === 59 || utcMin === -1) && sec < 61; + }; + } + function compareTime(s1, s2) { + if (!(s1 && s2)) + return void 0; + const t1 = (/* @__PURE__ */ new Date("2020-01-01T" + s1)).valueOf(); + const t2 = (/* @__PURE__ */ new Date("2020-01-01T" + s2)).valueOf(); + if (!(t1 && t2)) + return void 0; + return t1 - t2; + } + function compareIsoTime(t1, t2) { + if (!(t1 && t2)) + return void 0; + const a1 = TIME.exec(t1); + const a2 = TIME.exec(t2); + if (!(a1 && a2)) + return void 0; + t1 = a1[1] + a1[2] + a1[3]; + t2 = a2[1] + a2[2] + a2[3]; + if (t1 > t2) + return 1; + if (t1 < t2) + return -1; + return 0; + } + var DATE_TIME_SEPARATOR = /t|\s/i; + function getDateTime(strictTimeZone) { + const time3 = getTime(strictTimeZone); + return function date_time(str) { + const dateTime = str.split(DATE_TIME_SEPARATOR); + return dateTime.length === 2 && date4(dateTime[0]) && time3(dateTime[1]); + }; + } + function compareDateTime(dt1, dt2) { + if (!(dt1 && dt2)) + return void 0; + const d1 = new Date(dt1).valueOf(); + const d2 = new Date(dt2).valueOf(); + if (!(d1 && d2)) + return void 0; + return d1 - d2; + } + function compareIsoDateTime(dt1, dt2) { + if (!(dt1 && dt2)) + return void 0; + const [d1, t1] = dt1.split(DATE_TIME_SEPARATOR); + const [d2, t2] = dt2.split(DATE_TIME_SEPARATOR); + const res = compareDate(d1, d2); + if (res === void 0) + return void 0; + return res || compareTime(t1, t2); + } + var NOT_URI_FRAGMENT = /\/|:/; + var URI = /^(?:[a-z][a-z0-9+\-.]*:)(?:\/?\/(?:(?:[a-z0-9\-._~!$&'()*+,;=:]|%[0-9a-f]{2})*@)?(?:\[(?:(?:(?:(?:[0-9a-f]{1,4}:){6}|::(?:[0-9a-f]{1,4}:){5}|(?:[0-9a-f]{1,4})?::(?:[0-9a-f]{1,4}:){4}|(?:(?:[0-9a-f]{1,4}:){0,1}[0-9a-f]{1,4})?::(?:[0-9a-f]{1,4}:){3}|(?:(?:[0-9a-f]{1,4}:){0,2}[0-9a-f]{1,4})?::(?:[0-9a-f]{1,4}:){2}|(?:(?:[0-9a-f]{1,4}:){0,3}[0-9a-f]{1,4})?::[0-9a-f]{1,4}:|(?:(?:[0-9a-f]{1,4}:){0,4}[0-9a-f]{1,4})?::)(?:[0-9a-f]{1,4}:[0-9a-f]{1,4}|(?:(?:25[0-5]|2[0-4]\d|[01]?\d\d?)\.){3}(?:25[0-5]|2[0-4]\d|[01]?\d\d?))|(?:(?:[0-9a-f]{1,4}:){0,5}[0-9a-f]{1,4})?::[0-9a-f]{1,4}|(?:(?:[0-9a-f]{1,4}:){0,6}[0-9a-f]{1,4})?::)|[Vv][0-9a-f]+\.[a-z0-9\-._~!$&'()*+,;=:]+)\]|(?:(?:25[0-5]|2[0-4]\d|[01]?\d\d?)\.){3}(?:25[0-5]|2[0-4]\d|[01]?\d\d?)|(?:[a-z0-9\-._~!$&'()*+,;=]|%[0-9a-f]{2})*)(?::\d*)?(?:\/(?:[a-z0-9\-._~!$&'()*+,;=:@]|%[0-9a-f]{2})*)*|\/(?:(?:[a-z0-9\-._~!$&'()*+,;=:@]|%[0-9a-f]{2})+(?:\/(?:[a-z0-9\-._~!$&'()*+,;=:@]|%[0-9a-f]{2})*)*)?|(?:[a-z0-9\-._~!$&'()*+,;=:@]|%[0-9a-f]{2})+(?:\/(?:[a-z0-9\-._~!$&'()*+,;=:@]|%[0-9a-f]{2})*)*)(?:\?(?:[a-z0-9\-._~!$&'()*+,;=:@/?]|%[0-9a-f]{2})*)?(?:#(?:[a-z0-9\-._~!$&'()*+,;=:@/?]|%[0-9a-f]{2})*)?$/i; + function uri(str) { + return NOT_URI_FRAGMENT.test(str) && URI.test(str); + } + var BYTE = /^(?:[A-Za-z0-9+/]{4})*(?:[A-Za-z0-9+/]{2}==|[A-Za-z0-9+/]{3}=)?$/gm; + function byte(str) { + BYTE.lastIndex = 0; + return BYTE.test(str); + } + var MIN_INT32 = -(2 ** 31); + var MAX_INT32 = 2 ** 31 - 1; + function validateInt32(value) { + return Number.isInteger(value) && value <= MAX_INT32 && value >= MIN_INT32; + } + function validateInt64(value) { + return Number.isInteger(value); + } + function validateNumber() { + return true; + } + var Z_ANCHOR = /[^\\]\\Z/; + function regex(str) { + if (Z_ANCHOR.test(str)) + return false; + try { + new RegExp(str); + return true; + } catch (e) { + return false; + } + } + } +}); + +// node_modules/ajv-formats/dist/limit.js +var require_limit = __commonJS({ + "node_modules/ajv-formats/dist/limit.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { value: true }); + exports2.formatLimitDefinition = void 0; + var ajv_1 = require_ajv(); + var codegen_1 = require_codegen(); + var ops = codegen_1.operators; + var KWDs = { + formatMaximum: { okStr: "<=", ok: ops.LTE, fail: ops.GT }, + formatMinimum: { okStr: ">=", ok: ops.GTE, fail: ops.LT }, + formatExclusiveMaximum: { okStr: "<", ok: ops.LT, fail: ops.GTE }, + formatExclusiveMinimum: { okStr: ">", ok: ops.GT, fail: ops.LTE } + }; + var error2 = { + message: ({ keyword, schemaCode }) => (0, codegen_1.str)`should be ${KWDs[keyword].okStr} ${schemaCode}`, + params: ({ keyword, schemaCode }) => (0, codegen_1._)`{comparison: ${KWDs[keyword].okStr}, limit: ${schemaCode}}` + }; + exports2.formatLimitDefinition = { + keyword: Object.keys(KWDs), + type: "string", + schemaType: "string", + $data: true, + error: error2, + code(cxt) { + const { gen, data, schemaCode, keyword, it } = cxt; + const { opts, self: self2 } = it; + if (!opts.validateFormats) + return; + const fCxt = new ajv_1.KeywordCxt(it, self2.RULES.all.format.definition, "format"); + if (fCxt.$data) + validate$DataFormat(); + else + validateFormat(); + function validate$DataFormat() { + const fmts = gen.scopeValue("formats", { + ref: self2.formats, + code: opts.code.formats + }); + const fmt = gen.const("fmt", (0, codegen_1._)`${fmts}[${fCxt.schemaCode}]`); + cxt.fail$data((0, codegen_1.or)((0, codegen_1._)`typeof ${fmt} != "object"`, (0, codegen_1._)`${fmt} instanceof RegExp`, (0, codegen_1._)`typeof ${fmt}.compare != "function"`, compareCode(fmt))); + } + function validateFormat() { + const format = fCxt.schema; + const fmtDef = self2.formats[format]; + if (!fmtDef || fmtDef === true) + return; + if (typeof fmtDef != "object" || fmtDef instanceof RegExp || typeof fmtDef.compare != "function") { + throw new Error(`"${keyword}": format "${format}" does not define "compare" function`); + } + const fmt = gen.scopeValue("formats", { + key: format, + ref: fmtDef, + code: opts.code.formats ? (0, codegen_1._)`${opts.code.formats}${(0, codegen_1.getProperty)(format)}` : void 0 + }); + cxt.fail$data(compareCode(fmt)); + } + function compareCode(fmt) { + return (0, codegen_1._)`${fmt}.compare(${data}, ${schemaCode}) ${KWDs[keyword].fail} 0`; + } + }, + dependencies: ["format"] + }; + var formatLimitPlugin = (ajv) => { + ajv.addKeyword(exports2.formatLimitDefinition); + return ajv; + }; + exports2.default = formatLimitPlugin; + } +}); + +// node_modules/ajv-formats/dist/index.js +var require_dist4 = __commonJS({ + "node_modules/ajv-formats/dist/index.js"(exports2, module2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { value: true }); + var formats_1 = require_formats(); + var limit_1 = require_limit(); + var codegen_1 = require_codegen(); + var fullName = new codegen_1.Name("fullFormats"); + var fastName = new codegen_1.Name("fastFormats"); + var formatsPlugin = (ajv, opts = { keywords: true }) => { + if (Array.isArray(opts)) { + addFormats(ajv, opts, formats_1.fullFormats, fullName); + return ajv; + } + const [formats, exportName] = opts.mode === "fast" ? [formats_1.fastFormats, fastName] : [formats_1.fullFormats, fullName]; + const list = opts.formats || formats_1.formatNames; + addFormats(ajv, list, formats, exportName); + if (opts.keywords) + (0, limit_1.default)(ajv); + return ajv; + }; + formatsPlugin.get = (name5, mode = "full") => { + const formats = mode === "fast" ? formats_1.fastFormats : formats_1.fullFormats; + const f = formats[name5]; + if (!f) + throw new Error(`Unknown format "${name5}"`); + return f; + }; + function addFormats(ajv, list, fs10, exportName) { + var _a; + var _b; + (_a = (_b = ajv.opts.code).formats) !== null && _a !== void 0 ? _a : _b.formats = (0, codegen_1._)`require("ajv-formats/dist/formats").${exportName}`; + for (const f of list) + ajv.addFormat(f, fs10[f]); + } + module2.exports = exports2 = formatsPlugin; + Object.defineProperty(exports2, "__esModule", { value: true }); + exports2.default = formatsPlugin; + } +}); + +// node_modules/depd/index.js +var require_depd = __commonJS({ + "node_modules/depd/index.js"(exports2, module2) { + var relative = require("path").relative; + module2.exports = depd; + var basePath = process.cwd(); + function containsNamespace(str, namespace) { + var vals = str.split(/[ ,]+/); + var ns = String(namespace).toLowerCase(); + for (var i = 0; i < vals.length; i++) { + var val = vals[i]; + if (val && (val === "*" || val.toLowerCase() === ns)) { + return true; + } + } + return false; + } + function convertDataDescriptorToAccessor(obj, prop, message) { + var descriptor = Object.getOwnPropertyDescriptor(obj, prop); + var value = descriptor.value; + descriptor.get = function getter() { + return value; + }; + if (descriptor.writable) { + descriptor.set = function setter(val) { + return value = val; + }; + } + delete descriptor.value; + delete descriptor.writable; + Object.defineProperty(obj, prop, descriptor); + return descriptor; + } + function createArgumentsString(arity) { + var str = ""; + for (var i = 0; i < arity; i++) { + str += ", arg" + i; + } + return str.substr(2); + } + function createStackString(stack) { + var str = this.name + ": " + this.namespace; + if (this.message) { + str += " deprecated " + this.message; + } + for (var i = 0; i < stack.length; i++) { + str += "\n at " + stack[i].toString(); + } + return str; + } + function depd(namespace) { + if (!namespace) { + throw new TypeError("argument namespace is required"); + } + var stack = getStack(); + var site = callSiteLocation(stack[1]); + var file = site[0]; + function deprecate(message) { + log2.call(deprecate, message); + } + deprecate._file = file; + deprecate._ignored = isignored(namespace); + deprecate._namespace = namespace; + deprecate._traced = istraced(namespace); + deprecate._warned = /* @__PURE__ */ Object.create(null); + deprecate.function = wrapfunction; + deprecate.property = wrapproperty; + return deprecate; + } + function eehaslisteners(emitter, type) { + var count = typeof emitter.listenerCount !== "function" ? emitter.listeners(type).length : emitter.listenerCount(type); + return count > 0; + } + function isignored(namespace) { + if (process.noDeprecation) { + return true; + } + var str = process.env.NO_DEPRECATION || ""; + return containsNamespace(str, namespace); + } + function istraced(namespace) { + if (process.traceDeprecation) { + return true; + } + var str = process.env.TRACE_DEPRECATION || ""; + return containsNamespace(str, namespace); + } + function log2(message, site) { + var haslisteners = eehaslisteners(process, "deprecation"); + if (!haslisteners && this._ignored) { + return; + } + var caller; + var callFile; + var callSite; + var depSite; + var i = 0; + var seen = false; + var stack = getStack(); + var file = this._file; + if (site) { + depSite = site; + callSite = callSiteLocation(stack[1]); + callSite.name = depSite.name; + file = callSite[0]; + } else { + i = 2; + depSite = callSiteLocation(stack[i]); + callSite = depSite; + } + for (; i < stack.length; i++) { + caller = callSiteLocation(stack[i]); + callFile = caller[0]; + if (callFile === file) { + seen = true; + } else if (callFile === this._file) { + file = this._file; + } else if (seen) { + break; + } + } + var key = caller ? depSite.join(":") + "__" + caller.join(":") : void 0; + if (key !== void 0 && key in this._warned) { + return; + } + this._warned[key] = true; + var msg = message; + if (!msg) { + msg = callSite === depSite || !callSite.name ? defaultMessage(depSite) : defaultMessage(callSite); + } + if (haslisteners) { + var err = DeprecationError(this._namespace, msg, stack.slice(i)); + process.emit("deprecation", err); + return; + } + var format = process.stderr.isTTY ? formatColor : formatPlain; + var output = format.call(this, msg, caller, stack.slice(i)); + process.stderr.write(output + "\n", "utf8"); + } + function callSiteLocation(callSite) { + var file = callSite.getFileName() || ""; + var line = callSite.getLineNumber(); + var colm = callSite.getColumnNumber(); + if (callSite.isEval()) { + file = callSite.getEvalOrigin() + ", " + file; + } + var site = [file, line, colm]; + site.callSite = callSite; + site.name = callSite.getFunctionName(); + return site; + } + function defaultMessage(site) { + var callSite = site.callSite; + var funcName = site.name; + if (!funcName) { + funcName = ""; + } + var context3 = callSite.getThis(); + var typeName = context3 && callSite.getTypeName(); + if (typeName === "Object") { + typeName = void 0; + } + if (typeName === "Function") { + typeName = context3.name || typeName; + } + return typeName && callSite.getMethodName() ? typeName + "." + funcName : funcName; + } + function formatPlain(msg, caller, stack) { + var timestamp = (/* @__PURE__ */ new Date()).toUTCString(); + var formatted = timestamp + " " + this._namespace + " deprecated " + msg; + if (this._traced) { + for (var i = 0; i < stack.length; i++) { + formatted += "\n at " + stack[i].toString(); + } + return formatted; + } + if (caller) { + formatted += " at " + formatLocation(caller); + } + return formatted; + } + function formatColor(msg, caller, stack) { + var formatted = "\x1B[36;1m" + this._namespace + "\x1B[22;39m \x1B[33;1mdeprecated\x1B[22;39m \x1B[0m" + msg + "\x1B[39m"; + if (this._traced) { + for (var i = 0; i < stack.length; i++) { + formatted += "\n \x1B[36mat " + stack[i].toString() + "\x1B[39m"; + } + return formatted; + } + if (caller) { + formatted += " \x1B[36m" + formatLocation(caller) + "\x1B[39m"; + } + return formatted; + } + function formatLocation(callSite) { + return relative(basePath, callSite[0]) + ":" + callSite[1] + ":" + callSite[2]; + } + function getStack() { + var limit = Error.stackTraceLimit; + var obj = {}; + var prep = Error.prepareStackTrace; + Error.prepareStackTrace = prepareObjectStackTrace; + Error.stackTraceLimit = Math.max(10, limit); + Error.captureStackTrace(obj); + var stack = obj.stack.slice(1); + Error.prepareStackTrace = prep; + Error.stackTraceLimit = limit; + return stack; + } + function prepareObjectStackTrace(obj, stack) { + return stack; + } + function wrapfunction(fn, message) { + if (typeof fn !== "function") { + throw new TypeError("argument fn must be a function"); + } + var args = createArgumentsString(fn.length); + var stack = getStack(); + var site = callSiteLocation(stack[1]); + site.name = fn.name; + var deprecatedfn = new Function( + "fn", + "log", + "deprecate", + "message", + "site", + '"use strict"\nreturn function (' + args + ") {log.call(deprecate, message, site)\nreturn fn.apply(this, arguments)\n}" + )(fn, log2, this, message, site); + return deprecatedfn; + } + function wrapproperty(obj, prop, message) { + if (!obj || typeof obj !== "object" && typeof obj !== "function") { + throw new TypeError("argument obj must be object"); + } + var descriptor = Object.getOwnPropertyDescriptor(obj, prop); + if (!descriptor) { + throw new TypeError("must call property on owner object"); + } + if (!descriptor.configurable) { + throw new TypeError("property must be configurable"); + } + var deprecate = this; + var stack = getStack(); + var site = callSiteLocation(stack[1]); + site.name = prop; + if ("value" in descriptor) { + descriptor = convertDataDescriptorToAccessor(obj, prop, message); + } + var get = descriptor.get; + var set = descriptor.set; + if (typeof get === "function") { + descriptor.get = function getter() { + log2.call(deprecate, message, site); + return get.apply(this, arguments); + }; + } + if (typeof set === "function") { + descriptor.set = function setter() { + log2.call(deprecate, message, site); + return set.apply(this, arguments); + }; + } + Object.defineProperty(obj, prop, descriptor); + } + function DeprecationError(namespace, message, stack) { + var error2 = new Error(); + var stackString; + Object.defineProperty(error2, "constructor", { + value: DeprecationError + }); + Object.defineProperty(error2, "message", { + configurable: true, + enumerable: false, + value: message, + writable: true + }); + Object.defineProperty(error2, "name", { + enumerable: false, + configurable: true, + value: "DeprecationError", + writable: true + }); + Object.defineProperty(error2, "namespace", { + configurable: true, + enumerable: false, + value: namespace, + writable: true + }); + Object.defineProperty(error2, "stack", { + configurable: true, + enumerable: false, + get: function() { + if (stackString !== void 0) { + return stackString; + } + return stackString = createStackString.call(this, stack); + }, + set: function setter(val) { + stackString = val; + } + }); + return error2; + } + } +}); + +// node_modules/setprototypeof/index.js +var require_setprototypeof = __commonJS({ + "node_modules/setprototypeof/index.js"(exports2, module2) { + "use strict"; + module2.exports = Object.setPrototypeOf || ({ __proto__: [] } instanceof Array ? setProtoOf : mixinProperties); + function setProtoOf(obj, proto) { + obj.__proto__ = proto; + return obj; + } + function mixinProperties(obj, proto) { + for (var prop in proto) { + if (!Object.prototype.hasOwnProperty.call(obj, prop)) { + obj[prop] = proto[prop]; + } + } + return obj; + } + } +}); + +// node_modules/statuses/codes.json +var require_codes = __commonJS({ + "node_modules/statuses/codes.json"(exports2, module2) { + module2.exports = { + "100": "Continue", + "101": "Switching Protocols", + "102": "Processing", + "103": "Early Hints", + "200": "OK", + "201": "Created", + "202": "Accepted", + "203": "Non-Authoritative Information", + "204": "No Content", + "205": "Reset Content", + "206": "Partial Content", + "207": "Multi-Status", + "208": "Already Reported", + "226": "IM Used", + "300": "Multiple Choices", + "301": "Moved Permanently", + "302": "Found", + "303": "See Other", + "304": "Not Modified", + "305": "Use Proxy", + "307": "Temporary Redirect", + "308": "Permanent Redirect", + "400": "Bad Request", + "401": "Unauthorized", + "402": "Payment Required", + "403": "Forbidden", + "404": "Not Found", + "405": "Method Not Allowed", + "406": "Not Acceptable", + "407": "Proxy Authentication Required", + "408": "Request Timeout", + "409": "Conflict", + "410": "Gone", + "411": "Length Required", + "412": "Precondition Failed", + "413": "Payload Too Large", + "414": "URI Too Long", + "415": "Unsupported Media Type", + "416": "Range Not Satisfiable", + "417": "Expectation Failed", + "418": "I'm a Teapot", + "421": "Misdirected Request", + "422": "Unprocessable Entity", + "423": "Locked", + "424": "Failed Dependency", + "425": "Too Early", + "426": "Upgrade Required", + "428": "Precondition Required", + "429": "Too Many Requests", + "431": "Request Header Fields Too Large", + "451": "Unavailable For Legal Reasons", + "500": "Internal Server Error", + "501": "Not Implemented", + "502": "Bad Gateway", + "503": "Service Unavailable", + "504": "Gateway Timeout", + "505": "HTTP Version Not Supported", + "506": "Variant Also Negotiates", + "507": "Insufficient Storage", + "508": "Loop Detected", + "509": "Bandwidth Limit Exceeded", + "510": "Not Extended", + "511": "Network Authentication Required" + }; + } +}); + +// node_modules/statuses/index.js +var require_statuses = __commonJS({ + "node_modules/statuses/index.js"(exports2, module2) { + "use strict"; + var codes = require_codes(); + module2.exports = status; + status.message = codes; + status.code = createMessageToStatusCodeMap(codes); + status.codes = createStatusCodeList(codes); + status.redirect = { + 300: true, + 301: true, + 302: true, + 303: true, + 305: true, + 307: true, + 308: true + }; + status.empty = { + 204: true, + 205: true, + 304: true + }; + status.retry = { + 502: true, + 503: true, + 504: true + }; + function createMessageToStatusCodeMap(codes2) { + var map = {}; + Object.keys(codes2).forEach(function forEachCode(code) { + var message = codes2[code]; + var status2 = Number(code); + map[message.toLowerCase()] = status2; + }); + return map; + } + function createStatusCodeList(codes2) { + return Object.keys(codes2).map(function mapCode(code) { + return Number(code); + }); + } + function getStatusCode(message) { + var msg = message.toLowerCase(); + if (!Object.prototype.hasOwnProperty.call(status.code, msg)) { + throw new Error('invalid status message: "' + message + '"'); + } + return status.code[msg]; + } + function getStatusMessage(code) { + if (!Object.prototype.hasOwnProperty.call(status.message, code)) { + throw new Error("invalid status code: " + code); + } + return status.message[code]; + } + function status(code) { + if (typeof code === "number") { + return getStatusMessage(code); + } + if (typeof code !== "string") { + throw new TypeError("code must be a number or string"); + } + var n = parseInt(code, 10); + if (!isNaN(n)) { + return getStatusMessage(n); + } + return getStatusCode(code); + } + } +}); + +// node_modules/toidentifier/index.js +var require_toidentifier = __commonJS({ + "node_modules/toidentifier/index.js"(exports2, module2) { + "use strict"; + module2.exports = toIdentifier; + function toIdentifier(str) { + return str.split(" ").map(function(token) { + return token.slice(0, 1).toUpperCase() + token.slice(1); + }).join("").replace(/[^ _0-9a-z]/gi, ""); + } + } +}); + +// node_modules/http-errors/index.js +var require_http_errors = __commonJS({ + "node_modules/http-errors/index.js"(exports2, module2) { + "use strict"; + var deprecate = require_depd()("http-errors"); + var setPrototypeOf = require_setprototypeof(); + var statuses = require_statuses(); + var inherits = require_inherits(); + var toIdentifier = require_toidentifier(); + module2.exports = createError; + module2.exports.HttpError = createHttpErrorConstructor(); + module2.exports.isHttpError = createIsHttpErrorFunction(module2.exports.HttpError); + populateConstructorExports(module2.exports, statuses.codes, module2.exports.HttpError); + function codeClass(status) { + return Number(String(status).charAt(0) + "00"); + } + function createError() { + var err; + var msg; + var status = 500; + var props = {}; + for (var i = 0; i < arguments.length; i++) { + var arg = arguments[i]; + var type = typeof arg; + if (type === "object" && arg instanceof Error) { + err = arg; + status = err.status || err.statusCode || status; + } else if (type === "number" && i === 0) { + status = arg; + } else if (type === "string") { + msg = arg; + } else if (type === "object") { + props = arg; + } else { + throw new TypeError("argument #" + (i + 1) + " unsupported type " + type); + } + } + if (typeof status === "number" && (status < 400 || status >= 600)) { + deprecate("non-error status code; use only 4xx or 5xx status codes"); + } + if (typeof status !== "number" || !statuses.message[status] && (status < 400 || status >= 600)) { + status = 500; + } + var HttpError = createError[status] || createError[codeClass(status)]; + if (!err) { + err = HttpError ? new HttpError(msg) : new Error(msg || statuses.message[status]); + Error.captureStackTrace(err, createError); + } + if (!HttpError || !(err instanceof HttpError) || err.status !== status) { + err.expose = status < 500; + err.status = err.statusCode = status; + } + for (var key in props) { + if (key !== "status" && key !== "statusCode") { + err[key] = props[key]; + } + } + return err; + } + function createHttpErrorConstructor() { + function HttpError() { + throw new TypeError("cannot construct abstract class"); + } + inherits(HttpError, Error); + return HttpError; + } + function createClientErrorConstructor(HttpError, name5, code) { + var className = toClassName(name5); + function ClientError(message) { + var msg = message != null ? message : statuses.message[code]; + var err = new Error(msg); + Error.captureStackTrace(err, ClientError); + setPrototypeOf(err, ClientError.prototype); + Object.defineProperty(err, "message", { + enumerable: true, + configurable: true, + value: msg, + writable: true + }); + Object.defineProperty(err, "name", { + enumerable: false, + configurable: true, + value: className, + writable: true + }); + return err; + } + inherits(ClientError, HttpError); + nameFunc(ClientError, className); + ClientError.prototype.status = code; + ClientError.prototype.statusCode = code; + ClientError.prototype.expose = true; + return ClientError; + } + function createIsHttpErrorFunction(HttpError) { + return function isHttpError(val) { + if (!val || typeof val !== "object") { + return false; + } + if (val instanceof HttpError) { + return true; + } + return val instanceof Error && typeof val.expose === "boolean" && typeof val.statusCode === "number" && val.status === val.statusCode; + }; + } + function createServerErrorConstructor(HttpError, name5, code) { + var className = toClassName(name5); + function ServerError4(message) { + var msg = message != null ? message : statuses.message[code]; + var err = new Error(msg); + Error.captureStackTrace(err, ServerError4); + setPrototypeOf(err, ServerError4.prototype); + Object.defineProperty(err, "message", { + enumerable: true, + configurable: true, + value: msg, + writable: true + }); + Object.defineProperty(err, "name", { + enumerable: false, + configurable: true, + value: className, + writable: true + }); + return err; + } + inherits(ServerError4, HttpError); + nameFunc(ServerError4, className); + ServerError4.prototype.status = code; + ServerError4.prototype.statusCode = code; + ServerError4.prototype.expose = false; + return ServerError4; + } + function nameFunc(func, name5) { + var desc = Object.getOwnPropertyDescriptor(func, "name"); + if (desc && desc.configurable) { + desc.value = name5; + Object.defineProperty(func, "name", desc); + } + } + function populateConstructorExports(exports3, codes, HttpError) { + codes.forEach(function forEachCode(code) { + var CodeError; + var name5 = toIdentifier(statuses.message[code]); + switch (codeClass(code)) { + case 400: + CodeError = createClientErrorConstructor(HttpError, name5, code); + break; + case 500: + CodeError = createServerErrorConstructor(HttpError, name5, code); + break; + } + if (CodeError) { + exports3[code] = CodeError; + exports3[name5] = CodeError; + } + }); + } + function toClassName(name5) { + return name5.slice(-5) === "Error" ? name5 : name5 + "Error"; + } + } +}); + +// node_modules/bytes/index.js +var require_bytes = __commonJS({ + "node_modules/bytes/index.js"(exports2, module2) { + "use strict"; + module2.exports = bytes; + module2.exports.format = format; + module2.exports.parse = parse4; + var formatThousandsRegExp = /\B(?=(\d{3})+(?!\d))/g; + var formatDecimalsRegExp = /(?:\.0*|(\.[^0]+)0+)$/; + var map = { + b: 1, + kb: 1 << 10, + mb: 1 << 20, + gb: 1 << 30, + tb: Math.pow(1024, 4), + pb: Math.pow(1024, 5) + }; + var parseRegExp = /^((-|\+)?(\d+(?:\.\d+)?)) *(kb|mb|gb|tb|pb)$/i; + function bytes(value, options) { + if (typeof value === "string") { + return parse4(value); + } + if (typeof value === "number") { + return format(value, options); + } + return null; + } + function format(value, options) { + if (!Number.isFinite(value)) { + return null; + } + var mag = Math.abs(value); + var thousandsSeparator = options && options.thousandsSeparator || ""; + var unitSeparator = options && options.unitSeparator || ""; + var decimalPlaces = options && options.decimalPlaces !== void 0 ? options.decimalPlaces : 2; + var fixedDecimals = Boolean(options && options.fixedDecimals); + var unit = options && options.unit || ""; + if (!unit || !map[unit.toLowerCase()]) { + if (mag >= map.pb) { + unit = "PB"; + } else if (mag >= map.tb) { + unit = "TB"; + } else if (mag >= map.gb) { + unit = "GB"; + } else if (mag >= map.mb) { + unit = "MB"; + } else if (mag >= map.kb) { + unit = "KB"; + } else { + unit = "B"; + } + } + var val = value / map[unit.toLowerCase()]; + var str = val.toFixed(decimalPlaces); + if (!fixedDecimals) { + str = str.replace(formatDecimalsRegExp, "$1"); + } + if (thousandsSeparator) { + str = str.split(".").map(function(s, i) { + return i === 0 ? s.replace(formatThousandsRegExp, thousandsSeparator) : s; + }).join("."); + } + return str + unitSeparator + unit; + } + function parse4(val) { + if (typeof val === "number" && !isNaN(val)) { + return val; + } + if (typeof val !== "string") { + return null; + } + var results = parseRegExp.exec(val); + var floatValue; + var unit = "b"; + if (!results) { + floatValue = parseInt(val, 10); + unit = "b"; + } else { + floatValue = parseFloat(results[1]); + unit = results[4].toLowerCase(); + } + if (isNaN(floatValue)) { + return null; + } + return Math.floor(map[unit] * floatValue); + } + } +}); + +// node_modules/safer-buffer/safer.js +var require_safer = __commonJS({ + "node_modules/safer-buffer/safer.js"(exports2, module2) { + "use strict"; + var buffer = require("buffer"); + var Buffer5 = buffer.Buffer; + var safer = {}; + var key; + for (key in buffer) { + if (!buffer.hasOwnProperty(key)) continue; + if (key === "SlowBuffer" || key === "Buffer") continue; + safer[key] = buffer[key]; + } + var Safer = safer.Buffer = {}; + for (key in Buffer5) { + if (!Buffer5.hasOwnProperty(key)) continue; + if (key === "allocUnsafe" || key === "allocUnsafeSlow") continue; + Safer[key] = Buffer5[key]; + } + safer.Buffer.prototype = Buffer5.prototype; + if (!Safer.from || Safer.from === Uint8Array.from) { + Safer.from = function(value, encodingOrOffset, length) { + if (typeof value === "number") { + throw new TypeError('The "value" argument must not be of type number. Received type ' + typeof value); + } + if (value && typeof value.length === "undefined") { + throw new TypeError("The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type " + typeof value); + } + return Buffer5(value, encodingOrOffset, length); + }; + } + if (!Safer.alloc) { + Safer.alloc = function(size, fill, encoding) { + if (typeof size !== "number") { + throw new TypeError('The "size" argument must be of type number. Received type ' + typeof size); + } + if (size < 0 || size >= 2 * (1 << 30)) { + throw new RangeError('The value "' + size + '" is invalid for option "size"'); + } + var buf = Buffer5(size); + if (!fill || fill.length === 0) { + buf.fill(0); + } else if (typeof encoding === "string") { + buf.fill(fill, encoding); + } else { + buf.fill(fill); + } + return buf; + }; + } + if (!safer.kStringMaxLength) { + try { + safer.kStringMaxLength = process.binding("buffer").kStringMaxLength; + } catch (e) { + } + } + if (!safer.constants) { + safer.constants = { + MAX_LENGTH: safer.kMaxLength + }; + if (safer.kStringMaxLength) { + safer.constants.MAX_STRING_LENGTH = safer.kStringMaxLength; + } + } + module2.exports = safer; + } +}); + +// node_modules/iconv-lite/lib/bom-handling.js +var require_bom_handling = __commonJS({ + "node_modules/iconv-lite/lib/bom-handling.js"(exports2) { + "use strict"; + var BOMChar = "\uFEFF"; + exports2.PrependBOM = PrependBOMWrapper; + function PrependBOMWrapper(encoder, options) { + this.encoder = encoder; + this.addBOM = true; + } + PrependBOMWrapper.prototype.write = function(str) { + if (this.addBOM) { + str = BOMChar + str; + this.addBOM = false; + } + return this.encoder.write(str); + }; + PrependBOMWrapper.prototype.end = function() { + return this.encoder.end(); + }; + exports2.StripBOM = StripBOMWrapper; + function StripBOMWrapper(decoder, options) { + this.decoder = decoder; + this.pass = false; + this.options = options || {}; + } + StripBOMWrapper.prototype.write = function(buf) { + var res = this.decoder.write(buf); + if (this.pass || !res) { + return res; + } + if (res[0] === BOMChar) { + res = res.slice(1); + if (typeof this.options.stripBOM === "function") { + this.options.stripBOM(); + } + } + this.pass = true; + return res; + }; + StripBOMWrapper.prototype.end = function() { + return this.decoder.end(); + }; + } +}); + +// node_modules/iconv-lite/lib/helpers/merge-exports.js +var require_merge_exports = __commonJS({ + "node_modules/iconv-lite/lib/helpers/merge-exports.js"(exports2, module2) { + "use strict"; + var hasOwn = typeof Object.hasOwn === "undefined" ? Function.call.bind(Object.prototype.hasOwnProperty) : Object.hasOwn; + function mergeModules(target, module3) { + for (var key in module3) { + if (hasOwn(module3, key)) { + target[key] = module3[key]; + } + } + } + module2.exports = mergeModules; + } +}); + +// node_modules/iconv-lite/encodings/internal.js +var require_internal = __commonJS({ + "node_modules/iconv-lite/encodings/internal.js"(exports2, module2) { + "use strict"; + var Buffer5 = require_safer().Buffer; + module2.exports = { + // Encodings + utf8: { type: "_internal", bomAware: true }, + cesu8: { type: "_internal", bomAware: true }, + unicode11utf8: "utf8", + ucs2: { type: "_internal", bomAware: true }, + utf16le: "ucs2", + binary: { type: "_internal" }, + base64: { type: "_internal" }, + hex: { type: "_internal" }, + // Codec. + _internal: InternalCodec + }; + function InternalCodec(codecOptions, iconv) { + this.enc = codecOptions.encodingName; + this.bomAware = codecOptions.bomAware; + if (this.enc === "base64") { + this.encoder = InternalEncoderBase64; + } else if (this.enc === "utf8") { + this.encoder = InternalEncoderUtf8; + } else if (this.enc === "cesu8") { + this.enc = "utf8"; + this.encoder = InternalEncoderCesu8; + if (Buffer5.from("eda0bdedb2a9", "hex").toString() !== "\u{1F4A9}") { + this.decoder = InternalDecoderCesu8; + this.defaultCharUnicode = iconv.defaultCharUnicode; + } + } + } + InternalCodec.prototype.encoder = InternalEncoder; + InternalCodec.prototype.decoder = InternalDecoder; + var StringDecoder = require("string_decoder").StringDecoder; + function InternalDecoder(options, codec) { + this.decoder = new StringDecoder(codec.enc); + } + InternalDecoder.prototype.write = function(buf) { + if (!Buffer5.isBuffer(buf)) { + buf = Buffer5.from(buf); + } + return this.decoder.write(buf); + }; + InternalDecoder.prototype.end = function() { + return this.decoder.end(); + }; + function InternalEncoder(options, codec) { + this.enc = codec.enc; + } + InternalEncoder.prototype.write = function(str) { + return Buffer5.from(str, this.enc); + }; + InternalEncoder.prototype.end = function() { + }; + function InternalEncoderBase64(options, codec) { + this.prevStr = ""; + } + InternalEncoderBase64.prototype.write = function(str) { + str = this.prevStr + str; + var completeQuads = str.length - str.length % 4; + this.prevStr = str.slice(completeQuads); + str = str.slice(0, completeQuads); + return Buffer5.from(str, "base64"); + }; + InternalEncoderBase64.prototype.end = function() { + return Buffer5.from(this.prevStr, "base64"); + }; + function InternalEncoderCesu8(options, codec) { + } + InternalEncoderCesu8.prototype.write = function(str) { + var buf = Buffer5.alloc(str.length * 3); + var bufIdx = 0; + for (var i = 0; i < str.length; i++) { + var charCode = str.charCodeAt(i); + if (charCode < 128) { + buf[bufIdx++] = charCode; + } else if (charCode < 2048) { + buf[bufIdx++] = 192 + (charCode >>> 6); + buf[bufIdx++] = 128 + (charCode & 63); + } else { + buf[bufIdx++] = 224 + (charCode >>> 12); + buf[bufIdx++] = 128 + (charCode >>> 6 & 63); + buf[bufIdx++] = 128 + (charCode & 63); + } + } + return buf.slice(0, bufIdx); + }; + InternalEncoderCesu8.prototype.end = function() { + }; + function InternalDecoderCesu8(options, codec) { + this.acc = 0; + this.contBytes = 0; + this.accBytes = 0; + this.defaultCharUnicode = codec.defaultCharUnicode; + } + InternalDecoderCesu8.prototype.write = function(buf) { + var acc = this.acc; + var contBytes = this.contBytes; + var accBytes = this.accBytes; + var res = ""; + for (var i = 0; i < buf.length; i++) { + var curByte = buf[i]; + if ((curByte & 192) !== 128) { + if (contBytes > 0) { + res += this.defaultCharUnicode; + contBytes = 0; + } + if (curByte < 128) { + res += String.fromCharCode(curByte); + } else if (curByte < 224) { + acc = curByte & 31; + contBytes = 1; + accBytes = 1; + } else if (curByte < 240) { + acc = curByte & 15; + contBytes = 2; + accBytes = 1; + } else { + res += this.defaultCharUnicode; + } + } else { + if (contBytes > 0) { + acc = acc << 6 | curByte & 63; + contBytes--; + accBytes++; + if (contBytes === 0) { + if (accBytes === 2 && acc < 128 && acc > 0) { + res += this.defaultCharUnicode; + } else if (accBytes === 3 && acc < 2048) { + res += this.defaultCharUnicode; + } else { + res += String.fromCharCode(acc); + } + } + } else { + res += this.defaultCharUnicode; + } + } + } + this.acc = acc; + this.contBytes = contBytes; + this.accBytes = accBytes; + return res; + }; + InternalDecoderCesu8.prototype.end = function() { + var res = 0; + if (this.contBytes > 0) { + res += this.defaultCharUnicode; + } + return res; + }; + function InternalEncoderUtf8(options, codec) { + this.highSurrogate = ""; + } + InternalEncoderUtf8.prototype.write = function(str) { + if (this.highSurrogate) { + str = this.highSurrogate + str; + this.highSurrogate = ""; + } + if (str.length > 0) { + var charCode = str.charCodeAt(str.length - 1); + if (charCode >= 55296 && charCode < 56320) { + this.highSurrogate = str[str.length - 1]; + str = str.slice(0, str.length - 1); + } + } + return Buffer5.from(str, this.enc); + }; + InternalEncoderUtf8.prototype.end = function() { + if (this.highSurrogate) { + var str = this.highSurrogate; + this.highSurrogate = ""; + return Buffer5.from(str, this.enc); + } + }; + } +}); + +// node_modules/iconv-lite/encodings/utf32.js +var require_utf32 = __commonJS({ + "node_modules/iconv-lite/encodings/utf32.js"(exports2) { + "use strict"; + var Buffer5 = require_safer().Buffer; + exports2._utf32 = Utf32Codec; + function Utf32Codec(codecOptions, iconv) { + this.iconv = iconv; + this.bomAware = true; + this.isLE = codecOptions.isLE; + } + exports2.utf32le = { type: "_utf32", isLE: true }; + exports2.utf32be = { type: "_utf32", isLE: false }; + exports2.ucs4le = "utf32le"; + exports2.ucs4be = "utf32be"; + Utf32Codec.prototype.encoder = Utf32Encoder; + Utf32Codec.prototype.decoder = Utf32Decoder; + function Utf32Encoder(options, codec) { + this.isLE = codec.isLE; + this.highSurrogate = 0; + } + Utf32Encoder.prototype.write = function(str) { + var src = Buffer5.from(str, "ucs2"); + var dst = Buffer5.alloc(src.length * 2); + var write32 = this.isLE ? dst.writeUInt32LE : dst.writeUInt32BE; + var offset = 0; + for (var i = 0; i < src.length; i += 2) { + var code = src.readUInt16LE(i); + var isHighSurrogate = code >= 55296 && code < 56320; + var isLowSurrogate = code >= 56320 && code < 57344; + if (this.highSurrogate) { + if (isHighSurrogate || !isLowSurrogate) { + write32.call(dst, this.highSurrogate, offset); + offset += 4; + } else { + var codepoint = (this.highSurrogate - 55296 << 10 | code - 56320) + 65536; + write32.call(dst, codepoint, offset); + offset += 4; + this.highSurrogate = 0; + continue; + } + } + if (isHighSurrogate) { + this.highSurrogate = code; + } else { + write32.call(dst, code, offset); + offset += 4; + this.highSurrogate = 0; + } + } + if (offset < dst.length) { + dst = dst.slice(0, offset); + } + return dst; + }; + Utf32Encoder.prototype.end = function() { + if (!this.highSurrogate) { + return; + } + var buf = Buffer5.alloc(4); + if (this.isLE) { + buf.writeUInt32LE(this.highSurrogate, 0); + } else { + buf.writeUInt32BE(this.highSurrogate, 0); + } + this.highSurrogate = 0; + return buf; + }; + function Utf32Decoder(options, codec) { + this.isLE = codec.isLE; + this.badChar = codec.iconv.defaultCharUnicode.charCodeAt(0); + this.overflow = []; + } + Utf32Decoder.prototype.write = function(src) { + if (src.length === 0) { + return ""; + } + var i = 0; + var codepoint = 0; + var dst = Buffer5.alloc(src.length + 4); + var offset = 0; + var isLE = this.isLE; + var overflow = this.overflow; + var badChar = this.badChar; + if (overflow.length > 0) { + for (; i < src.length && overflow.length < 4; i++) { + overflow.push(src[i]); + } + if (overflow.length === 4) { + if (isLE) { + codepoint = overflow[i] | overflow[i + 1] << 8 | overflow[i + 2] << 16 | overflow[i + 3] << 24; + } else { + codepoint = overflow[i + 3] | overflow[i + 2] << 8 | overflow[i + 1] << 16 | overflow[i] << 24; + } + overflow.length = 0; + offset = _writeCodepoint(dst, offset, codepoint, badChar); + } + } + for (; i < src.length - 3; i += 4) { + if (isLE) { + codepoint = src[i] | src[i + 1] << 8 | src[i + 2] << 16 | src[i + 3] << 24; + } else { + codepoint = src[i + 3] | src[i + 2] << 8 | src[i + 1] << 16 | src[i] << 24; + } + offset = _writeCodepoint(dst, offset, codepoint, badChar); + } + for (; i < src.length; i++) { + overflow.push(src[i]); + } + return dst.slice(0, offset).toString("ucs2"); + }; + function _writeCodepoint(dst, offset, codepoint, badChar) { + if (codepoint < 0 || codepoint > 1114111) { + codepoint = badChar; + } + if (codepoint >= 65536) { + codepoint -= 65536; + var high = 55296 | codepoint >> 10; + dst[offset++] = high & 255; + dst[offset++] = high >> 8; + var codepoint = 56320 | codepoint & 1023; + } + dst[offset++] = codepoint & 255; + dst[offset++] = codepoint >> 8; + return offset; + } + Utf32Decoder.prototype.end = function() { + this.overflow.length = 0; + }; + exports2.utf32 = Utf32AutoCodec; + exports2.ucs4 = "utf32"; + function Utf32AutoCodec(options, iconv) { + this.iconv = iconv; + } + Utf32AutoCodec.prototype.encoder = Utf32AutoEncoder; + Utf32AutoCodec.prototype.decoder = Utf32AutoDecoder; + function Utf32AutoEncoder(options, codec) { + options = options || {}; + if (options.addBOM === void 0) { + options.addBOM = true; + } + this.encoder = codec.iconv.getEncoder(options.defaultEncoding || "utf-32le", options); + } + Utf32AutoEncoder.prototype.write = function(str) { + return this.encoder.write(str); + }; + Utf32AutoEncoder.prototype.end = function() { + return this.encoder.end(); + }; + function Utf32AutoDecoder(options, codec) { + this.decoder = null; + this.initialBufs = []; + this.initialBufsLen = 0; + this.options = options || {}; + this.iconv = codec.iconv; + } + Utf32AutoDecoder.prototype.write = function(buf) { + if (!this.decoder) { + this.initialBufs.push(buf); + this.initialBufsLen += buf.length; + if (this.initialBufsLen < 32) { + return ""; + } + var encoding = detectEncoding(this.initialBufs, this.options.defaultEncoding); + this.decoder = this.iconv.getDecoder(encoding, this.options); + var resStr = ""; + for (var i = 0; i < this.initialBufs.length; i++) { + resStr += this.decoder.write(this.initialBufs[i]); + } + this.initialBufs.length = this.initialBufsLen = 0; + return resStr; + } + return this.decoder.write(buf); + }; + Utf32AutoDecoder.prototype.end = function() { + if (!this.decoder) { + var encoding = detectEncoding(this.initialBufs, this.options.defaultEncoding); + this.decoder = this.iconv.getDecoder(encoding, this.options); + var resStr = ""; + for (var i = 0; i < this.initialBufs.length; i++) { + resStr += this.decoder.write(this.initialBufs[i]); + } + var trail = this.decoder.end(); + if (trail) { + resStr += trail; + } + this.initialBufs.length = this.initialBufsLen = 0; + return resStr; + } + return this.decoder.end(); + }; + function detectEncoding(bufs, defaultEncoding) { + var b = []; + var charsProcessed = 0; + var invalidLE = 0; + var invalidBE = 0; + var bmpCharsLE = 0; + var bmpCharsBE = 0; + outerLoop: + for (var i = 0; i < bufs.length; i++) { + var buf = bufs[i]; + for (var j = 0; j < buf.length; j++) { + b.push(buf[j]); + if (b.length === 4) { + if (charsProcessed === 0) { + if (b[0] === 255 && b[1] === 254 && b[2] === 0 && b[3] === 0) { + return "utf-32le"; + } + if (b[0] === 0 && b[1] === 0 && b[2] === 254 && b[3] === 255) { + return "utf-32be"; + } + } + if (b[0] !== 0 || b[1] > 16) invalidBE++; + if (b[3] !== 0 || b[2] > 16) invalidLE++; + if (b[0] === 0 && b[1] === 0 && (b[2] !== 0 || b[3] !== 0)) bmpCharsBE++; + if ((b[0] !== 0 || b[1] !== 0) && b[2] === 0 && b[3] === 0) bmpCharsLE++; + b.length = 0; + charsProcessed++; + if (charsProcessed >= 100) { + break outerLoop; + } + } + } + } + if (bmpCharsBE - invalidBE > bmpCharsLE - invalidLE) return "utf-32be"; + if (bmpCharsBE - invalidBE < bmpCharsLE - invalidLE) return "utf-32le"; + return defaultEncoding || "utf-32le"; + } + } +}); + +// node_modules/iconv-lite/encodings/utf16.js +var require_utf16 = __commonJS({ + "node_modules/iconv-lite/encodings/utf16.js"(exports2) { + "use strict"; + var Buffer5 = require_safer().Buffer; + exports2.utf16be = Utf16BECodec; + function Utf16BECodec() { + } + Utf16BECodec.prototype.encoder = Utf16BEEncoder; + Utf16BECodec.prototype.decoder = Utf16BEDecoder; + Utf16BECodec.prototype.bomAware = true; + function Utf16BEEncoder() { + } + Utf16BEEncoder.prototype.write = function(str) { + var buf = Buffer5.from(str, "ucs2"); + for (var i = 0; i < buf.length; i += 2) { + var tmp = buf[i]; + buf[i] = buf[i + 1]; + buf[i + 1] = tmp; + } + return buf; + }; + Utf16BEEncoder.prototype.end = function() { + }; + function Utf16BEDecoder() { + this.overflowByte = -1; + } + Utf16BEDecoder.prototype.write = function(buf) { + if (buf.length == 0) { + return ""; + } + var buf2 = Buffer5.alloc(buf.length + 1); + var i = 0; + var j = 0; + if (this.overflowByte !== -1) { + buf2[0] = buf[0]; + buf2[1] = this.overflowByte; + i = 1; + j = 2; + } + for (; i < buf.length - 1; i += 2, j += 2) { + buf2[j] = buf[i + 1]; + buf2[j + 1] = buf[i]; + } + this.overflowByte = i == buf.length - 1 ? buf[buf.length - 1] : -1; + return buf2.slice(0, j).toString("ucs2"); + }; + Utf16BEDecoder.prototype.end = function() { + this.overflowByte = -1; + }; + exports2.utf16 = Utf16Codec; + function Utf16Codec(codecOptions, iconv) { + this.iconv = iconv; + } + Utf16Codec.prototype.encoder = Utf16Encoder; + Utf16Codec.prototype.decoder = Utf16Decoder; + function Utf16Encoder(options, codec) { + options = options || {}; + if (options.addBOM === void 0) { + options.addBOM = true; + } + this.encoder = codec.iconv.getEncoder("utf-16le", options); + } + Utf16Encoder.prototype.write = function(str) { + return this.encoder.write(str); + }; + Utf16Encoder.prototype.end = function() { + return this.encoder.end(); + }; + function Utf16Decoder(options, codec) { + this.decoder = null; + this.initialBufs = []; + this.initialBufsLen = 0; + this.options = options || {}; + this.iconv = codec.iconv; + } + Utf16Decoder.prototype.write = function(buf) { + if (!this.decoder) { + this.initialBufs.push(buf); + this.initialBufsLen += buf.length; + if (this.initialBufsLen < 16) { + return ""; + } + var encoding = detectEncoding(this.initialBufs, this.options.defaultEncoding); + this.decoder = this.iconv.getDecoder(encoding, this.options); + var resStr = ""; + for (var i = 0; i < this.initialBufs.length; i++) { + resStr += this.decoder.write(this.initialBufs[i]); + } + this.initialBufs.length = this.initialBufsLen = 0; + return resStr; + } + return this.decoder.write(buf); + }; + Utf16Decoder.prototype.end = function() { + if (!this.decoder) { + var encoding = detectEncoding(this.initialBufs, this.options.defaultEncoding); + this.decoder = this.iconv.getDecoder(encoding, this.options); + var resStr = ""; + for (var i = 0; i < this.initialBufs.length; i++) { + resStr += this.decoder.write(this.initialBufs[i]); + } + var trail = this.decoder.end(); + if (trail) { + resStr += trail; + } + this.initialBufs.length = this.initialBufsLen = 0; + return resStr; + } + return this.decoder.end(); + }; + function detectEncoding(bufs, defaultEncoding) { + var b = []; + var charsProcessed = 0; + var asciiCharsLE = 0; + var asciiCharsBE = 0; + outerLoop: + for (var i = 0; i < bufs.length; i++) { + var buf = bufs[i]; + for (var j = 0; j < buf.length; j++) { + b.push(buf[j]); + if (b.length === 2) { + if (charsProcessed === 0) { + if (b[0] === 255 && b[1] === 254) return "utf-16le"; + if (b[0] === 254 && b[1] === 255) return "utf-16be"; + } + if (b[0] === 0 && b[1] !== 0) asciiCharsBE++; + if (b[0] !== 0 && b[1] === 0) asciiCharsLE++; + b.length = 0; + charsProcessed++; + if (charsProcessed >= 100) { + break outerLoop; + } + } + } + } + if (asciiCharsBE > asciiCharsLE) return "utf-16be"; + if (asciiCharsBE < asciiCharsLE) return "utf-16le"; + return defaultEncoding || "utf-16le"; + } + } +}); + +// node_modules/iconv-lite/encodings/utf7.js +var require_utf7 = __commonJS({ + "node_modules/iconv-lite/encodings/utf7.js"(exports2) { + "use strict"; + var Buffer5 = require_safer().Buffer; + exports2.utf7 = Utf7Codec; + exports2.unicode11utf7 = "utf7"; + function Utf7Codec(codecOptions, iconv) { + this.iconv = iconv; + } + Utf7Codec.prototype.encoder = Utf7Encoder; + Utf7Codec.prototype.decoder = Utf7Decoder; + Utf7Codec.prototype.bomAware = true; + var nonDirectChars = /[^A-Za-z0-9'\(\),-\.\/:\? \n\r\t]+/g; + function Utf7Encoder(options, codec) { + this.iconv = codec.iconv; + } + Utf7Encoder.prototype.write = function(str) { + return Buffer5.from(str.replace(nonDirectChars, function(chunk) { + return "+" + (chunk === "+" ? "" : this.iconv.encode(chunk, "utf16-be").toString("base64").replace(/=+$/, "")) + "-"; + }.bind(this))); + }; + Utf7Encoder.prototype.end = function() { + }; + function Utf7Decoder(options, codec) { + this.iconv = codec.iconv; + this.inBase64 = false; + this.base64Accum = ""; + } + var base64Regex2 = /[A-Za-z0-9\/+]/; + var base64Chars = []; + for (i = 0; i < 256; i++) { + base64Chars[i] = base64Regex2.test(String.fromCharCode(i)); + } + var i; + var plusChar = "+".charCodeAt(0); + var minusChar = "-".charCodeAt(0); + var andChar = "&".charCodeAt(0); + Utf7Decoder.prototype.write = function(buf) { + var res = ""; + var lastI = 0; + var inBase64 = this.inBase64; + var base64Accum = this.base64Accum; + for (var i2 = 0; i2 < buf.length; i2++) { + if (!inBase64) { + if (buf[i2] == plusChar) { + res += this.iconv.decode(buf.slice(lastI, i2), "ascii"); + lastI = i2 + 1; + inBase64 = true; + } + } else { + if (!base64Chars[buf[i2]]) { + if (i2 == lastI && buf[i2] == minusChar) { + res += "+"; + } else { + var b64str = base64Accum + this.iconv.decode(buf.slice(lastI, i2), "ascii"); + res += this.iconv.decode(Buffer5.from(b64str, "base64"), "utf16-be"); + } + if (buf[i2] != minusChar) { + i2--; + } + lastI = i2 + 1; + inBase64 = false; + base64Accum = ""; + } + } + } + if (!inBase64) { + res += this.iconv.decode(buf.slice(lastI), "ascii"); + } else { + var b64str = base64Accum + this.iconv.decode(buf.slice(lastI), "ascii"); + var canBeDecoded = b64str.length - b64str.length % 8; + base64Accum = b64str.slice(canBeDecoded); + b64str = b64str.slice(0, canBeDecoded); + res += this.iconv.decode(Buffer5.from(b64str, "base64"), "utf16-be"); + } + this.inBase64 = inBase64; + this.base64Accum = base64Accum; + return res; + }; + Utf7Decoder.prototype.end = function() { + var res = ""; + if (this.inBase64 && this.base64Accum.length > 0) { + res = this.iconv.decode(Buffer5.from(this.base64Accum, "base64"), "utf16-be"); + } + this.inBase64 = false; + this.base64Accum = ""; + return res; + }; + exports2.utf7imap = Utf7IMAPCodec; + function Utf7IMAPCodec(codecOptions, iconv) { + this.iconv = iconv; + } + Utf7IMAPCodec.prototype.encoder = Utf7IMAPEncoder; + Utf7IMAPCodec.prototype.decoder = Utf7IMAPDecoder; + Utf7IMAPCodec.prototype.bomAware = true; + function Utf7IMAPEncoder(options, codec) { + this.iconv = codec.iconv; + this.inBase64 = false; + this.base64Accum = Buffer5.alloc(6); + this.base64AccumIdx = 0; + } + Utf7IMAPEncoder.prototype.write = function(str) { + var inBase64 = this.inBase64; + var base64Accum = this.base64Accum; + var base64AccumIdx = this.base64AccumIdx; + var buf = Buffer5.alloc(str.length * 5 + 10); + var bufIdx = 0; + for (var i2 = 0; i2 < str.length; i2++) { + var uChar = str.charCodeAt(i2); + if (uChar >= 32 && uChar <= 126) { + if (inBase64) { + if (base64AccumIdx > 0) { + bufIdx += buf.write(base64Accum.slice(0, base64AccumIdx).toString("base64").replace(/\//g, ",").replace(/=+$/, ""), bufIdx); + base64AccumIdx = 0; + } + buf[bufIdx++] = minusChar; + inBase64 = false; + } + if (!inBase64) { + buf[bufIdx++] = uChar; + if (uChar === andChar) { + buf[bufIdx++] = minusChar; + } + } + } else { + if (!inBase64) { + buf[bufIdx++] = andChar; + inBase64 = true; + } + if (inBase64) { + base64Accum[base64AccumIdx++] = uChar >> 8; + base64Accum[base64AccumIdx++] = uChar & 255; + if (base64AccumIdx == base64Accum.length) { + bufIdx += buf.write(base64Accum.toString("base64").replace(/\//g, ","), bufIdx); + base64AccumIdx = 0; + } + } + } + } + this.inBase64 = inBase64; + this.base64AccumIdx = base64AccumIdx; + return buf.slice(0, bufIdx); + }; + Utf7IMAPEncoder.prototype.end = function() { + var buf = Buffer5.alloc(10); + var bufIdx = 0; + if (this.inBase64) { + if (this.base64AccumIdx > 0) { + bufIdx += buf.write(this.base64Accum.slice(0, this.base64AccumIdx).toString("base64").replace(/\//g, ",").replace(/=+$/, ""), bufIdx); + this.base64AccumIdx = 0; + } + buf[bufIdx++] = minusChar; + this.inBase64 = false; + } + return buf.slice(0, bufIdx); + }; + function Utf7IMAPDecoder(options, codec) { + this.iconv = codec.iconv; + this.inBase64 = false; + this.base64Accum = ""; + } + var base64IMAPChars = base64Chars.slice(); + base64IMAPChars[",".charCodeAt(0)] = true; + Utf7IMAPDecoder.prototype.write = function(buf) { + var res = ""; + var lastI = 0; + var inBase64 = this.inBase64; + var base64Accum = this.base64Accum; + for (var i2 = 0; i2 < buf.length; i2++) { + if (!inBase64) { + if (buf[i2] == andChar) { + res += this.iconv.decode(buf.slice(lastI, i2), "ascii"); + lastI = i2 + 1; + inBase64 = true; + } + } else { + if (!base64IMAPChars[buf[i2]]) { + if (i2 == lastI && buf[i2] == minusChar) { + res += "&"; + } else { + var b64str = base64Accum + this.iconv.decode(buf.slice(lastI, i2), "ascii").replace(/,/g, "/"); + res += this.iconv.decode(Buffer5.from(b64str, "base64"), "utf16-be"); + } + if (buf[i2] != minusChar) { + i2--; + } + lastI = i2 + 1; + inBase64 = false; + base64Accum = ""; + } + } + } + if (!inBase64) { + res += this.iconv.decode(buf.slice(lastI), "ascii"); + } else { + var b64str = base64Accum + this.iconv.decode(buf.slice(lastI), "ascii").replace(/,/g, "/"); + var canBeDecoded = b64str.length - b64str.length % 8; + base64Accum = b64str.slice(canBeDecoded); + b64str = b64str.slice(0, canBeDecoded); + res += this.iconv.decode(Buffer5.from(b64str, "base64"), "utf16-be"); + } + this.inBase64 = inBase64; + this.base64Accum = base64Accum; + return res; + }; + Utf7IMAPDecoder.prototype.end = function() { + var res = ""; + if (this.inBase64 && this.base64Accum.length > 0) { + res = this.iconv.decode(Buffer5.from(this.base64Accum, "base64"), "utf16-be"); + } + this.inBase64 = false; + this.base64Accum = ""; + return res; + }; + } +}); + +// node_modules/iconv-lite/encodings/sbcs-codec.js +var require_sbcs_codec = __commonJS({ + "node_modules/iconv-lite/encodings/sbcs-codec.js"(exports2) { + "use strict"; + var Buffer5 = require_safer().Buffer; + exports2._sbcs = SBCSCodec; + function SBCSCodec(codecOptions, iconv) { + if (!codecOptions) { + throw new Error("SBCS codec is called without the data."); + } + if (!codecOptions.chars || codecOptions.chars.length !== 128 && codecOptions.chars.length !== 256) { + throw new Error("Encoding '" + codecOptions.type + "' has incorrect 'chars' (must be of len 128 or 256)"); + } + if (codecOptions.chars.length === 128) { + var asciiString = ""; + for (var i = 0; i < 128; i++) { + asciiString += String.fromCharCode(i); + } + codecOptions.chars = asciiString + codecOptions.chars; + } + this.decodeBuf = Buffer5.from(codecOptions.chars, "ucs2"); + var encodeBuf = Buffer5.alloc(65536, iconv.defaultCharSingleByte.charCodeAt(0)); + for (var i = 0; i < codecOptions.chars.length; i++) { + encodeBuf[codecOptions.chars.charCodeAt(i)] = i; + } + this.encodeBuf = encodeBuf; + } + SBCSCodec.prototype.encoder = SBCSEncoder; + SBCSCodec.prototype.decoder = SBCSDecoder; + function SBCSEncoder(options, codec) { + this.encodeBuf = codec.encodeBuf; + } + SBCSEncoder.prototype.write = function(str) { + var buf = Buffer5.alloc(str.length); + for (var i = 0; i < str.length; i++) { + buf[i] = this.encodeBuf[str.charCodeAt(i)]; + } + return buf; + }; + SBCSEncoder.prototype.end = function() { + }; + function SBCSDecoder(options, codec) { + this.decodeBuf = codec.decodeBuf; + } + SBCSDecoder.prototype.write = function(buf) { + var decodeBuf = this.decodeBuf; + var newBuf = Buffer5.alloc(buf.length * 2); + var idx1 = 0; + var idx2 = 0; + for (var i = 0; i < buf.length; i++) { + idx1 = buf[i] * 2; + idx2 = i * 2; + newBuf[idx2] = decodeBuf[idx1]; + newBuf[idx2 + 1] = decodeBuf[idx1 + 1]; + } + return newBuf.toString("ucs2"); + }; + SBCSDecoder.prototype.end = function() { + }; + } +}); + +// node_modules/iconv-lite/encodings/sbcs-data.js +var require_sbcs_data = __commonJS({ + "node_modules/iconv-lite/encodings/sbcs-data.js"(exports2, module2) { + "use strict"; + module2.exports = { + // Not supported by iconv, not sure why. + 10029: "maccenteuro", + maccenteuro: { + type: "_sbcs", + chars: "\xC4\u0100\u0101\xC9\u0104\xD6\xDC\xE1\u0105\u010C\xE4\u010D\u0106\u0107\xE9\u0179\u017A\u010E\xED\u010F\u0112\u0113\u0116\xF3\u0117\xF4\xF6\xF5\xFA\u011A\u011B\xFC\u2020\xB0\u0118\xA3\xA7\u2022\xB6\xDF\xAE\xA9\u2122\u0119\xA8\u2260\u0123\u012E\u012F\u012A\u2264\u2265\u012B\u0136\u2202\u2211\u0142\u013B\u013C\u013D\u013E\u0139\u013A\u0145\u0146\u0143\xAC\u221A\u0144\u0147\u2206\xAB\xBB\u2026\xA0\u0148\u0150\xD5\u0151\u014C\u2013\u2014\u201C\u201D\u2018\u2019\xF7\u25CA\u014D\u0154\u0155\u0158\u2039\u203A\u0159\u0156\u0157\u0160\u201A\u201E\u0161\u015A\u015B\xC1\u0164\u0165\xCD\u017D\u017E\u016A\xD3\xD4\u016B\u016E\xDA\u016F\u0170\u0171\u0172\u0173\xDD\xFD\u0137\u017B\u0141\u017C\u0122\u02C7" + }, + 808: "cp808", + ibm808: "cp808", + cp808: { + type: "_sbcs", + chars: "\u0410\u0411\u0412\u0413\u0414\u0415\u0416\u0417\u0418\u0419\u041A\u041B\u041C\u041D\u041E\u041F\u0420\u0421\u0422\u0423\u0424\u0425\u0426\u0427\u0428\u0429\u042A\u042B\u042C\u042D\u042E\u042F\u0430\u0431\u0432\u0433\u0434\u0435\u0436\u0437\u0438\u0439\u043A\u043B\u043C\u043D\u043E\u043F\u2591\u2592\u2593\u2502\u2524\u2561\u2562\u2556\u2555\u2563\u2551\u2557\u255D\u255C\u255B\u2510\u2514\u2534\u252C\u251C\u2500\u253C\u255E\u255F\u255A\u2554\u2569\u2566\u2560\u2550\u256C\u2567\u2568\u2564\u2565\u2559\u2558\u2552\u2553\u256B\u256A\u2518\u250C\u2588\u2584\u258C\u2590\u2580\u0440\u0441\u0442\u0443\u0444\u0445\u0446\u0447\u0448\u0449\u044A\u044B\u044C\u044D\u044E\u044F\u0401\u0451\u0404\u0454\u0407\u0457\u040E\u045E\xB0\u2219\xB7\u221A\u2116\u20AC\u25A0\xA0" + }, + mik: { + type: "_sbcs", + chars: "\u0410\u0411\u0412\u0413\u0414\u0415\u0416\u0417\u0418\u0419\u041A\u041B\u041C\u041D\u041E\u041F\u0420\u0421\u0422\u0423\u0424\u0425\u0426\u0427\u0428\u0429\u042A\u042B\u042C\u042D\u042E\u042F\u0430\u0431\u0432\u0433\u0434\u0435\u0436\u0437\u0438\u0439\u043A\u043B\u043C\u043D\u043E\u043F\u0440\u0441\u0442\u0443\u0444\u0445\u0446\u0447\u0448\u0449\u044A\u044B\u044C\u044D\u044E\u044F\u2514\u2534\u252C\u251C\u2500\u253C\u2563\u2551\u255A\u2554\u2569\u2566\u2560\u2550\u256C\u2510\u2591\u2592\u2593\u2502\u2524\u2116\xA7\u2557\u255D\u2518\u250C\u2588\u2584\u258C\u2590\u2580\u03B1\xDF\u0393\u03C0\u03A3\u03C3\xB5\u03C4\u03A6\u0398\u03A9\u03B4\u221E\u03C6\u03B5\u2229\u2261\xB1\u2265\u2264\u2320\u2321\xF7\u2248\xB0\u2219\xB7\u221A\u207F\xB2\u25A0\xA0" + }, + cp720: { + type: "_sbcs", + chars: "\x80\x81\xE9\xE2\x84\xE0\x86\xE7\xEA\xEB\xE8\xEF\xEE\x8D\x8E\x8F\x90\u0651\u0652\xF4\xA4\u0640\xFB\xF9\u0621\u0622\u0623\u0624\xA3\u0625\u0626\u0627\u0628\u0629\u062A\u062B\u062C\u062D\u062E\u062F\u0630\u0631\u0632\u0633\u0634\u0635\xAB\xBB\u2591\u2592\u2593\u2502\u2524\u2561\u2562\u2556\u2555\u2563\u2551\u2557\u255D\u255C\u255B\u2510\u2514\u2534\u252C\u251C\u2500\u253C\u255E\u255F\u255A\u2554\u2569\u2566\u2560\u2550\u256C\u2567\u2568\u2564\u2565\u2559\u2558\u2552\u2553\u256B\u256A\u2518\u250C\u2588\u2584\u258C\u2590\u2580\u0636\u0637\u0638\u0639\u063A\u0641\xB5\u0642\u0643\u0644\u0645\u0646\u0647\u0648\u0649\u064A\u2261\u064B\u064C\u064D\u064E\u064F\u0650\u2248\xB0\u2219\xB7\u221A\u207F\xB2\u25A0\xA0" + }, + // Aliases of generated encodings. + ascii8bit: "ascii", + usascii: "ascii", + ansix34: "ascii", + ansix341968: "ascii", + ansix341986: "ascii", + csascii: "ascii", + cp367: "ascii", + ibm367: "ascii", + isoir6: "ascii", + iso646us: "ascii", + iso646irv: "ascii", + us: "ascii", + latin1: "iso88591", + latin2: "iso88592", + latin3: "iso88593", + latin4: "iso88594", + latin5: "iso88599", + latin6: "iso885910", + latin7: "iso885913", + latin8: "iso885914", + latin9: "iso885915", + latin10: "iso885916", + csisolatin1: "iso88591", + csisolatin2: "iso88592", + csisolatin3: "iso88593", + csisolatin4: "iso88594", + csisolatincyrillic: "iso88595", + csisolatinarabic: "iso88596", + csisolatingreek: "iso88597", + csisolatinhebrew: "iso88598", + csisolatin5: "iso88599", + csisolatin6: "iso885910", + l1: "iso88591", + l2: "iso88592", + l3: "iso88593", + l4: "iso88594", + l5: "iso88599", + l6: "iso885910", + l7: "iso885913", + l8: "iso885914", + l9: "iso885915", + l10: "iso885916", + isoir14: "iso646jp", + isoir57: "iso646cn", + isoir100: "iso88591", + isoir101: "iso88592", + isoir109: "iso88593", + isoir110: "iso88594", + isoir144: "iso88595", + isoir127: "iso88596", + isoir126: "iso88597", + isoir138: "iso88598", + isoir148: "iso88599", + isoir157: "iso885910", + isoir166: "tis620", + isoir179: "iso885913", + isoir199: "iso885914", + isoir203: "iso885915", + isoir226: "iso885916", + cp819: "iso88591", + ibm819: "iso88591", + cyrillic: "iso88595", + arabic: "iso88596", + arabic8: "iso88596", + ecma114: "iso88596", + asmo708: "iso88596", + greek: "iso88597", + greek8: "iso88597", + ecma118: "iso88597", + elot928: "iso88597", + hebrew: "iso88598", + hebrew8: "iso88598", + turkish: "iso88599", + turkish8: "iso88599", + thai: "iso885911", + thai8: "iso885911", + celtic: "iso885914", + celtic8: "iso885914", + isoceltic: "iso885914", + tis6200: "tis620", + tis62025291: "tis620", + tis62025330: "tis620", + 1e4: "macroman", + 10006: "macgreek", + 10007: "maccyrillic", + 10079: "maciceland", + 10081: "macturkish", + cspc8codepage437: "cp437", + cspc775baltic: "cp775", + cspc850multilingual: "cp850", + cspcp852: "cp852", + cspc862latinhebrew: "cp862", + cpgr: "cp869", + msee: "cp1250", + mscyrl: "cp1251", + msansi: "cp1252", + msgreek: "cp1253", + msturk: "cp1254", + mshebr: "cp1255", + msarab: "cp1256", + winbaltrim: "cp1257", + cp20866: "koi8r", + 20866: "koi8r", + ibm878: "koi8r", + cskoi8r: "koi8r", + cp21866: "koi8u", + 21866: "koi8u", + ibm1168: "koi8u", + strk10482002: "rk1048", + tcvn5712: "tcvn", + tcvn57121: "tcvn", + gb198880: "iso646cn", + cn: "iso646cn", + csiso14jisc6220ro: "iso646jp", + jisc62201969ro: "iso646jp", + jp: "iso646jp", + cshproman8: "hproman8", + r8: "hproman8", + roman8: "hproman8", + xroman8: "hproman8", + ibm1051: "hproman8", + mac: "macintosh", + csmacintosh: "macintosh" + }; + } +}); + +// node_modules/iconv-lite/encodings/sbcs-data-generated.js +var require_sbcs_data_generated = __commonJS({ + "node_modules/iconv-lite/encodings/sbcs-data-generated.js"(exports2, module2) { + "use strict"; + module2.exports = { + "437": "cp437", + "737": "cp737", + "775": "cp775", + "850": "cp850", + "852": "cp852", + "855": "cp855", + "856": "cp856", + "857": "cp857", + "858": "cp858", + "860": "cp860", + "861": "cp861", + "862": "cp862", + "863": "cp863", + "864": "cp864", + "865": "cp865", + "866": "cp866", + "869": "cp869", + "874": "windows874", + "922": "cp922", + "1046": "cp1046", + "1124": "cp1124", + "1125": "cp1125", + "1129": "cp1129", + "1133": "cp1133", + "1161": "cp1161", + "1162": "cp1162", + "1163": "cp1163", + "1250": "windows1250", + "1251": "windows1251", + "1252": "windows1252", + "1253": "windows1253", + "1254": "windows1254", + "1255": "windows1255", + "1256": "windows1256", + "1257": "windows1257", + "1258": "windows1258", + "28591": "iso88591", + "28592": "iso88592", + "28593": "iso88593", + "28594": "iso88594", + "28595": "iso88595", + "28596": "iso88596", + "28597": "iso88597", + "28598": "iso88598", + "28599": "iso88599", + "28600": "iso885910", + "28601": "iso885911", + "28603": "iso885913", + "28604": "iso885914", + "28605": "iso885915", + "28606": "iso885916", + "windows874": { + "type": "_sbcs", + "chars": "\u20AC\uFFFD\uFFFD\uFFFD\uFFFD\u2026\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u2018\u2019\u201C\u201D\u2022\u2013\u2014\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\xA0\u0E01\u0E02\u0E03\u0E04\u0E05\u0E06\u0E07\u0E08\u0E09\u0E0A\u0E0B\u0E0C\u0E0D\u0E0E\u0E0F\u0E10\u0E11\u0E12\u0E13\u0E14\u0E15\u0E16\u0E17\u0E18\u0E19\u0E1A\u0E1B\u0E1C\u0E1D\u0E1E\u0E1F\u0E20\u0E21\u0E22\u0E23\u0E24\u0E25\u0E26\u0E27\u0E28\u0E29\u0E2A\u0E2B\u0E2C\u0E2D\u0E2E\u0E2F\u0E30\u0E31\u0E32\u0E33\u0E34\u0E35\u0E36\u0E37\u0E38\u0E39\u0E3A\uFFFD\uFFFD\uFFFD\uFFFD\u0E3F\u0E40\u0E41\u0E42\u0E43\u0E44\u0E45\u0E46\u0E47\u0E48\u0E49\u0E4A\u0E4B\u0E4C\u0E4D\u0E4E\u0E4F\u0E50\u0E51\u0E52\u0E53\u0E54\u0E55\u0E56\u0E57\u0E58\u0E59\u0E5A\u0E5B\uFFFD\uFFFD\uFFFD\uFFFD" + }, + "win874": "windows874", + "cp874": "windows874", + "windows1250": { + "type": "_sbcs", + "chars": "\u20AC\uFFFD\u201A\uFFFD\u201E\u2026\u2020\u2021\uFFFD\u2030\u0160\u2039\u015A\u0164\u017D\u0179\uFFFD\u2018\u2019\u201C\u201D\u2022\u2013\u2014\uFFFD\u2122\u0161\u203A\u015B\u0165\u017E\u017A\xA0\u02C7\u02D8\u0141\xA4\u0104\xA6\xA7\xA8\xA9\u015E\xAB\xAC\xAD\xAE\u017B\xB0\xB1\u02DB\u0142\xB4\xB5\xB6\xB7\xB8\u0105\u015F\xBB\u013D\u02DD\u013E\u017C\u0154\xC1\xC2\u0102\xC4\u0139\u0106\xC7\u010C\xC9\u0118\xCB\u011A\xCD\xCE\u010E\u0110\u0143\u0147\xD3\xD4\u0150\xD6\xD7\u0158\u016E\xDA\u0170\xDC\xDD\u0162\xDF\u0155\xE1\xE2\u0103\xE4\u013A\u0107\xE7\u010D\xE9\u0119\xEB\u011B\xED\xEE\u010F\u0111\u0144\u0148\xF3\xF4\u0151\xF6\xF7\u0159\u016F\xFA\u0171\xFC\xFD\u0163\u02D9" + }, + "win1250": "windows1250", + "cp1250": "windows1250", + "windows1251": { + "type": "_sbcs", + "chars": "\u0402\u0403\u201A\u0453\u201E\u2026\u2020\u2021\u20AC\u2030\u0409\u2039\u040A\u040C\u040B\u040F\u0452\u2018\u2019\u201C\u201D\u2022\u2013\u2014\uFFFD\u2122\u0459\u203A\u045A\u045C\u045B\u045F\xA0\u040E\u045E\u0408\xA4\u0490\xA6\xA7\u0401\xA9\u0404\xAB\xAC\xAD\xAE\u0407\xB0\xB1\u0406\u0456\u0491\xB5\xB6\xB7\u0451\u2116\u0454\xBB\u0458\u0405\u0455\u0457\u0410\u0411\u0412\u0413\u0414\u0415\u0416\u0417\u0418\u0419\u041A\u041B\u041C\u041D\u041E\u041F\u0420\u0421\u0422\u0423\u0424\u0425\u0426\u0427\u0428\u0429\u042A\u042B\u042C\u042D\u042E\u042F\u0430\u0431\u0432\u0433\u0434\u0435\u0436\u0437\u0438\u0439\u043A\u043B\u043C\u043D\u043E\u043F\u0440\u0441\u0442\u0443\u0444\u0445\u0446\u0447\u0448\u0449\u044A\u044B\u044C\u044D\u044E\u044F" + }, + "win1251": "windows1251", + "cp1251": "windows1251", + "windows1252": { + "type": "_sbcs", + "chars": "\u20AC\uFFFD\u201A\u0192\u201E\u2026\u2020\u2021\u02C6\u2030\u0160\u2039\u0152\uFFFD\u017D\uFFFD\uFFFD\u2018\u2019\u201C\u201D\u2022\u2013\u2014\u02DC\u2122\u0161\u203A\u0153\uFFFD\u017E\u0178\xA0\xA1\xA2\xA3\xA4\xA5\xA6\xA7\xA8\xA9\xAA\xAB\xAC\xAD\xAE\xAF\xB0\xB1\xB2\xB3\xB4\xB5\xB6\xB7\xB8\xB9\xBA\xBB\xBC\xBD\xBE\xBF\xC0\xC1\xC2\xC3\xC4\xC5\xC6\xC7\xC8\xC9\xCA\xCB\xCC\xCD\xCE\xCF\xD0\xD1\xD2\xD3\xD4\xD5\xD6\xD7\xD8\xD9\xDA\xDB\xDC\xDD\xDE\xDF\xE0\xE1\xE2\xE3\xE4\xE5\xE6\xE7\xE8\xE9\xEA\xEB\xEC\xED\xEE\xEF\xF0\xF1\xF2\xF3\xF4\xF5\xF6\xF7\xF8\xF9\xFA\xFB\xFC\xFD\xFE\xFF" + }, + "win1252": "windows1252", + "cp1252": "windows1252", + "windows1253": { + "type": "_sbcs", + "chars": "\u20AC\uFFFD\u201A\u0192\u201E\u2026\u2020\u2021\uFFFD\u2030\uFFFD\u2039\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u2018\u2019\u201C\u201D\u2022\u2013\u2014\uFFFD\u2122\uFFFD\u203A\uFFFD\uFFFD\uFFFD\uFFFD\xA0\u0385\u0386\xA3\xA4\xA5\xA6\xA7\xA8\xA9\uFFFD\xAB\xAC\xAD\xAE\u2015\xB0\xB1\xB2\xB3\u0384\xB5\xB6\xB7\u0388\u0389\u038A\xBB\u038C\xBD\u038E\u038F\u0390\u0391\u0392\u0393\u0394\u0395\u0396\u0397\u0398\u0399\u039A\u039B\u039C\u039D\u039E\u039F\u03A0\u03A1\uFFFD\u03A3\u03A4\u03A5\u03A6\u03A7\u03A8\u03A9\u03AA\u03AB\u03AC\u03AD\u03AE\u03AF\u03B0\u03B1\u03B2\u03B3\u03B4\u03B5\u03B6\u03B7\u03B8\u03B9\u03BA\u03BB\u03BC\u03BD\u03BE\u03BF\u03C0\u03C1\u03C2\u03C3\u03C4\u03C5\u03C6\u03C7\u03C8\u03C9\u03CA\u03CB\u03CC\u03CD\u03CE\uFFFD" + }, + "win1253": "windows1253", + "cp1253": "windows1253", + "windows1254": { + "type": "_sbcs", + "chars": "\u20AC\uFFFD\u201A\u0192\u201E\u2026\u2020\u2021\u02C6\u2030\u0160\u2039\u0152\uFFFD\uFFFD\uFFFD\uFFFD\u2018\u2019\u201C\u201D\u2022\u2013\u2014\u02DC\u2122\u0161\u203A\u0153\uFFFD\uFFFD\u0178\xA0\xA1\xA2\xA3\xA4\xA5\xA6\xA7\xA8\xA9\xAA\xAB\xAC\xAD\xAE\xAF\xB0\xB1\xB2\xB3\xB4\xB5\xB6\xB7\xB8\xB9\xBA\xBB\xBC\xBD\xBE\xBF\xC0\xC1\xC2\xC3\xC4\xC5\xC6\xC7\xC8\xC9\xCA\xCB\xCC\xCD\xCE\xCF\u011E\xD1\xD2\xD3\xD4\xD5\xD6\xD7\xD8\xD9\xDA\xDB\xDC\u0130\u015E\xDF\xE0\xE1\xE2\xE3\xE4\xE5\xE6\xE7\xE8\xE9\xEA\xEB\xEC\xED\xEE\xEF\u011F\xF1\xF2\xF3\xF4\xF5\xF6\xF7\xF8\xF9\xFA\xFB\xFC\u0131\u015F\xFF" + }, + "win1254": "windows1254", + "cp1254": "windows1254", + "windows1255": { + "type": "_sbcs", + "chars": "\u20AC\uFFFD\u201A\u0192\u201E\u2026\u2020\u2021\u02C6\u2030\uFFFD\u2039\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u2018\u2019\u201C\u201D\u2022\u2013\u2014\u02DC\u2122\uFFFD\u203A\uFFFD\uFFFD\uFFFD\uFFFD\xA0\xA1\xA2\xA3\u20AA\xA5\xA6\xA7\xA8\xA9\xD7\xAB\xAC\xAD\xAE\xAF\xB0\xB1\xB2\xB3\xB4\xB5\xB6\xB7\xB8\xB9\xF7\xBB\xBC\xBD\xBE\xBF\u05B0\u05B1\u05B2\u05B3\u05B4\u05B5\u05B6\u05B7\u05B8\u05B9\u05BA\u05BB\u05BC\u05BD\u05BE\u05BF\u05C0\u05C1\u05C2\u05C3\u05F0\u05F1\u05F2\u05F3\u05F4\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u05D0\u05D1\u05D2\u05D3\u05D4\u05D5\u05D6\u05D7\u05D8\u05D9\u05DA\u05DB\u05DC\u05DD\u05DE\u05DF\u05E0\u05E1\u05E2\u05E3\u05E4\u05E5\u05E6\u05E7\u05E8\u05E9\u05EA\uFFFD\uFFFD\u200E\u200F\uFFFD" + }, + "win1255": "windows1255", + "cp1255": "windows1255", + "windows1256": { + "type": "_sbcs", + "chars": "\u20AC\u067E\u201A\u0192\u201E\u2026\u2020\u2021\u02C6\u2030\u0679\u2039\u0152\u0686\u0698\u0688\u06AF\u2018\u2019\u201C\u201D\u2022\u2013\u2014\u06A9\u2122\u0691\u203A\u0153\u200C\u200D\u06BA\xA0\u060C\xA2\xA3\xA4\xA5\xA6\xA7\xA8\xA9\u06BE\xAB\xAC\xAD\xAE\xAF\xB0\xB1\xB2\xB3\xB4\xB5\xB6\xB7\xB8\xB9\u061B\xBB\xBC\xBD\xBE\u061F\u06C1\u0621\u0622\u0623\u0624\u0625\u0626\u0627\u0628\u0629\u062A\u062B\u062C\u062D\u062E\u062F\u0630\u0631\u0632\u0633\u0634\u0635\u0636\xD7\u0637\u0638\u0639\u063A\u0640\u0641\u0642\u0643\xE0\u0644\xE2\u0645\u0646\u0647\u0648\xE7\xE8\xE9\xEA\xEB\u0649\u064A\xEE\xEF\u064B\u064C\u064D\u064E\xF4\u064F\u0650\xF7\u0651\xF9\u0652\xFB\xFC\u200E\u200F\u06D2" + }, + "win1256": "windows1256", + "cp1256": "windows1256", + "windows1257": { + "type": "_sbcs", + "chars": "\u20AC\uFFFD\u201A\uFFFD\u201E\u2026\u2020\u2021\uFFFD\u2030\uFFFD\u2039\uFFFD\xA8\u02C7\xB8\uFFFD\u2018\u2019\u201C\u201D\u2022\u2013\u2014\uFFFD\u2122\uFFFD\u203A\uFFFD\xAF\u02DB\uFFFD\xA0\uFFFD\xA2\xA3\xA4\uFFFD\xA6\xA7\xD8\xA9\u0156\xAB\xAC\xAD\xAE\xC6\xB0\xB1\xB2\xB3\xB4\xB5\xB6\xB7\xF8\xB9\u0157\xBB\xBC\xBD\xBE\xE6\u0104\u012E\u0100\u0106\xC4\xC5\u0118\u0112\u010C\xC9\u0179\u0116\u0122\u0136\u012A\u013B\u0160\u0143\u0145\xD3\u014C\xD5\xD6\xD7\u0172\u0141\u015A\u016A\xDC\u017B\u017D\xDF\u0105\u012F\u0101\u0107\xE4\xE5\u0119\u0113\u010D\xE9\u017A\u0117\u0123\u0137\u012B\u013C\u0161\u0144\u0146\xF3\u014D\xF5\xF6\xF7\u0173\u0142\u015B\u016B\xFC\u017C\u017E\u02D9" + }, + "win1257": "windows1257", + "cp1257": "windows1257", + "windows1258": { + "type": "_sbcs", + "chars": "\u20AC\uFFFD\u201A\u0192\u201E\u2026\u2020\u2021\u02C6\u2030\uFFFD\u2039\u0152\uFFFD\uFFFD\uFFFD\uFFFD\u2018\u2019\u201C\u201D\u2022\u2013\u2014\u02DC\u2122\uFFFD\u203A\u0153\uFFFD\uFFFD\u0178\xA0\xA1\xA2\xA3\xA4\xA5\xA6\xA7\xA8\xA9\xAA\xAB\xAC\xAD\xAE\xAF\xB0\xB1\xB2\xB3\xB4\xB5\xB6\xB7\xB8\xB9\xBA\xBB\xBC\xBD\xBE\xBF\xC0\xC1\xC2\u0102\xC4\xC5\xC6\xC7\xC8\xC9\xCA\xCB\u0300\xCD\xCE\xCF\u0110\xD1\u0309\xD3\xD4\u01A0\xD6\xD7\xD8\xD9\xDA\xDB\xDC\u01AF\u0303\xDF\xE0\xE1\xE2\u0103\xE4\xE5\xE6\xE7\xE8\xE9\xEA\xEB\u0301\xED\xEE\xEF\u0111\xF1\u0323\xF3\xF4\u01A1\xF6\xF7\xF8\xF9\xFA\xFB\xFC\u01B0\u20AB\xFF" + }, + "win1258": "windows1258", + "cp1258": "windows1258", + "iso88591": { + "type": "_sbcs", + "chars": "\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8A\x8B\x8C\x8D\x8E\x8F\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9A\x9B\x9C\x9D\x9E\x9F\xA0\xA1\xA2\xA3\xA4\xA5\xA6\xA7\xA8\xA9\xAA\xAB\xAC\xAD\xAE\xAF\xB0\xB1\xB2\xB3\xB4\xB5\xB6\xB7\xB8\xB9\xBA\xBB\xBC\xBD\xBE\xBF\xC0\xC1\xC2\xC3\xC4\xC5\xC6\xC7\xC8\xC9\xCA\xCB\xCC\xCD\xCE\xCF\xD0\xD1\xD2\xD3\xD4\xD5\xD6\xD7\xD8\xD9\xDA\xDB\xDC\xDD\xDE\xDF\xE0\xE1\xE2\xE3\xE4\xE5\xE6\xE7\xE8\xE9\xEA\xEB\xEC\xED\xEE\xEF\xF0\xF1\xF2\xF3\xF4\xF5\xF6\xF7\xF8\xF9\xFA\xFB\xFC\xFD\xFE\xFF" + }, + "cp28591": "iso88591", + "iso88592": { + "type": "_sbcs", + "chars": "\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8A\x8B\x8C\x8D\x8E\x8F\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9A\x9B\x9C\x9D\x9E\x9F\xA0\u0104\u02D8\u0141\xA4\u013D\u015A\xA7\xA8\u0160\u015E\u0164\u0179\xAD\u017D\u017B\xB0\u0105\u02DB\u0142\xB4\u013E\u015B\u02C7\xB8\u0161\u015F\u0165\u017A\u02DD\u017E\u017C\u0154\xC1\xC2\u0102\xC4\u0139\u0106\xC7\u010C\xC9\u0118\xCB\u011A\xCD\xCE\u010E\u0110\u0143\u0147\xD3\xD4\u0150\xD6\xD7\u0158\u016E\xDA\u0170\xDC\xDD\u0162\xDF\u0155\xE1\xE2\u0103\xE4\u013A\u0107\xE7\u010D\xE9\u0119\xEB\u011B\xED\xEE\u010F\u0111\u0144\u0148\xF3\xF4\u0151\xF6\xF7\u0159\u016F\xFA\u0171\xFC\xFD\u0163\u02D9" + }, + "cp28592": "iso88592", + "iso88593": { + "type": "_sbcs", + "chars": "\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8A\x8B\x8C\x8D\x8E\x8F\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9A\x9B\x9C\x9D\x9E\x9F\xA0\u0126\u02D8\xA3\xA4\uFFFD\u0124\xA7\xA8\u0130\u015E\u011E\u0134\xAD\uFFFD\u017B\xB0\u0127\xB2\xB3\xB4\xB5\u0125\xB7\xB8\u0131\u015F\u011F\u0135\xBD\uFFFD\u017C\xC0\xC1\xC2\uFFFD\xC4\u010A\u0108\xC7\xC8\xC9\xCA\xCB\xCC\xCD\xCE\xCF\uFFFD\xD1\xD2\xD3\xD4\u0120\xD6\xD7\u011C\xD9\xDA\xDB\xDC\u016C\u015C\xDF\xE0\xE1\xE2\uFFFD\xE4\u010B\u0109\xE7\xE8\xE9\xEA\xEB\xEC\xED\xEE\xEF\uFFFD\xF1\xF2\xF3\xF4\u0121\xF6\xF7\u011D\xF9\xFA\xFB\xFC\u016D\u015D\u02D9" + }, + "cp28593": "iso88593", + "iso88594": { + "type": "_sbcs", + "chars": "\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8A\x8B\x8C\x8D\x8E\x8F\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9A\x9B\x9C\x9D\x9E\x9F\xA0\u0104\u0138\u0156\xA4\u0128\u013B\xA7\xA8\u0160\u0112\u0122\u0166\xAD\u017D\xAF\xB0\u0105\u02DB\u0157\xB4\u0129\u013C\u02C7\xB8\u0161\u0113\u0123\u0167\u014A\u017E\u014B\u0100\xC1\xC2\xC3\xC4\xC5\xC6\u012E\u010C\xC9\u0118\xCB\u0116\xCD\xCE\u012A\u0110\u0145\u014C\u0136\xD4\xD5\xD6\xD7\xD8\u0172\xDA\xDB\xDC\u0168\u016A\xDF\u0101\xE1\xE2\xE3\xE4\xE5\xE6\u012F\u010D\xE9\u0119\xEB\u0117\xED\xEE\u012B\u0111\u0146\u014D\u0137\xF4\xF5\xF6\xF7\xF8\u0173\xFA\xFB\xFC\u0169\u016B\u02D9" + }, + "cp28594": "iso88594", + "iso88595": { + "type": "_sbcs", + "chars": "\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8A\x8B\x8C\x8D\x8E\x8F\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9A\x9B\x9C\x9D\x9E\x9F\xA0\u0401\u0402\u0403\u0404\u0405\u0406\u0407\u0408\u0409\u040A\u040B\u040C\xAD\u040E\u040F\u0410\u0411\u0412\u0413\u0414\u0415\u0416\u0417\u0418\u0419\u041A\u041B\u041C\u041D\u041E\u041F\u0420\u0421\u0422\u0423\u0424\u0425\u0426\u0427\u0428\u0429\u042A\u042B\u042C\u042D\u042E\u042F\u0430\u0431\u0432\u0433\u0434\u0435\u0436\u0437\u0438\u0439\u043A\u043B\u043C\u043D\u043E\u043F\u0440\u0441\u0442\u0443\u0444\u0445\u0446\u0447\u0448\u0449\u044A\u044B\u044C\u044D\u044E\u044F\u2116\u0451\u0452\u0453\u0454\u0455\u0456\u0457\u0458\u0459\u045A\u045B\u045C\xA7\u045E\u045F" + }, + "cp28595": "iso88595", + "iso88596": { + "type": "_sbcs", + "chars": "\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8A\x8B\x8C\x8D\x8E\x8F\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9A\x9B\x9C\x9D\x9E\x9F\xA0\uFFFD\uFFFD\uFFFD\xA4\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u060C\xAD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u061B\uFFFD\uFFFD\uFFFD\u061F\uFFFD\u0621\u0622\u0623\u0624\u0625\u0626\u0627\u0628\u0629\u062A\u062B\u062C\u062D\u062E\u062F\u0630\u0631\u0632\u0633\u0634\u0635\u0636\u0637\u0638\u0639\u063A\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u0640\u0641\u0642\u0643\u0644\u0645\u0646\u0647\u0648\u0649\u064A\u064B\u064C\u064D\u064E\u064F\u0650\u0651\u0652\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" + }, + "cp28596": "iso88596", + "iso88597": { + "type": "_sbcs", + "chars": "\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8A\x8B\x8C\x8D\x8E\x8F\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9A\x9B\x9C\x9D\x9E\x9F\xA0\u2018\u2019\xA3\u20AC\u20AF\xA6\xA7\xA8\xA9\u037A\xAB\xAC\xAD\uFFFD\u2015\xB0\xB1\xB2\xB3\u0384\u0385\u0386\xB7\u0388\u0389\u038A\xBB\u038C\xBD\u038E\u038F\u0390\u0391\u0392\u0393\u0394\u0395\u0396\u0397\u0398\u0399\u039A\u039B\u039C\u039D\u039E\u039F\u03A0\u03A1\uFFFD\u03A3\u03A4\u03A5\u03A6\u03A7\u03A8\u03A9\u03AA\u03AB\u03AC\u03AD\u03AE\u03AF\u03B0\u03B1\u03B2\u03B3\u03B4\u03B5\u03B6\u03B7\u03B8\u03B9\u03BA\u03BB\u03BC\u03BD\u03BE\u03BF\u03C0\u03C1\u03C2\u03C3\u03C4\u03C5\u03C6\u03C7\u03C8\u03C9\u03CA\u03CB\u03CC\u03CD\u03CE\uFFFD" + }, + "cp28597": "iso88597", + "iso88598": { + "type": "_sbcs", + "chars": "\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8A\x8B\x8C\x8D\x8E\x8F\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9A\x9B\x9C\x9D\x9E\x9F\xA0\uFFFD\xA2\xA3\xA4\xA5\xA6\xA7\xA8\xA9\xD7\xAB\xAC\xAD\xAE\xAF\xB0\xB1\xB2\xB3\xB4\xB5\xB6\xB7\xB8\xB9\xF7\xBB\xBC\xBD\xBE\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u2017\u05D0\u05D1\u05D2\u05D3\u05D4\u05D5\u05D6\u05D7\u05D8\u05D9\u05DA\u05DB\u05DC\u05DD\u05DE\u05DF\u05E0\u05E1\u05E2\u05E3\u05E4\u05E5\u05E6\u05E7\u05E8\u05E9\u05EA\uFFFD\uFFFD\u200E\u200F\uFFFD" + }, + "cp28598": "iso88598", + "iso88599": { + "type": "_sbcs", + "chars": "\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8A\x8B\x8C\x8D\x8E\x8F\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9A\x9B\x9C\x9D\x9E\x9F\xA0\xA1\xA2\xA3\xA4\xA5\xA6\xA7\xA8\xA9\xAA\xAB\xAC\xAD\xAE\xAF\xB0\xB1\xB2\xB3\xB4\xB5\xB6\xB7\xB8\xB9\xBA\xBB\xBC\xBD\xBE\xBF\xC0\xC1\xC2\xC3\xC4\xC5\xC6\xC7\xC8\xC9\xCA\xCB\xCC\xCD\xCE\xCF\u011E\xD1\xD2\xD3\xD4\xD5\xD6\xD7\xD8\xD9\xDA\xDB\xDC\u0130\u015E\xDF\xE0\xE1\xE2\xE3\xE4\xE5\xE6\xE7\xE8\xE9\xEA\xEB\xEC\xED\xEE\xEF\u011F\xF1\xF2\xF3\xF4\xF5\xF6\xF7\xF8\xF9\xFA\xFB\xFC\u0131\u015F\xFF" + }, + "cp28599": "iso88599", + "iso885910": { + "type": "_sbcs", + "chars": "\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8A\x8B\x8C\x8D\x8E\x8F\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9A\x9B\x9C\x9D\x9E\x9F\xA0\u0104\u0112\u0122\u012A\u0128\u0136\xA7\u013B\u0110\u0160\u0166\u017D\xAD\u016A\u014A\xB0\u0105\u0113\u0123\u012B\u0129\u0137\xB7\u013C\u0111\u0161\u0167\u017E\u2015\u016B\u014B\u0100\xC1\xC2\xC3\xC4\xC5\xC6\u012E\u010C\xC9\u0118\xCB\u0116\xCD\xCE\xCF\xD0\u0145\u014C\xD3\xD4\xD5\xD6\u0168\xD8\u0172\xDA\xDB\xDC\xDD\xDE\xDF\u0101\xE1\xE2\xE3\xE4\xE5\xE6\u012F\u010D\xE9\u0119\xEB\u0117\xED\xEE\xEF\xF0\u0146\u014D\xF3\xF4\xF5\xF6\u0169\xF8\u0173\xFA\xFB\xFC\xFD\xFE\u0138" + }, + "cp28600": "iso885910", + "iso885911": { + "type": "_sbcs", + "chars": "\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8A\x8B\x8C\x8D\x8E\x8F\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9A\x9B\x9C\x9D\x9E\x9F\xA0\u0E01\u0E02\u0E03\u0E04\u0E05\u0E06\u0E07\u0E08\u0E09\u0E0A\u0E0B\u0E0C\u0E0D\u0E0E\u0E0F\u0E10\u0E11\u0E12\u0E13\u0E14\u0E15\u0E16\u0E17\u0E18\u0E19\u0E1A\u0E1B\u0E1C\u0E1D\u0E1E\u0E1F\u0E20\u0E21\u0E22\u0E23\u0E24\u0E25\u0E26\u0E27\u0E28\u0E29\u0E2A\u0E2B\u0E2C\u0E2D\u0E2E\u0E2F\u0E30\u0E31\u0E32\u0E33\u0E34\u0E35\u0E36\u0E37\u0E38\u0E39\u0E3A\uFFFD\uFFFD\uFFFD\uFFFD\u0E3F\u0E40\u0E41\u0E42\u0E43\u0E44\u0E45\u0E46\u0E47\u0E48\u0E49\u0E4A\u0E4B\u0E4C\u0E4D\u0E4E\u0E4F\u0E50\u0E51\u0E52\u0E53\u0E54\u0E55\u0E56\u0E57\u0E58\u0E59\u0E5A\u0E5B\uFFFD\uFFFD\uFFFD\uFFFD" + }, + "cp28601": "iso885911", + "iso885913": { + "type": "_sbcs", + "chars": "\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8A\x8B\x8C\x8D\x8E\x8F\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9A\x9B\x9C\x9D\x9E\x9F\xA0\u201D\xA2\xA3\xA4\u201E\xA6\xA7\xD8\xA9\u0156\xAB\xAC\xAD\xAE\xC6\xB0\xB1\xB2\xB3\u201C\xB5\xB6\xB7\xF8\xB9\u0157\xBB\xBC\xBD\xBE\xE6\u0104\u012E\u0100\u0106\xC4\xC5\u0118\u0112\u010C\xC9\u0179\u0116\u0122\u0136\u012A\u013B\u0160\u0143\u0145\xD3\u014C\xD5\xD6\xD7\u0172\u0141\u015A\u016A\xDC\u017B\u017D\xDF\u0105\u012F\u0101\u0107\xE4\xE5\u0119\u0113\u010D\xE9\u017A\u0117\u0123\u0137\u012B\u013C\u0161\u0144\u0146\xF3\u014D\xF5\xF6\xF7\u0173\u0142\u015B\u016B\xFC\u017C\u017E\u2019" + }, + "cp28603": "iso885913", + "iso885914": { + "type": "_sbcs", + "chars": "\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8A\x8B\x8C\x8D\x8E\x8F\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9A\x9B\x9C\x9D\x9E\x9F\xA0\u1E02\u1E03\xA3\u010A\u010B\u1E0A\xA7\u1E80\xA9\u1E82\u1E0B\u1EF2\xAD\xAE\u0178\u1E1E\u1E1F\u0120\u0121\u1E40\u1E41\xB6\u1E56\u1E81\u1E57\u1E83\u1E60\u1EF3\u1E84\u1E85\u1E61\xC0\xC1\xC2\xC3\xC4\xC5\xC6\xC7\xC8\xC9\xCA\xCB\xCC\xCD\xCE\xCF\u0174\xD1\xD2\xD3\xD4\xD5\xD6\u1E6A\xD8\xD9\xDA\xDB\xDC\xDD\u0176\xDF\xE0\xE1\xE2\xE3\xE4\xE5\xE6\xE7\xE8\xE9\xEA\xEB\xEC\xED\xEE\xEF\u0175\xF1\xF2\xF3\xF4\xF5\xF6\u1E6B\xF8\xF9\xFA\xFB\xFC\xFD\u0177\xFF" + }, + "cp28604": "iso885914", + "iso885915": { + "type": "_sbcs", + "chars": "\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8A\x8B\x8C\x8D\x8E\x8F\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9A\x9B\x9C\x9D\x9E\x9F\xA0\xA1\xA2\xA3\u20AC\xA5\u0160\xA7\u0161\xA9\xAA\xAB\xAC\xAD\xAE\xAF\xB0\xB1\xB2\xB3\u017D\xB5\xB6\xB7\u017E\xB9\xBA\xBB\u0152\u0153\u0178\xBF\xC0\xC1\xC2\xC3\xC4\xC5\xC6\xC7\xC8\xC9\xCA\xCB\xCC\xCD\xCE\xCF\xD0\xD1\xD2\xD3\xD4\xD5\xD6\xD7\xD8\xD9\xDA\xDB\xDC\xDD\xDE\xDF\xE0\xE1\xE2\xE3\xE4\xE5\xE6\xE7\xE8\xE9\xEA\xEB\xEC\xED\xEE\xEF\xF0\xF1\xF2\xF3\xF4\xF5\xF6\xF7\xF8\xF9\xFA\xFB\xFC\xFD\xFE\xFF" + }, + "cp28605": "iso885915", + "iso885916": { + "type": "_sbcs", + "chars": "\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8A\x8B\x8C\x8D\x8E\x8F\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9A\x9B\x9C\x9D\x9E\x9F\xA0\u0104\u0105\u0141\u20AC\u201E\u0160\xA7\u0161\xA9\u0218\xAB\u0179\xAD\u017A\u017B\xB0\xB1\u010C\u0142\u017D\u201D\xB6\xB7\u017E\u010D\u0219\xBB\u0152\u0153\u0178\u017C\xC0\xC1\xC2\u0102\xC4\u0106\xC6\xC7\xC8\xC9\xCA\xCB\xCC\xCD\xCE\xCF\u0110\u0143\xD2\xD3\xD4\u0150\xD6\u015A\u0170\xD9\xDA\xDB\xDC\u0118\u021A\xDF\xE0\xE1\xE2\u0103\xE4\u0107\xE6\xE7\xE8\xE9\xEA\xEB\xEC\xED\xEE\xEF\u0111\u0144\xF2\xF3\xF4\u0151\xF6\u015B\u0171\xF9\xFA\xFB\xFC\u0119\u021B\xFF" + }, + "cp28606": "iso885916", + "cp437": { + "type": "_sbcs", + "chars": "\xC7\xFC\xE9\xE2\xE4\xE0\xE5\xE7\xEA\xEB\xE8\xEF\xEE\xEC\xC4\xC5\xC9\xE6\xC6\xF4\xF6\xF2\xFB\xF9\xFF\xD6\xDC\xA2\xA3\xA5\u20A7\u0192\xE1\xED\xF3\xFA\xF1\xD1\xAA\xBA\xBF\u2310\xAC\xBD\xBC\xA1\xAB\xBB\u2591\u2592\u2593\u2502\u2524\u2561\u2562\u2556\u2555\u2563\u2551\u2557\u255D\u255C\u255B\u2510\u2514\u2534\u252C\u251C\u2500\u253C\u255E\u255F\u255A\u2554\u2569\u2566\u2560\u2550\u256C\u2567\u2568\u2564\u2565\u2559\u2558\u2552\u2553\u256B\u256A\u2518\u250C\u2588\u2584\u258C\u2590\u2580\u03B1\xDF\u0393\u03C0\u03A3\u03C3\xB5\u03C4\u03A6\u0398\u03A9\u03B4\u221E\u03C6\u03B5\u2229\u2261\xB1\u2265\u2264\u2320\u2321\xF7\u2248\xB0\u2219\xB7\u221A\u207F\xB2\u25A0\xA0" + }, + "ibm437": "cp437", + "csibm437": "cp437", + "cp737": { + "type": "_sbcs", + "chars": "\u0391\u0392\u0393\u0394\u0395\u0396\u0397\u0398\u0399\u039A\u039B\u039C\u039D\u039E\u039F\u03A0\u03A1\u03A3\u03A4\u03A5\u03A6\u03A7\u03A8\u03A9\u03B1\u03B2\u03B3\u03B4\u03B5\u03B6\u03B7\u03B8\u03B9\u03BA\u03BB\u03BC\u03BD\u03BE\u03BF\u03C0\u03C1\u03C3\u03C2\u03C4\u03C5\u03C6\u03C7\u03C8\u2591\u2592\u2593\u2502\u2524\u2561\u2562\u2556\u2555\u2563\u2551\u2557\u255D\u255C\u255B\u2510\u2514\u2534\u252C\u251C\u2500\u253C\u255E\u255F\u255A\u2554\u2569\u2566\u2560\u2550\u256C\u2567\u2568\u2564\u2565\u2559\u2558\u2552\u2553\u256B\u256A\u2518\u250C\u2588\u2584\u258C\u2590\u2580\u03C9\u03AC\u03AD\u03AE\u03CA\u03AF\u03CC\u03CD\u03CB\u03CE\u0386\u0388\u0389\u038A\u038C\u038E\u038F\xB1\u2265\u2264\u03AA\u03AB\xF7\u2248\xB0\u2219\xB7\u221A\u207F\xB2\u25A0\xA0" + }, + "ibm737": "cp737", + "csibm737": "cp737", + "cp775": { + "type": "_sbcs", + "chars": "\u0106\xFC\xE9\u0101\xE4\u0123\xE5\u0107\u0142\u0113\u0156\u0157\u012B\u0179\xC4\xC5\xC9\xE6\xC6\u014D\xF6\u0122\xA2\u015A\u015B\xD6\xDC\xF8\xA3\xD8\xD7\xA4\u0100\u012A\xF3\u017B\u017C\u017A\u201D\xA6\xA9\xAE\xAC\xBD\xBC\u0141\xAB\xBB\u2591\u2592\u2593\u2502\u2524\u0104\u010C\u0118\u0116\u2563\u2551\u2557\u255D\u012E\u0160\u2510\u2514\u2534\u252C\u251C\u2500\u253C\u0172\u016A\u255A\u2554\u2569\u2566\u2560\u2550\u256C\u017D\u0105\u010D\u0119\u0117\u012F\u0161\u0173\u016B\u017E\u2518\u250C\u2588\u2584\u258C\u2590\u2580\xD3\xDF\u014C\u0143\xF5\xD5\xB5\u0144\u0136\u0137\u013B\u013C\u0146\u0112\u0145\u2019\xAD\xB1\u201C\xBE\xB6\xA7\xF7\u201E\xB0\u2219\xB7\xB9\xB3\xB2\u25A0\xA0" + }, + "ibm775": "cp775", + "csibm775": "cp775", + "cp850": { + "type": "_sbcs", + "chars": "\xC7\xFC\xE9\xE2\xE4\xE0\xE5\xE7\xEA\xEB\xE8\xEF\xEE\xEC\xC4\xC5\xC9\xE6\xC6\xF4\xF6\xF2\xFB\xF9\xFF\xD6\xDC\xF8\xA3\xD8\xD7\u0192\xE1\xED\xF3\xFA\xF1\xD1\xAA\xBA\xBF\xAE\xAC\xBD\xBC\xA1\xAB\xBB\u2591\u2592\u2593\u2502\u2524\xC1\xC2\xC0\xA9\u2563\u2551\u2557\u255D\xA2\xA5\u2510\u2514\u2534\u252C\u251C\u2500\u253C\xE3\xC3\u255A\u2554\u2569\u2566\u2560\u2550\u256C\xA4\xF0\xD0\xCA\xCB\xC8\u0131\xCD\xCE\xCF\u2518\u250C\u2588\u2584\xA6\xCC\u2580\xD3\xDF\xD4\xD2\xF5\xD5\xB5\xFE\xDE\xDA\xDB\xD9\xFD\xDD\xAF\xB4\xAD\xB1\u2017\xBE\xB6\xA7\xF7\xB8\xB0\xA8\xB7\xB9\xB3\xB2\u25A0\xA0" + }, + "ibm850": "cp850", + "csibm850": "cp850", + "cp852": { + "type": "_sbcs", + "chars": "\xC7\xFC\xE9\xE2\xE4\u016F\u0107\xE7\u0142\xEB\u0150\u0151\xEE\u0179\xC4\u0106\xC9\u0139\u013A\xF4\xF6\u013D\u013E\u015A\u015B\xD6\xDC\u0164\u0165\u0141\xD7\u010D\xE1\xED\xF3\xFA\u0104\u0105\u017D\u017E\u0118\u0119\xAC\u017A\u010C\u015F\xAB\xBB\u2591\u2592\u2593\u2502\u2524\xC1\xC2\u011A\u015E\u2563\u2551\u2557\u255D\u017B\u017C\u2510\u2514\u2534\u252C\u251C\u2500\u253C\u0102\u0103\u255A\u2554\u2569\u2566\u2560\u2550\u256C\xA4\u0111\u0110\u010E\xCB\u010F\u0147\xCD\xCE\u011B\u2518\u250C\u2588\u2584\u0162\u016E\u2580\xD3\xDF\xD4\u0143\u0144\u0148\u0160\u0161\u0154\xDA\u0155\u0170\xFD\xDD\u0163\xB4\xAD\u02DD\u02DB\u02C7\u02D8\xA7\xF7\xB8\xB0\xA8\u02D9\u0171\u0158\u0159\u25A0\xA0" + }, + "ibm852": "cp852", + "csibm852": "cp852", + "cp855": { + "type": "_sbcs", + "chars": "\u0452\u0402\u0453\u0403\u0451\u0401\u0454\u0404\u0455\u0405\u0456\u0406\u0457\u0407\u0458\u0408\u0459\u0409\u045A\u040A\u045B\u040B\u045C\u040C\u045E\u040E\u045F\u040F\u044E\u042E\u044A\u042A\u0430\u0410\u0431\u0411\u0446\u0426\u0434\u0414\u0435\u0415\u0444\u0424\u0433\u0413\xAB\xBB\u2591\u2592\u2593\u2502\u2524\u0445\u0425\u0438\u0418\u2563\u2551\u2557\u255D\u0439\u0419\u2510\u2514\u2534\u252C\u251C\u2500\u253C\u043A\u041A\u255A\u2554\u2569\u2566\u2560\u2550\u256C\xA4\u043B\u041B\u043C\u041C\u043D\u041D\u043E\u041E\u043F\u2518\u250C\u2588\u2584\u041F\u044F\u2580\u042F\u0440\u0420\u0441\u0421\u0442\u0422\u0443\u0423\u0436\u0416\u0432\u0412\u044C\u042C\u2116\xAD\u044B\u042B\u0437\u0417\u0448\u0428\u044D\u042D\u0449\u0429\u0447\u0427\xA7\u25A0\xA0" + }, + "ibm855": "cp855", + "csibm855": "cp855", + "cp856": { + "type": "_sbcs", + "chars": "\u05D0\u05D1\u05D2\u05D3\u05D4\u05D5\u05D6\u05D7\u05D8\u05D9\u05DA\u05DB\u05DC\u05DD\u05DE\u05DF\u05E0\u05E1\u05E2\u05E3\u05E4\u05E5\u05E6\u05E7\u05E8\u05E9\u05EA\uFFFD\xA3\uFFFD\xD7\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\xAE\xAC\xBD\xBC\uFFFD\xAB\xBB\u2591\u2592\u2593\u2502\u2524\uFFFD\uFFFD\uFFFD\xA9\u2563\u2551\u2557\u255D\xA2\xA5\u2510\u2514\u2534\u252C\u251C\u2500\u253C\uFFFD\uFFFD\u255A\u2554\u2569\u2566\u2560\u2550\u256C\xA4\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u2518\u250C\u2588\u2584\xA6\uFFFD\u2580\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\xB5\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\xAF\xB4\xAD\xB1\u2017\xBE\xB6\xA7\xF7\xB8\xB0\xA8\xB7\xB9\xB3\xB2\u25A0\xA0" + }, + "ibm856": "cp856", + "csibm856": "cp856", + "cp857": { + "type": "_sbcs", + "chars": "\xC7\xFC\xE9\xE2\xE4\xE0\xE5\xE7\xEA\xEB\xE8\xEF\xEE\u0131\xC4\xC5\xC9\xE6\xC6\xF4\xF6\xF2\xFB\xF9\u0130\xD6\xDC\xF8\xA3\xD8\u015E\u015F\xE1\xED\xF3\xFA\xF1\xD1\u011E\u011F\xBF\xAE\xAC\xBD\xBC\xA1\xAB\xBB\u2591\u2592\u2593\u2502\u2524\xC1\xC2\xC0\xA9\u2563\u2551\u2557\u255D\xA2\xA5\u2510\u2514\u2534\u252C\u251C\u2500\u253C\xE3\xC3\u255A\u2554\u2569\u2566\u2560\u2550\u256C\xA4\xBA\xAA\xCA\xCB\xC8\uFFFD\xCD\xCE\xCF\u2518\u250C\u2588\u2584\xA6\xCC\u2580\xD3\xDF\xD4\xD2\xF5\xD5\xB5\uFFFD\xD7\xDA\xDB\xD9\xEC\xFF\xAF\xB4\xAD\xB1\uFFFD\xBE\xB6\xA7\xF7\xB8\xB0\xA8\xB7\xB9\xB3\xB2\u25A0\xA0" + }, + "ibm857": "cp857", + "csibm857": "cp857", + "cp858": { + "type": "_sbcs", + "chars": "\xC7\xFC\xE9\xE2\xE4\xE0\xE5\xE7\xEA\xEB\xE8\xEF\xEE\xEC\xC4\xC5\xC9\xE6\xC6\xF4\xF6\xF2\xFB\xF9\xFF\xD6\xDC\xF8\xA3\xD8\xD7\u0192\xE1\xED\xF3\xFA\xF1\xD1\xAA\xBA\xBF\xAE\xAC\xBD\xBC\xA1\xAB\xBB\u2591\u2592\u2593\u2502\u2524\xC1\xC2\xC0\xA9\u2563\u2551\u2557\u255D\xA2\xA5\u2510\u2514\u2534\u252C\u251C\u2500\u253C\xE3\xC3\u255A\u2554\u2569\u2566\u2560\u2550\u256C\xA4\xF0\xD0\xCA\xCB\xC8\u20AC\xCD\xCE\xCF\u2518\u250C\u2588\u2584\xA6\xCC\u2580\xD3\xDF\xD4\xD2\xF5\xD5\xB5\xFE\xDE\xDA\xDB\xD9\xFD\xDD\xAF\xB4\xAD\xB1\u2017\xBE\xB6\xA7\xF7\xB8\xB0\xA8\xB7\xB9\xB3\xB2\u25A0\xA0" + }, + "ibm858": "cp858", + "csibm858": "cp858", + "cp860": { + "type": "_sbcs", + "chars": "\xC7\xFC\xE9\xE2\xE3\xE0\xC1\xE7\xEA\xCA\xE8\xCD\xD4\xEC\xC3\xC2\xC9\xC0\xC8\xF4\xF5\xF2\xDA\xF9\xCC\xD5\xDC\xA2\xA3\xD9\u20A7\xD3\xE1\xED\xF3\xFA\xF1\xD1\xAA\xBA\xBF\xD2\xAC\xBD\xBC\xA1\xAB\xBB\u2591\u2592\u2593\u2502\u2524\u2561\u2562\u2556\u2555\u2563\u2551\u2557\u255D\u255C\u255B\u2510\u2514\u2534\u252C\u251C\u2500\u253C\u255E\u255F\u255A\u2554\u2569\u2566\u2560\u2550\u256C\u2567\u2568\u2564\u2565\u2559\u2558\u2552\u2553\u256B\u256A\u2518\u250C\u2588\u2584\u258C\u2590\u2580\u03B1\xDF\u0393\u03C0\u03A3\u03C3\xB5\u03C4\u03A6\u0398\u03A9\u03B4\u221E\u03C6\u03B5\u2229\u2261\xB1\u2265\u2264\u2320\u2321\xF7\u2248\xB0\u2219\xB7\u221A\u207F\xB2\u25A0\xA0" + }, + "ibm860": "cp860", + "csibm860": "cp860", + "cp861": { + "type": "_sbcs", + "chars": "\xC7\xFC\xE9\xE2\xE4\xE0\xE5\xE7\xEA\xEB\xE8\xD0\xF0\xDE\xC4\xC5\xC9\xE6\xC6\xF4\xF6\xFE\xFB\xDD\xFD\xD6\xDC\xF8\xA3\xD8\u20A7\u0192\xE1\xED\xF3\xFA\xC1\xCD\xD3\xDA\xBF\u2310\xAC\xBD\xBC\xA1\xAB\xBB\u2591\u2592\u2593\u2502\u2524\u2561\u2562\u2556\u2555\u2563\u2551\u2557\u255D\u255C\u255B\u2510\u2514\u2534\u252C\u251C\u2500\u253C\u255E\u255F\u255A\u2554\u2569\u2566\u2560\u2550\u256C\u2567\u2568\u2564\u2565\u2559\u2558\u2552\u2553\u256B\u256A\u2518\u250C\u2588\u2584\u258C\u2590\u2580\u03B1\xDF\u0393\u03C0\u03A3\u03C3\xB5\u03C4\u03A6\u0398\u03A9\u03B4\u221E\u03C6\u03B5\u2229\u2261\xB1\u2265\u2264\u2320\u2321\xF7\u2248\xB0\u2219\xB7\u221A\u207F\xB2\u25A0\xA0" + }, + "ibm861": "cp861", + "csibm861": "cp861", + "cp862": { + "type": "_sbcs", + "chars": "\u05D0\u05D1\u05D2\u05D3\u05D4\u05D5\u05D6\u05D7\u05D8\u05D9\u05DA\u05DB\u05DC\u05DD\u05DE\u05DF\u05E0\u05E1\u05E2\u05E3\u05E4\u05E5\u05E6\u05E7\u05E8\u05E9\u05EA\xA2\xA3\xA5\u20A7\u0192\xE1\xED\xF3\xFA\xF1\xD1\xAA\xBA\xBF\u2310\xAC\xBD\xBC\xA1\xAB\xBB\u2591\u2592\u2593\u2502\u2524\u2561\u2562\u2556\u2555\u2563\u2551\u2557\u255D\u255C\u255B\u2510\u2514\u2534\u252C\u251C\u2500\u253C\u255E\u255F\u255A\u2554\u2569\u2566\u2560\u2550\u256C\u2567\u2568\u2564\u2565\u2559\u2558\u2552\u2553\u256B\u256A\u2518\u250C\u2588\u2584\u258C\u2590\u2580\u03B1\xDF\u0393\u03C0\u03A3\u03C3\xB5\u03C4\u03A6\u0398\u03A9\u03B4\u221E\u03C6\u03B5\u2229\u2261\xB1\u2265\u2264\u2320\u2321\xF7\u2248\xB0\u2219\xB7\u221A\u207F\xB2\u25A0\xA0" + }, + "ibm862": "cp862", + "csibm862": "cp862", + "cp863": { + "type": "_sbcs", + "chars": "\xC7\xFC\xE9\xE2\xC2\xE0\xB6\xE7\xEA\xEB\xE8\xEF\xEE\u2017\xC0\xA7\xC9\xC8\xCA\xF4\xCB\xCF\xFB\xF9\xA4\xD4\xDC\xA2\xA3\xD9\xDB\u0192\xA6\xB4\xF3\xFA\xA8\xB8\xB3\xAF\xCE\u2310\xAC\xBD\xBC\xBE\xAB\xBB\u2591\u2592\u2593\u2502\u2524\u2561\u2562\u2556\u2555\u2563\u2551\u2557\u255D\u255C\u255B\u2510\u2514\u2534\u252C\u251C\u2500\u253C\u255E\u255F\u255A\u2554\u2569\u2566\u2560\u2550\u256C\u2567\u2568\u2564\u2565\u2559\u2558\u2552\u2553\u256B\u256A\u2518\u250C\u2588\u2584\u258C\u2590\u2580\u03B1\xDF\u0393\u03C0\u03A3\u03C3\xB5\u03C4\u03A6\u0398\u03A9\u03B4\u221E\u03C6\u03B5\u2229\u2261\xB1\u2265\u2264\u2320\u2321\xF7\u2248\xB0\u2219\xB7\u221A\u207F\xB2\u25A0\xA0" + }, + "ibm863": "cp863", + "csibm863": "cp863", + "cp864": { + "type": "_sbcs", + "chars": "\0\x07\b \n\v\f\r\x1B !\"#$\u066A&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~\x7F\xB0\xB7\u2219\u221A\u2592\u2500\u2502\u253C\u2524\u252C\u251C\u2534\u2510\u250C\u2514\u2518\u03B2\u221E\u03C6\xB1\xBD\xBC\u2248\xAB\xBB\uFEF7\uFEF8\uFFFD\uFFFD\uFEFB\uFEFC\uFFFD\xA0\xAD\uFE82\xA3\xA4\uFE84\uFFFD\uFFFD\uFE8E\uFE8F\uFE95\uFE99\u060C\uFE9D\uFEA1\uFEA5\u0660\u0661\u0662\u0663\u0664\u0665\u0666\u0667\u0668\u0669\uFED1\u061B\uFEB1\uFEB5\uFEB9\u061F\xA2\uFE80\uFE81\uFE83\uFE85\uFECA\uFE8B\uFE8D\uFE91\uFE93\uFE97\uFE9B\uFE9F\uFEA3\uFEA7\uFEA9\uFEAB\uFEAD\uFEAF\uFEB3\uFEB7\uFEBB\uFEBF\uFEC1\uFEC5\uFECB\uFECF\xA6\xAC\xF7\xD7\uFEC9\u0640\uFED3\uFED7\uFEDB\uFEDF\uFEE3\uFEE7\uFEEB\uFEED\uFEEF\uFEF3\uFEBD\uFECC\uFECE\uFECD\uFEE1\uFE7D\u0651\uFEE5\uFEE9\uFEEC\uFEF0\uFEF2\uFED0\uFED5\uFEF5\uFEF6\uFEDD\uFED9\uFEF1\u25A0\uFFFD" + }, + "ibm864": "cp864", + "csibm864": "cp864", + "cp865": { + "type": "_sbcs", + "chars": "\xC7\xFC\xE9\xE2\xE4\xE0\xE5\xE7\xEA\xEB\xE8\xEF\xEE\xEC\xC4\xC5\xC9\xE6\xC6\xF4\xF6\xF2\xFB\xF9\xFF\xD6\xDC\xF8\xA3\xD8\u20A7\u0192\xE1\xED\xF3\xFA\xF1\xD1\xAA\xBA\xBF\u2310\xAC\xBD\xBC\xA1\xAB\xA4\u2591\u2592\u2593\u2502\u2524\u2561\u2562\u2556\u2555\u2563\u2551\u2557\u255D\u255C\u255B\u2510\u2514\u2534\u252C\u251C\u2500\u253C\u255E\u255F\u255A\u2554\u2569\u2566\u2560\u2550\u256C\u2567\u2568\u2564\u2565\u2559\u2558\u2552\u2553\u256B\u256A\u2518\u250C\u2588\u2584\u258C\u2590\u2580\u03B1\xDF\u0393\u03C0\u03A3\u03C3\xB5\u03C4\u03A6\u0398\u03A9\u03B4\u221E\u03C6\u03B5\u2229\u2261\xB1\u2265\u2264\u2320\u2321\xF7\u2248\xB0\u2219\xB7\u221A\u207F\xB2\u25A0\xA0" + }, + "ibm865": "cp865", + "csibm865": "cp865", + "cp866": { + "type": "_sbcs", + "chars": "\u0410\u0411\u0412\u0413\u0414\u0415\u0416\u0417\u0418\u0419\u041A\u041B\u041C\u041D\u041E\u041F\u0420\u0421\u0422\u0423\u0424\u0425\u0426\u0427\u0428\u0429\u042A\u042B\u042C\u042D\u042E\u042F\u0430\u0431\u0432\u0433\u0434\u0435\u0436\u0437\u0438\u0439\u043A\u043B\u043C\u043D\u043E\u043F\u2591\u2592\u2593\u2502\u2524\u2561\u2562\u2556\u2555\u2563\u2551\u2557\u255D\u255C\u255B\u2510\u2514\u2534\u252C\u251C\u2500\u253C\u255E\u255F\u255A\u2554\u2569\u2566\u2560\u2550\u256C\u2567\u2568\u2564\u2565\u2559\u2558\u2552\u2553\u256B\u256A\u2518\u250C\u2588\u2584\u258C\u2590\u2580\u0440\u0441\u0442\u0443\u0444\u0445\u0446\u0447\u0448\u0449\u044A\u044B\u044C\u044D\u044E\u044F\u0401\u0451\u0404\u0454\u0407\u0457\u040E\u045E\xB0\u2219\xB7\u221A\u2116\xA4\u25A0\xA0" + }, + "ibm866": "cp866", + "csibm866": "cp866", + "cp869": { + "type": "_sbcs", + "chars": "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u0386\uFFFD\xB7\xAC\xA6\u2018\u2019\u0388\u2015\u0389\u038A\u03AA\u038C\uFFFD\uFFFD\u038E\u03AB\xA9\u038F\xB2\xB3\u03AC\xA3\u03AD\u03AE\u03AF\u03CA\u0390\u03CC\u03CD\u0391\u0392\u0393\u0394\u0395\u0396\u0397\xBD\u0398\u0399\xAB\xBB\u2591\u2592\u2593\u2502\u2524\u039A\u039B\u039C\u039D\u2563\u2551\u2557\u255D\u039E\u039F\u2510\u2514\u2534\u252C\u251C\u2500\u253C\u03A0\u03A1\u255A\u2554\u2569\u2566\u2560\u2550\u256C\u03A3\u03A4\u03A5\u03A6\u03A7\u03A8\u03A9\u03B1\u03B2\u03B3\u2518\u250C\u2588\u2584\u03B4\u03B5\u2580\u03B6\u03B7\u03B8\u03B9\u03BA\u03BB\u03BC\u03BD\u03BE\u03BF\u03C0\u03C1\u03C3\u03C2\u03C4\u0384\xAD\xB1\u03C5\u03C6\u03C7\xA7\u03C8\u0385\xB0\xA8\u03C9\u03CB\u03B0\u03CE\u25A0\xA0" + }, + "ibm869": "cp869", + "csibm869": "cp869", + "cp922": { + "type": "_sbcs", + "chars": "\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8A\x8B\x8C\x8D\x8E\x8F\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9A\x9B\x9C\x9D\x9E\x9F\xA0\xA1\xA2\xA3\xA4\xA5\xA6\xA7\xA8\xA9\xAA\xAB\xAC\xAD\xAE\u203E\xB0\xB1\xB2\xB3\xB4\xB5\xB6\xB7\xB8\xB9\xBA\xBB\xBC\xBD\xBE\xBF\xC0\xC1\xC2\xC3\xC4\xC5\xC6\xC7\xC8\xC9\xCA\xCB\xCC\xCD\xCE\xCF\u0160\xD1\xD2\xD3\xD4\xD5\xD6\xD7\xD8\xD9\xDA\xDB\xDC\xDD\u017D\xDF\xE0\xE1\xE2\xE3\xE4\xE5\xE6\xE7\xE8\xE9\xEA\xEB\xEC\xED\xEE\xEF\u0161\xF1\xF2\xF3\xF4\xF5\xF6\xF7\xF8\xF9\xFA\xFB\xFC\xFD\u017E\xFF" + }, + "ibm922": "cp922", + "csibm922": "cp922", + "cp1046": { + "type": "_sbcs", + "chars": "\uFE88\xD7\xF7\uF8F6\uF8F5\uF8F4\uF8F7\uFE71\x88\u25A0\u2502\u2500\u2510\u250C\u2514\u2518\uFE79\uFE7B\uFE7D\uFE7F\uFE77\uFE8A\uFEF0\uFEF3\uFEF2\uFECE\uFECF\uFED0\uFEF6\uFEF8\uFEFA\uFEFC\xA0\uF8FA\uF8F9\uF8F8\xA4\uF8FB\uFE8B\uFE91\uFE97\uFE9B\uFE9F\uFEA3\u060C\xAD\uFEA7\uFEB3\u0660\u0661\u0662\u0663\u0664\u0665\u0666\u0667\u0668\u0669\uFEB7\u061B\uFEBB\uFEBF\uFECA\u061F\uFECB\u0621\u0622\u0623\u0624\u0625\u0626\u0627\u0628\u0629\u062A\u062B\u062C\u062D\u062E\u062F\u0630\u0631\u0632\u0633\u0634\u0635\u0636\u0637\uFEC7\u0639\u063A\uFECC\uFE82\uFE84\uFE8E\uFED3\u0640\u0641\u0642\u0643\u0644\u0645\u0646\u0647\u0648\u0649\u064A\u064B\u064C\u064D\u064E\u064F\u0650\u0651\u0652\uFED7\uFEDB\uFEDF\uF8FC\uFEF5\uFEF7\uFEF9\uFEFB\uFEE3\uFEE7\uFEEC\uFEE9\uFFFD" + }, + "ibm1046": "cp1046", + "csibm1046": "cp1046", + "cp1124": { + "type": "_sbcs", + "chars": "\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8A\x8B\x8C\x8D\x8E\x8F\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9A\x9B\x9C\x9D\x9E\x9F\xA0\u0401\u0402\u0490\u0404\u0405\u0406\u0407\u0408\u0409\u040A\u040B\u040C\xAD\u040E\u040F\u0410\u0411\u0412\u0413\u0414\u0415\u0416\u0417\u0418\u0419\u041A\u041B\u041C\u041D\u041E\u041F\u0420\u0421\u0422\u0423\u0424\u0425\u0426\u0427\u0428\u0429\u042A\u042B\u042C\u042D\u042E\u042F\u0430\u0431\u0432\u0433\u0434\u0435\u0436\u0437\u0438\u0439\u043A\u043B\u043C\u043D\u043E\u043F\u0440\u0441\u0442\u0443\u0444\u0445\u0446\u0447\u0448\u0449\u044A\u044B\u044C\u044D\u044E\u044F\u2116\u0451\u0452\u0491\u0454\u0455\u0456\u0457\u0458\u0459\u045A\u045B\u045C\xA7\u045E\u045F" + }, + "ibm1124": "cp1124", + "csibm1124": "cp1124", + "cp1125": { + "type": "_sbcs", + "chars": "\u0410\u0411\u0412\u0413\u0414\u0415\u0416\u0417\u0418\u0419\u041A\u041B\u041C\u041D\u041E\u041F\u0420\u0421\u0422\u0423\u0424\u0425\u0426\u0427\u0428\u0429\u042A\u042B\u042C\u042D\u042E\u042F\u0430\u0431\u0432\u0433\u0434\u0435\u0436\u0437\u0438\u0439\u043A\u043B\u043C\u043D\u043E\u043F\u2591\u2592\u2593\u2502\u2524\u2561\u2562\u2556\u2555\u2563\u2551\u2557\u255D\u255C\u255B\u2510\u2514\u2534\u252C\u251C\u2500\u253C\u255E\u255F\u255A\u2554\u2569\u2566\u2560\u2550\u256C\u2567\u2568\u2564\u2565\u2559\u2558\u2552\u2553\u256B\u256A\u2518\u250C\u2588\u2584\u258C\u2590\u2580\u0440\u0441\u0442\u0443\u0444\u0445\u0446\u0447\u0448\u0449\u044A\u044B\u044C\u044D\u044E\u044F\u0401\u0451\u0490\u0491\u0404\u0454\u0406\u0456\u0407\u0457\xB7\u221A\u2116\xA4\u25A0\xA0" + }, + "ibm1125": "cp1125", + "csibm1125": "cp1125", + "cp1129": { + "type": "_sbcs", + "chars": "\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8A\x8B\x8C\x8D\x8E\x8F\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9A\x9B\x9C\x9D\x9E\x9F\xA0\xA1\xA2\xA3\xA4\xA5\xA6\xA7\u0153\xA9\xAA\xAB\xAC\xAD\xAE\xAF\xB0\xB1\xB2\xB3\u0178\xB5\xB6\xB7\u0152\xB9\xBA\xBB\xBC\xBD\xBE\xBF\xC0\xC1\xC2\u0102\xC4\xC5\xC6\xC7\xC8\xC9\xCA\xCB\u0300\xCD\xCE\xCF\u0110\xD1\u0309\xD3\xD4\u01A0\xD6\xD7\xD8\xD9\xDA\xDB\xDC\u01AF\u0303\xDF\xE0\xE1\xE2\u0103\xE4\xE5\xE6\xE7\xE8\xE9\xEA\xEB\u0301\xED\xEE\xEF\u0111\xF1\u0323\xF3\xF4\u01A1\xF6\xF7\xF8\xF9\xFA\xFB\xFC\u01B0\u20AB\xFF" + }, + "ibm1129": "cp1129", + "csibm1129": "cp1129", + "cp1133": { + "type": "_sbcs", + "chars": "\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8A\x8B\x8C\x8D\x8E\x8F\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9A\x9B\x9C\x9D\x9E\x9F\xA0\u0E81\u0E82\u0E84\u0E87\u0E88\u0EAA\u0E8A\u0E8D\u0E94\u0E95\u0E96\u0E97\u0E99\u0E9A\u0E9B\u0E9C\u0E9D\u0E9E\u0E9F\u0EA1\u0EA2\u0EA3\u0EA5\u0EA7\u0EAB\u0EAD\u0EAE\uFFFD\uFFFD\uFFFD\u0EAF\u0EB0\u0EB2\u0EB3\u0EB4\u0EB5\u0EB6\u0EB7\u0EB8\u0EB9\u0EBC\u0EB1\u0EBB\u0EBD\uFFFD\uFFFD\uFFFD\u0EC0\u0EC1\u0EC2\u0EC3\u0EC4\u0EC8\u0EC9\u0ECA\u0ECB\u0ECC\u0ECD\u0EC6\uFFFD\u0EDC\u0EDD\u20AD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u0ED0\u0ED1\u0ED2\u0ED3\u0ED4\u0ED5\u0ED6\u0ED7\u0ED8\u0ED9\uFFFD\uFFFD\xA2\xAC\xA6\uFFFD" + }, + "ibm1133": "cp1133", + "csibm1133": "cp1133", + "cp1161": { + "type": "_sbcs", + "chars": "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u0E48\u0E01\u0E02\u0E03\u0E04\u0E05\u0E06\u0E07\u0E08\u0E09\u0E0A\u0E0B\u0E0C\u0E0D\u0E0E\u0E0F\u0E10\u0E11\u0E12\u0E13\u0E14\u0E15\u0E16\u0E17\u0E18\u0E19\u0E1A\u0E1B\u0E1C\u0E1D\u0E1E\u0E1F\u0E20\u0E21\u0E22\u0E23\u0E24\u0E25\u0E26\u0E27\u0E28\u0E29\u0E2A\u0E2B\u0E2C\u0E2D\u0E2E\u0E2F\u0E30\u0E31\u0E32\u0E33\u0E34\u0E35\u0E36\u0E37\u0E38\u0E39\u0E3A\u0E49\u0E4A\u0E4B\u20AC\u0E3F\u0E40\u0E41\u0E42\u0E43\u0E44\u0E45\u0E46\u0E47\u0E48\u0E49\u0E4A\u0E4B\u0E4C\u0E4D\u0E4E\u0E4F\u0E50\u0E51\u0E52\u0E53\u0E54\u0E55\u0E56\u0E57\u0E58\u0E59\u0E5A\u0E5B\xA2\xAC\xA6\xA0" + }, + "ibm1161": "cp1161", + "csibm1161": "cp1161", + "cp1162": { + "type": "_sbcs", + "chars": "\u20AC\x81\x82\x83\x84\u2026\x86\x87\x88\x89\x8A\x8B\x8C\x8D\x8E\x8F\x90\u2018\u2019\u201C\u201D\u2022\u2013\u2014\x98\x99\x9A\x9B\x9C\x9D\x9E\x9F\xA0\u0E01\u0E02\u0E03\u0E04\u0E05\u0E06\u0E07\u0E08\u0E09\u0E0A\u0E0B\u0E0C\u0E0D\u0E0E\u0E0F\u0E10\u0E11\u0E12\u0E13\u0E14\u0E15\u0E16\u0E17\u0E18\u0E19\u0E1A\u0E1B\u0E1C\u0E1D\u0E1E\u0E1F\u0E20\u0E21\u0E22\u0E23\u0E24\u0E25\u0E26\u0E27\u0E28\u0E29\u0E2A\u0E2B\u0E2C\u0E2D\u0E2E\u0E2F\u0E30\u0E31\u0E32\u0E33\u0E34\u0E35\u0E36\u0E37\u0E38\u0E39\u0E3A\uFFFD\uFFFD\uFFFD\uFFFD\u0E3F\u0E40\u0E41\u0E42\u0E43\u0E44\u0E45\u0E46\u0E47\u0E48\u0E49\u0E4A\u0E4B\u0E4C\u0E4D\u0E4E\u0E4F\u0E50\u0E51\u0E52\u0E53\u0E54\u0E55\u0E56\u0E57\u0E58\u0E59\u0E5A\u0E5B\uFFFD\uFFFD\uFFFD\uFFFD" + }, + "ibm1162": "cp1162", + "csibm1162": "cp1162", + "cp1163": { + "type": "_sbcs", + "chars": "\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8A\x8B\x8C\x8D\x8E\x8F\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9A\x9B\x9C\x9D\x9E\x9F\xA0\xA1\xA2\xA3\u20AC\xA5\xA6\xA7\u0153\xA9\xAA\xAB\xAC\xAD\xAE\xAF\xB0\xB1\xB2\xB3\u0178\xB5\xB6\xB7\u0152\xB9\xBA\xBB\xBC\xBD\xBE\xBF\xC0\xC1\xC2\u0102\xC4\xC5\xC6\xC7\xC8\xC9\xCA\xCB\u0300\xCD\xCE\xCF\u0110\xD1\u0309\xD3\xD4\u01A0\xD6\xD7\xD8\xD9\xDA\xDB\xDC\u01AF\u0303\xDF\xE0\xE1\xE2\u0103\xE4\xE5\xE6\xE7\xE8\xE9\xEA\xEB\u0301\xED\xEE\xEF\u0111\xF1\u0323\xF3\xF4\u01A1\xF6\xF7\xF8\xF9\xFA\xFB\xFC\u01B0\u20AB\xFF" + }, + "ibm1163": "cp1163", + "csibm1163": "cp1163", + "maccroatian": { + "type": "_sbcs", + "chars": "\xC4\xC5\xC7\xC9\xD1\xD6\xDC\xE1\xE0\xE2\xE4\xE3\xE5\xE7\xE9\xE8\xEA\xEB\xED\xEC\xEE\xEF\xF1\xF3\xF2\xF4\xF6\xF5\xFA\xF9\xFB\xFC\u2020\xB0\xA2\xA3\xA7\u2022\xB6\xDF\xAE\u0160\u2122\xB4\xA8\u2260\u017D\xD8\u221E\xB1\u2264\u2265\u2206\xB5\u2202\u2211\u220F\u0161\u222B\xAA\xBA\u2126\u017E\xF8\xBF\xA1\xAC\u221A\u0192\u2248\u0106\xAB\u010C\u2026\xA0\xC0\xC3\xD5\u0152\u0153\u0110\u2014\u201C\u201D\u2018\u2019\xF7\u25CA\uFFFD\xA9\u2044\xA4\u2039\u203A\xC6\xBB\u2013\xB7\u201A\u201E\u2030\xC2\u0107\xC1\u010D\xC8\xCD\xCE\xCF\xCC\xD3\xD4\u0111\xD2\xDA\xDB\xD9\u0131\u02C6\u02DC\xAF\u03C0\xCB\u02DA\xB8\xCA\xE6\u02C7" + }, + "maccyrillic": { + "type": "_sbcs", + "chars": "\u0410\u0411\u0412\u0413\u0414\u0415\u0416\u0417\u0418\u0419\u041A\u041B\u041C\u041D\u041E\u041F\u0420\u0421\u0422\u0423\u0424\u0425\u0426\u0427\u0428\u0429\u042A\u042B\u042C\u042D\u042E\u042F\u2020\xB0\xA2\xA3\xA7\u2022\xB6\u0406\xAE\xA9\u2122\u0402\u0452\u2260\u0403\u0453\u221E\xB1\u2264\u2265\u0456\xB5\u2202\u0408\u0404\u0454\u0407\u0457\u0409\u0459\u040A\u045A\u0458\u0405\xAC\u221A\u0192\u2248\u2206\xAB\xBB\u2026\xA0\u040B\u045B\u040C\u045C\u0455\u2013\u2014\u201C\u201D\u2018\u2019\xF7\u201E\u040E\u045E\u040F\u045F\u2116\u0401\u0451\u044F\u0430\u0431\u0432\u0433\u0434\u0435\u0436\u0437\u0438\u0439\u043A\u043B\u043C\u043D\u043E\u043F\u0440\u0441\u0442\u0443\u0444\u0445\u0446\u0447\u0448\u0449\u044A\u044B\u044C\u044D\u044E\xA4" + }, + "macgreek": { + "type": "_sbcs", + "chars": "\xC4\xB9\xB2\xC9\xB3\xD6\xDC\u0385\xE0\xE2\xE4\u0384\xA8\xE7\xE9\xE8\xEA\xEB\xA3\u2122\xEE\xEF\u2022\xBD\u2030\xF4\xF6\xA6\xAD\xF9\xFB\xFC\u2020\u0393\u0394\u0398\u039B\u039E\u03A0\xDF\xAE\xA9\u03A3\u03AA\xA7\u2260\xB0\u0387\u0391\xB1\u2264\u2265\xA5\u0392\u0395\u0396\u0397\u0399\u039A\u039C\u03A6\u03AB\u03A8\u03A9\u03AC\u039D\xAC\u039F\u03A1\u2248\u03A4\xAB\xBB\u2026\xA0\u03A5\u03A7\u0386\u0388\u0153\u2013\u2015\u201C\u201D\u2018\u2019\xF7\u0389\u038A\u038C\u038E\u03AD\u03AE\u03AF\u03CC\u038F\u03CD\u03B1\u03B2\u03C8\u03B4\u03B5\u03C6\u03B3\u03B7\u03B9\u03BE\u03BA\u03BB\u03BC\u03BD\u03BF\u03C0\u03CE\u03C1\u03C3\u03C4\u03B8\u03C9\u03C2\u03C7\u03C5\u03B6\u03CA\u03CB\u0390\u03B0\uFFFD" + }, + "maciceland": { + "type": "_sbcs", + "chars": "\xC4\xC5\xC7\xC9\xD1\xD6\xDC\xE1\xE0\xE2\xE4\xE3\xE5\xE7\xE9\xE8\xEA\xEB\xED\xEC\xEE\xEF\xF1\xF3\xF2\xF4\xF6\xF5\xFA\xF9\xFB\xFC\xDD\xB0\xA2\xA3\xA7\u2022\xB6\xDF\xAE\xA9\u2122\xB4\xA8\u2260\xC6\xD8\u221E\xB1\u2264\u2265\xA5\xB5\u2202\u2211\u220F\u03C0\u222B\xAA\xBA\u2126\xE6\xF8\xBF\xA1\xAC\u221A\u0192\u2248\u2206\xAB\xBB\u2026\xA0\xC0\xC3\xD5\u0152\u0153\u2013\u2014\u201C\u201D\u2018\u2019\xF7\u25CA\xFF\u0178\u2044\xA4\xD0\xF0\xDE\xFE\xFD\xB7\u201A\u201E\u2030\xC2\xCA\xC1\xCB\xC8\xCD\xCE\xCF\xCC\xD3\xD4\uFFFD\xD2\xDA\xDB\xD9\u0131\u02C6\u02DC\xAF\u02D8\u02D9\u02DA\xB8\u02DD\u02DB\u02C7" + }, + "macroman": { + "type": "_sbcs", + "chars": "\xC4\xC5\xC7\xC9\xD1\xD6\xDC\xE1\xE0\xE2\xE4\xE3\xE5\xE7\xE9\xE8\xEA\xEB\xED\xEC\xEE\xEF\xF1\xF3\xF2\xF4\xF6\xF5\xFA\xF9\xFB\xFC\u2020\xB0\xA2\xA3\xA7\u2022\xB6\xDF\xAE\xA9\u2122\xB4\xA8\u2260\xC6\xD8\u221E\xB1\u2264\u2265\xA5\xB5\u2202\u2211\u220F\u03C0\u222B\xAA\xBA\u2126\xE6\xF8\xBF\xA1\xAC\u221A\u0192\u2248\u2206\xAB\xBB\u2026\xA0\xC0\xC3\xD5\u0152\u0153\u2013\u2014\u201C\u201D\u2018\u2019\xF7\u25CA\xFF\u0178\u2044\xA4\u2039\u203A\uFB01\uFB02\u2021\xB7\u201A\u201E\u2030\xC2\xCA\xC1\xCB\xC8\xCD\xCE\xCF\xCC\xD3\xD4\uFFFD\xD2\xDA\xDB\xD9\u0131\u02C6\u02DC\xAF\u02D8\u02D9\u02DA\xB8\u02DD\u02DB\u02C7" + }, + "macromania": { + "type": "_sbcs", + "chars": "\xC4\xC5\xC7\xC9\xD1\xD6\xDC\xE1\xE0\xE2\xE4\xE3\xE5\xE7\xE9\xE8\xEA\xEB\xED\xEC\xEE\xEF\xF1\xF3\xF2\xF4\xF6\xF5\xFA\xF9\xFB\xFC\u2020\xB0\xA2\xA3\xA7\u2022\xB6\xDF\xAE\xA9\u2122\xB4\xA8\u2260\u0102\u015E\u221E\xB1\u2264\u2265\xA5\xB5\u2202\u2211\u220F\u03C0\u222B\xAA\xBA\u2126\u0103\u015F\xBF\xA1\xAC\u221A\u0192\u2248\u2206\xAB\xBB\u2026\xA0\xC0\xC3\xD5\u0152\u0153\u2013\u2014\u201C\u201D\u2018\u2019\xF7\u25CA\xFF\u0178\u2044\xA4\u2039\u203A\u0162\u0163\u2021\xB7\u201A\u201E\u2030\xC2\xCA\xC1\xCB\xC8\xCD\xCE\xCF\xCC\xD3\xD4\uFFFD\xD2\xDA\xDB\xD9\u0131\u02C6\u02DC\xAF\u02D8\u02D9\u02DA\xB8\u02DD\u02DB\u02C7" + }, + "macthai": { + "type": "_sbcs", + "chars": "\xAB\xBB\u2026\uF88C\uF88F\uF892\uF895\uF898\uF88B\uF88E\uF891\uF894\uF897\u201C\u201D\uF899\uFFFD\u2022\uF884\uF889\uF885\uF886\uF887\uF888\uF88A\uF88D\uF890\uF893\uF896\u2018\u2019\uFFFD\xA0\u0E01\u0E02\u0E03\u0E04\u0E05\u0E06\u0E07\u0E08\u0E09\u0E0A\u0E0B\u0E0C\u0E0D\u0E0E\u0E0F\u0E10\u0E11\u0E12\u0E13\u0E14\u0E15\u0E16\u0E17\u0E18\u0E19\u0E1A\u0E1B\u0E1C\u0E1D\u0E1E\u0E1F\u0E20\u0E21\u0E22\u0E23\u0E24\u0E25\u0E26\u0E27\u0E28\u0E29\u0E2A\u0E2B\u0E2C\u0E2D\u0E2E\u0E2F\u0E30\u0E31\u0E32\u0E33\u0E34\u0E35\u0E36\u0E37\u0E38\u0E39\u0E3A\uFEFF\u200B\u2013\u2014\u0E3F\u0E40\u0E41\u0E42\u0E43\u0E44\u0E45\u0E46\u0E47\u0E48\u0E49\u0E4A\u0E4B\u0E4C\u0E4D\u2122\u0E4F\u0E50\u0E51\u0E52\u0E53\u0E54\u0E55\u0E56\u0E57\u0E58\u0E59\xAE\xA9\uFFFD\uFFFD\uFFFD\uFFFD" + }, + "macturkish": { + "type": "_sbcs", + "chars": "\xC4\xC5\xC7\xC9\xD1\xD6\xDC\xE1\xE0\xE2\xE4\xE3\xE5\xE7\xE9\xE8\xEA\xEB\xED\xEC\xEE\xEF\xF1\xF3\xF2\xF4\xF6\xF5\xFA\xF9\xFB\xFC\u2020\xB0\xA2\xA3\xA7\u2022\xB6\xDF\xAE\xA9\u2122\xB4\xA8\u2260\xC6\xD8\u221E\xB1\u2264\u2265\xA5\xB5\u2202\u2211\u220F\u03C0\u222B\xAA\xBA\u2126\xE6\xF8\xBF\xA1\xAC\u221A\u0192\u2248\u2206\xAB\xBB\u2026\xA0\xC0\xC3\xD5\u0152\u0153\u2013\u2014\u201C\u201D\u2018\u2019\xF7\u25CA\xFF\u0178\u011E\u011F\u0130\u0131\u015E\u015F\u2021\xB7\u201A\u201E\u2030\xC2\xCA\xC1\xCB\xC8\xCD\xCE\xCF\xCC\xD3\xD4\uFFFD\xD2\xDA\xDB\xD9\uFFFD\u02C6\u02DC\xAF\u02D8\u02D9\u02DA\xB8\u02DD\u02DB\u02C7" + }, + "macukraine": { + "type": "_sbcs", + "chars": "\u0410\u0411\u0412\u0413\u0414\u0415\u0416\u0417\u0418\u0419\u041A\u041B\u041C\u041D\u041E\u041F\u0420\u0421\u0422\u0423\u0424\u0425\u0426\u0427\u0428\u0429\u042A\u042B\u042C\u042D\u042E\u042F\u2020\xB0\u0490\xA3\xA7\u2022\xB6\u0406\xAE\xA9\u2122\u0402\u0452\u2260\u0403\u0453\u221E\xB1\u2264\u2265\u0456\xB5\u0491\u0408\u0404\u0454\u0407\u0457\u0409\u0459\u040A\u045A\u0458\u0405\xAC\u221A\u0192\u2248\u2206\xAB\xBB\u2026\xA0\u040B\u045B\u040C\u045C\u0455\u2013\u2014\u201C\u201D\u2018\u2019\xF7\u201E\u040E\u045E\u040F\u045F\u2116\u0401\u0451\u044F\u0430\u0431\u0432\u0433\u0434\u0435\u0436\u0437\u0438\u0439\u043A\u043B\u043C\u043D\u043E\u043F\u0440\u0441\u0442\u0443\u0444\u0445\u0446\u0447\u0448\u0449\u044A\u044B\u044C\u044D\u044E\xA4" + }, + "koi8r": { + "type": "_sbcs", + "chars": "\u2500\u2502\u250C\u2510\u2514\u2518\u251C\u2524\u252C\u2534\u253C\u2580\u2584\u2588\u258C\u2590\u2591\u2592\u2593\u2320\u25A0\u2219\u221A\u2248\u2264\u2265\xA0\u2321\xB0\xB2\xB7\xF7\u2550\u2551\u2552\u0451\u2553\u2554\u2555\u2556\u2557\u2558\u2559\u255A\u255B\u255C\u255D\u255E\u255F\u2560\u2561\u0401\u2562\u2563\u2564\u2565\u2566\u2567\u2568\u2569\u256A\u256B\u256C\xA9\u044E\u0430\u0431\u0446\u0434\u0435\u0444\u0433\u0445\u0438\u0439\u043A\u043B\u043C\u043D\u043E\u043F\u044F\u0440\u0441\u0442\u0443\u0436\u0432\u044C\u044B\u0437\u0448\u044D\u0449\u0447\u044A\u042E\u0410\u0411\u0426\u0414\u0415\u0424\u0413\u0425\u0418\u0419\u041A\u041B\u041C\u041D\u041E\u041F\u042F\u0420\u0421\u0422\u0423\u0416\u0412\u042C\u042B\u0417\u0428\u042D\u0429\u0427\u042A" + }, + "koi8u": { + "type": "_sbcs", + "chars": "\u2500\u2502\u250C\u2510\u2514\u2518\u251C\u2524\u252C\u2534\u253C\u2580\u2584\u2588\u258C\u2590\u2591\u2592\u2593\u2320\u25A0\u2219\u221A\u2248\u2264\u2265\xA0\u2321\xB0\xB2\xB7\xF7\u2550\u2551\u2552\u0451\u0454\u2554\u0456\u0457\u2557\u2558\u2559\u255A\u255B\u0491\u255D\u255E\u255F\u2560\u2561\u0401\u0404\u2563\u0406\u0407\u2566\u2567\u2568\u2569\u256A\u0490\u256C\xA9\u044E\u0430\u0431\u0446\u0434\u0435\u0444\u0433\u0445\u0438\u0439\u043A\u043B\u043C\u043D\u043E\u043F\u044F\u0440\u0441\u0442\u0443\u0436\u0432\u044C\u044B\u0437\u0448\u044D\u0449\u0447\u044A\u042E\u0410\u0411\u0426\u0414\u0415\u0424\u0413\u0425\u0418\u0419\u041A\u041B\u041C\u041D\u041E\u041F\u042F\u0420\u0421\u0422\u0423\u0416\u0412\u042C\u042B\u0417\u0428\u042D\u0429\u0427\u042A" + }, + "koi8ru": { + "type": "_sbcs", + "chars": "\u2500\u2502\u250C\u2510\u2514\u2518\u251C\u2524\u252C\u2534\u253C\u2580\u2584\u2588\u258C\u2590\u2591\u2592\u2593\u2320\u25A0\u2219\u221A\u2248\u2264\u2265\xA0\u2321\xB0\xB2\xB7\xF7\u2550\u2551\u2552\u0451\u0454\u2554\u0456\u0457\u2557\u2558\u2559\u255A\u255B\u0491\u045E\u255E\u255F\u2560\u2561\u0401\u0404\u2563\u0406\u0407\u2566\u2567\u2568\u2569\u256A\u0490\u040E\xA9\u044E\u0430\u0431\u0446\u0434\u0435\u0444\u0433\u0445\u0438\u0439\u043A\u043B\u043C\u043D\u043E\u043F\u044F\u0440\u0441\u0442\u0443\u0436\u0432\u044C\u044B\u0437\u0448\u044D\u0449\u0447\u044A\u042E\u0410\u0411\u0426\u0414\u0415\u0424\u0413\u0425\u0418\u0419\u041A\u041B\u041C\u041D\u041E\u041F\u042F\u0420\u0421\u0422\u0423\u0416\u0412\u042C\u042B\u0417\u0428\u042D\u0429\u0427\u042A" + }, + "koi8t": { + "type": "_sbcs", + "chars": "\u049B\u0493\u201A\u0492\u201E\u2026\u2020\u2021\uFFFD\u2030\u04B3\u2039\u04B2\u04B7\u04B6\uFFFD\u049A\u2018\u2019\u201C\u201D\u2022\u2013\u2014\uFFFD\u2122\uFFFD\u203A\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u04EF\u04EE\u0451\xA4\u04E3\xA6\xA7\uFFFD\uFFFD\uFFFD\xAB\xAC\xAD\xAE\uFFFD\xB0\xB1\xB2\u0401\uFFFD\u04E2\xB6\xB7\uFFFD\u2116\uFFFD\xBB\uFFFD\uFFFD\uFFFD\xA9\u044E\u0430\u0431\u0446\u0434\u0435\u0444\u0433\u0445\u0438\u0439\u043A\u043B\u043C\u043D\u043E\u043F\u044F\u0440\u0441\u0442\u0443\u0436\u0432\u044C\u044B\u0437\u0448\u044D\u0449\u0447\u044A\u042E\u0410\u0411\u0426\u0414\u0415\u0424\u0413\u0425\u0418\u0419\u041A\u041B\u041C\u041D\u041E\u041F\u042F\u0420\u0421\u0422\u0423\u0416\u0412\u042C\u042B\u0417\u0428\u042D\u0429\u0427\u042A" + }, + "armscii8": { + "type": "_sbcs", + "chars": "\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8A\x8B\x8C\x8D\x8E\x8F\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9A\x9B\x9C\x9D\x9E\x9F\xA0\uFFFD\u0587\u0589)(\xBB\xAB\u2014.\u055D,-\u058A\u2026\u055C\u055B\u055E\u0531\u0561\u0532\u0562\u0533\u0563\u0534\u0564\u0535\u0565\u0536\u0566\u0537\u0567\u0538\u0568\u0539\u0569\u053A\u056A\u053B\u056B\u053C\u056C\u053D\u056D\u053E\u056E\u053F\u056F\u0540\u0570\u0541\u0571\u0542\u0572\u0543\u0573\u0544\u0574\u0545\u0575\u0546\u0576\u0547\u0577\u0548\u0578\u0549\u0579\u054A\u057A\u054B\u057B\u054C\u057C\u054D\u057D\u054E\u057E\u054F\u057F\u0550\u0580\u0551\u0581\u0552\u0582\u0553\u0583\u0554\u0584\u0555\u0585\u0556\u0586\u055A\uFFFD" + }, + "rk1048": { + "type": "_sbcs", + "chars": "\u0402\u0403\u201A\u0453\u201E\u2026\u2020\u2021\u20AC\u2030\u0409\u2039\u040A\u049A\u04BA\u040F\u0452\u2018\u2019\u201C\u201D\u2022\u2013\u2014\uFFFD\u2122\u0459\u203A\u045A\u049B\u04BB\u045F\xA0\u04B0\u04B1\u04D8\xA4\u04E8\xA6\xA7\u0401\xA9\u0492\xAB\xAC\xAD\xAE\u04AE\xB0\xB1\u0406\u0456\u04E9\xB5\xB6\xB7\u0451\u2116\u0493\xBB\u04D9\u04A2\u04A3\u04AF\u0410\u0411\u0412\u0413\u0414\u0415\u0416\u0417\u0418\u0419\u041A\u041B\u041C\u041D\u041E\u041F\u0420\u0421\u0422\u0423\u0424\u0425\u0426\u0427\u0428\u0429\u042A\u042B\u042C\u042D\u042E\u042F\u0430\u0431\u0432\u0433\u0434\u0435\u0436\u0437\u0438\u0439\u043A\u043B\u043C\u043D\u043E\u043F\u0440\u0441\u0442\u0443\u0444\u0445\u0446\u0447\u0448\u0449\u044A\u044B\u044C\u044D\u044E\u044F" + }, + "tcvn": { + "type": "_sbcs", + "chars": "\0\xDA\u1EE4\u1EEA\u1EEC\u1EEE\x07\b \n\v\f\r\u1EE8\u1EF0\u1EF2\u1EF6\u1EF8\xDD\u1EF4\x1B !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~\x7F\xC0\u1EA2\xC3\xC1\u1EA0\u1EB6\u1EAC\xC8\u1EBA\u1EBC\xC9\u1EB8\u1EC6\xCC\u1EC8\u0128\xCD\u1ECA\xD2\u1ECE\xD5\xD3\u1ECC\u1ED8\u1EDC\u1EDE\u1EE0\u1EDA\u1EE2\xD9\u1EE6\u0168\xA0\u0102\xC2\xCA\xD4\u01A0\u01AF\u0110\u0103\xE2\xEA\xF4\u01A1\u01B0\u0111\u1EB0\u0300\u0309\u0303\u0301\u0323\xE0\u1EA3\xE3\xE1\u1EA1\u1EB2\u1EB1\u1EB3\u1EB5\u1EAF\u1EB4\u1EAE\u1EA6\u1EA8\u1EAA\u1EA4\u1EC0\u1EB7\u1EA7\u1EA9\u1EAB\u1EA5\u1EAD\xE8\u1EC2\u1EBB\u1EBD\xE9\u1EB9\u1EC1\u1EC3\u1EC5\u1EBF\u1EC7\xEC\u1EC9\u1EC4\u1EBE\u1ED2\u0129\xED\u1ECB\xF2\u1ED4\u1ECF\xF5\xF3\u1ECD\u1ED3\u1ED5\u1ED7\u1ED1\u1ED9\u1EDD\u1EDF\u1EE1\u1EDB\u1EE3\xF9\u1ED6\u1EE7\u0169\xFA\u1EE5\u1EEB\u1EED\u1EEF\u1EE9\u1EF1\u1EF3\u1EF7\u1EF9\xFD\u1EF5\u1ED0" + }, + "georgianacademy": { + "type": "_sbcs", + "chars": "\x80\x81\u201A\u0192\u201E\u2026\u2020\u2021\u02C6\u2030\u0160\u2039\u0152\x8D\x8E\x8F\x90\u2018\u2019\u201C\u201D\u2022\u2013\u2014\u02DC\u2122\u0161\u203A\u0153\x9D\x9E\u0178\xA0\xA1\xA2\xA3\xA4\xA5\xA6\xA7\xA8\xA9\xAA\xAB\xAC\xAD\xAE\xAF\xB0\xB1\xB2\xB3\xB4\xB5\xB6\xB7\xB8\xB9\xBA\xBB\xBC\xBD\xBE\xBF\u10D0\u10D1\u10D2\u10D3\u10D4\u10D5\u10D6\u10D7\u10D8\u10D9\u10DA\u10DB\u10DC\u10DD\u10DE\u10DF\u10E0\u10E1\u10E2\u10E3\u10E4\u10E5\u10E6\u10E7\u10E8\u10E9\u10EA\u10EB\u10EC\u10ED\u10EE\u10EF\u10F0\u10F1\u10F2\u10F3\u10F4\u10F5\u10F6\xE7\xE8\xE9\xEA\xEB\xEC\xED\xEE\xEF\xF0\xF1\xF2\xF3\xF4\xF5\xF6\xF7\xF8\xF9\xFA\xFB\xFC\xFD\xFE\xFF" + }, + "georgianps": { + "type": "_sbcs", + "chars": "\x80\x81\u201A\u0192\u201E\u2026\u2020\u2021\u02C6\u2030\u0160\u2039\u0152\x8D\x8E\x8F\x90\u2018\u2019\u201C\u201D\u2022\u2013\u2014\u02DC\u2122\u0161\u203A\u0153\x9D\x9E\u0178\xA0\xA1\xA2\xA3\xA4\xA5\xA6\xA7\xA8\xA9\xAA\xAB\xAC\xAD\xAE\xAF\xB0\xB1\xB2\xB3\xB4\xB5\xB6\xB7\xB8\xB9\xBA\xBB\xBC\xBD\xBE\xBF\u10D0\u10D1\u10D2\u10D3\u10D4\u10D5\u10D6\u10F1\u10D7\u10D8\u10D9\u10DA\u10DB\u10DC\u10F2\u10DD\u10DE\u10DF\u10E0\u10E1\u10E2\u10F3\u10E3\u10E4\u10E5\u10E6\u10E7\u10E8\u10E9\u10EA\u10EB\u10EC\u10ED\u10EE\u10F4\u10EF\u10F0\u10F5\xE6\xE7\xE8\xE9\xEA\xEB\xEC\xED\xEE\xEF\xF0\xF1\xF2\xF3\xF4\xF5\xF6\xF7\xF8\xF9\xFA\xFB\xFC\xFD\xFE\xFF" + }, + "pt154": { + "type": "_sbcs", + "chars": "\u0496\u0492\u04EE\u0493\u201E\u2026\u04B6\u04AE\u04B2\u04AF\u04A0\u04E2\u04A2\u049A\u04BA\u04B8\u0497\u2018\u2019\u201C\u201D\u2022\u2013\u2014\u04B3\u04B7\u04A1\u04E3\u04A3\u049B\u04BB\u04B9\xA0\u040E\u045E\u0408\u04E8\u0498\u04B0\xA7\u0401\xA9\u04D8\xAB\xAC\u04EF\xAE\u049C\xB0\u04B1\u0406\u0456\u0499\u04E9\xB6\xB7\u0451\u2116\u04D9\xBB\u0458\u04AA\u04AB\u049D\u0410\u0411\u0412\u0413\u0414\u0415\u0416\u0417\u0418\u0419\u041A\u041B\u041C\u041D\u041E\u041F\u0420\u0421\u0422\u0423\u0424\u0425\u0426\u0427\u0428\u0429\u042A\u042B\u042C\u042D\u042E\u042F\u0430\u0431\u0432\u0433\u0434\u0435\u0436\u0437\u0438\u0439\u043A\u043B\u043C\u043D\u043E\u043F\u0440\u0441\u0442\u0443\u0444\u0445\u0446\u0447\u0448\u0449\u044A\u044B\u044C\u044D\u044E\u044F" + }, + "viscii": { + "type": "_sbcs", + "chars": "\0\u1EB2\u1EB4\u1EAA\x07\b \n\v\f\r\u1EF6\u1EF8\x1B\u1EF4 !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~\x7F\u1EA0\u1EAE\u1EB0\u1EB6\u1EA4\u1EA6\u1EA8\u1EAC\u1EBC\u1EB8\u1EBE\u1EC0\u1EC2\u1EC4\u1EC6\u1ED0\u1ED2\u1ED4\u1ED6\u1ED8\u1EE2\u1EDA\u1EDC\u1EDE\u1ECA\u1ECE\u1ECC\u1EC8\u1EE6\u0168\u1EE4\u1EF2\xD5\u1EAF\u1EB1\u1EB7\u1EA5\u1EA7\u1EA9\u1EAD\u1EBD\u1EB9\u1EBF\u1EC1\u1EC3\u1EC5\u1EC7\u1ED1\u1ED3\u1ED5\u1ED7\u1EE0\u01A0\u1ED9\u1EDD\u1EDF\u1ECB\u1EF0\u1EE8\u1EEA\u1EEC\u01A1\u1EDB\u01AF\xC0\xC1\xC2\xC3\u1EA2\u0102\u1EB3\u1EB5\xC8\xC9\xCA\u1EBA\xCC\xCD\u0128\u1EF3\u0110\u1EE9\xD2\xD3\xD4\u1EA1\u1EF7\u1EEB\u1EED\xD9\xDA\u1EF9\u1EF5\xDD\u1EE1\u01B0\xE0\xE1\xE2\xE3\u1EA3\u0103\u1EEF\u1EAB\xE8\xE9\xEA\u1EBB\xEC\xED\u0129\u1EC9\u0111\u1EF1\xF2\xF3\xF4\xF5\u1ECF\u1ECD\u1EE5\xF9\xFA\u0169\u1EE7\xFD\u1EE3\u1EEE" + }, + "iso646cn": { + "type": "_sbcs", + "chars": "\0\x07\b \n\v\f\r\x1B !\"#\xA5%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}\u203E\x7F\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" + }, + "iso646jp": { + "type": "_sbcs", + "chars": "\0\x07\b \n\v\f\r\x1B !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\xA5]^_`abcdefghijklmnopqrstuvwxyz{|}\u203E\x7F\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" + }, + "hproman8": { + "type": "_sbcs", + "chars": "\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8A\x8B\x8C\x8D\x8E\x8F\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9A\x9B\x9C\x9D\x9E\x9F\xA0\xC0\xC2\xC8\xCA\xCB\xCE\xCF\xB4\u02CB\u02C6\xA8\u02DC\xD9\xDB\u20A4\xAF\xDD\xFD\xB0\xC7\xE7\xD1\xF1\xA1\xBF\xA4\xA3\xA5\xA7\u0192\xA2\xE2\xEA\xF4\xFB\xE1\xE9\xF3\xFA\xE0\xE8\xF2\xF9\xE4\xEB\xF6\xFC\xC5\xEE\xD8\xC6\xE5\xED\xF8\xE6\xC4\xEC\xD6\xDC\xC9\xEF\xDF\xD4\xC1\xC3\xE3\xD0\xF0\xCD\xCC\xD3\xD2\xD5\xF5\u0160\u0161\xDA\u0178\xFF\xDE\xFE\xB7\xB5\xB6\xBE\u2014\xBC\xBD\xAA\xBA\xAB\u25A0\xBB\xB1\uFFFD" + }, + "macintosh": { + "type": "_sbcs", + "chars": "\xC4\xC5\xC7\xC9\xD1\xD6\xDC\xE1\xE0\xE2\xE4\xE3\xE5\xE7\xE9\xE8\xEA\xEB\xED\xEC\xEE\xEF\xF1\xF3\xF2\xF4\xF6\xF5\xFA\xF9\xFB\xFC\u2020\xB0\xA2\xA3\xA7\u2022\xB6\xDF\xAE\xA9\u2122\xB4\xA8\u2260\xC6\xD8\u221E\xB1\u2264\u2265\xA5\xB5\u2202\u2211\u220F\u03C0\u222B\xAA\xBA\u2126\xE6\xF8\xBF\xA1\xAC\u221A\u0192\u2248\u2206\xAB\xBB\u2026\xA0\xC0\xC3\xD5\u0152\u0153\u2013\u2014\u201C\u201D\u2018\u2019\xF7\u25CA\xFF\u0178\u2044\xA4\u2039\u203A\uFB01\uFB02\u2021\xB7\u201A\u201E\u2030\xC2\xCA\xC1\xCB\xC8\xCD\xCE\xCF\xCC\xD3\xD4\uFFFD\xD2\xDA\xDB\xD9\u0131\u02C6\u02DC\xAF\u02D8\u02D9\u02DA\xB8\u02DD\u02DB\u02C7" + }, + "ascii": { + "type": "_sbcs", + "chars": "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" + }, + "tis620": { + "type": "_sbcs", + "chars": "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u0E01\u0E02\u0E03\u0E04\u0E05\u0E06\u0E07\u0E08\u0E09\u0E0A\u0E0B\u0E0C\u0E0D\u0E0E\u0E0F\u0E10\u0E11\u0E12\u0E13\u0E14\u0E15\u0E16\u0E17\u0E18\u0E19\u0E1A\u0E1B\u0E1C\u0E1D\u0E1E\u0E1F\u0E20\u0E21\u0E22\u0E23\u0E24\u0E25\u0E26\u0E27\u0E28\u0E29\u0E2A\u0E2B\u0E2C\u0E2D\u0E2E\u0E2F\u0E30\u0E31\u0E32\u0E33\u0E34\u0E35\u0E36\u0E37\u0E38\u0E39\u0E3A\uFFFD\uFFFD\uFFFD\uFFFD\u0E3F\u0E40\u0E41\u0E42\u0E43\u0E44\u0E45\u0E46\u0E47\u0E48\u0E49\u0E4A\u0E4B\u0E4C\u0E4D\u0E4E\u0E4F\u0E50\u0E51\u0E52\u0E53\u0E54\u0E55\u0E56\u0E57\u0E58\u0E59\u0E5A\u0E5B\uFFFD\uFFFD\uFFFD\uFFFD" + } + }; + } +}); + +// node_modules/iconv-lite/encodings/dbcs-codec.js +var require_dbcs_codec = __commonJS({ + "node_modules/iconv-lite/encodings/dbcs-codec.js"(exports2) { + "use strict"; + var Buffer5 = require_safer().Buffer; + exports2._dbcs = DBCSCodec; + var UNASSIGNED = -1; + var GB18030_CODE = -2; + var SEQ_START = -10; + var NODE_START = -1e3; + var UNASSIGNED_NODE = new Array(256); + var DEF_CHAR = -1; + for (i = 0; i < 256; i++) { + UNASSIGNED_NODE[i] = UNASSIGNED; + } + var i; + function DBCSCodec(codecOptions, iconv) { + this.encodingName = codecOptions.encodingName; + if (!codecOptions) { + throw new Error("DBCS codec is called without the data."); + } + if (!codecOptions.table) { + throw new Error("Encoding '" + this.encodingName + "' has no data."); + } + var mappingTable = codecOptions.table(); + this.decodeTables = []; + this.decodeTables[0] = UNASSIGNED_NODE.slice(0); + this.decodeTableSeq = []; + for (var i2 = 0; i2 < mappingTable.length; i2++) { + this._addDecodeChunk(mappingTable[i2]); + } + if (typeof codecOptions.gb18030 === "function") { + this.gb18030 = codecOptions.gb18030(); + var commonThirdByteNodeIdx = this.decodeTables.length; + this.decodeTables.push(UNASSIGNED_NODE.slice(0)); + var commonFourthByteNodeIdx = this.decodeTables.length; + this.decodeTables.push(UNASSIGNED_NODE.slice(0)); + var firstByteNode = this.decodeTables[0]; + for (var i2 = 129; i2 <= 254; i2++) { + var secondByteNode = this.decodeTables[NODE_START - firstByteNode[i2]]; + for (var j = 48; j <= 57; j++) { + if (secondByteNode[j] === UNASSIGNED) { + secondByteNode[j] = NODE_START - commonThirdByteNodeIdx; + } else if (secondByteNode[j] > NODE_START) { + throw new Error("gb18030 decode tables conflict at byte 2"); + } + var thirdByteNode = this.decodeTables[NODE_START - secondByteNode[j]]; + for (var k = 129; k <= 254; k++) { + if (thirdByteNode[k] === UNASSIGNED) { + thirdByteNode[k] = NODE_START - commonFourthByteNodeIdx; + } else if (thirdByteNode[k] === NODE_START - commonFourthByteNodeIdx) { + continue; + } else if (thirdByteNode[k] > NODE_START) { + throw new Error("gb18030 decode tables conflict at byte 3"); + } + var fourthByteNode = this.decodeTables[NODE_START - thirdByteNode[k]]; + for (var l = 48; l <= 57; l++) { + if (fourthByteNode[l] === UNASSIGNED) { + fourthByteNode[l] = GB18030_CODE; + } + } + } + } + } + } + this.defaultCharUnicode = iconv.defaultCharUnicode; + this.encodeTable = []; + this.encodeTableSeq = []; + var skipEncodeChars = {}; + if (codecOptions.encodeSkipVals) { + for (var i2 = 0; i2 < codecOptions.encodeSkipVals.length; i2++) { + var val = codecOptions.encodeSkipVals[i2]; + if (typeof val === "number") { + skipEncodeChars[val] = true; + } else { + for (var j = val.from; j <= val.to; j++) { + skipEncodeChars[j] = true; + } + } + } + } + this._fillEncodeTable(0, 0, skipEncodeChars); + if (codecOptions.encodeAdd) { + for (var uChar in codecOptions.encodeAdd) { + if (Object.prototype.hasOwnProperty.call(codecOptions.encodeAdd, uChar)) { + this._setEncodeChar(uChar.charCodeAt(0), codecOptions.encodeAdd[uChar]); + } + } + } + this.defCharSB = this.encodeTable[0][iconv.defaultCharSingleByte.charCodeAt(0)]; + if (this.defCharSB === UNASSIGNED) this.defCharSB = this.encodeTable[0]["?"]; + if (this.defCharSB === UNASSIGNED) this.defCharSB = "?".charCodeAt(0); + } + DBCSCodec.prototype.encoder = DBCSEncoder; + DBCSCodec.prototype.decoder = DBCSDecoder; + DBCSCodec.prototype._getDecodeTrieNode = function(addr) { + var bytes = []; + for (; addr > 0; addr >>>= 8) { + bytes.push(addr & 255); + } + if (bytes.length == 0) { + bytes.push(0); + } + var node = this.decodeTables[0]; + for (var i2 = bytes.length - 1; i2 > 0; i2--) { + var val = node[bytes[i2]]; + if (val == UNASSIGNED) { + node[bytes[i2]] = NODE_START - this.decodeTables.length; + this.decodeTables.push(node = UNASSIGNED_NODE.slice(0)); + } else if (val <= NODE_START) { + node = this.decodeTables[NODE_START - val]; + } else { + throw new Error("Overwrite byte in " + this.encodingName + ", addr: " + addr.toString(16)); + } + } + return node; + }; + DBCSCodec.prototype._addDecodeChunk = function(chunk) { + var curAddr = parseInt(chunk[0], 16); + var writeTable = this._getDecodeTrieNode(curAddr); + curAddr = curAddr & 255; + for (var k = 1; k < chunk.length; k++) { + var part = chunk[k]; + if (typeof part === "string") { + for (var l = 0; l < part.length; ) { + var code = part.charCodeAt(l++); + if (code >= 55296 && code < 56320) { + var codeTrail = part.charCodeAt(l++); + if (codeTrail >= 56320 && codeTrail < 57344) { + writeTable[curAddr++] = 65536 + (code - 55296) * 1024 + (codeTrail - 56320); + } else { + throw new Error("Incorrect surrogate pair in " + this.encodingName + " at chunk " + chunk[0]); + } + } else if (code > 4080 && code <= 4095) { + var len = 4095 - code + 2; + var seq = []; + for (var m = 0; m < len; m++) { + seq.push(part.charCodeAt(l++)); + } + writeTable[curAddr++] = SEQ_START - this.decodeTableSeq.length; + this.decodeTableSeq.push(seq); + } else { + writeTable[curAddr++] = code; + } + } + } else if (typeof part === "number") { + var charCode = writeTable[curAddr - 1] + 1; + for (var l = 0; l < part; l++) { + writeTable[curAddr++] = charCode++; + } + } else { + throw new Error("Incorrect type '" + typeof part + "' given in " + this.encodingName + " at chunk " + chunk[0]); + } + } + if (curAddr > 255) { + throw new Error("Incorrect chunk in " + this.encodingName + " at addr " + chunk[0] + ": too long" + curAddr); + } + }; + DBCSCodec.prototype._getEncodeBucket = function(uCode) { + var high = uCode >> 8; + if (this.encodeTable[high] === void 0) { + this.encodeTable[high] = UNASSIGNED_NODE.slice(0); + } + return this.encodeTable[high]; + }; + DBCSCodec.prototype._setEncodeChar = function(uCode, dbcsCode) { + var bucket = this._getEncodeBucket(uCode); + var low = uCode & 255; + if (bucket[low] <= SEQ_START) { + this.encodeTableSeq[SEQ_START - bucket[low]][DEF_CHAR] = dbcsCode; + } else if (bucket[low] == UNASSIGNED) { + bucket[low] = dbcsCode; + } + }; + DBCSCodec.prototype._setEncodeSequence = function(seq, dbcsCode) { + var uCode = seq[0]; + var bucket = this._getEncodeBucket(uCode); + var low = uCode & 255; + var node; + if (bucket[low] <= SEQ_START) { + node = this.encodeTableSeq[SEQ_START - bucket[low]]; + } else { + node = {}; + if (bucket[low] !== UNASSIGNED) node[DEF_CHAR] = bucket[low]; + bucket[low] = SEQ_START - this.encodeTableSeq.length; + this.encodeTableSeq.push(node); + } + for (var j = 1; j < seq.length - 1; j++) { + var oldVal = node[uCode]; + if (typeof oldVal === "object") { + node = oldVal; + } else { + node = node[uCode] = {}; + if (oldVal !== void 0) { + node[DEF_CHAR] = oldVal; + } + } + } + uCode = seq[seq.length - 1]; + node[uCode] = dbcsCode; + }; + DBCSCodec.prototype._fillEncodeTable = function(nodeIdx, prefix, skipEncodeChars) { + var node = this.decodeTables[nodeIdx]; + var hasValues = false; + var subNodeEmpty = {}; + for (var i2 = 0; i2 < 256; i2++) { + var uCode = node[i2]; + var mbCode = prefix + i2; + if (skipEncodeChars[mbCode]) { + continue; + } + if (uCode >= 0) { + this._setEncodeChar(uCode, mbCode); + hasValues = true; + } else if (uCode <= NODE_START) { + var subNodeIdx = NODE_START - uCode; + if (!subNodeEmpty[subNodeIdx]) { + var newPrefix = mbCode << 8 >>> 0; + if (this._fillEncodeTable(subNodeIdx, newPrefix, skipEncodeChars)) { + hasValues = true; + } else { + subNodeEmpty[subNodeIdx] = true; + } + } + } else if (uCode <= SEQ_START) { + this._setEncodeSequence(this.decodeTableSeq[SEQ_START - uCode], mbCode); + hasValues = true; + } + } + return hasValues; + }; + function DBCSEncoder(options, codec) { + this.leadSurrogate = -1; + this.seqObj = void 0; + this.encodeTable = codec.encodeTable; + this.encodeTableSeq = codec.encodeTableSeq; + this.defaultCharSingleByte = codec.defCharSB; + this.gb18030 = codec.gb18030; + } + DBCSEncoder.prototype.write = function(str) { + var newBuf = Buffer5.alloc(str.length * (this.gb18030 ? 4 : 3)); + var leadSurrogate = this.leadSurrogate; + var seqObj = this.seqObj; + var nextChar = -1; + var i2 = 0; + var j = 0; + while (true) { + if (nextChar === -1) { + if (i2 == str.length) break; + var uCode = str.charCodeAt(i2++); + } else { + var uCode = nextChar; + nextChar = -1; + } + if (uCode >= 55296 && uCode < 57344) { + if (uCode < 56320) { + if (leadSurrogate === -1) { + leadSurrogate = uCode; + continue; + } else { + leadSurrogate = uCode; + uCode = UNASSIGNED; + } + } else { + if (leadSurrogate !== -1) { + uCode = 65536 + (leadSurrogate - 55296) * 1024 + (uCode - 56320); + leadSurrogate = -1; + } else { + uCode = UNASSIGNED; + } + } + } else if (leadSurrogate !== -1) { + nextChar = uCode; + uCode = UNASSIGNED; + leadSurrogate = -1; + } + var dbcsCode = UNASSIGNED; + if (seqObj !== void 0 && uCode != UNASSIGNED) { + var resCode = seqObj[uCode]; + if (typeof resCode === "object") { + seqObj = resCode; + continue; + } else if (typeof resCode === "number") { + dbcsCode = resCode; + } else if (resCode == void 0) { + resCode = seqObj[DEF_CHAR]; + if (resCode !== void 0) { + dbcsCode = resCode; + nextChar = uCode; + } else { + } + } + seqObj = void 0; + } else if (uCode >= 0) { + var subtable = this.encodeTable[uCode >> 8]; + if (subtable !== void 0) { + dbcsCode = subtable[uCode & 255]; + } + if (dbcsCode <= SEQ_START) { + seqObj = this.encodeTableSeq[SEQ_START - dbcsCode]; + continue; + } + if (dbcsCode == UNASSIGNED && this.gb18030) { + var idx = findIdx(this.gb18030.uChars, uCode); + if (idx != -1) { + var dbcsCode = this.gb18030.gbChars[idx] + (uCode - this.gb18030.uChars[idx]); + newBuf[j++] = 129 + Math.floor(dbcsCode / 12600); + dbcsCode = dbcsCode % 12600; + newBuf[j++] = 48 + Math.floor(dbcsCode / 1260); + dbcsCode = dbcsCode % 1260; + newBuf[j++] = 129 + Math.floor(dbcsCode / 10); + dbcsCode = dbcsCode % 10; + newBuf[j++] = 48 + dbcsCode; + continue; + } + } + } + if (dbcsCode === UNASSIGNED) { + dbcsCode = this.defaultCharSingleByte; + } + if (dbcsCode < 256) { + newBuf[j++] = dbcsCode; + } else if (dbcsCode < 65536) { + newBuf[j++] = dbcsCode >> 8; + newBuf[j++] = dbcsCode & 255; + } else if (dbcsCode < 16777216) { + newBuf[j++] = dbcsCode >> 16; + newBuf[j++] = dbcsCode >> 8 & 255; + newBuf[j++] = dbcsCode & 255; + } else { + newBuf[j++] = dbcsCode >>> 24; + newBuf[j++] = dbcsCode >>> 16 & 255; + newBuf[j++] = dbcsCode >>> 8 & 255; + newBuf[j++] = dbcsCode & 255; + } + } + this.seqObj = seqObj; + this.leadSurrogate = leadSurrogate; + return newBuf.slice(0, j); + }; + DBCSEncoder.prototype.end = function() { + if (this.leadSurrogate === -1 && this.seqObj === void 0) { + return; + } + var newBuf = Buffer5.alloc(10); + var j = 0; + if (this.seqObj) { + var dbcsCode = this.seqObj[DEF_CHAR]; + if (dbcsCode !== void 0) { + if (dbcsCode < 256) { + newBuf[j++] = dbcsCode; + } else { + newBuf[j++] = dbcsCode >> 8; + newBuf[j++] = dbcsCode & 255; + } + } else { + } + this.seqObj = void 0; + } + if (this.leadSurrogate !== -1) { + newBuf[j++] = this.defaultCharSingleByte; + this.leadSurrogate = -1; + } + return newBuf.slice(0, j); + }; + DBCSEncoder.prototype.findIdx = findIdx; + function DBCSDecoder(options, codec) { + this.nodeIdx = 0; + this.prevBytes = []; + this.decodeTables = codec.decodeTables; + this.decodeTableSeq = codec.decodeTableSeq; + this.defaultCharUnicode = codec.defaultCharUnicode; + this.gb18030 = codec.gb18030; + } + DBCSDecoder.prototype.write = function(buf) { + var newBuf = Buffer5.alloc(buf.length * 2); + var nodeIdx = this.nodeIdx; + var prevBytes = this.prevBytes; + var prevOffset = this.prevBytes.length; + var seqStart = -this.prevBytes.length; + var uCode; + for (var i2 = 0, j = 0; i2 < buf.length; i2++) { + var curByte = i2 >= 0 ? buf[i2] : prevBytes[i2 + prevOffset]; + var uCode = this.decodeTables[nodeIdx][curByte]; + if (uCode >= 0) { + } else if (uCode === UNASSIGNED) { + uCode = this.defaultCharUnicode.charCodeAt(0); + i2 = seqStart; + } else if (uCode === GB18030_CODE) { + if (i2 >= 3) { + var ptr = (buf[i2 - 3] - 129) * 12600 + (buf[i2 - 2] - 48) * 1260 + (buf[i2 - 1] - 129) * 10 + (curByte - 48); + } else { + var ptr = (prevBytes[i2 - 3 + prevOffset] - 129) * 12600 + ((i2 - 2 >= 0 ? buf[i2 - 2] : prevBytes[i2 - 2 + prevOffset]) - 48) * 1260 + ((i2 - 1 >= 0 ? buf[i2 - 1] : prevBytes[i2 - 1 + prevOffset]) - 129) * 10 + (curByte - 48); + } + var idx = findIdx(this.gb18030.gbChars, ptr); + uCode = this.gb18030.uChars[idx] + ptr - this.gb18030.gbChars[idx]; + } else if (uCode <= NODE_START) { + nodeIdx = NODE_START - uCode; + continue; + } else if (uCode <= SEQ_START) { + var seq = this.decodeTableSeq[SEQ_START - uCode]; + for (var k = 0; k < seq.length - 1; k++) { + uCode = seq[k]; + newBuf[j++] = uCode & 255; + newBuf[j++] = uCode >> 8; + } + uCode = seq[seq.length - 1]; + } else { + throw new Error("iconv-lite internal error: invalid decoding table value " + uCode + " at " + nodeIdx + "/" + curByte); + } + if (uCode >= 65536) { + uCode -= 65536; + var uCodeLead = 55296 | uCode >> 10; + newBuf[j++] = uCodeLead & 255; + newBuf[j++] = uCodeLead >> 8; + uCode = 56320 | uCode & 1023; + } + newBuf[j++] = uCode & 255; + newBuf[j++] = uCode >> 8; + nodeIdx = 0; + seqStart = i2 + 1; + } + this.nodeIdx = nodeIdx; + this.prevBytes = seqStart >= 0 ? Array.prototype.slice.call(buf, seqStart) : prevBytes.slice(seqStart + prevOffset).concat(Array.prototype.slice.call(buf)); + return newBuf.slice(0, j).toString("ucs2"); + }; + DBCSDecoder.prototype.end = function() { + var ret = ""; + while (this.prevBytes.length > 0) { + ret += this.defaultCharUnicode; + var bytesArr = this.prevBytes.slice(1); + this.prevBytes = []; + this.nodeIdx = 0; + if (bytesArr.length > 0) { + ret += this.write(bytesArr); + } + } + this.prevBytes = []; + this.nodeIdx = 0; + return ret; + }; + function findIdx(table, val) { + if (table[0] > val) { + return -1; + } + var l = 0; + var r = table.length; + while (l < r - 1) { + var mid = l + (r - l + 1 >> 1); + if (table[mid] <= val) { + l = mid; + } else { + r = mid; + } + } + return l; + } + } +}); + +// node_modules/iconv-lite/encodings/tables/shiftjis.json +var require_shiftjis = __commonJS({ + "node_modules/iconv-lite/encodings/tables/shiftjis.json"(exports2, module2) { + module2.exports = [ + ["0", "\0", 128], + ["a1", "\uFF61", 62], + ["8140", "\u3000\u3001\u3002\uFF0C\uFF0E\u30FB\uFF1A\uFF1B\uFF1F\uFF01\u309B\u309C\xB4\uFF40\xA8\uFF3E\uFFE3\uFF3F\u30FD\u30FE\u309D\u309E\u3003\u4EDD\u3005\u3006\u3007\u30FC\u2015\u2010\uFF0F\uFF3C\uFF5E\u2225\uFF5C\u2026\u2025\u2018\u2019\u201C\u201D\uFF08\uFF09\u3014\u3015\uFF3B\uFF3D\uFF5B\uFF5D\u3008", 9, "\uFF0B\uFF0D\xB1\xD7"], + ["8180", "\xF7\uFF1D\u2260\uFF1C\uFF1E\u2266\u2267\u221E\u2234\u2642\u2640\xB0\u2032\u2033\u2103\uFFE5\uFF04\uFFE0\uFFE1\uFF05\uFF03\uFF06\uFF0A\uFF20\xA7\u2606\u2605\u25CB\u25CF\u25CE\u25C7\u25C6\u25A1\u25A0\u25B3\u25B2\u25BD\u25BC\u203B\u3012\u2192\u2190\u2191\u2193\u3013"], + ["81b8", "\u2208\u220B\u2286\u2287\u2282\u2283\u222A\u2229"], + ["81c8", "\u2227\u2228\uFFE2\u21D2\u21D4\u2200\u2203"], + ["81da", "\u2220\u22A5\u2312\u2202\u2207\u2261\u2252\u226A\u226B\u221A\u223D\u221D\u2235\u222B\u222C"], + ["81f0", "\u212B\u2030\u266F\u266D\u266A\u2020\u2021\xB6"], + ["81fc", "\u25EF"], + ["824f", "\uFF10", 9], + ["8260", "\uFF21", 25], + ["8281", "\uFF41", 25], + ["829f", "\u3041", 82], + ["8340", "\u30A1", 62], + ["8380", "\u30E0", 22], + ["839f", "\u0391", 16, "\u03A3", 6], + ["83bf", "\u03B1", 16, "\u03C3", 6], + ["8440", "\u0410", 5, "\u0401\u0416", 25], + ["8470", "\u0430", 5, "\u0451\u0436", 7], + ["8480", "\u043E", 17], + ["849f", "\u2500\u2502\u250C\u2510\u2518\u2514\u251C\u252C\u2524\u2534\u253C\u2501\u2503\u250F\u2513\u251B\u2517\u2523\u2533\u252B\u253B\u254B\u2520\u252F\u2528\u2537\u253F\u251D\u2530\u2525\u2538\u2542"], + ["8740", "\u2460", 19, "\u2160", 9], + ["875f", "\u3349\u3314\u3322\u334D\u3318\u3327\u3303\u3336\u3351\u3357\u330D\u3326\u3323\u332B\u334A\u333B\u339C\u339D\u339E\u338E\u338F\u33C4\u33A1"], + ["877e", "\u337B"], + ["8780", "\u301D\u301F\u2116\u33CD\u2121\u32A4", 4, "\u3231\u3232\u3239\u337E\u337D\u337C\u2252\u2261\u222B\u222E\u2211\u221A\u22A5\u2220\u221F\u22BF\u2235\u2229\u222A"], + ["889f", "\u4E9C\u5516\u5A03\u963F\u54C0\u611B\u6328\u59F6\u9022\u8475\u831C\u7A50\u60AA\u63E1\u6E25\u65ED\u8466\u82A6\u9BF5\u6893\u5727\u65A1\u6271\u5B9B\u59D0\u867B\u98F4\u7D62\u7DBE\u9B8E\u6216\u7C9F\u88B7\u5B89\u5EB5\u6309\u6697\u6848\u95C7\u978D\u674F\u4EE5\u4F0A\u4F4D\u4F9D\u5049\u56F2\u5937\u59D4\u5A01\u5C09\u60DF\u610F\u6170\u6613\u6905\u70BA\u754F\u7570\u79FB\u7DAD\u7DEF\u80C3\u840E\u8863\u8B02\u9055\u907A\u533B\u4E95\u4EA5\u57DF\u80B2\u90C1\u78EF\u4E00\u58F1\u6EA2\u9038\u7A32\u8328\u828B\u9C2F\u5141\u5370\u54BD\u54E1\u56E0\u59FB\u5F15\u98F2\u6DEB\u80E4\u852D"], + ["8940", "\u9662\u9670\u96A0\u97FB\u540B\u53F3\u5B87\u70CF\u7FBD\u8FC2\u96E8\u536F\u9D5C\u7ABA\u4E11\u7893\u81FC\u6E26\u5618\u5504\u6B1D\u851A\u9C3B\u59E5\u53A9\u6D66\u74DC\u958F\u5642\u4E91\u904B\u96F2\u834F\u990C\u53E1\u55B6\u5B30\u5F71\u6620\u66F3\u6804\u6C38\u6CF3\u6D29\u745B\u76C8\u7A4E\u9834\u82F1\u885B\u8A60\u92ED\u6DB2\u75AB\u76CA\u99C5\u60A6\u8B01\u8D8A\u95B2\u698E\u53AD\u5186"], + ["8980", "\u5712\u5830\u5944\u5BB4\u5EF6\u6028\u63A9\u63F4\u6CBF\u6F14\u708E\u7114\u7159\u71D5\u733F\u7E01\u8276\u82D1\u8597\u9060\u925B\u9D1B\u5869\u65BC\u6C5A\u7525\u51F9\u592E\u5965\u5F80\u5FDC\u62BC\u65FA\u6A2A\u6B27\u6BB4\u738B\u7FC1\u8956\u9D2C\u9D0E\u9EC4\u5CA1\u6C96\u837B\u5104\u5C4B\u61B6\u81C6\u6876\u7261\u4E59\u4FFA\u5378\u6069\u6E29\u7A4F\u97F3\u4E0B\u5316\u4EEE\u4F55\u4F3D\u4FA1\u4F73\u52A0\u53EF\u5609\u590F\u5AC1\u5BB6\u5BE1\u79D1\u6687\u679C\u67B6\u6B4C\u6CB3\u706B\u73C2\u798D\u79BE\u7A3C\u7B87\u82B1\u82DB\u8304\u8377\u83EF\u83D3\u8766\u8AB2\u5629\u8CA8\u8FE6\u904E\u971E\u868A\u4FC4\u5CE8\u6211\u7259\u753B\u81E5\u82BD\u86FE\u8CC0\u96C5\u9913\u99D5\u4ECB\u4F1A\u89E3\u56DE\u584A\u58CA\u5EFB\u5FEB\u602A\u6094\u6062\u61D0\u6212\u62D0\u6539"], + ["8a40", "\u9B41\u6666\u68B0\u6D77\u7070\u754C\u7686\u7D75\u82A5\u87F9\u958B\u968E\u8C9D\u51F1\u52BE\u5916\u54B3\u5BB3\u5D16\u6168\u6982\u6DAF\u788D\u84CB\u8857\u8A72\u93A7\u9AB8\u6D6C\u99A8\u86D9\u57A3\u67FF\u86CE\u920E\u5283\u5687\u5404\u5ED3\u62E1\u64B9\u683C\u6838\u6BBB\u7372\u78BA\u7A6B\u899A\u89D2\u8D6B\u8F03\u90ED\u95A3\u9694\u9769\u5B66\u5CB3\u697D\u984D\u984E\u639B\u7B20\u6A2B"], + ["8a80", "\u6A7F\u68B6\u9C0D\u6F5F\u5272\u559D\u6070\u62EC\u6D3B\u6E07\u6ED1\u845B\u8910\u8F44\u4E14\u9C39\u53F6\u691B\u6A3A\u9784\u682A\u515C\u7AC3\u84B2\u91DC\u938C\u565B\u9D28\u6822\u8305\u8431\u7CA5\u5208\u82C5\u74E6\u4E7E\u4F83\u51A0\u5BD2\u520A\u52D8\u52E7\u5DFB\u559A\u582A\u59E6\u5B8C\u5B98\u5BDB\u5E72\u5E79\u60A3\u611F\u6163\u61BE\u63DB\u6562\u67D1\u6853\u68FA\u6B3E\u6B53\u6C57\u6F22\u6F97\u6F45\u74B0\u7518\u76E3\u770B\u7AFF\u7BA1\u7C21\u7DE9\u7F36\u7FF0\u809D\u8266\u839E\u89B3\u8ACC\u8CAB\u9084\u9451\u9593\u9591\u95A2\u9665\u97D3\u9928\u8218\u4E38\u542B\u5CB8\u5DCC\u73A9\u764C\u773C\u5CA9\u7FEB\u8D0B\u96C1\u9811\u9854\u9858\u4F01\u4F0E\u5371\u559C\u5668\u57FA\u5947\u5B09\u5BC4\u5C90\u5E0C\u5E7E\u5FCC\u63EE\u673A\u65D7\u65E2\u671F\u68CB\u68C4"], + ["8b40", "\u6A5F\u5E30\u6BC5\u6C17\u6C7D\u757F\u7948\u5B63\u7A00\u7D00\u5FBD\u898F\u8A18\u8CB4\u8D77\u8ECC\u8F1D\u98E2\u9A0E\u9B3C\u4E80\u507D\u5100\u5993\u5B9C\u622F\u6280\u64EC\u6B3A\u72A0\u7591\u7947\u7FA9\u87FB\u8ABC\u8B70\u63AC\u83CA\u97A0\u5409\u5403\u55AB\u6854\u6A58\u8A70\u7827\u6775\u9ECD\u5374\u5BA2\u811A\u8650\u9006\u4E18\u4E45\u4EC7\u4F11\u53CA\u5438\u5BAE\u5F13\u6025\u6551"], + ["8b80", "\u673D\u6C42\u6C72\u6CE3\u7078\u7403\u7A76\u7AAE\u7B08\u7D1A\u7CFE\u7D66\u65E7\u725B\u53BB\u5C45\u5DE8\u62D2\u62E0\u6319\u6E20\u865A\u8A31\u8DDD\u92F8\u6F01\u79A6\u9B5A\u4EA8\u4EAB\u4EAC\u4F9B\u4FA0\u50D1\u5147\u7AF6\u5171\u51F6\u5354\u5321\u537F\u53EB\u55AC\u5883\u5CE1\u5F37\u5F4A\u602F\u6050\u606D\u631F\u6559\u6A4B\u6CC1\u72C2\u72ED\u77EF\u80F8\u8105\u8208\u854E\u90F7\u93E1\u97FF\u9957\u9A5A\u4EF0\u51DD\u5C2D\u6681\u696D\u5C40\u66F2\u6975\u7389\u6850\u7C81\u50C5\u52E4\u5747\u5DFE\u9326\u65A4\u6B23\u6B3D\u7434\u7981\u79BD\u7B4B\u7DCA\u82B9\u83CC\u887F\u895F\u8B39\u8FD1\u91D1\u541F\u9280\u4E5D\u5036\u53E5\u533A\u72D7\u7396\u77E9\u82E6\u8EAF\u99C6\u99C8\u99D2\u5177\u611A\u865E\u55B0\u7A7A\u5076\u5BD3\u9047\u9685\u4E32\u6ADB\u91E7\u5C51\u5C48"], + ["8c40", "\u6398\u7A9F\u6C93\u9774\u8F61\u7AAA\u718A\u9688\u7C82\u6817\u7E70\u6851\u936C\u52F2\u541B\u85AB\u8A13\u7FA4\u8ECD\u90E1\u5366\u8888\u7941\u4FC2\u50BE\u5211\u5144\u5553\u572D\u73EA\u578B\u5951\u5F62\u5F84\u6075\u6176\u6167\u61A9\u63B2\u643A\u656C\u666F\u6842\u6E13\u7566\u7A3D\u7CFB\u7D4C\u7D99\u7E4B\u7F6B\u830E\u834A\u86CD\u8A08\u8A63\u8B66\u8EFD\u981A\u9D8F\u82B8\u8FCE\u9BE8"], + ["8c80", "\u5287\u621F\u6483\u6FC0\u9699\u6841\u5091\u6B20\u6C7A\u6F54\u7A74\u7D50\u8840\u8A23\u6708\u4EF6\u5039\u5026\u5065\u517C\u5238\u5263\u55A7\u570F\u5805\u5ACC\u5EFA\u61B2\u61F8\u62F3\u6372\u691C\u6A29\u727D\u72AC\u732E\u7814\u786F\u7D79\u770C\u80A9\u898B\u8B19\u8CE2\u8ED2\u9063\u9375\u967A\u9855\u9A13\u9E78\u5143\u539F\u53B3\u5E7B\u5F26\u6E1B\u6E90\u7384\u73FE\u7D43\u8237\u8A00\u8AFA\u9650\u4E4E\u500B\u53E4\u547C\u56FA\u59D1\u5B64\u5DF1\u5EAB\u5F27\u6238\u6545\u67AF\u6E56\u72D0\u7CCA\u88B4\u80A1\u80E1\u83F0\u864E\u8A87\u8DE8\u9237\u96C7\u9867\u9F13\u4E94\u4E92\u4F0D\u5348\u5449\u543E\u5A2F\u5F8C\u5FA1\u609F\u68A7\u6A8E\u745A\u7881\u8A9E\u8AA4\u8B77\u9190\u4E5E\u9BC9\u4EA4\u4F7C\u4FAF\u5019\u5016\u5149\u516C\u529F\u52B9\u52FE\u539A\u53E3\u5411"], + ["8d40", "\u540E\u5589\u5751\u57A2\u597D\u5B54\u5B5D\u5B8F\u5DE5\u5DE7\u5DF7\u5E78\u5E83\u5E9A\u5EB7\u5F18\u6052\u614C\u6297\u62D8\u63A7\u653B\u6602\u6643\u66F4\u676D\u6821\u6897\u69CB\u6C5F\u6D2A\u6D69\u6E2F\u6E9D\u7532\u7687\u786C\u7A3F\u7CE0\u7D05\u7D18\u7D5E\u7DB1\u8015\u8003\u80AF\u80B1\u8154\u818F\u822A\u8352\u884C\u8861\u8B1B\u8CA2\u8CFC\u90CA\u9175\u9271\u783F\u92FC\u95A4\u964D"], + ["8d80", "\u9805\u9999\u9AD8\u9D3B\u525B\u52AB\u53F7\u5408\u58D5\u62F7\u6FE0\u8C6A\u8F5F\u9EB9\u514B\u523B\u544A\u56FD\u7A40\u9177\u9D60\u9ED2\u7344\u6F09\u8170\u7511\u5FFD\u60DA\u9AA8\u72DB\u8FBC\u6B64\u9803\u4ECA\u56F0\u5764\u58BE\u5A5A\u6068\u61C7\u660F\u6606\u6839\u68B1\u6DF7\u75D5\u7D3A\u826E\u9B42\u4E9B\u4F50\u53C9\u5506\u5D6F\u5DE6\u5DEE\u67FB\u6C99\u7473\u7802\u8A50\u9396\u88DF\u5750\u5EA7\u632B\u50B5\u50AC\u518D\u6700\u54C9\u585E\u59BB\u5BB0\u5F69\u624D\u63A1\u683D\u6B73\u6E08\u707D\u91C7\u7280\u7815\u7826\u796D\u658E\u7D30\u83DC\u88C1\u8F09\u969B\u5264\u5728\u6750\u7F6A\u8CA1\u51B4\u5742\u962A\u583A\u698A\u80B4\u54B2\u5D0E\u57FC\u7895\u9DFA\u4F5C\u524A\u548B\u643E\u6628\u6714\u67F5\u7A84\u7B56\u7D22\u932F\u685C\u9BAD\u7B39\u5319\u518A\u5237"], + ["8e40", "\u5BDF\u62F6\u64AE\u64E6\u672D\u6BBA\u85A9\u96D1\u7690\u9BD6\u634C\u9306\u9BAB\u76BF\u6652\u4E09\u5098\u53C2\u5C71\u60E8\u6492\u6563\u685F\u71E6\u73CA\u7523\u7B97\u7E82\u8695\u8B83\u8CDB\u9178\u9910\u65AC\u66AB\u6B8B\u4ED5\u4ED4\u4F3A\u4F7F\u523A\u53F8\u53F2\u55E3\u56DB\u58EB\u59CB\u59C9\u59FF\u5B50\u5C4D\u5E02\u5E2B\u5FD7\u601D\u6307\u652F\u5B5C\u65AF\u65BD\u65E8\u679D\u6B62"], + ["8e80", "\u6B7B\u6C0F\u7345\u7949\u79C1\u7CF8\u7D19\u7D2B\u80A2\u8102\u81F3\u8996\u8A5E\u8A69\u8A66\u8A8C\u8AEE\u8CC7\u8CDC\u96CC\u98FC\u6B6F\u4E8B\u4F3C\u4F8D\u5150\u5B57\u5BFA\u6148\u6301\u6642\u6B21\u6ECB\u6CBB\u723E\u74BD\u75D4\u78C1\u793A\u800C\u8033\u81EA\u8494\u8F9E\u6C50\u9E7F\u5F0F\u8B58\u9D2B\u7AFA\u8EF8\u5B8D\u96EB\u4E03\u53F1\u57F7\u5931\u5AC9\u5BA4\u6089\u6E7F\u6F06\u75BE\u8CEA\u5B9F\u8500\u7BE0\u5072\u67F4\u829D\u5C61\u854A\u7E1E\u820E\u5199\u5C04\u6368\u8D66\u659C\u716E\u793E\u7D17\u8005\u8B1D\u8ECA\u906E\u86C7\u90AA\u501F\u52FA\u5C3A\u6753\u707C\u7235\u914C\u91C8\u932B\u82E5\u5BC2\u5F31\u60F9\u4E3B\u53D6\u5B88\u624B\u6731\u6B8A\u72E9\u73E0\u7A2E\u816B\u8DA3\u9152\u9996\u5112\u53D7\u546A\u5BFF\u6388\u6A39\u7DAC\u9700\u56DA\u53CE\u5468"], + ["8f40", "\u5B97\u5C31\u5DDE\u4FEE\u6101\u62FE\u6D32\u79C0\u79CB\u7D42\u7E4D\u7FD2\u81ED\u821F\u8490\u8846\u8972\u8B90\u8E74\u8F2F\u9031\u914B\u916C\u96C6\u919C\u4EC0\u4F4F\u5145\u5341\u5F93\u620E\u67D4\u6C41\u6E0B\u7363\u7E26\u91CD\u9283\u53D4\u5919\u5BBF\u6DD1\u795D\u7E2E\u7C9B\u587E\u719F\u51FA\u8853\u8FF0\u4FCA\u5CFB\u6625\u77AC\u7AE3\u821C\u99FF\u51C6\u5FAA\u65EC\u696F\u6B89\u6DF3"], + ["8f80", "\u6E96\u6F64\u76FE\u7D14\u5DE1\u9075\u9187\u9806\u51E6\u521D\u6240\u6691\u66D9\u6E1A\u5EB6\u7DD2\u7F72\u66F8\u85AF\u85F7\u8AF8\u52A9\u53D9\u5973\u5E8F\u5F90\u6055\u92E4\u9664\u50B7\u511F\u52DD\u5320\u5347\u53EC\u54E8\u5546\u5531\u5617\u5968\u59BE\u5A3C\u5BB5\u5C06\u5C0F\u5C11\u5C1A\u5E84\u5E8A\u5EE0\u5F70\u627F\u6284\u62DB\u638C\u6377\u6607\u660C\u662D\u6676\u677E\u68A2\u6A1F\u6A35\u6CBC\u6D88\u6E09\u6E58\u713C\u7126\u7167\u75C7\u7701\u785D\u7901\u7965\u79F0\u7AE0\u7B11\u7CA7\u7D39\u8096\u83D6\u848B\u8549\u885D\u88F3\u8A1F\u8A3C\u8A54\u8A73\u8C61\u8CDE\u91A4\u9266\u937E\u9418\u969C\u9798\u4E0A\u4E08\u4E1E\u4E57\u5197\u5270\u57CE\u5834\u58CC\u5B22\u5E38\u60C5\u64FE\u6761\u6756\u6D44\u72B6\u7573\u7A63\u84B8\u8B72\u91B8\u9320\u5631\u57F4\u98FE"], + ["9040", "\u62ED\u690D\u6B96\u71ED\u7E54\u8077\u8272\u89E6\u98DF\u8755\u8FB1\u5C3B\u4F38\u4FE1\u4FB5\u5507\u5A20\u5BDD\u5BE9\u5FC3\u614E\u632F\u65B0\u664B\u68EE\u699B\u6D78\u6DF1\u7533\u75B9\u771F\u795E\u79E6\u7D33\u81E3\u82AF\u85AA\u89AA\u8A3A\u8EAB\u8F9B\u9032\u91DD\u9707\u4EBA\u4EC1\u5203\u5875\u58EC\u5C0B\u751A\u5C3D\u814E\u8A0A\u8FC5\u9663\u976D\u7B25\u8ACF\u9808\u9162\u56F3\u53A8"], + ["9080", "\u9017\u5439\u5782\u5E25\u63A8\u6C34\u708A\u7761\u7C8B\u7FE0\u8870\u9042\u9154\u9310\u9318\u968F\u745E\u9AC4\u5D07\u5D69\u6570\u67A2\u8DA8\u96DB\u636E\u6749\u6919\u83C5\u9817\u96C0\u88FE\u6F84\u647A\u5BF8\u4E16\u702C\u755D\u662F\u51C4\u5236\u52E2\u59D3\u5F81\u6027\u6210\u653F\u6574\u661F\u6674\u68F2\u6816\u6B63\u6E05\u7272\u751F\u76DB\u7CBE\u8056\u58F0\u88FD\u897F\u8AA0\u8A93\u8ACB\u901D\u9192\u9752\u9759\u6589\u7A0E\u8106\u96BB\u5E2D\u60DC\u621A\u65A5\u6614\u6790\u77F3\u7A4D\u7C4D\u7E3E\u810A\u8CAC\u8D64\u8DE1\u8E5F\u78A9\u5207\u62D9\u63A5\u6442\u6298\u8A2D\u7A83\u7BC0\u8AAC\u96EA\u7D76\u820C\u8749\u4ED9\u5148\u5343\u5360\u5BA3\u5C02\u5C16\u5DDD\u6226\u6247\u64B0\u6813\u6834\u6CC9\u6D45\u6D17\u67D3\u6F5C\u714E\u717D\u65CB\u7A7F\u7BAD\u7DDA"], + ["9140", "\u7E4A\u7FA8\u817A\u821B\u8239\u85A6\u8A6E\u8CCE\u8DF5\u9078\u9077\u92AD\u9291\u9583\u9BAE\u524D\u5584\u6F38\u7136\u5168\u7985\u7E55\u81B3\u7CCE\u564C\u5851\u5CA8\u63AA\u66FE\u66FD\u695A\u72D9\u758F\u758E\u790E\u7956\u79DF\u7C97\u7D20\u7D44\u8607\u8A34\u963B\u9061\u9F20\u50E7\u5275\u53CC\u53E2\u5009\u55AA\u58EE\u594F\u723D\u5B8B\u5C64\u531D\u60E3\u60F3\u635C\u6383\u633F\u63BB"], + ["9180", "\u64CD\u65E9\u66F9\u5DE3\u69CD\u69FD\u6F15\u71E5\u4E89\u75E9\u76F8\u7A93\u7CDF\u7DCF\u7D9C\u8061\u8349\u8358\u846C\u84BC\u85FB\u88C5\u8D70\u9001\u906D\u9397\u971C\u9A12\u50CF\u5897\u618E\u81D3\u8535\u8D08\u9020\u4FC3\u5074\u5247\u5373\u606F\u6349\u675F\u6E2C\u8DB3\u901F\u4FD7\u5C5E\u8CCA\u65CF\u7D9A\u5352\u8896\u5176\u63C3\u5B58\u5B6B\u5C0A\u640D\u6751\u905C\u4ED6\u591A\u592A\u6C70\u8A51\u553E\u5815\u59A5\u60F0\u6253\u67C1\u8235\u6955\u9640\u99C4\u9A28\u4F53\u5806\u5BFE\u8010\u5CB1\u5E2F\u5F85\u6020\u614B\u6234\u66FF\u6CF0\u6EDE\u80CE\u817F\u82D4\u888B\u8CB8\u9000\u902E\u968A\u9EDB\u9BDB\u4EE3\u53F0\u5927\u7B2C\u918D\u984C\u9DF9\u6EDD\u7027\u5353\u5544\u5B85\u6258\u629E\u62D3\u6CA2\u6FEF\u7422\u8A17\u9438\u6FC1\u8AFE\u8338\u51E7\u86F8\u53EA"], + ["9240", "\u53E9\u4F46\u9054\u8FB0\u596A\u8131\u5DFD\u7AEA\u8FBF\u68DA\u8C37\u72F8\u9C48\u6A3D\u8AB0\u4E39\u5358\u5606\u5766\u62C5\u63A2\u65E6\u6B4E\u6DE1\u6E5B\u70AD\u77ED\u7AEF\u7BAA\u7DBB\u803D\u80C6\u86CB\u8A95\u935B\u56E3\u58C7\u5F3E\u65AD\u6696\u6A80\u6BB5\u7537\u8AC7\u5024\u77E5\u5730\u5F1B\u6065\u667A\u6C60\u75F4\u7A1A\u7F6E\u81F4\u8718\u9045\u99B3\u7BC9\u755C\u7AF9\u7B51\u84C4"], + ["9280", "\u9010\u79E9\u7A92\u8336\u5AE1\u7740\u4E2D\u4EF2\u5B99\u5FE0\u62BD\u663C\u67F1\u6CE8\u866B\u8877\u8A3B\u914E\u92F3\u99D0\u6A17\u7026\u732A\u82E7\u8457\u8CAF\u4E01\u5146\u51CB\u558B\u5BF5\u5E16\u5E33\u5E81\u5F14\u5F35\u5F6B\u5FB4\u61F2\u6311\u66A2\u671D\u6F6E\u7252\u753A\u773A\u8074\u8139\u8178\u8776\u8ABF\u8ADC\u8D85\u8DF3\u929A\u9577\u9802\u9CE5\u52C5\u6357\u76F4\u6715\u6C88\u73CD\u8CC3\u93AE\u9673\u6D25\u589C\u690E\u69CC\u8FFD\u939A\u75DB\u901A\u585A\u6802\u63B4\u69FB\u4F43\u6F2C\u67D8\u8FBB\u8526\u7DB4\u9354\u693F\u6F70\u576A\u58F7\u5B2C\u7D2C\u722A\u540A\u91E3\u9DB4\u4EAD\u4F4E\u505C\u5075\u5243\u8C9E\u5448\u5824\u5B9A\u5E1D\u5E95\u5EAD\u5EF7\u5F1F\u608C\u62B5\u633A\u63D0\u68AF\u6C40\u7887\u798E\u7A0B\u7DE0\u8247\u8A02\u8AE6\u8E44\u9013"], + ["9340", "\u90B8\u912D\u91D8\u9F0E\u6CE5\u6458\u64E2\u6575\u6EF4\u7684\u7B1B\u9069\u93D1\u6EBA\u54F2\u5FB9\u64A4\u8F4D\u8FED\u9244\u5178\u586B\u5929\u5C55\u5E97\u6DFB\u7E8F\u751C\u8CBC\u8EE2\u985B\u70B9\u4F1D\u6BBF\u6FB1\u7530\u96FB\u514E\u5410\u5835\u5857\u59AC\u5C60\u5F92\u6597\u675C\u6E21\u767B\u83DF\u8CED\u9014\u90FD\u934D\u7825\u783A\u52AA\u5EA6\u571F\u5974\u6012\u5012\u515A\u51AC"], + ["9380", "\u51CD\u5200\u5510\u5854\u5858\u5957\u5B95\u5CF6\u5D8B\u60BC\u6295\u642D\u6771\u6843\u68BC\u68DF\u76D7\u6DD8\u6E6F\u6D9B\u706F\u71C8\u5F53\u75D8\u7977\u7B49\u7B54\u7B52\u7CD6\u7D71\u5230\u8463\u8569\u85E4\u8A0E\u8B04\u8C46\u8E0F\u9003\u900F\u9419\u9676\u982D\u9A30\u95D8\u50CD\u52D5\u540C\u5802\u5C0E\u61A7\u649E\u6D1E\u77B3\u7AE5\u80F4\u8404\u9053\u9285\u5CE0\u9D07\u533F\u5F97\u5FB3\u6D9C\u7279\u7763\u79BF\u7BE4\u6BD2\u72EC\u8AAD\u6803\u6A61\u51F8\u7A81\u6934\u5C4A\u9CF6\u82EB\u5BC5\u9149\u701E\u5678\u5C6F\u60C7\u6566\u6C8C\u8C5A\u9041\u9813\u5451\u66C7\u920D\u5948\u90A3\u5185\u4E4D\u51EA\u8599\u8B0E\u7058\u637A\u934B\u6962\u99B4\u7E04\u7577\u5357\u6960\u8EDF\u96E3\u6C5D\u4E8C\u5C3C\u5F10\u8FE9\u5302\u8CD1\u8089\u8679\u5EFF\u65E5\u4E73\u5165"], + ["9440", "\u5982\u5C3F\u97EE\u4EFB\u598A\u5FCD\u8A8D\u6FE1\u79B0\u7962\u5BE7\u8471\u732B\u71B1\u5E74\u5FF5\u637B\u649A\u71C3\u7C98\u4E43\u5EFC\u4E4B\u57DC\u56A2\u60A9\u6FC3\u7D0D\u80FD\u8133\u81BF\u8FB2\u8997\u86A4\u5DF4\u628A\u64AD\u8987\u6777\u6CE2\u6D3E\u7436\u7834\u5A46\u7F75\u82AD\u99AC\u4FF3\u5EC3\u62DD\u6392\u6557\u676F\u76C3\u724C\u80CC\u80BA\u8F29\u914D\u500D\u57F9\u5A92\u6885"], + ["9480", "\u6973\u7164\u72FD\u8CB7\u58F2\u8CE0\u966A\u9019\u877F\u79E4\u77E7\u8429\u4F2F\u5265\u535A\u62CD\u67CF\u6CCA\u767D\u7B94\u7C95\u8236\u8584\u8FEB\u66DD\u6F20\u7206\u7E1B\u83AB\u99C1\u9EA6\u51FD\u7BB1\u7872\u7BB8\u8087\u7B48\u6AE8\u5E61\u808C\u7551\u7560\u516B\u9262\u6E8C\u767A\u9197\u9AEA\u4F10\u7F70\u629C\u7B4F\u95A5\u9CE9\u567A\u5859\u86E4\u96BC\u4F34\u5224\u534A\u53CD\u53DB\u5E06\u642C\u6591\u677F\u6C3E\u6C4E\u7248\u72AF\u73ED\u7554\u7E41\u822C\u85E9\u8CA9\u7BC4\u91C6\u7169\u9812\u98EF\u633D\u6669\u756A\u76E4\u78D0\u8543\u86EE\u532A\u5351\u5426\u5983\u5E87\u5F7C\u60B2\u6249\u6279\u62AB\u6590\u6BD4\u6CCC\u75B2\u76AE\u7891\u79D8\u7DCB\u7F77\u80A5\u88AB\u8AB9\u8CBB\u907F\u975E\u98DB\u6A0B\u7C38\u5099\u5C3E\u5FAE\u6787\u6BD8\u7435\u7709\u7F8E"], + ["9540", "\u9F3B\u67CA\u7A17\u5339\u758B\u9AED\u5F66\u819D\u83F1\u8098\u5F3C\u5FC5\u7562\u7B46\u903C\u6867\u59EB\u5A9B\u7D10\u767E\u8B2C\u4FF5\u5F6A\u6A19\u6C37\u6F02\u74E2\u7968\u8868\u8A55\u8C79\u5EDF\u63CF\u75C5\u79D2\u82D7\u9328\u92F2\u849C\u86ED\u9C2D\u54C1\u5F6C\u658C\u6D5C\u7015\u8CA7\u8CD3\u983B\u654F\u74F6\u4E0D\u4ED8\u57E0\u592B\u5A66\u5BCC\u51A8\u5E03\u5E9C\u6016\u6276\u6577"], + ["9580", "\u65A7\u666E\u6D6E\u7236\u7B26\u8150\u819A\u8299\u8B5C\u8CA0\u8CE6\u8D74\u961C\u9644\u4FAE\u64AB\u6B66\u821E\u8461\u856A\u90E8\u5C01\u6953\u98A8\u847A\u8557\u4F0F\u526F\u5FA9\u5E45\u670D\u798F\u8179\u8907\u8986\u6DF5\u5F17\u6255\u6CB8\u4ECF\u7269\u9B92\u5206\u543B\u5674\u58B3\u61A4\u626E\u711A\u596E\u7C89\u7CDE\u7D1B\u96F0\u6587\u805E\u4E19\u4F75\u5175\u5840\u5E63\u5E73\u5F0A\u67C4\u4E26\u853D\u9589\u965B\u7C73\u9801\u50FB\u58C1\u7656\u78A7\u5225\u77A5\u8511\u7B86\u504F\u5909\u7247\u7BC7\u7DE8\u8FBA\u8FD4\u904D\u4FBF\u52C9\u5A29\u5F01\u97AD\u4FDD\u8217\u92EA\u5703\u6355\u6B69\u752B\u88DC\u8F14\u7A42\u52DF\u5893\u6155\u620A\u66AE\u6BCD\u7C3F\u83E9\u5023\u4FF8\u5305\u5446\u5831\u5949\u5B9D\u5CF0\u5CEF\u5D29\u5E96\u62B1\u6367\u653E\u65B9\u670B"], + ["9640", "\u6CD5\u6CE1\u70F9\u7832\u7E2B\u80DE\u82B3\u840C\u84EC\u8702\u8912\u8A2A\u8C4A\u90A6\u92D2\u98FD\u9CF3\u9D6C\u4E4F\u4EA1\u508D\u5256\u574A\u59A8\u5E3D\u5FD8\u5FD9\u623F\u66B4\u671B\u67D0\u68D2\u5192\u7D21\u80AA\u81A8\u8B00\u8C8C\u8CBF\u927E\u9632\u5420\u982C\u5317\u50D5\u535C\u58A8\u64B2\u6734\u7267\u7766\u7A46\u91E6\u52C3\u6CA1\u6B86\u5800\u5E4C\u5954\u672C\u7FFB\u51E1\u76C6"], + ["9680", "\u6469\u78E8\u9B54\u9EBB\u57CB\u59B9\u6627\u679A\u6BCE\u54E9\u69D9\u5E55\u819C\u6795\u9BAA\u67FE\u9C52\u685D\u4EA6\u4FE3\u53C8\u62B9\u672B\u6CAB\u8FC4\u4FAD\u7E6D\u9EBF\u4E07\u6162\u6E80\u6F2B\u8513\u5473\u672A\u9B45\u5DF3\u7B95\u5CAC\u5BC6\u871C\u6E4A\u84D1\u7A14\u8108\u5999\u7C8D\u6C11\u7720\u52D9\u5922\u7121\u725F\u77DB\u9727\u9D61\u690B\u5A7F\u5A18\u51A5\u540D\u547D\u660E\u76DF\u8FF7\u9298\u9CF4\u59EA\u725D\u6EC5\u514D\u68C9\u7DBF\u7DEC\u9762\u9EBA\u6478\u6A21\u8302\u5984\u5B5F\u6BDB\u731B\u76F2\u7DB2\u8017\u8499\u5132\u6728\u9ED9\u76EE\u6762\u52FF\u9905\u5C24\u623B\u7C7E\u8CB0\u554F\u60B6\u7D0B\u9580\u5301\u4E5F\u51B6\u591C\u723A\u8036\u91CE\u5F25\u77E2\u5384\u5F79\u7D04\u85AC\u8A33\u8E8D\u9756\u67F3\u85AE\u9453\u6109\u6108\u6CB9\u7652"], + ["9740", "\u8AED\u8F38\u552F\u4F51\u512A\u52C7\u53CB\u5BA5\u5E7D\u60A0\u6182\u63D6\u6709\u67DA\u6E67\u6D8C\u7336\u7337\u7531\u7950\u88D5\u8A98\u904A\u9091\u90F5\u96C4\u878D\u5915\u4E88\u4F59\u4E0E\u8A89\u8F3F\u9810\u50AD\u5E7C\u5996\u5BB9\u5EB8\u63DA\u63FA\u64C1\u66DC\u694A\u69D8\u6D0B\u6EB6\u7194\u7528\u7AAF\u7F8A\u8000\u8449\u84C9\u8981\u8B21\u8E0A\u9065\u967D\u990A\u617E\u6291\u6B32"], + ["9780", "\u6C83\u6D74\u7FCC\u7FFC\u6DC0\u7F85\u87BA\u88F8\u6765\u83B1\u983C\u96F7\u6D1B\u7D61\u843D\u916A\u4E71\u5375\u5D50\u6B04\u6FEB\u85CD\u862D\u89A7\u5229\u540F\u5C65\u674E\u68A8\u7406\u7483\u75E2\u88CF\u88E1\u91CC\u96E2\u9678\u5F8B\u7387\u7ACB\u844E\u63A0\u7565\u5289\u6D41\u6E9C\u7409\u7559\u786B\u7C92\u9686\u7ADC\u9F8D\u4FB6\u616E\u65C5\u865C\u4E86\u4EAE\u50DA\u4E21\u51CC\u5BEE\u6599\u6881\u6DBC\u731F\u7642\u77AD\u7A1C\u7CE7\u826F\u8AD2\u907C\u91CF\u9675\u9818\u529B\u7DD1\u502B\u5398\u6797\u6DCB\u71D0\u7433\u81E8\u8F2A\u96A3\u9C57\u9E9F\u7460\u5841\u6D99\u7D2F\u985E\u4EE4\u4F36\u4F8B\u51B7\u52B1\u5DBA\u601C\u73B2\u793C\u82D3\u9234\u96B7\u96F6\u970A\u9E97\u9F62\u66A6\u6B74\u5217\u52A3\u70C8\u88C2\u5EC9\u604B\u6190\u6F23\u7149\u7C3E\u7DF4\u806F"], + ["9840", "\u84EE\u9023\u932C\u5442\u9B6F\u6AD3\u7089\u8CC2\u8DEF\u9732\u52B4\u5A41\u5ECA\u5F04\u6717\u697C\u6994\u6D6A\u6F0F\u7262\u72FC\u7BED\u8001\u807E\u874B\u90CE\u516D\u9E93\u7984\u808B\u9332\u8AD6\u502D\u548C\u8A71\u6B6A\u8CC4\u8107\u60D1\u67A0\u9DF2\u4E99\u4E98\u9C10\u8A6B\u85C1\u8568\u6900\u6E7E\u7897\u8155"], + ["989f", "\u5F0C\u4E10\u4E15\u4E2A\u4E31\u4E36\u4E3C\u4E3F\u4E42\u4E56\u4E58\u4E82\u4E85\u8C6B\u4E8A\u8212\u5F0D\u4E8E\u4E9E\u4E9F\u4EA0\u4EA2\u4EB0\u4EB3\u4EB6\u4ECE\u4ECD\u4EC4\u4EC6\u4EC2\u4ED7\u4EDE\u4EED\u4EDF\u4EF7\u4F09\u4F5A\u4F30\u4F5B\u4F5D\u4F57\u4F47\u4F76\u4F88\u4F8F\u4F98\u4F7B\u4F69\u4F70\u4F91\u4F6F\u4F86\u4F96\u5118\u4FD4\u4FDF\u4FCE\u4FD8\u4FDB\u4FD1\u4FDA\u4FD0\u4FE4\u4FE5\u501A\u5028\u5014\u502A\u5025\u5005\u4F1C\u4FF6\u5021\u5029\u502C\u4FFE\u4FEF\u5011\u5006\u5043\u5047\u6703\u5055\u5050\u5048\u505A\u5056\u506C\u5078\u5080\u509A\u5085\u50B4\u50B2"], + ["9940", "\u50C9\u50CA\u50B3\u50C2\u50D6\u50DE\u50E5\u50ED\u50E3\u50EE\u50F9\u50F5\u5109\u5101\u5102\u5116\u5115\u5114\u511A\u5121\u513A\u5137\u513C\u513B\u513F\u5140\u5152\u514C\u5154\u5162\u7AF8\u5169\u516A\u516E\u5180\u5182\u56D8\u518C\u5189\u518F\u5191\u5193\u5195\u5196\u51A4\u51A6\u51A2\u51A9\u51AA\u51AB\u51B3\u51B1\u51B2\u51B0\u51B5\u51BD\u51C5\u51C9\u51DB\u51E0\u8655\u51E9\u51ED"], + ["9980", "\u51F0\u51F5\u51FE\u5204\u520B\u5214\u520E\u5227\u522A\u522E\u5233\u5239\u524F\u5244\u524B\u524C\u525E\u5254\u526A\u5274\u5269\u5273\u527F\u527D\u528D\u5294\u5292\u5271\u5288\u5291\u8FA8\u8FA7\u52AC\u52AD\u52BC\u52B5\u52C1\u52CD\u52D7\u52DE\u52E3\u52E6\u98ED\u52E0\u52F3\u52F5\u52F8\u52F9\u5306\u5308\u7538\u530D\u5310\u530F\u5315\u531A\u5323\u532F\u5331\u5333\u5338\u5340\u5346\u5345\u4E17\u5349\u534D\u51D6\u535E\u5369\u536E\u5918\u537B\u5377\u5382\u5396\u53A0\u53A6\u53A5\u53AE\u53B0\u53B6\u53C3\u7C12\u96D9\u53DF\u66FC\u71EE\u53EE\u53E8\u53ED\u53FA\u5401\u543D\u5440\u542C\u542D\u543C\u542E\u5436\u5429\u541D\u544E\u548F\u5475\u548E\u545F\u5471\u5477\u5470\u5492\u547B\u5480\u5476\u5484\u5490\u5486\u54C7\u54A2\u54B8\u54A5\u54AC\u54C4\u54C8\u54A8"], + ["9a40", "\u54AB\u54C2\u54A4\u54BE\u54BC\u54D8\u54E5\u54E6\u550F\u5514\u54FD\u54EE\u54ED\u54FA\u54E2\u5539\u5540\u5563\u554C\u552E\u555C\u5545\u5556\u5557\u5538\u5533\u555D\u5599\u5580\u54AF\u558A\u559F\u557B\u557E\u5598\u559E\u55AE\u557C\u5583\u55A9\u5587\u55A8\u55DA\u55C5\u55DF\u55C4\u55DC\u55E4\u55D4\u5614\u55F7\u5616\u55FE\u55FD\u561B\u55F9\u564E\u5650\u71DF\u5634\u5636\u5632\u5638"], + ["9a80", "\u566B\u5664\u562F\u566C\u566A\u5686\u5680\u568A\u56A0\u5694\u568F\u56A5\u56AE\u56B6\u56B4\u56C2\u56BC\u56C1\u56C3\u56C0\u56C8\u56CE\u56D1\u56D3\u56D7\u56EE\u56F9\u5700\u56FF\u5704\u5709\u5708\u570B\u570D\u5713\u5718\u5716\u55C7\u571C\u5726\u5737\u5738\u574E\u573B\u5740\u574F\u5769\u57C0\u5788\u5761\u577F\u5789\u5793\u57A0\u57B3\u57A4\u57AA\u57B0\u57C3\u57C6\u57D4\u57D2\u57D3\u580A\u57D6\u57E3\u580B\u5819\u581D\u5872\u5821\u5862\u584B\u5870\u6BC0\u5852\u583D\u5879\u5885\u58B9\u589F\u58AB\u58BA\u58DE\u58BB\u58B8\u58AE\u58C5\u58D3\u58D1\u58D7\u58D9\u58D8\u58E5\u58DC\u58E4\u58DF\u58EF\u58FA\u58F9\u58FB\u58FC\u58FD\u5902\u590A\u5910\u591B\u68A6\u5925\u592C\u592D\u5932\u5938\u593E\u7AD2\u5955\u5950\u594E\u595A\u5958\u5962\u5960\u5967\u596C\u5969"], + ["9b40", "\u5978\u5981\u599D\u4F5E\u4FAB\u59A3\u59B2\u59C6\u59E8\u59DC\u598D\u59D9\u59DA\u5A25\u5A1F\u5A11\u5A1C\u5A09\u5A1A\u5A40\u5A6C\u5A49\u5A35\u5A36\u5A62\u5A6A\u5A9A\u5ABC\u5ABE\u5ACB\u5AC2\u5ABD\u5AE3\u5AD7\u5AE6\u5AE9\u5AD6\u5AFA\u5AFB\u5B0C\u5B0B\u5B16\u5B32\u5AD0\u5B2A\u5B36\u5B3E\u5B43\u5B45\u5B40\u5B51\u5B55\u5B5A\u5B5B\u5B65\u5B69\u5B70\u5B73\u5B75\u5B78\u6588\u5B7A\u5B80"], + ["9b80", "\u5B83\u5BA6\u5BB8\u5BC3\u5BC7\u5BC9\u5BD4\u5BD0\u5BE4\u5BE6\u5BE2\u5BDE\u5BE5\u5BEB\u5BF0\u5BF6\u5BF3\u5C05\u5C07\u5C08\u5C0D\u5C13\u5C20\u5C22\u5C28\u5C38\u5C39\u5C41\u5C46\u5C4E\u5C53\u5C50\u5C4F\u5B71\u5C6C\u5C6E\u4E62\u5C76\u5C79\u5C8C\u5C91\u5C94\u599B\u5CAB\u5CBB\u5CB6\u5CBC\u5CB7\u5CC5\u5CBE\u5CC7\u5CD9\u5CE9\u5CFD\u5CFA\u5CED\u5D8C\u5CEA\u5D0B\u5D15\u5D17\u5D5C\u5D1F\u5D1B\u5D11\u5D14\u5D22\u5D1A\u5D19\u5D18\u5D4C\u5D52\u5D4E\u5D4B\u5D6C\u5D73\u5D76\u5D87\u5D84\u5D82\u5DA2\u5D9D\u5DAC\u5DAE\u5DBD\u5D90\u5DB7\u5DBC\u5DC9\u5DCD\u5DD3\u5DD2\u5DD6\u5DDB\u5DEB\u5DF2\u5DF5\u5E0B\u5E1A\u5E19\u5E11\u5E1B\u5E36\u5E37\u5E44\u5E43\u5E40\u5E4E\u5E57\u5E54\u5E5F\u5E62\u5E64\u5E47\u5E75\u5E76\u5E7A\u9EBC\u5E7F\u5EA0\u5EC1\u5EC2\u5EC8\u5ED0\u5ECF"], + ["9c40", "\u5ED6\u5EE3\u5EDD\u5EDA\u5EDB\u5EE2\u5EE1\u5EE8\u5EE9\u5EEC\u5EF1\u5EF3\u5EF0\u5EF4\u5EF8\u5EFE\u5F03\u5F09\u5F5D\u5F5C\u5F0B\u5F11\u5F16\u5F29\u5F2D\u5F38\u5F41\u5F48\u5F4C\u5F4E\u5F2F\u5F51\u5F56\u5F57\u5F59\u5F61\u5F6D\u5F73\u5F77\u5F83\u5F82\u5F7F\u5F8A\u5F88\u5F91\u5F87\u5F9E\u5F99\u5F98\u5FA0\u5FA8\u5FAD\u5FBC\u5FD6\u5FFB\u5FE4\u5FF8\u5FF1\u5FDD\u60B3\u5FFF\u6021\u6060"], + ["9c80", "\u6019\u6010\u6029\u600E\u6031\u601B\u6015\u602B\u6026\u600F\u603A\u605A\u6041\u606A\u6077\u605F\u604A\u6046\u604D\u6063\u6043\u6064\u6042\u606C\u606B\u6059\u6081\u608D\u60E7\u6083\u609A\u6084\u609B\u6096\u6097\u6092\u60A7\u608B\u60E1\u60B8\u60E0\u60D3\u60B4\u5FF0\u60BD\u60C6\u60B5\u60D8\u614D\u6115\u6106\u60F6\u60F7\u6100\u60F4\u60FA\u6103\u6121\u60FB\u60F1\u610D\u610E\u6147\u613E\u6128\u6127\u614A\u613F\u613C\u612C\u6134\u613D\u6142\u6144\u6173\u6177\u6158\u6159\u615A\u616B\u6174\u616F\u6165\u6171\u615F\u615D\u6153\u6175\u6199\u6196\u6187\u61AC\u6194\u619A\u618A\u6191\u61AB\u61AE\u61CC\u61CA\u61C9\u61F7\u61C8\u61C3\u61C6\u61BA\u61CB\u7F79\u61CD\u61E6\u61E3\u61F6\u61FA\u61F4\u61FF\u61FD\u61FC\u61FE\u6200\u6208\u6209\u620D\u620C\u6214\u621B"], + ["9d40", "\u621E\u6221\u622A\u622E\u6230\u6232\u6233\u6241\u624E\u625E\u6263\u625B\u6260\u6268\u627C\u6282\u6289\u627E\u6292\u6293\u6296\u62D4\u6283\u6294\u62D7\u62D1\u62BB\u62CF\u62FF\u62C6\u64D4\u62C8\u62DC\u62CC\u62CA\u62C2\u62C7\u629B\u62C9\u630C\u62EE\u62F1\u6327\u6302\u6308\u62EF\u62F5\u6350\u633E\u634D\u641C\u634F\u6396\u638E\u6380\u63AB\u6376\u63A3\u638F\u6389\u639F\u63B5\u636B"], + ["9d80", "\u6369\u63BE\u63E9\u63C0\u63C6\u63E3\u63C9\u63D2\u63F6\u63C4\u6416\u6434\u6406\u6413\u6426\u6436\u651D\u6417\u6428\u640F\u6467\u646F\u6476\u644E\u652A\u6495\u6493\u64A5\u64A9\u6488\u64BC\u64DA\u64D2\u64C5\u64C7\u64BB\u64D8\u64C2\u64F1\u64E7\u8209\u64E0\u64E1\u62AC\u64E3\u64EF\u652C\u64F6\u64F4\u64F2\u64FA\u6500\u64FD\u6518\u651C\u6505\u6524\u6523\u652B\u6534\u6535\u6537\u6536\u6538\u754B\u6548\u6556\u6555\u654D\u6558\u655E\u655D\u6572\u6578\u6582\u6583\u8B8A\u659B\u659F\u65AB\u65B7\u65C3\u65C6\u65C1\u65C4\u65CC\u65D2\u65DB\u65D9\u65E0\u65E1\u65F1\u6772\u660A\u6603\u65FB\u6773\u6635\u6636\u6634\u661C\u664F\u6644\u6649\u6641\u665E\u665D\u6664\u6667\u6668\u665F\u6662\u6670\u6683\u6688\u668E\u6689\u6684\u6698\u669D\u66C1\u66B9\u66C9\u66BE\u66BC"], + ["9e40", "\u66C4\u66B8\u66D6\u66DA\u66E0\u663F\u66E6\u66E9\u66F0\u66F5\u66F7\u670F\u6716\u671E\u6726\u6727\u9738\u672E\u673F\u6736\u6741\u6738\u6737\u6746\u675E\u6760\u6759\u6763\u6764\u6789\u6770\u67A9\u677C\u676A\u678C\u678B\u67A6\u67A1\u6785\u67B7\u67EF\u67B4\u67EC\u67B3\u67E9\u67B8\u67E4\u67DE\u67DD\u67E2\u67EE\u67B9\u67CE\u67C6\u67E7\u6A9C\u681E\u6846\u6829\u6840\u684D\u6832\u684E"], + ["9e80", "\u68B3\u682B\u6859\u6863\u6877\u687F\u689F\u688F\u68AD\u6894\u689D\u689B\u6883\u6AAE\u68B9\u6874\u68B5\u68A0\u68BA\u690F\u688D\u687E\u6901\u68CA\u6908\u68D8\u6922\u6926\u68E1\u690C\u68CD\u68D4\u68E7\u68D5\u6936\u6912\u6904\u68D7\u68E3\u6925\u68F9\u68E0\u68EF\u6928\u692A\u691A\u6923\u6921\u68C6\u6979\u6977\u695C\u6978\u696B\u6954\u697E\u696E\u6939\u6974\u693D\u6959\u6930\u6961\u695E\u695D\u6981\u696A\u69B2\u69AE\u69D0\u69BF\u69C1\u69D3\u69BE\u69CE\u5BE8\u69CA\u69DD\u69BB\u69C3\u69A7\u6A2E\u6991\u69A0\u699C\u6995\u69B4\u69DE\u69E8\u6A02\u6A1B\u69FF\u6B0A\u69F9\u69F2\u69E7\u6A05\u69B1\u6A1E\u69ED\u6A14\u69EB\u6A0A\u6A12\u6AC1\u6A23\u6A13\u6A44\u6A0C\u6A72\u6A36\u6A78\u6A47\u6A62\u6A59\u6A66\u6A48\u6A38\u6A22\u6A90\u6A8D\u6AA0\u6A84\u6AA2\u6AA3"], + ["9f40", "\u6A97\u8617\u6ABB\u6AC3\u6AC2\u6AB8\u6AB3\u6AAC\u6ADE\u6AD1\u6ADF\u6AAA\u6ADA\u6AEA\u6AFB\u6B05\u8616\u6AFA\u6B12\u6B16\u9B31\u6B1F\u6B38\u6B37\u76DC\u6B39\u98EE\u6B47\u6B43\u6B49\u6B50\u6B59\u6B54\u6B5B\u6B5F\u6B61\u6B78\u6B79\u6B7F\u6B80\u6B84\u6B83\u6B8D\u6B98\u6B95\u6B9E\u6BA4\u6BAA\u6BAB\u6BAF\u6BB2\u6BB1\u6BB3\u6BB7\u6BBC\u6BC6\u6BCB\u6BD3\u6BDF\u6BEC\u6BEB\u6BF3\u6BEF"], + ["9f80", "\u9EBE\u6C08\u6C13\u6C14\u6C1B\u6C24\u6C23\u6C5E\u6C55\u6C62\u6C6A\u6C82\u6C8D\u6C9A\u6C81\u6C9B\u6C7E\u6C68\u6C73\u6C92\u6C90\u6CC4\u6CF1\u6CD3\u6CBD\u6CD7\u6CC5\u6CDD\u6CAE\u6CB1\u6CBE\u6CBA\u6CDB\u6CEF\u6CD9\u6CEA\u6D1F\u884D\u6D36\u6D2B\u6D3D\u6D38\u6D19\u6D35\u6D33\u6D12\u6D0C\u6D63\u6D93\u6D64\u6D5A\u6D79\u6D59\u6D8E\u6D95\u6FE4\u6D85\u6DF9\u6E15\u6E0A\u6DB5\u6DC7\u6DE6\u6DB8\u6DC6\u6DEC\u6DDE\u6DCC\u6DE8\u6DD2\u6DC5\u6DFA\u6DD9\u6DE4\u6DD5\u6DEA\u6DEE\u6E2D\u6E6E\u6E2E\u6E19\u6E72\u6E5F\u6E3E\u6E23\u6E6B\u6E2B\u6E76\u6E4D\u6E1F\u6E43\u6E3A\u6E4E\u6E24\u6EFF\u6E1D\u6E38\u6E82\u6EAA\u6E98\u6EC9\u6EB7\u6ED3\u6EBD\u6EAF\u6EC4\u6EB2\u6ED4\u6ED5\u6E8F\u6EA5\u6EC2\u6E9F\u6F41\u6F11\u704C\u6EEC\u6EF8\u6EFE\u6F3F\u6EF2\u6F31\u6EEF\u6F32\u6ECC"], + ["e040", "\u6F3E\u6F13\u6EF7\u6F86\u6F7A\u6F78\u6F81\u6F80\u6F6F\u6F5B\u6FF3\u6F6D\u6F82\u6F7C\u6F58\u6F8E\u6F91\u6FC2\u6F66\u6FB3\u6FA3\u6FA1\u6FA4\u6FB9\u6FC6\u6FAA\u6FDF\u6FD5\u6FEC\u6FD4\u6FD8\u6FF1\u6FEE\u6FDB\u7009\u700B\u6FFA\u7011\u7001\u700F\u6FFE\u701B\u701A\u6F74\u701D\u7018\u701F\u7030\u703E\u7032\u7051\u7063\u7099\u7092\u70AF\u70F1\u70AC\u70B8\u70B3\u70AE\u70DF\u70CB\u70DD"], + ["e080", "\u70D9\u7109\u70FD\u711C\u7119\u7165\u7155\u7188\u7166\u7162\u714C\u7156\u716C\u718F\u71FB\u7184\u7195\u71A8\u71AC\u71D7\u71B9\u71BE\u71D2\u71C9\u71D4\u71CE\u71E0\u71EC\u71E7\u71F5\u71FC\u71F9\u71FF\u720D\u7210\u721B\u7228\u722D\u722C\u7230\u7232\u723B\u723C\u723F\u7240\u7246\u724B\u7258\u7274\u727E\u7282\u7281\u7287\u7292\u7296\u72A2\u72A7\u72B9\u72B2\u72C3\u72C6\u72C4\u72CE\u72D2\u72E2\u72E0\u72E1\u72F9\u72F7\u500F\u7317\u730A\u731C\u7316\u731D\u7334\u732F\u7329\u7325\u733E\u734E\u734F\u9ED8\u7357\u736A\u7368\u7370\u7378\u7375\u737B\u737A\u73C8\u73B3\u73CE\u73BB\u73C0\u73E5\u73EE\u73DE\u74A2\u7405\u746F\u7425\u73F8\u7432\u743A\u7455\u743F\u745F\u7459\u7441\u745C\u7469\u7470\u7463\u746A\u7476\u747E\u748B\u749E\u74A7\u74CA\u74CF\u74D4\u73F1"], + ["e140", "\u74E0\u74E3\u74E7\u74E9\u74EE\u74F2\u74F0\u74F1\u74F8\u74F7\u7504\u7503\u7505\u750C\u750E\u750D\u7515\u7513\u751E\u7526\u752C\u753C\u7544\u754D\u754A\u7549\u755B\u7546\u755A\u7569\u7564\u7567\u756B\u756D\u7578\u7576\u7586\u7587\u7574\u758A\u7589\u7582\u7594\u759A\u759D\u75A5\u75A3\u75C2\u75B3\u75C3\u75B5\u75BD\u75B8\u75BC\u75B1\u75CD\u75CA\u75D2\u75D9\u75E3\u75DE\u75FE\u75FF"], + ["e180", "\u75FC\u7601\u75F0\u75FA\u75F2\u75F3\u760B\u760D\u7609\u761F\u7627\u7620\u7621\u7622\u7624\u7634\u7630\u763B\u7647\u7648\u7646\u765C\u7658\u7661\u7662\u7668\u7669\u766A\u7667\u766C\u7670\u7672\u7676\u7678\u767C\u7680\u7683\u7688\u768B\u768E\u7696\u7693\u7699\u769A\u76B0\u76B4\u76B8\u76B9\u76BA\u76C2\u76CD\u76D6\u76D2\u76DE\u76E1\u76E5\u76E7\u76EA\u862F\u76FB\u7708\u7707\u7704\u7729\u7724\u771E\u7725\u7726\u771B\u7737\u7738\u7747\u775A\u7768\u776B\u775B\u7765\u777F\u777E\u7779\u778E\u778B\u7791\u77A0\u779E\u77B0\u77B6\u77B9\u77BF\u77BC\u77BD\u77BB\u77C7\u77CD\u77D7\u77DA\u77DC\u77E3\u77EE\u77FC\u780C\u7812\u7926\u7820\u792A\u7845\u788E\u7874\u7886\u787C\u789A\u788C\u78A3\u78B5\u78AA\u78AF\u78D1\u78C6\u78CB\u78D4\u78BE\u78BC\u78C5\u78CA\u78EC"], + ["e240", "\u78E7\u78DA\u78FD\u78F4\u7907\u7912\u7911\u7919\u792C\u792B\u7940\u7960\u7957\u795F\u795A\u7955\u7953\u797A\u797F\u798A\u799D\u79A7\u9F4B\u79AA\u79AE\u79B3\u79B9\u79BA\u79C9\u79D5\u79E7\u79EC\u79E1\u79E3\u7A08\u7A0D\u7A18\u7A19\u7A20\u7A1F\u7980\u7A31\u7A3B\u7A3E\u7A37\u7A43\u7A57\u7A49\u7A61\u7A62\u7A69\u9F9D\u7A70\u7A79\u7A7D\u7A88\u7A97\u7A95\u7A98\u7A96\u7AA9\u7AC8\u7AB0"], + ["e280", "\u7AB6\u7AC5\u7AC4\u7ABF\u9083\u7AC7\u7ACA\u7ACD\u7ACF\u7AD5\u7AD3\u7AD9\u7ADA\u7ADD\u7AE1\u7AE2\u7AE6\u7AED\u7AF0\u7B02\u7B0F\u7B0A\u7B06\u7B33\u7B18\u7B19\u7B1E\u7B35\u7B28\u7B36\u7B50\u7B7A\u7B04\u7B4D\u7B0B\u7B4C\u7B45\u7B75\u7B65\u7B74\u7B67\u7B70\u7B71\u7B6C\u7B6E\u7B9D\u7B98\u7B9F\u7B8D\u7B9C\u7B9A\u7B8B\u7B92\u7B8F\u7B5D\u7B99\u7BCB\u7BC1\u7BCC\u7BCF\u7BB4\u7BC6\u7BDD\u7BE9\u7C11\u7C14\u7BE6\u7BE5\u7C60\u7C00\u7C07\u7C13\u7BF3\u7BF7\u7C17\u7C0D\u7BF6\u7C23\u7C27\u7C2A\u7C1F\u7C37\u7C2B\u7C3D\u7C4C\u7C43\u7C54\u7C4F\u7C40\u7C50\u7C58\u7C5F\u7C64\u7C56\u7C65\u7C6C\u7C75\u7C83\u7C90\u7CA4\u7CAD\u7CA2\u7CAB\u7CA1\u7CA8\u7CB3\u7CB2\u7CB1\u7CAE\u7CB9\u7CBD\u7CC0\u7CC5\u7CC2\u7CD8\u7CD2\u7CDC\u7CE2\u9B3B\u7CEF\u7CF2\u7CF4\u7CF6\u7CFA\u7D06"], + ["e340", "\u7D02\u7D1C\u7D15\u7D0A\u7D45\u7D4B\u7D2E\u7D32\u7D3F\u7D35\u7D46\u7D73\u7D56\u7D4E\u7D72\u7D68\u7D6E\u7D4F\u7D63\u7D93\u7D89\u7D5B\u7D8F\u7D7D\u7D9B\u7DBA\u7DAE\u7DA3\u7DB5\u7DC7\u7DBD\u7DAB\u7E3D\u7DA2\u7DAF\u7DDC\u7DB8\u7D9F\u7DB0\u7DD8\u7DDD\u7DE4\u7DDE\u7DFB\u7DF2\u7DE1\u7E05\u7E0A\u7E23\u7E21\u7E12\u7E31\u7E1F\u7E09\u7E0B\u7E22\u7E46\u7E66\u7E3B\u7E35\u7E39\u7E43\u7E37"], + ["e380", "\u7E32\u7E3A\u7E67\u7E5D\u7E56\u7E5E\u7E59\u7E5A\u7E79\u7E6A\u7E69\u7E7C\u7E7B\u7E83\u7DD5\u7E7D\u8FAE\u7E7F\u7E88\u7E89\u7E8C\u7E92\u7E90\u7E93\u7E94\u7E96\u7E8E\u7E9B\u7E9C\u7F38\u7F3A\u7F45\u7F4C\u7F4D\u7F4E\u7F50\u7F51\u7F55\u7F54\u7F58\u7F5F\u7F60\u7F68\u7F69\u7F67\u7F78\u7F82\u7F86\u7F83\u7F88\u7F87\u7F8C\u7F94\u7F9E\u7F9D\u7F9A\u7FA3\u7FAF\u7FB2\u7FB9\u7FAE\u7FB6\u7FB8\u8B71\u7FC5\u7FC6\u7FCA\u7FD5\u7FD4\u7FE1\u7FE6\u7FE9\u7FF3\u7FF9\u98DC\u8006\u8004\u800B\u8012\u8018\u8019\u801C\u8021\u8028\u803F\u803B\u804A\u8046\u8052\u8058\u805A\u805F\u8062\u8068\u8073\u8072\u8070\u8076\u8079\u807D\u807F\u8084\u8086\u8085\u809B\u8093\u809A\u80AD\u5190\u80AC\u80DB\u80E5\u80D9\u80DD\u80C4\u80DA\u80D6\u8109\u80EF\u80F1\u811B\u8129\u8123\u812F\u814B"], + ["e440", "\u968B\u8146\u813E\u8153\u8151\u80FC\u8171\u816E\u8165\u8166\u8174\u8183\u8188\u818A\u8180\u8182\u81A0\u8195\u81A4\u81A3\u815F\u8193\u81A9\u81B0\u81B5\u81BE\u81B8\u81BD\u81C0\u81C2\u81BA\u81C9\u81CD\u81D1\u81D9\u81D8\u81C8\u81DA\u81DF\u81E0\u81E7\u81FA\u81FB\u81FE\u8201\u8202\u8205\u8207\u820A\u820D\u8210\u8216\u8229\u822B\u8238\u8233\u8240\u8259\u8258\u825D\u825A\u825F\u8264"], + ["e480", "\u8262\u8268\u826A\u826B\u822E\u8271\u8277\u8278\u827E\u828D\u8292\u82AB\u829F\u82BB\u82AC\u82E1\u82E3\u82DF\u82D2\u82F4\u82F3\u82FA\u8393\u8303\u82FB\u82F9\u82DE\u8306\u82DC\u8309\u82D9\u8335\u8334\u8316\u8332\u8331\u8340\u8339\u8350\u8345\u832F\u832B\u8317\u8318\u8385\u839A\u83AA\u839F\u83A2\u8396\u8323\u838E\u8387\u838A\u837C\u83B5\u8373\u8375\u83A0\u8389\u83A8\u83F4\u8413\u83EB\u83CE\u83FD\u8403\u83D8\u840B\u83C1\u83F7\u8407\u83E0\u83F2\u840D\u8422\u8420\u83BD\u8438\u8506\u83FB\u846D\u842A\u843C\u855A\u8484\u8477\u846B\u84AD\u846E\u8482\u8469\u8446\u842C\u846F\u8479\u8435\u84CA\u8462\u84B9\u84BF\u849F\u84D9\u84CD\u84BB\u84DA\u84D0\u84C1\u84C6\u84D6\u84A1\u8521\u84FF\u84F4\u8517\u8518\u852C\u851F\u8515\u8514\u84FC\u8540\u8563\u8558\u8548"], + ["e540", "\u8541\u8602\u854B\u8555\u8580\u85A4\u8588\u8591\u858A\u85A8\u856D\u8594\u859B\u85EA\u8587\u859C\u8577\u857E\u8590\u85C9\u85BA\u85CF\u85B9\u85D0\u85D5\u85DD\u85E5\u85DC\u85F9\u860A\u8613\u860B\u85FE\u85FA\u8606\u8622\u861A\u8630\u863F\u864D\u4E55\u8654\u865F\u8667\u8671\u8693\u86A3\u86A9\u86AA\u868B\u868C\u86B6\u86AF\u86C4\u86C6\u86B0\u86C9\u8823\u86AB\u86D4\u86DE\u86E9\u86EC"], + ["e580", "\u86DF\u86DB\u86EF\u8712\u8706\u8708\u8700\u8703\u86FB\u8711\u8709\u870D\u86F9\u870A\u8734\u873F\u8737\u873B\u8725\u8729\u871A\u8760\u875F\u8778\u874C\u874E\u8774\u8757\u8768\u876E\u8759\u8753\u8763\u876A\u8805\u87A2\u879F\u8782\u87AF\u87CB\u87BD\u87C0\u87D0\u96D6\u87AB\u87C4\u87B3\u87C7\u87C6\u87BB\u87EF\u87F2\u87E0\u880F\u880D\u87FE\u87F6\u87F7\u880E\u87D2\u8811\u8816\u8815\u8822\u8821\u8831\u8836\u8839\u8827\u883B\u8844\u8842\u8852\u8859\u885E\u8862\u886B\u8881\u887E\u889E\u8875\u887D\u88B5\u8872\u8882\u8897\u8892\u88AE\u8899\u88A2\u888D\u88A4\u88B0\u88BF\u88B1\u88C3\u88C4\u88D4\u88D8\u88D9\u88DD\u88F9\u8902\u88FC\u88F4\u88E8\u88F2\u8904\u890C\u890A\u8913\u8943\u891E\u8925\u892A\u892B\u8941\u8944\u893B\u8936\u8938\u894C\u891D\u8960\u895E"], + ["e640", "\u8966\u8964\u896D\u896A\u896F\u8974\u8977\u897E\u8983\u8988\u898A\u8993\u8998\u89A1\u89A9\u89A6\u89AC\u89AF\u89B2\u89BA\u89BD\u89BF\u89C0\u89DA\u89DC\u89DD\u89E7\u89F4\u89F8\u8A03\u8A16\u8A10\u8A0C\u8A1B\u8A1D\u8A25\u8A36\u8A41\u8A5B\u8A52\u8A46\u8A48\u8A7C\u8A6D\u8A6C\u8A62\u8A85\u8A82\u8A84\u8AA8\u8AA1\u8A91\u8AA5\u8AA6\u8A9A\u8AA3\u8AC4\u8ACD\u8AC2\u8ADA\u8AEB\u8AF3\u8AE7"], + ["e680", "\u8AE4\u8AF1\u8B14\u8AE0\u8AE2\u8AF7\u8ADE\u8ADB\u8B0C\u8B07\u8B1A\u8AE1\u8B16\u8B10\u8B17\u8B20\u8B33\u97AB\u8B26\u8B2B\u8B3E\u8B28\u8B41\u8B4C\u8B4F\u8B4E\u8B49\u8B56\u8B5B\u8B5A\u8B6B\u8B5F\u8B6C\u8B6F\u8B74\u8B7D\u8B80\u8B8C\u8B8E\u8B92\u8B93\u8B96\u8B99\u8B9A\u8C3A\u8C41\u8C3F\u8C48\u8C4C\u8C4E\u8C50\u8C55\u8C62\u8C6C\u8C78\u8C7A\u8C82\u8C89\u8C85\u8C8A\u8C8D\u8C8E\u8C94\u8C7C\u8C98\u621D\u8CAD\u8CAA\u8CBD\u8CB2\u8CB3\u8CAE\u8CB6\u8CC8\u8CC1\u8CE4\u8CE3\u8CDA\u8CFD\u8CFA\u8CFB\u8D04\u8D05\u8D0A\u8D07\u8D0F\u8D0D\u8D10\u9F4E\u8D13\u8CCD\u8D14\u8D16\u8D67\u8D6D\u8D71\u8D73\u8D81\u8D99\u8DC2\u8DBE\u8DBA\u8DCF\u8DDA\u8DD6\u8DCC\u8DDB\u8DCB\u8DEA\u8DEB\u8DDF\u8DE3\u8DFC\u8E08\u8E09\u8DFF\u8E1D\u8E1E\u8E10\u8E1F\u8E42\u8E35\u8E30\u8E34\u8E4A"], + ["e740", "\u8E47\u8E49\u8E4C\u8E50\u8E48\u8E59\u8E64\u8E60\u8E2A\u8E63\u8E55\u8E76\u8E72\u8E7C\u8E81\u8E87\u8E85\u8E84\u8E8B\u8E8A\u8E93\u8E91\u8E94\u8E99\u8EAA\u8EA1\u8EAC\u8EB0\u8EC6\u8EB1\u8EBE\u8EC5\u8EC8\u8ECB\u8EDB\u8EE3\u8EFC\u8EFB\u8EEB\u8EFE\u8F0A\u8F05\u8F15\u8F12\u8F19\u8F13\u8F1C\u8F1F\u8F1B\u8F0C\u8F26\u8F33\u8F3B\u8F39\u8F45\u8F42\u8F3E\u8F4C\u8F49\u8F46\u8F4E\u8F57\u8F5C"], + ["e780", "\u8F62\u8F63\u8F64\u8F9C\u8F9F\u8FA3\u8FAD\u8FAF\u8FB7\u8FDA\u8FE5\u8FE2\u8FEA\u8FEF\u9087\u8FF4\u9005\u8FF9\u8FFA\u9011\u9015\u9021\u900D\u901E\u9016\u900B\u9027\u9036\u9035\u9039\u8FF8\u904F\u9050\u9051\u9052\u900E\u9049\u903E\u9056\u9058\u905E\u9068\u906F\u9076\u96A8\u9072\u9082\u907D\u9081\u9080\u908A\u9089\u908F\u90A8\u90AF\u90B1\u90B5\u90E2\u90E4\u6248\u90DB\u9102\u9112\u9119\u9132\u9130\u914A\u9156\u9158\u9163\u9165\u9169\u9173\u9172\u918B\u9189\u9182\u91A2\u91AB\u91AF\u91AA\u91B5\u91B4\u91BA\u91C0\u91C1\u91C9\u91CB\u91D0\u91D6\u91DF\u91E1\u91DB\u91FC\u91F5\u91F6\u921E\u91FF\u9214\u922C\u9215\u9211\u925E\u9257\u9245\u9249\u9264\u9248\u9295\u923F\u924B\u9250\u929C\u9296\u9293\u929B\u925A\u92CF\u92B9\u92B7\u92E9\u930F\u92FA\u9344\u932E"], + ["e840", "\u9319\u9322\u931A\u9323\u933A\u9335\u933B\u935C\u9360\u937C\u936E\u9356\u93B0\u93AC\u93AD\u9394\u93B9\u93D6\u93D7\u93E8\u93E5\u93D8\u93C3\u93DD\u93D0\u93C8\u93E4\u941A\u9414\u9413\u9403\u9407\u9410\u9436\u942B\u9435\u9421\u943A\u9441\u9452\u9444\u945B\u9460\u9462\u945E\u946A\u9229\u9470\u9475\u9477\u947D\u945A\u947C\u947E\u9481\u947F\u9582\u9587\u958A\u9594\u9596\u9598\u9599"], + ["e880", "\u95A0\u95A8\u95A7\u95AD\u95BC\u95BB\u95B9\u95BE\u95CA\u6FF6\u95C3\u95CD\u95CC\u95D5\u95D4\u95D6\u95DC\u95E1\u95E5\u95E2\u9621\u9628\u962E\u962F\u9642\u964C\u964F\u964B\u9677\u965C\u965E\u965D\u965F\u9666\u9672\u966C\u968D\u9698\u9695\u9697\u96AA\u96A7\u96B1\u96B2\u96B0\u96B4\u96B6\u96B8\u96B9\u96CE\u96CB\u96C9\u96CD\u894D\u96DC\u970D\u96D5\u96F9\u9704\u9706\u9708\u9713\u970E\u9711\u970F\u9716\u9719\u9724\u972A\u9730\u9739\u973D\u973E\u9744\u9746\u9748\u9742\u9749\u975C\u9760\u9764\u9766\u9768\u52D2\u976B\u9771\u9779\u9785\u977C\u9781\u977A\u9786\u978B\u978F\u9790\u979C\u97A8\u97A6\u97A3\u97B3\u97B4\u97C3\u97C6\u97C8\u97CB\u97DC\u97ED\u9F4F\u97F2\u7ADF\u97F6\u97F5\u980F\u980C\u9838\u9824\u9821\u9837\u983D\u9846\u984F\u984B\u986B\u986F\u9870"], + ["e940", "\u9871\u9874\u9873\u98AA\u98AF\u98B1\u98B6\u98C4\u98C3\u98C6\u98E9\u98EB\u9903\u9909\u9912\u9914\u9918\u9921\u991D\u991E\u9924\u9920\u992C\u992E\u993D\u993E\u9942\u9949\u9945\u9950\u994B\u9951\u9952\u994C\u9955\u9997\u9998\u99A5\u99AD\u99AE\u99BC\u99DF\u99DB\u99DD\u99D8\u99D1\u99ED\u99EE\u99F1\u99F2\u99FB\u99F8\u9A01\u9A0F\u9A05\u99E2\u9A19\u9A2B\u9A37\u9A45\u9A42\u9A40\u9A43"], + ["e980", "\u9A3E\u9A55\u9A4D\u9A5B\u9A57\u9A5F\u9A62\u9A65\u9A64\u9A69\u9A6B\u9A6A\u9AAD\u9AB0\u9ABC\u9AC0\u9ACF\u9AD1\u9AD3\u9AD4\u9ADE\u9ADF\u9AE2\u9AE3\u9AE6\u9AEF\u9AEB\u9AEE\u9AF4\u9AF1\u9AF7\u9AFB\u9B06\u9B18\u9B1A\u9B1F\u9B22\u9B23\u9B25\u9B27\u9B28\u9B29\u9B2A\u9B2E\u9B2F\u9B32\u9B44\u9B43\u9B4F\u9B4D\u9B4E\u9B51\u9B58\u9B74\u9B93\u9B83\u9B91\u9B96\u9B97\u9B9F\u9BA0\u9BA8\u9BB4\u9BC0\u9BCA\u9BB9\u9BC6\u9BCF\u9BD1\u9BD2\u9BE3\u9BE2\u9BE4\u9BD4\u9BE1\u9C3A\u9BF2\u9BF1\u9BF0\u9C15\u9C14\u9C09\u9C13\u9C0C\u9C06\u9C08\u9C12\u9C0A\u9C04\u9C2E\u9C1B\u9C25\u9C24\u9C21\u9C30\u9C47\u9C32\u9C46\u9C3E\u9C5A\u9C60\u9C67\u9C76\u9C78\u9CE7\u9CEC\u9CF0\u9D09\u9D08\u9CEB\u9D03\u9D06\u9D2A\u9D26\u9DAF\u9D23\u9D1F\u9D44\u9D15\u9D12\u9D41\u9D3F\u9D3E\u9D46\u9D48"], + ["ea40", "\u9D5D\u9D5E\u9D64\u9D51\u9D50\u9D59\u9D72\u9D89\u9D87\u9DAB\u9D6F\u9D7A\u9D9A\u9DA4\u9DA9\u9DB2\u9DC4\u9DC1\u9DBB\u9DB8\u9DBA\u9DC6\u9DCF\u9DC2\u9DD9\u9DD3\u9DF8\u9DE6\u9DED\u9DEF\u9DFD\u9E1A\u9E1B\u9E1E\u9E75\u9E79\u9E7D\u9E81\u9E88\u9E8B\u9E8C\u9E92\u9E95\u9E91\u9E9D\u9EA5\u9EA9\u9EB8\u9EAA\u9EAD\u9761\u9ECC\u9ECE\u9ECF\u9ED0\u9ED4\u9EDC\u9EDE\u9EDD\u9EE0\u9EE5\u9EE8\u9EEF"], + ["ea80", "\u9EF4\u9EF6\u9EF7\u9EF9\u9EFB\u9EFC\u9EFD\u9F07\u9F08\u76B7\u9F15\u9F21\u9F2C\u9F3E\u9F4A\u9F52\u9F54\u9F63\u9F5F\u9F60\u9F61\u9F66\u9F67\u9F6C\u9F6A\u9F77\u9F72\u9F76\u9F95\u9F9C\u9FA0\u582F\u69C7\u9059\u7464\u51DC\u7199"], + ["ed40", "\u7E8A\u891C\u9348\u9288\u84DC\u4FC9\u70BB\u6631\u68C8\u92F9\u66FB\u5F45\u4E28\u4EE1\u4EFC\u4F00\u4F03\u4F39\u4F56\u4F92\u4F8A\u4F9A\u4F94\u4FCD\u5040\u5022\u4FFF\u501E\u5046\u5070\u5042\u5094\u50F4\u50D8\u514A\u5164\u519D\u51BE\u51EC\u5215\u529C\u52A6\u52C0\u52DB\u5300\u5307\u5324\u5372\u5393\u53B2\u53DD\uFA0E\u549C\u548A\u54A9\u54FF\u5586\u5759\u5765\u57AC\u57C8\u57C7\uFA0F"], + ["ed80", "\uFA10\u589E\u58B2\u590B\u5953\u595B\u595D\u5963\u59A4\u59BA\u5B56\u5BC0\u752F\u5BD8\u5BEC\u5C1E\u5CA6\u5CBA\u5CF5\u5D27\u5D53\uFA11\u5D42\u5D6D\u5DB8\u5DB9\u5DD0\u5F21\u5F34\u5F67\u5FB7\u5FDE\u605D\u6085\u608A\u60DE\u60D5\u6120\u60F2\u6111\u6137\u6130\u6198\u6213\u62A6\u63F5\u6460\u649D\u64CE\u654E\u6600\u6615\u663B\u6609\u662E\u661E\u6624\u6665\u6657\u6659\uFA12\u6673\u6699\u66A0\u66B2\u66BF\u66FA\u670E\uF929\u6766\u67BB\u6852\u67C0\u6801\u6844\u68CF\uFA13\u6968\uFA14\u6998\u69E2\u6A30\u6A6B\u6A46\u6A73\u6A7E\u6AE2\u6AE4\u6BD6\u6C3F\u6C5C\u6C86\u6C6F\u6CDA\u6D04\u6D87\u6D6F\u6D96\u6DAC\u6DCF\u6DF8\u6DF2\u6DFC\u6E39\u6E5C\u6E27\u6E3C\u6EBF\u6F88\u6FB5\u6FF5\u7005\u7007\u7028\u7085\u70AB\u710F\u7104\u715C\u7146\u7147\uFA15\u71C1\u71FE\u72B1"], + ["ee40", "\u72BE\u7324\uFA16\u7377\u73BD\u73C9\u73D6\u73E3\u73D2\u7407\u73F5\u7426\u742A\u7429\u742E\u7462\u7489\u749F\u7501\u756F\u7682\u769C\u769E\u769B\u76A6\uFA17\u7746\u52AF\u7821\u784E\u7864\u787A\u7930\uFA18\uFA19\uFA1A\u7994\uFA1B\u799B\u7AD1\u7AE7\uFA1C\u7AEB\u7B9E\uFA1D\u7D48\u7D5C\u7DB7\u7DA0\u7DD6\u7E52\u7F47\u7FA1\uFA1E\u8301\u8362\u837F\u83C7\u83F6\u8448\u84B4\u8553\u8559"], + ["ee80", "\u856B\uFA1F\u85B0\uFA20\uFA21\u8807\u88F5\u8A12\u8A37\u8A79\u8AA7\u8ABE\u8ADF\uFA22\u8AF6\u8B53\u8B7F\u8CF0\u8CF4\u8D12\u8D76\uFA23\u8ECF\uFA24\uFA25\u9067\u90DE\uFA26\u9115\u9127\u91DA\u91D7\u91DE\u91ED\u91EE\u91E4\u91E5\u9206\u9210\u920A\u923A\u9240\u923C\u924E\u9259\u9251\u9239\u9267\u92A7\u9277\u9278\u92E7\u92D7\u92D9\u92D0\uFA27\u92D5\u92E0\u92D3\u9325\u9321\u92FB\uFA28\u931E\u92FF\u931D\u9302\u9370\u9357\u93A4\u93C6\u93DE\u93F8\u9431\u9445\u9448\u9592\uF9DC\uFA29\u969D\u96AF\u9733\u973B\u9743\u974D\u974F\u9751\u9755\u9857\u9865\uFA2A\uFA2B\u9927\uFA2C\u999E\u9A4E\u9AD9\u9ADC\u9B75\u9B72\u9B8F\u9BB1\u9BBB\u9C00\u9D70\u9D6B\uFA2D\u9E19\u9ED1"], + ["eeef", "\u2170", 9, "\uFFE2\uFFE4\uFF07\uFF02"], + ["f040", "\uE000", 62], + ["f080", "\uE03F", 124], + ["f140", "\uE0BC", 62], + ["f180", "\uE0FB", 124], + ["f240", "\uE178", 62], + ["f280", "\uE1B7", 124], + ["f340", "\uE234", 62], + ["f380", "\uE273", 124], + ["f440", "\uE2F0", 62], + ["f480", "\uE32F", 124], + ["f540", "\uE3AC", 62], + ["f580", "\uE3EB", 124], + ["f640", "\uE468", 62], + ["f680", "\uE4A7", 124], + ["f740", "\uE524", 62], + ["f780", "\uE563", 124], + ["f840", "\uE5E0", 62], + ["f880", "\uE61F", 124], + ["f940", "\uE69C"], + ["fa40", "\u2170", 9, "\u2160", 9, "\uFFE2\uFFE4\uFF07\uFF02\u3231\u2116\u2121\u2235\u7E8A\u891C\u9348\u9288\u84DC\u4FC9\u70BB\u6631\u68C8\u92F9\u66FB\u5F45\u4E28\u4EE1\u4EFC\u4F00\u4F03\u4F39\u4F56\u4F92\u4F8A\u4F9A\u4F94\u4FCD\u5040\u5022\u4FFF\u501E\u5046\u5070\u5042\u5094\u50F4\u50D8\u514A"], + ["fa80", "\u5164\u519D\u51BE\u51EC\u5215\u529C\u52A6\u52C0\u52DB\u5300\u5307\u5324\u5372\u5393\u53B2\u53DD\uFA0E\u549C\u548A\u54A9\u54FF\u5586\u5759\u5765\u57AC\u57C8\u57C7\uFA0F\uFA10\u589E\u58B2\u590B\u5953\u595B\u595D\u5963\u59A4\u59BA\u5B56\u5BC0\u752F\u5BD8\u5BEC\u5C1E\u5CA6\u5CBA\u5CF5\u5D27\u5D53\uFA11\u5D42\u5D6D\u5DB8\u5DB9\u5DD0\u5F21\u5F34\u5F67\u5FB7\u5FDE\u605D\u6085\u608A\u60DE\u60D5\u6120\u60F2\u6111\u6137\u6130\u6198\u6213\u62A6\u63F5\u6460\u649D\u64CE\u654E\u6600\u6615\u663B\u6609\u662E\u661E\u6624\u6665\u6657\u6659\uFA12\u6673\u6699\u66A0\u66B2\u66BF\u66FA\u670E\uF929\u6766\u67BB\u6852\u67C0\u6801\u6844\u68CF\uFA13\u6968\uFA14\u6998\u69E2\u6A30\u6A6B\u6A46\u6A73\u6A7E\u6AE2\u6AE4\u6BD6\u6C3F\u6C5C\u6C86\u6C6F\u6CDA\u6D04\u6D87\u6D6F"], + ["fb40", "\u6D96\u6DAC\u6DCF\u6DF8\u6DF2\u6DFC\u6E39\u6E5C\u6E27\u6E3C\u6EBF\u6F88\u6FB5\u6FF5\u7005\u7007\u7028\u7085\u70AB\u710F\u7104\u715C\u7146\u7147\uFA15\u71C1\u71FE\u72B1\u72BE\u7324\uFA16\u7377\u73BD\u73C9\u73D6\u73E3\u73D2\u7407\u73F5\u7426\u742A\u7429\u742E\u7462\u7489\u749F\u7501\u756F\u7682\u769C\u769E\u769B\u76A6\uFA17\u7746\u52AF\u7821\u784E\u7864\u787A\u7930\uFA18\uFA19"], + ["fb80", "\uFA1A\u7994\uFA1B\u799B\u7AD1\u7AE7\uFA1C\u7AEB\u7B9E\uFA1D\u7D48\u7D5C\u7DB7\u7DA0\u7DD6\u7E52\u7F47\u7FA1\uFA1E\u8301\u8362\u837F\u83C7\u83F6\u8448\u84B4\u8553\u8559\u856B\uFA1F\u85B0\uFA20\uFA21\u8807\u88F5\u8A12\u8A37\u8A79\u8AA7\u8ABE\u8ADF\uFA22\u8AF6\u8B53\u8B7F\u8CF0\u8CF4\u8D12\u8D76\uFA23\u8ECF\uFA24\uFA25\u9067\u90DE\uFA26\u9115\u9127\u91DA\u91D7\u91DE\u91ED\u91EE\u91E4\u91E5\u9206\u9210\u920A\u923A\u9240\u923C\u924E\u9259\u9251\u9239\u9267\u92A7\u9277\u9278\u92E7\u92D7\u92D9\u92D0\uFA27\u92D5\u92E0\u92D3\u9325\u9321\u92FB\uFA28\u931E\u92FF\u931D\u9302\u9370\u9357\u93A4\u93C6\u93DE\u93F8\u9431\u9445\u9448\u9592\uF9DC\uFA29\u969D\u96AF\u9733\u973B\u9743\u974D\u974F\u9751\u9755\u9857\u9865\uFA2A\uFA2B\u9927\uFA2C\u999E\u9A4E\u9AD9"], + ["fc40", "\u9ADC\u9B75\u9B72\u9B8F\u9BB1\u9BBB\u9C00\u9D70\u9D6B\uFA2D\u9E19\u9ED1"] + ]; + } +}); + +// node_modules/iconv-lite/encodings/tables/eucjp.json +var require_eucjp = __commonJS({ + "node_modules/iconv-lite/encodings/tables/eucjp.json"(exports2, module2) { + module2.exports = [ + ["0", "\0", 127], + ["8ea1", "\uFF61", 62], + ["a1a1", "\u3000\u3001\u3002\uFF0C\uFF0E\u30FB\uFF1A\uFF1B\uFF1F\uFF01\u309B\u309C\xB4\uFF40\xA8\uFF3E\uFFE3\uFF3F\u30FD\u30FE\u309D\u309E\u3003\u4EDD\u3005\u3006\u3007\u30FC\u2015\u2010\uFF0F\uFF3C\uFF5E\u2225\uFF5C\u2026\u2025\u2018\u2019\u201C\u201D\uFF08\uFF09\u3014\u3015\uFF3B\uFF3D\uFF5B\uFF5D\u3008", 9, "\uFF0B\uFF0D\xB1\xD7\xF7\uFF1D\u2260\uFF1C\uFF1E\u2266\u2267\u221E\u2234\u2642\u2640\xB0\u2032\u2033\u2103\uFFE5\uFF04\uFFE0\uFFE1\uFF05\uFF03\uFF06\uFF0A\uFF20\xA7\u2606\u2605\u25CB\u25CF\u25CE\u25C7"], + ["a2a1", "\u25C6\u25A1\u25A0\u25B3\u25B2\u25BD\u25BC\u203B\u3012\u2192\u2190\u2191\u2193\u3013"], + ["a2ba", "\u2208\u220B\u2286\u2287\u2282\u2283\u222A\u2229"], + ["a2ca", "\u2227\u2228\uFFE2\u21D2\u21D4\u2200\u2203"], + ["a2dc", "\u2220\u22A5\u2312\u2202\u2207\u2261\u2252\u226A\u226B\u221A\u223D\u221D\u2235\u222B\u222C"], + ["a2f2", "\u212B\u2030\u266F\u266D\u266A\u2020\u2021\xB6"], + ["a2fe", "\u25EF"], + ["a3b0", "\uFF10", 9], + ["a3c1", "\uFF21", 25], + ["a3e1", "\uFF41", 25], + ["a4a1", "\u3041", 82], + ["a5a1", "\u30A1", 85], + ["a6a1", "\u0391", 16, "\u03A3", 6], + ["a6c1", "\u03B1", 16, "\u03C3", 6], + ["a7a1", "\u0410", 5, "\u0401\u0416", 25], + ["a7d1", "\u0430", 5, "\u0451\u0436", 25], + ["a8a1", "\u2500\u2502\u250C\u2510\u2518\u2514\u251C\u252C\u2524\u2534\u253C\u2501\u2503\u250F\u2513\u251B\u2517\u2523\u2533\u252B\u253B\u254B\u2520\u252F\u2528\u2537\u253F\u251D\u2530\u2525\u2538\u2542"], + ["ada1", "\u2460", 19, "\u2160", 9], + ["adc0", "\u3349\u3314\u3322\u334D\u3318\u3327\u3303\u3336\u3351\u3357\u330D\u3326\u3323\u332B\u334A\u333B\u339C\u339D\u339E\u338E\u338F\u33C4\u33A1"], + ["addf", "\u337B\u301D\u301F\u2116\u33CD\u2121\u32A4", 4, "\u3231\u3232\u3239\u337E\u337D\u337C\u2252\u2261\u222B\u222E\u2211\u221A\u22A5\u2220\u221F\u22BF\u2235\u2229\u222A"], + ["b0a1", "\u4E9C\u5516\u5A03\u963F\u54C0\u611B\u6328\u59F6\u9022\u8475\u831C\u7A50\u60AA\u63E1\u6E25\u65ED\u8466\u82A6\u9BF5\u6893\u5727\u65A1\u6271\u5B9B\u59D0\u867B\u98F4\u7D62\u7DBE\u9B8E\u6216\u7C9F\u88B7\u5B89\u5EB5\u6309\u6697\u6848\u95C7\u978D\u674F\u4EE5\u4F0A\u4F4D\u4F9D\u5049\u56F2\u5937\u59D4\u5A01\u5C09\u60DF\u610F\u6170\u6613\u6905\u70BA\u754F\u7570\u79FB\u7DAD\u7DEF\u80C3\u840E\u8863\u8B02\u9055\u907A\u533B\u4E95\u4EA5\u57DF\u80B2\u90C1\u78EF\u4E00\u58F1\u6EA2\u9038\u7A32\u8328\u828B\u9C2F\u5141\u5370\u54BD\u54E1\u56E0\u59FB\u5F15\u98F2\u6DEB\u80E4\u852D"], + ["b1a1", "\u9662\u9670\u96A0\u97FB\u540B\u53F3\u5B87\u70CF\u7FBD\u8FC2\u96E8\u536F\u9D5C\u7ABA\u4E11\u7893\u81FC\u6E26\u5618\u5504\u6B1D\u851A\u9C3B\u59E5\u53A9\u6D66\u74DC\u958F\u5642\u4E91\u904B\u96F2\u834F\u990C\u53E1\u55B6\u5B30\u5F71\u6620\u66F3\u6804\u6C38\u6CF3\u6D29\u745B\u76C8\u7A4E\u9834\u82F1\u885B\u8A60\u92ED\u6DB2\u75AB\u76CA\u99C5\u60A6\u8B01\u8D8A\u95B2\u698E\u53AD\u5186\u5712\u5830\u5944\u5BB4\u5EF6\u6028\u63A9\u63F4\u6CBF\u6F14\u708E\u7114\u7159\u71D5\u733F\u7E01\u8276\u82D1\u8597\u9060\u925B\u9D1B\u5869\u65BC\u6C5A\u7525\u51F9\u592E\u5965\u5F80\u5FDC"], + ["b2a1", "\u62BC\u65FA\u6A2A\u6B27\u6BB4\u738B\u7FC1\u8956\u9D2C\u9D0E\u9EC4\u5CA1\u6C96\u837B\u5104\u5C4B\u61B6\u81C6\u6876\u7261\u4E59\u4FFA\u5378\u6069\u6E29\u7A4F\u97F3\u4E0B\u5316\u4EEE\u4F55\u4F3D\u4FA1\u4F73\u52A0\u53EF\u5609\u590F\u5AC1\u5BB6\u5BE1\u79D1\u6687\u679C\u67B6\u6B4C\u6CB3\u706B\u73C2\u798D\u79BE\u7A3C\u7B87\u82B1\u82DB\u8304\u8377\u83EF\u83D3\u8766\u8AB2\u5629\u8CA8\u8FE6\u904E\u971E\u868A\u4FC4\u5CE8\u6211\u7259\u753B\u81E5\u82BD\u86FE\u8CC0\u96C5\u9913\u99D5\u4ECB\u4F1A\u89E3\u56DE\u584A\u58CA\u5EFB\u5FEB\u602A\u6094\u6062\u61D0\u6212\u62D0\u6539"], + ["b3a1", "\u9B41\u6666\u68B0\u6D77\u7070\u754C\u7686\u7D75\u82A5\u87F9\u958B\u968E\u8C9D\u51F1\u52BE\u5916\u54B3\u5BB3\u5D16\u6168\u6982\u6DAF\u788D\u84CB\u8857\u8A72\u93A7\u9AB8\u6D6C\u99A8\u86D9\u57A3\u67FF\u86CE\u920E\u5283\u5687\u5404\u5ED3\u62E1\u64B9\u683C\u6838\u6BBB\u7372\u78BA\u7A6B\u899A\u89D2\u8D6B\u8F03\u90ED\u95A3\u9694\u9769\u5B66\u5CB3\u697D\u984D\u984E\u639B\u7B20\u6A2B\u6A7F\u68B6\u9C0D\u6F5F\u5272\u559D\u6070\u62EC\u6D3B\u6E07\u6ED1\u845B\u8910\u8F44\u4E14\u9C39\u53F6\u691B\u6A3A\u9784\u682A\u515C\u7AC3\u84B2\u91DC\u938C\u565B\u9D28\u6822\u8305\u8431"], + ["b4a1", "\u7CA5\u5208\u82C5\u74E6\u4E7E\u4F83\u51A0\u5BD2\u520A\u52D8\u52E7\u5DFB\u559A\u582A\u59E6\u5B8C\u5B98\u5BDB\u5E72\u5E79\u60A3\u611F\u6163\u61BE\u63DB\u6562\u67D1\u6853\u68FA\u6B3E\u6B53\u6C57\u6F22\u6F97\u6F45\u74B0\u7518\u76E3\u770B\u7AFF\u7BA1\u7C21\u7DE9\u7F36\u7FF0\u809D\u8266\u839E\u89B3\u8ACC\u8CAB\u9084\u9451\u9593\u9591\u95A2\u9665\u97D3\u9928\u8218\u4E38\u542B\u5CB8\u5DCC\u73A9\u764C\u773C\u5CA9\u7FEB\u8D0B\u96C1\u9811\u9854\u9858\u4F01\u4F0E\u5371\u559C\u5668\u57FA\u5947\u5B09\u5BC4\u5C90\u5E0C\u5E7E\u5FCC\u63EE\u673A\u65D7\u65E2\u671F\u68CB\u68C4"], + ["b5a1", "\u6A5F\u5E30\u6BC5\u6C17\u6C7D\u757F\u7948\u5B63\u7A00\u7D00\u5FBD\u898F\u8A18\u8CB4\u8D77\u8ECC\u8F1D\u98E2\u9A0E\u9B3C\u4E80\u507D\u5100\u5993\u5B9C\u622F\u6280\u64EC\u6B3A\u72A0\u7591\u7947\u7FA9\u87FB\u8ABC\u8B70\u63AC\u83CA\u97A0\u5409\u5403\u55AB\u6854\u6A58\u8A70\u7827\u6775\u9ECD\u5374\u5BA2\u811A\u8650\u9006\u4E18\u4E45\u4EC7\u4F11\u53CA\u5438\u5BAE\u5F13\u6025\u6551\u673D\u6C42\u6C72\u6CE3\u7078\u7403\u7A76\u7AAE\u7B08\u7D1A\u7CFE\u7D66\u65E7\u725B\u53BB\u5C45\u5DE8\u62D2\u62E0\u6319\u6E20\u865A\u8A31\u8DDD\u92F8\u6F01\u79A6\u9B5A\u4EA8\u4EAB\u4EAC"], + ["b6a1", "\u4F9B\u4FA0\u50D1\u5147\u7AF6\u5171\u51F6\u5354\u5321\u537F\u53EB\u55AC\u5883\u5CE1\u5F37\u5F4A\u602F\u6050\u606D\u631F\u6559\u6A4B\u6CC1\u72C2\u72ED\u77EF\u80F8\u8105\u8208\u854E\u90F7\u93E1\u97FF\u9957\u9A5A\u4EF0\u51DD\u5C2D\u6681\u696D\u5C40\u66F2\u6975\u7389\u6850\u7C81\u50C5\u52E4\u5747\u5DFE\u9326\u65A4\u6B23\u6B3D\u7434\u7981\u79BD\u7B4B\u7DCA\u82B9\u83CC\u887F\u895F\u8B39\u8FD1\u91D1\u541F\u9280\u4E5D\u5036\u53E5\u533A\u72D7\u7396\u77E9\u82E6\u8EAF\u99C6\u99C8\u99D2\u5177\u611A\u865E\u55B0\u7A7A\u5076\u5BD3\u9047\u9685\u4E32\u6ADB\u91E7\u5C51\u5C48"], + ["b7a1", "\u6398\u7A9F\u6C93\u9774\u8F61\u7AAA\u718A\u9688\u7C82\u6817\u7E70\u6851\u936C\u52F2\u541B\u85AB\u8A13\u7FA4\u8ECD\u90E1\u5366\u8888\u7941\u4FC2\u50BE\u5211\u5144\u5553\u572D\u73EA\u578B\u5951\u5F62\u5F84\u6075\u6176\u6167\u61A9\u63B2\u643A\u656C\u666F\u6842\u6E13\u7566\u7A3D\u7CFB\u7D4C\u7D99\u7E4B\u7F6B\u830E\u834A\u86CD\u8A08\u8A63\u8B66\u8EFD\u981A\u9D8F\u82B8\u8FCE\u9BE8\u5287\u621F\u6483\u6FC0\u9699\u6841\u5091\u6B20\u6C7A\u6F54\u7A74\u7D50\u8840\u8A23\u6708\u4EF6\u5039\u5026\u5065\u517C\u5238\u5263\u55A7\u570F\u5805\u5ACC\u5EFA\u61B2\u61F8\u62F3\u6372"], + ["b8a1", "\u691C\u6A29\u727D\u72AC\u732E\u7814\u786F\u7D79\u770C\u80A9\u898B\u8B19\u8CE2\u8ED2\u9063\u9375\u967A\u9855\u9A13\u9E78\u5143\u539F\u53B3\u5E7B\u5F26\u6E1B\u6E90\u7384\u73FE\u7D43\u8237\u8A00\u8AFA\u9650\u4E4E\u500B\u53E4\u547C\u56FA\u59D1\u5B64\u5DF1\u5EAB\u5F27\u6238\u6545\u67AF\u6E56\u72D0\u7CCA\u88B4\u80A1\u80E1\u83F0\u864E\u8A87\u8DE8\u9237\u96C7\u9867\u9F13\u4E94\u4E92\u4F0D\u5348\u5449\u543E\u5A2F\u5F8C\u5FA1\u609F\u68A7\u6A8E\u745A\u7881\u8A9E\u8AA4\u8B77\u9190\u4E5E\u9BC9\u4EA4\u4F7C\u4FAF\u5019\u5016\u5149\u516C\u529F\u52B9\u52FE\u539A\u53E3\u5411"], + ["b9a1", "\u540E\u5589\u5751\u57A2\u597D\u5B54\u5B5D\u5B8F\u5DE5\u5DE7\u5DF7\u5E78\u5E83\u5E9A\u5EB7\u5F18\u6052\u614C\u6297\u62D8\u63A7\u653B\u6602\u6643\u66F4\u676D\u6821\u6897\u69CB\u6C5F\u6D2A\u6D69\u6E2F\u6E9D\u7532\u7687\u786C\u7A3F\u7CE0\u7D05\u7D18\u7D5E\u7DB1\u8015\u8003\u80AF\u80B1\u8154\u818F\u822A\u8352\u884C\u8861\u8B1B\u8CA2\u8CFC\u90CA\u9175\u9271\u783F\u92FC\u95A4\u964D\u9805\u9999\u9AD8\u9D3B\u525B\u52AB\u53F7\u5408\u58D5\u62F7\u6FE0\u8C6A\u8F5F\u9EB9\u514B\u523B\u544A\u56FD\u7A40\u9177\u9D60\u9ED2\u7344\u6F09\u8170\u7511\u5FFD\u60DA\u9AA8\u72DB\u8FBC"], + ["baa1", "\u6B64\u9803\u4ECA\u56F0\u5764\u58BE\u5A5A\u6068\u61C7\u660F\u6606\u6839\u68B1\u6DF7\u75D5\u7D3A\u826E\u9B42\u4E9B\u4F50\u53C9\u5506\u5D6F\u5DE6\u5DEE\u67FB\u6C99\u7473\u7802\u8A50\u9396\u88DF\u5750\u5EA7\u632B\u50B5\u50AC\u518D\u6700\u54C9\u585E\u59BB\u5BB0\u5F69\u624D\u63A1\u683D\u6B73\u6E08\u707D\u91C7\u7280\u7815\u7826\u796D\u658E\u7D30\u83DC\u88C1\u8F09\u969B\u5264\u5728\u6750\u7F6A\u8CA1\u51B4\u5742\u962A\u583A\u698A\u80B4\u54B2\u5D0E\u57FC\u7895\u9DFA\u4F5C\u524A\u548B\u643E\u6628\u6714\u67F5\u7A84\u7B56\u7D22\u932F\u685C\u9BAD\u7B39\u5319\u518A\u5237"], + ["bba1", "\u5BDF\u62F6\u64AE\u64E6\u672D\u6BBA\u85A9\u96D1\u7690\u9BD6\u634C\u9306\u9BAB\u76BF\u6652\u4E09\u5098\u53C2\u5C71\u60E8\u6492\u6563\u685F\u71E6\u73CA\u7523\u7B97\u7E82\u8695\u8B83\u8CDB\u9178\u9910\u65AC\u66AB\u6B8B\u4ED5\u4ED4\u4F3A\u4F7F\u523A\u53F8\u53F2\u55E3\u56DB\u58EB\u59CB\u59C9\u59FF\u5B50\u5C4D\u5E02\u5E2B\u5FD7\u601D\u6307\u652F\u5B5C\u65AF\u65BD\u65E8\u679D\u6B62\u6B7B\u6C0F\u7345\u7949\u79C1\u7CF8\u7D19\u7D2B\u80A2\u8102\u81F3\u8996\u8A5E\u8A69\u8A66\u8A8C\u8AEE\u8CC7\u8CDC\u96CC\u98FC\u6B6F\u4E8B\u4F3C\u4F8D\u5150\u5B57\u5BFA\u6148\u6301\u6642"], + ["bca1", "\u6B21\u6ECB\u6CBB\u723E\u74BD\u75D4\u78C1\u793A\u800C\u8033\u81EA\u8494\u8F9E\u6C50\u9E7F\u5F0F\u8B58\u9D2B\u7AFA\u8EF8\u5B8D\u96EB\u4E03\u53F1\u57F7\u5931\u5AC9\u5BA4\u6089\u6E7F\u6F06\u75BE\u8CEA\u5B9F\u8500\u7BE0\u5072\u67F4\u829D\u5C61\u854A\u7E1E\u820E\u5199\u5C04\u6368\u8D66\u659C\u716E\u793E\u7D17\u8005\u8B1D\u8ECA\u906E\u86C7\u90AA\u501F\u52FA\u5C3A\u6753\u707C\u7235\u914C\u91C8\u932B\u82E5\u5BC2\u5F31\u60F9\u4E3B\u53D6\u5B88\u624B\u6731\u6B8A\u72E9\u73E0\u7A2E\u816B\u8DA3\u9152\u9996\u5112\u53D7\u546A\u5BFF\u6388\u6A39\u7DAC\u9700\u56DA\u53CE\u5468"], + ["bda1", "\u5B97\u5C31\u5DDE\u4FEE\u6101\u62FE\u6D32\u79C0\u79CB\u7D42\u7E4D\u7FD2\u81ED\u821F\u8490\u8846\u8972\u8B90\u8E74\u8F2F\u9031\u914B\u916C\u96C6\u919C\u4EC0\u4F4F\u5145\u5341\u5F93\u620E\u67D4\u6C41\u6E0B\u7363\u7E26\u91CD\u9283\u53D4\u5919\u5BBF\u6DD1\u795D\u7E2E\u7C9B\u587E\u719F\u51FA\u8853\u8FF0\u4FCA\u5CFB\u6625\u77AC\u7AE3\u821C\u99FF\u51C6\u5FAA\u65EC\u696F\u6B89\u6DF3\u6E96\u6F64\u76FE\u7D14\u5DE1\u9075\u9187\u9806\u51E6\u521D\u6240\u6691\u66D9\u6E1A\u5EB6\u7DD2\u7F72\u66F8\u85AF\u85F7\u8AF8\u52A9\u53D9\u5973\u5E8F\u5F90\u6055\u92E4\u9664\u50B7\u511F"], + ["bea1", "\u52DD\u5320\u5347\u53EC\u54E8\u5546\u5531\u5617\u5968\u59BE\u5A3C\u5BB5\u5C06\u5C0F\u5C11\u5C1A\u5E84\u5E8A\u5EE0\u5F70\u627F\u6284\u62DB\u638C\u6377\u6607\u660C\u662D\u6676\u677E\u68A2\u6A1F\u6A35\u6CBC\u6D88\u6E09\u6E58\u713C\u7126\u7167\u75C7\u7701\u785D\u7901\u7965\u79F0\u7AE0\u7B11\u7CA7\u7D39\u8096\u83D6\u848B\u8549\u885D\u88F3\u8A1F\u8A3C\u8A54\u8A73\u8C61\u8CDE\u91A4\u9266\u937E\u9418\u969C\u9798\u4E0A\u4E08\u4E1E\u4E57\u5197\u5270\u57CE\u5834\u58CC\u5B22\u5E38\u60C5\u64FE\u6761\u6756\u6D44\u72B6\u7573\u7A63\u84B8\u8B72\u91B8\u9320\u5631\u57F4\u98FE"], + ["bfa1", "\u62ED\u690D\u6B96\u71ED\u7E54\u8077\u8272\u89E6\u98DF\u8755\u8FB1\u5C3B\u4F38\u4FE1\u4FB5\u5507\u5A20\u5BDD\u5BE9\u5FC3\u614E\u632F\u65B0\u664B\u68EE\u699B\u6D78\u6DF1\u7533\u75B9\u771F\u795E\u79E6\u7D33\u81E3\u82AF\u85AA\u89AA\u8A3A\u8EAB\u8F9B\u9032\u91DD\u9707\u4EBA\u4EC1\u5203\u5875\u58EC\u5C0B\u751A\u5C3D\u814E\u8A0A\u8FC5\u9663\u976D\u7B25\u8ACF\u9808\u9162\u56F3\u53A8\u9017\u5439\u5782\u5E25\u63A8\u6C34\u708A\u7761\u7C8B\u7FE0\u8870\u9042\u9154\u9310\u9318\u968F\u745E\u9AC4\u5D07\u5D69\u6570\u67A2\u8DA8\u96DB\u636E\u6749\u6919\u83C5\u9817\u96C0\u88FE"], + ["c0a1", "\u6F84\u647A\u5BF8\u4E16\u702C\u755D\u662F\u51C4\u5236\u52E2\u59D3\u5F81\u6027\u6210\u653F\u6574\u661F\u6674\u68F2\u6816\u6B63\u6E05\u7272\u751F\u76DB\u7CBE\u8056\u58F0\u88FD\u897F\u8AA0\u8A93\u8ACB\u901D\u9192\u9752\u9759\u6589\u7A0E\u8106\u96BB\u5E2D\u60DC\u621A\u65A5\u6614\u6790\u77F3\u7A4D\u7C4D\u7E3E\u810A\u8CAC\u8D64\u8DE1\u8E5F\u78A9\u5207\u62D9\u63A5\u6442\u6298\u8A2D\u7A83\u7BC0\u8AAC\u96EA\u7D76\u820C\u8749\u4ED9\u5148\u5343\u5360\u5BA3\u5C02\u5C16\u5DDD\u6226\u6247\u64B0\u6813\u6834\u6CC9\u6D45\u6D17\u67D3\u6F5C\u714E\u717D\u65CB\u7A7F\u7BAD\u7DDA"], + ["c1a1", "\u7E4A\u7FA8\u817A\u821B\u8239\u85A6\u8A6E\u8CCE\u8DF5\u9078\u9077\u92AD\u9291\u9583\u9BAE\u524D\u5584\u6F38\u7136\u5168\u7985\u7E55\u81B3\u7CCE\u564C\u5851\u5CA8\u63AA\u66FE\u66FD\u695A\u72D9\u758F\u758E\u790E\u7956\u79DF\u7C97\u7D20\u7D44\u8607\u8A34\u963B\u9061\u9F20\u50E7\u5275\u53CC\u53E2\u5009\u55AA\u58EE\u594F\u723D\u5B8B\u5C64\u531D\u60E3\u60F3\u635C\u6383\u633F\u63BB\u64CD\u65E9\u66F9\u5DE3\u69CD\u69FD\u6F15\u71E5\u4E89\u75E9\u76F8\u7A93\u7CDF\u7DCF\u7D9C\u8061\u8349\u8358\u846C\u84BC\u85FB\u88C5\u8D70\u9001\u906D\u9397\u971C\u9A12\u50CF\u5897\u618E"], + ["c2a1", "\u81D3\u8535\u8D08\u9020\u4FC3\u5074\u5247\u5373\u606F\u6349\u675F\u6E2C\u8DB3\u901F\u4FD7\u5C5E\u8CCA\u65CF\u7D9A\u5352\u8896\u5176\u63C3\u5B58\u5B6B\u5C0A\u640D\u6751\u905C\u4ED6\u591A\u592A\u6C70\u8A51\u553E\u5815\u59A5\u60F0\u6253\u67C1\u8235\u6955\u9640\u99C4\u9A28\u4F53\u5806\u5BFE\u8010\u5CB1\u5E2F\u5F85\u6020\u614B\u6234\u66FF\u6CF0\u6EDE\u80CE\u817F\u82D4\u888B\u8CB8\u9000\u902E\u968A\u9EDB\u9BDB\u4EE3\u53F0\u5927\u7B2C\u918D\u984C\u9DF9\u6EDD\u7027\u5353\u5544\u5B85\u6258\u629E\u62D3\u6CA2\u6FEF\u7422\u8A17\u9438\u6FC1\u8AFE\u8338\u51E7\u86F8\u53EA"], + ["c3a1", "\u53E9\u4F46\u9054\u8FB0\u596A\u8131\u5DFD\u7AEA\u8FBF\u68DA\u8C37\u72F8\u9C48\u6A3D\u8AB0\u4E39\u5358\u5606\u5766\u62C5\u63A2\u65E6\u6B4E\u6DE1\u6E5B\u70AD\u77ED\u7AEF\u7BAA\u7DBB\u803D\u80C6\u86CB\u8A95\u935B\u56E3\u58C7\u5F3E\u65AD\u6696\u6A80\u6BB5\u7537\u8AC7\u5024\u77E5\u5730\u5F1B\u6065\u667A\u6C60\u75F4\u7A1A\u7F6E\u81F4\u8718\u9045\u99B3\u7BC9\u755C\u7AF9\u7B51\u84C4\u9010\u79E9\u7A92\u8336\u5AE1\u7740\u4E2D\u4EF2\u5B99\u5FE0\u62BD\u663C\u67F1\u6CE8\u866B\u8877\u8A3B\u914E\u92F3\u99D0\u6A17\u7026\u732A\u82E7\u8457\u8CAF\u4E01\u5146\u51CB\u558B\u5BF5"], + ["c4a1", "\u5E16\u5E33\u5E81\u5F14\u5F35\u5F6B\u5FB4\u61F2\u6311\u66A2\u671D\u6F6E\u7252\u753A\u773A\u8074\u8139\u8178\u8776\u8ABF\u8ADC\u8D85\u8DF3\u929A\u9577\u9802\u9CE5\u52C5\u6357\u76F4\u6715\u6C88\u73CD\u8CC3\u93AE\u9673\u6D25\u589C\u690E\u69CC\u8FFD\u939A\u75DB\u901A\u585A\u6802\u63B4\u69FB\u4F43\u6F2C\u67D8\u8FBB\u8526\u7DB4\u9354\u693F\u6F70\u576A\u58F7\u5B2C\u7D2C\u722A\u540A\u91E3\u9DB4\u4EAD\u4F4E\u505C\u5075\u5243\u8C9E\u5448\u5824\u5B9A\u5E1D\u5E95\u5EAD\u5EF7\u5F1F\u608C\u62B5\u633A\u63D0\u68AF\u6C40\u7887\u798E\u7A0B\u7DE0\u8247\u8A02\u8AE6\u8E44\u9013"], + ["c5a1", "\u90B8\u912D\u91D8\u9F0E\u6CE5\u6458\u64E2\u6575\u6EF4\u7684\u7B1B\u9069\u93D1\u6EBA\u54F2\u5FB9\u64A4\u8F4D\u8FED\u9244\u5178\u586B\u5929\u5C55\u5E97\u6DFB\u7E8F\u751C\u8CBC\u8EE2\u985B\u70B9\u4F1D\u6BBF\u6FB1\u7530\u96FB\u514E\u5410\u5835\u5857\u59AC\u5C60\u5F92\u6597\u675C\u6E21\u767B\u83DF\u8CED\u9014\u90FD\u934D\u7825\u783A\u52AA\u5EA6\u571F\u5974\u6012\u5012\u515A\u51AC\u51CD\u5200\u5510\u5854\u5858\u5957\u5B95\u5CF6\u5D8B\u60BC\u6295\u642D\u6771\u6843\u68BC\u68DF\u76D7\u6DD8\u6E6F\u6D9B\u706F\u71C8\u5F53\u75D8\u7977\u7B49\u7B54\u7B52\u7CD6\u7D71\u5230"], + ["c6a1", "\u8463\u8569\u85E4\u8A0E\u8B04\u8C46\u8E0F\u9003\u900F\u9419\u9676\u982D\u9A30\u95D8\u50CD\u52D5\u540C\u5802\u5C0E\u61A7\u649E\u6D1E\u77B3\u7AE5\u80F4\u8404\u9053\u9285\u5CE0\u9D07\u533F\u5F97\u5FB3\u6D9C\u7279\u7763\u79BF\u7BE4\u6BD2\u72EC\u8AAD\u6803\u6A61\u51F8\u7A81\u6934\u5C4A\u9CF6\u82EB\u5BC5\u9149\u701E\u5678\u5C6F\u60C7\u6566\u6C8C\u8C5A\u9041\u9813\u5451\u66C7\u920D\u5948\u90A3\u5185\u4E4D\u51EA\u8599\u8B0E\u7058\u637A\u934B\u6962\u99B4\u7E04\u7577\u5357\u6960\u8EDF\u96E3\u6C5D\u4E8C\u5C3C\u5F10\u8FE9\u5302\u8CD1\u8089\u8679\u5EFF\u65E5\u4E73\u5165"], + ["c7a1", "\u5982\u5C3F\u97EE\u4EFB\u598A\u5FCD\u8A8D\u6FE1\u79B0\u7962\u5BE7\u8471\u732B\u71B1\u5E74\u5FF5\u637B\u649A\u71C3\u7C98\u4E43\u5EFC\u4E4B\u57DC\u56A2\u60A9\u6FC3\u7D0D\u80FD\u8133\u81BF\u8FB2\u8997\u86A4\u5DF4\u628A\u64AD\u8987\u6777\u6CE2\u6D3E\u7436\u7834\u5A46\u7F75\u82AD\u99AC\u4FF3\u5EC3\u62DD\u6392\u6557\u676F\u76C3\u724C\u80CC\u80BA\u8F29\u914D\u500D\u57F9\u5A92\u6885\u6973\u7164\u72FD\u8CB7\u58F2\u8CE0\u966A\u9019\u877F\u79E4\u77E7\u8429\u4F2F\u5265\u535A\u62CD\u67CF\u6CCA\u767D\u7B94\u7C95\u8236\u8584\u8FEB\u66DD\u6F20\u7206\u7E1B\u83AB\u99C1\u9EA6"], + ["c8a1", "\u51FD\u7BB1\u7872\u7BB8\u8087\u7B48\u6AE8\u5E61\u808C\u7551\u7560\u516B\u9262\u6E8C\u767A\u9197\u9AEA\u4F10\u7F70\u629C\u7B4F\u95A5\u9CE9\u567A\u5859\u86E4\u96BC\u4F34\u5224\u534A\u53CD\u53DB\u5E06\u642C\u6591\u677F\u6C3E\u6C4E\u7248\u72AF\u73ED\u7554\u7E41\u822C\u85E9\u8CA9\u7BC4\u91C6\u7169\u9812\u98EF\u633D\u6669\u756A\u76E4\u78D0\u8543\u86EE\u532A\u5351\u5426\u5983\u5E87\u5F7C\u60B2\u6249\u6279\u62AB\u6590\u6BD4\u6CCC\u75B2\u76AE\u7891\u79D8\u7DCB\u7F77\u80A5\u88AB\u8AB9\u8CBB\u907F\u975E\u98DB\u6A0B\u7C38\u5099\u5C3E\u5FAE\u6787\u6BD8\u7435\u7709\u7F8E"], + ["c9a1", "\u9F3B\u67CA\u7A17\u5339\u758B\u9AED\u5F66\u819D\u83F1\u8098\u5F3C\u5FC5\u7562\u7B46\u903C\u6867\u59EB\u5A9B\u7D10\u767E\u8B2C\u4FF5\u5F6A\u6A19\u6C37\u6F02\u74E2\u7968\u8868\u8A55\u8C79\u5EDF\u63CF\u75C5\u79D2\u82D7\u9328\u92F2\u849C\u86ED\u9C2D\u54C1\u5F6C\u658C\u6D5C\u7015\u8CA7\u8CD3\u983B\u654F\u74F6\u4E0D\u4ED8\u57E0\u592B\u5A66\u5BCC\u51A8\u5E03\u5E9C\u6016\u6276\u6577\u65A7\u666E\u6D6E\u7236\u7B26\u8150\u819A\u8299\u8B5C\u8CA0\u8CE6\u8D74\u961C\u9644\u4FAE\u64AB\u6B66\u821E\u8461\u856A\u90E8\u5C01\u6953\u98A8\u847A\u8557\u4F0F\u526F\u5FA9\u5E45\u670D"], + ["caa1", "\u798F\u8179\u8907\u8986\u6DF5\u5F17\u6255\u6CB8\u4ECF\u7269\u9B92\u5206\u543B\u5674\u58B3\u61A4\u626E\u711A\u596E\u7C89\u7CDE\u7D1B\u96F0\u6587\u805E\u4E19\u4F75\u5175\u5840\u5E63\u5E73\u5F0A\u67C4\u4E26\u853D\u9589\u965B\u7C73\u9801\u50FB\u58C1\u7656\u78A7\u5225\u77A5\u8511\u7B86\u504F\u5909\u7247\u7BC7\u7DE8\u8FBA\u8FD4\u904D\u4FBF\u52C9\u5A29\u5F01\u97AD\u4FDD\u8217\u92EA\u5703\u6355\u6B69\u752B\u88DC\u8F14\u7A42\u52DF\u5893\u6155\u620A\u66AE\u6BCD\u7C3F\u83E9\u5023\u4FF8\u5305\u5446\u5831\u5949\u5B9D\u5CF0\u5CEF\u5D29\u5E96\u62B1\u6367\u653E\u65B9\u670B"], + ["cba1", "\u6CD5\u6CE1\u70F9\u7832\u7E2B\u80DE\u82B3\u840C\u84EC\u8702\u8912\u8A2A\u8C4A\u90A6\u92D2\u98FD\u9CF3\u9D6C\u4E4F\u4EA1\u508D\u5256\u574A\u59A8\u5E3D\u5FD8\u5FD9\u623F\u66B4\u671B\u67D0\u68D2\u5192\u7D21\u80AA\u81A8\u8B00\u8C8C\u8CBF\u927E\u9632\u5420\u982C\u5317\u50D5\u535C\u58A8\u64B2\u6734\u7267\u7766\u7A46\u91E6\u52C3\u6CA1\u6B86\u5800\u5E4C\u5954\u672C\u7FFB\u51E1\u76C6\u6469\u78E8\u9B54\u9EBB\u57CB\u59B9\u6627\u679A\u6BCE\u54E9\u69D9\u5E55\u819C\u6795\u9BAA\u67FE\u9C52\u685D\u4EA6\u4FE3\u53C8\u62B9\u672B\u6CAB\u8FC4\u4FAD\u7E6D\u9EBF\u4E07\u6162\u6E80"], + ["cca1", "\u6F2B\u8513\u5473\u672A\u9B45\u5DF3\u7B95\u5CAC\u5BC6\u871C\u6E4A\u84D1\u7A14\u8108\u5999\u7C8D\u6C11\u7720\u52D9\u5922\u7121\u725F\u77DB\u9727\u9D61\u690B\u5A7F\u5A18\u51A5\u540D\u547D\u660E\u76DF\u8FF7\u9298\u9CF4\u59EA\u725D\u6EC5\u514D\u68C9\u7DBF\u7DEC\u9762\u9EBA\u6478\u6A21\u8302\u5984\u5B5F\u6BDB\u731B\u76F2\u7DB2\u8017\u8499\u5132\u6728\u9ED9\u76EE\u6762\u52FF\u9905\u5C24\u623B\u7C7E\u8CB0\u554F\u60B6\u7D0B\u9580\u5301\u4E5F\u51B6\u591C\u723A\u8036\u91CE\u5F25\u77E2\u5384\u5F79\u7D04\u85AC\u8A33\u8E8D\u9756\u67F3\u85AE\u9453\u6109\u6108\u6CB9\u7652"], + ["cda1", "\u8AED\u8F38\u552F\u4F51\u512A\u52C7\u53CB\u5BA5\u5E7D\u60A0\u6182\u63D6\u6709\u67DA\u6E67\u6D8C\u7336\u7337\u7531\u7950\u88D5\u8A98\u904A\u9091\u90F5\u96C4\u878D\u5915\u4E88\u4F59\u4E0E\u8A89\u8F3F\u9810\u50AD\u5E7C\u5996\u5BB9\u5EB8\u63DA\u63FA\u64C1\u66DC\u694A\u69D8\u6D0B\u6EB6\u7194\u7528\u7AAF\u7F8A\u8000\u8449\u84C9\u8981\u8B21\u8E0A\u9065\u967D\u990A\u617E\u6291\u6B32\u6C83\u6D74\u7FCC\u7FFC\u6DC0\u7F85\u87BA\u88F8\u6765\u83B1\u983C\u96F7\u6D1B\u7D61\u843D\u916A\u4E71\u5375\u5D50\u6B04\u6FEB\u85CD\u862D\u89A7\u5229\u540F\u5C65\u674E\u68A8\u7406\u7483"], + ["cea1", "\u75E2\u88CF\u88E1\u91CC\u96E2\u9678\u5F8B\u7387\u7ACB\u844E\u63A0\u7565\u5289\u6D41\u6E9C\u7409\u7559\u786B\u7C92\u9686\u7ADC\u9F8D\u4FB6\u616E\u65C5\u865C\u4E86\u4EAE\u50DA\u4E21\u51CC\u5BEE\u6599\u6881\u6DBC\u731F\u7642\u77AD\u7A1C\u7CE7\u826F\u8AD2\u907C\u91CF\u9675\u9818\u529B\u7DD1\u502B\u5398\u6797\u6DCB\u71D0\u7433\u81E8\u8F2A\u96A3\u9C57\u9E9F\u7460\u5841\u6D99\u7D2F\u985E\u4EE4\u4F36\u4F8B\u51B7\u52B1\u5DBA\u601C\u73B2\u793C\u82D3\u9234\u96B7\u96F6\u970A\u9E97\u9F62\u66A6\u6B74\u5217\u52A3\u70C8\u88C2\u5EC9\u604B\u6190\u6F23\u7149\u7C3E\u7DF4\u806F"], + ["cfa1", "\u84EE\u9023\u932C\u5442\u9B6F\u6AD3\u7089\u8CC2\u8DEF\u9732\u52B4\u5A41\u5ECA\u5F04\u6717\u697C\u6994\u6D6A\u6F0F\u7262\u72FC\u7BED\u8001\u807E\u874B\u90CE\u516D\u9E93\u7984\u808B\u9332\u8AD6\u502D\u548C\u8A71\u6B6A\u8CC4\u8107\u60D1\u67A0\u9DF2\u4E99\u4E98\u9C10\u8A6B\u85C1\u8568\u6900\u6E7E\u7897\u8155"], + ["d0a1", "\u5F0C\u4E10\u4E15\u4E2A\u4E31\u4E36\u4E3C\u4E3F\u4E42\u4E56\u4E58\u4E82\u4E85\u8C6B\u4E8A\u8212\u5F0D\u4E8E\u4E9E\u4E9F\u4EA0\u4EA2\u4EB0\u4EB3\u4EB6\u4ECE\u4ECD\u4EC4\u4EC6\u4EC2\u4ED7\u4EDE\u4EED\u4EDF\u4EF7\u4F09\u4F5A\u4F30\u4F5B\u4F5D\u4F57\u4F47\u4F76\u4F88\u4F8F\u4F98\u4F7B\u4F69\u4F70\u4F91\u4F6F\u4F86\u4F96\u5118\u4FD4\u4FDF\u4FCE\u4FD8\u4FDB\u4FD1\u4FDA\u4FD0\u4FE4\u4FE5\u501A\u5028\u5014\u502A\u5025\u5005\u4F1C\u4FF6\u5021\u5029\u502C\u4FFE\u4FEF\u5011\u5006\u5043\u5047\u6703\u5055\u5050\u5048\u505A\u5056\u506C\u5078\u5080\u509A\u5085\u50B4\u50B2"], + ["d1a1", "\u50C9\u50CA\u50B3\u50C2\u50D6\u50DE\u50E5\u50ED\u50E3\u50EE\u50F9\u50F5\u5109\u5101\u5102\u5116\u5115\u5114\u511A\u5121\u513A\u5137\u513C\u513B\u513F\u5140\u5152\u514C\u5154\u5162\u7AF8\u5169\u516A\u516E\u5180\u5182\u56D8\u518C\u5189\u518F\u5191\u5193\u5195\u5196\u51A4\u51A6\u51A2\u51A9\u51AA\u51AB\u51B3\u51B1\u51B2\u51B0\u51B5\u51BD\u51C5\u51C9\u51DB\u51E0\u8655\u51E9\u51ED\u51F0\u51F5\u51FE\u5204\u520B\u5214\u520E\u5227\u522A\u522E\u5233\u5239\u524F\u5244\u524B\u524C\u525E\u5254\u526A\u5274\u5269\u5273\u527F\u527D\u528D\u5294\u5292\u5271\u5288\u5291\u8FA8"], + ["d2a1", "\u8FA7\u52AC\u52AD\u52BC\u52B5\u52C1\u52CD\u52D7\u52DE\u52E3\u52E6\u98ED\u52E0\u52F3\u52F5\u52F8\u52F9\u5306\u5308\u7538\u530D\u5310\u530F\u5315\u531A\u5323\u532F\u5331\u5333\u5338\u5340\u5346\u5345\u4E17\u5349\u534D\u51D6\u535E\u5369\u536E\u5918\u537B\u5377\u5382\u5396\u53A0\u53A6\u53A5\u53AE\u53B0\u53B6\u53C3\u7C12\u96D9\u53DF\u66FC\u71EE\u53EE\u53E8\u53ED\u53FA\u5401\u543D\u5440\u542C\u542D\u543C\u542E\u5436\u5429\u541D\u544E\u548F\u5475\u548E\u545F\u5471\u5477\u5470\u5492\u547B\u5480\u5476\u5484\u5490\u5486\u54C7\u54A2\u54B8\u54A5\u54AC\u54C4\u54C8\u54A8"], + ["d3a1", "\u54AB\u54C2\u54A4\u54BE\u54BC\u54D8\u54E5\u54E6\u550F\u5514\u54FD\u54EE\u54ED\u54FA\u54E2\u5539\u5540\u5563\u554C\u552E\u555C\u5545\u5556\u5557\u5538\u5533\u555D\u5599\u5580\u54AF\u558A\u559F\u557B\u557E\u5598\u559E\u55AE\u557C\u5583\u55A9\u5587\u55A8\u55DA\u55C5\u55DF\u55C4\u55DC\u55E4\u55D4\u5614\u55F7\u5616\u55FE\u55FD\u561B\u55F9\u564E\u5650\u71DF\u5634\u5636\u5632\u5638\u566B\u5664\u562F\u566C\u566A\u5686\u5680\u568A\u56A0\u5694\u568F\u56A5\u56AE\u56B6\u56B4\u56C2\u56BC\u56C1\u56C3\u56C0\u56C8\u56CE\u56D1\u56D3\u56D7\u56EE\u56F9\u5700\u56FF\u5704\u5709"], + ["d4a1", "\u5708\u570B\u570D\u5713\u5718\u5716\u55C7\u571C\u5726\u5737\u5738\u574E\u573B\u5740\u574F\u5769\u57C0\u5788\u5761\u577F\u5789\u5793\u57A0\u57B3\u57A4\u57AA\u57B0\u57C3\u57C6\u57D4\u57D2\u57D3\u580A\u57D6\u57E3\u580B\u5819\u581D\u5872\u5821\u5862\u584B\u5870\u6BC0\u5852\u583D\u5879\u5885\u58B9\u589F\u58AB\u58BA\u58DE\u58BB\u58B8\u58AE\u58C5\u58D3\u58D1\u58D7\u58D9\u58D8\u58E5\u58DC\u58E4\u58DF\u58EF\u58FA\u58F9\u58FB\u58FC\u58FD\u5902\u590A\u5910\u591B\u68A6\u5925\u592C\u592D\u5932\u5938\u593E\u7AD2\u5955\u5950\u594E\u595A\u5958\u5962\u5960\u5967\u596C\u5969"], + ["d5a1", "\u5978\u5981\u599D\u4F5E\u4FAB\u59A3\u59B2\u59C6\u59E8\u59DC\u598D\u59D9\u59DA\u5A25\u5A1F\u5A11\u5A1C\u5A09\u5A1A\u5A40\u5A6C\u5A49\u5A35\u5A36\u5A62\u5A6A\u5A9A\u5ABC\u5ABE\u5ACB\u5AC2\u5ABD\u5AE3\u5AD7\u5AE6\u5AE9\u5AD6\u5AFA\u5AFB\u5B0C\u5B0B\u5B16\u5B32\u5AD0\u5B2A\u5B36\u5B3E\u5B43\u5B45\u5B40\u5B51\u5B55\u5B5A\u5B5B\u5B65\u5B69\u5B70\u5B73\u5B75\u5B78\u6588\u5B7A\u5B80\u5B83\u5BA6\u5BB8\u5BC3\u5BC7\u5BC9\u5BD4\u5BD0\u5BE4\u5BE6\u5BE2\u5BDE\u5BE5\u5BEB\u5BF0\u5BF6\u5BF3\u5C05\u5C07\u5C08\u5C0D\u5C13\u5C20\u5C22\u5C28\u5C38\u5C39\u5C41\u5C46\u5C4E\u5C53"], + ["d6a1", "\u5C50\u5C4F\u5B71\u5C6C\u5C6E\u4E62\u5C76\u5C79\u5C8C\u5C91\u5C94\u599B\u5CAB\u5CBB\u5CB6\u5CBC\u5CB7\u5CC5\u5CBE\u5CC7\u5CD9\u5CE9\u5CFD\u5CFA\u5CED\u5D8C\u5CEA\u5D0B\u5D15\u5D17\u5D5C\u5D1F\u5D1B\u5D11\u5D14\u5D22\u5D1A\u5D19\u5D18\u5D4C\u5D52\u5D4E\u5D4B\u5D6C\u5D73\u5D76\u5D87\u5D84\u5D82\u5DA2\u5D9D\u5DAC\u5DAE\u5DBD\u5D90\u5DB7\u5DBC\u5DC9\u5DCD\u5DD3\u5DD2\u5DD6\u5DDB\u5DEB\u5DF2\u5DF5\u5E0B\u5E1A\u5E19\u5E11\u5E1B\u5E36\u5E37\u5E44\u5E43\u5E40\u5E4E\u5E57\u5E54\u5E5F\u5E62\u5E64\u5E47\u5E75\u5E76\u5E7A\u9EBC\u5E7F\u5EA0\u5EC1\u5EC2\u5EC8\u5ED0\u5ECF"], + ["d7a1", "\u5ED6\u5EE3\u5EDD\u5EDA\u5EDB\u5EE2\u5EE1\u5EE8\u5EE9\u5EEC\u5EF1\u5EF3\u5EF0\u5EF4\u5EF8\u5EFE\u5F03\u5F09\u5F5D\u5F5C\u5F0B\u5F11\u5F16\u5F29\u5F2D\u5F38\u5F41\u5F48\u5F4C\u5F4E\u5F2F\u5F51\u5F56\u5F57\u5F59\u5F61\u5F6D\u5F73\u5F77\u5F83\u5F82\u5F7F\u5F8A\u5F88\u5F91\u5F87\u5F9E\u5F99\u5F98\u5FA0\u5FA8\u5FAD\u5FBC\u5FD6\u5FFB\u5FE4\u5FF8\u5FF1\u5FDD\u60B3\u5FFF\u6021\u6060\u6019\u6010\u6029\u600E\u6031\u601B\u6015\u602B\u6026\u600F\u603A\u605A\u6041\u606A\u6077\u605F\u604A\u6046\u604D\u6063\u6043\u6064\u6042\u606C\u606B\u6059\u6081\u608D\u60E7\u6083\u609A"], + ["d8a1", "\u6084\u609B\u6096\u6097\u6092\u60A7\u608B\u60E1\u60B8\u60E0\u60D3\u60B4\u5FF0\u60BD\u60C6\u60B5\u60D8\u614D\u6115\u6106\u60F6\u60F7\u6100\u60F4\u60FA\u6103\u6121\u60FB\u60F1\u610D\u610E\u6147\u613E\u6128\u6127\u614A\u613F\u613C\u612C\u6134\u613D\u6142\u6144\u6173\u6177\u6158\u6159\u615A\u616B\u6174\u616F\u6165\u6171\u615F\u615D\u6153\u6175\u6199\u6196\u6187\u61AC\u6194\u619A\u618A\u6191\u61AB\u61AE\u61CC\u61CA\u61C9\u61F7\u61C8\u61C3\u61C6\u61BA\u61CB\u7F79\u61CD\u61E6\u61E3\u61F6\u61FA\u61F4\u61FF\u61FD\u61FC\u61FE\u6200\u6208\u6209\u620D\u620C\u6214\u621B"], + ["d9a1", "\u621E\u6221\u622A\u622E\u6230\u6232\u6233\u6241\u624E\u625E\u6263\u625B\u6260\u6268\u627C\u6282\u6289\u627E\u6292\u6293\u6296\u62D4\u6283\u6294\u62D7\u62D1\u62BB\u62CF\u62FF\u62C6\u64D4\u62C8\u62DC\u62CC\u62CA\u62C2\u62C7\u629B\u62C9\u630C\u62EE\u62F1\u6327\u6302\u6308\u62EF\u62F5\u6350\u633E\u634D\u641C\u634F\u6396\u638E\u6380\u63AB\u6376\u63A3\u638F\u6389\u639F\u63B5\u636B\u6369\u63BE\u63E9\u63C0\u63C6\u63E3\u63C9\u63D2\u63F6\u63C4\u6416\u6434\u6406\u6413\u6426\u6436\u651D\u6417\u6428\u640F\u6467\u646F\u6476\u644E\u652A\u6495\u6493\u64A5\u64A9\u6488\u64BC"], + ["daa1", "\u64DA\u64D2\u64C5\u64C7\u64BB\u64D8\u64C2\u64F1\u64E7\u8209\u64E0\u64E1\u62AC\u64E3\u64EF\u652C\u64F6\u64F4\u64F2\u64FA\u6500\u64FD\u6518\u651C\u6505\u6524\u6523\u652B\u6534\u6535\u6537\u6536\u6538\u754B\u6548\u6556\u6555\u654D\u6558\u655E\u655D\u6572\u6578\u6582\u6583\u8B8A\u659B\u659F\u65AB\u65B7\u65C3\u65C6\u65C1\u65C4\u65CC\u65D2\u65DB\u65D9\u65E0\u65E1\u65F1\u6772\u660A\u6603\u65FB\u6773\u6635\u6636\u6634\u661C\u664F\u6644\u6649\u6641\u665E\u665D\u6664\u6667\u6668\u665F\u6662\u6670\u6683\u6688\u668E\u6689\u6684\u6698\u669D\u66C1\u66B9\u66C9\u66BE\u66BC"], + ["dba1", "\u66C4\u66B8\u66D6\u66DA\u66E0\u663F\u66E6\u66E9\u66F0\u66F5\u66F7\u670F\u6716\u671E\u6726\u6727\u9738\u672E\u673F\u6736\u6741\u6738\u6737\u6746\u675E\u6760\u6759\u6763\u6764\u6789\u6770\u67A9\u677C\u676A\u678C\u678B\u67A6\u67A1\u6785\u67B7\u67EF\u67B4\u67EC\u67B3\u67E9\u67B8\u67E4\u67DE\u67DD\u67E2\u67EE\u67B9\u67CE\u67C6\u67E7\u6A9C\u681E\u6846\u6829\u6840\u684D\u6832\u684E\u68B3\u682B\u6859\u6863\u6877\u687F\u689F\u688F\u68AD\u6894\u689D\u689B\u6883\u6AAE\u68B9\u6874\u68B5\u68A0\u68BA\u690F\u688D\u687E\u6901\u68CA\u6908\u68D8\u6922\u6926\u68E1\u690C\u68CD"], + ["dca1", "\u68D4\u68E7\u68D5\u6936\u6912\u6904\u68D7\u68E3\u6925\u68F9\u68E0\u68EF\u6928\u692A\u691A\u6923\u6921\u68C6\u6979\u6977\u695C\u6978\u696B\u6954\u697E\u696E\u6939\u6974\u693D\u6959\u6930\u6961\u695E\u695D\u6981\u696A\u69B2\u69AE\u69D0\u69BF\u69C1\u69D3\u69BE\u69CE\u5BE8\u69CA\u69DD\u69BB\u69C3\u69A7\u6A2E\u6991\u69A0\u699C\u6995\u69B4\u69DE\u69E8\u6A02\u6A1B\u69FF\u6B0A\u69F9\u69F2\u69E7\u6A05\u69B1\u6A1E\u69ED\u6A14\u69EB\u6A0A\u6A12\u6AC1\u6A23\u6A13\u6A44\u6A0C\u6A72\u6A36\u6A78\u6A47\u6A62\u6A59\u6A66\u6A48\u6A38\u6A22\u6A90\u6A8D\u6AA0\u6A84\u6AA2\u6AA3"], + ["dda1", "\u6A97\u8617\u6ABB\u6AC3\u6AC2\u6AB8\u6AB3\u6AAC\u6ADE\u6AD1\u6ADF\u6AAA\u6ADA\u6AEA\u6AFB\u6B05\u8616\u6AFA\u6B12\u6B16\u9B31\u6B1F\u6B38\u6B37\u76DC\u6B39\u98EE\u6B47\u6B43\u6B49\u6B50\u6B59\u6B54\u6B5B\u6B5F\u6B61\u6B78\u6B79\u6B7F\u6B80\u6B84\u6B83\u6B8D\u6B98\u6B95\u6B9E\u6BA4\u6BAA\u6BAB\u6BAF\u6BB2\u6BB1\u6BB3\u6BB7\u6BBC\u6BC6\u6BCB\u6BD3\u6BDF\u6BEC\u6BEB\u6BF3\u6BEF\u9EBE\u6C08\u6C13\u6C14\u6C1B\u6C24\u6C23\u6C5E\u6C55\u6C62\u6C6A\u6C82\u6C8D\u6C9A\u6C81\u6C9B\u6C7E\u6C68\u6C73\u6C92\u6C90\u6CC4\u6CF1\u6CD3\u6CBD\u6CD7\u6CC5\u6CDD\u6CAE\u6CB1\u6CBE"], + ["dea1", "\u6CBA\u6CDB\u6CEF\u6CD9\u6CEA\u6D1F\u884D\u6D36\u6D2B\u6D3D\u6D38\u6D19\u6D35\u6D33\u6D12\u6D0C\u6D63\u6D93\u6D64\u6D5A\u6D79\u6D59\u6D8E\u6D95\u6FE4\u6D85\u6DF9\u6E15\u6E0A\u6DB5\u6DC7\u6DE6\u6DB8\u6DC6\u6DEC\u6DDE\u6DCC\u6DE8\u6DD2\u6DC5\u6DFA\u6DD9\u6DE4\u6DD5\u6DEA\u6DEE\u6E2D\u6E6E\u6E2E\u6E19\u6E72\u6E5F\u6E3E\u6E23\u6E6B\u6E2B\u6E76\u6E4D\u6E1F\u6E43\u6E3A\u6E4E\u6E24\u6EFF\u6E1D\u6E38\u6E82\u6EAA\u6E98\u6EC9\u6EB7\u6ED3\u6EBD\u6EAF\u6EC4\u6EB2\u6ED4\u6ED5\u6E8F\u6EA5\u6EC2\u6E9F\u6F41\u6F11\u704C\u6EEC\u6EF8\u6EFE\u6F3F\u6EF2\u6F31\u6EEF\u6F32\u6ECC"], + ["dfa1", "\u6F3E\u6F13\u6EF7\u6F86\u6F7A\u6F78\u6F81\u6F80\u6F6F\u6F5B\u6FF3\u6F6D\u6F82\u6F7C\u6F58\u6F8E\u6F91\u6FC2\u6F66\u6FB3\u6FA3\u6FA1\u6FA4\u6FB9\u6FC6\u6FAA\u6FDF\u6FD5\u6FEC\u6FD4\u6FD8\u6FF1\u6FEE\u6FDB\u7009\u700B\u6FFA\u7011\u7001\u700F\u6FFE\u701B\u701A\u6F74\u701D\u7018\u701F\u7030\u703E\u7032\u7051\u7063\u7099\u7092\u70AF\u70F1\u70AC\u70B8\u70B3\u70AE\u70DF\u70CB\u70DD\u70D9\u7109\u70FD\u711C\u7119\u7165\u7155\u7188\u7166\u7162\u714C\u7156\u716C\u718F\u71FB\u7184\u7195\u71A8\u71AC\u71D7\u71B9\u71BE\u71D2\u71C9\u71D4\u71CE\u71E0\u71EC\u71E7\u71F5\u71FC"], + ["e0a1", "\u71F9\u71FF\u720D\u7210\u721B\u7228\u722D\u722C\u7230\u7232\u723B\u723C\u723F\u7240\u7246\u724B\u7258\u7274\u727E\u7282\u7281\u7287\u7292\u7296\u72A2\u72A7\u72B9\u72B2\u72C3\u72C6\u72C4\u72CE\u72D2\u72E2\u72E0\u72E1\u72F9\u72F7\u500F\u7317\u730A\u731C\u7316\u731D\u7334\u732F\u7329\u7325\u733E\u734E\u734F\u9ED8\u7357\u736A\u7368\u7370\u7378\u7375\u737B\u737A\u73C8\u73B3\u73CE\u73BB\u73C0\u73E5\u73EE\u73DE\u74A2\u7405\u746F\u7425\u73F8\u7432\u743A\u7455\u743F\u745F\u7459\u7441\u745C\u7469\u7470\u7463\u746A\u7476\u747E\u748B\u749E\u74A7\u74CA\u74CF\u74D4\u73F1"], + ["e1a1", "\u74E0\u74E3\u74E7\u74E9\u74EE\u74F2\u74F0\u74F1\u74F8\u74F7\u7504\u7503\u7505\u750C\u750E\u750D\u7515\u7513\u751E\u7526\u752C\u753C\u7544\u754D\u754A\u7549\u755B\u7546\u755A\u7569\u7564\u7567\u756B\u756D\u7578\u7576\u7586\u7587\u7574\u758A\u7589\u7582\u7594\u759A\u759D\u75A5\u75A3\u75C2\u75B3\u75C3\u75B5\u75BD\u75B8\u75BC\u75B1\u75CD\u75CA\u75D2\u75D9\u75E3\u75DE\u75FE\u75FF\u75FC\u7601\u75F0\u75FA\u75F2\u75F3\u760B\u760D\u7609\u761F\u7627\u7620\u7621\u7622\u7624\u7634\u7630\u763B\u7647\u7648\u7646\u765C\u7658\u7661\u7662\u7668\u7669\u766A\u7667\u766C\u7670"], + ["e2a1", "\u7672\u7676\u7678\u767C\u7680\u7683\u7688\u768B\u768E\u7696\u7693\u7699\u769A\u76B0\u76B4\u76B8\u76B9\u76BA\u76C2\u76CD\u76D6\u76D2\u76DE\u76E1\u76E5\u76E7\u76EA\u862F\u76FB\u7708\u7707\u7704\u7729\u7724\u771E\u7725\u7726\u771B\u7737\u7738\u7747\u775A\u7768\u776B\u775B\u7765\u777F\u777E\u7779\u778E\u778B\u7791\u77A0\u779E\u77B0\u77B6\u77B9\u77BF\u77BC\u77BD\u77BB\u77C7\u77CD\u77D7\u77DA\u77DC\u77E3\u77EE\u77FC\u780C\u7812\u7926\u7820\u792A\u7845\u788E\u7874\u7886\u787C\u789A\u788C\u78A3\u78B5\u78AA\u78AF\u78D1\u78C6\u78CB\u78D4\u78BE\u78BC\u78C5\u78CA\u78EC"], + ["e3a1", "\u78E7\u78DA\u78FD\u78F4\u7907\u7912\u7911\u7919\u792C\u792B\u7940\u7960\u7957\u795F\u795A\u7955\u7953\u797A\u797F\u798A\u799D\u79A7\u9F4B\u79AA\u79AE\u79B3\u79B9\u79BA\u79C9\u79D5\u79E7\u79EC\u79E1\u79E3\u7A08\u7A0D\u7A18\u7A19\u7A20\u7A1F\u7980\u7A31\u7A3B\u7A3E\u7A37\u7A43\u7A57\u7A49\u7A61\u7A62\u7A69\u9F9D\u7A70\u7A79\u7A7D\u7A88\u7A97\u7A95\u7A98\u7A96\u7AA9\u7AC8\u7AB0\u7AB6\u7AC5\u7AC4\u7ABF\u9083\u7AC7\u7ACA\u7ACD\u7ACF\u7AD5\u7AD3\u7AD9\u7ADA\u7ADD\u7AE1\u7AE2\u7AE6\u7AED\u7AF0\u7B02\u7B0F\u7B0A\u7B06\u7B33\u7B18\u7B19\u7B1E\u7B35\u7B28\u7B36\u7B50"], + ["e4a1", "\u7B7A\u7B04\u7B4D\u7B0B\u7B4C\u7B45\u7B75\u7B65\u7B74\u7B67\u7B70\u7B71\u7B6C\u7B6E\u7B9D\u7B98\u7B9F\u7B8D\u7B9C\u7B9A\u7B8B\u7B92\u7B8F\u7B5D\u7B99\u7BCB\u7BC1\u7BCC\u7BCF\u7BB4\u7BC6\u7BDD\u7BE9\u7C11\u7C14\u7BE6\u7BE5\u7C60\u7C00\u7C07\u7C13\u7BF3\u7BF7\u7C17\u7C0D\u7BF6\u7C23\u7C27\u7C2A\u7C1F\u7C37\u7C2B\u7C3D\u7C4C\u7C43\u7C54\u7C4F\u7C40\u7C50\u7C58\u7C5F\u7C64\u7C56\u7C65\u7C6C\u7C75\u7C83\u7C90\u7CA4\u7CAD\u7CA2\u7CAB\u7CA1\u7CA8\u7CB3\u7CB2\u7CB1\u7CAE\u7CB9\u7CBD\u7CC0\u7CC5\u7CC2\u7CD8\u7CD2\u7CDC\u7CE2\u9B3B\u7CEF\u7CF2\u7CF4\u7CF6\u7CFA\u7D06"], + ["e5a1", "\u7D02\u7D1C\u7D15\u7D0A\u7D45\u7D4B\u7D2E\u7D32\u7D3F\u7D35\u7D46\u7D73\u7D56\u7D4E\u7D72\u7D68\u7D6E\u7D4F\u7D63\u7D93\u7D89\u7D5B\u7D8F\u7D7D\u7D9B\u7DBA\u7DAE\u7DA3\u7DB5\u7DC7\u7DBD\u7DAB\u7E3D\u7DA2\u7DAF\u7DDC\u7DB8\u7D9F\u7DB0\u7DD8\u7DDD\u7DE4\u7DDE\u7DFB\u7DF2\u7DE1\u7E05\u7E0A\u7E23\u7E21\u7E12\u7E31\u7E1F\u7E09\u7E0B\u7E22\u7E46\u7E66\u7E3B\u7E35\u7E39\u7E43\u7E37\u7E32\u7E3A\u7E67\u7E5D\u7E56\u7E5E\u7E59\u7E5A\u7E79\u7E6A\u7E69\u7E7C\u7E7B\u7E83\u7DD5\u7E7D\u8FAE\u7E7F\u7E88\u7E89\u7E8C\u7E92\u7E90\u7E93\u7E94\u7E96\u7E8E\u7E9B\u7E9C\u7F38\u7F3A"], + ["e6a1", "\u7F45\u7F4C\u7F4D\u7F4E\u7F50\u7F51\u7F55\u7F54\u7F58\u7F5F\u7F60\u7F68\u7F69\u7F67\u7F78\u7F82\u7F86\u7F83\u7F88\u7F87\u7F8C\u7F94\u7F9E\u7F9D\u7F9A\u7FA3\u7FAF\u7FB2\u7FB9\u7FAE\u7FB6\u7FB8\u8B71\u7FC5\u7FC6\u7FCA\u7FD5\u7FD4\u7FE1\u7FE6\u7FE9\u7FF3\u7FF9\u98DC\u8006\u8004\u800B\u8012\u8018\u8019\u801C\u8021\u8028\u803F\u803B\u804A\u8046\u8052\u8058\u805A\u805F\u8062\u8068\u8073\u8072\u8070\u8076\u8079\u807D\u807F\u8084\u8086\u8085\u809B\u8093\u809A\u80AD\u5190\u80AC\u80DB\u80E5\u80D9\u80DD\u80C4\u80DA\u80D6\u8109\u80EF\u80F1\u811B\u8129\u8123\u812F\u814B"], + ["e7a1", "\u968B\u8146\u813E\u8153\u8151\u80FC\u8171\u816E\u8165\u8166\u8174\u8183\u8188\u818A\u8180\u8182\u81A0\u8195\u81A4\u81A3\u815F\u8193\u81A9\u81B0\u81B5\u81BE\u81B8\u81BD\u81C0\u81C2\u81BA\u81C9\u81CD\u81D1\u81D9\u81D8\u81C8\u81DA\u81DF\u81E0\u81E7\u81FA\u81FB\u81FE\u8201\u8202\u8205\u8207\u820A\u820D\u8210\u8216\u8229\u822B\u8238\u8233\u8240\u8259\u8258\u825D\u825A\u825F\u8264\u8262\u8268\u826A\u826B\u822E\u8271\u8277\u8278\u827E\u828D\u8292\u82AB\u829F\u82BB\u82AC\u82E1\u82E3\u82DF\u82D2\u82F4\u82F3\u82FA\u8393\u8303\u82FB\u82F9\u82DE\u8306\u82DC\u8309\u82D9"], + ["e8a1", "\u8335\u8334\u8316\u8332\u8331\u8340\u8339\u8350\u8345\u832F\u832B\u8317\u8318\u8385\u839A\u83AA\u839F\u83A2\u8396\u8323\u838E\u8387\u838A\u837C\u83B5\u8373\u8375\u83A0\u8389\u83A8\u83F4\u8413\u83EB\u83CE\u83FD\u8403\u83D8\u840B\u83C1\u83F7\u8407\u83E0\u83F2\u840D\u8422\u8420\u83BD\u8438\u8506\u83FB\u846D\u842A\u843C\u855A\u8484\u8477\u846B\u84AD\u846E\u8482\u8469\u8446\u842C\u846F\u8479\u8435\u84CA\u8462\u84B9\u84BF\u849F\u84D9\u84CD\u84BB\u84DA\u84D0\u84C1\u84C6\u84D6\u84A1\u8521\u84FF\u84F4\u8517\u8518\u852C\u851F\u8515\u8514\u84FC\u8540\u8563\u8558\u8548"], + ["e9a1", "\u8541\u8602\u854B\u8555\u8580\u85A4\u8588\u8591\u858A\u85A8\u856D\u8594\u859B\u85EA\u8587\u859C\u8577\u857E\u8590\u85C9\u85BA\u85CF\u85B9\u85D0\u85D5\u85DD\u85E5\u85DC\u85F9\u860A\u8613\u860B\u85FE\u85FA\u8606\u8622\u861A\u8630\u863F\u864D\u4E55\u8654\u865F\u8667\u8671\u8693\u86A3\u86A9\u86AA\u868B\u868C\u86B6\u86AF\u86C4\u86C6\u86B0\u86C9\u8823\u86AB\u86D4\u86DE\u86E9\u86EC\u86DF\u86DB\u86EF\u8712\u8706\u8708\u8700\u8703\u86FB\u8711\u8709\u870D\u86F9\u870A\u8734\u873F\u8737\u873B\u8725\u8729\u871A\u8760\u875F\u8778\u874C\u874E\u8774\u8757\u8768\u876E\u8759"], + ["eaa1", "\u8753\u8763\u876A\u8805\u87A2\u879F\u8782\u87AF\u87CB\u87BD\u87C0\u87D0\u96D6\u87AB\u87C4\u87B3\u87C7\u87C6\u87BB\u87EF\u87F2\u87E0\u880F\u880D\u87FE\u87F6\u87F7\u880E\u87D2\u8811\u8816\u8815\u8822\u8821\u8831\u8836\u8839\u8827\u883B\u8844\u8842\u8852\u8859\u885E\u8862\u886B\u8881\u887E\u889E\u8875\u887D\u88B5\u8872\u8882\u8897\u8892\u88AE\u8899\u88A2\u888D\u88A4\u88B0\u88BF\u88B1\u88C3\u88C4\u88D4\u88D8\u88D9\u88DD\u88F9\u8902\u88FC\u88F4\u88E8\u88F2\u8904\u890C\u890A\u8913\u8943\u891E\u8925\u892A\u892B\u8941\u8944\u893B\u8936\u8938\u894C\u891D\u8960\u895E"], + ["eba1", "\u8966\u8964\u896D\u896A\u896F\u8974\u8977\u897E\u8983\u8988\u898A\u8993\u8998\u89A1\u89A9\u89A6\u89AC\u89AF\u89B2\u89BA\u89BD\u89BF\u89C0\u89DA\u89DC\u89DD\u89E7\u89F4\u89F8\u8A03\u8A16\u8A10\u8A0C\u8A1B\u8A1D\u8A25\u8A36\u8A41\u8A5B\u8A52\u8A46\u8A48\u8A7C\u8A6D\u8A6C\u8A62\u8A85\u8A82\u8A84\u8AA8\u8AA1\u8A91\u8AA5\u8AA6\u8A9A\u8AA3\u8AC4\u8ACD\u8AC2\u8ADA\u8AEB\u8AF3\u8AE7\u8AE4\u8AF1\u8B14\u8AE0\u8AE2\u8AF7\u8ADE\u8ADB\u8B0C\u8B07\u8B1A\u8AE1\u8B16\u8B10\u8B17\u8B20\u8B33\u97AB\u8B26\u8B2B\u8B3E\u8B28\u8B41\u8B4C\u8B4F\u8B4E\u8B49\u8B56\u8B5B\u8B5A\u8B6B"], + ["eca1", "\u8B5F\u8B6C\u8B6F\u8B74\u8B7D\u8B80\u8B8C\u8B8E\u8B92\u8B93\u8B96\u8B99\u8B9A\u8C3A\u8C41\u8C3F\u8C48\u8C4C\u8C4E\u8C50\u8C55\u8C62\u8C6C\u8C78\u8C7A\u8C82\u8C89\u8C85\u8C8A\u8C8D\u8C8E\u8C94\u8C7C\u8C98\u621D\u8CAD\u8CAA\u8CBD\u8CB2\u8CB3\u8CAE\u8CB6\u8CC8\u8CC1\u8CE4\u8CE3\u8CDA\u8CFD\u8CFA\u8CFB\u8D04\u8D05\u8D0A\u8D07\u8D0F\u8D0D\u8D10\u9F4E\u8D13\u8CCD\u8D14\u8D16\u8D67\u8D6D\u8D71\u8D73\u8D81\u8D99\u8DC2\u8DBE\u8DBA\u8DCF\u8DDA\u8DD6\u8DCC\u8DDB\u8DCB\u8DEA\u8DEB\u8DDF\u8DE3\u8DFC\u8E08\u8E09\u8DFF\u8E1D\u8E1E\u8E10\u8E1F\u8E42\u8E35\u8E30\u8E34\u8E4A"], + ["eda1", "\u8E47\u8E49\u8E4C\u8E50\u8E48\u8E59\u8E64\u8E60\u8E2A\u8E63\u8E55\u8E76\u8E72\u8E7C\u8E81\u8E87\u8E85\u8E84\u8E8B\u8E8A\u8E93\u8E91\u8E94\u8E99\u8EAA\u8EA1\u8EAC\u8EB0\u8EC6\u8EB1\u8EBE\u8EC5\u8EC8\u8ECB\u8EDB\u8EE3\u8EFC\u8EFB\u8EEB\u8EFE\u8F0A\u8F05\u8F15\u8F12\u8F19\u8F13\u8F1C\u8F1F\u8F1B\u8F0C\u8F26\u8F33\u8F3B\u8F39\u8F45\u8F42\u8F3E\u8F4C\u8F49\u8F46\u8F4E\u8F57\u8F5C\u8F62\u8F63\u8F64\u8F9C\u8F9F\u8FA3\u8FAD\u8FAF\u8FB7\u8FDA\u8FE5\u8FE2\u8FEA\u8FEF\u9087\u8FF4\u9005\u8FF9\u8FFA\u9011\u9015\u9021\u900D\u901E\u9016\u900B\u9027\u9036\u9035\u9039\u8FF8"], + ["eea1", "\u904F\u9050\u9051\u9052\u900E\u9049\u903E\u9056\u9058\u905E\u9068\u906F\u9076\u96A8\u9072\u9082\u907D\u9081\u9080\u908A\u9089\u908F\u90A8\u90AF\u90B1\u90B5\u90E2\u90E4\u6248\u90DB\u9102\u9112\u9119\u9132\u9130\u914A\u9156\u9158\u9163\u9165\u9169\u9173\u9172\u918B\u9189\u9182\u91A2\u91AB\u91AF\u91AA\u91B5\u91B4\u91BA\u91C0\u91C1\u91C9\u91CB\u91D0\u91D6\u91DF\u91E1\u91DB\u91FC\u91F5\u91F6\u921E\u91FF\u9214\u922C\u9215\u9211\u925E\u9257\u9245\u9249\u9264\u9248\u9295\u923F\u924B\u9250\u929C\u9296\u9293\u929B\u925A\u92CF\u92B9\u92B7\u92E9\u930F\u92FA\u9344\u932E"], + ["efa1", "\u9319\u9322\u931A\u9323\u933A\u9335\u933B\u935C\u9360\u937C\u936E\u9356\u93B0\u93AC\u93AD\u9394\u93B9\u93D6\u93D7\u93E8\u93E5\u93D8\u93C3\u93DD\u93D0\u93C8\u93E4\u941A\u9414\u9413\u9403\u9407\u9410\u9436\u942B\u9435\u9421\u943A\u9441\u9452\u9444\u945B\u9460\u9462\u945E\u946A\u9229\u9470\u9475\u9477\u947D\u945A\u947C\u947E\u9481\u947F\u9582\u9587\u958A\u9594\u9596\u9598\u9599\u95A0\u95A8\u95A7\u95AD\u95BC\u95BB\u95B9\u95BE\u95CA\u6FF6\u95C3\u95CD\u95CC\u95D5\u95D4\u95D6\u95DC\u95E1\u95E5\u95E2\u9621\u9628\u962E\u962F\u9642\u964C\u964F\u964B\u9677\u965C\u965E"], + ["f0a1", "\u965D\u965F\u9666\u9672\u966C\u968D\u9698\u9695\u9697\u96AA\u96A7\u96B1\u96B2\u96B0\u96B4\u96B6\u96B8\u96B9\u96CE\u96CB\u96C9\u96CD\u894D\u96DC\u970D\u96D5\u96F9\u9704\u9706\u9708\u9713\u970E\u9711\u970F\u9716\u9719\u9724\u972A\u9730\u9739\u973D\u973E\u9744\u9746\u9748\u9742\u9749\u975C\u9760\u9764\u9766\u9768\u52D2\u976B\u9771\u9779\u9785\u977C\u9781\u977A\u9786\u978B\u978F\u9790\u979C\u97A8\u97A6\u97A3\u97B3\u97B4\u97C3\u97C6\u97C8\u97CB\u97DC\u97ED\u9F4F\u97F2\u7ADF\u97F6\u97F5\u980F\u980C\u9838\u9824\u9821\u9837\u983D\u9846\u984F\u984B\u986B\u986F\u9870"], + ["f1a1", "\u9871\u9874\u9873\u98AA\u98AF\u98B1\u98B6\u98C4\u98C3\u98C6\u98E9\u98EB\u9903\u9909\u9912\u9914\u9918\u9921\u991D\u991E\u9924\u9920\u992C\u992E\u993D\u993E\u9942\u9949\u9945\u9950\u994B\u9951\u9952\u994C\u9955\u9997\u9998\u99A5\u99AD\u99AE\u99BC\u99DF\u99DB\u99DD\u99D8\u99D1\u99ED\u99EE\u99F1\u99F2\u99FB\u99F8\u9A01\u9A0F\u9A05\u99E2\u9A19\u9A2B\u9A37\u9A45\u9A42\u9A40\u9A43\u9A3E\u9A55\u9A4D\u9A5B\u9A57\u9A5F\u9A62\u9A65\u9A64\u9A69\u9A6B\u9A6A\u9AAD\u9AB0\u9ABC\u9AC0\u9ACF\u9AD1\u9AD3\u9AD4\u9ADE\u9ADF\u9AE2\u9AE3\u9AE6\u9AEF\u9AEB\u9AEE\u9AF4\u9AF1\u9AF7"], + ["f2a1", "\u9AFB\u9B06\u9B18\u9B1A\u9B1F\u9B22\u9B23\u9B25\u9B27\u9B28\u9B29\u9B2A\u9B2E\u9B2F\u9B32\u9B44\u9B43\u9B4F\u9B4D\u9B4E\u9B51\u9B58\u9B74\u9B93\u9B83\u9B91\u9B96\u9B97\u9B9F\u9BA0\u9BA8\u9BB4\u9BC0\u9BCA\u9BB9\u9BC6\u9BCF\u9BD1\u9BD2\u9BE3\u9BE2\u9BE4\u9BD4\u9BE1\u9C3A\u9BF2\u9BF1\u9BF0\u9C15\u9C14\u9C09\u9C13\u9C0C\u9C06\u9C08\u9C12\u9C0A\u9C04\u9C2E\u9C1B\u9C25\u9C24\u9C21\u9C30\u9C47\u9C32\u9C46\u9C3E\u9C5A\u9C60\u9C67\u9C76\u9C78\u9CE7\u9CEC\u9CF0\u9D09\u9D08\u9CEB\u9D03\u9D06\u9D2A\u9D26\u9DAF\u9D23\u9D1F\u9D44\u9D15\u9D12\u9D41\u9D3F\u9D3E\u9D46\u9D48"], + ["f3a1", "\u9D5D\u9D5E\u9D64\u9D51\u9D50\u9D59\u9D72\u9D89\u9D87\u9DAB\u9D6F\u9D7A\u9D9A\u9DA4\u9DA9\u9DB2\u9DC4\u9DC1\u9DBB\u9DB8\u9DBA\u9DC6\u9DCF\u9DC2\u9DD9\u9DD3\u9DF8\u9DE6\u9DED\u9DEF\u9DFD\u9E1A\u9E1B\u9E1E\u9E75\u9E79\u9E7D\u9E81\u9E88\u9E8B\u9E8C\u9E92\u9E95\u9E91\u9E9D\u9EA5\u9EA9\u9EB8\u9EAA\u9EAD\u9761\u9ECC\u9ECE\u9ECF\u9ED0\u9ED4\u9EDC\u9EDE\u9EDD\u9EE0\u9EE5\u9EE8\u9EEF\u9EF4\u9EF6\u9EF7\u9EF9\u9EFB\u9EFC\u9EFD\u9F07\u9F08\u76B7\u9F15\u9F21\u9F2C\u9F3E\u9F4A\u9F52\u9F54\u9F63\u9F5F\u9F60\u9F61\u9F66\u9F67\u9F6C\u9F6A\u9F77\u9F72\u9F76\u9F95\u9F9C\u9FA0"], + ["f4a1", "\u582F\u69C7\u9059\u7464\u51DC\u7199"], + ["f9a1", "\u7E8A\u891C\u9348\u9288\u84DC\u4FC9\u70BB\u6631\u68C8\u92F9\u66FB\u5F45\u4E28\u4EE1\u4EFC\u4F00\u4F03\u4F39\u4F56\u4F92\u4F8A\u4F9A\u4F94\u4FCD\u5040\u5022\u4FFF\u501E\u5046\u5070\u5042\u5094\u50F4\u50D8\u514A\u5164\u519D\u51BE\u51EC\u5215\u529C\u52A6\u52C0\u52DB\u5300\u5307\u5324\u5372\u5393\u53B2\u53DD\uFA0E\u549C\u548A\u54A9\u54FF\u5586\u5759\u5765\u57AC\u57C8\u57C7\uFA0F\uFA10\u589E\u58B2\u590B\u5953\u595B\u595D\u5963\u59A4\u59BA\u5B56\u5BC0\u752F\u5BD8\u5BEC\u5C1E\u5CA6\u5CBA\u5CF5\u5D27\u5D53\uFA11\u5D42\u5D6D\u5DB8\u5DB9\u5DD0\u5F21\u5F34\u5F67\u5FB7"], + ["faa1", "\u5FDE\u605D\u6085\u608A\u60DE\u60D5\u6120\u60F2\u6111\u6137\u6130\u6198\u6213\u62A6\u63F5\u6460\u649D\u64CE\u654E\u6600\u6615\u663B\u6609\u662E\u661E\u6624\u6665\u6657\u6659\uFA12\u6673\u6699\u66A0\u66B2\u66BF\u66FA\u670E\uF929\u6766\u67BB\u6852\u67C0\u6801\u6844\u68CF\uFA13\u6968\uFA14\u6998\u69E2\u6A30\u6A6B\u6A46\u6A73\u6A7E\u6AE2\u6AE4\u6BD6\u6C3F\u6C5C\u6C86\u6C6F\u6CDA\u6D04\u6D87\u6D6F\u6D96\u6DAC\u6DCF\u6DF8\u6DF2\u6DFC\u6E39\u6E5C\u6E27\u6E3C\u6EBF\u6F88\u6FB5\u6FF5\u7005\u7007\u7028\u7085\u70AB\u710F\u7104\u715C\u7146\u7147\uFA15\u71C1\u71FE\u72B1"], + ["fba1", "\u72BE\u7324\uFA16\u7377\u73BD\u73C9\u73D6\u73E3\u73D2\u7407\u73F5\u7426\u742A\u7429\u742E\u7462\u7489\u749F\u7501\u756F\u7682\u769C\u769E\u769B\u76A6\uFA17\u7746\u52AF\u7821\u784E\u7864\u787A\u7930\uFA18\uFA19\uFA1A\u7994\uFA1B\u799B\u7AD1\u7AE7\uFA1C\u7AEB\u7B9E\uFA1D\u7D48\u7D5C\u7DB7\u7DA0\u7DD6\u7E52\u7F47\u7FA1\uFA1E\u8301\u8362\u837F\u83C7\u83F6\u8448\u84B4\u8553\u8559\u856B\uFA1F\u85B0\uFA20\uFA21\u8807\u88F5\u8A12\u8A37\u8A79\u8AA7\u8ABE\u8ADF\uFA22\u8AF6\u8B53\u8B7F\u8CF0\u8CF4\u8D12\u8D76\uFA23\u8ECF\uFA24\uFA25\u9067\u90DE\uFA26\u9115\u9127\u91DA"], + ["fca1", "\u91D7\u91DE\u91ED\u91EE\u91E4\u91E5\u9206\u9210\u920A\u923A\u9240\u923C\u924E\u9259\u9251\u9239\u9267\u92A7\u9277\u9278\u92E7\u92D7\u92D9\u92D0\uFA27\u92D5\u92E0\u92D3\u9325\u9321\u92FB\uFA28\u931E\u92FF\u931D\u9302\u9370\u9357\u93A4\u93C6\u93DE\u93F8\u9431\u9445\u9448\u9592\uF9DC\uFA29\u969D\u96AF\u9733\u973B\u9743\u974D\u974F\u9751\u9755\u9857\u9865\uFA2A\uFA2B\u9927\uFA2C\u999E\u9A4E\u9AD9\u9ADC\u9B75\u9B72\u9B8F\u9BB1\u9BBB\u9C00\u9D70\u9D6B\uFA2D\u9E19\u9ED1"], + ["fcf1", "\u2170", 9, "\uFFE2\uFFE4\uFF07\uFF02"], + ["8fa2af", "\u02D8\u02C7\xB8\u02D9\u02DD\xAF\u02DB\u02DA\uFF5E\u0384\u0385"], + ["8fa2c2", "\xA1\xA6\xBF"], + ["8fa2eb", "\xBA\xAA\xA9\xAE\u2122\xA4\u2116"], + ["8fa6e1", "\u0386\u0388\u0389\u038A\u03AA"], + ["8fa6e7", "\u038C"], + ["8fa6e9", "\u038E\u03AB"], + ["8fa6ec", "\u038F"], + ["8fa6f1", "\u03AC\u03AD\u03AE\u03AF\u03CA\u0390\u03CC\u03C2\u03CD\u03CB\u03B0\u03CE"], + ["8fa7c2", "\u0402", 10, "\u040E\u040F"], + ["8fa7f2", "\u0452", 10, "\u045E\u045F"], + ["8fa9a1", "\xC6\u0110"], + ["8fa9a4", "\u0126"], + ["8fa9a6", "\u0132"], + ["8fa9a8", "\u0141\u013F"], + ["8fa9ab", "\u014A\xD8\u0152"], + ["8fa9af", "\u0166\xDE"], + ["8fa9c1", "\xE6\u0111\xF0\u0127\u0131\u0133\u0138\u0142\u0140\u0149\u014B\xF8\u0153\xDF\u0167\xFE"], + ["8faaa1", "\xC1\xC0\xC4\xC2\u0102\u01CD\u0100\u0104\xC5\xC3\u0106\u0108\u010C\xC7\u010A\u010E\xC9\xC8\xCB\xCA\u011A\u0116\u0112\u0118"], + ["8faaba", "\u011C\u011E\u0122\u0120\u0124\xCD\xCC\xCF\xCE\u01CF\u0130\u012A\u012E\u0128\u0134\u0136\u0139\u013D\u013B\u0143\u0147\u0145\xD1\xD3\xD2\xD6\xD4\u01D1\u0150\u014C\xD5\u0154\u0158\u0156\u015A\u015C\u0160\u015E\u0164\u0162\xDA\xD9\xDC\xDB\u016C\u01D3\u0170\u016A\u0172\u016E\u0168\u01D7\u01DB\u01D9\u01D5\u0174\xDD\u0178\u0176\u0179\u017D\u017B"], + ["8faba1", "\xE1\xE0\xE4\xE2\u0103\u01CE\u0101\u0105\xE5\xE3\u0107\u0109\u010D\xE7\u010B\u010F\xE9\xE8\xEB\xEA\u011B\u0117\u0113\u0119\u01F5\u011D\u011F"], + ["8fabbd", "\u0121\u0125\xED\xEC\xEF\xEE\u01D0"], + ["8fabc5", "\u012B\u012F\u0129\u0135\u0137\u013A\u013E\u013C\u0144\u0148\u0146\xF1\xF3\xF2\xF6\xF4\u01D2\u0151\u014D\xF5\u0155\u0159\u0157\u015B\u015D\u0161\u015F\u0165\u0163\xFA\xF9\xFC\xFB\u016D\u01D4\u0171\u016B\u0173\u016F\u0169\u01D8\u01DC\u01DA\u01D6\u0175\xFD\xFF\u0177\u017A\u017E\u017C"], + ["8fb0a1", "\u4E02\u4E04\u4E05\u4E0C\u4E12\u4E1F\u4E23\u4E24\u4E28\u4E2B\u4E2E\u4E2F\u4E30\u4E35\u4E40\u4E41\u4E44\u4E47\u4E51\u4E5A\u4E5C\u4E63\u4E68\u4E69\u4E74\u4E75\u4E79\u4E7F\u4E8D\u4E96\u4E97\u4E9D\u4EAF\u4EB9\u4EC3\u4ED0\u4EDA\u4EDB\u4EE0\u4EE1\u4EE2\u4EE8\u4EEF\u4EF1\u4EF3\u4EF5\u4EFD\u4EFE\u4EFF\u4F00\u4F02\u4F03\u4F08\u4F0B\u4F0C\u4F12\u4F15\u4F16\u4F17\u4F19\u4F2E\u4F31\u4F60\u4F33\u4F35\u4F37\u4F39\u4F3B\u4F3E\u4F40\u4F42\u4F48\u4F49\u4F4B\u4F4C\u4F52\u4F54\u4F56\u4F58\u4F5F\u4F63\u4F6A\u4F6C\u4F6E\u4F71\u4F77\u4F78\u4F79\u4F7A\u4F7D\u4F7E\u4F81\u4F82\u4F84"], + ["8fb1a1", "\u4F85\u4F89\u4F8A\u4F8C\u4F8E\u4F90\u4F92\u4F93\u4F94\u4F97\u4F99\u4F9A\u4F9E\u4F9F\u4FB2\u4FB7\u4FB9\u4FBB\u4FBC\u4FBD\u4FBE\u4FC0\u4FC1\u4FC5\u4FC6\u4FC8\u4FC9\u4FCB\u4FCC\u4FCD\u4FCF\u4FD2\u4FDC\u4FE0\u4FE2\u4FF0\u4FF2\u4FFC\u4FFD\u4FFF\u5000\u5001\u5004\u5007\u500A\u500C\u500E\u5010\u5013\u5017\u5018\u501B\u501C\u501D\u501E\u5022\u5027\u502E\u5030\u5032\u5033\u5035\u5040\u5041\u5042\u5045\u5046\u504A\u504C\u504E\u5051\u5052\u5053\u5057\u5059\u505F\u5060\u5062\u5063\u5066\u5067\u506A\u506D\u5070\u5071\u503B\u5081\u5083\u5084\u5086\u508A\u508E\u508F\u5090"], + ["8fb2a1", "\u5092\u5093\u5094\u5096\u509B\u509C\u509E", 4, "\u50AA\u50AF\u50B0\u50B9\u50BA\u50BD\u50C0\u50C3\u50C4\u50C7\u50CC\u50CE\u50D0\u50D3\u50D4\u50D8\u50DC\u50DD\u50DF\u50E2\u50E4\u50E6\u50E8\u50E9\u50EF\u50F1\u50F6\u50FA\u50FE\u5103\u5106\u5107\u5108\u510B\u510C\u510D\u510E\u50F2\u5110\u5117\u5119\u511B\u511C\u511D\u511E\u5123\u5127\u5128\u512C\u512D\u512F\u5131\u5133\u5134\u5135\u5138\u5139\u5142\u514A\u514F\u5153\u5155\u5157\u5158\u515F\u5164\u5166\u517E\u5183\u5184\u518B\u518E\u5198\u519D\u51A1\u51A3\u51AD\u51B8\u51BA\u51BC\u51BE\u51BF\u51C2"], + ["8fb3a1", "\u51C8\u51CF\u51D1\u51D2\u51D3\u51D5\u51D8\u51DE\u51E2\u51E5\u51EE\u51F2\u51F3\u51F4\u51F7\u5201\u5202\u5205\u5212\u5213\u5215\u5216\u5218\u5222\u5228\u5231\u5232\u5235\u523C\u5245\u5249\u5255\u5257\u5258\u525A\u525C\u525F\u5260\u5261\u5266\u526E\u5277\u5278\u5279\u5280\u5282\u5285\u528A\u528C\u5293\u5295\u5296\u5297\u5298\u529A\u529C\u52A4\u52A5\u52A6\u52A7\u52AF\u52B0\u52B6\u52B7\u52B8\u52BA\u52BB\u52BD\u52C0\u52C4\u52C6\u52C8\u52CC\u52CF\u52D1\u52D4\u52D6\u52DB\u52DC\u52E1\u52E5\u52E8\u52E9\u52EA\u52EC\u52F0\u52F1\u52F4\u52F6\u52F7\u5300\u5303\u530A\u530B"], + ["8fb4a1", "\u530C\u5311\u5313\u5318\u531B\u531C\u531E\u531F\u5325\u5327\u5328\u5329\u532B\u532C\u532D\u5330\u5332\u5335\u533C\u533D\u533E\u5342\u534C\u534B\u5359\u535B\u5361\u5363\u5365\u536C\u536D\u5372\u5379\u537E\u5383\u5387\u5388\u538E\u5393\u5394\u5399\u539D\u53A1\u53A4\u53AA\u53AB\u53AF\u53B2\u53B4\u53B5\u53B7\u53B8\u53BA\u53BD\u53C0\u53C5\u53CF\u53D2\u53D3\u53D5\u53DA\u53DD\u53DE\u53E0\u53E6\u53E7\u53F5\u5402\u5413\u541A\u5421\u5427\u5428\u542A\u542F\u5431\u5434\u5435\u5443\u5444\u5447\u544D\u544F\u545E\u5462\u5464\u5466\u5467\u5469\u546B\u546D\u546E\u5474\u547F"], + ["8fb5a1", "\u5481\u5483\u5485\u5488\u5489\u548D\u5491\u5495\u5496\u549C\u549F\u54A1\u54A6\u54A7\u54A9\u54AA\u54AD\u54AE\u54B1\u54B7\u54B9\u54BA\u54BB\u54BF\u54C6\u54CA\u54CD\u54CE\u54E0\u54EA\u54EC\u54EF\u54F6\u54FC\u54FE\u54FF\u5500\u5501\u5505\u5508\u5509\u550C\u550D\u550E\u5515\u552A\u552B\u5532\u5535\u5536\u553B\u553C\u553D\u5541\u5547\u5549\u554A\u554D\u5550\u5551\u5558\u555A\u555B\u555E\u5560\u5561\u5564\u5566\u557F\u5581\u5582\u5586\u5588\u558E\u558F\u5591\u5592\u5593\u5594\u5597\u55A3\u55A4\u55AD\u55B2\u55BF\u55C1\u55C3\u55C6\u55C9\u55CB\u55CC\u55CE\u55D1\u55D2"], + ["8fb6a1", "\u55D3\u55D7\u55D8\u55DB\u55DE\u55E2\u55E9\u55F6\u55FF\u5605\u5608\u560A\u560D", 5, "\u5619\u562C\u5630\u5633\u5635\u5637\u5639\u563B\u563C\u563D\u563F\u5640\u5641\u5643\u5644\u5646\u5649\u564B\u564D\u564F\u5654\u565E\u5660\u5661\u5662\u5663\u5666\u5669\u566D\u566F\u5671\u5672\u5675\u5684\u5685\u5688\u568B\u568C\u5695\u5699\u569A\u569D\u569E\u569F\u56A6\u56A7\u56A8\u56A9\u56AB\u56AC\u56AD\u56B1\u56B3\u56B7\u56BE\u56C5\u56C9\u56CA\u56CB\u56CF\u56D0\u56CC\u56CD\u56D9\u56DC\u56DD\u56DF\u56E1\u56E4", 4, "\u56F1\u56EB\u56ED"], + ["8fb7a1", "\u56F6\u56F7\u5701\u5702\u5707\u570A\u570C\u5711\u5715\u571A\u571B\u571D\u5720\u5722\u5723\u5724\u5725\u5729\u572A\u572C\u572E\u572F\u5733\u5734\u573D\u573E\u573F\u5745\u5746\u574C\u574D\u5752\u5762\u5765\u5767\u5768\u576B\u576D", 4, "\u5773\u5774\u5775\u5777\u5779\u577A\u577B\u577C\u577E\u5781\u5783\u578C\u5794\u5797\u5799\u579A\u579C\u579D\u579E\u579F\u57A1\u5795\u57A7\u57A8\u57A9\u57AC\u57B8\u57BD\u57C7\u57C8\u57CC\u57CF\u57D5\u57DD\u57DE\u57E4\u57E6\u57E7\u57E9\u57ED\u57F0\u57F5\u57F6\u57F8\u57FD\u57FE\u57FF\u5803\u5804\u5808\u5809\u57E1"], + ["8fb8a1", "\u580C\u580D\u581B\u581E\u581F\u5820\u5826\u5827\u582D\u5832\u5839\u583F\u5849\u584C\u584D\u584F\u5850\u5855\u585F\u5861\u5864\u5867\u5868\u5878\u587C\u587F\u5880\u5881\u5887\u5888\u5889\u588A\u588C\u588D\u588F\u5890\u5894\u5896\u589D\u58A0\u58A1\u58A2\u58A6\u58A9\u58B1\u58B2\u58C4\u58BC\u58C2\u58C8\u58CD\u58CE\u58D0\u58D2\u58D4\u58D6\u58DA\u58DD\u58E1\u58E2\u58E9\u58F3\u5905\u5906\u590B\u590C\u5912\u5913\u5914\u8641\u591D\u5921\u5923\u5924\u5928\u592F\u5930\u5933\u5935\u5936\u593F\u5943\u5946\u5952\u5953\u5959\u595B\u595D\u595E\u595F\u5961\u5963\u596B\u596D"], + ["8fb9a1", "\u596F\u5972\u5975\u5976\u5979\u597B\u597C\u598B\u598C\u598E\u5992\u5995\u5997\u599F\u59A4\u59A7\u59AD\u59AE\u59AF\u59B0\u59B3\u59B7\u59BA\u59BC\u59C1\u59C3\u59C4\u59C8\u59CA\u59CD\u59D2\u59DD\u59DE\u59DF\u59E3\u59E4\u59E7\u59EE\u59EF\u59F1\u59F2\u59F4\u59F7\u5A00\u5A04\u5A0C\u5A0D\u5A0E\u5A12\u5A13\u5A1E\u5A23\u5A24\u5A27\u5A28\u5A2A\u5A2D\u5A30\u5A44\u5A45\u5A47\u5A48\u5A4C\u5A50\u5A55\u5A5E\u5A63\u5A65\u5A67\u5A6D\u5A77\u5A7A\u5A7B\u5A7E\u5A8B\u5A90\u5A93\u5A96\u5A99\u5A9C\u5A9E\u5A9F\u5AA0\u5AA2\u5AA7\u5AAC\u5AB1\u5AB2\u5AB3\u5AB5\u5AB8\u5ABA\u5ABB\u5ABF"], + ["8fbaa1", "\u5AC4\u5AC6\u5AC8\u5ACF\u5ADA\u5ADC\u5AE0\u5AE5\u5AEA\u5AEE\u5AF5\u5AF6\u5AFD\u5B00\u5B01\u5B08\u5B17\u5B34\u5B19\u5B1B\u5B1D\u5B21\u5B25\u5B2D\u5B38\u5B41\u5B4B\u5B4C\u5B52\u5B56\u5B5E\u5B68\u5B6E\u5B6F\u5B7C\u5B7D\u5B7E\u5B7F\u5B81\u5B84\u5B86\u5B8A\u5B8E\u5B90\u5B91\u5B93\u5B94\u5B96\u5BA8\u5BA9\u5BAC\u5BAD\u5BAF\u5BB1\u5BB2\u5BB7\u5BBA\u5BBC\u5BC0\u5BC1\u5BCD\u5BCF\u5BD6", 4, "\u5BE0\u5BEF\u5BF1\u5BF4\u5BFD\u5C0C\u5C17\u5C1E\u5C1F\u5C23\u5C26\u5C29\u5C2B\u5C2C\u5C2E\u5C30\u5C32\u5C35\u5C36\u5C59\u5C5A\u5C5C\u5C62\u5C63\u5C67\u5C68\u5C69"], + ["8fbba1", "\u5C6D\u5C70\u5C74\u5C75\u5C7A\u5C7B\u5C7C\u5C7D\u5C87\u5C88\u5C8A\u5C8F\u5C92\u5C9D\u5C9F\u5CA0\u5CA2\u5CA3\u5CA6\u5CAA\u5CB2\u5CB4\u5CB5\u5CBA\u5CC9\u5CCB\u5CD2\u5CDD\u5CD7\u5CEE\u5CF1\u5CF2\u5CF4\u5D01\u5D06\u5D0D\u5D12\u5D2B\u5D23\u5D24\u5D26\u5D27\u5D31\u5D34\u5D39\u5D3D\u5D3F\u5D42\u5D43\u5D46\u5D48\u5D55\u5D51\u5D59\u5D4A\u5D5F\u5D60\u5D61\u5D62\u5D64\u5D6A\u5D6D\u5D70\u5D79\u5D7A\u5D7E\u5D7F\u5D81\u5D83\u5D88\u5D8A\u5D92\u5D93\u5D94\u5D95\u5D99\u5D9B\u5D9F\u5DA0\u5DA7\u5DAB\u5DB0\u5DB4\u5DB8\u5DB9\u5DC3\u5DC7\u5DCB\u5DD0\u5DCE\u5DD8\u5DD9\u5DE0\u5DE4"], + ["8fbca1", "\u5DE9\u5DF8\u5DF9\u5E00\u5E07\u5E0D\u5E12\u5E14\u5E15\u5E18\u5E1F\u5E20\u5E2E\u5E28\u5E32\u5E35\u5E3E\u5E4B\u5E50\u5E49\u5E51\u5E56\u5E58\u5E5B\u5E5C\u5E5E\u5E68\u5E6A", 4, "\u5E70\u5E80\u5E8B\u5E8E\u5EA2\u5EA4\u5EA5\u5EA8\u5EAA\u5EAC\u5EB1\u5EB3\u5EBD\u5EBE\u5EBF\u5EC6\u5ECC\u5ECB\u5ECE\u5ED1\u5ED2\u5ED4\u5ED5\u5EDC\u5EDE\u5EE5\u5EEB\u5F02\u5F06\u5F07\u5F08\u5F0E\u5F19\u5F1C\u5F1D\u5F21\u5F22\u5F23\u5F24\u5F28\u5F2B\u5F2C\u5F2E\u5F30\u5F34\u5F36\u5F3B\u5F3D\u5F3F\u5F40\u5F44\u5F45\u5F47\u5F4D\u5F50\u5F54\u5F58\u5F5B\u5F60\u5F63\u5F64\u5F67"], + ["8fbda1", "\u5F6F\u5F72\u5F74\u5F75\u5F78\u5F7A\u5F7D\u5F7E\u5F89\u5F8D\u5F8F\u5F96\u5F9C\u5F9D\u5FA2\u5FA7\u5FAB\u5FA4\u5FAC\u5FAF\u5FB0\u5FB1\u5FB8\u5FC4\u5FC7\u5FC8\u5FC9\u5FCB\u5FD0", 4, "\u5FDE\u5FE1\u5FE2\u5FE8\u5FE9\u5FEA\u5FEC\u5FED\u5FEE\u5FEF\u5FF2\u5FF3\u5FF6\u5FFA\u5FFC\u6007\u600A\u600D\u6013\u6014\u6017\u6018\u601A\u601F\u6024\u602D\u6033\u6035\u6040\u6047\u6048\u6049\u604C\u6051\u6054\u6056\u6057\u605D\u6061\u6067\u6071\u607E\u607F\u6082\u6086\u6088\u608A\u608E\u6091\u6093\u6095\u6098\u609D\u609E\u60A2\u60A4\u60A5\u60A8\u60B0\u60B1\u60B7"], + ["8fbea1", "\u60BB\u60BE\u60C2\u60C4\u60C8\u60C9\u60CA\u60CB\u60CE\u60CF\u60D4\u60D5\u60D9\u60DB\u60DD\u60DE\u60E2\u60E5\u60F2\u60F5\u60F8\u60FC\u60FD\u6102\u6107\u610A\u610C\u6110", 4, "\u6116\u6117\u6119\u611C\u611E\u6122\u612A\u612B\u6130\u6131\u6135\u6136\u6137\u6139\u6141\u6145\u6146\u6149\u615E\u6160\u616C\u6172\u6178\u617B\u617C\u617F\u6180\u6181\u6183\u6184\u618B\u618D\u6192\u6193\u6197\u6198\u619C\u619D\u619F\u61A0\u61A5\u61A8\u61AA\u61AD\u61B8\u61B9\u61BC\u61C0\u61C1\u61C2\u61CE\u61CF\u61D5\u61DC\u61DD\u61DE\u61DF\u61E1\u61E2\u61E7\u61E9\u61E5"], + ["8fbfa1", "\u61EC\u61ED\u61EF\u6201\u6203\u6204\u6207\u6213\u6215\u621C\u6220\u6222\u6223\u6227\u6229\u622B\u6239\u623D\u6242\u6243\u6244\u6246\u624C\u6250\u6251\u6252\u6254\u6256\u625A\u625C\u6264\u626D\u626F\u6273\u627A\u627D\u628D\u628E\u628F\u6290\u62A6\u62A8\u62B3\u62B6\u62B7\u62BA\u62BE\u62BF\u62C4\u62CE\u62D5\u62D6\u62DA\u62EA\u62F2\u62F4\u62FC\u62FD\u6303\u6304\u630A\u630B\u630D\u6310\u6313\u6316\u6318\u6329\u632A\u632D\u6335\u6336\u6339\u633C\u6341\u6342\u6343\u6344\u6346\u634A\u634B\u634E\u6352\u6353\u6354\u6358\u635B\u6365\u6366\u636C\u636D\u6371\u6374\u6375"], + ["8fc0a1", "\u6378\u637C\u637D\u637F\u6382\u6384\u6387\u638A\u6390\u6394\u6395\u6399\u639A\u639E\u63A4\u63A6\u63AD\u63AE\u63AF\u63BD\u63C1\u63C5\u63C8\u63CE\u63D1\u63D3\u63D4\u63D5\u63DC\u63E0\u63E5\u63EA\u63EC\u63F2\u63F3\u63F5\u63F8\u63F9\u6409\u640A\u6410\u6412\u6414\u6418\u641E\u6420\u6422\u6424\u6425\u6429\u642A\u642F\u6430\u6435\u643D\u643F\u644B\u644F\u6451\u6452\u6453\u6454\u645A\u645B\u645C\u645D\u645F\u6460\u6461\u6463\u646D\u6473\u6474\u647B\u647D\u6485\u6487\u648F\u6490\u6491\u6498\u6499\u649B\u649D\u649F\u64A1\u64A3\u64A6\u64A8\u64AC\u64B3\u64BD\u64BE\u64BF"], + ["8fc1a1", "\u64C4\u64C9\u64CA\u64CB\u64CC\u64CE\u64D0\u64D1\u64D5\u64D7\u64E4\u64E5\u64E9\u64EA\u64ED\u64F0\u64F5\u64F7\u64FB\u64FF\u6501\u6504\u6508\u6509\u650A\u650F\u6513\u6514\u6516\u6519\u651B\u651E\u651F\u6522\u6526\u6529\u652E\u6531\u653A\u653C\u653D\u6543\u6547\u6549\u6550\u6552\u6554\u655F\u6560\u6567\u656B\u657A\u657D\u6581\u6585\u658A\u6592\u6595\u6598\u659D\u65A0\u65A3\u65A6\u65AE\u65B2\u65B3\u65B4\u65BF\u65C2\u65C8\u65C9\u65CE\u65D0\u65D4\u65D6\u65D8\u65DF\u65F0\u65F2\u65F4\u65F5\u65F9\u65FE\u65FF\u6600\u6604\u6608\u6609\u660D\u6611\u6612\u6615\u6616\u661D"], + ["8fc2a1", "\u661E\u6621\u6622\u6623\u6624\u6626\u6629\u662A\u662B\u662C\u662E\u6630\u6631\u6633\u6639\u6637\u6640\u6645\u6646\u664A\u664C\u6651\u664E\u6657\u6658\u6659\u665B\u665C\u6660\u6661\u66FB\u666A\u666B\u666C\u667E\u6673\u6675\u667F\u6677\u6678\u6679\u667B\u6680\u667C\u668B\u668C\u668D\u6690\u6692\u6699\u669A\u669B\u669C\u669F\u66A0\u66A4\u66AD\u66B1\u66B2\u66B5\u66BB\u66BF\u66C0\u66C2\u66C3\u66C8\u66CC\u66CE\u66CF\u66D4\u66DB\u66DF\u66E8\u66EB\u66EC\u66EE\u66FA\u6705\u6707\u670E\u6713\u6719\u671C\u6720\u6722\u6733\u673E\u6745\u6747\u6748\u674C\u6754\u6755\u675D"], + ["8fc3a1", "\u6766\u676C\u676E\u6774\u6776\u677B\u6781\u6784\u678E\u678F\u6791\u6793\u6796\u6798\u6799\u679B\u67B0\u67B1\u67B2\u67B5\u67BB\u67BC\u67BD\u67F9\u67C0\u67C2\u67C3\u67C5\u67C8\u67C9\u67D2\u67D7\u67D9\u67DC\u67E1\u67E6\u67F0\u67F2\u67F6\u67F7\u6852\u6814\u6819\u681D\u681F\u6828\u6827\u682C\u682D\u682F\u6830\u6831\u6833\u683B\u683F\u6844\u6845\u684A\u684C\u6855\u6857\u6858\u685B\u686B\u686E", 4, "\u6875\u6879\u687A\u687B\u687C\u6882\u6884\u6886\u6888\u6896\u6898\u689A\u689C\u68A1\u68A3\u68A5\u68A9\u68AA\u68AE\u68B2\u68BB\u68C5\u68C8\u68CC\u68CF"], + ["8fc4a1", "\u68D0\u68D1\u68D3\u68D6\u68D9\u68DC\u68DD\u68E5\u68E8\u68EA\u68EB\u68EC\u68ED\u68F0\u68F1\u68F5\u68F6\u68FB\u68FC\u68FD\u6906\u6909\u690A\u6910\u6911\u6913\u6916\u6917\u6931\u6933\u6935\u6938\u693B\u6942\u6945\u6949\u694E\u6957\u695B\u6963\u6964\u6965\u6966\u6968\u6969\u696C\u6970\u6971\u6972\u697A\u697B\u697F\u6980\u698D\u6992\u6996\u6998\u69A1\u69A5\u69A6\u69A8\u69AB\u69AD\u69AF\u69B7\u69B8\u69BA\u69BC\u69C5\u69C8\u69D1\u69D6\u69D7\u69E2\u69E5\u69EE\u69EF\u69F1\u69F3\u69F5\u69FE\u6A00\u6A01\u6A03\u6A0F\u6A11\u6A15\u6A1A\u6A1D\u6A20\u6A24\u6A28\u6A30\u6A32"], + ["8fc5a1", "\u6A34\u6A37\u6A3B\u6A3E\u6A3F\u6A45\u6A46\u6A49\u6A4A\u6A4E\u6A50\u6A51\u6A52\u6A55\u6A56\u6A5B\u6A64\u6A67\u6A6A\u6A71\u6A73\u6A7E\u6A81\u6A83\u6A86\u6A87\u6A89\u6A8B\u6A91\u6A9B\u6A9D\u6A9E\u6A9F\u6AA5\u6AAB\u6AAF\u6AB0\u6AB1\u6AB4\u6ABD\u6ABE\u6ABF\u6AC6\u6AC9\u6AC8\u6ACC\u6AD0\u6AD4\u6AD5\u6AD6\u6ADC\u6ADD\u6AE4\u6AE7\u6AEC\u6AF0\u6AF1\u6AF2\u6AFC\u6AFD\u6B02\u6B03\u6B06\u6B07\u6B09\u6B0F\u6B10\u6B11\u6B17\u6B1B\u6B1E\u6B24\u6B28\u6B2B\u6B2C\u6B2F\u6B35\u6B36\u6B3B\u6B3F\u6B46\u6B4A\u6B4D\u6B52\u6B56\u6B58\u6B5D\u6B60\u6B67\u6B6B\u6B6E\u6B70\u6B75\u6B7D"], + ["8fc6a1", "\u6B7E\u6B82\u6B85\u6B97\u6B9B\u6B9F\u6BA0\u6BA2\u6BA3\u6BA8\u6BA9\u6BAC\u6BAD\u6BAE\u6BB0\u6BB8\u6BB9\u6BBD\u6BBE\u6BC3\u6BC4\u6BC9\u6BCC\u6BD6\u6BDA\u6BE1\u6BE3\u6BE6\u6BE7\u6BEE\u6BF1\u6BF7\u6BF9\u6BFF\u6C02\u6C04\u6C05\u6C09\u6C0D\u6C0E\u6C10\u6C12\u6C19\u6C1F\u6C26\u6C27\u6C28\u6C2C\u6C2E\u6C33\u6C35\u6C36\u6C3A\u6C3B\u6C3F\u6C4A\u6C4B\u6C4D\u6C4F\u6C52\u6C54\u6C59\u6C5B\u6C5C\u6C6B\u6C6D\u6C6F\u6C74\u6C76\u6C78\u6C79\u6C7B\u6C85\u6C86\u6C87\u6C89\u6C94\u6C95\u6C97\u6C98\u6C9C\u6C9F\u6CB0\u6CB2\u6CB4\u6CC2\u6CC6\u6CCD\u6CCF\u6CD0\u6CD1\u6CD2\u6CD4\u6CD6"], + ["8fc7a1", "\u6CDA\u6CDC\u6CE0\u6CE7\u6CE9\u6CEB\u6CEC\u6CEE\u6CF2\u6CF4\u6D04\u6D07\u6D0A\u6D0E\u6D0F\u6D11\u6D13\u6D1A\u6D26\u6D27\u6D28\u6C67\u6D2E\u6D2F\u6D31\u6D39\u6D3C\u6D3F\u6D57\u6D5E\u6D5F\u6D61\u6D65\u6D67\u6D6F\u6D70\u6D7C\u6D82\u6D87\u6D91\u6D92\u6D94\u6D96\u6D97\u6D98\u6DAA\u6DAC\u6DB4\u6DB7\u6DB9\u6DBD\u6DBF\u6DC4\u6DC8\u6DCA\u6DCE\u6DCF\u6DD6\u6DDB\u6DDD\u6DDF\u6DE0\u6DE2\u6DE5\u6DE9\u6DEF\u6DF0\u6DF4\u6DF6\u6DFC\u6E00\u6E04\u6E1E\u6E22\u6E27\u6E32\u6E36\u6E39\u6E3B\u6E3C\u6E44\u6E45\u6E48\u6E49\u6E4B\u6E4F\u6E51\u6E52\u6E53\u6E54\u6E57\u6E5C\u6E5D\u6E5E"], + ["8fc8a1", "\u6E62\u6E63\u6E68\u6E73\u6E7B\u6E7D\u6E8D\u6E93\u6E99\u6EA0\u6EA7\u6EAD\u6EAE\u6EB1\u6EB3\u6EBB\u6EBF\u6EC0\u6EC1\u6EC3\u6EC7\u6EC8\u6ECA\u6ECD\u6ECE\u6ECF\u6EEB\u6EED\u6EEE\u6EF9\u6EFB\u6EFD\u6F04\u6F08\u6F0A\u6F0C\u6F0D\u6F16\u6F18\u6F1A\u6F1B\u6F26\u6F29\u6F2A\u6F2F\u6F30\u6F33\u6F36\u6F3B\u6F3C\u6F2D\u6F4F\u6F51\u6F52\u6F53\u6F57\u6F59\u6F5A\u6F5D\u6F5E\u6F61\u6F62\u6F68\u6F6C\u6F7D\u6F7E\u6F83\u6F87\u6F88\u6F8B\u6F8C\u6F8D\u6F90\u6F92\u6F93\u6F94\u6F96\u6F9A\u6F9F\u6FA0\u6FA5\u6FA6\u6FA7\u6FA8\u6FAE\u6FAF\u6FB0\u6FB5\u6FB6\u6FBC\u6FC5\u6FC7\u6FC8\u6FCA"], + ["8fc9a1", "\u6FDA\u6FDE\u6FE8\u6FE9\u6FF0\u6FF5\u6FF9\u6FFC\u6FFD\u7000\u7005\u7006\u7007\u700D\u7017\u7020\u7023\u702F\u7034\u7037\u7039\u703C\u7043\u7044\u7048\u7049\u704A\u704B\u7054\u7055\u705D\u705E\u704E\u7064\u7065\u706C\u706E\u7075\u7076\u707E\u7081\u7085\u7086\u7094", 4, "\u709B\u70A4\u70AB\u70B0\u70B1\u70B4\u70B7\u70CA\u70D1\u70D3\u70D4\u70D5\u70D6\u70D8\u70DC\u70E4\u70FA\u7103", 4, "\u710B\u710C\u710F\u711E\u7120\u712B\u712D\u712F\u7130\u7131\u7138\u7141\u7145\u7146\u7147\u714A\u714B\u7150\u7152\u7157\u715A\u715C\u715E\u7160"], + ["8fcaa1", "\u7168\u7179\u7180\u7185\u7187\u718C\u7192\u719A\u719B\u71A0\u71A2\u71AF\u71B0\u71B2\u71B3\u71BA\u71BF\u71C0\u71C1\u71C4\u71CB\u71CC\u71D3\u71D6\u71D9\u71DA\u71DC\u71F8\u71FE\u7200\u7207\u7208\u7209\u7213\u7217\u721A\u721D\u721F\u7224\u722B\u722F\u7234\u7238\u7239\u7241\u7242\u7243\u7245\u724E\u724F\u7250\u7253\u7255\u7256\u725A\u725C\u725E\u7260\u7263\u7268\u726B\u726E\u726F\u7271\u7277\u7278\u727B\u727C\u727F\u7284\u7289\u728D\u728E\u7293\u729B\u72A8\u72AD\u72AE\u72B1\u72B4\u72BE\u72C1\u72C7\u72C9\u72CC\u72D5\u72D6\u72D8\u72DF\u72E5\u72F3\u72F4\u72FA\u72FB"], + ["8fcba1", "\u72FE\u7302\u7304\u7305\u7307\u730B\u730D\u7312\u7313\u7318\u7319\u731E\u7322\u7324\u7327\u7328\u732C\u7331\u7332\u7335\u733A\u733B\u733D\u7343\u734D\u7350\u7352\u7356\u7358\u735D\u735E\u735F\u7360\u7366\u7367\u7369\u736B\u736C\u736E\u736F\u7371\u7377\u7379\u737C\u7380\u7381\u7383\u7385\u7386\u738E\u7390\u7393\u7395\u7397\u7398\u739C\u739E\u739F\u73A0\u73A2\u73A5\u73A6\u73AA\u73AB\u73AD\u73B5\u73B7\u73B9\u73BC\u73BD\u73BF\u73C5\u73C6\u73C9\u73CB\u73CC\u73CF\u73D2\u73D3\u73D6\u73D9\u73DD\u73E1\u73E3\u73E6\u73E7\u73E9\u73F4\u73F5\u73F7\u73F9\u73FA\u73FB\u73FD"], + ["8fcca1", "\u73FF\u7400\u7401\u7404\u7407\u740A\u7411\u741A\u741B\u7424\u7426\u7428", 9, "\u7439\u7440\u7443\u7444\u7446\u7447\u744B\u744D\u7451\u7452\u7457\u745D\u7462\u7466\u7467\u7468\u746B\u746D\u746E\u7471\u7472\u7480\u7481\u7485\u7486\u7487\u7489\u748F\u7490\u7491\u7492\u7498\u7499\u749A\u749C\u749F\u74A0\u74A1\u74A3\u74A6\u74A8\u74A9\u74AA\u74AB\u74AE\u74AF\u74B1\u74B2\u74B5\u74B9\u74BB\u74BF\u74C8\u74C9\u74CC\u74D0\u74D3\u74D8\u74DA\u74DB\u74DE\u74DF\u74E4\u74E8\u74EA\u74EB\u74EF\u74F4\u74FA\u74FB\u74FC\u74FF\u7506"], + ["8fcda1", "\u7512\u7516\u7517\u7520\u7521\u7524\u7527\u7529\u752A\u752F\u7536\u7539\u753D\u753E\u753F\u7540\u7543\u7547\u7548\u754E\u7550\u7552\u7557\u755E\u755F\u7561\u756F\u7571\u7579", 5, "\u7581\u7585\u7590\u7592\u7593\u7595\u7599\u759C\u75A2\u75A4\u75B4\u75BA\u75BF\u75C0\u75C1\u75C4\u75C6\u75CC\u75CE\u75CF\u75D7\u75DC\u75DF\u75E0\u75E1\u75E4\u75E7\u75EC\u75EE\u75EF\u75F1\u75F9\u7600\u7602\u7603\u7604\u7607\u7608\u760A\u760C\u760F\u7612\u7613\u7615\u7616\u7619\u761B\u761C\u761D\u761E\u7623\u7625\u7626\u7629\u762D\u7632\u7633\u7635\u7638\u7639"], + ["8fcea1", "\u763A\u763C\u764A\u7640\u7641\u7643\u7644\u7645\u7649\u764B\u7655\u7659\u765F\u7664\u7665\u766D\u766E\u766F\u7671\u7674\u7681\u7685\u768C\u768D\u7695\u769B\u769C\u769D\u769F\u76A0\u76A2", 6, "\u76AA\u76AD\u76BD\u76C1\u76C5\u76C9\u76CB\u76CC\u76CE\u76D4\u76D9\u76E0\u76E6\u76E8\u76EC\u76F0\u76F1\u76F6\u76F9\u76FC\u7700\u7706\u770A\u770E\u7712\u7714\u7715\u7717\u7719\u771A\u771C\u7722\u7728\u772D\u772E\u772F\u7734\u7735\u7736\u7739\u773D\u773E\u7742\u7745\u7746\u774A\u774D\u774E\u774F\u7752\u7756\u7757\u775C\u775E\u775F\u7760\u7762"], + ["8fcfa1", "\u7764\u7767\u776A\u776C\u7770\u7772\u7773\u7774\u777A\u777D\u7780\u7784\u778C\u778D\u7794\u7795\u7796\u779A\u779F\u77A2\u77A7\u77AA\u77AE\u77AF\u77B1\u77B5\u77BE\u77C3\u77C9\u77D1\u77D2\u77D5\u77D9\u77DE\u77DF\u77E0\u77E4\u77E6\u77EA\u77EC\u77F0\u77F1\u77F4\u77F8\u77FB\u7805\u7806\u7809\u780D\u780E\u7811\u781D\u7821\u7822\u7823\u782D\u782E\u7830\u7835\u7837\u7843\u7844\u7847\u7848\u784C\u784E\u7852\u785C\u785E\u7860\u7861\u7863\u7864\u7868\u786A\u786E\u787A\u787E\u788A\u788F\u7894\u7898\u78A1\u789D\u789E\u789F\u78A4\u78A8\u78AC\u78AD\u78B0\u78B1\u78B2\u78B3"], + ["8fd0a1", "\u78BB\u78BD\u78BF\u78C7\u78C8\u78C9\u78CC\u78CE\u78D2\u78D3\u78D5\u78D6\u78E4\u78DB\u78DF\u78E0\u78E1\u78E6\u78EA\u78F2\u78F3\u7900\u78F6\u78F7\u78FA\u78FB\u78FF\u7906\u790C\u7910\u791A\u791C\u791E\u791F\u7920\u7925\u7927\u7929\u792D\u7931\u7934\u7935\u793B\u793D\u793F\u7944\u7945\u7946\u794A\u794B\u794F\u7951\u7954\u7958\u795B\u795C\u7967\u7969\u796B\u7972\u7979\u797B\u797C\u797E\u798B\u798C\u7991\u7993\u7994\u7995\u7996\u7998\u799B\u799C\u79A1\u79A8\u79A9\u79AB\u79AF\u79B1\u79B4\u79B8\u79BB\u79C2\u79C4\u79C7\u79C8\u79CA\u79CF\u79D4\u79D6\u79DA\u79DD\u79DE"], + ["8fd1a1", "\u79E0\u79E2\u79E5\u79EA\u79EB\u79ED\u79F1\u79F8\u79FC\u7A02\u7A03\u7A07\u7A09\u7A0A\u7A0C\u7A11\u7A15\u7A1B\u7A1E\u7A21\u7A27\u7A2B\u7A2D\u7A2F\u7A30\u7A34\u7A35\u7A38\u7A39\u7A3A\u7A44\u7A45\u7A47\u7A48\u7A4C\u7A55\u7A56\u7A59\u7A5C\u7A5D\u7A5F\u7A60\u7A65\u7A67\u7A6A\u7A6D\u7A75\u7A78\u7A7E\u7A80\u7A82\u7A85\u7A86\u7A8A\u7A8B\u7A90\u7A91\u7A94\u7A9E\u7AA0\u7AA3\u7AAC\u7AB3\u7AB5\u7AB9\u7ABB\u7ABC\u7AC6\u7AC9\u7ACC\u7ACE\u7AD1\u7ADB\u7AE8\u7AE9\u7AEB\u7AEC\u7AF1\u7AF4\u7AFB\u7AFD\u7AFE\u7B07\u7B14\u7B1F\u7B23\u7B27\u7B29\u7B2A\u7B2B\u7B2D\u7B2E\u7B2F\u7B30"], + ["8fd2a1", "\u7B31\u7B34\u7B3D\u7B3F\u7B40\u7B41\u7B47\u7B4E\u7B55\u7B60\u7B64\u7B66\u7B69\u7B6A\u7B6D\u7B6F\u7B72\u7B73\u7B77\u7B84\u7B89\u7B8E\u7B90\u7B91\u7B96\u7B9B\u7B9E\u7BA0\u7BA5\u7BAC\u7BAF\u7BB0\u7BB2\u7BB5\u7BB6\u7BBA\u7BBB\u7BBC\u7BBD\u7BC2\u7BC5\u7BC8\u7BCA\u7BD4\u7BD6\u7BD7\u7BD9\u7BDA\u7BDB\u7BE8\u7BEA\u7BF2\u7BF4\u7BF5\u7BF8\u7BF9\u7BFA\u7BFC\u7BFE\u7C01\u7C02\u7C03\u7C04\u7C06\u7C09\u7C0B\u7C0C\u7C0E\u7C0F\u7C19\u7C1B\u7C20\u7C25\u7C26\u7C28\u7C2C\u7C31\u7C33\u7C34\u7C36\u7C39\u7C3A\u7C46\u7C4A\u7C55\u7C51\u7C52\u7C53\u7C59", 5], + ["8fd3a1", "\u7C61\u7C63\u7C67\u7C69\u7C6D\u7C6E\u7C70\u7C72\u7C79\u7C7C\u7C7D\u7C86\u7C87\u7C8F\u7C94\u7C9E\u7CA0\u7CA6\u7CB0\u7CB6\u7CB7\u7CBA\u7CBB\u7CBC\u7CBF\u7CC4\u7CC7\u7CC8\u7CC9\u7CCD\u7CCF\u7CD3\u7CD4\u7CD5\u7CD7\u7CD9\u7CDA\u7CDD\u7CE6\u7CE9\u7CEB\u7CF5\u7D03\u7D07\u7D08\u7D09\u7D0F\u7D11\u7D12\u7D13\u7D16\u7D1D\u7D1E\u7D23\u7D26\u7D2A\u7D2D\u7D31\u7D3C\u7D3D\u7D3E\u7D40\u7D41\u7D47\u7D48\u7D4D\u7D51\u7D53\u7D57\u7D59\u7D5A\u7D5C\u7D5D\u7D65\u7D67\u7D6A\u7D70\u7D78\u7D7A\u7D7B\u7D7F\u7D81\u7D82\u7D83\u7D85\u7D86\u7D88\u7D8B\u7D8C\u7D8D\u7D91\u7D96\u7D97\u7D9D"], + ["8fd4a1", "\u7D9E\u7DA6\u7DA7\u7DAA\u7DB3\u7DB6\u7DB7\u7DB9\u7DC2", 4, "\u7DCC\u7DCD\u7DCE\u7DD7\u7DD9\u7E00\u7DE2\u7DE5\u7DE6\u7DEA\u7DEB\u7DED\u7DF1\u7DF5\u7DF6\u7DF9\u7DFA\u7E08\u7E10\u7E11\u7E15\u7E17\u7E1C\u7E1D\u7E20\u7E27\u7E28\u7E2C\u7E2D\u7E2F\u7E33\u7E36\u7E3F\u7E44\u7E45\u7E47\u7E4E\u7E50\u7E52\u7E58\u7E5F\u7E61\u7E62\u7E65\u7E6B\u7E6E\u7E6F\u7E73\u7E78\u7E7E\u7E81\u7E86\u7E87\u7E8A\u7E8D\u7E91\u7E95\u7E98\u7E9A\u7E9D\u7E9E\u7F3C\u7F3B\u7F3D\u7F3E\u7F3F\u7F43\u7F44\u7F47\u7F4F\u7F52\u7F53\u7F5B\u7F5C\u7F5D\u7F61\u7F63\u7F64\u7F65\u7F66\u7F6D"], + ["8fd5a1", "\u7F71\u7F7D\u7F7E\u7F7F\u7F80\u7F8B\u7F8D\u7F8F\u7F90\u7F91\u7F96\u7F97\u7F9C\u7FA1\u7FA2\u7FA6\u7FAA\u7FAD\u7FB4\u7FBC\u7FBF\u7FC0\u7FC3\u7FC8\u7FCE\u7FCF\u7FDB\u7FDF\u7FE3\u7FE5\u7FE8\u7FEC\u7FEE\u7FEF\u7FF2\u7FFA\u7FFD\u7FFE\u7FFF\u8007\u8008\u800A\u800D\u800E\u800F\u8011\u8013\u8014\u8016\u801D\u801E\u801F\u8020\u8024\u8026\u802C\u802E\u8030\u8034\u8035\u8037\u8039\u803A\u803C\u803E\u8040\u8044\u8060\u8064\u8066\u806D\u8071\u8075\u8081\u8088\u808E\u809C\u809E\u80A6\u80A7\u80AB\u80B8\u80B9\u80C8\u80CD\u80CF\u80D2\u80D4\u80D5\u80D7\u80D8\u80E0\u80ED\u80EE"], + ["8fd6a1", "\u80F0\u80F2\u80F3\u80F6\u80F9\u80FA\u80FE\u8103\u810B\u8116\u8117\u8118\u811C\u811E\u8120\u8124\u8127\u812C\u8130\u8135\u813A\u813C\u8145\u8147\u814A\u814C\u8152\u8157\u8160\u8161\u8167\u8168\u8169\u816D\u816F\u8177\u8181\u8190\u8184\u8185\u8186\u818B\u818E\u8196\u8198\u819B\u819E\u81A2\u81AE\u81B2\u81B4\u81BB\u81CB\u81C3\u81C5\u81CA\u81CE\u81CF\u81D5\u81D7\u81DB\u81DD\u81DE\u81E1\u81E4\u81EB\u81EC\u81F0\u81F1\u81F2\u81F5\u81F6\u81F8\u81F9\u81FD\u81FF\u8200\u8203\u820F\u8213\u8214\u8219\u821A\u821D\u8221\u8222\u8228\u8232\u8234\u823A\u8243\u8244\u8245\u8246"], + ["8fd7a1", "\u824B\u824E\u824F\u8251\u8256\u825C\u8260\u8263\u8267\u826D\u8274\u827B\u827D\u827F\u8280\u8281\u8283\u8284\u8287\u8289\u828A\u828E\u8291\u8294\u8296\u8298\u829A\u829B\u82A0\u82A1\u82A3\u82A4\u82A7\u82A8\u82A9\u82AA\u82AE\u82B0\u82B2\u82B4\u82B7\u82BA\u82BC\u82BE\u82BF\u82C6\u82D0\u82D5\u82DA\u82E0\u82E2\u82E4\u82E8\u82EA\u82ED\u82EF\u82F6\u82F7\u82FD\u82FE\u8300\u8301\u8307\u8308\u830A\u830B\u8354\u831B\u831D\u831E\u831F\u8321\u8322\u832C\u832D\u832E\u8330\u8333\u8337\u833A\u833C\u833D\u8342\u8343\u8344\u8347\u834D\u834E\u8351\u8355\u8356\u8357\u8370\u8378"], + ["8fd8a1", "\u837D\u837F\u8380\u8382\u8384\u8386\u838D\u8392\u8394\u8395\u8398\u8399\u839B\u839C\u839D\u83A6\u83A7\u83A9\u83AC\u83BE\u83BF\u83C0\u83C7\u83C9\u83CF\u83D0\u83D1\u83D4\u83DD\u8353\u83E8\u83EA\u83F6\u83F8\u83F9\u83FC\u8401\u8406\u840A\u840F\u8411\u8415\u8419\u83AD\u842F\u8439\u8445\u8447\u8448\u844A\u844D\u844F\u8451\u8452\u8456\u8458\u8459\u845A\u845C\u8460\u8464\u8465\u8467\u846A\u8470\u8473\u8474\u8476\u8478\u847C\u847D\u8481\u8485\u8492\u8493\u8495\u849E\u84A6\u84A8\u84A9\u84AA\u84AF\u84B1\u84B4\u84BA\u84BD\u84BE\u84C0\u84C2\u84C7\u84C8\u84CC\u84CF\u84D3"], + ["8fd9a1", "\u84DC\u84E7\u84EA\u84EF\u84F0\u84F1\u84F2\u84F7\u8532\u84FA\u84FB\u84FD\u8502\u8503\u8507\u850C\u850E\u8510\u851C\u851E\u8522\u8523\u8524\u8525\u8527\u852A\u852B\u852F\u8533\u8534\u8536\u853F\u8546\u854F", 4, "\u8556\u8559\u855C", 6, "\u8564\u856B\u856F\u8579\u857A\u857B\u857D\u857F\u8581\u8585\u8586\u8589\u858B\u858C\u858F\u8593\u8598\u859D\u859F\u85A0\u85A2\u85A5\u85A7\u85B4\u85B6\u85B7\u85B8\u85BC\u85BD\u85BE\u85BF\u85C2\u85C7\u85CA\u85CB\u85CE\u85AD\u85D8\u85DA\u85DF\u85E0\u85E6\u85E8\u85ED\u85F3\u85F6\u85FC"], + ["8fdaa1", "\u85FF\u8600\u8604\u8605\u860D\u860E\u8610\u8611\u8612\u8618\u8619\u861B\u861E\u8621\u8627\u8629\u8636\u8638\u863A\u863C\u863D\u8640\u8642\u8646\u8652\u8653\u8656\u8657\u8658\u8659\u865D\u8660", 4, "\u8669\u866C\u866F\u8675\u8676\u8677\u867A\u868D\u8691\u8696\u8698\u869A\u869C\u86A1\u86A6\u86A7\u86A8\u86AD\u86B1\u86B3\u86B4\u86B5\u86B7\u86B8\u86B9\u86BF\u86C0\u86C1\u86C3\u86C5\u86D1\u86D2\u86D5\u86D7\u86DA\u86DC\u86E0\u86E3\u86E5\u86E7\u8688\u86FA\u86FC\u86FD\u8704\u8705\u8707\u870B\u870E\u870F\u8710\u8713\u8714\u8719\u871E\u871F\u8721\u8723"], + ["8fdba1", "\u8728\u872E\u872F\u8731\u8732\u8739\u873A\u873C\u873D\u873E\u8740\u8743\u8745\u874D\u8758\u875D\u8761\u8764\u8765\u876F\u8771\u8772\u877B\u8783", 6, "\u878B\u878C\u8790\u8793\u8795\u8797\u8798\u8799\u879E\u87A0\u87A3\u87A7\u87AC\u87AD\u87AE\u87B1\u87B5\u87BE\u87BF\u87C1\u87C8\u87C9\u87CA\u87CE\u87D5\u87D6\u87D9\u87DA\u87DC\u87DF\u87E2\u87E3\u87E4\u87EA\u87EB\u87ED\u87F1\u87F3\u87F8\u87FA\u87FF\u8801\u8803\u8806\u8809\u880A\u880B\u8810\u8819\u8812\u8813\u8814\u8818\u881A\u881B\u881C\u881E\u881F\u8828\u882D\u882E\u8830\u8832\u8835"], + ["8fdca1", "\u883A\u883C\u8841\u8843\u8845\u8848\u8849\u884A\u884B\u884E\u8851\u8855\u8856\u8858\u885A\u885C\u885F\u8860\u8864\u8869\u8871\u8879\u887B\u8880\u8898\u889A\u889B\u889C\u889F\u88A0\u88A8\u88AA\u88BA\u88BD\u88BE\u88C0\u88CA", 4, "\u88D1\u88D2\u88D3\u88DB\u88DE\u88E7\u88EF\u88F0\u88F1\u88F5\u88F7\u8901\u8906\u890D\u890E\u890F\u8915\u8916\u8918\u8919\u891A\u891C\u8920\u8926\u8927\u8928\u8930\u8931\u8932\u8935\u8939\u893A\u893E\u8940\u8942\u8945\u8946\u8949\u894F\u8952\u8957\u895A\u895B\u895C\u8961\u8962\u8963\u896B\u896E\u8970\u8973\u8975\u897A"], + ["8fdda1", "\u897B\u897C\u897D\u8989\u898D\u8990\u8994\u8995\u899B\u899C\u899F\u89A0\u89A5\u89B0\u89B4\u89B5\u89B6\u89B7\u89BC\u89D4", 4, "\u89E5\u89E9\u89EB\u89ED\u89F1\u89F3\u89F6\u89F9\u89FD\u89FF\u8A04\u8A05\u8A07\u8A0F\u8A11\u8A12\u8A14\u8A15\u8A1E\u8A20\u8A22\u8A24\u8A26\u8A2B\u8A2C\u8A2F\u8A35\u8A37\u8A3D\u8A3E\u8A40\u8A43\u8A45\u8A47\u8A49\u8A4D\u8A4E\u8A53\u8A56\u8A57\u8A58\u8A5C\u8A5D\u8A61\u8A65\u8A67\u8A75\u8A76\u8A77\u8A79\u8A7A\u8A7B\u8A7E\u8A7F\u8A80\u8A83\u8A86\u8A8B\u8A8F\u8A90\u8A92\u8A96\u8A97\u8A99\u8A9F\u8AA7\u8AA9\u8AAE\u8AAF\u8AB3"], + ["8fdea1", "\u8AB6\u8AB7\u8ABB\u8ABE\u8AC3\u8AC6\u8AC8\u8AC9\u8ACA\u8AD1\u8AD3\u8AD4\u8AD5\u8AD7\u8ADD\u8ADF\u8AEC\u8AF0\u8AF4\u8AF5\u8AF6\u8AFC\u8AFF\u8B05\u8B06\u8B0B\u8B11\u8B1C\u8B1E\u8B1F\u8B0A\u8B2D\u8B30\u8B37\u8B3C\u8B42", 4, "\u8B48\u8B52\u8B53\u8B54\u8B59\u8B4D\u8B5E\u8B63\u8B6D\u8B76\u8B78\u8B79\u8B7C\u8B7E\u8B81\u8B84\u8B85\u8B8B\u8B8D\u8B8F\u8B94\u8B95\u8B9C\u8B9E\u8B9F\u8C38\u8C39\u8C3D\u8C3E\u8C45\u8C47\u8C49\u8C4B\u8C4F\u8C51\u8C53\u8C54\u8C57\u8C58\u8C5B\u8C5D\u8C59\u8C63\u8C64\u8C66\u8C68\u8C69\u8C6D\u8C73\u8C75\u8C76\u8C7B\u8C7E\u8C86"], + ["8fdfa1", "\u8C87\u8C8B\u8C90\u8C92\u8C93\u8C99\u8C9B\u8C9C\u8CA4\u8CB9\u8CBA\u8CC5\u8CC6\u8CC9\u8CCB\u8CCF\u8CD6\u8CD5\u8CD9\u8CDD\u8CE1\u8CE8\u8CEC\u8CEF\u8CF0\u8CF2\u8CF5\u8CF7\u8CF8\u8CFE\u8CFF\u8D01\u8D03\u8D09\u8D12\u8D17\u8D1B\u8D65\u8D69\u8D6C\u8D6E\u8D7F\u8D82\u8D84\u8D88\u8D8D\u8D90\u8D91\u8D95\u8D9E\u8D9F\u8DA0\u8DA6\u8DAB\u8DAC\u8DAF\u8DB2\u8DB5\u8DB7\u8DB9\u8DBB\u8DC0\u8DC5\u8DC6\u8DC7\u8DC8\u8DCA\u8DCE\u8DD1\u8DD4\u8DD5\u8DD7\u8DD9\u8DE4\u8DE5\u8DE7\u8DEC\u8DF0\u8DBC\u8DF1\u8DF2\u8DF4\u8DFD\u8E01\u8E04\u8E05\u8E06\u8E0B\u8E11\u8E14\u8E16\u8E20\u8E21\u8E22"], + ["8fe0a1", "\u8E23\u8E26\u8E27\u8E31\u8E33\u8E36\u8E37\u8E38\u8E39\u8E3D\u8E40\u8E41\u8E4B\u8E4D\u8E4E\u8E4F\u8E54\u8E5B\u8E5C\u8E5D\u8E5E\u8E61\u8E62\u8E69\u8E6C\u8E6D\u8E6F\u8E70\u8E71\u8E79\u8E7A\u8E7B\u8E82\u8E83\u8E89\u8E90\u8E92\u8E95\u8E9A\u8E9B\u8E9D\u8E9E\u8EA2\u8EA7\u8EA9\u8EAD\u8EAE\u8EB3\u8EB5\u8EBA\u8EBB\u8EC0\u8EC1\u8EC3\u8EC4\u8EC7\u8ECF\u8ED1\u8ED4\u8EDC\u8EE8\u8EEE\u8EF0\u8EF1\u8EF7\u8EF9\u8EFA\u8EED\u8F00\u8F02\u8F07\u8F08\u8F0F\u8F10\u8F16\u8F17\u8F18\u8F1E\u8F20\u8F21\u8F23\u8F25\u8F27\u8F28\u8F2C\u8F2D\u8F2E\u8F34\u8F35\u8F36\u8F37\u8F3A\u8F40\u8F41"], + ["8fe1a1", "\u8F43\u8F47\u8F4F\u8F51", 4, "\u8F58\u8F5D\u8F5E\u8F65\u8F9D\u8FA0\u8FA1\u8FA4\u8FA5\u8FA6\u8FB5\u8FB6\u8FB8\u8FBE\u8FC0\u8FC1\u8FC6\u8FCA\u8FCB\u8FCD\u8FD0\u8FD2\u8FD3\u8FD5\u8FE0\u8FE3\u8FE4\u8FE8\u8FEE\u8FF1\u8FF5\u8FF6\u8FFB\u8FFE\u9002\u9004\u9008\u900C\u9018\u901B\u9028\u9029\u902F\u902A\u902C\u902D\u9033\u9034\u9037\u903F\u9043\u9044\u904C\u905B\u905D\u9062\u9066\u9067\u906C\u9070\u9074\u9079\u9085\u9088\u908B\u908C\u908E\u9090\u9095\u9097\u9098\u9099\u909B\u90A0\u90A1\u90A2\u90A5\u90B0\u90B2\u90B3\u90B4\u90B6\u90BD\u90CC\u90BE\u90C3"], + ["8fe2a1", "\u90C4\u90C5\u90C7\u90C8\u90D5\u90D7\u90D8\u90D9\u90DC\u90DD\u90DF\u90E5\u90D2\u90F6\u90EB\u90EF\u90F0\u90F4\u90FE\u90FF\u9100\u9104\u9105\u9106\u9108\u910D\u9110\u9114\u9116\u9117\u9118\u911A\u911C\u911E\u9120\u9125\u9122\u9123\u9127\u9129\u912E\u912F\u9131\u9134\u9136\u9137\u9139\u913A\u913C\u913D\u9143\u9147\u9148\u914F\u9153\u9157\u9159\u915A\u915B\u9161\u9164\u9167\u916D\u9174\u9179\u917A\u917B\u9181\u9183\u9185\u9186\u918A\u918E\u9191\u9193\u9194\u9195\u9198\u919E\u91A1\u91A6\u91A8\u91AC\u91AD\u91AE\u91B0\u91B1\u91B2\u91B3\u91B6\u91BB\u91BC\u91BD\u91BF"], + ["8fe3a1", "\u91C2\u91C3\u91C5\u91D3\u91D4\u91D7\u91D9\u91DA\u91DE\u91E4\u91E5\u91E9\u91EA\u91EC", 5, "\u91F7\u91F9\u91FB\u91FD\u9200\u9201\u9204\u9205\u9206\u9207\u9209\u920A\u920C\u9210\u9212\u9213\u9216\u9218\u921C\u921D\u9223\u9224\u9225\u9226\u9228\u922E\u922F\u9230\u9233\u9235\u9236\u9238\u9239\u923A\u923C\u923E\u9240\u9242\u9243\u9246\u9247\u924A\u924D\u924E\u924F\u9251\u9258\u9259\u925C\u925D\u9260\u9261\u9265\u9267\u9268\u9269\u926E\u926F\u9270\u9275", 4, "\u927B\u927C\u927D\u927F\u9288\u9289\u928A\u928D\u928E\u9292\u9297"], + ["8fe4a1", "\u9299\u929F\u92A0\u92A4\u92A5\u92A7\u92A8\u92AB\u92AF\u92B2\u92B6\u92B8\u92BA\u92BB\u92BC\u92BD\u92BF", 4, "\u92C5\u92C6\u92C7\u92C8\u92CB\u92CC\u92CD\u92CE\u92D0\u92D3\u92D5\u92D7\u92D8\u92D9\u92DC\u92DD\u92DF\u92E0\u92E1\u92E3\u92E5\u92E7\u92E8\u92EC\u92EE\u92F0\u92F9\u92FB\u92FF\u9300\u9302\u9308\u930D\u9311\u9314\u9315\u931C\u931D\u931E\u931F\u9321\u9324\u9325\u9327\u9329\u932A\u9333\u9334\u9336\u9337\u9347\u9348\u9349\u9350\u9351\u9352\u9355\u9357\u9358\u935A\u935E\u9364\u9365\u9367\u9369\u936A\u936D\u936F\u9370\u9371\u9373\u9374\u9376"], + ["8fe5a1", "\u937A\u937D\u937F\u9380\u9381\u9382\u9388\u938A\u938B\u938D\u938F\u9392\u9395\u9398\u939B\u939E\u93A1\u93A3\u93A4\u93A6\u93A8\u93AB\u93B4\u93B5\u93B6\u93BA\u93A9\u93C1\u93C4\u93C5\u93C6\u93C7\u93C9", 4, "\u93D3\u93D9\u93DC\u93DE\u93DF\u93E2\u93E6\u93E7\u93F9\u93F7\u93F8\u93FA\u93FB\u93FD\u9401\u9402\u9404\u9408\u9409\u940D\u940E\u940F\u9415\u9416\u9417\u941F\u942E\u942F\u9431\u9432\u9433\u9434\u943B\u943F\u943D\u9443\u9445\u9448\u944A\u944C\u9455\u9459\u945C\u945F\u9461\u9463\u9468\u946B\u946D\u946E\u946F\u9471\u9472\u9484\u9483\u9578\u9579"], + ["8fe6a1", "\u957E\u9584\u9588\u958C\u958D\u958E\u959D\u959E\u959F\u95A1\u95A6\u95A9\u95AB\u95AC\u95B4\u95B6\u95BA\u95BD\u95BF\u95C6\u95C8\u95C9\u95CB\u95D0\u95D1\u95D2\u95D3\u95D9\u95DA\u95DD\u95DE\u95DF\u95E0\u95E4\u95E6\u961D\u961E\u9622\u9624\u9625\u9626\u962C\u9631\u9633\u9637\u9638\u9639\u963A\u963C\u963D\u9641\u9652\u9654\u9656\u9657\u9658\u9661\u966E\u9674\u967B\u967C\u967E\u967F\u9681\u9682\u9683\u9684\u9689\u9691\u9696\u969A\u969D\u969F\u96A4\u96A5\u96A6\u96A9\u96AE\u96AF\u96B3\u96BA\u96CA\u96D2\u5DB2\u96D8\u96DA\u96DD\u96DE\u96DF\u96E9\u96EF\u96F1\u96FA\u9702"], + ["8fe7a1", "\u9703\u9705\u9709\u971A\u971B\u971D\u9721\u9722\u9723\u9728\u9731\u9733\u9741\u9743\u974A\u974E\u974F\u9755\u9757\u9758\u975A\u975B\u9763\u9767\u976A\u976E\u9773\u9776\u9777\u9778\u977B\u977D\u977F\u9780\u9789\u9795\u9796\u9797\u9799\u979A\u979E\u979F\u97A2\u97AC\u97AE\u97B1\u97B2\u97B5\u97B6\u97B8\u97B9\u97BA\u97BC\u97BE\u97BF\u97C1\u97C4\u97C5\u97C7\u97C9\u97CA\u97CC\u97CD\u97CE\u97D0\u97D1\u97D4\u97D7\u97D8\u97D9\u97DD\u97DE\u97E0\u97DB\u97E1\u97E4\u97EF\u97F1\u97F4\u97F7\u97F8\u97FA\u9807\u980A\u9819\u980D\u980E\u9814\u9816\u981C\u981E\u9820\u9823\u9826"], + ["8fe8a1", "\u982B\u982E\u982F\u9830\u9832\u9833\u9835\u9825\u983E\u9844\u9847\u984A\u9851\u9852\u9853\u9856\u9857\u9859\u985A\u9862\u9863\u9865\u9866\u986A\u986C\u98AB\u98AD\u98AE\u98B0\u98B4\u98B7\u98B8\u98BA\u98BB\u98BF\u98C2\u98C5\u98C8\u98CC\u98E1\u98E3\u98E5\u98E6\u98E7\u98EA\u98F3\u98F6\u9902\u9907\u9908\u9911\u9915\u9916\u9917\u991A\u991B\u991C\u991F\u9922\u9926\u9927\u992B\u9931", 4, "\u9939\u993A\u993B\u993C\u9940\u9941\u9946\u9947\u9948\u994D\u994E\u9954\u9958\u9959\u995B\u995C\u995E\u995F\u9960\u999B\u999D\u999F\u99A6\u99B0\u99B1\u99B2\u99B5"], + ["8fe9a1", "\u99B9\u99BA\u99BD\u99BF\u99C3\u99C9\u99D3\u99D4\u99D9\u99DA\u99DC\u99DE\u99E7\u99EA\u99EB\u99EC\u99F0\u99F4\u99F5\u99F9\u99FD\u99FE\u9A02\u9A03\u9A04\u9A0B\u9A0C\u9A10\u9A11\u9A16\u9A1E\u9A20\u9A22\u9A23\u9A24\u9A27\u9A2D\u9A2E\u9A33\u9A35\u9A36\u9A38\u9A47\u9A41\u9A44\u9A4A\u9A4B\u9A4C\u9A4E\u9A51\u9A54\u9A56\u9A5D\u9AAA\u9AAC\u9AAE\u9AAF\u9AB2\u9AB4\u9AB5\u9AB6\u9AB9\u9ABB\u9ABE\u9ABF\u9AC1\u9AC3\u9AC6\u9AC8\u9ACE\u9AD0\u9AD2\u9AD5\u9AD6\u9AD7\u9ADB\u9ADC\u9AE0\u9AE4\u9AE5\u9AE7\u9AE9\u9AEC\u9AF2\u9AF3\u9AF5\u9AF9\u9AFA\u9AFD\u9AFF", 4], + ["8feaa1", "\u9B04\u9B05\u9B08\u9B09\u9B0B\u9B0C\u9B0D\u9B0E\u9B10\u9B12\u9B16\u9B19\u9B1B\u9B1C\u9B20\u9B26\u9B2B\u9B2D\u9B33\u9B34\u9B35\u9B37\u9B39\u9B3A\u9B3D\u9B48\u9B4B\u9B4C\u9B55\u9B56\u9B57\u9B5B\u9B5E\u9B61\u9B63\u9B65\u9B66\u9B68\u9B6A", 4, "\u9B73\u9B75\u9B77\u9B78\u9B79\u9B7F\u9B80\u9B84\u9B85\u9B86\u9B87\u9B89\u9B8A\u9B8B\u9B8D\u9B8F\u9B90\u9B94\u9B9A\u9B9D\u9B9E\u9BA6\u9BA7\u9BA9\u9BAC\u9BB0\u9BB1\u9BB2\u9BB7\u9BB8\u9BBB\u9BBC\u9BBE\u9BBF\u9BC1\u9BC7\u9BC8\u9BCE\u9BD0\u9BD7\u9BD8\u9BDD\u9BDF\u9BE5\u9BE7\u9BEA\u9BEB\u9BEF\u9BF3\u9BF7\u9BF8"], + ["8feba1", "\u9BF9\u9BFA\u9BFD\u9BFF\u9C00\u9C02\u9C0B\u9C0F\u9C11\u9C16\u9C18\u9C19\u9C1A\u9C1C\u9C1E\u9C22\u9C23\u9C26", 4, "\u9C31\u9C35\u9C36\u9C37\u9C3D\u9C41\u9C43\u9C44\u9C45\u9C49\u9C4A\u9C4E\u9C4F\u9C50\u9C53\u9C54\u9C56\u9C58\u9C5B\u9C5D\u9C5E\u9C5F\u9C63\u9C69\u9C6A\u9C5C\u9C6B\u9C68\u9C6E\u9C70\u9C72\u9C75\u9C77\u9C7B\u9CE6\u9CF2\u9CF7\u9CF9\u9D0B\u9D02\u9D11\u9D17\u9D18\u9D1C\u9D1D\u9D1E\u9D2F\u9D30\u9D32\u9D33\u9D34\u9D3A\u9D3C\u9D45\u9D3D\u9D42\u9D43\u9D47\u9D4A\u9D53\u9D54\u9D5F\u9D63\u9D62\u9D65\u9D69\u9D6A\u9D6B\u9D70\u9D76\u9D77\u9D7B"], + ["8feca1", "\u9D7C\u9D7E\u9D83\u9D84\u9D86\u9D8A\u9D8D\u9D8E\u9D92\u9D93\u9D95\u9D96\u9D97\u9D98\u9DA1\u9DAA\u9DAC\u9DAE\u9DB1\u9DB5\u9DB9\u9DBC\u9DBF\u9DC3\u9DC7\u9DC9\u9DCA\u9DD4\u9DD5\u9DD6\u9DD7\u9DDA\u9DDE\u9DDF\u9DE0\u9DE5\u9DE7\u9DE9\u9DEB\u9DEE\u9DF0\u9DF3\u9DF4\u9DFE\u9E0A\u9E02\u9E07\u9E0E\u9E10\u9E11\u9E12\u9E15\u9E16\u9E19\u9E1C\u9E1D\u9E7A\u9E7B\u9E7C\u9E80\u9E82\u9E83\u9E84\u9E85\u9E87\u9E8E\u9E8F\u9E96\u9E98\u9E9B\u9E9E\u9EA4\u9EA8\u9EAC\u9EAE\u9EAF\u9EB0\u9EB3\u9EB4\u9EB5\u9EC6\u9EC8\u9ECB\u9ED5\u9EDF\u9EE4\u9EE7\u9EEC\u9EED\u9EEE\u9EF0\u9EF1\u9EF2\u9EF5"], + ["8feda1", "\u9EF8\u9EFF\u9F02\u9F03\u9F09\u9F0F\u9F10\u9F11\u9F12\u9F14\u9F16\u9F17\u9F19\u9F1A\u9F1B\u9F1F\u9F22\u9F26\u9F2A\u9F2B\u9F2F\u9F31\u9F32\u9F34\u9F37\u9F39\u9F3A\u9F3C\u9F3D\u9F3F\u9F41\u9F43", 4, "\u9F53\u9F55\u9F56\u9F57\u9F58\u9F5A\u9F5D\u9F5E\u9F68\u9F69\u9F6D", 4, "\u9F73\u9F75\u9F7A\u9F7D\u9F8F\u9F90\u9F91\u9F92\u9F94\u9F96\u9F97\u9F9E\u9FA1\u9FA2\u9FA3\u9FA5"] + ]; + } +}); + +// node_modules/iconv-lite/encodings/tables/cp936.json +var require_cp936 = __commonJS({ + "node_modules/iconv-lite/encodings/tables/cp936.json"(exports2, module2) { + module2.exports = [ + ["0", "\0", 127, "\u20AC"], + ["8140", "\u4E02\u4E04\u4E05\u4E06\u4E0F\u4E12\u4E17\u4E1F\u4E20\u4E21\u4E23\u4E26\u4E29\u4E2E\u4E2F\u4E31\u4E33\u4E35\u4E37\u4E3C\u4E40\u4E41\u4E42\u4E44\u4E46\u4E4A\u4E51\u4E55\u4E57\u4E5A\u4E5B\u4E62\u4E63\u4E64\u4E65\u4E67\u4E68\u4E6A", 5, "\u4E72\u4E74", 9, "\u4E7F", 6, "\u4E87\u4E8A"], + ["8180", "\u4E90\u4E96\u4E97\u4E99\u4E9C\u4E9D\u4E9E\u4EA3\u4EAA\u4EAF\u4EB0\u4EB1\u4EB4\u4EB6\u4EB7\u4EB8\u4EB9\u4EBC\u4EBD\u4EBE\u4EC8\u4ECC\u4ECF\u4ED0\u4ED2\u4EDA\u4EDB\u4EDC\u4EE0\u4EE2\u4EE6\u4EE7\u4EE9\u4EED\u4EEE\u4EEF\u4EF1\u4EF4\u4EF8\u4EF9\u4EFA\u4EFC\u4EFE\u4F00\u4F02", 6, "\u4F0B\u4F0C\u4F12", 4, "\u4F1C\u4F1D\u4F21\u4F23\u4F28\u4F29\u4F2C\u4F2D\u4F2E\u4F31\u4F33\u4F35\u4F37\u4F39\u4F3B\u4F3E", 4, "\u4F44\u4F45\u4F47", 5, "\u4F52\u4F54\u4F56\u4F61\u4F62\u4F66\u4F68\u4F6A\u4F6B\u4F6D\u4F6E\u4F71\u4F72\u4F75\u4F77\u4F78\u4F79\u4F7A\u4F7D\u4F80\u4F81\u4F82\u4F85\u4F86\u4F87\u4F8A\u4F8C\u4F8E\u4F90\u4F92\u4F93\u4F95\u4F96\u4F98\u4F99\u4F9A\u4F9C\u4F9E\u4F9F\u4FA1\u4FA2"], + ["8240", "\u4FA4\u4FAB\u4FAD\u4FB0", 4, "\u4FB6", 8, "\u4FC0\u4FC1\u4FC2\u4FC6\u4FC7\u4FC8\u4FC9\u4FCB\u4FCC\u4FCD\u4FD2", 4, "\u4FD9\u4FDB\u4FE0\u4FE2\u4FE4\u4FE5\u4FE7\u4FEB\u4FEC\u4FF0\u4FF2\u4FF4\u4FF5\u4FF6\u4FF7\u4FF9\u4FFB\u4FFC\u4FFD\u4FFF", 11], + ["8280", "\u500B\u500E\u5010\u5011\u5013\u5015\u5016\u5017\u501B\u501D\u501E\u5020\u5022\u5023\u5024\u5027\u502B\u502F", 10, "\u503B\u503D\u503F\u5040\u5041\u5042\u5044\u5045\u5046\u5049\u504A\u504B\u504D\u5050", 4, "\u5056\u5057\u5058\u5059\u505B\u505D", 7, "\u5066", 5, "\u506D", 8, "\u5078\u5079\u507A\u507C\u507D\u5081\u5082\u5083\u5084\u5086\u5087\u5089\u508A\u508B\u508C\u508E", 20, "\u50A4\u50A6\u50AA\u50AB\u50AD", 4, "\u50B3", 6, "\u50BC"], + ["8340", "\u50BD", 17, "\u50D0", 5, "\u50D7\u50D8\u50D9\u50DB", 10, "\u50E8\u50E9\u50EA\u50EB\u50EF\u50F0\u50F1\u50F2\u50F4\u50F6", 4, "\u50FC", 9, "\u5108"], + ["8380", "\u5109\u510A\u510C", 5, "\u5113", 13, "\u5122", 28, "\u5142\u5147\u514A\u514C\u514E\u514F\u5150\u5152\u5153\u5157\u5158\u5159\u515B\u515D", 4, "\u5163\u5164\u5166\u5167\u5169\u516A\u516F\u5172\u517A\u517E\u517F\u5183\u5184\u5186\u5187\u518A\u518B\u518E\u518F\u5190\u5191\u5193\u5194\u5198\u519A\u519D\u519E\u519F\u51A1\u51A3\u51A6", 4, "\u51AD\u51AE\u51B4\u51B8\u51B9\u51BA\u51BE\u51BF\u51C1\u51C2\u51C3\u51C5\u51C8\u51CA\u51CD\u51CE\u51D0\u51D2", 5], + ["8440", "\u51D8\u51D9\u51DA\u51DC\u51DE\u51DF\u51E2\u51E3\u51E5", 5, "\u51EC\u51EE\u51F1\u51F2\u51F4\u51F7\u51FE\u5204\u5205\u5209\u520B\u520C\u520F\u5210\u5213\u5214\u5215\u521C\u521E\u521F\u5221\u5222\u5223\u5225\u5226\u5227\u522A\u522C\u522F\u5231\u5232\u5234\u5235\u523C\u523E\u5244", 5, "\u524B\u524E\u524F\u5252\u5253\u5255\u5257\u5258"], + ["8480", "\u5259\u525A\u525B\u525D\u525F\u5260\u5262\u5263\u5264\u5266\u5268\u526B\u526C\u526D\u526E\u5270\u5271\u5273", 9, "\u527E\u5280\u5283", 4, "\u5289", 6, "\u5291\u5292\u5294", 6, "\u529C\u52A4\u52A5\u52A6\u52A7\u52AE\u52AF\u52B0\u52B4", 9, "\u52C0\u52C1\u52C2\u52C4\u52C5\u52C6\u52C8\u52CA\u52CC\u52CD\u52CE\u52CF\u52D1\u52D3\u52D4\u52D5\u52D7\u52D9", 5, "\u52E0\u52E1\u52E2\u52E3\u52E5", 10, "\u52F1", 7, "\u52FB\u52FC\u52FD\u5301\u5302\u5303\u5304\u5307\u5309\u530A\u530B\u530C\u530E"], + ["8540", "\u5311\u5312\u5313\u5314\u5318\u531B\u531C\u531E\u531F\u5322\u5324\u5325\u5327\u5328\u5329\u532B\u532C\u532D\u532F", 9, "\u533C\u533D\u5340\u5342\u5344\u5346\u534B\u534C\u534D\u5350\u5354\u5358\u5359\u535B\u535D\u5365\u5368\u536A\u536C\u536D\u5372\u5376\u5379\u537B\u537C\u537D\u537E\u5380\u5381\u5383\u5387\u5388\u538A\u538E\u538F"], + ["8580", "\u5390", 4, "\u5396\u5397\u5399\u539B\u539C\u539E\u53A0\u53A1\u53A4\u53A7\u53AA\u53AB\u53AC\u53AD\u53AF", 6, "\u53B7\u53B8\u53B9\u53BA\u53BC\u53BD\u53BE\u53C0\u53C3", 4, "\u53CE\u53CF\u53D0\u53D2\u53D3\u53D5\u53DA\u53DC\u53DD\u53DE\u53E1\u53E2\u53E7\u53F4\u53FA\u53FE\u53FF\u5400\u5402\u5405\u5407\u540B\u5414\u5418\u5419\u541A\u541C\u5422\u5424\u5425\u542A\u5430\u5433\u5436\u5437\u543A\u543D\u543F\u5441\u5442\u5444\u5445\u5447\u5449\u544C\u544D\u544E\u544F\u5451\u545A\u545D", 4, "\u5463\u5465\u5467\u5469", 7, "\u5474\u5479\u547A\u547E\u547F\u5481\u5483\u5485\u5487\u5488\u5489\u548A\u548D\u5491\u5493\u5497\u5498\u549C\u549E\u549F\u54A0\u54A1"], + ["8640", "\u54A2\u54A5\u54AE\u54B0\u54B2\u54B5\u54B6\u54B7\u54B9\u54BA\u54BC\u54BE\u54C3\u54C5\u54CA\u54CB\u54D6\u54D8\u54DB\u54E0", 4, "\u54EB\u54EC\u54EF\u54F0\u54F1\u54F4", 5, "\u54FB\u54FE\u5500\u5502\u5503\u5504\u5505\u5508\u550A", 4, "\u5512\u5513\u5515", 5, "\u551C\u551D\u551E\u551F\u5521\u5525\u5526"], + ["8680", "\u5528\u5529\u552B\u552D\u5532\u5534\u5535\u5536\u5538\u5539\u553A\u553B\u553D\u5540\u5542\u5545\u5547\u5548\u554B", 4, "\u5551\u5552\u5553\u5554\u5557", 4, "\u555D\u555E\u555F\u5560\u5562\u5563\u5568\u5569\u556B\u556F", 5, "\u5579\u557A\u557D\u557F\u5585\u5586\u558C\u558D\u558E\u5590\u5592\u5593\u5595\u5596\u5597\u559A\u559B\u559E\u55A0", 6, "\u55A8", 8, "\u55B2\u55B4\u55B6\u55B8\u55BA\u55BC\u55BF", 4, "\u55C6\u55C7\u55C8\u55CA\u55CB\u55CE\u55CF\u55D0\u55D5\u55D7", 4, "\u55DE\u55E0\u55E2\u55E7\u55E9\u55ED\u55EE\u55F0\u55F1\u55F4\u55F6\u55F8", 4, "\u55FF\u5602\u5603\u5604\u5605"], + ["8740", "\u5606\u5607\u560A\u560B\u560D\u5610", 7, "\u5619\u561A\u561C\u561D\u5620\u5621\u5622\u5625\u5626\u5628\u5629\u562A\u562B\u562E\u562F\u5630\u5633\u5635\u5637\u5638\u563A\u563C\u563D\u563E\u5640", 11, "\u564F", 4, "\u5655\u5656\u565A\u565B\u565D", 4], + ["8780", "\u5663\u5665\u5666\u5667\u566D\u566E\u566F\u5670\u5672\u5673\u5674\u5675\u5677\u5678\u5679\u567A\u567D", 7, "\u5687", 6, "\u5690\u5691\u5692\u5694", 14, "\u56A4", 10, "\u56B0", 6, "\u56B8\u56B9\u56BA\u56BB\u56BD", 12, "\u56CB", 8, "\u56D5\u56D6\u56D8\u56D9\u56DC\u56E3\u56E5", 5, "\u56EC\u56EE\u56EF\u56F2\u56F3\u56F6\u56F7\u56F8\u56FB\u56FC\u5700\u5701\u5702\u5705\u5707\u570B", 6], + ["8840", "\u5712", 9, "\u571D\u571E\u5720\u5721\u5722\u5724\u5725\u5726\u5727\u572B\u5731\u5732\u5734", 4, "\u573C\u573D\u573F\u5741\u5743\u5744\u5745\u5746\u5748\u5749\u574B\u5752", 4, "\u5758\u5759\u5762\u5763\u5765\u5767\u576C\u576E\u5770\u5771\u5772\u5774\u5775\u5778\u5779\u577A\u577D\u577E\u577F\u5780"], + ["8880", "\u5781\u5787\u5788\u5789\u578A\u578D", 4, "\u5794", 6, "\u579C\u579D\u579E\u579F\u57A5\u57A8\u57AA\u57AC\u57AF\u57B0\u57B1\u57B3\u57B5\u57B6\u57B7\u57B9", 8, "\u57C4", 6, "\u57CC\u57CD\u57D0\u57D1\u57D3\u57D6\u57D7\u57DB\u57DC\u57DE\u57E1\u57E2\u57E3\u57E5", 7, "\u57EE\u57F0\u57F1\u57F2\u57F3\u57F5\u57F6\u57F7\u57FB\u57FC\u57FE\u57FF\u5801\u5803\u5804\u5805\u5808\u5809\u580A\u580C\u580E\u580F\u5810\u5812\u5813\u5814\u5816\u5817\u5818\u581A\u581B\u581C\u581D\u581F\u5822\u5823\u5825", 4, "\u582B", 4, "\u5831\u5832\u5833\u5834\u5836", 7], + ["8940", "\u583E", 5, "\u5845", 6, "\u584E\u584F\u5850\u5852\u5853\u5855\u5856\u5857\u5859", 4, "\u585F", 5, "\u5866", 4, "\u586D", 16, "\u587F\u5882\u5884\u5886\u5887\u5888\u588A\u588B\u588C"], + ["8980", "\u588D", 4, "\u5894", 4, "\u589B\u589C\u589D\u58A0", 7, "\u58AA", 17, "\u58BD\u58BE\u58BF\u58C0\u58C2\u58C3\u58C4\u58C6", 10, "\u58D2\u58D3\u58D4\u58D6", 13, "\u58E5", 5, "\u58ED\u58EF\u58F1\u58F2\u58F4\u58F5\u58F7\u58F8\u58FA", 7, "\u5903\u5905\u5906\u5908", 4, "\u590E\u5910\u5911\u5912\u5913\u5917\u5918\u591B\u591D\u591E\u5920\u5921\u5922\u5923\u5926\u5928\u592C\u5930\u5932\u5933\u5935\u5936\u593B"], + ["8a40", "\u593D\u593E\u593F\u5940\u5943\u5945\u5946\u594A\u594C\u594D\u5950\u5952\u5953\u5959\u595B", 4, "\u5961\u5963\u5964\u5966", 12, "\u5975\u5977\u597A\u597B\u597C\u597E\u597F\u5980\u5985\u5989\u598B\u598C\u598E\u598F\u5990\u5991\u5994\u5995\u5998\u599A\u599B\u599C\u599D\u599F\u59A0\u59A1\u59A2\u59A6"], + ["8a80", "\u59A7\u59AC\u59AD\u59B0\u59B1\u59B3", 5, "\u59BA\u59BC\u59BD\u59BF", 6, "\u59C7\u59C8\u59C9\u59CC\u59CD\u59CE\u59CF\u59D5\u59D6\u59D9\u59DB\u59DE", 4, "\u59E4\u59E6\u59E7\u59E9\u59EA\u59EB\u59ED", 11, "\u59FA\u59FC\u59FD\u59FE\u5A00\u5A02\u5A0A\u5A0B\u5A0D\u5A0E\u5A0F\u5A10\u5A12\u5A14\u5A15\u5A16\u5A17\u5A19\u5A1A\u5A1B\u5A1D\u5A1E\u5A21\u5A22\u5A24\u5A26\u5A27\u5A28\u5A2A", 6, "\u5A33\u5A35\u5A37", 4, "\u5A3D\u5A3E\u5A3F\u5A41", 4, "\u5A47\u5A48\u5A4B", 9, "\u5A56\u5A57\u5A58\u5A59\u5A5B", 5], + ["8b40", "\u5A61\u5A63\u5A64\u5A65\u5A66\u5A68\u5A69\u5A6B", 8, "\u5A78\u5A79\u5A7B\u5A7C\u5A7D\u5A7E\u5A80", 17, "\u5A93", 6, "\u5A9C", 13, "\u5AAB\u5AAC"], + ["8b80", "\u5AAD", 4, "\u5AB4\u5AB6\u5AB7\u5AB9", 4, "\u5ABF\u5AC0\u5AC3", 5, "\u5ACA\u5ACB\u5ACD", 4, "\u5AD3\u5AD5\u5AD7\u5AD9\u5ADA\u5ADB\u5ADD\u5ADE\u5ADF\u5AE2\u5AE4\u5AE5\u5AE7\u5AE8\u5AEA\u5AEC", 4, "\u5AF2", 22, "\u5B0A", 11, "\u5B18", 25, "\u5B33\u5B35\u5B36\u5B38", 7, "\u5B41", 6], + ["8c40", "\u5B48", 7, "\u5B52\u5B56\u5B5E\u5B60\u5B61\u5B67\u5B68\u5B6B\u5B6D\u5B6E\u5B6F\u5B72\u5B74\u5B76\u5B77\u5B78\u5B79\u5B7B\u5B7C\u5B7E\u5B7F\u5B82\u5B86\u5B8A\u5B8D\u5B8E\u5B90\u5B91\u5B92\u5B94\u5B96\u5B9F\u5BA7\u5BA8\u5BA9\u5BAC\u5BAD\u5BAE\u5BAF\u5BB1\u5BB2\u5BB7\u5BBA\u5BBB\u5BBC\u5BC0\u5BC1\u5BC3\u5BC8\u5BC9\u5BCA\u5BCB\u5BCD\u5BCE\u5BCF"], + ["8c80", "\u5BD1\u5BD4", 8, "\u5BE0\u5BE2\u5BE3\u5BE6\u5BE7\u5BE9", 4, "\u5BEF\u5BF1", 6, "\u5BFD\u5BFE\u5C00\u5C02\u5C03\u5C05\u5C07\u5C08\u5C0B\u5C0C\u5C0D\u5C0E\u5C10\u5C12\u5C13\u5C17\u5C19\u5C1B\u5C1E\u5C1F\u5C20\u5C21\u5C23\u5C26\u5C28\u5C29\u5C2A\u5C2B\u5C2D\u5C2E\u5C2F\u5C30\u5C32\u5C33\u5C35\u5C36\u5C37\u5C43\u5C44\u5C46\u5C47\u5C4C\u5C4D\u5C52\u5C53\u5C54\u5C56\u5C57\u5C58\u5C5A\u5C5B\u5C5C\u5C5D\u5C5F\u5C62\u5C64\u5C67", 6, "\u5C70\u5C72", 6, "\u5C7B\u5C7C\u5C7D\u5C7E\u5C80\u5C83", 4, "\u5C89\u5C8A\u5C8B\u5C8E\u5C8F\u5C92\u5C93\u5C95\u5C9D", 4, "\u5CA4", 4], + ["8d40", "\u5CAA\u5CAE\u5CAF\u5CB0\u5CB2\u5CB4\u5CB6\u5CB9\u5CBA\u5CBB\u5CBC\u5CBE\u5CC0\u5CC2\u5CC3\u5CC5", 5, "\u5CCC", 5, "\u5CD3", 5, "\u5CDA", 6, "\u5CE2\u5CE3\u5CE7\u5CE9\u5CEB\u5CEC\u5CEE\u5CEF\u5CF1", 9, "\u5CFC", 4], + ["8d80", "\u5D01\u5D04\u5D05\u5D08", 5, "\u5D0F", 4, "\u5D15\u5D17\u5D18\u5D19\u5D1A\u5D1C\u5D1D\u5D1F", 4, "\u5D25\u5D28\u5D2A\u5D2B\u5D2C\u5D2F", 4, "\u5D35", 7, "\u5D3F", 7, "\u5D48\u5D49\u5D4D", 10, "\u5D59\u5D5A\u5D5C\u5D5E", 10, "\u5D6A\u5D6D\u5D6E\u5D70\u5D71\u5D72\u5D73\u5D75", 12, "\u5D83", 21, "\u5D9A\u5D9B\u5D9C\u5D9E\u5D9F\u5DA0"], + ["8e40", "\u5DA1", 21, "\u5DB8", 12, "\u5DC6", 6, "\u5DCE", 12, "\u5DDC\u5DDF\u5DE0\u5DE3\u5DE4\u5DEA\u5DEC\u5DED"], + ["8e80", "\u5DF0\u5DF5\u5DF6\u5DF8", 4, "\u5DFF\u5E00\u5E04\u5E07\u5E09\u5E0A\u5E0B\u5E0D\u5E0E\u5E12\u5E13\u5E17\u5E1E", 7, "\u5E28", 4, "\u5E2F\u5E30\u5E32", 4, "\u5E39\u5E3A\u5E3E\u5E3F\u5E40\u5E41\u5E43\u5E46", 5, "\u5E4D", 6, "\u5E56", 4, "\u5E5C\u5E5D\u5E5F\u5E60\u5E63", 14, "\u5E75\u5E77\u5E79\u5E7E\u5E81\u5E82\u5E83\u5E85\u5E88\u5E89\u5E8C\u5E8D\u5E8E\u5E92\u5E98\u5E9B\u5E9D\u5EA1\u5EA2\u5EA3\u5EA4\u5EA8", 4, "\u5EAE", 4, "\u5EB4\u5EBA\u5EBB\u5EBC\u5EBD\u5EBF", 6], + ["8f40", "\u5EC6\u5EC7\u5EC8\u5ECB", 5, "\u5ED4\u5ED5\u5ED7\u5ED8\u5ED9\u5EDA\u5EDC", 11, "\u5EE9\u5EEB", 8, "\u5EF5\u5EF8\u5EF9\u5EFB\u5EFC\u5EFD\u5F05\u5F06\u5F07\u5F09\u5F0C\u5F0D\u5F0E\u5F10\u5F12\u5F14\u5F16\u5F19\u5F1A\u5F1C\u5F1D\u5F1E\u5F21\u5F22\u5F23\u5F24"], + ["8f80", "\u5F28\u5F2B\u5F2C\u5F2E\u5F30\u5F32", 6, "\u5F3B\u5F3D\u5F3E\u5F3F\u5F41", 14, "\u5F51\u5F54\u5F59\u5F5A\u5F5B\u5F5C\u5F5E\u5F5F\u5F60\u5F63\u5F65\u5F67\u5F68\u5F6B\u5F6E\u5F6F\u5F72\u5F74\u5F75\u5F76\u5F78\u5F7A\u5F7D\u5F7E\u5F7F\u5F83\u5F86\u5F8D\u5F8E\u5F8F\u5F91\u5F93\u5F94\u5F96\u5F9A\u5F9B\u5F9D\u5F9E\u5F9F\u5FA0\u5FA2", 5, "\u5FA9\u5FAB\u5FAC\u5FAF", 5, "\u5FB6\u5FB8\u5FB9\u5FBA\u5FBB\u5FBE", 4, "\u5FC7\u5FC8\u5FCA\u5FCB\u5FCE\u5FD3\u5FD4\u5FD5\u5FDA\u5FDB\u5FDC\u5FDE\u5FDF\u5FE2\u5FE3\u5FE5\u5FE6\u5FE8\u5FE9\u5FEC\u5FEF\u5FF0\u5FF2\u5FF3\u5FF4\u5FF6\u5FF7\u5FF9\u5FFA\u5FFC\u6007"], + ["9040", "\u6008\u6009\u600B\u600C\u6010\u6011\u6013\u6017\u6018\u601A\u601E\u601F\u6022\u6023\u6024\u602C\u602D\u602E\u6030", 4, "\u6036", 4, "\u603D\u603E\u6040\u6044", 6, "\u604C\u604E\u604F\u6051\u6053\u6054\u6056\u6057\u6058\u605B\u605C\u605E\u605F\u6060\u6061\u6065\u6066\u606E\u6071\u6072\u6074\u6075\u6077\u607E\u6080"], + ["9080", "\u6081\u6082\u6085\u6086\u6087\u6088\u608A\u608B\u608E\u608F\u6090\u6091\u6093\u6095\u6097\u6098\u6099\u609C\u609E\u60A1\u60A2\u60A4\u60A5\u60A7\u60A9\u60AA\u60AE\u60B0\u60B3\u60B5\u60B6\u60B7\u60B9\u60BA\u60BD", 7, "\u60C7\u60C8\u60C9\u60CC", 4, "\u60D2\u60D3\u60D4\u60D6\u60D7\u60D9\u60DB\u60DE\u60E1", 4, "\u60EA\u60F1\u60F2\u60F5\u60F7\u60F8\u60FB", 4, "\u6102\u6103\u6104\u6105\u6107\u610A\u610B\u610C\u6110", 4, "\u6116\u6117\u6118\u6119\u611B\u611C\u611D\u611E\u6121\u6122\u6125\u6128\u6129\u612A\u612C", 18, "\u6140", 6], + ["9140", "\u6147\u6149\u614B\u614D\u614F\u6150\u6152\u6153\u6154\u6156", 6, "\u615E\u615F\u6160\u6161\u6163\u6164\u6165\u6166\u6169", 6, "\u6171\u6172\u6173\u6174\u6176\u6178", 18, "\u618C\u618D\u618F", 4, "\u6195"], + ["9180", "\u6196", 6, "\u619E", 8, "\u61AA\u61AB\u61AD", 9, "\u61B8", 5, "\u61BF\u61C0\u61C1\u61C3", 4, "\u61C9\u61CC", 4, "\u61D3\u61D5", 16, "\u61E7", 13, "\u61F6", 8, "\u6200", 5, "\u6207\u6209\u6213\u6214\u6219\u621C\u621D\u621E\u6220\u6223\u6226\u6227\u6228\u6229\u622B\u622D\u622F\u6230\u6231\u6232\u6235\u6236\u6238", 4, "\u6242\u6244\u6245\u6246\u624A"], + ["9240", "\u624F\u6250\u6255\u6256\u6257\u6259\u625A\u625C", 6, "\u6264\u6265\u6268\u6271\u6272\u6274\u6275\u6277\u6278\u627A\u627B\u627D\u6281\u6282\u6283\u6285\u6286\u6287\u6288\u628B", 5, "\u6294\u6299\u629C\u629D\u629E\u62A3\u62A6\u62A7\u62A9\u62AA\u62AD\u62AE\u62AF\u62B0\u62B2\u62B3\u62B4\u62B6\u62B7\u62B8\u62BA\u62BE\u62C0\u62C1"], + ["9280", "\u62C3\u62CB\u62CF\u62D1\u62D5\u62DD\u62DE\u62E0\u62E1\u62E4\u62EA\u62EB\u62F0\u62F2\u62F5\u62F8\u62F9\u62FA\u62FB\u6300\u6303\u6304\u6305\u6306\u630A\u630B\u630C\u630D\u630F\u6310\u6312\u6313\u6314\u6315\u6317\u6318\u6319\u631C\u6326\u6327\u6329\u632C\u632D\u632E\u6330\u6331\u6333", 5, "\u633B\u633C\u633E\u633F\u6340\u6341\u6344\u6347\u6348\u634A\u6351\u6352\u6353\u6354\u6356", 7, "\u6360\u6364\u6365\u6366\u6368\u636A\u636B\u636C\u636F\u6370\u6372\u6373\u6374\u6375\u6378\u6379\u637C\u637D\u637E\u637F\u6381\u6383\u6384\u6385\u6386\u638B\u638D\u6391\u6393\u6394\u6395\u6397\u6399", 6, "\u63A1\u63A4\u63A6\u63AB\u63AF\u63B1\u63B2\u63B5\u63B6\u63B9\u63BB\u63BD\u63BF\u63C0"], + ["9340", "\u63C1\u63C2\u63C3\u63C5\u63C7\u63C8\u63CA\u63CB\u63CC\u63D1\u63D3\u63D4\u63D5\u63D7", 6, "\u63DF\u63E2\u63E4", 4, "\u63EB\u63EC\u63EE\u63EF\u63F0\u63F1\u63F3\u63F5\u63F7\u63F9\u63FA\u63FB\u63FC\u63FE\u6403\u6404\u6406", 4, "\u640D\u640E\u6411\u6412\u6415", 5, "\u641D\u641F\u6422\u6423\u6424"], + ["9380", "\u6425\u6427\u6428\u6429\u642B\u642E", 5, "\u6435", 4, "\u643B\u643C\u643E\u6440\u6442\u6443\u6449\u644B", 6, "\u6453\u6455\u6456\u6457\u6459", 4, "\u645F", 7, "\u6468\u646A\u646B\u646C\u646E", 9, "\u647B", 6, "\u6483\u6486\u6488", 8, "\u6493\u6494\u6497\u6498\u649A\u649B\u649C\u649D\u649F", 4, "\u64A5\u64A6\u64A7\u64A8\u64AA\u64AB\u64AF\u64B1\u64B2\u64B3\u64B4\u64B6\u64B9\u64BB\u64BD\u64BE\u64BF\u64C1\u64C3\u64C4\u64C6", 6, "\u64CF\u64D1\u64D3\u64D4\u64D5\u64D6\u64D9\u64DA"], + ["9440", "\u64DB\u64DC\u64DD\u64DF\u64E0\u64E1\u64E3\u64E5\u64E7", 24, "\u6501", 7, "\u650A", 7, "\u6513", 4, "\u6519", 8], + ["9480", "\u6522\u6523\u6524\u6526", 4, "\u652C\u652D\u6530\u6531\u6532\u6533\u6537\u653A\u653C\u653D\u6540", 4, "\u6546\u6547\u654A\u654B\u654D\u654E\u6550\u6552\u6553\u6554\u6557\u6558\u655A\u655C\u655F\u6560\u6561\u6564\u6565\u6567\u6568\u6569\u656A\u656D\u656E\u656F\u6571\u6573\u6575\u6576\u6578", 14, "\u6588\u6589\u658A\u658D\u658E\u658F\u6592\u6594\u6595\u6596\u6598\u659A\u659D\u659E\u65A0\u65A2\u65A3\u65A6\u65A8\u65AA\u65AC\u65AE\u65B1", 7, "\u65BA\u65BB\u65BE\u65BF\u65C0\u65C2\u65C7\u65C8\u65C9\u65CA\u65CD\u65D0\u65D1\u65D3\u65D4\u65D5\u65D8", 7, "\u65E1\u65E3\u65E4\u65EA\u65EB"], + ["9540", "\u65F2\u65F3\u65F4\u65F5\u65F8\u65F9\u65FB", 4, "\u6601\u6604\u6605\u6607\u6608\u6609\u660B\u660D\u6610\u6611\u6612\u6616\u6617\u6618\u661A\u661B\u661C\u661E\u6621\u6622\u6623\u6624\u6626\u6629\u662A\u662B\u662C\u662E\u6630\u6632\u6633\u6637", 4, "\u663D\u663F\u6640\u6642\u6644", 6, "\u664D\u664E\u6650\u6651\u6658"], + ["9580", "\u6659\u665B\u665C\u665D\u665E\u6660\u6662\u6663\u6665\u6667\u6669", 4, "\u6671\u6672\u6673\u6675\u6678\u6679\u667B\u667C\u667D\u667F\u6680\u6681\u6683\u6685\u6686\u6688\u6689\u668A\u668B\u668D\u668E\u668F\u6690\u6692\u6693\u6694\u6695\u6698", 4, "\u669E", 8, "\u66A9", 4, "\u66AF", 4, "\u66B5\u66B6\u66B7\u66B8\u66BA\u66BB\u66BC\u66BD\u66BF", 25, "\u66DA\u66DE", 7, "\u66E7\u66E8\u66EA", 5, "\u66F1\u66F5\u66F6\u66F8\u66FA\u66FB\u66FD\u6701\u6702\u6703"], + ["9640", "\u6704\u6705\u6706\u6707\u670C\u670E\u670F\u6711\u6712\u6713\u6716\u6718\u6719\u671A\u671C\u671E\u6720", 5, "\u6727\u6729\u672E\u6730\u6732\u6733\u6736\u6737\u6738\u6739\u673B\u673C\u673E\u673F\u6741\u6744\u6745\u6747\u674A\u674B\u674D\u6752\u6754\u6755\u6757", 4, "\u675D\u6762\u6763\u6764\u6766\u6767\u676B\u676C\u676E\u6771\u6774\u6776"], + ["9680", "\u6778\u6779\u677A\u677B\u677D\u6780\u6782\u6783\u6785\u6786\u6788\u678A\u678C\u678D\u678E\u678F\u6791\u6792\u6793\u6794\u6796\u6799\u679B\u679F\u67A0\u67A1\u67A4\u67A6\u67A9\u67AC\u67AE\u67B1\u67B2\u67B4\u67B9", 7, "\u67C2\u67C5", 9, "\u67D5\u67D6\u67D7\u67DB\u67DF\u67E1\u67E3\u67E4\u67E6\u67E7\u67E8\u67EA\u67EB\u67ED\u67EE\u67F2\u67F5", 7, "\u67FE\u6801\u6802\u6803\u6804\u6806\u680D\u6810\u6812\u6814\u6815\u6818", 4, "\u681E\u681F\u6820\u6822", 6, "\u682B", 6, "\u6834\u6835\u6836\u683A\u683B\u683F\u6847\u684B\u684D\u684F\u6852\u6856", 5], + ["9740", "\u685C\u685D\u685E\u685F\u686A\u686C", 7, "\u6875\u6878", 8, "\u6882\u6884\u6887", 7, "\u6890\u6891\u6892\u6894\u6895\u6896\u6898", 9, "\u68A3\u68A4\u68A5\u68A9\u68AA\u68AB\u68AC\u68AE\u68B1\u68B2\u68B4\u68B6\u68B7\u68B8"], + ["9780", "\u68B9", 6, "\u68C1\u68C3", 5, "\u68CA\u68CC\u68CE\u68CF\u68D0\u68D1\u68D3\u68D4\u68D6\u68D7\u68D9\u68DB", 4, "\u68E1\u68E2\u68E4", 9, "\u68EF\u68F2\u68F3\u68F4\u68F6\u68F7\u68F8\u68FB\u68FD\u68FE\u68FF\u6900\u6902\u6903\u6904\u6906", 4, "\u690C\u690F\u6911\u6913", 11, "\u6921\u6922\u6923\u6925", 7, "\u692E\u692F\u6931\u6932\u6933\u6935\u6936\u6937\u6938\u693A\u693B\u693C\u693E\u6940\u6941\u6943", 16, "\u6955\u6956\u6958\u6959\u695B\u695C\u695F"], + ["9840", "\u6961\u6962\u6964\u6965\u6967\u6968\u6969\u696A\u696C\u696D\u696F\u6970\u6972", 4, "\u697A\u697B\u697D\u697E\u697F\u6981\u6983\u6985\u698A\u698B\u698C\u698E", 5, "\u6996\u6997\u6999\u699A\u699D", 9, "\u69A9\u69AA\u69AC\u69AE\u69AF\u69B0\u69B2\u69B3\u69B5\u69B6\u69B8\u69B9\u69BA\u69BC\u69BD"], + ["9880", "\u69BE\u69BF\u69C0\u69C2", 7, "\u69CB\u69CD\u69CF\u69D1\u69D2\u69D3\u69D5", 5, "\u69DC\u69DD\u69DE\u69E1", 11, "\u69EE\u69EF\u69F0\u69F1\u69F3", 9, "\u69FE\u6A00", 9, "\u6A0B", 11, "\u6A19", 5, "\u6A20\u6A22", 5, "\u6A29\u6A2B\u6A2C\u6A2D\u6A2E\u6A30\u6A32\u6A33\u6A34\u6A36", 6, "\u6A3F", 4, "\u6A45\u6A46\u6A48", 7, "\u6A51", 6, "\u6A5A"], + ["9940", "\u6A5C", 4, "\u6A62\u6A63\u6A64\u6A66", 10, "\u6A72", 6, "\u6A7A\u6A7B\u6A7D\u6A7E\u6A7F\u6A81\u6A82\u6A83\u6A85", 8, "\u6A8F\u6A92", 4, "\u6A98", 7, "\u6AA1", 5], + ["9980", "\u6AA7\u6AA8\u6AAA\u6AAD", 114, "\u6B25\u6B26\u6B28", 6], + ["9a40", "\u6B2F\u6B30\u6B31\u6B33\u6B34\u6B35\u6B36\u6B38\u6B3B\u6B3C\u6B3D\u6B3F\u6B40\u6B41\u6B42\u6B44\u6B45\u6B48\u6B4A\u6B4B\u6B4D", 11, "\u6B5A", 7, "\u6B68\u6B69\u6B6B", 13, "\u6B7A\u6B7D\u6B7E\u6B7F\u6B80\u6B85\u6B88"], + ["9a80", "\u6B8C\u6B8E\u6B8F\u6B90\u6B91\u6B94\u6B95\u6B97\u6B98\u6B99\u6B9C", 4, "\u6BA2", 7, "\u6BAB", 7, "\u6BB6\u6BB8", 6, "\u6BC0\u6BC3\u6BC4\u6BC6", 4, "\u6BCC\u6BCE\u6BD0\u6BD1\u6BD8\u6BDA\u6BDC", 4, "\u6BE2", 7, "\u6BEC\u6BED\u6BEE\u6BF0\u6BF1\u6BF2\u6BF4\u6BF6\u6BF7\u6BF8\u6BFA\u6BFB\u6BFC\u6BFE", 6, "\u6C08", 4, "\u6C0E\u6C12\u6C17\u6C1C\u6C1D\u6C1E\u6C20\u6C23\u6C25\u6C2B\u6C2C\u6C2D\u6C31\u6C33\u6C36\u6C37\u6C39\u6C3A\u6C3B\u6C3C\u6C3E\u6C3F\u6C43\u6C44\u6C45\u6C48\u6C4B", 4, "\u6C51\u6C52\u6C53\u6C56\u6C58"], + ["9b40", "\u6C59\u6C5A\u6C62\u6C63\u6C65\u6C66\u6C67\u6C6B", 4, "\u6C71\u6C73\u6C75\u6C77\u6C78\u6C7A\u6C7B\u6C7C\u6C7F\u6C80\u6C84\u6C87\u6C8A\u6C8B\u6C8D\u6C8E\u6C91\u6C92\u6C95\u6C96\u6C97\u6C98\u6C9A\u6C9C\u6C9D\u6C9E\u6CA0\u6CA2\u6CA8\u6CAC\u6CAF\u6CB0\u6CB4\u6CB5\u6CB6\u6CB7\u6CBA\u6CC0\u6CC1\u6CC2\u6CC3\u6CC6\u6CC7\u6CC8\u6CCB\u6CCD\u6CCE\u6CCF\u6CD1\u6CD2\u6CD8"], + ["9b80", "\u6CD9\u6CDA\u6CDC\u6CDD\u6CDF\u6CE4\u6CE6\u6CE7\u6CE9\u6CEC\u6CED\u6CF2\u6CF4\u6CF9\u6CFF\u6D00\u6D02\u6D03\u6D05\u6D06\u6D08\u6D09\u6D0A\u6D0D\u6D0F\u6D10\u6D11\u6D13\u6D14\u6D15\u6D16\u6D18\u6D1C\u6D1D\u6D1F", 5, "\u6D26\u6D28\u6D29\u6D2C\u6D2D\u6D2F\u6D30\u6D34\u6D36\u6D37\u6D38\u6D3A\u6D3F\u6D40\u6D42\u6D44\u6D49\u6D4C\u6D50\u6D55\u6D56\u6D57\u6D58\u6D5B\u6D5D\u6D5F\u6D61\u6D62\u6D64\u6D65\u6D67\u6D68\u6D6B\u6D6C\u6D6D\u6D70\u6D71\u6D72\u6D73\u6D75\u6D76\u6D79\u6D7A\u6D7B\u6D7D", 4, "\u6D83\u6D84\u6D86\u6D87\u6D8A\u6D8B\u6D8D\u6D8F\u6D90\u6D92\u6D96", 4, "\u6D9C\u6DA2\u6DA5\u6DAC\u6DAD\u6DB0\u6DB1\u6DB3\u6DB4\u6DB6\u6DB7\u6DB9", 5, "\u6DC1\u6DC2\u6DC3\u6DC8\u6DC9\u6DCA"], + ["9c40", "\u6DCD\u6DCE\u6DCF\u6DD0\u6DD2\u6DD3\u6DD4\u6DD5\u6DD7\u6DDA\u6DDB\u6DDC\u6DDF\u6DE2\u6DE3\u6DE5\u6DE7\u6DE8\u6DE9\u6DEA\u6DED\u6DEF\u6DF0\u6DF2\u6DF4\u6DF5\u6DF6\u6DF8\u6DFA\u6DFD", 7, "\u6E06\u6E07\u6E08\u6E09\u6E0B\u6E0F\u6E12\u6E13\u6E15\u6E18\u6E19\u6E1B\u6E1C\u6E1E\u6E1F\u6E22\u6E26\u6E27\u6E28\u6E2A\u6E2C\u6E2E\u6E30\u6E31\u6E33\u6E35"], + ["9c80", "\u6E36\u6E37\u6E39\u6E3B", 7, "\u6E45", 7, "\u6E4F\u6E50\u6E51\u6E52\u6E55\u6E57\u6E59\u6E5A\u6E5C\u6E5D\u6E5E\u6E60", 10, "\u6E6C\u6E6D\u6E6F", 14, "\u6E80\u6E81\u6E82\u6E84\u6E87\u6E88\u6E8A", 4, "\u6E91", 6, "\u6E99\u6E9A\u6E9B\u6E9D\u6E9E\u6EA0\u6EA1\u6EA3\u6EA4\u6EA6\u6EA8\u6EA9\u6EAB\u6EAC\u6EAD\u6EAE\u6EB0\u6EB3\u6EB5\u6EB8\u6EB9\u6EBC\u6EBE\u6EBF\u6EC0\u6EC3\u6EC4\u6EC5\u6EC6\u6EC8\u6EC9\u6ECA\u6ECC\u6ECD\u6ECE\u6ED0\u6ED2\u6ED6\u6ED8\u6ED9\u6EDB\u6EDC\u6EDD\u6EE3\u6EE7\u6EEA", 5], + ["9d40", "\u6EF0\u6EF1\u6EF2\u6EF3\u6EF5\u6EF6\u6EF7\u6EF8\u6EFA", 7, "\u6F03\u6F04\u6F05\u6F07\u6F08\u6F0A", 4, "\u6F10\u6F11\u6F12\u6F16", 9, "\u6F21\u6F22\u6F23\u6F25\u6F26\u6F27\u6F28\u6F2C\u6F2E\u6F30\u6F32\u6F34\u6F35\u6F37", 6, "\u6F3F\u6F40\u6F41\u6F42"], + ["9d80", "\u6F43\u6F44\u6F45\u6F48\u6F49\u6F4A\u6F4C\u6F4E", 9, "\u6F59\u6F5A\u6F5B\u6F5D\u6F5F\u6F60\u6F61\u6F63\u6F64\u6F65\u6F67", 5, "\u6F6F\u6F70\u6F71\u6F73\u6F75\u6F76\u6F77\u6F79\u6F7B\u6F7D", 6, "\u6F85\u6F86\u6F87\u6F8A\u6F8B\u6F8F", 12, "\u6F9D\u6F9E\u6F9F\u6FA0\u6FA2", 4, "\u6FA8", 10, "\u6FB4\u6FB5\u6FB7\u6FB8\u6FBA", 5, "\u6FC1\u6FC3", 5, "\u6FCA", 6, "\u6FD3", 10, "\u6FDF\u6FE2\u6FE3\u6FE4\u6FE5"], + ["9e40", "\u6FE6", 7, "\u6FF0", 32, "\u7012", 7, "\u701C", 6, "\u7024", 6], + ["9e80", "\u702B", 9, "\u7036\u7037\u7038\u703A", 17, "\u704D\u704E\u7050", 13, "\u705F", 11, "\u706E\u7071\u7072\u7073\u7074\u7077\u7079\u707A\u707B\u707D\u7081\u7082\u7083\u7084\u7086\u7087\u7088\u708B\u708C\u708D\u708F\u7090\u7091\u7093\u7097\u7098\u709A\u709B\u709E", 12, "\u70B0\u70B2\u70B4\u70B5\u70B6\u70BA\u70BE\u70BF\u70C4\u70C5\u70C6\u70C7\u70C9\u70CB", 12, "\u70DA"], + ["9f40", "\u70DC\u70DD\u70DE\u70E0\u70E1\u70E2\u70E3\u70E5\u70EA\u70EE\u70F0", 6, "\u70F8\u70FA\u70FB\u70FC\u70FE", 10, "\u710B", 4, "\u7111\u7112\u7114\u7117\u711B", 10, "\u7127", 7, "\u7132\u7133\u7134"], + ["9f80", "\u7135\u7137", 13, "\u7146\u7147\u7148\u7149\u714B\u714D\u714F", 12, "\u715D\u715F", 4, "\u7165\u7169", 4, "\u716F\u7170\u7171\u7174\u7175\u7176\u7177\u7179\u717B\u717C\u717E", 5, "\u7185", 4, "\u718B\u718C\u718D\u718E\u7190\u7191\u7192\u7193\u7195\u7196\u7197\u719A", 4, "\u71A1", 6, "\u71A9\u71AA\u71AB\u71AD", 5, "\u71B4\u71B6\u71B7\u71B8\u71BA", 8, "\u71C4", 9, "\u71CF", 4], + ["a040", "\u71D6", 9, "\u71E1\u71E2\u71E3\u71E4\u71E6\u71E8", 5, "\u71EF", 9, "\u71FA", 11, "\u7207", 19], + ["a080", "\u721B\u721C\u721E", 9, "\u7229\u722B\u722D\u722E\u722F\u7232\u7233\u7234\u723A\u723C\u723E\u7240", 6, "\u7249\u724A\u724B\u724E\u724F\u7250\u7251\u7253\u7254\u7255\u7257\u7258\u725A\u725C\u725E\u7260\u7263\u7264\u7265\u7268\u726A\u726B\u726C\u726D\u7270\u7271\u7273\u7274\u7276\u7277\u7278\u727B\u727C\u727D\u7282\u7283\u7285", 4, "\u728C\u728E\u7290\u7291\u7293", 11, "\u72A0", 11, "\u72AE\u72B1\u72B2\u72B3\u72B5\u72BA", 6, "\u72C5\u72C6\u72C7\u72C9\u72CA\u72CB\u72CC\u72CF\u72D1\u72D3\u72D4\u72D5\u72D6\u72D8\u72DA\u72DB"], + ["a1a1", "\u3000\u3001\u3002\xB7\u02C9\u02C7\xA8\u3003\u3005\u2014\uFF5E\u2016\u2026\u2018\u2019\u201C\u201D\u3014\u3015\u3008", 7, "\u3016\u3017\u3010\u3011\xB1\xD7\xF7\u2236\u2227\u2228\u2211\u220F\u222A\u2229\u2208\u2237\u221A\u22A5\u2225\u2220\u2312\u2299\u222B\u222E\u2261\u224C\u2248\u223D\u221D\u2260\u226E\u226F\u2264\u2265\u221E\u2235\u2234\u2642\u2640\xB0\u2032\u2033\u2103\uFF04\xA4\uFFE0\uFFE1\u2030\xA7\u2116\u2606\u2605\u25CB\u25CF\u25CE\u25C7\u25C6\u25A1\u25A0\u25B3\u25B2\u203B\u2192\u2190\u2191\u2193\u3013"], + ["a2a1", "\u2170", 9], + ["a2b1", "\u2488", 19, "\u2474", 19, "\u2460", 9], + ["a2e5", "\u3220", 9], + ["a2f1", "\u2160", 11], + ["a3a1", "\uFF01\uFF02\uFF03\uFFE5\uFF05", 88, "\uFFE3"], + ["a4a1", "\u3041", 82], + ["a5a1", "\u30A1", 85], + ["a6a1", "\u0391", 16, "\u03A3", 6], + ["a6c1", "\u03B1", 16, "\u03C3", 6], + ["a6e0", "\uFE35\uFE36\uFE39\uFE3A\uFE3F\uFE40\uFE3D\uFE3E\uFE41\uFE42\uFE43\uFE44"], + ["a6ee", "\uFE3B\uFE3C\uFE37\uFE38\uFE31"], + ["a6f4", "\uFE33\uFE34"], + ["a7a1", "\u0410", 5, "\u0401\u0416", 25], + ["a7d1", "\u0430", 5, "\u0451\u0436", 25], + ["a840", "\u02CA\u02CB\u02D9\u2013\u2015\u2025\u2035\u2105\u2109\u2196\u2197\u2198\u2199\u2215\u221F\u2223\u2252\u2266\u2267\u22BF\u2550", 35, "\u2581", 6], + ["a880", "\u2588", 7, "\u2593\u2594\u2595\u25BC\u25BD\u25E2\u25E3\u25E4\u25E5\u2609\u2295\u3012\u301D\u301E"], + ["a8a1", "\u0101\xE1\u01CE\xE0\u0113\xE9\u011B\xE8\u012B\xED\u01D0\xEC\u014D\xF3\u01D2\xF2\u016B\xFA\u01D4\xF9\u01D6\u01D8\u01DA\u01DC\xFC\xEA\u0251"], + ["a8bd", "\u0144\u0148"], + ["a8c0", "\u0261"], + ["a8c5", "\u3105", 36], + ["a940", "\u3021", 8, "\u32A3\u338E\u338F\u339C\u339D\u339E\u33A1\u33C4\u33CE\u33D1\u33D2\u33D5\uFE30\uFFE2\uFFE4"], + ["a959", "\u2121\u3231"], + ["a95c", "\u2010"], + ["a960", "\u30FC\u309B\u309C\u30FD\u30FE\u3006\u309D\u309E\uFE49", 9, "\uFE54\uFE55\uFE56\uFE57\uFE59", 8], + ["a980", "\uFE62", 4, "\uFE68\uFE69\uFE6A\uFE6B"], + ["a996", "\u3007"], + ["a9a4", "\u2500", 75], + ["aa40", "\u72DC\u72DD\u72DF\u72E2", 5, "\u72EA\u72EB\u72F5\u72F6\u72F9\u72FD\u72FE\u72FF\u7300\u7302\u7304", 5, "\u730B\u730C\u730D\u730F\u7310\u7311\u7312\u7314\u7318\u7319\u731A\u731F\u7320\u7323\u7324\u7326\u7327\u7328\u732D\u732F\u7330\u7332\u7333\u7335\u7336\u733A\u733B\u733C\u733D\u7340", 8], + ["aa80", "\u7349\u734A\u734B\u734C\u734E\u734F\u7351\u7353\u7354\u7355\u7356\u7358", 7, "\u7361", 10, "\u736E\u7370\u7371"], + ["ab40", "\u7372", 11, "\u737F", 4, "\u7385\u7386\u7388\u738A\u738C\u738D\u738F\u7390\u7392\u7393\u7394\u7395\u7397\u7398\u7399\u739A\u739C\u739D\u739E\u73A0\u73A1\u73A3", 5, "\u73AA\u73AC\u73AD\u73B1\u73B4\u73B5\u73B6\u73B8\u73B9\u73BC\u73BD\u73BE\u73BF\u73C1\u73C3", 4], + ["ab80", "\u73CB\u73CC\u73CE\u73D2", 6, "\u73DA\u73DB\u73DC\u73DD\u73DF\u73E1\u73E2\u73E3\u73E4\u73E6\u73E8\u73EA\u73EB\u73EC\u73EE\u73EF\u73F0\u73F1\u73F3", 4], + ["ac40", "\u73F8", 10, "\u7404\u7407\u7408\u740B\u740C\u740D\u740E\u7411", 8, "\u741C", 5, "\u7423\u7424\u7427\u7429\u742B\u742D\u742F\u7431\u7432\u7437", 4, "\u743D\u743E\u743F\u7440\u7442", 11], + ["ac80", "\u744E", 6, "\u7456\u7458\u745D\u7460", 12, "\u746E\u746F\u7471", 4, "\u7478\u7479\u747A"], + ["ad40", "\u747B\u747C\u747D\u747F\u7482\u7484\u7485\u7486\u7488\u7489\u748A\u748C\u748D\u748F\u7491", 10, "\u749D\u749F", 7, "\u74AA", 15, "\u74BB", 12], + ["ad80", "\u74C8", 9, "\u74D3", 8, "\u74DD\u74DF\u74E1\u74E5\u74E7", 6, "\u74F0\u74F1\u74F2"], + ["ae40", "\u74F3\u74F5\u74F8", 6, "\u7500\u7501\u7502\u7503\u7505", 7, "\u750E\u7510\u7512\u7514\u7515\u7516\u7517\u751B\u751D\u751E\u7520", 4, "\u7526\u7527\u752A\u752E\u7534\u7536\u7539\u753C\u753D\u753F\u7541\u7542\u7543\u7544\u7546\u7547\u7549\u754A\u754D\u7550\u7551\u7552\u7553\u7555\u7556\u7557\u7558"], + ["ae80", "\u755D", 7, "\u7567\u7568\u7569\u756B", 6, "\u7573\u7575\u7576\u7577\u757A", 4, "\u7580\u7581\u7582\u7584\u7585\u7587"], + ["af40", "\u7588\u7589\u758A\u758C\u758D\u758E\u7590\u7593\u7595\u7598\u759B\u759C\u759E\u75A2\u75A6", 4, "\u75AD\u75B6\u75B7\u75BA\u75BB\u75BF\u75C0\u75C1\u75C6\u75CB\u75CC\u75CE\u75CF\u75D0\u75D1\u75D3\u75D7\u75D9\u75DA\u75DC\u75DD\u75DF\u75E0\u75E1\u75E5\u75E9\u75EC\u75ED\u75EE\u75EF\u75F2\u75F3\u75F5\u75F6\u75F7\u75F8\u75FA\u75FB\u75FD\u75FE\u7602\u7604\u7606\u7607"], + ["af80", "\u7608\u7609\u760B\u760D\u760E\u760F\u7611\u7612\u7613\u7614\u7616\u761A\u761C\u761D\u761E\u7621\u7623\u7627\u7628\u762C\u762E\u762F\u7631\u7632\u7636\u7637\u7639\u763A\u763B\u763D\u7641\u7642\u7644"], + ["b040", "\u7645", 6, "\u764E", 5, "\u7655\u7657", 4, "\u765D\u765F\u7660\u7661\u7662\u7664", 6, "\u766C\u766D\u766E\u7670", 7, "\u7679\u767A\u767C\u767F\u7680\u7681\u7683\u7685\u7689\u768A\u768C\u768D\u768F\u7690\u7692\u7694\u7695\u7697\u7698\u769A\u769B"], + ["b080", "\u769C", 7, "\u76A5", 8, "\u76AF\u76B0\u76B3\u76B5", 9, "\u76C0\u76C1\u76C3\u554A\u963F\u57C3\u6328\u54CE\u5509\u54C0\u7691\u764C\u853C\u77EE\u827E\u788D\u7231\u9698\u978D\u6C28\u5B89\u4FFA\u6309\u6697\u5CB8\u80FA\u6848\u80AE\u6602\u76CE\u51F9\u6556\u71AC\u7FF1\u8884\u50B2\u5965\u61CA\u6FB3\u82AD\u634C\u6252\u53ED\u5427\u7B06\u516B\u75A4\u5DF4\u62D4\u8DCB\u9776\u628A\u8019\u575D\u9738\u7F62\u7238\u767D\u67CF\u767E\u6446\u4F70\u8D25\u62DC\u7A17\u6591\u73ED\u642C\u6273\u822C\u9881\u677F\u7248\u626E\u62CC\u4F34\u74E3\u534A\u529E\u7ECA\u90A6\u5E2E\u6886\u699C\u8180\u7ED1\u68D2\u78C5\u868C\u9551\u508D\u8C24\u82DE\u80DE\u5305\u8912\u5265"], + ["b140", "\u76C4\u76C7\u76C9\u76CB\u76CC\u76D3\u76D5\u76D9\u76DA\u76DC\u76DD\u76DE\u76E0", 4, "\u76E6", 7, "\u76F0\u76F3\u76F5\u76F6\u76F7\u76FA\u76FB\u76FD\u76FF\u7700\u7702\u7703\u7705\u7706\u770A\u770C\u770E", 10, "\u771B\u771C\u771D\u771E\u7721\u7723\u7724\u7725\u7727\u772A\u772B"], + ["b180", "\u772C\u772E\u7730", 4, "\u7739\u773B\u773D\u773E\u773F\u7742\u7744\u7745\u7746\u7748", 7, "\u7752", 7, "\u775C\u8584\u96F9\u4FDD\u5821\u9971\u5B9D\u62B1\u62A5\u66B4\u8C79\u9C8D\u7206\u676F\u7891\u60B2\u5351\u5317\u8F88\u80CC\u8D1D\u94A1\u500D\u72C8\u5907\u60EB\u7119\u88AB\u5954\u82EF\u672C\u7B28\u5D29\u7EF7\u752D\u6CF5\u8E66\u8FF8\u903C\u9F3B\u6BD4\u9119\u7B14\u5F7C\u78A7\u84D6\u853D\u6BD5\u6BD9\u6BD6\u5E01\u5E87\u75F9\u95ED\u655D\u5F0A\u5FC5\u8F9F\u58C1\u81C2\u907F\u965B\u97AD\u8FB9\u7F16\u8D2C\u6241\u4FBF\u53D8\u535E\u8FA8\u8FA9\u8FAB\u904D\u6807\u5F6A\u8198\u8868\u9CD6\u618B\u522B\u762A\u5F6C\u658C\u6FD2\u6EE8\u5BBE\u6448\u5175\u51B0\u67C4\u4E19\u79C9\u997C\u70B3"], + ["b240", "\u775D\u775E\u775F\u7760\u7764\u7767\u7769\u776A\u776D", 11, "\u777A\u777B\u777C\u7781\u7782\u7783\u7786", 5, "\u778F\u7790\u7793", 11, "\u77A1\u77A3\u77A4\u77A6\u77A8\u77AB\u77AD\u77AE\u77AF\u77B1\u77B2\u77B4\u77B6", 4], + ["b280", "\u77BC\u77BE\u77C0", 12, "\u77CE", 8, "\u77D8\u77D9\u77DA\u77DD", 4, "\u77E4\u75C5\u5E76\u73BB\u83E0\u64AD\u62E8\u94B5\u6CE2\u535A\u52C3\u640F\u94C2\u7B94\u4F2F\u5E1B\u8236\u8116\u818A\u6E24\u6CCA\u9A73\u6355\u535C\u54FA\u8865\u57E0\u4E0D\u5E03\u6B65\u7C3F\u90E8\u6016\u64E6\u731C\u88C1\u6750\u624D\u8D22\u776C\u8E29\u91C7\u5F69\u83DC\u8521\u9910\u53C2\u8695\u6B8B\u60ED\u60E8\u707F\u82CD\u8231\u4ED3\u6CA7\u85CF\u64CD\u7CD9\u69FD\u66F9\u8349\u5395\u7B56\u4FA7\u518C\u6D4B\u5C42\u8E6D\u63D2\u53C9\u832C\u8336\u67E5\u78B4\u643D\u5BDF\u5C94\u5DEE\u8BE7\u62C6\u67F4\u8C7A\u6400\u63BA\u8749\u998B\u8C17\u7F20\u94F2\u4EA7\u9610\u98A4\u660C\u7316"], + ["b340", "\u77E6\u77E8\u77EA\u77EF\u77F0\u77F1\u77F2\u77F4\u77F5\u77F7\u77F9\u77FA\u77FB\u77FC\u7803", 5, "\u780A\u780B\u780E\u780F\u7810\u7813\u7815\u7819\u781B\u781E\u7820\u7821\u7822\u7824\u7828\u782A\u782B\u782E\u782F\u7831\u7832\u7833\u7835\u7836\u783D\u783F\u7841\u7842\u7843\u7844\u7846\u7848\u7849\u784A\u784B\u784D\u784F\u7851\u7853\u7854\u7858\u7859\u785A"], + ["b380", "\u785B\u785C\u785E", 11, "\u786F", 7, "\u7878\u7879\u787A\u787B\u787D", 6, "\u573A\u5C1D\u5E38\u957F\u507F\u80A0\u5382\u655E\u7545\u5531\u5021\u8D85\u6284\u949E\u671D\u5632\u6F6E\u5DE2\u5435\u7092\u8F66\u626F\u64A4\u63A3\u5F7B\u6F88\u90F4\u81E3\u8FB0\u5C18\u6668\u5FF1\u6C89\u9648\u8D81\u886C\u6491\u79F0\u57CE\u6A59\u6210\u5448\u4E58\u7A0B\u60E9\u6F84\u8BDA\u627F\u901E\u9A8B\u79E4\u5403\u75F4\u6301\u5319\u6C60\u8FDF\u5F1B\u9A70\u803B\u9F7F\u4F88\u5C3A\u8D64\u7FC5\u65A5\u70BD\u5145\u51B2\u866B\u5D07\u5BA0\u62BD\u916C\u7574\u8E0C\u7A20\u6101\u7B79\u4EC7\u7EF8\u7785\u4E11\u81ED\u521D\u51FA\u6A71\u53A8\u8E87\u9504\u96CF\u6EC1\u9664\u695A"], + ["b440", "\u7884\u7885\u7886\u7888\u788A\u788B\u788F\u7890\u7892\u7894\u7895\u7896\u7899\u789D\u789E\u78A0\u78A2\u78A4\u78A6\u78A8", 7, "\u78B5\u78B6\u78B7\u78B8\u78BA\u78BB\u78BC\u78BD\u78BF\u78C0\u78C2\u78C3\u78C4\u78C6\u78C7\u78C8\u78CC\u78CD\u78CE\u78CF\u78D1\u78D2\u78D3\u78D6\u78D7\u78D8\u78DA", 9], + ["b480", "\u78E4\u78E5\u78E6\u78E7\u78E9\u78EA\u78EB\u78ED", 4, "\u78F3\u78F5\u78F6\u78F8\u78F9\u78FB", 5, "\u7902\u7903\u7904\u7906", 6, "\u7840\u50A8\u77D7\u6410\u89E6\u5904\u63E3\u5DDD\u7A7F\u693D\u4F20\u8239\u5598\u4E32\u75AE\u7A97\u5E62\u5E8A\u95EF\u521B\u5439\u708A\u6376\u9524\u5782\u6625\u693F\u9187\u5507\u6DF3\u7EAF\u8822\u6233\u7EF0\u75B5\u8328\u78C1\u96CC\u8F9E\u6148\u74F7\u8BCD\u6B64\u523A\u8D50\u6B21\u806A\u8471\u56F1\u5306\u4ECE\u4E1B\u51D1\u7C97\u918B\u7C07\u4FC3\u8E7F\u7BE1\u7A9C\u6467\u5D14\u50AC\u8106\u7601\u7CB9\u6DEC\u7FE0\u6751\u5B58\u5BF8\u78CB\u64AE\u6413\u63AA\u632B\u9519\u642D\u8FBE\u7B54\u7629\u6253\u5927\u5446\u6B79\u50A3\u6234\u5E26\u6B86\u4EE3\u8D37\u888B\u5F85\u902E"], + ["b540", "\u790D", 5, "\u7914", 9, "\u791F", 4, "\u7925", 14, "\u7935", 4, "\u793D\u793F\u7942\u7943\u7944\u7945\u7947\u794A", 8, "\u7954\u7955\u7958\u7959\u7961\u7963"], + ["b580", "\u7964\u7966\u7969\u796A\u796B\u796C\u796E\u7970", 6, "\u7979\u797B", 4, "\u7982\u7983\u7986\u7987\u7988\u7989\u798B\u798C\u798D\u798E\u7990\u7991\u7992\u6020\u803D\u62C5\u4E39\u5355\u90F8\u63B8\u80C6\u65E6\u6C2E\u4F46\u60EE\u6DE1\u8BDE\u5F39\u86CB\u5F53\u6321\u515A\u8361\u6863\u5200\u6363\u8E48\u5012\u5C9B\u7977\u5BFC\u5230\u7A3B\u60BC\u9053\u76D7\u5FB7\u5F97\u7684\u8E6C\u706F\u767B\u7B49\u77AA\u51F3\u9093\u5824\u4F4E\u6EF4\u8FEA\u654C\u7B1B\u72C4\u6DA4\u7FDF\u5AE1\u62B5\u5E95\u5730\u8482\u7B2C\u5E1D\u5F1F\u9012\u7F14\u98A0\u6382\u6EC7\u7898\u70B9\u5178\u975B\u57AB\u7535\u4F43\u7538\u5E97\u60E6\u5960\u6DC0\u6BBF\u7889\u53FC\u96D5\u51CB\u5201\u6389\u540A\u9493\u8C03\u8DCC\u7239\u789F\u8776\u8FED\u8C0D\u53E0"], + ["b640", "\u7993", 6, "\u799B", 11, "\u79A8", 10, "\u79B4", 4, "\u79BC\u79BF\u79C2\u79C4\u79C5\u79C7\u79C8\u79CA\u79CC\u79CE\u79CF\u79D0\u79D3\u79D4\u79D6\u79D7\u79D9", 5, "\u79E0\u79E1\u79E2\u79E5\u79E8\u79EA"], + ["b680", "\u79EC\u79EE\u79F1", 6, "\u79F9\u79FA\u79FC\u79FE\u79FF\u7A01\u7A04\u7A05\u7A07\u7A08\u7A09\u7A0A\u7A0C\u7A0F", 4, "\u7A15\u7A16\u7A18\u7A19\u7A1B\u7A1C\u4E01\u76EF\u53EE\u9489\u9876\u9F0E\u952D\u5B9A\u8BA2\u4E22\u4E1C\u51AC\u8463\u61C2\u52A8\u680B\u4F97\u606B\u51BB\u6D1E\u515C\u6296\u6597\u9661\u8C46\u9017\u75D8\u90FD\u7763\u6BD2\u728A\u72EC\u8BFB\u5835\u7779\u8D4C\u675C\u9540\u809A\u5EA6\u6E21\u5992\u7AEF\u77ED\u953B\u6BB5\u65AD\u7F0E\u5806\u5151\u961F\u5BF9\u58A9\u5428\u8E72\u6566\u987F\u56E4\u949D\u76FE\u9041\u6387\u54C6\u591A\u593A\u579B\u8EB2\u6735\u8DFA\u8235\u5241\u60F0\u5815\u86FE\u5CE8\u9E45\u4FC4\u989D\u8BB9\u5A25\u6076\u5384\u627C\u904F\u9102\u997F\u6069\u800C\u513F\u8033\u5C14\u9975\u6D31\u4E8C"], + ["b740", "\u7A1D\u7A1F\u7A21\u7A22\u7A24", 14, "\u7A34\u7A35\u7A36\u7A38\u7A3A\u7A3E\u7A40", 5, "\u7A47", 9, "\u7A52", 4, "\u7A58", 16], + ["b780", "\u7A69", 6, "\u7A71\u7A72\u7A73\u7A75\u7A7B\u7A7C\u7A7D\u7A7E\u7A82\u7A85\u7A87\u7A89\u7A8A\u7A8B\u7A8C\u7A8E\u7A8F\u7A90\u7A93\u7A94\u7A99\u7A9A\u7A9B\u7A9E\u7AA1\u7AA2\u8D30\u53D1\u7F5A\u7B4F\u4F10\u4E4F\u9600\u6CD5\u73D0\u85E9\u5E06\u756A\u7FFB\u6A0A\u77FE\u9492\u7E41\u51E1\u70E6\u53CD\u8FD4\u8303\u8D29\u72AF\u996D\u6CDB\u574A\u82B3\u65B9\u80AA\u623F\u9632\u59A8\u4EFF\u8BBF\u7EBA\u653E\u83F2\u975E\u5561\u98DE\u80A5\u532A\u8BFD\u5420\u80BA\u5E9F\u6CB8\u8D39\u82AC\u915A\u5429\u6C1B\u5206\u7EB7\u575F\u711A\u6C7E\u7C89\u594B\u4EFD\u5FFF\u6124\u7CAA\u4E30\u5C01\u67AB\u8702\u5CF0\u950B\u98CE\u75AF\u70FD\u9022\u51AF\u7F1D\u8BBD\u5949\u51E4\u4F5B\u5426\u592B\u6577\u80A4\u5B75\u6276\u62C2\u8F90\u5E45\u6C1F\u7B26\u4F0F\u4FD8\u670D"], + ["b840", "\u7AA3\u7AA4\u7AA7\u7AA9\u7AAA\u7AAB\u7AAE", 4, "\u7AB4", 10, "\u7AC0", 10, "\u7ACC", 9, "\u7AD7\u7AD8\u7ADA\u7ADB\u7ADC\u7ADD\u7AE1\u7AE2\u7AE4\u7AE7", 5, "\u7AEE\u7AF0\u7AF1\u7AF2\u7AF3"], + ["b880", "\u7AF4", 4, "\u7AFB\u7AFC\u7AFE\u7B00\u7B01\u7B02\u7B05\u7B07\u7B09\u7B0C\u7B0D\u7B0E\u7B10\u7B12\u7B13\u7B16\u7B17\u7B18\u7B1A\u7B1C\u7B1D\u7B1F\u7B21\u7B22\u7B23\u7B27\u7B29\u7B2D\u6D6E\u6DAA\u798F\u88B1\u5F17\u752B\u629A\u8F85\u4FEF\u91DC\u65A7\u812F\u8151\u5E9C\u8150\u8D74\u526F\u8986\u8D4B\u590D\u5085\u4ED8\u961C\u7236\u8179\u8D1F\u5BCC\u8BA3\u9644\u5987\u7F1A\u5490\u5676\u560E\u8BE5\u6539\u6982\u9499\u76D6\u6E89\u5E72\u7518\u6746\u67D1\u7AFF\u809D\u8D76\u611F\u79C6\u6562\u8D63\u5188\u521A\u94A2\u7F38\u809B\u7EB2\u5C97\u6E2F\u6760\u7BD9\u768B\u9AD8\u818F\u7F94\u7CD5\u641E\u9550\u7A3F\u544A\u54E5\u6B4C\u6401\u6208\u9E3D\u80F3\u7599\u5272\u9769\u845B\u683C\u86E4\u9601\u9694\u94EC\u4E2A\u5404\u7ED9\u6839\u8DDF\u8015\u66F4\u5E9A\u7FB9"], + ["b940", "\u7B2F\u7B30\u7B32\u7B34\u7B35\u7B36\u7B37\u7B39\u7B3B\u7B3D\u7B3F", 5, "\u7B46\u7B48\u7B4A\u7B4D\u7B4E\u7B53\u7B55\u7B57\u7B59\u7B5C\u7B5E\u7B5F\u7B61\u7B63", 10, "\u7B6F\u7B70\u7B73\u7B74\u7B76\u7B78\u7B7A\u7B7C\u7B7D\u7B7F\u7B81\u7B82\u7B83\u7B84\u7B86", 6, "\u7B8E\u7B8F"], + ["b980", "\u7B91\u7B92\u7B93\u7B96\u7B98\u7B99\u7B9A\u7B9B\u7B9E\u7B9F\u7BA0\u7BA3\u7BA4\u7BA5\u7BAE\u7BAF\u7BB0\u7BB2\u7BB3\u7BB5\u7BB6\u7BB7\u7BB9", 7, "\u7BC2\u7BC3\u7BC4\u57C2\u803F\u6897\u5DE5\u653B\u529F\u606D\u9F9A\u4F9B\u8EAC\u516C\u5BAB\u5F13\u5DE9\u6C5E\u62F1\u8D21\u5171\u94A9\u52FE\u6C9F\u82DF\u72D7\u57A2\u6784\u8D2D\u591F\u8F9C\u83C7\u5495\u7B8D\u4F30\u6CBD\u5B64\u59D1\u9F13\u53E4\u86CA\u9AA8\u8C37\u80A1\u6545\u987E\u56FA\u96C7\u522E\u74DC\u5250\u5BE1\u6302\u8902\u4E56\u62D0\u602A\u68FA\u5173\u5B98\u51A0\u89C2\u7BA1\u9986\u7F50\u60EF\u704C\u8D2F\u5149\u5E7F\u901B\u7470\u89C4\u572D\u7845\u5F52\u9F9F\u95FA\u8F68\u9B3C\u8BE1\u7678\u6842\u67DC\u8DEA\u8D35\u523D\u8F8A\u6EDA\u68CD\u9505\u90ED\u56FD\u679C\u88F9\u8FC7\u54C8"], + ["ba40", "\u7BC5\u7BC8\u7BC9\u7BCA\u7BCB\u7BCD\u7BCE\u7BCF\u7BD0\u7BD2\u7BD4", 4, "\u7BDB\u7BDC\u7BDE\u7BDF\u7BE0\u7BE2\u7BE3\u7BE4\u7BE7\u7BE8\u7BE9\u7BEB\u7BEC\u7BED\u7BEF\u7BF0\u7BF2", 4, "\u7BF8\u7BF9\u7BFA\u7BFB\u7BFD\u7BFF", 7, "\u7C08\u7C09\u7C0A\u7C0D\u7C0E\u7C10", 5, "\u7C17\u7C18\u7C19"], + ["ba80", "\u7C1A", 4, "\u7C20", 5, "\u7C28\u7C29\u7C2B", 12, "\u7C39", 5, "\u7C42\u9AB8\u5B69\u6D77\u6C26\u4EA5\u5BB3\u9A87\u9163\u61A8\u90AF\u97E9\u542B\u6DB5\u5BD2\u51FD\u558A\u7F55\u7FF0\u64BC\u634D\u65F1\u61BE\u608D\u710A\u6C57\u6C49\u592F\u676D\u822A\u58D5\u568E\u8C6A\u6BEB\u90DD\u597D\u8017\u53F7\u6D69\u5475\u559D\u8377\u83CF\u6838\u79BE\u548C\u4F55\u5408\u76D2\u8C89\u9602\u6CB3\u6DB8\u8D6B\u8910\u9E64\u8D3A\u563F\u9ED1\u75D5\u5F88\u72E0\u6068\u54FC\u4EA8\u6A2A\u8861\u6052\u8F70\u54C4\u70D8\u8679\u9E3F\u6D2A\u5B8F\u5F18\u7EA2\u5589\u4FAF\u7334\u543C\u539A\u5019\u540E\u547C\u4E4E\u5FFD\u745A\u58F6\u846B\u80E1\u8774\u72D0\u7CCA\u6E56"], + ["bb40", "\u7C43", 9, "\u7C4E", 36, "\u7C75", 5, "\u7C7E", 9], + ["bb80", "\u7C88\u7C8A", 6, "\u7C93\u7C94\u7C96\u7C99\u7C9A\u7C9B\u7CA0\u7CA1\u7CA3\u7CA6\u7CA7\u7CA8\u7CA9\u7CAB\u7CAC\u7CAD\u7CAF\u7CB0\u7CB4", 4, "\u7CBA\u7CBB\u5F27\u864E\u552C\u62A4\u4E92\u6CAA\u6237\u82B1\u54D7\u534E\u733E\u6ED1\u753B\u5212\u5316\u8BDD\u69D0\u5F8A\u6000\u6DEE\u574F\u6B22\u73AF\u6853\u8FD8\u7F13\u6362\u60A3\u5524\u75EA\u8C62\u7115\u6DA3\u5BA6\u5E7B\u8352\u614C\u9EC4\u78FA\u8757\u7C27\u7687\u51F0\u60F6\u714C\u6643\u5E4C\u604D\u8C0E\u7070\u6325\u8F89\u5FBD\u6062\u86D4\u56DE\u6BC1\u6094\u6167\u5349\u60E0\u6666\u8D3F\u79FD\u4F1A\u70E9\u6C47\u8BB3\u8BF2\u7ED8\u8364\u660F\u5A5A\u9B42\u6D51\u6DF7\u8C41\u6D3B\u4F19\u706B\u83B7\u6216\u60D1\u970D\u8D27\u7978\u51FB\u573E\u57FA\u673A\u7578\u7A3D\u79EF\u7B95"], + ["bc40", "\u7CBF\u7CC0\u7CC2\u7CC3\u7CC4\u7CC6\u7CC9\u7CCB\u7CCE", 6, "\u7CD8\u7CDA\u7CDB\u7CDD\u7CDE\u7CE1", 6, "\u7CE9", 5, "\u7CF0", 7, "\u7CF9\u7CFA\u7CFC", 13, "\u7D0B", 5], + ["bc80", "\u7D11", 14, "\u7D21\u7D23\u7D24\u7D25\u7D26\u7D28\u7D29\u7D2A\u7D2C\u7D2D\u7D2E\u7D30", 6, "\u808C\u9965\u8FF9\u6FC0\u8BA5\u9E21\u59EC\u7EE9\u7F09\u5409\u6781\u68D8\u8F91\u7C4D\u96C6\u53CA\u6025\u75BE\u6C72\u5373\u5AC9\u7EA7\u6324\u51E0\u810A\u5DF1\u84DF\u6280\u5180\u5B63\u4F0E\u796D\u5242\u60B8\u6D4E\u5BC4\u5BC2\u8BA1\u8BB0\u65E2\u5FCC\u9645\u5993\u7EE7\u7EAA\u5609\u67B7\u5939\u4F73\u5BB6\u52A0\u835A\u988A\u8D3E\u7532\u94BE\u5047\u7A3C\u4EF7\u67B6\u9A7E\u5AC1\u6B7C\u76D1\u575A\u5C16\u7B3A\u95F4\u714E\u517C\u80A9\u8270\u5978\u7F04\u8327\u68C0\u67EC\u78B1\u7877\u62E3\u6361\u7B80\u4FED\u526A\u51CF\u8350\u69DB\u9274\u8DF5\u8D31\u89C1\u952E\u7BAD\u4EF6"], + ["bd40", "\u7D37", 54, "\u7D6F", 7], + ["bd80", "\u7D78", 32, "\u5065\u8230\u5251\u996F\u6E10\u6E85\u6DA7\u5EFA\u50F5\u59DC\u5C06\u6D46\u6C5F\u7586\u848B\u6868\u5956\u8BB2\u5320\u9171\u964D\u8549\u6912\u7901\u7126\u80F6\u4EA4\u90CA\u6D47\u9A84\u5A07\u56BC\u6405\u94F0\u77EB\u4FA5\u811A\u72E1\u89D2\u997A\u7F34\u7EDE\u527F\u6559\u9175\u8F7F\u8F83\u53EB\u7A96\u63ED\u63A5\u7686\u79F8\u8857\u9636\u622A\u52AB\u8282\u6854\u6770\u6377\u776B\u7AED\u6D01\u7ED3\u89E3\u59D0\u6212\u85C9\u82A5\u754C\u501F\u4ECB\u75A5\u8BEB\u5C4A\u5DFE\u7B4B\u65A4\u91D1\u4ECA\u6D25\u895F\u7D27\u9526\u4EC5\u8C28\u8FDB\u9773\u664B\u7981\u8FD1\u70EC\u6D78"], + ["be40", "\u7D99", 12, "\u7DA7", 6, "\u7DAF", 42], + ["be80", "\u7DDA", 32, "\u5C3D\u52B2\u8346\u5162\u830E\u775B\u6676\u9CB8\u4EAC\u60CA\u7CBE\u7CB3\u7ECF\u4E95\u8B66\u666F\u9888\u9759\u5883\u656C\u955C\u5F84\u75C9\u9756\u7ADF\u7ADE\u51C0\u70AF\u7A98\u63EA\u7A76\u7EA0\u7396\u97ED\u4E45\u7078\u4E5D\u9152\u53A9\u6551\u65E7\u81FC\u8205\u548E\u5C31\u759A\u97A0\u62D8\u72D9\u75BD\u5C45\u9A79\u83CA\u5C40\u5480\u77E9\u4E3E\u6CAE\u805A\u62D2\u636E\u5DE8\u5177\u8DDD\u8E1E\u952F\u4FF1\u53E5\u60E7\u70AC\u5267\u6350\u9E43\u5A1F\u5026\u7737\u5377\u7EE2\u6485\u652B\u6289\u6398\u5014\u7235\u89C9\u51B3\u8BC0\u7EDD\u5747\u83CC\u94A7\u519B\u541B\u5CFB"], + ["bf40", "\u7DFB", 62], + ["bf80", "\u7E3A\u7E3C", 4, "\u7E42", 4, "\u7E48", 21, "\u4FCA\u7AE3\u6D5A\u90E1\u9A8F\u5580\u5496\u5361\u54AF\u5F00\u63E9\u6977\u51EF\u6168\u520A\u582A\u52D8\u574E\u780D\u770B\u5EB7\u6177\u7CE0\u625B\u6297\u4EA2\u7095\u8003\u62F7\u70E4\u9760\u5777\u82DB\u67EF\u68F5\u78D5\u9897\u79D1\u58F3\u54B3\u53EF\u6E34\u514B\u523B\u5BA2\u8BFE\u80AF\u5543\u57A6\u6073\u5751\u542D\u7A7A\u6050\u5B54\u63A7\u62A0\u53E3\u6263\u5BC7\u67AF\u54ED\u7A9F\u82E6\u9177\u5E93\u88E4\u5938\u57AE\u630E\u8DE8\u80EF\u5757\u7B77\u4FA9\u5FEB\u5BBD\u6B3E\u5321\u7B50\u72C2\u6846\u77FF\u7736\u65F7\u51B5\u4E8F\u76D4\u5CBF\u7AA5\u8475\u594E\u9B41\u5080"], + ["c040", "\u7E5E", 35, "\u7E83", 23, "\u7E9C\u7E9D\u7E9E"], + ["c080", "\u7EAE\u7EB4\u7EBB\u7EBC\u7ED6\u7EE4\u7EEC\u7EF9\u7F0A\u7F10\u7F1E\u7F37\u7F39\u7F3B", 6, "\u7F43\u7F46", 9, "\u7F52\u7F53\u9988\u6127\u6E83\u5764\u6606\u6346\u56F0\u62EC\u6269\u5ED3\u9614\u5783\u62C9\u5587\u8721\u814A\u8FA3\u5566\u83B1\u6765\u8D56\u84DD\u5A6A\u680F\u62E6\u7BEE\u9611\u5170\u6F9C\u8C30\u63FD\u89C8\u61D2\u7F06\u70C2\u6EE5\u7405\u6994\u72FC\u5ECA\u90CE\u6717\u6D6A\u635E\u52B3\u7262\u8001\u4F6C\u59E5\u916A\u70D9\u6D9D\u52D2\u4E50\u96F7\u956D\u857E\u78CA\u7D2F\u5121\u5792\u64C2\u808B\u7C7B\u6CEA\u68F1\u695E\u51B7\u5398\u68A8\u7281\u9ECE\u7BF1\u72F8\u79BB\u6F13\u7406\u674E\u91CC\u9CA4\u793C\u8389\u8354\u540F\u6817\u4E3D\u5389\u52B1\u783E\u5386\u5229\u5088\u4F8B\u4FD0"], + ["c140", "\u7F56\u7F59\u7F5B\u7F5C\u7F5D\u7F5E\u7F60\u7F63", 4, "\u7F6B\u7F6C\u7F6D\u7F6F\u7F70\u7F73\u7F75\u7F76\u7F77\u7F78\u7F7A\u7F7B\u7F7C\u7F7D\u7F7F\u7F80\u7F82", 7, "\u7F8B\u7F8D\u7F8F", 4, "\u7F95", 4, "\u7F9B\u7F9C\u7FA0\u7FA2\u7FA3\u7FA5\u7FA6\u7FA8", 6, "\u7FB1"], + ["c180", "\u7FB3", 4, "\u7FBA\u7FBB\u7FBE\u7FC0\u7FC2\u7FC3\u7FC4\u7FC6\u7FC7\u7FC8\u7FC9\u7FCB\u7FCD\u7FCF", 4, "\u7FD6\u7FD7\u7FD9", 5, "\u7FE2\u7FE3\u75E2\u7ACB\u7C92\u6CA5\u96B6\u529B\u7483\u54E9\u4FE9\u8054\u83B2\u8FDE\u9570\u5EC9\u601C\u6D9F\u5E18\u655B\u8138\u94FE\u604B\u70BC\u7EC3\u7CAE\u51C9\u6881\u7CB1\u826F\u4E24\u8F86\u91CF\u667E\u4EAE\u8C05\u64A9\u804A\u50DA\u7597\u71CE\u5BE5\u8FBD\u6F66\u4E86\u6482\u9563\u5ED6\u6599\u5217\u88C2\u70C8\u52A3\u730E\u7433\u6797\u78F7\u9716\u4E34\u90BB\u9CDE\u6DCB\u51DB\u8D41\u541D\u62CE\u73B2\u83F1\u96F6\u9F84\u94C3\u4F36\u7F9A\u51CC\u7075\u9675\u5CAD\u9886\u53E6\u4EE4\u6E9C\u7409\u69B4\u786B\u998F\u7559\u5218\u7624\u6D41\u67F3\u516D\u9F99\u804B\u5499\u7B3C\u7ABF"], + ["c240", "\u7FE4\u7FE7\u7FE8\u7FEA\u7FEB\u7FEC\u7FED\u7FEF\u7FF2\u7FF4", 6, "\u7FFD\u7FFE\u7FFF\u8002\u8007\u8008\u8009\u800A\u800E\u800F\u8011\u8013\u801A\u801B\u801D\u801E\u801F\u8021\u8023\u8024\u802B", 5, "\u8032\u8034\u8039\u803A\u803C\u803E\u8040\u8041\u8044\u8045\u8047\u8048\u8049\u804E\u804F\u8050\u8051\u8053\u8055\u8056\u8057"], + ["c280", "\u8059\u805B", 13, "\u806B", 5, "\u8072", 11, "\u9686\u5784\u62E2\u9647\u697C\u5A04\u6402\u7BD3\u6F0F\u964B\u82A6\u5362\u9885\u5E90\u7089\u63B3\u5364\u864F\u9C81\u9E93\u788C\u9732\u8DEF\u8D42\u9E7F\u6F5E\u7984\u5F55\u9646\u622E\u9A74\u5415\u94DD\u4FA3\u65C5\u5C65\u5C61\u7F15\u8651\u6C2F\u5F8B\u7387\u6EE4\u7EFF\u5CE6\u631B\u5B6A\u6EE6\u5375\u4E71\u63A0\u7565\u62A1\u8F6E\u4F26\u4ED1\u6CA6\u7EB6\u8BBA\u841D\u87BA\u7F57\u903B\u9523\u7BA9\u9AA1\u88F8\u843D\u6D1B\u9A86\u7EDC\u5988\u9EBB\u739B\u7801\u8682\u9A6C\u9A82\u561B\u5417\u57CB\u4E70\u9EA6\u5356\u8FC8\u8109\u7792\u9992\u86EE\u6EE1\u8513\u66FC\u6162\u6F2B"], + ["c340", "\u807E\u8081\u8082\u8085\u8088\u808A\u808D", 5, "\u8094\u8095\u8097\u8099\u809E\u80A3\u80A6\u80A7\u80A8\u80AC\u80B0\u80B3\u80B5\u80B6\u80B8\u80B9\u80BB\u80C5\u80C7", 4, "\u80CF", 6, "\u80D8\u80DF\u80E0\u80E2\u80E3\u80E6\u80EE\u80F5\u80F7\u80F9\u80FB\u80FE\u80FF\u8100\u8101\u8103\u8104\u8105\u8107\u8108\u810B"], + ["c380", "\u810C\u8115\u8117\u8119\u811B\u811C\u811D\u811F", 12, "\u812D\u812E\u8130\u8133\u8134\u8135\u8137\u8139", 4, "\u813F\u8C29\u8292\u832B\u76F2\u6C13\u5FD9\u83BD\u732B\u8305\u951A\u6BDB\u77DB\u94C6\u536F\u8302\u5192\u5E3D\u8C8C\u8D38\u4E48\u73AB\u679A\u6885\u9176\u9709\u7164\u6CA1\u7709\u5A92\u9541\u6BCF\u7F8E\u6627\u5BD0\u59B9\u5A9A\u95E8\u95F7\u4EEC\u840C\u8499\u6AAC\u76DF\u9530\u731B\u68A6\u5B5F\u772F\u919A\u9761\u7CDC\u8FF7\u8C1C\u5F25\u7C73\u79D8\u89C5\u6CCC\u871C\u5BC6\u5E42\u68C9\u7720\u7EF5\u5195\u514D\u52C9\u5A29\u7F05\u9762\u82D7\u63CF\u7784\u85D0\u79D2\u6E3A\u5E99\u5999\u8511\u706D\u6C11\u62BF\u76BF\u654F\u60AF\u95FD\u660E\u879F\u9E23\u94ED\u540D\u547D\u8C2C\u6478"], + ["c440", "\u8140", 5, "\u8147\u8149\u814D\u814E\u814F\u8152\u8156\u8157\u8158\u815B", 4, "\u8161\u8162\u8163\u8164\u8166\u8168\u816A\u816B\u816C\u816F\u8172\u8173\u8175\u8176\u8177\u8178\u8181\u8183", 4, "\u8189\u818B\u818C\u818D\u818E\u8190\u8192", 5, "\u8199\u819A\u819E", 4, "\u81A4\u81A5"], + ["c480", "\u81A7\u81A9\u81AB", 7, "\u81B4", 5, "\u81BC\u81BD\u81BE\u81BF\u81C4\u81C5\u81C7\u81C8\u81C9\u81CB\u81CD", 6, "\u6479\u8611\u6A21\u819C\u78E8\u6469\u9B54\u62B9\u672B\u83AB\u58A8\u9ED8\u6CAB\u6F20\u5BDE\u964C\u8C0B\u725F\u67D0\u62C7\u7261\u4EA9\u59C6\u6BCD\u5893\u66AE\u5E55\u52DF\u6155\u6728\u76EE\u7766\u7267\u7A46\u62FF\u54EA\u5450\u94A0\u90A3\u5A1C\u7EB3\u6C16\u4E43\u5976\u8010\u5948\u5357\u7537\u96BE\u56CA\u6320\u8111\u607C\u95F9\u6DD6\u5462\u9981\u5185\u5AE9\u80FD\u59AE\u9713\u502A\u6CE5\u5C3C\u62DF\u4F60\u533F\u817B\u9006\u6EBA\u852B\u62C8\u5E74\u78BE\u64B5\u637B\u5FF5\u5A18\u917F\u9E1F\u5C3F\u634F\u8042\u5B7D\u556E\u954A\u954D\u6D85\u60A8\u67E0\u72DE\u51DD\u5B81"], + ["c540", "\u81D4", 14, "\u81E4\u81E5\u81E6\u81E8\u81E9\u81EB\u81EE", 4, "\u81F5", 5, "\u81FD\u81FF\u8203\u8207", 4, "\u820E\u820F\u8211\u8213\u8215", 5, "\u821D\u8220\u8224\u8225\u8226\u8227\u8229\u822E\u8232\u823A\u823C\u823D\u823F"], + ["c580", "\u8240\u8241\u8242\u8243\u8245\u8246\u8248\u824A\u824C\u824D\u824E\u8250", 7, "\u8259\u825B\u825C\u825D\u825E\u8260", 7, "\u8269\u62E7\u6CDE\u725B\u626D\u94AE\u7EBD\u8113\u6D53\u519C\u5F04\u5974\u52AA\u6012\u5973\u6696\u8650\u759F\u632A\u61E6\u7CEF\u8BFA\u54E6\u6B27\u9E25\u6BB4\u85D5\u5455\u5076\u6CA4\u556A\u8DB4\u722C\u5E15\u6015\u7436\u62CD\u6392\u724C\u5F98\u6E43\u6D3E\u6500\u6F58\u76D8\u78D0\u76FC\u7554\u5224\u53DB\u4E53\u5E9E\u65C1\u802A\u80D6\u629B\u5486\u5228\u70AE\u888D\u8DD1\u6CE1\u5478\u80DA\u57F9\u88F4\u8D54\u966A\u914D\u4F69\u6C9B\u55B7\u76C6\u7830\u62A8\u70F9\u6F8E\u5F6D\u84EC\u68DA\u787C\u7BF7\u81A8\u670B\u9E4F\u6367\u78B0\u576F\u7812\u9739\u6279\u62AB\u5288\u7435\u6BD7"], + ["c640", "\u826A\u826B\u826C\u826D\u8271\u8275\u8276\u8277\u8278\u827B\u827C\u8280\u8281\u8283\u8285\u8286\u8287\u8289\u828C\u8290\u8293\u8294\u8295\u8296\u829A\u829B\u829E\u82A0\u82A2\u82A3\u82A7\u82B2\u82B5\u82B6\u82BA\u82BB\u82BC\u82BF\u82C0\u82C2\u82C3\u82C5\u82C6\u82C9\u82D0\u82D6\u82D9\u82DA\u82DD\u82E2\u82E7\u82E8\u82E9\u82EA\u82EC\u82ED\u82EE\u82F0\u82F2\u82F3\u82F5\u82F6\u82F8"], + ["c680", "\u82FA\u82FC", 4, "\u830A\u830B\u830D\u8310\u8312\u8313\u8316\u8318\u8319\u831D", 9, "\u8329\u832A\u832E\u8330\u8332\u8337\u833B\u833D\u5564\u813E\u75B2\u76AE\u5339\u75DE\u50FB\u5C41\u8B6C\u7BC7\u504F\u7247\u9A97\u98D8\u6F02\u74E2\u7968\u6487\u77A5\u62FC\u9891\u8D2B\u54C1\u8058\u4E52\u576A\u82F9\u840D\u5E73\u51ED\u74F6\u8BC4\u5C4F\u5761\u6CFC\u9887\u5A46\u7834\u9B44\u8FEB\u7C95\u5256\u6251\u94FA\u4EC6\u8386\u8461\u83E9\u84B2\u57D4\u6734\u5703\u666E\u6D66\u8C31\u66DD\u7011\u671F\u6B3A\u6816\u621A\u59BB\u4E03\u51C4\u6F06\u67D2\u6C8F\u5176\u68CB\u5947\u6B67\u7566\u5D0E\u8110\u9F50\u65D7\u7948\u7941\u9A91\u8D77\u5C82\u4E5E\u4F01\u542F\u5951\u780C\u5668\u6C14\u8FC4\u5F03\u6C7D\u6CE3\u8BAB\u6390"], + ["c740", "\u833E\u833F\u8341\u8342\u8344\u8345\u8348\u834A", 4, "\u8353\u8355", 4, "\u835D\u8362\u8370", 6, "\u8379\u837A\u837E", 6, "\u8387\u8388\u838A\u838B\u838C\u838D\u838F\u8390\u8391\u8394\u8395\u8396\u8397\u8399\u839A\u839D\u839F\u83A1", 6, "\u83AC\u83AD\u83AE"], + ["c780", "\u83AF\u83B5\u83BB\u83BE\u83BF\u83C2\u83C3\u83C4\u83C6\u83C8\u83C9\u83CB\u83CD\u83CE\u83D0\u83D1\u83D2\u83D3\u83D5\u83D7\u83D9\u83DA\u83DB\u83DE\u83E2\u83E3\u83E4\u83E6\u83E7\u83E8\u83EB\u83EC\u83ED\u6070\u6D3D\u7275\u6266\u948E\u94C5\u5343\u8FC1\u7B7E\u4EDF\u8C26\u4E7E\u9ED4\u94B1\u94B3\u524D\u6F5C\u9063\u6D45\u8C34\u5811\u5D4C\u6B20\u6B49\u67AA\u545B\u8154\u7F8C\u5899\u8537\u5F3A\u62A2\u6A47\u9539\u6572\u6084\u6865\u77A7\u4E54\u4FA8\u5DE7\u9798\u64AC\u7FD8\u5CED\u4FCF\u7A8D\u5207\u8304\u4E14\u602F\u7A83\u94A6\u4FB5\u4EB2\u79E6\u7434\u52E4\u82B9\u64D2\u79BD\u5BDD\u6C81\u9752\u8F7B\u6C22\u503E\u537F\u6E05\u64CE\u6674\u6C30\u60C5\u9877\u8BF7\u5E86\u743C\u7A77\u79CB\u4E18\u90B1\u7403\u6C42\u56DA\u914B\u6CC5\u8D8B\u533A\u86C6\u66F2\u8EAF\u5C48\u9A71\u6E20"], + ["c840", "\u83EE\u83EF\u83F3", 4, "\u83FA\u83FB\u83FC\u83FE\u83FF\u8400\u8402\u8405\u8407\u8408\u8409\u840A\u8410\u8412", 5, "\u8419\u841A\u841B\u841E", 5, "\u8429", 7, "\u8432", 5, "\u8439\u843A\u843B\u843E", 7, "\u8447\u8448\u8449"], + ["c880", "\u844A", 6, "\u8452", 4, "\u8458\u845D\u845E\u845F\u8460\u8462\u8464", 4, "\u846A\u846E\u846F\u8470\u8472\u8474\u8477\u8479\u847B\u847C\u53D6\u5A36\u9F8B\u8DA3\u53BB\u5708\u98A7\u6743\u919B\u6CC9\u5168\u75CA\u62F3\u72AC\u5238\u529D\u7F3A\u7094\u7638\u5374\u9E4A\u69B7\u786E\u96C0\u88D9\u7FA4\u7136\u71C3\u5189\u67D3\u74E4\u58E4\u6518\u56B7\u8BA9\u9976\u6270\u7ED5\u60F9\u70ED\u58EC\u4EC1\u4EBA\u5FCD\u97E7\u4EFB\u8BA4\u5203\u598A\u7EAB\u6254\u4ECD\u65E5\u620E\u8338\u84C9\u8363\u878D\u7194\u6EB6\u5BB9\u7ED2\u5197\u63C9\u67D4\u8089\u8339\u8815\u5112\u5B7A\u5982\u8FB1\u4E73\u6C5D\u5165\u8925\u8F6F\u962E\u854A\u745E\u9510\u95F0\u6DA6\u82E5\u5F31\u6492\u6D12\u8428\u816E\u9CC3\u585E\u8D5B\u4E09\u53C1"], + ["c940", "\u847D", 4, "\u8483\u8484\u8485\u8486\u848A\u848D\u848F", 7, "\u8498\u849A\u849B\u849D\u849E\u849F\u84A0\u84A2", 12, "\u84B0\u84B1\u84B3\u84B5\u84B6\u84B7\u84BB\u84BC\u84BE\u84C0\u84C2\u84C3\u84C5\u84C6\u84C7\u84C8\u84CB\u84CC\u84CE\u84CF\u84D2\u84D4\u84D5\u84D7"], + ["c980", "\u84D8", 4, "\u84DE\u84E1\u84E2\u84E4\u84E7", 4, "\u84ED\u84EE\u84EF\u84F1", 10, "\u84FD\u84FE\u8500\u8501\u8502\u4F1E\u6563\u6851\u55D3\u4E27\u6414\u9A9A\u626B\u5AC2\u745F\u8272\u6DA9\u68EE\u50E7\u838E\u7802\u6740\u5239\u6C99\u7EB1\u50BB\u5565\u715E\u7B5B\u6652\u73CA\u82EB\u6749\u5C71\u5220\u717D\u886B\u95EA\u9655\u64C5\u8D61\u81B3\u5584\u6C55\u6247\u7F2E\u5892\u4F24\u5546\u8D4F\u664C\u4E0A\u5C1A\u88F3\u68A2\u634E\u7A0D\u70E7\u828D\u52FA\u97F6\u5C11\u54E8\u90B5\u7ECD\u5962\u8D4A\u86C7\u820C\u820D\u8D66\u6444\u5C04\u6151\u6D89\u793E\u8BBE\u7837\u7533\u547B\u4F38\u8EAB\u6DF1\u5A20\u7EC5\u795E\u6C88\u5BA1\u5A76\u751A\u80BE\u614E\u6E17\u58F0\u751F\u7525\u7272\u5347\u7EF3"], + ["ca40", "\u8503", 8, "\u850D\u850E\u850F\u8510\u8512\u8514\u8515\u8516\u8518\u8519\u851B\u851C\u851D\u851E\u8520\u8522", 8, "\u852D", 9, "\u853E", 4, "\u8544\u8545\u8546\u8547\u854B", 10], + ["ca80", "\u8557\u8558\u855A\u855B\u855C\u855D\u855F", 4, "\u8565\u8566\u8567\u8569", 8, "\u8573\u8575\u8576\u8577\u8578\u857C\u857D\u857F\u8580\u8581\u7701\u76DB\u5269\u80DC\u5723\u5E08\u5931\u72EE\u65BD\u6E7F\u8BD7\u5C38\u8671\u5341\u77F3\u62FE\u65F6\u4EC0\u98DF\u8680\u5B9E\u8BC6\u53F2\u77E2\u4F7F\u5C4E\u9A76\u59CB\u5F0F\u793A\u58EB\u4E16\u67FF\u4E8B\u62ED\u8A93\u901D\u52BF\u662F\u55DC\u566C\u9002\u4ED5\u4F8D\u91CA\u9970\u6C0F\u5E02\u6043\u5BA4\u89C6\u8BD5\u6536\u624B\u9996\u5B88\u5BFF\u6388\u552E\u53D7\u7626\u517D\u852C\u67A2\u68B3\u6B8A\u6292\u8F93\u53D4\u8212\u6DD1\u758F\u4E66\u8D4E\u5B70\u719F\u85AF\u6691\u66D9\u7F72\u8700\u9ECD\u9F20\u5C5E\u672F\u8FF0\u6811\u675F\u620D\u7AD6\u5885\u5EB6\u6570\u6F31"], + ["cb40", "\u8582\u8583\u8586\u8588", 6, "\u8590", 10, "\u859D", 6, "\u85A5\u85A6\u85A7\u85A9\u85AB\u85AC\u85AD\u85B1", 5, "\u85B8\u85BA", 6, "\u85C2", 6, "\u85CA", 4, "\u85D1\u85D2"], + ["cb80", "\u85D4\u85D6", 5, "\u85DD", 6, "\u85E5\u85E6\u85E7\u85E8\u85EA", 14, "\u6055\u5237\u800D\u6454\u8870\u7529\u5E05\u6813\u62F4\u971C\u53CC\u723D\u8C01\u6C34\u7761\u7A0E\u542E\u77AC\u987A\u821C\u8BF4\u7855\u6714\u70C1\u65AF\u6495\u5636\u601D\u79C1\u53F8\u4E1D\u6B7B\u8086\u5BFA\u55E3\u56DB\u4F3A\u4F3C\u9972\u5DF3\u677E\u8038\u6002\u9882\u9001\u5B8B\u8BBC\u8BF5\u641C\u8258\u64DE\u55FD\u82CF\u9165\u4FD7\u7D20\u901F\u7C9F\u50F3\u5851\u6EAF\u5BBF\u8BC9\u8083\u9178\u849C\u7B97\u867D\u968B\u968F\u7EE5\u9AD3\u788E\u5C81\u7A57\u9042\u96A7\u795F\u5B59\u635F\u7B0B\u84D1\u68AD\u5506\u7F29\u7410\u7D22\u9501\u6240\u584C\u4ED6\u5B83\u5979\u5854"], + ["cc40", "\u85F9\u85FA\u85FC\u85FD\u85FE\u8600", 4, "\u8606", 10, "\u8612\u8613\u8614\u8615\u8617", 15, "\u8628\u862A", 13, "\u8639\u863A\u863B\u863D\u863E\u863F\u8640"], + ["cc80", "\u8641", 11, "\u8652\u8653\u8655", 4, "\u865B\u865C\u865D\u865F\u8660\u8661\u8663", 7, "\u736D\u631E\u8E4B\u8E0F\u80CE\u82D4\u62AC\u53F0\u6CF0\u915E\u592A\u6001\u6C70\u574D\u644A\u8D2A\u762B\u6EE9\u575B\u6A80\u75F0\u6F6D\u8C2D\u8C08\u5766\u6BEF\u8892\u78B3\u63A2\u53F9\u70AD\u6C64\u5858\u642A\u5802\u68E0\u819B\u5510\u7CD6\u5018\u8EBA\u6DCC\u8D9F\u70EB\u638F\u6D9B\u6ED4\u7EE6\u8404\u6843\u9003\u6DD8\u9676\u8BA8\u5957\u7279\u85E4\u817E\u75BC\u8A8A\u68AF\u5254\u8E22\u9511\u63D0\u9898\u8E44\u557C\u4F53\u66FF\u568F\u60D5\u6D95\u5243\u5C49\u5929\u6DFB\u586B\u7530\u751C\u606C\u8214\u8146\u6311\u6761\u8FE2\u773A\u8DF3\u8D34\u94C1\u5E16\u5385\u542C\u70C3"], + ["cd40", "\u866D\u866F\u8670\u8672", 6, "\u8683", 6, "\u868E", 4, "\u8694\u8696", 5, "\u869E", 4, "\u86A5\u86A6\u86AB\u86AD\u86AE\u86B2\u86B3\u86B7\u86B8\u86B9\u86BB", 4, "\u86C1\u86C2\u86C3\u86C5\u86C8\u86CC\u86CD\u86D2\u86D3\u86D5\u86D6\u86D7\u86DA\u86DC"], + ["cd80", "\u86DD\u86E0\u86E1\u86E2\u86E3\u86E5\u86E6\u86E7\u86E8\u86EA\u86EB\u86EC\u86EF\u86F5\u86F6\u86F7\u86FA\u86FB\u86FC\u86FD\u86FF\u8701\u8704\u8705\u8706\u870B\u870C\u870E\u870F\u8710\u8711\u8714\u8716\u6C40\u5EF7\u505C\u4EAD\u5EAD\u633A\u8247\u901A\u6850\u916E\u77B3\u540C\u94DC\u5F64\u7AE5\u6876\u6345\u7B52\u7EDF\u75DB\u5077\u6295\u5934\u900F\u51F8\u79C3\u7A81\u56FE\u5F92\u9014\u6D82\u5C60\u571F\u5410\u5154\u6E4D\u56E2\u63A8\u9893\u817F\u8715\u892A\u9000\u541E\u5C6F\u81C0\u62D6\u6258\u8131\u9E35\u9640\u9A6E\u9A7C\u692D\u59A5\u62D3\u553E\u6316\u54C7\u86D9\u6D3C\u5A03\u74E6\u889C\u6B6A\u5916\u8C4C\u5F2F\u6E7E\u73A9\u987D\u4E38\u70F7\u5B8C\u7897\u633D\u665A\u7696\u60CB\u5B9B\u5A49\u4E07\u8155\u6C6A\u738B\u4EA1\u6789\u7F51\u5F80\u65FA\u671B\u5FD8\u5984\u5A01"], + ["ce40", "\u8719\u871B\u871D\u871F\u8720\u8724\u8726\u8727\u8728\u872A\u872B\u872C\u872D\u872F\u8730\u8732\u8733\u8735\u8736\u8738\u8739\u873A\u873C\u873D\u8740", 6, "\u874A\u874B\u874D\u874F\u8750\u8751\u8752\u8754\u8755\u8756\u8758\u875A", 5, "\u8761\u8762\u8766", 7, "\u876F\u8771\u8772\u8773\u8775"], + ["ce80", "\u8777\u8778\u8779\u877A\u877F\u8780\u8781\u8784\u8786\u8787\u8789\u878A\u878C\u878E", 4, "\u8794\u8795\u8796\u8798", 6, "\u87A0", 4, "\u5DCD\u5FAE\u5371\u97E6\u8FDD\u6845\u56F4\u552F\u60DF\u4E3A\u6F4D\u7EF4\u82C7\u840E\u59D4\u4F1F\u4F2A\u5C3E\u7EAC\u672A\u851A\u5473\u754F\u80C3\u5582\u9B4F\u4F4D\u6E2D\u8C13\u5C09\u6170\u536B\u761F\u6E29\u868A\u6587\u95FB\u7EB9\u543B\u7A33\u7D0A\u95EE\u55E1\u7FC1\u74EE\u631D\u8717\u6DA1\u7A9D\u6211\u65A1\u5367\u63E1\u6C83\u5DEB\u545C\u94A8\u4E4C\u6C61\u8BEC\u5C4B\u65E0\u829C\u68A7\u543E\u5434\u6BCB\u6B66\u4E94\u6342\u5348\u821E\u4F0D\u4FAE\u575E\u620A\u96FE\u6664\u7269\u52FF\u52A1\u609F\u8BEF\u6614\u7199\u6790\u897F\u7852\u77FD\u6670\u563B\u5438\u9521\u727A"], + ["cf40", "\u87A5\u87A6\u87A7\u87A9\u87AA\u87AE\u87B0\u87B1\u87B2\u87B4\u87B6\u87B7\u87B8\u87B9\u87BB\u87BC\u87BE\u87BF\u87C1", 4, "\u87C7\u87C8\u87C9\u87CC", 4, "\u87D4", 6, "\u87DC\u87DD\u87DE\u87DF\u87E1\u87E2\u87E3\u87E4\u87E6\u87E7\u87E8\u87E9\u87EB\u87EC\u87ED\u87EF", 9], + ["cf80", "\u87FA\u87FB\u87FC\u87FD\u87FF\u8800\u8801\u8802\u8804", 5, "\u880B", 7, "\u8814\u8817\u8818\u8819\u881A\u881C", 4, "\u8823\u7A00\u606F\u5E0C\u6089\u819D\u5915\u60DC\u7184\u70EF\u6EAA\u6C50\u7280\u6A84\u88AD\u5E2D\u4E60\u5AB3\u559C\u94E3\u6D17\u7CFB\u9699\u620F\u7EC6\u778E\u867E\u5323\u971E\u8F96\u6687\u5CE1\u4FA0\u72ED\u4E0B\u53A6\u590F\u5413\u6380\u9528\u5148\u4ED9\u9C9C\u7EA4\u54B8\u8D24\u8854\u8237\u95F2\u6D8E\u5F26\u5ACC\u663E\u9669\u73B0\u732E\u53BF\u817A\u9985\u7FA1\u5BAA\u9677\u9650\u7EBF\u76F8\u53A2\u9576\u9999\u7BB1\u8944\u6E58\u4E61\u7FD4\u7965\u8BE6\u60F3\u54CD\u4EAB\u9879\u5DF7\u6A61\u50CF\u5411\u8C61\u8427\u785D\u9704\u524A\u54EE\u56A3\u9500\u6D88\u5BB5\u6DC6\u6653"], + ["d040", "\u8824", 13, "\u8833", 5, "\u883A\u883B\u883D\u883E\u883F\u8841\u8842\u8843\u8846", 5, "\u884E", 5, "\u8855\u8856\u8858\u885A", 6, "\u8866\u8867\u886A\u886D\u886F\u8871\u8873\u8874\u8875\u8876\u8878\u8879\u887A"], + ["d080", "\u887B\u887C\u8880\u8883\u8886\u8887\u8889\u888A\u888C\u888E\u888F\u8890\u8891\u8893\u8894\u8895\u8897", 4, "\u889D", 4, "\u88A3\u88A5", 5, "\u5C0F\u5B5D\u6821\u8096\u5578\u7B11\u6548\u6954\u4E9B\u6B47\u874E\u978B\u534F\u631F\u643A\u90AA\u659C\u80C1\u8C10\u5199\u68B0\u5378\u87F9\u61C8\u6CC4\u6CFB\u8C22\u5C51\u85AA\u82AF\u950C\u6B23\u8F9B\u65B0\u5FFB\u5FC3\u4FE1\u8845\u661F\u8165\u7329\u60FA\u5174\u5211\u578B\u5F62\u90A2\u884C\u9192\u5E78\u674F\u6027\u59D3\u5144\u51F6\u80F8\u5308\u6C79\u96C4\u718A\u4F11\u4FEE\u7F9E\u673D\u55C5\u9508\u79C0\u8896\u7EE3\u589F\u620C\u9700\u865A\u5618\u987B\u5F90\u8BB8\u84C4\u9157\u53D9\u65ED\u5E8F\u755C\u6064\u7D6E\u5A7F\u7EEA\u7EED\u8F69\u55A7\u5BA3\u60AC\u65CB\u7384"], + ["d140", "\u88AC\u88AE\u88AF\u88B0\u88B2", 4, "\u88B8\u88B9\u88BA\u88BB\u88BD\u88BE\u88BF\u88C0\u88C3\u88C4\u88C7\u88C8\u88CA\u88CB\u88CC\u88CD\u88CF\u88D0\u88D1\u88D3\u88D6\u88D7\u88DA", 4, "\u88E0\u88E1\u88E6\u88E7\u88E9", 6, "\u88F2\u88F5\u88F6\u88F7\u88FA\u88FB\u88FD\u88FF\u8900\u8901\u8903", 5], + ["d180", "\u8909\u890B", 4, "\u8911\u8914", 4, "\u891C", 4, "\u8922\u8923\u8924\u8926\u8927\u8928\u8929\u892C\u892D\u892E\u892F\u8931\u8932\u8933\u8935\u8937\u9009\u7663\u7729\u7EDA\u9774\u859B\u5B66\u7A74\u96EA\u8840\u52CB\u718F\u5FAA\u65EC\u8BE2\u5BFB\u9A6F\u5DE1\u6B89\u6C5B\u8BAD\u8BAF\u900A\u8FC5\u538B\u62BC\u9E26\u9E2D\u5440\u4E2B\u82BD\u7259\u869C\u5D16\u8859\u6DAF\u96C5\u54D1\u4E9A\u8BB6\u7109\u54BD\u9609\u70DF\u6DF9\u76D0\u4E25\u7814\u8712\u5CA9\u5EF6\u8A00\u989C\u960E\u708E\u6CBF\u5944\u63A9\u773C\u884D\u6F14\u8273\u5830\u71D5\u538C\u781A\u96C1\u5501\u5F66\u7130\u5BB4\u8C1A\u9A8C\u6B83\u592E\u9E2F\u79E7\u6768\u626C\u4F6F\u75A1\u7F8A\u6D0B\u9633\u6C27\u4EF0\u75D2\u517B\u6837\u6F3E\u9080\u8170\u5996\u7476"], + ["d240", "\u8938", 8, "\u8942\u8943\u8945", 24, "\u8960", 5, "\u8967", 19, "\u897C"], + ["d280", "\u897D\u897E\u8980\u8982\u8984\u8985\u8987", 26, "\u6447\u5C27\u9065\u7A91\u8C23\u59DA\u54AC\u8200\u836F\u8981\u8000\u6930\u564E\u8036\u7237\u91CE\u51B6\u4E5F\u9875\u6396\u4E1A\u53F6\u66F3\u814B\u591C\u6DB2\u4E00\u58F9\u533B\u63D6\u94F1\u4F9D\u4F0A\u8863\u9890\u5937\u9057\u79FB\u4EEA\u80F0\u7591\u6C82\u5B9C\u59E8\u5F5D\u6905\u8681\u501A\u5DF2\u4E59\u77E3\u4EE5\u827A\u6291\u6613\u9091\u5C79\u4EBF\u5F79\u81C6\u9038\u8084\u75AB\u4EA6\u88D4\u610F\u6BC5\u5FC6\u4E49\u76CA\u6EA2\u8BE3\u8BAE\u8C0A\u8BD1\u5F02\u7FFC\u7FCC\u7ECE\u8335\u836B\u56E0\u6BB7\u97F3\u9634\u59FB\u541F\u94F6\u6DEB\u5BC5\u996E\u5C39\u5F15\u9690"], + ["d340", "\u89A2", 30, "\u89C3\u89CD\u89D3\u89D4\u89D5\u89D7\u89D8\u89D9\u89DB\u89DD\u89DF\u89E0\u89E1\u89E2\u89E4\u89E7\u89E8\u89E9\u89EA\u89EC\u89ED\u89EE\u89F0\u89F1\u89F2\u89F4", 6], + ["d380", "\u89FB", 4, "\u8A01", 5, "\u8A08", 21, "\u5370\u82F1\u6A31\u5A74\u9E70\u5E94\u7F28\u83B9\u8424\u8425\u8367\u8747\u8FCE\u8D62\u76C8\u5F71\u9896\u786C\u6620\u54DF\u62E5\u4F63\u81C3\u75C8\u5EB8\u96CD\u8E0A\u86F9\u548F\u6CF3\u6D8C\u6C38\u607F\u52C7\u7528\u5E7D\u4F18\u60A0\u5FE7\u5C24\u7531\u90AE\u94C0\u72B9\u6CB9\u6E38\u9149\u6709\u53CB\u53F3\u4F51\u91C9\u8BF1\u53C8\u5E7C\u8FC2\u6DE4\u4E8E\u76C2\u6986\u865E\u611A\u8206\u4F59\u4FDE\u903E\u9C7C\u6109\u6E1D\u6E14\u9685\u4E88\u5A31\u96E8\u4E0E\u5C7F\u79B9\u5B87\u8BED\u7FBD\u7389\u57DF\u828B\u90C1\u5401\u9047\u55BB\u5CEA\u5FA1\u6108\u6B32\u72F1\u80B2\u8A89"], + ["d440", "\u8A1E", 31, "\u8A3F", 8, "\u8A49", 21], + ["d480", "\u8A5F", 25, "\u8A7A", 6, "\u6D74\u5BD3\u88D5\u9884\u8C6B\u9A6D\u9E33\u6E0A\u51A4\u5143\u57A3\u8881\u539F\u63F4\u8F95\u56ED\u5458\u5706\u733F\u6E90\u7F18\u8FDC\u82D1\u613F\u6028\u9662\u66F0\u7EA6\u8D8A\u8DC3\u94A5\u5CB3\u7CA4\u6708\u60A6\u9605\u8018\u4E91\u90E7\u5300\u9668\u5141\u8FD0\u8574\u915D\u6655\u97F5\u5B55\u531D\u7838\u6742\u683D\u54C9\u707E\u5BB0\u8F7D\u518D\u5728\u54B1\u6512\u6682\u8D5E\u8D43\u810F\u846C\u906D\u7CDF\u51FF\u85FB\u67A3\u65E9\u6FA1\u86A4\u8E81\u566A\u9020\u7682\u7076\u71E5\u8D23\u62E9\u5219\u6CFD\u8D3C\u600E\u589E\u618E\u66FE\u8D60\u624E\u55B3\u6E23\u672D\u8F67"], + ["d540", "\u8A81", 7, "\u8A8B", 7, "\u8A94", 46], + ["d580", "\u8AC3", 32, "\u94E1\u95F8\u7728\u6805\u69A8\u548B\u4E4D\u70B8\u8BC8\u6458\u658B\u5B85\u7A84\u503A\u5BE8\u77BB\u6BE1\u8A79\u7C98\u6CBE\u76CF\u65A9\u8F97\u5D2D\u5C55\u8638\u6808\u5360\u6218\u7AD9\u6E5B\u7EFD\u6A1F\u7AE0\u5F70\u6F33\u5F20\u638C\u6DA8\u6756\u4E08\u5E10\u8D26\u4ED7\u80C0\u7634\u969C\u62DB\u662D\u627E\u6CBC\u8D75\u7167\u7F69\u5146\u8087\u53EC\u906E\u6298\u54F2\u86F0\u8F99\u8005\u9517\u8517\u8FD9\u6D59\u73CD\u659F\u771F\u7504\u7827\u81FB\u8D1E\u9488\u4FA6\u6795\u75B9\u8BCA\u9707\u632F\u9547\u9635\u84B8\u6323\u7741\u5F81\u72F0\u4E89\u6014\u6574\u62EF\u6B63\u653F"], + ["d640", "\u8AE4", 34, "\u8B08", 27], + ["d680", "\u8B24\u8B25\u8B27", 30, "\u5E27\u75C7\u90D1\u8BC1\u829D\u679D\u652F\u5431\u8718\u77E5\u80A2\u8102\u6C41\u4E4B\u7EC7\u804C\u76F4\u690D\u6B96\u6267\u503C\u4F84\u5740\u6307\u6B62\u8DBE\u53EA\u65E8\u7EB8\u5FD7\u631A\u63B7\u81F3\u81F4\u7F6E\u5E1C\u5CD9\u5236\u667A\u79E9\u7A1A\u8D28\u7099\u75D4\u6EDE\u6CBB\u7A92\u4E2D\u76C5\u5FE0\u949F\u8877\u7EC8\u79CD\u80BF\u91CD\u4EF2\u4F17\u821F\u5468\u5DDE\u6D32\u8BCC\u7CA5\u8F74\u8098\u5E1A\u5492\u76B1\u5B99\u663C\u9AA4\u73E0\u682A\u86DB\u6731\u732A\u8BF8\u8BDB\u9010\u7AF9\u70DB\u716E\u62C4\u77A9\u5631\u4E3B\u8457\u67F1\u52A9\u86C0\u8D2E\u94F8\u7B51"], + ["d740", "\u8B46", 31, "\u8B67", 4, "\u8B6D", 25], + ["d780", "\u8B87", 24, "\u8BAC\u8BB1\u8BBB\u8BC7\u8BD0\u8BEA\u8C09\u8C1E\u4F4F\u6CE8\u795D\u9A7B\u6293\u722A\u62FD\u4E13\u7816\u8F6C\u64B0\u8D5A\u7BC6\u6869\u5E84\u88C5\u5986\u649E\u58EE\u72B6\u690E\u9525\u8FFD\u8D58\u5760\u7F00\u8C06\u51C6\u6349\u62D9\u5353\u684C\u7422\u8301\u914C\u5544\u7740\u707C\u6D4A\u5179\u54A8\u8D44\u59FF\u6ECB\u6DC4\u5B5C\u7D2B\u4ED4\u7C7D\u6ED3\u5B50\u81EA\u6E0D\u5B57\u9B03\u68D5\u8E2A\u5B97\u7EFC\u603B\u7EB5\u90B9\u8D70\u594F\u63CD\u79DF\u8DB3\u5352\u65CF\u7956\u8BC5\u963B\u7EC4\u94BB\u7E82\u5634\u9189\u6700\u7F6A\u5C0A\u9075\u6628\u5DE6\u4F50\u67DE\u505A\u4F5C\u5750\u5EA7"], + ["d840", "\u8C38", 8, "\u8C42\u8C43\u8C44\u8C45\u8C48\u8C4A\u8C4B\u8C4D", 7, "\u8C56\u8C57\u8C58\u8C59\u8C5B", 5, "\u8C63", 6, "\u8C6C", 6, "\u8C74\u8C75\u8C76\u8C77\u8C7B", 6, "\u8C83\u8C84\u8C86\u8C87"], + ["d880", "\u8C88\u8C8B\u8C8D", 6, "\u8C95\u8C96\u8C97\u8C99", 20, "\u4E8D\u4E0C\u5140\u4E10\u5EFF\u5345\u4E15\u4E98\u4E1E\u9B32\u5B6C\u5669\u4E28\u79BA\u4E3F\u5315\u4E47\u592D\u723B\u536E\u6C10\u56DF\u80E4\u9997\u6BD3\u777E\u9F17\u4E36\u4E9F\u9F10\u4E5C\u4E69\u4E93\u8288\u5B5B\u556C\u560F\u4EC4\u538D\u539D\u53A3\u53A5\u53AE\u9765\u8D5D\u531A\u53F5\u5326\u532E\u533E\u8D5C\u5366\u5363\u5202\u5208\u520E\u522D\u5233\u523F\u5240\u524C\u525E\u5261\u525C\u84AF\u527D\u5282\u5281\u5290\u5293\u5182\u7F54\u4EBB\u4EC3\u4EC9\u4EC2\u4EE8\u4EE1\u4EEB\u4EDE\u4F1B\u4EF3\u4F22\u4F64\u4EF5\u4F25\u4F27\u4F09\u4F2B\u4F5E\u4F67\u6538\u4F5A\u4F5D"], + ["d940", "\u8CAE", 62], + ["d980", "\u8CED", 32, "\u4F5F\u4F57\u4F32\u4F3D\u4F76\u4F74\u4F91\u4F89\u4F83\u4F8F\u4F7E\u4F7B\u4FAA\u4F7C\u4FAC\u4F94\u4FE6\u4FE8\u4FEA\u4FC5\u4FDA\u4FE3\u4FDC\u4FD1\u4FDF\u4FF8\u5029\u504C\u4FF3\u502C\u500F\u502E\u502D\u4FFE\u501C\u500C\u5025\u5028\u507E\u5043\u5055\u5048\u504E\u506C\u507B\u50A5\u50A7\u50A9\u50BA\u50D6\u5106\u50ED\u50EC\u50E6\u50EE\u5107\u510B\u4EDD\u6C3D\u4F58\u4F65\u4FCE\u9FA0\u6C46\u7C74\u516E\u5DFD\u9EC9\u9998\u5181\u5914\u52F9\u530D\u8A07\u5310\u51EB\u5919\u5155\u4EA0\u5156\u4EB3\u886E\u88A4\u4EB5\u8114\u88D2\u7980\u5B34\u8803\u7FB8\u51AB\u51B1\u51BD\u51BC"], + ["da40", "\u8D0E", 14, "\u8D20\u8D51\u8D52\u8D57\u8D5F\u8D65\u8D68\u8D69\u8D6A\u8D6C\u8D6E\u8D6F\u8D71\u8D72\u8D78", 8, "\u8D82\u8D83\u8D86\u8D87\u8D88\u8D89\u8D8C", 4, "\u8D92\u8D93\u8D95", 9, "\u8DA0\u8DA1"], + ["da80", "\u8DA2\u8DA4", 12, "\u8DB2\u8DB6\u8DB7\u8DB9\u8DBB\u8DBD\u8DC0\u8DC1\u8DC2\u8DC5\u8DC7\u8DC8\u8DC9\u8DCA\u8DCD\u8DD0\u8DD2\u8DD3\u8DD4\u51C7\u5196\u51A2\u51A5\u8BA0\u8BA6\u8BA7\u8BAA\u8BB4\u8BB5\u8BB7\u8BC2\u8BC3\u8BCB\u8BCF\u8BCE\u8BD2\u8BD3\u8BD4\u8BD6\u8BD8\u8BD9\u8BDC\u8BDF\u8BE0\u8BE4\u8BE8\u8BE9\u8BEE\u8BF0\u8BF3\u8BF6\u8BF9\u8BFC\u8BFF\u8C00\u8C02\u8C04\u8C07\u8C0C\u8C0F\u8C11\u8C12\u8C14\u8C15\u8C16\u8C19\u8C1B\u8C18\u8C1D\u8C1F\u8C20\u8C21\u8C25\u8C27\u8C2A\u8C2B\u8C2E\u8C2F\u8C32\u8C33\u8C35\u8C36\u5369\u537A\u961D\u9622\u9621\u9631\u962A\u963D\u963C\u9642\u9649\u9654\u965F\u9667\u966C\u9672\u9674\u9688\u968D\u9697\u96B0\u9097\u909B\u909D\u9099\u90AC\u90A1\u90B4\u90B3\u90B6\u90BA"], + ["db40", "\u8DD5\u8DD8\u8DD9\u8DDC\u8DE0\u8DE1\u8DE2\u8DE5\u8DE6\u8DE7\u8DE9\u8DED\u8DEE\u8DF0\u8DF1\u8DF2\u8DF4\u8DF6\u8DFC\u8DFE", 6, "\u8E06\u8E07\u8E08\u8E0B\u8E0D\u8E0E\u8E10\u8E11\u8E12\u8E13\u8E15", 7, "\u8E20\u8E21\u8E24", 4, "\u8E2B\u8E2D\u8E30\u8E32\u8E33\u8E34\u8E36\u8E37\u8E38\u8E3B\u8E3C\u8E3E"], + ["db80", "\u8E3F\u8E43\u8E45\u8E46\u8E4C", 4, "\u8E53", 5, "\u8E5A", 11, "\u8E67\u8E68\u8E6A\u8E6B\u8E6E\u8E71\u90B8\u90B0\u90CF\u90C5\u90BE\u90D0\u90C4\u90C7\u90D3\u90E6\u90E2\u90DC\u90D7\u90DB\u90EB\u90EF\u90FE\u9104\u9122\u911E\u9123\u9131\u912F\u9139\u9143\u9146\u520D\u5942\u52A2\u52AC\u52AD\u52BE\u54FF\u52D0\u52D6\u52F0\u53DF\u71EE\u77CD\u5EF4\u51F5\u51FC\u9B2F\u53B6\u5F01\u755A\u5DEF\u574C\u57A9\u57A1\u587E\u58BC\u58C5\u58D1\u5729\u572C\u572A\u5733\u5739\u572E\u572F\u575C\u573B\u5742\u5769\u5785\u576B\u5786\u577C\u577B\u5768\u576D\u5776\u5773\u57AD\u57A4\u578C\u57B2\u57CF\u57A7\u57B4\u5793\u57A0\u57D5\u57D8\u57DA\u57D9\u57D2\u57B8\u57F4\u57EF\u57F8\u57E4\u57DD"], + ["dc40", "\u8E73\u8E75\u8E77", 4, "\u8E7D\u8E7E\u8E80\u8E82\u8E83\u8E84\u8E86\u8E88", 6, "\u8E91\u8E92\u8E93\u8E95", 6, "\u8E9D\u8E9F", 11, "\u8EAD\u8EAE\u8EB0\u8EB1\u8EB3", 6, "\u8EBB", 7], + ["dc80", "\u8EC3", 10, "\u8ECF", 21, "\u580B\u580D\u57FD\u57ED\u5800\u581E\u5819\u5844\u5820\u5865\u586C\u5881\u5889\u589A\u5880\u99A8\u9F19\u61FF\u8279\u827D\u827F\u828F\u828A\u82A8\u8284\u828E\u8291\u8297\u8299\u82AB\u82B8\u82BE\u82B0\u82C8\u82CA\u82E3\u8298\u82B7\u82AE\u82CB\u82CC\u82C1\u82A9\u82B4\u82A1\u82AA\u829F\u82C4\u82CE\u82A4\u82E1\u8309\u82F7\u82E4\u830F\u8307\u82DC\u82F4\u82D2\u82D8\u830C\u82FB\u82D3\u8311\u831A\u8306\u8314\u8315\u82E0\u82D5\u831C\u8351\u835B\u835C\u8308\u8392\u833C\u8334\u8331\u839B\u835E\u832F\u834F\u8347\u8343\u835F\u8340\u8317\u8360\u832D\u833A\u8333\u8366\u8365"], + ["dd40", "\u8EE5", 62], + ["dd80", "\u8F24", 32, "\u8368\u831B\u8369\u836C\u836A\u836D\u836E\u83B0\u8378\u83B3\u83B4\u83A0\u83AA\u8393\u839C\u8385\u837C\u83B6\u83A9\u837D\u83B8\u837B\u8398\u839E\u83A8\u83BA\u83BC\u83C1\u8401\u83E5\u83D8\u5807\u8418\u840B\u83DD\u83FD\u83D6\u841C\u8438\u8411\u8406\u83D4\u83DF\u840F\u8403\u83F8\u83F9\u83EA\u83C5\u83C0\u8426\u83F0\u83E1\u845C\u8451\u845A\u8459\u8473\u8487\u8488\u847A\u8489\u8478\u843C\u8446\u8469\u8476\u848C\u848E\u8431\u846D\u84C1\u84CD\u84D0\u84E6\u84BD\u84D3\u84CA\u84BF\u84BA\u84E0\u84A1\u84B9\u84B4\u8497\u84E5\u84E3\u850C\u750D\u8538\u84F0\u8539\u851F\u853A"], + ["de40", "\u8F45", 32, "\u8F6A\u8F80\u8F8C\u8F92\u8F9D\u8FA0\u8FA1\u8FA2\u8FA4\u8FA5\u8FA6\u8FA7\u8FAA\u8FAC\u8FAD\u8FAE\u8FAF\u8FB2\u8FB3\u8FB4\u8FB5\u8FB7\u8FB8\u8FBA\u8FBB\u8FBC\u8FBF\u8FC0\u8FC3\u8FC6"], + ["de80", "\u8FC9", 4, "\u8FCF\u8FD2\u8FD6\u8FD7\u8FDA\u8FE0\u8FE1\u8FE3\u8FE7\u8FEC\u8FEF\u8FF1\u8FF2\u8FF4\u8FF5\u8FF6\u8FFA\u8FFB\u8FFC\u8FFE\u8FFF\u9007\u9008\u900C\u900E\u9013\u9015\u9018\u8556\u853B\u84FF\u84FC\u8559\u8548\u8568\u8564\u855E\u857A\u77A2\u8543\u8572\u857B\u85A4\u85A8\u8587\u858F\u8579\u85AE\u859C\u8585\u85B9\u85B7\u85B0\u85D3\u85C1\u85DC\u85FF\u8627\u8605\u8629\u8616\u863C\u5EFE\u5F08\u593C\u5941\u8037\u5955\u595A\u5958\u530F\u5C22\u5C25\u5C2C\u5C34\u624C\u626A\u629F\u62BB\u62CA\u62DA\u62D7\u62EE\u6322\u62F6\u6339\u634B\u6343\u63AD\u63F6\u6371\u637A\u638E\u63B4\u636D\u63AC\u638A\u6369\u63AE\u63BC\u63F2\u63F8\u63E0\u63FF\u63C4\u63DE\u63CE\u6452\u63C6\u63BE\u6445\u6441\u640B\u641B\u6420\u640C\u6426\u6421\u645E\u6484\u646D\u6496"], + ["df40", "\u9019\u901C\u9023\u9024\u9025\u9027", 5, "\u9030", 4, "\u9037\u9039\u903A\u903D\u903F\u9040\u9043\u9045\u9046\u9048", 4, "\u904E\u9054\u9055\u9056\u9059\u905A\u905C", 5, "\u9064\u9066\u9067\u9069\u906A\u906B\u906C\u906F", 4, "\u9076", 6, "\u907E\u9081"], + ["df80", "\u9084\u9085\u9086\u9087\u9089\u908A\u908C", 4, "\u9092\u9094\u9096\u9098\u909A\u909C\u909E\u909F\u90A0\u90A4\u90A5\u90A7\u90A8\u90A9\u90AB\u90AD\u90B2\u90B7\u90BC\u90BD\u90BF\u90C0\u647A\u64B7\u64B8\u6499\u64BA\u64C0\u64D0\u64D7\u64E4\u64E2\u6509\u6525\u652E\u5F0B\u5FD2\u7519\u5F11\u535F\u53F1\u53FD\u53E9\u53E8\u53FB\u5412\u5416\u5406\u544B\u5452\u5453\u5454\u5456\u5443\u5421\u5457\u5459\u5423\u5432\u5482\u5494\u5477\u5471\u5464\u549A\u549B\u5484\u5476\u5466\u549D\u54D0\u54AD\u54C2\u54B4\u54D2\u54A7\u54A6\u54D3\u54D4\u5472\u54A3\u54D5\u54BB\u54BF\u54CC\u54D9\u54DA\u54DC\u54A9\u54AA\u54A4\u54DD\u54CF\u54DE\u551B\u54E7\u5520\u54FD\u5514\u54F3\u5522\u5523\u550F\u5511\u5527\u552A\u5567\u558F\u55B5\u5549\u556D\u5541\u5555\u553F\u5550\u553C"], + ["e040", "\u90C2\u90C3\u90C6\u90C8\u90C9\u90CB\u90CC\u90CD\u90D2\u90D4\u90D5\u90D6\u90D8\u90D9\u90DA\u90DE\u90DF\u90E0\u90E3\u90E4\u90E5\u90E9\u90EA\u90EC\u90EE\u90F0\u90F1\u90F2\u90F3\u90F5\u90F6\u90F7\u90F9\u90FA\u90FB\u90FC\u90FF\u9100\u9101\u9103\u9105", 19, "\u911A\u911B\u911C"], + ["e080", "\u911D\u911F\u9120\u9121\u9124", 10, "\u9130\u9132", 6, "\u913A", 8, "\u9144\u5537\u5556\u5575\u5576\u5577\u5533\u5530\u555C\u558B\u55D2\u5583\u55B1\u55B9\u5588\u5581\u559F\u557E\u55D6\u5591\u557B\u55DF\u55BD\u55BE\u5594\u5599\u55EA\u55F7\u55C9\u561F\u55D1\u55EB\u55EC\u55D4\u55E6\u55DD\u55C4\u55EF\u55E5\u55F2\u55F3\u55CC\u55CD\u55E8\u55F5\u55E4\u8F94\u561E\u5608\u560C\u5601\u5624\u5623\u55FE\u5600\u5627\u562D\u5658\u5639\u5657\u562C\u564D\u5662\u5659\u565C\u564C\u5654\u5686\u5664\u5671\u566B\u567B\u567C\u5685\u5693\u56AF\u56D4\u56D7\u56DD\u56E1\u56F5\u56EB\u56F9\u56FF\u5704\u570A\u5709\u571C\u5E0F\u5E19\u5E14\u5E11\u5E31\u5E3B\u5E3C"], + ["e140", "\u9145\u9147\u9148\u9151\u9153\u9154\u9155\u9156\u9158\u9159\u915B\u915C\u915F\u9160\u9166\u9167\u9168\u916B\u916D\u9173\u917A\u917B\u917C\u9180", 4, "\u9186\u9188\u918A\u918E\u918F\u9193", 6, "\u919C", 5, "\u91A4", 5, "\u91AB\u91AC\u91B0\u91B1\u91B2\u91B3\u91B6\u91B7\u91B8\u91B9\u91BB"], + ["e180", "\u91BC", 10, "\u91C8\u91CB\u91D0\u91D2", 9, "\u91DD", 8, "\u5E37\u5E44\u5E54\u5E5B\u5E5E\u5E61\u5C8C\u5C7A\u5C8D\u5C90\u5C96\u5C88\u5C98\u5C99\u5C91\u5C9A\u5C9C\u5CB5\u5CA2\u5CBD\u5CAC\u5CAB\u5CB1\u5CA3\u5CC1\u5CB7\u5CC4\u5CD2\u5CE4\u5CCB\u5CE5\u5D02\u5D03\u5D27\u5D26\u5D2E\u5D24\u5D1E\u5D06\u5D1B\u5D58\u5D3E\u5D34\u5D3D\u5D6C\u5D5B\u5D6F\u5D5D\u5D6B\u5D4B\u5D4A\u5D69\u5D74\u5D82\u5D99\u5D9D\u8C73\u5DB7\u5DC5\u5F73\u5F77\u5F82\u5F87\u5F89\u5F8C\u5F95\u5F99\u5F9C\u5FA8\u5FAD\u5FB5\u5FBC\u8862\u5F61\u72AD\u72B0\u72B4\u72B7\u72B8\u72C3\u72C1\u72CE\u72CD\u72D2\u72E8\u72EF\u72E9\u72F2\u72F4\u72F7\u7301\u72F3\u7303\u72FA"], + ["e240", "\u91E6", 62], + ["e280", "\u9225", 32, "\u72FB\u7317\u7313\u7321\u730A\u731E\u731D\u7315\u7322\u7339\u7325\u732C\u7338\u7331\u7350\u734D\u7357\u7360\u736C\u736F\u737E\u821B\u5925\u98E7\u5924\u5902\u9963\u9967", 5, "\u9974\u9977\u997D\u9980\u9984\u9987\u998A\u998D\u9990\u9991\u9993\u9994\u9995\u5E80\u5E91\u5E8B\u5E96\u5EA5\u5EA0\u5EB9\u5EB5\u5EBE\u5EB3\u8D53\u5ED2\u5ED1\u5EDB\u5EE8\u5EEA\u81BA\u5FC4\u5FC9\u5FD6\u5FCF\u6003\u5FEE\u6004\u5FE1\u5FE4\u5FFE\u6005\u6006\u5FEA\u5FED\u5FF8\u6019\u6035\u6026\u601B\u600F\u600D\u6029\u602B\u600A\u603F\u6021\u6078\u6079\u607B\u607A\u6042"], + ["e340", "\u9246", 45, "\u9275", 16], + ["e380", "\u9286", 7, "\u928F", 24, "\u606A\u607D\u6096\u609A\u60AD\u609D\u6083\u6092\u608C\u609B\u60EC\u60BB\u60B1\u60DD\u60D8\u60C6\u60DA\u60B4\u6120\u6126\u6115\u6123\u60F4\u6100\u610E\u612B\u614A\u6175\u61AC\u6194\u61A7\u61B7\u61D4\u61F5\u5FDD\u96B3\u95E9\u95EB\u95F1\u95F3\u95F5\u95F6\u95FC\u95FE\u9603\u9604\u9606\u9608\u960A\u960B\u960C\u960D\u960F\u9612\u9615\u9616\u9617\u9619\u961A\u4E2C\u723F\u6215\u6C35\u6C54\u6C5C\u6C4A\u6CA3\u6C85\u6C90\u6C94\u6C8C\u6C68\u6C69\u6C74\u6C76\u6C86\u6CA9\u6CD0\u6CD4\u6CAD\u6CF7\u6CF8\u6CF1\u6CD7\u6CB2\u6CE0\u6CD6\u6CFA\u6CEB\u6CEE\u6CB1\u6CD3\u6CEF\u6CFE"], + ["e440", "\u92A8", 5, "\u92AF", 24, "\u92C9", 31], + ["e480", "\u92E9", 32, "\u6D39\u6D27\u6D0C\u6D43\u6D48\u6D07\u6D04\u6D19\u6D0E\u6D2B\u6D4D\u6D2E\u6D35\u6D1A\u6D4F\u6D52\u6D54\u6D33\u6D91\u6D6F\u6D9E\u6DA0\u6D5E\u6D93\u6D94\u6D5C\u6D60\u6D7C\u6D63\u6E1A\u6DC7\u6DC5\u6DDE\u6E0E\u6DBF\u6DE0\u6E11\u6DE6\u6DDD\u6DD9\u6E16\u6DAB\u6E0C\u6DAE\u6E2B\u6E6E\u6E4E\u6E6B\u6EB2\u6E5F\u6E86\u6E53\u6E54\u6E32\u6E25\u6E44\u6EDF\u6EB1\u6E98\u6EE0\u6F2D\u6EE2\u6EA5\u6EA7\u6EBD\u6EBB\u6EB7\u6ED7\u6EB4\u6ECF\u6E8F\u6EC2\u6E9F\u6F62\u6F46\u6F47\u6F24\u6F15\u6EF9\u6F2F\u6F36\u6F4B\u6F74\u6F2A\u6F09\u6F29\u6F89\u6F8D\u6F8C\u6F78\u6F72\u6F7C\u6F7A\u6FD1"], + ["e540", "\u930A", 51, "\u933F", 10], + ["e580", "\u934A", 31, "\u936B\u6FC9\u6FA7\u6FB9\u6FB6\u6FC2\u6FE1\u6FEE\u6FDE\u6FE0\u6FEF\u701A\u7023\u701B\u7039\u7035\u704F\u705E\u5B80\u5B84\u5B95\u5B93\u5BA5\u5BB8\u752F\u9A9E\u6434\u5BE4\u5BEE\u8930\u5BF0\u8E47\u8B07\u8FB6\u8FD3\u8FD5\u8FE5\u8FEE\u8FE4\u8FE9\u8FE6\u8FF3\u8FE8\u9005\u9004\u900B\u9026\u9011\u900D\u9016\u9021\u9035\u9036\u902D\u902F\u9044\u9051\u9052\u9050\u9068\u9058\u9062\u905B\u66B9\u9074\u907D\u9082\u9088\u9083\u908B\u5F50\u5F57\u5F56\u5F58\u5C3B\u54AB\u5C50\u5C59\u5B71\u5C63\u5C66\u7FBC\u5F2A\u5F29\u5F2D\u8274\u5F3C\u9B3B\u5C6E\u5981\u5983\u598D\u59A9\u59AA\u59A3"], + ["e640", "\u936C", 34, "\u9390", 27], + ["e680", "\u93AC", 29, "\u93CB\u93CC\u93CD\u5997\u59CA\u59AB\u599E\u59A4\u59D2\u59B2\u59AF\u59D7\u59BE\u5A05\u5A06\u59DD\u5A08\u59E3\u59D8\u59F9\u5A0C\u5A09\u5A32\u5A34\u5A11\u5A23\u5A13\u5A40\u5A67\u5A4A\u5A55\u5A3C\u5A62\u5A75\u80EC\u5AAA\u5A9B\u5A77\u5A7A\u5ABE\u5AEB\u5AB2\u5AD2\u5AD4\u5AB8\u5AE0\u5AE3\u5AF1\u5AD6\u5AE6\u5AD8\u5ADC\u5B09\u5B17\u5B16\u5B32\u5B37\u5B40\u5C15\u5C1C\u5B5A\u5B65\u5B73\u5B51\u5B53\u5B62\u9A75\u9A77\u9A78\u9A7A\u9A7F\u9A7D\u9A80\u9A81\u9A85\u9A88\u9A8A\u9A90\u9A92\u9A93\u9A96\u9A98\u9A9B\u9A9C\u9A9D\u9A9F\u9AA0\u9AA2\u9AA3\u9AA5\u9AA7\u7E9F\u7EA1\u7EA3\u7EA5\u7EA8\u7EA9"], + ["e740", "\u93CE", 7, "\u93D7", 54], + ["e780", "\u940E", 32, "\u7EAD\u7EB0\u7EBE\u7EC0\u7EC1\u7EC2\u7EC9\u7ECB\u7ECC\u7ED0\u7ED4\u7ED7\u7EDB\u7EE0\u7EE1\u7EE8\u7EEB\u7EEE\u7EEF\u7EF1\u7EF2\u7F0D\u7EF6\u7EFA\u7EFB\u7EFE\u7F01\u7F02\u7F03\u7F07\u7F08\u7F0B\u7F0C\u7F0F\u7F11\u7F12\u7F17\u7F19\u7F1C\u7F1B\u7F1F\u7F21", 6, "\u7F2A\u7F2B\u7F2C\u7F2D\u7F2F", 4, "\u7F35\u5E7A\u757F\u5DDB\u753E\u9095\u738E\u7391\u73AE\u73A2\u739F\u73CF\u73C2\u73D1\u73B7\u73B3\u73C0\u73C9\u73C8\u73E5\u73D9\u987C\u740A\u73E9\u73E7\u73DE\u73BA\u73F2\u740F\u742A\u745B\u7426\u7425\u7428\u7430\u742E\u742C"], + ["e840", "\u942F", 14, "\u943F", 43, "\u946C\u946D\u946E\u946F"], + ["e880", "\u9470", 20, "\u9491\u9496\u9498\u94C7\u94CF\u94D3\u94D4\u94DA\u94E6\u94FB\u951C\u9520\u741B\u741A\u7441\u745C\u7457\u7455\u7459\u7477\u746D\u747E\u749C\u748E\u7480\u7481\u7487\u748B\u749E\u74A8\u74A9\u7490\u74A7\u74D2\u74BA\u97EA\u97EB\u97EC\u674C\u6753\u675E\u6748\u6769\u67A5\u6787\u676A\u6773\u6798\u67A7\u6775\u67A8\u679E\u67AD\u678B\u6777\u677C\u67F0\u6809\u67D8\u680A\u67E9\u67B0\u680C\u67D9\u67B5\u67DA\u67B3\u67DD\u6800\u67C3\u67B8\u67E2\u680E\u67C1\u67FD\u6832\u6833\u6860\u6861\u684E\u6862\u6844\u6864\u6883\u681D\u6855\u6866\u6841\u6867\u6840\u683E\u684A\u6849\u6829\u68B5\u688F\u6874\u6877\u6893\u686B\u68C2\u696E\u68FC\u691F\u6920\u68F9"], + ["e940", "\u9527\u9533\u953D\u9543\u9548\u954B\u9555\u955A\u9560\u956E\u9574\u9575\u9577", 7, "\u9580", 42], + ["e980", "\u95AB", 32, "\u6924\u68F0\u690B\u6901\u6957\u68E3\u6910\u6971\u6939\u6960\u6942\u695D\u6984\u696B\u6980\u6998\u6978\u6934\u69CC\u6987\u6988\u69CE\u6989\u6966\u6963\u6979\u699B\u69A7\u69BB\u69AB\u69AD\u69D4\u69B1\u69C1\u69CA\u69DF\u6995\u69E0\u698D\u69FF\u6A2F\u69ED\u6A17\u6A18\u6A65\u69F2\u6A44\u6A3E\u6AA0\u6A50\u6A5B\u6A35\u6A8E\u6A79\u6A3D\u6A28\u6A58\u6A7C\u6A91\u6A90\u6AA9\u6A97\u6AAB\u7337\u7352\u6B81\u6B82\u6B87\u6B84\u6B92\u6B93\u6B8D\u6B9A\u6B9B\u6BA1\u6BAA\u8F6B\u8F6D\u8F71\u8F72\u8F73\u8F75\u8F76\u8F78\u8F77\u8F79\u8F7A\u8F7C\u8F7E\u8F81\u8F82\u8F84\u8F87\u8F8B"], + ["ea40", "\u95CC", 27, "\u95EC\u95FF\u9607\u9613\u9618\u961B\u961E\u9620\u9623", 6, "\u962B\u962C\u962D\u962F\u9630\u9637\u9638\u9639\u963A\u963E\u9641\u9643\u964A\u964E\u964F\u9651\u9652\u9653\u9656\u9657"], + ["ea80", "\u9658\u9659\u965A\u965C\u965D\u965E\u9660\u9663\u9665\u9666\u966B\u966D", 4, "\u9673\u9678", 12, "\u9687\u9689\u968A\u8F8D\u8F8E\u8F8F\u8F98\u8F9A\u8ECE\u620B\u6217\u621B\u621F\u6222\u6221\u6225\u6224\u622C\u81E7\u74EF\u74F4\u74FF\u750F\u7511\u7513\u6534\u65EE\u65EF\u65F0\u660A\u6619\u6772\u6603\u6615\u6600\u7085\u66F7\u661D\u6634\u6631\u6636\u6635\u8006\u665F\u6654\u6641\u664F\u6656\u6661\u6657\u6677\u6684\u668C\u66A7\u669D\u66BE\u66DB\u66DC\u66E6\u66E9\u8D32\u8D33\u8D36\u8D3B\u8D3D\u8D40\u8D45\u8D46\u8D48\u8D49\u8D47\u8D4D\u8D55\u8D59\u89C7\u89CA\u89CB\u89CC\u89CE\u89CF\u89D0\u89D1\u726E\u729F\u725D\u7266\u726F\u727E\u727F\u7284\u728B\u728D\u728F\u7292\u6308\u6332\u63B0"], + ["eb40", "\u968C\u968E\u9691\u9692\u9693\u9695\u9696\u969A\u969B\u969D", 9, "\u96A8", 7, "\u96B1\u96B2\u96B4\u96B5\u96B7\u96B8\u96BA\u96BB\u96BF\u96C2\u96C3\u96C8\u96CA\u96CB\u96D0\u96D1\u96D3\u96D4\u96D6", 9, "\u96E1", 6, "\u96EB"], + ["eb80", "\u96EC\u96ED\u96EE\u96F0\u96F1\u96F2\u96F4\u96F5\u96F8\u96FA\u96FB\u96FC\u96FD\u96FF\u9702\u9703\u9705\u970A\u970B\u970C\u9710\u9711\u9712\u9714\u9715\u9717", 4, "\u971D\u971F\u9720\u643F\u64D8\u8004\u6BEA\u6BF3\u6BFD\u6BF5\u6BF9\u6C05\u6C07\u6C06\u6C0D\u6C15\u6C18\u6C19\u6C1A\u6C21\u6C29\u6C24\u6C2A\u6C32\u6535\u6555\u656B\u724D\u7252\u7256\u7230\u8662\u5216\u809F\u809C\u8093\u80BC\u670A\u80BD\u80B1\u80AB\u80AD\u80B4\u80B7\u80E7\u80E8\u80E9\u80EA\u80DB\u80C2\u80C4\u80D9\u80CD\u80D7\u6710\u80DD\u80EB\u80F1\u80F4\u80ED\u810D\u810E\u80F2\u80FC\u6715\u8112\u8C5A\u8136\u811E\u812C\u8118\u8132\u8148\u814C\u8153\u8174\u8159\u815A\u8171\u8160\u8169\u817C\u817D\u816D\u8167\u584D\u5AB5\u8188\u8182\u8191\u6ED5\u81A3\u81AA\u81CC\u6726\u81CA\u81BB"], + ["ec40", "\u9721", 8, "\u972B\u972C\u972E\u972F\u9731\u9733", 4, "\u973A\u973B\u973C\u973D\u973F", 18, "\u9754\u9755\u9757\u9758\u975A\u975C\u975D\u975F\u9763\u9764\u9766\u9767\u9768\u976A", 7], + ["ec80", "\u9772\u9775\u9777", 4, "\u977D", 7, "\u9786", 4, "\u978C\u978E\u978F\u9790\u9793\u9795\u9796\u9797\u9799", 4, "\u81C1\u81A6\u6B24\u6B37\u6B39\u6B43\u6B46\u6B59\u98D1\u98D2\u98D3\u98D5\u98D9\u98DA\u6BB3\u5F40\u6BC2\u89F3\u6590\u9F51\u6593\u65BC\u65C6\u65C4\u65C3\u65CC\u65CE\u65D2\u65D6\u7080\u709C\u7096\u709D\u70BB\u70C0\u70B7\u70AB\u70B1\u70E8\u70CA\u7110\u7113\u7116\u712F\u7131\u7173\u715C\u7168\u7145\u7172\u714A\u7178\u717A\u7198\u71B3\u71B5\u71A8\u71A0\u71E0\u71D4\u71E7\u71F9\u721D\u7228\u706C\u7118\u7166\u71B9\u623E\u623D\u6243\u6248\u6249\u793B\u7940\u7946\u7949\u795B\u795C\u7953\u795A\u7962\u7957\u7960\u796F\u7967\u797A\u7985\u798A\u799A\u79A7\u79B3\u5FD1\u5FD0"], + ["ed40", "\u979E\u979F\u97A1\u97A2\u97A4", 6, "\u97AC\u97AE\u97B0\u97B1\u97B3\u97B5", 46], + ["ed80", "\u97E4\u97E5\u97E8\u97EE", 4, "\u97F4\u97F7", 23, "\u603C\u605D\u605A\u6067\u6041\u6059\u6063\u60AB\u6106\u610D\u615D\u61A9\u619D\u61CB\u61D1\u6206\u8080\u807F\u6C93\u6CF6\u6DFC\u77F6\u77F8\u7800\u7809\u7817\u7818\u7811\u65AB\u782D\u781C\u781D\u7839\u783A\u783B\u781F\u783C\u7825\u782C\u7823\u7829\u784E\u786D\u7856\u7857\u7826\u7850\u7847\u784C\u786A\u789B\u7893\u789A\u7887\u789C\u78A1\u78A3\u78B2\u78B9\u78A5\u78D4\u78D9\u78C9\u78EC\u78F2\u7905\u78F4\u7913\u7924\u791E\u7934\u9F9B\u9EF9\u9EFB\u9EFC\u76F1\u7704\u770D\u76F9\u7707\u7708\u771A\u7722\u7719\u772D\u7726\u7735\u7738\u7750\u7751\u7747\u7743\u775A\u7768"], + ["ee40", "\u980F", 62], + ["ee80", "\u984E", 32, "\u7762\u7765\u777F\u778D\u777D\u7780\u778C\u7791\u779F\u77A0\u77B0\u77B5\u77BD\u753A\u7540\u754E\u754B\u7548\u755B\u7572\u7579\u7583\u7F58\u7F61\u7F5F\u8A48\u7F68\u7F74\u7F71\u7F79\u7F81\u7F7E\u76CD\u76E5\u8832\u9485\u9486\u9487\u948B\u948A\u948C\u948D\u948F\u9490\u9494\u9497\u9495\u949A\u949B\u949C\u94A3\u94A4\u94AB\u94AA\u94AD\u94AC\u94AF\u94B0\u94B2\u94B4\u94B6", 4, "\u94BC\u94BD\u94BF\u94C4\u94C8", 6, "\u94D0\u94D1\u94D2\u94D5\u94D6\u94D7\u94D9\u94D8\u94DB\u94DE\u94DF\u94E0\u94E2\u94E4\u94E5\u94E7\u94E8\u94EA"], + ["ef40", "\u986F", 5, "\u988B\u988E\u9892\u9895\u9899\u98A3\u98A8", 37, "\u98CF\u98D0\u98D4\u98D6\u98D7\u98DB\u98DC\u98DD\u98E0", 4], + ["ef80", "\u98E5\u98E6\u98E9", 30, "\u94E9\u94EB\u94EE\u94EF\u94F3\u94F4\u94F5\u94F7\u94F9\u94FC\u94FD\u94FF\u9503\u9502\u9506\u9507\u9509\u950A\u950D\u950E\u950F\u9512", 4, "\u9518\u951B\u951D\u951E\u951F\u9522\u952A\u952B\u9529\u952C\u9531\u9532\u9534\u9536\u9537\u9538\u953C\u953E\u953F\u9542\u9535\u9544\u9545\u9546\u9549\u954C\u954E\u954F\u9552\u9553\u9554\u9556\u9557\u9558\u9559\u955B\u955E\u955F\u955D\u9561\u9562\u9564", 8, "\u956F\u9571\u9572\u9573\u953A\u77E7\u77EC\u96C9\u79D5\u79ED\u79E3\u79EB\u7A06\u5D47\u7A03\u7A02\u7A1E\u7A14"], + ["f040", "\u9908", 4, "\u990E\u990F\u9911", 28, "\u992F", 26], + ["f080", "\u994A", 9, "\u9956", 12, "\u9964\u9966\u9973\u9978\u9979\u997B\u997E\u9982\u9983\u9989\u7A39\u7A37\u7A51\u9ECF\u99A5\u7A70\u7688\u768E\u7693\u7699\u76A4\u74DE\u74E0\u752C\u9E20\u9E22\u9E28", 4, "\u9E32\u9E31\u9E36\u9E38\u9E37\u9E39\u9E3A\u9E3E\u9E41\u9E42\u9E44\u9E46\u9E47\u9E48\u9E49\u9E4B\u9E4C\u9E4E\u9E51\u9E55\u9E57\u9E5A\u9E5B\u9E5C\u9E5E\u9E63\u9E66", 6, "\u9E71\u9E6D\u9E73\u7592\u7594\u7596\u75A0\u759D\u75AC\u75A3\u75B3\u75B4\u75B8\u75C4\u75B1\u75B0\u75C3\u75C2\u75D6\u75CD\u75E3\u75E8\u75E6\u75E4\u75EB\u75E7\u7603\u75F1\u75FC\u75FF\u7610\u7600\u7605\u760C\u7617\u760A\u7625\u7618\u7615\u7619"], + ["f140", "\u998C\u998E\u999A", 10, "\u99A6\u99A7\u99A9", 47], + ["f180", "\u99D9", 32, "\u761B\u763C\u7622\u7620\u7640\u762D\u7630\u763F\u7635\u7643\u763E\u7633\u764D\u765E\u7654\u765C\u7656\u766B\u766F\u7FCA\u7AE6\u7A78\u7A79\u7A80\u7A86\u7A88\u7A95\u7AA6\u7AA0\u7AAC\u7AA8\u7AAD\u7AB3\u8864\u8869\u8872\u887D\u887F\u8882\u88A2\u88C6\u88B7\u88BC\u88C9\u88E2\u88CE\u88E3\u88E5\u88F1\u891A\u88FC\u88E8\u88FE\u88F0\u8921\u8919\u8913\u891B\u890A\u8934\u892B\u8936\u8941\u8966\u897B\u758B\u80E5\u76B2\u76B4\u77DC\u8012\u8014\u8016\u801C\u8020\u8022\u8025\u8026\u8027\u8029\u8028\u8031\u800B\u8035\u8043\u8046\u804D\u8052\u8069\u8071\u8983\u9878\u9880\u9883"], + ["f240", "\u99FA", 62], + ["f280", "\u9A39", 32, "\u9889\u988C\u988D\u988F\u9894\u989A\u989B\u989E\u989F\u98A1\u98A2\u98A5\u98A6\u864D\u8654\u866C\u866E\u867F\u867A\u867C\u867B\u86A8\u868D\u868B\u86AC\u869D\u86A7\u86A3\u86AA\u8693\u86A9\u86B6\u86C4\u86B5\u86CE\u86B0\u86BA\u86B1\u86AF\u86C9\u86CF\u86B4\u86E9\u86F1\u86F2\u86ED\u86F3\u86D0\u8713\u86DE\u86F4\u86DF\u86D8\u86D1\u8703\u8707\u86F8\u8708\u870A\u870D\u8709\u8723\u873B\u871E\u8725\u872E\u871A\u873E\u8748\u8734\u8731\u8729\u8737\u873F\u8782\u8722\u877D\u877E\u877B\u8760\u8770\u874C\u876E\u878B\u8753\u8763\u877C\u8764\u8759\u8765\u8793\u87AF\u87A8\u87D2"], + ["f340", "\u9A5A", 17, "\u9A72\u9A83\u9A89\u9A8D\u9A8E\u9A94\u9A95\u9A99\u9AA6\u9AA9", 6, "\u9AB2\u9AB3\u9AB4\u9AB5\u9AB9\u9ABB\u9ABD\u9ABE\u9ABF\u9AC3\u9AC4\u9AC6", 4, "\u9ACD\u9ACE\u9ACF\u9AD0\u9AD2\u9AD4\u9AD5\u9AD6\u9AD7\u9AD9\u9ADA\u9ADB\u9ADC"], + ["f380", "\u9ADD\u9ADE\u9AE0\u9AE2\u9AE3\u9AE4\u9AE5\u9AE7\u9AE8\u9AE9\u9AEA\u9AEC\u9AEE\u9AF0", 8, "\u9AFA\u9AFC", 6, "\u9B04\u9B05\u9B06\u87C6\u8788\u8785\u87AD\u8797\u8783\u87AB\u87E5\u87AC\u87B5\u87B3\u87CB\u87D3\u87BD\u87D1\u87C0\u87CA\u87DB\u87EA\u87E0\u87EE\u8816\u8813\u87FE\u880A\u881B\u8821\u8839\u883C\u7F36\u7F42\u7F44\u7F45\u8210\u7AFA\u7AFD\u7B08\u7B03\u7B04\u7B15\u7B0A\u7B2B\u7B0F\u7B47\u7B38\u7B2A\u7B19\u7B2E\u7B31\u7B20\u7B25\u7B24\u7B33\u7B3E\u7B1E\u7B58\u7B5A\u7B45\u7B75\u7B4C\u7B5D\u7B60\u7B6E\u7B7B\u7B62\u7B72\u7B71\u7B90\u7BA6\u7BA7\u7BB8\u7BAC\u7B9D\u7BA8\u7B85\u7BAA\u7B9C\u7BA2\u7BAB\u7BB4\u7BD1\u7BC1\u7BCC\u7BDD\u7BDA\u7BE5\u7BE6\u7BEA\u7C0C\u7BFE\u7BFC\u7C0F\u7C16\u7C0B"], + ["f440", "\u9B07\u9B09", 5, "\u9B10\u9B11\u9B12\u9B14", 10, "\u9B20\u9B21\u9B22\u9B24", 10, "\u9B30\u9B31\u9B33", 7, "\u9B3D\u9B3E\u9B3F\u9B40\u9B46\u9B4A\u9B4B\u9B4C\u9B4E\u9B50\u9B52\u9B53\u9B55", 5], + ["f480", "\u9B5B", 32, "\u7C1F\u7C2A\u7C26\u7C38\u7C41\u7C40\u81FE\u8201\u8202\u8204\u81EC\u8844\u8221\u8222\u8223\u822D\u822F\u8228\u822B\u8238\u823B\u8233\u8234\u823E\u8244\u8249\u824B\u824F\u825A\u825F\u8268\u887E\u8885\u8888\u88D8\u88DF\u895E\u7F9D\u7F9F\u7FA7\u7FAF\u7FB0\u7FB2\u7C7C\u6549\u7C91\u7C9D\u7C9C\u7C9E\u7CA2\u7CB2\u7CBC\u7CBD\u7CC1\u7CC7\u7CCC\u7CCD\u7CC8\u7CC5\u7CD7\u7CE8\u826E\u66A8\u7FBF\u7FCE\u7FD5\u7FE5\u7FE1\u7FE6\u7FE9\u7FEE\u7FF3\u7CF8\u7D77\u7DA6\u7DAE\u7E47\u7E9B\u9EB8\u9EB4\u8D73\u8D84\u8D94\u8D91\u8DB1\u8D67\u8D6D\u8C47\u8C49\u914A\u9150\u914E\u914F\u9164"], + ["f540", "\u9B7C", 62], + ["f580", "\u9BBB", 32, "\u9162\u9161\u9170\u9169\u916F\u917D\u917E\u9172\u9174\u9179\u918C\u9185\u9190\u918D\u9191\u91A2\u91A3\u91AA\u91AD\u91AE\u91AF\u91B5\u91B4\u91BA\u8C55\u9E7E\u8DB8\u8DEB\u8E05\u8E59\u8E69\u8DB5\u8DBF\u8DBC\u8DBA\u8DC4\u8DD6\u8DD7\u8DDA\u8DDE\u8DCE\u8DCF\u8DDB\u8DC6\u8DEC\u8DF7\u8DF8\u8DE3\u8DF9\u8DFB\u8DE4\u8E09\u8DFD\u8E14\u8E1D\u8E1F\u8E2C\u8E2E\u8E23\u8E2F\u8E3A\u8E40\u8E39\u8E35\u8E3D\u8E31\u8E49\u8E41\u8E42\u8E51\u8E52\u8E4A\u8E70\u8E76\u8E7C\u8E6F\u8E74\u8E85\u8E8F\u8E94\u8E90\u8E9C\u8E9E\u8C78\u8C82\u8C8A\u8C85\u8C98\u8C94\u659B\u89D6\u89DE\u89DA\u89DC"], + ["f640", "\u9BDC", 62], + ["f680", "\u9C1B", 32, "\u89E5\u89EB\u89EF\u8A3E\u8B26\u9753\u96E9\u96F3\u96EF\u9706\u9701\u9708\u970F\u970E\u972A\u972D\u9730\u973E\u9F80\u9F83\u9F85", 5, "\u9F8C\u9EFE\u9F0B\u9F0D\u96B9\u96BC\u96BD\u96CE\u96D2\u77BF\u96E0\u928E\u92AE\u92C8\u933E\u936A\u93CA\u938F\u943E\u946B\u9C7F\u9C82\u9C85\u9C86\u9C87\u9C88\u7A23\u9C8B\u9C8E\u9C90\u9C91\u9C92\u9C94\u9C95\u9C9A\u9C9B\u9C9E", 5, "\u9CA5", 4, "\u9CAB\u9CAD\u9CAE\u9CB0", 7, "\u9CBA\u9CBB\u9CBC\u9CBD\u9CC4\u9CC5\u9CC6\u9CC7\u9CCA\u9CCB"], + ["f740", "\u9C3C", 62], + ["f780", "\u9C7B\u9C7D\u9C7E\u9C80\u9C83\u9C84\u9C89\u9C8A\u9C8C\u9C8F\u9C93\u9C96\u9C97\u9C98\u9C99\u9C9D\u9CAA\u9CAC\u9CAF\u9CB9\u9CBE", 4, "\u9CC8\u9CC9\u9CD1\u9CD2\u9CDA\u9CDB\u9CE0\u9CE1\u9CCC", 4, "\u9CD3\u9CD4\u9CD5\u9CD7\u9CD8\u9CD9\u9CDC\u9CDD\u9CDF\u9CE2\u977C\u9785\u9791\u9792\u9794\u97AF\u97AB\u97A3\u97B2\u97B4\u9AB1\u9AB0\u9AB7\u9E58\u9AB6\u9ABA\u9ABC\u9AC1\u9AC0\u9AC5\u9AC2\u9ACB\u9ACC\u9AD1\u9B45\u9B43\u9B47\u9B49\u9B48\u9B4D\u9B51\u98E8\u990D\u992E\u9955\u9954\u9ADF\u9AE1\u9AE6\u9AEF\u9AEB\u9AFB\u9AED\u9AF9\u9B08\u9B0F\u9B13\u9B1F\u9B23\u9EBD\u9EBE\u7E3B\u9E82\u9E87\u9E88\u9E8B\u9E92\u93D6\u9E9D\u9E9F\u9EDB\u9EDC\u9EDD\u9EE0\u9EDF\u9EE2\u9EE9\u9EE7\u9EE5\u9EEA\u9EEF\u9F22\u9F2C\u9F2F\u9F39\u9F37\u9F3D\u9F3E\u9F44"], + ["f840", "\u9CE3", 62], + ["f880", "\u9D22", 32], + ["f940", "\u9D43", 62], + ["f980", "\u9D82", 32], + ["fa40", "\u9DA3", 62], + ["fa80", "\u9DE2", 32], + ["fb40", "\u9E03", 27, "\u9E24\u9E27\u9E2E\u9E30\u9E34\u9E3B\u9E3C\u9E40\u9E4D\u9E50\u9E52\u9E53\u9E54\u9E56\u9E59\u9E5D\u9E5F\u9E60\u9E61\u9E62\u9E65\u9E6E\u9E6F\u9E72\u9E74", 9, "\u9E80"], + ["fb80", "\u9E81\u9E83\u9E84\u9E85\u9E86\u9E89\u9E8A\u9E8C", 5, "\u9E94", 8, "\u9E9E\u9EA0", 5, "\u9EA7\u9EA8\u9EA9\u9EAA"], + ["fc40", "\u9EAB", 8, "\u9EB5\u9EB6\u9EB7\u9EB9\u9EBA\u9EBC\u9EBF", 4, "\u9EC5\u9EC6\u9EC7\u9EC8\u9ECA\u9ECB\u9ECC\u9ED0\u9ED2\u9ED3\u9ED5\u9ED6\u9ED7\u9ED9\u9EDA\u9EDE\u9EE1\u9EE3\u9EE4\u9EE6\u9EE8\u9EEB\u9EEC\u9EED\u9EEE\u9EF0", 8, "\u9EFA\u9EFD\u9EFF", 6], + ["fc80", "\u9F06", 4, "\u9F0C\u9F0F\u9F11\u9F12\u9F14\u9F15\u9F16\u9F18\u9F1A", 5, "\u9F21\u9F23", 8, "\u9F2D\u9F2E\u9F30\u9F31"], + ["fd40", "\u9F32", 4, "\u9F38\u9F3A\u9F3C\u9F3F", 4, "\u9F45", 10, "\u9F52", 38], + ["fd80", "\u9F79", 5, "\u9F81\u9F82\u9F8D", 11, "\u9F9C\u9F9D\u9F9E\u9FA1", 4, "\uF92C\uF979\uF995\uF9E7\uF9F1"], + ["fe40", "\uFA0C\uFA0D\uFA0E\uFA0F\uFA11\uFA13\uFA14\uFA18\uFA1F\uFA20\uFA21\uFA23\uFA24\uFA27\uFA28\uFA29"] + ]; + } +}); + +// node_modules/iconv-lite/encodings/tables/gbk-added.json +var require_gbk_added = __commonJS({ + "node_modules/iconv-lite/encodings/tables/gbk-added.json"(exports2, module2) { + module2.exports = [ + ["a140", "\uE4C6", 62], + ["a180", "\uE505", 32], + ["a240", "\uE526", 62], + ["a280", "\uE565", 32], + ["a2ab", "\uE766", 5], + ["a2e3", "\u20AC\uE76D"], + ["a2ef", "\uE76E\uE76F"], + ["a2fd", "\uE770\uE771"], + ["a340", "\uE586", 62], + ["a380", "\uE5C5", 31, "\u3000"], + ["a440", "\uE5E6", 62], + ["a480", "\uE625", 32], + ["a4f4", "\uE772", 10], + ["a540", "\uE646", 62], + ["a580", "\uE685", 32], + ["a5f7", "\uE77D", 7], + ["a640", "\uE6A6", 62], + ["a680", "\uE6E5", 32], + ["a6b9", "\uE785", 7], + ["a6d9", "\uE78D", 6], + ["a6ec", "\uE794\uE795"], + ["a6f3", "\uE796"], + ["a6f6", "\uE797", 8], + ["a740", "\uE706", 62], + ["a780", "\uE745", 32], + ["a7c2", "\uE7A0", 14], + ["a7f2", "\uE7AF", 12], + ["a896", "\uE7BC", 10], + ["a8bc", "\u1E3F"], + ["a8bf", "\u01F9"], + ["a8c1", "\uE7C9\uE7CA\uE7CB\uE7CC"], + ["a8ea", "\uE7CD", 20], + ["a958", "\uE7E2"], + ["a95b", "\uE7E3"], + ["a95d", "\uE7E4\uE7E5\uE7E6"], + ["a989", "\u303E\u2FF0", 11], + ["a997", "\uE7F4", 12], + ["a9f0", "\uE801", 14], + ["aaa1", "\uE000", 93], + ["aba1", "\uE05E", 93], + ["aca1", "\uE0BC", 93], + ["ada1", "\uE11A", 93], + ["aea1", "\uE178", 93], + ["afa1", "\uE1D6", 93], + ["d7fa", "\uE810", 4], + ["f8a1", "\uE234", 93], + ["f9a1", "\uE292", 93], + ["faa1", "\uE2F0", 93], + ["fba1", "\uE34E", 93], + ["fca1", "\uE3AC", 93], + ["fda1", "\uE40A", 93], + ["fe50", "\u2E81\uE816\uE817\uE818\u2E84\u3473\u3447\u2E88\u2E8B\uE81E\u359E\u361A\u360E\u2E8C\u2E97\u396E\u3918\uE826\u39CF\u39DF\u3A73\u39D0\uE82B\uE82C\u3B4E\u3C6E\u3CE0\u2EA7\uE831\uE832\u2EAA\u4056\u415F\u2EAE\u4337\u2EB3\u2EB6\u2EB7\uE83B\u43B1\u43AC\u2EBB\u43DD\u44D6\u4661\u464C\uE843"], + ["fe80", "\u4723\u4729\u477C\u478D\u2ECA\u4947\u497A\u497D\u4982\u4983\u4985\u4986\u499F\u499B\u49B7\u49B6\uE854\uE855\u4CA3\u4C9F\u4CA0\u4CA1\u4C77\u4CA2\u4D13", 6, "\u4DAE\uE864\uE468", 93], + ["8135f437", "\uE7C7"] + ]; + } +}); + +// node_modules/iconv-lite/encodings/tables/gb18030-ranges.json +var require_gb18030_ranges = __commonJS({ + "node_modules/iconv-lite/encodings/tables/gb18030-ranges.json"(exports2, module2) { + module2.exports = { uChars: [128, 165, 169, 178, 184, 216, 226, 235, 238, 244, 248, 251, 253, 258, 276, 284, 300, 325, 329, 334, 364, 463, 465, 467, 469, 471, 473, 475, 477, 506, 594, 610, 712, 716, 730, 930, 938, 962, 970, 1026, 1104, 1106, 8209, 8215, 8218, 8222, 8231, 8241, 8244, 8246, 8252, 8365, 8452, 8454, 8458, 8471, 8482, 8556, 8570, 8596, 8602, 8713, 8720, 8722, 8726, 8731, 8737, 8740, 8742, 8748, 8751, 8760, 8766, 8777, 8781, 8787, 8802, 8808, 8816, 8854, 8858, 8870, 8896, 8979, 9322, 9372, 9548, 9588, 9616, 9622, 9634, 9652, 9662, 9672, 9676, 9680, 9702, 9735, 9738, 9793, 9795, 11906, 11909, 11913, 11917, 11928, 11944, 11947, 11951, 11956, 11960, 11964, 11979, 12284, 12292, 12312, 12319, 12330, 12351, 12436, 12447, 12535, 12543, 12586, 12842, 12850, 12964, 13200, 13215, 13218, 13253, 13263, 13267, 13270, 13384, 13428, 13727, 13839, 13851, 14617, 14703, 14801, 14816, 14964, 15183, 15471, 15585, 16471, 16736, 17208, 17325, 17330, 17374, 17623, 17997, 18018, 18212, 18218, 18301, 18318, 18760, 18811, 18814, 18820, 18823, 18844, 18848, 18872, 19576, 19620, 19738, 19887, 40870, 59244, 59336, 59367, 59413, 59417, 59423, 59431, 59437, 59443, 59452, 59460, 59478, 59493, 63789, 63866, 63894, 63976, 63986, 64016, 64018, 64021, 64025, 64034, 64037, 64042, 65074, 65093, 65107, 65112, 65127, 65132, 65375, 65510, 65536], gbChars: [0, 36, 38, 45, 50, 81, 89, 95, 96, 100, 103, 104, 105, 109, 126, 133, 148, 172, 175, 179, 208, 306, 307, 308, 309, 310, 311, 312, 313, 341, 428, 443, 544, 545, 558, 741, 742, 749, 750, 805, 819, 820, 7922, 7924, 7925, 7927, 7934, 7943, 7944, 7945, 7950, 8062, 8148, 8149, 8152, 8164, 8174, 8236, 8240, 8262, 8264, 8374, 8380, 8381, 8384, 8388, 8390, 8392, 8393, 8394, 8396, 8401, 8406, 8416, 8419, 8424, 8437, 8439, 8445, 8482, 8485, 8496, 8521, 8603, 8936, 8946, 9046, 9050, 9063, 9066, 9076, 9092, 9100, 9108, 9111, 9113, 9131, 9162, 9164, 9218, 9219, 11329, 11331, 11334, 11336, 11346, 11361, 11363, 11366, 11370, 11372, 11375, 11389, 11682, 11686, 11687, 11692, 11694, 11714, 11716, 11723, 11725, 11730, 11736, 11982, 11989, 12102, 12336, 12348, 12350, 12384, 12393, 12395, 12397, 12510, 12553, 12851, 12962, 12973, 13738, 13823, 13919, 13933, 14080, 14298, 14585, 14698, 15583, 15847, 16318, 16434, 16438, 16481, 16729, 17102, 17122, 17315, 17320, 17402, 17418, 17859, 17909, 17911, 17915, 17916, 17936, 17939, 17961, 18664, 18703, 18814, 18962, 19043, 33469, 33470, 33471, 33484, 33485, 33490, 33497, 33501, 33505, 33513, 33520, 33536, 33550, 37845, 37921, 37948, 38029, 38038, 38064, 38065, 38066, 38069, 38075, 38076, 38078, 39108, 39109, 39113, 39114, 39115, 39116, 39265, 39394, 189e3] }; + } +}); + +// node_modules/iconv-lite/encodings/tables/cp949.json +var require_cp949 = __commonJS({ + "node_modules/iconv-lite/encodings/tables/cp949.json"(exports2, module2) { + module2.exports = [ + ["0", "\0", 127], + ["8141", "\uAC02\uAC03\uAC05\uAC06\uAC0B", 4, "\uAC18\uAC1E\uAC1F\uAC21\uAC22\uAC23\uAC25", 6, "\uAC2E\uAC32\uAC33\uAC34"], + ["8161", "\uAC35\uAC36\uAC37\uAC3A\uAC3B\uAC3D\uAC3E\uAC3F\uAC41", 9, "\uAC4C\uAC4E", 5, "\uAC55"], + ["8181", "\uAC56\uAC57\uAC59\uAC5A\uAC5B\uAC5D", 18, "\uAC72\uAC73\uAC75\uAC76\uAC79\uAC7B", 4, "\uAC82\uAC87\uAC88\uAC8D\uAC8E\uAC8F\uAC91\uAC92\uAC93\uAC95", 6, "\uAC9E\uACA2", 5, "\uACAB\uACAD\uACAE\uACB1", 6, "\uACBA\uACBE\uACBF\uACC0\uACC2\uACC3\uACC5\uACC6\uACC7\uACC9\uACCA\uACCB\uACCD", 7, "\uACD6\uACD8", 7, "\uACE2\uACE3\uACE5\uACE6\uACE9\uACEB\uACED\uACEE\uACF2\uACF4\uACF7", 4, "\uACFE\uACFF\uAD01\uAD02\uAD03\uAD05\uAD07", 4, "\uAD0E\uAD10\uAD12\uAD13"], + ["8241", "\uAD14\uAD15\uAD16\uAD17\uAD19\uAD1A\uAD1B\uAD1D\uAD1E\uAD1F\uAD21", 7, "\uAD2A\uAD2B\uAD2E", 5], + ["8261", "\uAD36\uAD37\uAD39\uAD3A\uAD3B\uAD3D", 6, "\uAD46\uAD48\uAD4A", 5, "\uAD51\uAD52\uAD53\uAD55\uAD56\uAD57"], + ["8281", "\uAD59", 7, "\uAD62\uAD64", 7, "\uAD6E\uAD6F\uAD71\uAD72\uAD77\uAD78\uAD79\uAD7A\uAD7E\uAD80\uAD83", 4, "\uAD8A\uAD8B\uAD8D\uAD8E\uAD8F\uAD91", 10, "\uAD9E", 5, "\uADA5", 17, "\uADB8", 7, "\uADC2\uADC3\uADC5\uADC6\uADC7\uADC9", 6, "\uADD2\uADD4", 7, "\uADDD\uADDE\uADDF\uADE1\uADE2\uADE3\uADE5", 18], + ["8341", "\uADFA\uADFB\uADFD\uADFE\uAE02", 5, "\uAE0A\uAE0C\uAE0E", 5, "\uAE15", 7], + ["8361", "\uAE1D", 18, "\uAE32\uAE33\uAE35\uAE36\uAE39\uAE3B\uAE3C"], + ["8381", "\uAE3D\uAE3E\uAE3F\uAE42\uAE44\uAE47\uAE48\uAE49\uAE4B\uAE4F\uAE51\uAE52\uAE53\uAE55\uAE57", 4, "\uAE5E\uAE62\uAE63\uAE64\uAE66\uAE67\uAE6A\uAE6B\uAE6D\uAE6E\uAE6F\uAE71", 6, "\uAE7A\uAE7E", 5, "\uAE86", 5, "\uAE8D", 46, "\uAEBF\uAEC1\uAEC2\uAEC3\uAEC5", 6, "\uAECE\uAED2", 5, "\uAEDA\uAEDB\uAEDD", 8], + ["8441", "\uAEE6\uAEE7\uAEE9\uAEEA\uAEEC\uAEEE", 5, "\uAEF5\uAEF6\uAEF7\uAEF9\uAEFA\uAEFB\uAEFD", 8], + ["8461", "\uAF06\uAF09\uAF0A\uAF0B\uAF0C\uAF0E\uAF0F\uAF11", 18], + ["8481", "\uAF24", 7, "\uAF2E\uAF2F\uAF31\uAF33\uAF35", 6, "\uAF3E\uAF40\uAF44\uAF45\uAF46\uAF47\uAF4A", 5, "\uAF51", 10, "\uAF5E", 5, "\uAF66", 18, "\uAF7A", 5, "\uAF81\uAF82\uAF83\uAF85\uAF86\uAF87\uAF89", 6, "\uAF92\uAF93\uAF94\uAF96", 5, "\uAF9D", 26, "\uAFBA\uAFBB\uAFBD\uAFBE"], + ["8541", "\uAFBF\uAFC1", 5, "\uAFCA\uAFCC\uAFCF", 4, "\uAFD5", 6, "\uAFDD", 4], + ["8561", "\uAFE2", 5, "\uAFEA", 5, "\uAFF2\uAFF3\uAFF5\uAFF6\uAFF7\uAFF9", 6, "\uB002\uB003"], + ["8581", "\uB005", 6, "\uB00D\uB00E\uB00F\uB011\uB012\uB013\uB015", 6, "\uB01E", 9, "\uB029", 26, "\uB046\uB047\uB049\uB04B\uB04D\uB04F\uB050\uB051\uB052\uB056\uB058\uB05A\uB05B\uB05C\uB05E", 29, "\uB07E\uB07F\uB081\uB082\uB083\uB085", 6, "\uB08E\uB090\uB092", 5, "\uB09B\uB09D\uB09E\uB0A3\uB0A4"], + ["8641", "\uB0A5\uB0A6\uB0A7\uB0AA\uB0B0\uB0B2\uB0B6\uB0B7\uB0B9\uB0BA\uB0BB\uB0BD", 6, "\uB0C6\uB0CA", 5, "\uB0D2"], + ["8661", "\uB0D3\uB0D5\uB0D6\uB0D7\uB0D9", 6, "\uB0E1\uB0E2\uB0E3\uB0E4\uB0E6", 10], + ["8681", "\uB0F1", 22, "\uB10A\uB10D\uB10E\uB10F\uB111\uB114\uB115\uB116\uB117\uB11A\uB11E", 4, "\uB126\uB127\uB129\uB12A\uB12B\uB12D", 6, "\uB136\uB13A", 5, "\uB142\uB143\uB145\uB146\uB147\uB149", 6, "\uB152\uB153\uB156\uB157\uB159\uB15A\uB15B\uB15D\uB15E\uB15F\uB161", 22, "\uB17A\uB17B\uB17D\uB17E\uB17F\uB181\uB183", 4, "\uB18A\uB18C\uB18E\uB18F\uB190\uB191\uB195\uB196\uB197\uB199\uB19A\uB19B\uB19D"], + ["8741", "\uB19E", 9, "\uB1A9", 15], + ["8761", "\uB1B9", 18, "\uB1CD\uB1CE\uB1CF\uB1D1\uB1D2\uB1D3\uB1D5"], + ["8781", "\uB1D6", 5, "\uB1DE\uB1E0", 7, "\uB1EA\uB1EB\uB1ED\uB1EE\uB1EF\uB1F1", 7, "\uB1FA\uB1FC\uB1FE", 5, "\uB206\uB207\uB209\uB20A\uB20D", 6, "\uB216\uB218\uB21A", 5, "\uB221", 18, "\uB235", 6, "\uB23D", 26, "\uB259\uB25A\uB25B\uB25D\uB25E\uB25F\uB261", 6, "\uB26A", 4], + ["8841", "\uB26F", 4, "\uB276", 5, "\uB27D", 6, "\uB286\uB287\uB288\uB28A", 4], + ["8861", "\uB28F\uB292\uB293\uB295\uB296\uB297\uB29B", 4, "\uB2A2\uB2A4\uB2A7\uB2A8\uB2A9\uB2AB\uB2AD\uB2AE\uB2AF\uB2B1\uB2B2\uB2B3\uB2B5\uB2B6\uB2B7"], + ["8881", "\uB2B8", 15, "\uB2CA\uB2CB\uB2CD\uB2CE\uB2CF\uB2D1\uB2D3", 4, "\uB2DA\uB2DC\uB2DE\uB2DF\uB2E0\uB2E1\uB2E3\uB2E7\uB2E9\uB2EA\uB2F0\uB2F1\uB2F2\uB2F6\uB2FC\uB2FD\uB2FE\uB302\uB303\uB305\uB306\uB307\uB309", 6, "\uB312\uB316", 5, "\uB31D", 54, "\uB357\uB359\uB35A\uB35D\uB360\uB361\uB362\uB363"], + ["8941", "\uB366\uB368\uB36A\uB36C\uB36D\uB36F\uB372\uB373\uB375\uB376\uB377\uB379", 6, "\uB382\uB386", 5, "\uB38D"], + ["8961", "\uB38E\uB38F\uB391\uB392\uB393\uB395", 10, "\uB3A2", 5, "\uB3A9\uB3AA\uB3AB\uB3AD"], + ["8981", "\uB3AE", 21, "\uB3C6\uB3C7\uB3C9\uB3CA\uB3CD\uB3CF\uB3D1\uB3D2\uB3D3\uB3D6\uB3D8\uB3DA\uB3DC\uB3DE\uB3DF\uB3E1\uB3E2\uB3E3\uB3E5\uB3E6\uB3E7\uB3E9", 18, "\uB3FD", 18, "\uB411", 6, "\uB419\uB41A\uB41B\uB41D\uB41E\uB41F\uB421", 6, "\uB42A\uB42C", 7, "\uB435", 15], + ["8a41", "\uB445", 10, "\uB452\uB453\uB455\uB456\uB457\uB459", 6, "\uB462\uB464\uB466"], + ["8a61", "\uB467", 4, "\uB46D", 18, "\uB481\uB482"], + ["8a81", "\uB483", 4, "\uB489", 19, "\uB49E", 5, "\uB4A5\uB4A6\uB4A7\uB4A9\uB4AA\uB4AB\uB4AD", 7, "\uB4B6\uB4B8\uB4BA", 5, "\uB4C1\uB4C2\uB4C3\uB4C5\uB4C6\uB4C7\uB4C9", 6, "\uB4D1\uB4D2\uB4D3\uB4D4\uB4D6", 5, "\uB4DE\uB4DF\uB4E1\uB4E2\uB4E5\uB4E7", 4, "\uB4EE\uB4F0\uB4F2", 5, "\uB4F9", 26, "\uB516\uB517\uB519\uB51A\uB51D"], + ["8b41", "\uB51E", 5, "\uB526\uB52B", 4, "\uB532\uB533\uB535\uB536\uB537\uB539", 6, "\uB542\uB546"], + ["8b61", "\uB547\uB548\uB549\uB54A\uB54E\uB54F\uB551\uB552\uB553\uB555", 6, "\uB55E\uB562", 8], + ["8b81", "\uB56B", 52, "\uB5A2\uB5A3\uB5A5\uB5A6\uB5A7\uB5A9\uB5AC\uB5AD\uB5AE\uB5AF\uB5B2\uB5B6", 4, "\uB5BE\uB5BF\uB5C1\uB5C2\uB5C3\uB5C5", 6, "\uB5CE\uB5D2", 5, "\uB5D9", 18, "\uB5ED", 18], + ["8c41", "\uB600", 15, "\uB612\uB613\uB615\uB616\uB617\uB619", 4], + ["8c61", "\uB61E", 6, "\uB626", 5, "\uB62D", 6, "\uB635", 5], + ["8c81", "\uB63B", 12, "\uB649", 26, "\uB665\uB666\uB667\uB669", 50, "\uB69E\uB69F\uB6A1\uB6A2\uB6A3\uB6A5", 5, "\uB6AD\uB6AE\uB6AF\uB6B0\uB6B2", 16], + ["8d41", "\uB6C3", 16, "\uB6D5", 8], + ["8d61", "\uB6DE", 17, "\uB6F1\uB6F2\uB6F3\uB6F5\uB6F6\uB6F7\uB6F9\uB6FA"], + ["8d81", "\uB6FB", 4, "\uB702\uB703\uB704\uB706", 33, "\uB72A\uB72B\uB72D\uB72E\uB731", 6, "\uB73A\uB73C", 7, "\uB745\uB746\uB747\uB749\uB74A\uB74B\uB74D", 6, "\uB756", 9, "\uB761\uB762\uB763\uB765\uB766\uB767\uB769", 6, "\uB772\uB774\uB776", 5, "\uB77E\uB77F\uB781\uB782\uB783\uB785", 6, "\uB78E\uB793\uB794\uB795\uB79A\uB79B\uB79D\uB79E"], + ["8e41", "\uB79F\uB7A1", 6, "\uB7AA\uB7AE", 5, "\uB7B6\uB7B7\uB7B9", 8], + ["8e61", "\uB7C2", 4, "\uB7C8\uB7CA", 19], + ["8e81", "\uB7DE", 13, "\uB7EE\uB7EF\uB7F1\uB7F2\uB7F3\uB7F5", 6, "\uB7FE\uB802", 4, "\uB80A\uB80B\uB80D\uB80E\uB80F\uB811", 6, "\uB81A\uB81C\uB81E", 5, "\uB826\uB827\uB829\uB82A\uB82B\uB82D", 6, "\uB836\uB83A", 5, "\uB841\uB842\uB843\uB845", 11, "\uB852\uB854", 7, "\uB85E\uB85F\uB861\uB862\uB863\uB865", 6, "\uB86E\uB870\uB872", 5, "\uB879\uB87A\uB87B\uB87D", 7], + ["8f41", "\uB885", 7, "\uB88E", 17], + ["8f61", "\uB8A0", 7, "\uB8A9", 6, "\uB8B1\uB8B2\uB8B3\uB8B5\uB8B6\uB8B7\uB8B9", 4], + ["8f81", "\uB8BE\uB8BF\uB8C2\uB8C4\uB8C6", 5, "\uB8CD\uB8CE\uB8CF\uB8D1\uB8D2\uB8D3\uB8D5", 7, "\uB8DE\uB8E0\uB8E2", 5, "\uB8EA\uB8EB\uB8ED\uB8EE\uB8EF\uB8F1", 6, "\uB8FA\uB8FC\uB8FE", 5, "\uB905", 18, "\uB919", 6, "\uB921", 26, "\uB93E\uB93F\uB941\uB942\uB943\uB945", 6, "\uB94D\uB94E\uB950\uB952", 5], + ["9041", "\uB95A\uB95B\uB95D\uB95E\uB95F\uB961", 6, "\uB96A\uB96C\uB96E", 5, "\uB976\uB977\uB979\uB97A\uB97B\uB97D"], + ["9061", "\uB97E", 5, "\uB986\uB988\uB98B\uB98C\uB98F", 15], + ["9081", "\uB99F", 12, "\uB9AE\uB9AF\uB9B1\uB9B2\uB9B3\uB9B5", 6, "\uB9BE\uB9C0\uB9C2", 5, "\uB9CA\uB9CB\uB9CD\uB9D3", 4, "\uB9DA\uB9DC\uB9DF\uB9E0\uB9E2\uB9E6\uB9E7\uB9E9\uB9EA\uB9EB\uB9ED", 6, "\uB9F6\uB9FB", 4, "\uBA02", 5, "\uBA09", 11, "\uBA16", 33, "\uBA3A\uBA3B\uBA3D\uBA3E\uBA3F\uBA41\uBA43\uBA44\uBA45\uBA46"], + ["9141", "\uBA47\uBA4A\uBA4C\uBA4F\uBA50\uBA51\uBA52\uBA56\uBA57\uBA59\uBA5A\uBA5B\uBA5D", 6, "\uBA66\uBA6A", 5], + ["9161", "\uBA72\uBA73\uBA75\uBA76\uBA77\uBA79", 9, "\uBA86\uBA88\uBA89\uBA8A\uBA8B\uBA8D", 5], + ["9181", "\uBA93", 20, "\uBAAA\uBAAD\uBAAE\uBAAF\uBAB1\uBAB3", 4, "\uBABA\uBABC\uBABE", 5, "\uBAC5\uBAC6\uBAC7\uBAC9", 14, "\uBADA", 33, "\uBAFD\uBAFE\uBAFF\uBB01\uBB02\uBB03\uBB05", 7, "\uBB0E\uBB10\uBB12", 5, "\uBB19\uBB1A\uBB1B\uBB1D\uBB1E\uBB1F\uBB21", 6], + ["9241", "\uBB28\uBB2A\uBB2C", 7, "\uBB37\uBB39\uBB3A\uBB3F", 4, "\uBB46\uBB48\uBB4A\uBB4B\uBB4C\uBB4E\uBB51\uBB52"], + ["9261", "\uBB53\uBB55\uBB56\uBB57\uBB59", 7, "\uBB62\uBB64", 7, "\uBB6D", 4], + ["9281", "\uBB72", 21, "\uBB89\uBB8A\uBB8B\uBB8D\uBB8E\uBB8F\uBB91", 18, "\uBBA5\uBBA6\uBBA7\uBBA9\uBBAA\uBBAB\uBBAD", 6, "\uBBB5\uBBB6\uBBB8", 7, "\uBBC1\uBBC2\uBBC3\uBBC5\uBBC6\uBBC7\uBBC9", 6, "\uBBD1\uBBD2\uBBD4", 35, "\uBBFA\uBBFB\uBBFD\uBBFE\uBC01"], + ["9341", "\uBC03", 4, "\uBC0A\uBC0E\uBC10\uBC12\uBC13\uBC19\uBC1A\uBC20\uBC21\uBC22\uBC23\uBC26\uBC28\uBC2A\uBC2B\uBC2C\uBC2E\uBC2F\uBC32\uBC33\uBC35"], + ["9361", "\uBC36\uBC37\uBC39", 6, "\uBC42\uBC46\uBC47\uBC48\uBC4A\uBC4B\uBC4E\uBC4F\uBC51", 8], + ["9381", "\uBC5A\uBC5B\uBC5C\uBC5E", 37, "\uBC86\uBC87\uBC89\uBC8A\uBC8D\uBC8F", 4, "\uBC96\uBC98\uBC9B", 4, "\uBCA2\uBCA3\uBCA5\uBCA6\uBCA9", 6, "\uBCB2\uBCB6", 5, "\uBCBE\uBCBF\uBCC1\uBCC2\uBCC3\uBCC5", 7, "\uBCCE\uBCD2\uBCD3\uBCD4\uBCD6\uBCD7\uBCD9\uBCDA\uBCDB\uBCDD", 22, "\uBCF7\uBCF9\uBCFA\uBCFB\uBCFD"], + ["9441", "\uBCFE", 5, "\uBD06\uBD08\uBD0A", 5, "\uBD11\uBD12\uBD13\uBD15", 8], + ["9461", "\uBD1E", 5, "\uBD25", 6, "\uBD2D", 12], + ["9481", "\uBD3A", 5, "\uBD41", 6, "\uBD4A\uBD4B\uBD4D\uBD4E\uBD4F\uBD51", 6, "\uBD5A", 9, "\uBD65\uBD66\uBD67\uBD69", 22, "\uBD82\uBD83\uBD85\uBD86\uBD8B", 4, "\uBD92\uBD94\uBD96\uBD97\uBD98\uBD9B\uBD9D", 6, "\uBDA5", 10, "\uBDB1", 6, "\uBDB9", 24], + ["9541", "\uBDD2\uBDD3\uBDD6\uBDD7\uBDD9\uBDDA\uBDDB\uBDDD", 11, "\uBDEA", 5, "\uBDF1"], + ["9561", "\uBDF2\uBDF3\uBDF5\uBDF6\uBDF7\uBDF9", 6, "\uBE01\uBE02\uBE04\uBE06", 5, "\uBE0E\uBE0F\uBE11\uBE12\uBE13"], + ["9581", "\uBE15", 6, "\uBE1E\uBE20", 35, "\uBE46\uBE47\uBE49\uBE4A\uBE4B\uBE4D\uBE4F", 4, "\uBE56\uBE58\uBE5C\uBE5D\uBE5E\uBE5F\uBE62\uBE63\uBE65\uBE66\uBE67\uBE69\uBE6B", 4, "\uBE72\uBE76", 4, "\uBE7E\uBE7F\uBE81\uBE82\uBE83\uBE85", 6, "\uBE8E\uBE92", 5, "\uBE9A", 13, "\uBEA9", 14], + ["9641", "\uBEB8", 23, "\uBED2\uBED3"], + ["9661", "\uBED5\uBED6\uBED9", 6, "\uBEE1\uBEE2\uBEE6", 5, "\uBEED", 8], + ["9681", "\uBEF6", 10, "\uBF02", 5, "\uBF0A", 13, "\uBF1A\uBF1E", 33, "\uBF42\uBF43\uBF45\uBF46\uBF47\uBF49", 6, "\uBF52\uBF53\uBF54\uBF56", 44], + ["9741", "\uBF83", 16, "\uBF95", 8], + ["9761", "\uBF9E", 17, "\uBFB1", 7], + ["9781", "\uBFB9", 11, "\uBFC6", 5, "\uBFCE\uBFCF\uBFD1\uBFD2\uBFD3\uBFD5", 6, "\uBFDD\uBFDE\uBFE0\uBFE2", 89, "\uC03D\uC03E\uC03F"], + ["9841", "\uC040", 16, "\uC052", 5, "\uC059\uC05A\uC05B"], + ["9861", "\uC05D\uC05E\uC05F\uC061", 6, "\uC06A", 15], + ["9881", "\uC07A", 21, "\uC092\uC093\uC095\uC096\uC097\uC099", 6, "\uC0A2\uC0A4\uC0A6", 5, "\uC0AE\uC0B1\uC0B2\uC0B7", 4, "\uC0BE\uC0C2\uC0C3\uC0C4\uC0C6\uC0C7\uC0CA\uC0CB\uC0CD\uC0CE\uC0CF\uC0D1", 6, "\uC0DA\uC0DE", 5, "\uC0E6\uC0E7\uC0E9\uC0EA\uC0EB\uC0ED", 6, "\uC0F6\uC0F8\uC0FA", 5, "\uC101\uC102\uC103\uC105\uC106\uC107\uC109", 6, "\uC111\uC112\uC113\uC114\uC116", 5, "\uC121\uC122\uC125\uC128\uC129\uC12A\uC12B\uC12E"], + ["9941", "\uC132\uC133\uC134\uC135\uC137\uC13A\uC13B\uC13D\uC13E\uC13F\uC141", 6, "\uC14A\uC14E", 5, "\uC156\uC157"], + ["9961", "\uC159\uC15A\uC15B\uC15D", 6, "\uC166\uC16A", 5, "\uC171\uC172\uC173\uC175\uC176\uC177\uC179\uC17A\uC17B"], + ["9981", "\uC17C", 8, "\uC186", 5, "\uC18F\uC191\uC192\uC193\uC195\uC197", 4, "\uC19E\uC1A0\uC1A2\uC1A3\uC1A4\uC1A6\uC1A7\uC1AA\uC1AB\uC1AD\uC1AE\uC1AF\uC1B1", 11, "\uC1BE", 5, "\uC1C5\uC1C6\uC1C7\uC1C9\uC1CA\uC1CB\uC1CD", 6, "\uC1D5\uC1D6\uC1D9", 6, "\uC1E1\uC1E2\uC1E3\uC1E5\uC1E6\uC1E7\uC1E9", 6, "\uC1F2\uC1F4", 7, "\uC1FE\uC1FF\uC201\uC202\uC203\uC205", 6, "\uC20E\uC210\uC212", 5, "\uC21A\uC21B\uC21D\uC21E\uC221\uC222\uC223"], + ["9a41", "\uC224\uC225\uC226\uC227\uC22A\uC22C\uC22E\uC230\uC233\uC235", 16], + ["9a61", "\uC246\uC247\uC249", 6, "\uC252\uC253\uC255\uC256\uC257\uC259", 6, "\uC261\uC262\uC263\uC264\uC266"], + ["9a81", "\uC267", 4, "\uC26E\uC26F\uC271\uC272\uC273\uC275", 6, "\uC27E\uC280\uC282", 5, "\uC28A", 5, "\uC291", 6, "\uC299\uC29A\uC29C\uC29E", 5, "\uC2A6\uC2A7\uC2A9\uC2AA\uC2AB\uC2AE", 5, "\uC2B6\uC2B8\uC2BA", 33, "\uC2DE\uC2DF\uC2E1\uC2E2\uC2E5", 5, "\uC2EE\uC2F0\uC2F2\uC2F3\uC2F4\uC2F5\uC2F7\uC2FA\uC2FD\uC2FE\uC2FF\uC301", 6, "\uC30A\uC30B\uC30E\uC30F"], + ["9b41", "\uC310\uC311\uC312\uC316\uC317\uC319\uC31A\uC31B\uC31D", 6, "\uC326\uC327\uC32A", 8], + ["9b61", "\uC333", 17, "\uC346", 7], + ["9b81", "\uC34E", 25, "\uC36A\uC36B\uC36D\uC36E\uC36F\uC371\uC373", 4, "\uC37A\uC37B\uC37E", 5, "\uC385\uC386\uC387\uC389\uC38A\uC38B\uC38D", 50, "\uC3C1", 22, "\uC3DA"], + ["9c41", "\uC3DB\uC3DD\uC3DE\uC3E1\uC3E3", 4, "\uC3EA\uC3EB\uC3EC\uC3EE", 5, "\uC3F6\uC3F7\uC3F9", 5], + ["9c61", "\uC3FF", 8, "\uC409", 6, "\uC411", 9], + ["9c81", "\uC41B", 8, "\uC425", 6, "\uC42D\uC42E\uC42F\uC431\uC432\uC433\uC435", 6, "\uC43E", 9, "\uC449", 26, "\uC466\uC467\uC469\uC46A\uC46B\uC46D", 6, "\uC476\uC477\uC478\uC47A", 5, "\uC481", 18, "\uC495", 6, "\uC49D", 12], + ["9d41", "\uC4AA", 13, "\uC4B9\uC4BA\uC4BB\uC4BD", 8], + ["9d61", "\uC4C6", 25], + ["9d81", "\uC4E0", 8, "\uC4EA", 5, "\uC4F2\uC4F3\uC4F5\uC4F6\uC4F7\uC4F9\uC4FB\uC4FC\uC4FD\uC4FE\uC502", 9, "\uC50D\uC50E\uC50F\uC511\uC512\uC513\uC515", 6, "\uC51D", 10, "\uC52A\uC52B\uC52D\uC52E\uC52F\uC531", 6, "\uC53A\uC53C\uC53E", 5, "\uC546\uC547\uC54B\uC54F\uC550\uC551\uC552\uC556\uC55A\uC55B\uC55C\uC55F\uC562\uC563\uC565\uC566\uC567\uC569", 6, "\uC572\uC576", 5, "\uC57E\uC57F\uC581\uC582\uC583\uC585\uC586\uC588\uC589\uC58A\uC58B\uC58E\uC590\uC592\uC593\uC594"], + ["9e41", "\uC596\uC599\uC59A\uC59B\uC59D\uC59E\uC59F\uC5A1", 7, "\uC5AA", 9, "\uC5B6"], + ["9e61", "\uC5B7\uC5BA\uC5BF", 4, "\uC5CB\uC5CD\uC5CF\uC5D2\uC5D3\uC5D5\uC5D6\uC5D7\uC5D9", 6, "\uC5E2\uC5E4\uC5E6\uC5E7"], + ["9e81", "\uC5E8\uC5E9\uC5EA\uC5EB\uC5EF\uC5F1\uC5F2\uC5F3\uC5F5\uC5F8\uC5F9\uC5FA\uC5FB\uC602\uC603\uC604\uC609\uC60A\uC60B\uC60D\uC60E\uC60F\uC611", 6, "\uC61A\uC61D", 6, "\uC626\uC627\uC629\uC62A\uC62B\uC62F\uC631\uC632\uC636\uC638\uC63A\uC63C\uC63D\uC63E\uC63F\uC642\uC643\uC645\uC646\uC647\uC649", 6, "\uC652\uC656", 5, "\uC65E\uC65F\uC661", 10, "\uC66D\uC66E\uC670\uC672", 5, "\uC67A\uC67B\uC67D\uC67E\uC67F\uC681", 6, "\uC68A\uC68C\uC68E", 5, "\uC696\uC697\uC699\uC69A\uC69B\uC69D", 6, "\uC6A6"], + ["9f41", "\uC6A8\uC6AA", 5, "\uC6B2\uC6B3\uC6B5\uC6B6\uC6B7\uC6BB", 4, "\uC6C2\uC6C4\uC6C6", 5, "\uC6CE"], + ["9f61", "\uC6CF\uC6D1\uC6D2\uC6D3\uC6D5", 6, "\uC6DE\uC6DF\uC6E2", 5, "\uC6EA\uC6EB\uC6ED\uC6EE\uC6EF\uC6F1\uC6F2"], + ["9f81", "\uC6F3", 4, "\uC6FA\uC6FB\uC6FC\uC6FE", 5, "\uC706\uC707\uC709\uC70A\uC70B\uC70D", 6, "\uC716\uC718\uC71A", 5, "\uC722\uC723\uC725\uC726\uC727\uC729", 6, "\uC732\uC734\uC736\uC738\uC739\uC73A\uC73B\uC73E\uC73F\uC741\uC742\uC743\uC745", 4, "\uC74B\uC74E\uC750\uC759\uC75A\uC75B\uC75D\uC75E\uC75F\uC761", 6, "\uC769\uC76A\uC76C", 7, "\uC776\uC777\uC779\uC77A\uC77B\uC77F\uC780\uC781\uC782\uC786\uC78B\uC78C\uC78D\uC78F\uC792\uC793\uC795\uC799\uC79B", 4, "\uC7A2\uC7A7", 4, "\uC7AE\uC7AF\uC7B1\uC7B2\uC7B3\uC7B5\uC7B6\uC7B7"], + ["a041", "\uC7B8\uC7B9\uC7BA\uC7BB\uC7BE\uC7C2", 5, "\uC7CA\uC7CB\uC7CD\uC7CF\uC7D1", 6, "\uC7D9\uC7DA\uC7DB\uC7DC"], + ["a061", "\uC7DE", 5, "\uC7E5\uC7E6\uC7E7\uC7E9\uC7EA\uC7EB\uC7ED", 13], + ["a081", "\uC7FB", 4, "\uC802\uC803\uC805\uC806\uC807\uC809\uC80B", 4, "\uC812\uC814\uC817", 4, "\uC81E\uC81F\uC821\uC822\uC823\uC825", 6, "\uC82E\uC830\uC832", 5, "\uC839\uC83A\uC83B\uC83D\uC83E\uC83F\uC841", 6, "\uC84A\uC84B\uC84E", 5, "\uC855", 26, "\uC872\uC873\uC875\uC876\uC877\uC879\uC87B", 4, "\uC882\uC884\uC888\uC889\uC88A\uC88E", 5, "\uC895", 7, "\uC89E\uC8A0\uC8A2\uC8A3\uC8A4"], + ["a141", "\uC8A5\uC8A6\uC8A7\uC8A9", 18, "\uC8BE\uC8BF\uC8C0\uC8C1"], + ["a161", "\uC8C2\uC8C3\uC8C5\uC8C6\uC8C7\uC8C9\uC8CA\uC8CB\uC8CD", 6, "\uC8D6\uC8D8\uC8DA", 5, "\uC8E2\uC8E3\uC8E5"], + ["a181", "\uC8E6", 14, "\uC8F6", 5, "\uC8FE\uC8FF\uC901\uC902\uC903\uC907", 4, "\uC90E\u3000\u3001\u3002\xB7\u2025\u2026\xA8\u3003\xAD\u2015\u2225\uFF3C\u223C\u2018\u2019\u201C\u201D\u3014\u3015\u3008", 9, "\xB1\xD7\xF7\u2260\u2264\u2265\u221E\u2234\xB0\u2032\u2033\u2103\u212B\uFFE0\uFFE1\uFFE5\u2642\u2640\u2220\u22A5\u2312\u2202\u2207\u2261\u2252\xA7\u203B\u2606\u2605\u25CB\u25CF\u25CE\u25C7\u25C6\u25A1\u25A0\u25B3\u25B2\u25BD\u25BC\u2192\u2190\u2191\u2193\u2194\u3013\u226A\u226B\u221A\u223D\u221D\u2235\u222B\u222C\u2208\u220B\u2286\u2287\u2282\u2283\u222A\u2229\u2227\u2228\uFFE2"], + ["a241", "\uC910\uC912", 5, "\uC919", 18], + ["a261", "\uC92D", 6, "\uC935", 18], + ["a281", "\uC948", 7, "\uC952\uC953\uC955\uC956\uC957\uC959", 6, "\uC962\uC964", 7, "\uC96D\uC96E\uC96F\u21D2\u21D4\u2200\u2203\xB4\uFF5E\u02C7\u02D8\u02DD\u02DA\u02D9\xB8\u02DB\xA1\xBF\u02D0\u222E\u2211\u220F\xA4\u2109\u2030\u25C1\u25C0\u25B7\u25B6\u2664\u2660\u2661\u2665\u2667\u2663\u2299\u25C8\u25A3\u25D0\u25D1\u2592\u25A4\u25A5\u25A8\u25A7\u25A6\u25A9\u2668\u260F\u260E\u261C\u261E\xB6\u2020\u2021\u2195\u2197\u2199\u2196\u2198\u266D\u2669\u266A\u266C\u327F\u321C\u2116\u33C7\u2122\u33C2\u33D8\u2121\u20AC\xAE"], + ["a341", "\uC971\uC972\uC973\uC975", 6, "\uC97D", 10, "\uC98A\uC98B\uC98D\uC98E\uC98F"], + ["a361", "\uC991", 6, "\uC99A\uC99C\uC99E", 16], + ["a381", "\uC9AF", 16, "\uC9C2\uC9C3\uC9C5\uC9C6\uC9C9\uC9CB", 4, "\uC9D2\uC9D4\uC9D7\uC9D8\uC9DB\uFF01", 58, "\uFFE6\uFF3D", 32, "\uFFE3"], + ["a441", "\uC9DE\uC9DF\uC9E1\uC9E3\uC9E5\uC9E6\uC9E8\uC9E9\uC9EA\uC9EB\uC9EE\uC9F2", 5, "\uC9FA\uC9FB\uC9FD\uC9FE\uC9FF\uCA01\uCA02\uCA03\uCA04"], + ["a461", "\uCA05\uCA06\uCA07\uCA0A\uCA0E", 5, "\uCA15\uCA16\uCA17\uCA19", 12], + ["a481", "\uCA26\uCA27\uCA28\uCA2A", 28, "\u3131", 93], + ["a541", "\uCA47", 4, "\uCA4E\uCA4F\uCA51\uCA52\uCA53\uCA55", 6, "\uCA5E\uCA62", 5, "\uCA69\uCA6A"], + ["a561", "\uCA6B", 17, "\uCA7E", 5, "\uCA85\uCA86"], + ["a581", "\uCA87", 16, "\uCA99", 14, "\u2170", 9], + ["a5b0", "\u2160", 9], + ["a5c1", "\u0391", 16, "\u03A3", 6], + ["a5e1", "\u03B1", 16, "\u03C3", 6], + ["a641", "\uCAA8", 19, "\uCABE\uCABF\uCAC1\uCAC2\uCAC3\uCAC5"], + ["a661", "\uCAC6", 5, "\uCACE\uCAD0\uCAD2\uCAD4\uCAD5\uCAD6\uCAD7\uCADA", 5, "\uCAE1", 6], + ["a681", "\uCAE8\uCAE9\uCAEA\uCAEB\uCAED", 6, "\uCAF5", 18, "\uCB09\uCB0A\u2500\u2502\u250C\u2510\u2518\u2514\u251C\u252C\u2524\u2534\u253C\u2501\u2503\u250F\u2513\u251B\u2517\u2523\u2533\u252B\u253B\u254B\u2520\u252F\u2528\u2537\u253F\u251D\u2530\u2525\u2538\u2542\u2512\u2511\u251A\u2519\u2516\u2515\u250E\u250D\u251E\u251F\u2521\u2522\u2526\u2527\u2529\u252A\u252D\u252E\u2531\u2532\u2535\u2536\u2539\u253A\u253D\u253E\u2540\u2541\u2543", 7], + ["a741", "\uCB0B", 4, "\uCB11\uCB12\uCB13\uCB15\uCB16\uCB17\uCB19", 6, "\uCB22", 7], + ["a761", "\uCB2A", 22, "\uCB42\uCB43\uCB44"], + ["a781", "\uCB45\uCB46\uCB47\uCB4A\uCB4B\uCB4D\uCB4E\uCB4F\uCB51", 6, "\uCB5A\uCB5B\uCB5C\uCB5E", 5, "\uCB65", 7, "\u3395\u3396\u3397\u2113\u3398\u33C4\u33A3\u33A4\u33A5\u33A6\u3399", 9, "\u33CA\u338D\u338E\u338F\u33CF\u3388\u3389\u33C8\u33A7\u33A8\u33B0", 9, "\u3380", 4, "\u33BA", 5, "\u3390", 4, "\u2126\u33C0\u33C1\u338A\u338B\u338C\u33D6\u33C5\u33AD\u33AE\u33AF\u33DB\u33A9\u33AA\u33AB\u33AC\u33DD\u33D0\u33D3\u33C3\u33C9\u33DC\u33C6"], + ["a841", "\uCB6D", 10, "\uCB7A", 14], + ["a861", "\uCB89", 18, "\uCB9D", 6], + ["a881", "\uCBA4", 19, "\uCBB9", 11, "\xC6\xD0\xAA\u0126"], + ["a8a6", "\u0132"], + ["a8a8", "\u013F\u0141\xD8\u0152\xBA\xDE\u0166\u014A"], + ["a8b1", "\u3260", 27, "\u24D0", 25, "\u2460", 14, "\xBD\u2153\u2154\xBC\xBE\u215B\u215C\u215D\u215E"], + ["a941", "\uCBC5", 14, "\uCBD5", 10], + ["a961", "\uCBE0\uCBE1\uCBE2\uCBE3\uCBE5\uCBE6\uCBE8\uCBEA", 18], + ["a981", "\uCBFD", 14, "\uCC0E\uCC0F\uCC11\uCC12\uCC13\uCC15", 6, "\uCC1E\uCC1F\uCC20\uCC23\uCC24\xE6\u0111\xF0\u0127\u0131\u0133\u0138\u0140\u0142\xF8\u0153\xDF\xFE\u0167\u014B\u0149\u3200", 27, "\u249C", 25, "\u2474", 14, "\xB9\xB2\xB3\u2074\u207F\u2081\u2082\u2083\u2084"], + ["aa41", "\uCC25\uCC26\uCC2A\uCC2B\uCC2D\uCC2F\uCC31", 6, "\uCC3A\uCC3F", 4, "\uCC46\uCC47\uCC49\uCC4A\uCC4B\uCC4D\uCC4E"], + ["aa61", "\uCC4F", 4, "\uCC56\uCC5A", 5, "\uCC61\uCC62\uCC63\uCC65\uCC67\uCC69", 6, "\uCC71\uCC72"], + ["aa81", "\uCC73\uCC74\uCC76", 29, "\u3041", 82], + ["ab41", "\uCC94\uCC95\uCC96\uCC97\uCC9A\uCC9B\uCC9D\uCC9E\uCC9F\uCCA1", 6, "\uCCAA\uCCAE", 5, "\uCCB6\uCCB7\uCCB9"], + ["ab61", "\uCCBA\uCCBB\uCCBD", 6, "\uCCC6\uCCC8\uCCCA", 5, "\uCCD1\uCCD2\uCCD3\uCCD5", 5], + ["ab81", "\uCCDB", 8, "\uCCE5", 6, "\uCCED\uCCEE\uCCEF\uCCF1", 12, "\u30A1", 85], + ["ac41", "\uCCFE\uCCFF\uCD00\uCD02", 5, "\uCD0A\uCD0B\uCD0D\uCD0E\uCD0F\uCD11", 6, "\uCD1A\uCD1C\uCD1E\uCD1F\uCD20"], + ["ac61", "\uCD21\uCD22\uCD23\uCD25\uCD26\uCD27\uCD29\uCD2A\uCD2B\uCD2D", 11, "\uCD3A", 4], + ["ac81", "\uCD3F", 28, "\uCD5D\uCD5E\uCD5F\u0410", 5, "\u0401\u0416", 25], + ["acd1", "\u0430", 5, "\u0451\u0436", 25], + ["ad41", "\uCD61\uCD62\uCD63\uCD65", 6, "\uCD6E\uCD70\uCD72", 5, "\uCD79", 7], + ["ad61", "\uCD81", 6, "\uCD89", 10, "\uCD96\uCD97\uCD99\uCD9A\uCD9B\uCD9D\uCD9E\uCD9F"], + ["ad81", "\uCDA0\uCDA1\uCDA2\uCDA3\uCDA6\uCDA8\uCDAA", 5, "\uCDB1", 18, "\uCDC5"], + ["ae41", "\uCDC6", 5, "\uCDCD\uCDCE\uCDCF\uCDD1", 16], + ["ae61", "\uCDE2", 5, "\uCDE9\uCDEA\uCDEB\uCDED\uCDEE\uCDEF\uCDF1", 6, "\uCDFA\uCDFC\uCDFE", 4], + ["ae81", "\uCE03\uCE05\uCE06\uCE07\uCE09\uCE0A\uCE0B\uCE0D", 6, "\uCE15\uCE16\uCE17\uCE18\uCE1A", 5, "\uCE22\uCE23\uCE25\uCE26\uCE27\uCE29\uCE2A\uCE2B"], + ["af41", "\uCE2C\uCE2D\uCE2E\uCE2F\uCE32\uCE34\uCE36", 19], + ["af61", "\uCE4A", 13, "\uCE5A\uCE5B\uCE5D\uCE5E\uCE62", 5, "\uCE6A\uCE6C"], + ["af81", "\uCE6E", 5, "\uCE76\uCE77\uCE79\uCE7A\uCE7B\uCE7D", 6, "\uCE86\uCE88\uCE8A", 5, "\uCE92\uCE93\uCE95\uCE96\uCE97\uCE99"], + ["b041", "\uCE9A", 5, "\uCEA2\uCEA6", 5, "\uCEAE", 12], + ["b061", "\uCEBB", 5, "\uCEC2", 19], + ["b081", "\uCED6", 13, "\uCEE6\uCEE7\uCEE9\uCEEA\uCEED", 6, "\uCEF6\uCEFA", 5, "\uAC00\uAC01\uAC04\uAC07\uAC08\uAC09\uAC0A\uAC10", 7, "\uAC19", 4, "\uAC20\uAC24\uAC2C\uAC2D\uAC2F\uAC30\uAC31\uAC38\uAC39\uAC3C\uAC40\uAC4B\uAC4D\uAC54\uAC58\uAC5C\uAC70\uAC71\uAC74\uAC77\uAC78\uAC7A\uAC80\uAC81\uAC83\uAC84\uAC85\uAC86\uAC89\uAC8A\uAC8B\uAC8C\uAC90\uAC94\uAC9C\uAC9D\uAC9F\uACA0\uACA1\uACA8\uACA9\uACAA\uACAC\uACAF\uACB0\uACB8\uACB9\uACBB\uACBC\uACBD\uACC1\uACC4\uACC8\uACCC\uACD5\uACD7\uACE0\uACE1\uACE4\uACE7\uACE8\uACEA\uACEC\uACEF\uACF0\uACF1\uACF3\uACF5\uACF6\uACFC\uACFD\uAD00\uAD04\uAD06"], + ["b141", "\uCF02\uCF03\uCF05\uCF06\uCF07\uCF09", 6, "\uCF12\uCF14\uCF16", 5, "\uCF1D\uCF1E\uCF1F\uCF21\uCF22\uCF23"], + ["b161", "\uCF25", 6, "\uCF2E\uCF32", 5, "\uCF39", 11], + ["b181", "\uCF45", 14, "\uCF56\uCF57\uCF59\uCF5A\uCF5B\uCF5D", 6, "\uCF66\uCF68\uCF6A\uCF6B\uCF6C\uAD0C\uAD0D\uAD0F\uAD11\uAD18\uAD1C\uAD20\uAD29\uAD2C\uAD2D\uAD34\uAD35\uAD38\uAD3C\uAD44\uAD45\uAD47\uAD49\uAD50\uAD54\uAD58\uAD61\uAD63\uAD6C\uAD6D\uAD70\uAD73\uAD74\uAD75\uAD76\uAD7B\uAD7C\uAD7D\uAD7F\uAD81\uAD82\uAD88\uAD89\uAD8C\uAD90\uAD9C\uAD9D\uADA4\uADB7\uADC0\uADC1\uADC4\uADC8\uADD0\uADD1\uADD3\uADDC\uADE0\uADE4\uADF8\uADF9\uADFC\uADFF\uAE00\uAE01\uAE08\uAE09\uAE0B\uAE0D\uAE14\uAE30\uAE31\uAE34\uAE37\uAE38\uAE3A\uAE40\uAE41\uAE43\uAE45\uAE46\uAE4A\uAE4C\uAE4D\uAE4E\uAE50\uAE54\uAE56\uAE5C\uAE5D\uAE5F\uAE60\uAE61\uAE65\uAE68\uAE69\uAE6C\uAE70\uAE78"], + ["b241", "\uCF6D\uCF6E\uCF6F\uCF72\uCF73\uCF75\uCF76\uCF77\uCF79", 6, "\uCF81\uCF82\uCF83\uCF84\uCF86", 5, "\uCF8D"], + ["b261", "\uCF8E", 18, "\uCFA2", 5, "\uCFA9"], + ["b281", "\uCFAA", 5, "\uCFB1", 18, "\uCFC5", 6, "\uAE79\uAE7B\uAE7C\uAE7D\uAE84\uAE85\uAE8C\uAEBC\uAEBD\uAEBE\uAEC0\uAEC4\uAECC\uAECD\uAECF\uAED0\uAED1\uAED8\uAED9\uAEDC\uAEE8\uAEEB\uAEED\uAEF4\uAEF8\uAEFC\uAF07\uAF08\uAF0D\uAF10\uAF2C\uAF2D\uAF30\uAF32\uAF34\uAF3C\uAF3D\uAF3F\uAF41\uAF42\uAF43\uAF48\uAF49\uAF50\uAF5C\uAF5D\uAF64\uAF65\uAF79\uAF80\uAF84\uAF88\uAF90\uAF91\uAF95\uAF9C\uAFB8\uAFB9\uAFBC\uAFC0\uAFC7\uAFC8\uAFC9\uAFCB\uAFCD\uAFCE\uAFD4\uAFDC\uAFE8\uAFE9\uAFF0\uAFF1\uAFF4\uAFF8\uB000\uB001\uB004\uB00C\uB010\uB014\uB01C\uB01D\uB028\uB044\uB045\uB048\uB04A\uB04C\uB04E\uB053\uB054\uB055\uB057\uB059"], + ["b341", "\uCFCC", 19, "\uCFE2\uCFE3\uCFE5\uCFE6\uCFE7\uCFE9"], + ["b361", "\uCFEA", 5, "\uCFF2\uCFF4\uCFF6", 5, "\uCFFD\uCFFE\uCFFF\uD001\uD002\uD003\uD005", 5], + ["b381", "\uD00B", 5, "\uD012", 5, "\uD019", 19, "\uB05D\uB07C\uB07D\uB080\uB084\uB08C\uB08D\uB08F\uB091\uB098\uB099\uB09A\uB09C\uB09F\uB0A0\uB0A1\uB0A2\uB0A8\uB0A9\uB0AB", 4, "\uB0B1\uB0B3\uB0B4\uB0B5\uB0B8\uB0BC\uB0C4\uB0C5\uB0C7\uB0C8\uB0C9\uB0D0\uB0D1\uB0D4\uB0D8\uB0E0\uB0E5\uB108\uB109\uB10B\uB10C\uB110\uB112\uB113\uB118\uB119\uB11B\uB11C\uB11D\uB123\uB124\uB125\uB128\uB12C\uB134\uB135\uB137\uB138\uB139\uB140\uB141\uB144\uB148\uB150\uB151\uB154\uB155\uB158\uB15C\uB160\uB178\uB179\uB17C\uB180\uB182\uB188\uB189\uB18B\uB18D\uB192\uB193\uB194\uB198\uB19C\uB1A8\uB1CC\uB1D0\uB1D4\uB1DC\uB1DD"], + ["b441", "\uD02E", 5, "\uD036\uD037\uD039\uD03A\uD03B\uD03D", 6, "\uD046\uD048\uD04A", 5], + ["b461", "\uD051\uD052\uD053\uD055\uD056\uD057\uD059", 6, "\uD061", 10, "\uD06E\uD06F"], + ["b481", "\uD071\uD072\uD073\uD075", 6, "\uD07E\uD07F\uD080\uD082", 18, "\uB1DF\uB1E8\uB1E9\uB1EC\uB1F0\uB1F9\uB1FB\uB1FD\uB204\uB205\uB208\uB20B\uB20C\uB214\uB215\uB217\uB219\uB220\uB234\uB23C\uB258\uB25C\uB260\uB268\uB269\uB274\uB275\uB27C\uB284\uB285\uB289\uB290\uB291\uB294\uB298\uB299\uB29A\uB2A0\uB2A1\uB2A3\uB2A5\uB2A6\uB2AA\uB2AC\uB2B0\uB2B4\uB2C8\uB2C9\uB2CC\uB2D0\uB2D2\uB2D8\uB2D9\uB2DB\uB2DD\uB2E2\uB2E4\uB2E5\uB2E6\uB2E8\uB2EB", 4, "\uB2F3\uB2F4\uB2F5\uB2F7", 4, "\uB2FF\uB300\uB301\uB304\uB308\uB310\uB311\uB313\uB314\uB315\uB31C\uB354\uB355\uB356\uB358\uB35B\uB35C\uB35E\uB35F\uB364\uB365"], + ["b541", "\uD095", 14, "\uD0A6\uD0A7\uD0A9\uD0AA\uD0AB\uD0AD", 5], + ["b561", "\uD0B3\uD0B6\uD0B8\uD0BA", 5, "\uD0C2\uD0C3\uD0C5\uD0C6\uD0C7\uD0CA", 5, "\uD0D2\uD0D6", 4], + ["b581", "\uD0DB\uD0DE\uD0DF\uD0E1\uD0E2\uD0E3\uD0E5", 6, "\uD0EE\uD0F2", 5, "\uD0F9", 11, "\uB367\uB369\uB36B\uB36E\uB370\uB371\uB374\uB378\uB380\uB381\uB383\uB384\uB385\uB38C\uB390\uB394\uB3A0\uB3A1\uB3A8\uB3AC\uB3C4\uB3C5\uB3C8\uB3CB\uB3CC\uB3CE\uB3D0\uB3D4\uB3D5\uB3D7\uB3D9\uB3DB\uB3DD\uB3E0\uB3E4\uB3E8\uB3FC\uB410\uB418\uB41C\uB420\uB428\uB429\uB42B\uB434\uB450\uB451\uB454\uB458\uB460\uB461\uB463\uB465\uB46C\uB480\uB488\uB49D\uB4A4\uB4A8\uB4AC\uB4B5\uB4B7\uB4B9\uB4C0\uB4C4\uB4C8\uB4D0\uB4D5\uB4DC\uB4DD\uB4E0\uB4E3\uB4E4\uB4E6\uB4EC\uB4ED\uB4EF\uB4F1\uB4F8\uB514\uB515\uB518\uB51B\uB51C\uB524\uB525\uB527\uB528\uB529\uB52A\uB530\uB531\uB534\uB538"], + ["b641", "\uD105", 7, "\uD10E", 17], + ["b661", "\uD120", 15, "\uD132\uD133\uD135\uD136\uD137\uD139\uD13B\uD13C\uD13D\uD13E"], + ["b681", "\uD13F\uD142\uD146", 5, "\uD14E\uD14F\uD151\uD152\uD153\uD155", 6, "\uD15E\uD160\uD162", 5, "\uD169\uD16A\uD16B\uD16D\uB540\uB541\uB543\uB544\uB545\uB54B\uB54C\uB54D\uB550\uB554\uB55C\uB55D\uB55F\uB560\uB561\uB5A0\uB5A1\uB5A4\uB5A8\uB5AA\uB5AB\uB5B0\uB5B1\uB5B3\uB5B4\uB5B5\uB5BB\uB5BC\uB5BD\uB5C0\uB5C4\uB5CC\uB5CD\uB5CF\uB5D0\uB5D1\uB5D8\uB5EC\uB610\uB611\uB614\uB618\uB625\uB62C\uB634\uB648\uB664\uB668\uB69C\uB69D\uB6A0\uB6A4\uB6AB\uB6AC\uB6B1\uB6D4\uB6F0\uB6F4\uB6F8\uB700\uB701\uB705\uB728\uB729\uB72C\uB72F\uB730\uB738\uB739\uB73B\uB744\uB748\uB74C\uB754\uB755\uB760\uB764\uB768\uB770\uB771\uB773\uB775\uB77C\uB77D\uB780\uB784\uB78C\uB78D\uB78F\uB790\uB791\uB792\uB796\uB797"], + ["b741", "\uD16E", 13, "\uD17D", 6, "\uD185\uD186\uD187\uD189\uD18A"], + ["b761", "\uD18B", 20, "\uD1A2\uD1A3\uD1A5\uD1A6\uD1A7"], + ["b781", "\uD1A9", 6, "\uD1B2\uD1B4\uD1B6\uD1B7\uD1B8\uD1B9\uD1BB\uD1BD\uD1BE\uD1BF\uD1C1", 14, "\uB798\uB799\uB79C\uB7A0\uB7A8\uB7A9\uB7AB\uB7AC\uB7AD\uB7B4\uB7B5\uB7B8\uB7C7\uB7C9\uB7EC\uB7ED\uB7F0\uB7F4\uB7FC\uB7FD\uB7FF\uB800\uB801\uB807\uB808\uB809\uB80C\uB810\uB818\uB819\uB81B\uB81D\uB824\uB825\uB828\uB82C\uB834\uB835\uB837\uB838\uB839\uB840\uB844\uB851\uB853\uB85C\uB85D\uB860\uB864\uB86C\uB86D\uB86F\uB871\uB878\uB87C\uB88D\uB8A8\uB8B0\uB8B4\uB8B8\uB8C0\uB8C1\uB8C3\uB8C5\uB8CC\uB8D0\uB8D4\uB8DD\uB8DF\uB8E1\uB8E8\uB8E9\uB8EC\uB8F0\uB8F8\uB8F9\uB8FB\uB8FD\uB904\uB918\uB920\uB93C\uB93D\uB940\uB944\uB94C\uB94F\uB951\uB958\uB959\uB95C\uB960\uB968\uB969"], + ["b841", "\uD1D0", 7, "\uD1D9", 17], + ["b861", "\uD1EB", 8, "\uD1F5\uD1F6\uD1F7\uD1F9", 13], + ["b881", "\uD208\uD20A", 5, "\uD211", 24, "\uB96B\uB96D\uB974\uB975\uB978\uB97C\uB984\uB985\uB987\uB989\uB98A\uB98D\uB98E\uB9AC\uB9AD\uB9B0\uB9B4\uB9BC\uB9BD\uB9BF\uB9C1\uB9C8\uB9C9\uB9CC\uB9CE", 4, "\uB9D8\uB9D9\uB9DB\uB9DD\uB9DE\uB9E1\uB9E3\uB9E4\uB9E5\uB9E8\uB9EC\uB9F4\uB9F5\uB9F7\uB9F8\uB9F9\uB9FA\uBA00\uBA01\uBA08\uBA15\uBA38\uBA39\uBA3C\uBA40\uBA42\uBA48\uBA49\uBA4B\uBA4D\uBA4E\uBA53\uBA54\uBA55\uBA58\uBA5C\uBA64\uBA65\uBA67\uBA68\uBA69\uBA70\uBA71\uBA74\uBA78\uBA83\uBA84\uBA85\uBA87\uBA8C\uBAA8\uBAA9\uBAAB\uBAAC\uBAB0\uBAB2\uBAB8\uBAB9\uBABB\uBABD\uBAC4\uBAC8\uBAD8\uBAD9\uBAFC"], + ["b941", "\uD22A\uD22B\uD22E\uD22F\uD231\uD232\uD233\uD235", 6, "\uD23E\uD240\uD242", 5, "\uD249\uD24A\uD24B\uD24C"], + ["b961", "\uD24D", 14, "\uD25D", 6, "\uD265\uD266\uD267\uD268"], + ["b981", "\uD269", 22, "\uD282\uD283\uD285\uD286\uD287\uD289\uD28A\uD28B\uD28C\uBB00\uBB04\uBB0D\uBB0F\uBB11\uBB18\uBB1C\uBB20\uBB29\uBB2B\uBB34\uBB35\uBB36\uBB38\uBB3B\uBB3C\uBB3D\uBB3E\uBB44\uBB45\uBB47\uBB49\uBB4D\uBB4F\uBB50\uBB54\uBB58\uBB61\uBB63\uBB6C\uBB88\uBB8C\uBB90\uBBA4\uBBA8\uBBAC\uBBB4\uBBB7\uBBC0\uBBC4\uBBC8\uBBD0\uBBD3\uBBF8\uBBF9\uBBFC\uBBFF\uBC00\uBC02\uBC08\uBC09\uBC0B\uBC0C\uBC0D\uBC0F\uBC11\uBC14", 4, "\uBC1B", 4, "\uBC24\uBC25\uBC27\uBC29\uBC2D\uBC30\uBC31\uBC34\uBC38\uBC40\uBC41\uBC43\uBC44\uBC45\uBC49\uBC4C\uBC4D\uBC50\uBC5D\uBC84\uBC85\uBC88\uBC8B\uBC8C\uBC8E\uBC94\uBC95\uBC97"], + ["ba41", "\uD28D\uD28E\uD28F\uD292\uD293\uD294\uD296", 5, "\uD29D\uD29E\uD29F\uD2A1\uD2A2\uD2A3\uD2A5", 6, "\uD2AD"], + ["ba61", "\uD2AE\uD2AF\uD2B0\uD2B2", 5, "\uD2BA\uD2BB\uD2BD\uD2BE\uD2C1\uD2C3", 4, "\uD2CA\uD2CC", 5], + ["ba81", "\uD2D2\uD2D3\uD2D5\uD2D6\uD2D7\uD2D9\uD2DA\uD2DB\uD2DD", 6, "\uD2E6", 9, "\uD2F2\uD2F3\uD2F5\uD2F6\uD2F7\uD2F9\uD2FA\uBC99\uBC9A\uBCA0\uBCA1\uBCA4\uBCA7\uBCA8\uBCB0\uBCB1\uBCB3\uBCB4\uBCB5\uBCBC\uBCBD\uBCC0\uBCC4\uBCCD\uBCCF\uBCD0\uBCD1\uBCD5\uBCD8\uBCDC\uBCF4\uBCF5\uBCF6\uBCF8\uBCFC\uBD04\uBD05\uBD07\uBD09\uBD10\uBD14\uBD24\uBD2C\uBD40\uBD48\uBD49\uBD4C\uBD50\uBD58\uBD59\uBD64\uBD68\uBD80\uBD81\uBD84\uBD87\uBD88\uBD89\uBD8A\uBD90\uBD91\uBD93\uBD95\uBD99\uBD9A\uBD9C\uBDA4\uBDB0\uBDB8\uBDD4\uBDD5\uBDD8\uBDDC\uBDE9\uBDF0\uBDF4\uBDF8\uBE00\uBE03\uBE05\uBE0C\uBE0D\uBE10\uBE14\uBE1C\uBE1D\uBE1F\uBE44\uBE45\uBE48\uBE4C\uBE4E\uBE54\uBE55\uBE57\uBE59\uBE5A\uBE5B\uBE60\uBE61\uBE64"], + ["bb41", "\uD2FB", 4, "\uD302\uD304\uD306", 5, "\uD30F\uD311\uD312\uD313\uD315\uD317", 4, "\uD31E\uD322\uD323"], + ["bb61", "\uD324\uD326\uD327\uD32A\uD32B\uD32D\uD32E\uD32F\uD331", 6, "\uD33A\uD33E", 5, "\uD346\uD347\uD348\uD349"], + ["bb81", "\uD34A", 31, "\uBE68\uBE6A\uBE70\uBE71\uBE73\uBE74\uBE75\uBE7B\uBE7C\uBE7D\uBE80\uBE84\uBE8C\uBE8D\uBE8F\uBE90\uBE91\uBE98\uBE99\uBEA8\uBED0\uBED1\uBED4\uBED7\uBED8\uBEE0\uBEE3\uBEE4\uBEE5\uBEEC\uBF01\uBF08\uBF09\uBF18\uBF19\uBF1B\uBF1C\uBF1D\uBF40\uBF41\uBF44\uBF48\uBF50\uBF51\uBF55\uBF94\uBFB0\uBFC5\uBFCC\uBFCD\uBFD0\uBFD4\uBFDC\uBFDF\uBFE1\uC03C\uC051\uC058\uC05C\uC060\uC068\uC069\uC090\uC091\uC094\uC098\uC0A0\uC0A1\uC0A3\uC0A5\uC0AC\uC0AD\uC0AF\uC0B0\uC0B3\uC0B4\uC0B5\uC0B6\uC0BC\uC0BD\uC0BF\uC0C0\uC0C1\uC0C5\uC0C8\uC0C9\uC0CC\uC0D0\uC0D8\uC0D9\uC0DB\uC0DC\uC0DD\uC0E4"], + ["bc41", "\uD36A", 17, "\uD37E\uD37F\uD381\uD382\uD383\uD385\uD386\uD387"], + ["bc61", "\uD388\uD389\uD38A\uD38B\uD38E\uD392", 5, "\uD39A\uD39B\uD39D\uD39E\uD39F\uD3A1", 6, "\uD3AA\uD3AC\uD3AE"], + ["bc81", "\uD3AF", 4, "\uD3B5\uD3B6\uD3B7\uD3B9\uD3BA\uD3BB\uD3BD", 6, "\uD3C6\uD3C7\uD3CA", 5, "\uD3D1", 5, "\uC0E5\uC0E8\uC0EC\uC0F4\uC0F5\uC0F7\uC0F9\uC100\uC104\uC108\uC110\uC115\uC11C", 4, "\uC123\uC124\uC126\uC127\uC12C\uC12D\uC12F\uC130\uC131\uC136\uC138\uC139\uC13C\uC140\uC148\uC149\uC14B\uC14C\uC14D\uC154\uC155\uC158\uC15C\uC164\uC165\uC167\uC168\uC169\uC170\uC174\uC178\uC185\uC18C\uC18D\uC18E\uC190\uC194\uC196\uC19C\uC19D\uC19F\uC1A1\uC1A5\uC1A8\uC1A9\uC1AC\uC1B0\uC1BD\uC1C4\uC1C8\uC1CC\uC1D4\uC1D7\uC1D8\uC1E0\uC1E4\uC1E8\uC1F0\uC1F1\uC1F3\uC1FC\uC1FD\uC200\uC204\uC20C\uC20D\uC20F\uC211\uC218\uC219\uC21C\uC21F\uC220\uC228\uC229\uC22B\uC22D"], + ["bd41", "\uD3D7\uD3D9", 7, "\uD3E2\uD3E4", 7, "\uD3EE\uD3EF\uD3F1\uD3F2\uD3F3\uD3F5\uD3F6\uD3F7"], + ["bd61", "\uD3F8\uD3F9\uD3FA\uD3FB\uD3FE\uD400\uD402", 5, "\uD409", 13], + ["bd81", "\uD417", 5, "\uD41E", 25, "\uC22F\uC231\uC232\uC234\uC248\uC250\uC251\uC254\uC258\uC260\uC265\uC26C\uC26D\uC270\uC274\uC27C\uC27D\uC27F\uC281\uC288\uC289\uC290\uC298\uC29B\uC29D\uC2A4\uC2A5\uC2A8\uC2AC\uC2AD\uC2B4\uC2B5\uC2B7\uC2B9\uC2DC\uC2DD\uC2E0\uC2E3\uC2E4\uC2EB\uC2EC\uC2ED\uC2EF\uC2F1\uC2F6\uC2F8\uC2F9\uC2FB\uC2FC\uC300\uC308\uC309\uC30C\uC30D\uC313\uC314\uC315\uC318\uC31C\uC324\uC325\uC328\uC329\uC345\uC368\uC369\uC36C\uC370\uC372\uC378\uC379\uC37C\uC37D\uC384\uC388\uC38C\uC3C0\uC3D8\uC3D9\uC3DC\uC3DF\uC3E0\uC3E2\uC3E8\uC3E9\uC3ED\uC3F4\uC3F5\uC3F8\uC408\uC410\uC424\uC42C\uC430"], + ["be41", "\uD438", 7, "\uD441\uD442\uD443\uD445", 14], + ["be61", "\uD454", 7, "\uD45D\uD45E\uD45F\uD461\uD462\uD463\uD465", 7, "\uD46E\uD470\uD471\uD472"], + ["be81", "\uD473", 4, "\uD47A\uD47B\uD47D\uD47E\uD481\uD483", 4, "\uD48A\uD48C\uD48E", 5, "\uD495", 8, "\uC434\uC43C\uC43D\uC448\uC464\uC465\uC468\uC46C\uC474\uC475\uC479\uC480\uC494\uC49C\uC4B8\uC4BC\uC4E9\uC4F0\uC4F1\uC4F4\uC4F8\uC4FA\uC4FF\uC500\uC501\uC50C\uC510\uC514\uC51C\uC528\uC529\uC52C\uC530\uC538\uC539\uC53B\uC53D\uC544\uC545\uC548\uC549\uC54A\uC54C\uC54D\uC54E\uC553\uC554\uC555\uC557\uC558\uC559\uC55D\uC55E\uC560\uC561\uC564\uC568\uC570\uC571\uC573\uC574\uC575\uC57C\uC57D\uC580\uC584\uC587\uC58C\uC58D\uC58F\uC591\uC595\uC597\uC598\uC59C\uC5A0\uC5A9\uC5B4\uC5B5\uC5B8\uC5B9\uC5BB\uC5BC\uC5BD\uC5BE\uC5C4", 6, "\uC5CC\uC5CE"], + ["bf41", "\uD49E", 10, "\uD4AA", 14], + ["bf61", "\uD4B9", 18, "\uD4CD\uD4CE\uD4CF\uD4D1\uD4D2\uD4D3\uD4D5"], + ["bf81", "\uD4D6", 5, "\uD4DD\uD4DE\uD4E0", 7, "\uD4E9\uD4EA\uD4EB\uD4ED\uD4EE\uD4EF\uD4F1", 6, "\uD4F9\uD4FA\uD4FC\uC5D0\uC5D1\uC5D4\uC5D8\uC5E0\uC5E1\uC5E3\uC5E5\uC5EC\uC5ED\uC5EE\uC5F0\uC5F4\uC5F6\uC5F7\uC5FC", 5, "\uC605\uC606\uC607\uC608\uC60C\uC610\uC618\uC619\uC61B\uC61C\uC624\uC625\uC628\uC62C\uC62D\uC62E\uC630\uC633\uC634\uC635\uC637\uC639\uC63B\uC640\uC641\uC644\uC648\uC650\uC651\uC653\uC654\uC655\uC65C\uC65D\uC660\uC66C\uC66F\uC671\uC678\uC679\uC67C\uC680\uC688\uC689\uC68B\uC68D\uC694\uC695\uC698\uC69C\uC6A4\uC6A5\uC6A7\uC6A9\uC6B0\uC6B1\uC6B4\uC6B8\uC6B9\uC6BA\uC6C0\uC6C1\uC6C3\uC6C5\uC6CC\uC6CD\uC6D0\uC6D4\uC6DC\uC6DD\uC6E0\uC6E1\uC6E8"], + ["c041", "\uD4FE", 5, "\uD505\uD506\uD507\uD509\uD50A\uD50B\uD50D", 6, "\uD516\uD518", 5], + ["c061", "\uD51E", 25], + ["c081", "\uD538\uD539\uD53A\uD53B\uD53E\uD53F\uD541\uD542\uD543\uD545", 6, "\uD54E\uD550\uD552", 5, "\uD55A\uD55B\uD55D\uD55E\uD55F\uD561\uD562\uD563\uC6E9\uC6EC\uC6F0\uC6F8\uC6F9\uC6FD\uC704\uC705\uC708\uC70C\uC714\uC715\uC717\uC719\uC720\uC721\uC724\uC728\uC730\uC731\uC733\uC735\uC737\uC73C\uC73D\uC740\uC744\uC74A\uC74C\uC74D\uC74F\uC751", 7, "\uC75C\uC760\uC768\uC76B\uC774\uC775\uC778\uC77C\uC77D\uC77E\uC783\uC784\uC785\uC787\uC788\uC789\uC78A\uC78E\uC790\uC791\uC794\uC796\uC797\uC798\uC79A\uC7A0\uC7A1\uC7A3\uC7A4\uC7A5\uC7A6\uC7AC\uC7AD\uC7B0\uC7B4\uC7BC\uC7BD\uC7BF\uC7C0\uC7C1\uC7C8\uC7C9\uC7CC\uC7CE\uC7D0\uC7D8\uC7DD\uC7E4\uC7E8\uC7EC\uC800\uC801\uC804\uC808\uC80A"], + ["c141", "\uD564\uD566\uD567\uD56A\uD56C\uD56E", 5, "\uD576\uD577\uD579\uD57A\uD57B\uD57D", 6, "\uD586\uD58A\uD58B"], + ["c161", "\uD58C\uD58D\uD58E\uD58F\uD591", 19, "\uD5A6\uD5A7"], + ["c181", "\uD5A8", 31, "\uC810\uC811\uC813\uC815\uC816\uC81C\uC81D\uC820\uC824\uC82C\uC82D\uC82F\uC831\uC838\uC83C\uC840\uC848\uC849\uC84C\uC84D\uC854\uC870\uC871\uC874\uC878\uC87A\uC880\uC881\uC883\uC885\uC886\uC887\uC88B\uC88C\uC88D\uC894\uC89D\uC89F\uC8A1\uC8A8\uC8BC\uC8BD\uC8C4\uC8C8\uC8CC\uC8D4\uC8D5\uC8D7\uC8D9\uC8E0\uC8E1\uC8E4\uC8F5\uC8FC\uC8FD\uC900\uC904\uC905\uC906\uC90C\uC90D\uC90F\uC911\uC918\uC92C\uC934\uC950\uC951\uC954\uC958\uC960\uC961\uC963\uC96C\uC970\uC974\uC97C\uC988\uC989\uC98C\uC990\uC998\uC999\uC99B\uC99D\uC9C0\uC9C1\uC9C4\uC9C7\uC9C8\uC9CA\uC9D0\uC9D1\uC9D3"], + ["c241", "\uD5CA\uD5CB\uD5CD\uD5CE\uD5CF\uD5D1\uD5D3", 4, "\uD5DA\uD5DC\uD5DE", 5, "\uD5E6\uD5E7\uD5E9\uD5EA\uD5EB\uD5ED\uD5EE"], + ["c261", "\uD5EF", 4, "\uD5F6\uD5F8\uD5FA", 5, "\uD602\uD603\uD605\uD606\uD607\uD609", 6, "\uD612"], + ["c281", "\uD616", 5, "\uD61D\uD61E\uD61F\uD621\uD622\uD623\uD625", 7, "\uD62E", 9, "\uD63A\uD63B\uC9D5\uC9D6\uC9D9\uC9DA\uC9DC\uC9DD\uC9E0\uC9E2\uC9E4\uC9E7\uC9EC\uC9ED\uC9EF\uC9F0\uC9F1\uC9F8\uC9F9\uC9FC\uCA00\uCA08\uCA09\uCA0B\uCA0C\uCA0D\uCA14\uCA18\uCA29\uCA4C\uCA4D\uCA50\uCA54\uCA5C\uCA5D\uCA5F\uCA60\uCA61\uCA68\uCA7D\uCA84\uCA98\uCABC\uCABD\uCAC0\uCAC4\uCACC\uCACD\uCACF\uCAD1\uCAD3\uCAD8\uCAD9\uCAE0\uCAEC\uCAF4\uCB08\uCB10\uCB14\uCB18\uCB20\uCB21\uCB41\uCB48\uCB49\uCB4C\uCB50\uCB58\uCB59\uCB5D\uCB64\uCB78\uCB79\uCB9C\uCBB8\uCBD4\uCBE4\uCBE7\uCBE9\uCC0C\uCC0D\uCC10\uCC14\uCC1C\uCC1D\uCC21\uCC22\uCC27\uCC28\uCC29\uCC2C\uCC2E\uCC30\uCC38\uCC39\uCC3B"], + ["c341", "\uD63D\uD63E\uD63F\uD641\uD642\uD643\uD644\uD646\uD647\uD64A\uD64C\uD64E\uD64F\uD650\uD652\uD653\uD656\uD657\uD659\uD65A\uD65B\uD65D", 4], + ["c361", "\uD662", 4, "\uD668\uD66A", 5, "\uD672\uD673\uD675", 11], + ["c381", "\uD681\uD682\uD684\uD686", 5, "\uD68E\uD68F\uD691\uD692\uD693\uD695", 7, "\uD69E\uD6A0\uD6A2", 5, "\uD6A9\uD6AA\uCC3C\uCC3D\uCC3E\uCC44\uCC45\uCC48\uCC4C\uCC54\uCC55\uCC57\uCC58\uCC59\uCC60\uCC64\uCC66\uCC68\uCC70\uCC75\uCC98\uCC99\uCC9C\uCCA0\uCCA8\uCCA9\uCCAB\uCCAC\uCCAD\uCCB4\uCCB5\uCCB8\uCCBC\uCCC4\uCCC5\uCCC7\uCCC9\uCCD0\uCCD4\uCCE4\uCCEC\uCCF0\uCD01\uCD08\uCD09\uCD0C\uCD10\uCD18\uCD19\uCD1B\uCD1D\uCD24\uCD28\uCD2C\uCD39\uCD5C\uCD60\uCD64\uCD6C\uCD6D\uCD6F\uCD71\uCD78\uCD88\uCD94\uCD95\uCD98\uCD9C\uCDA4\uCDA5\uCDA7\uCDA9\uCDB0\uCDC4\uCDCC\uCDD0\uCDE8\uCDEC\uCDF0\uCDF8\uCDF9\uCDFB\uCDFD\uCE04\uCE08\uCE0C\uCE14\uCE19\uCE20\uCE21\uCE24\uCE28\uCE30\uCE31\uCE33\uCE35"], + ["c441", "\uD6AB\uD6AD\uD6AE\uD6AF\uD6B1", 7, "\uD6BA\uD6BC", 7, "\uD6C6\uD6C7\uD6C9\uD6CA\uD6CB"], + ["c461", "\uD6CD\uD6CE\uD6CF\uD6D0\uD6D2\uD6D3\uD6D5\uD6D6\uD6D8\uD6DA", 5, "\uD6E1\uD6E2\uD6E3\uD6E5\uD6E6\uD6E7\uD6E9", 4], + ["c481", "\uD6EE\uD6EF\uD6F1\uD6F2\uD6F3\uD6F4\uD6F6", 5, "\uD6FE\uD6FF\uD701\uD702\uD703\uD705", 11, "\uD712\uD713\uD714\uCE58\uCE59\uCE5C\uCE5F\uCE60\uCE61\uCE68\uCE69\uCE6B\uCE6D\uCE74\uCE75\uCE78\uCE7C\uCE84\uCE85\uCE87\uCE89\uCE90\uCE91\uCE94\uCE98\uCEA0\uCEA1\uCEA3\uCEA4\uCEA5\uCEAC\uCEAD\uCEC1\uCEE4\uCEE5\uCEE8\uCEEB\uCEEC\uCEF4\uCEF5\uCEF7\uCEF8\uCEF9\uCF00\uCF01\uCF04\uCF08\uCF10\uCF11\uCF13\uCF15\uCF1C\uCF20\uCF24\uCF2C\uCF2D\uCF2F\uCF30\uCF31\uCF38\uCF54\uCF55\uCF58\uCF5C\uCF64\uCF65\uCF67\uCF69\uCF70\uCF71\uCF74\uCF78\uCF80\uCF85\uCF8C\uCFA1\uCFA8\uCFB0\uCFC4\uCFE0\uCFE1\uCFE4\uCFE8\uCFF0\uCFF1\uCFF3\uCFF5\uCFFC\uD000\uD004\uD011\uD018\uD02D\uD034\uD035\uD038\uD03C"], + ["c541", "\uD715\uD716\uD717\uD71A\uD71B\uD71D\uD71E\uD71F\uD721", 6, "\uD72A\uD72C\uD72E", 5, "\uD736\uD737\uD739"], + ["c561", "\uD73A\uD73B\uD73D", 6, "\uD745\uD746\uD748\uD74A", 5, "\uD752\uD753\uD755\uD75A", 4], + ["c581", "\uD75F\uD762\uD764\uD766\uD767\uD768\uD76A\uD76B\uD76D\uD76E\uD76F\uD771\uD772\uD773\uD775", 6, "\uD77E\uD77F\uD780\uD782", 5, "\uD78A\uD78B\uD044\uD045\uD047\uD049\uD050\uD054\uD058\uD060\uD06C\uD06D\uD070\uD074\uD07C\uD07D\uD081\uD0A4\uD0A5\uD0A8\uD0AC\uD0B4\uD0B5\uD0B7\uD0B9\uD0C0\uD0C1\uD0C4\uD0C8\uD0C9\uD0D0\uD0D1\uD0D3\uD0D4\uD0D5\uD0DC\uD0DD\uD0E0\uD0E4\uD0EC\uD0ED\uD0EF\uD0F0\uD0F1\uD0F8\uD10D\uD130\uD131\uD134\uD138\uD13A\uD140\uD141\uD143\uD144\uD145\uD14C\uD14D\uD150\uD154\uD15C\uD15D\uD15F\uD161\uD168\uD16C\uD17C\uD184\uD188\uD1A0\uD1A1\uD1A4\uD1A8\uD1B0\uD1B1\uD1B3\uD1B5\uD1BA\uD1BC\uD1C0\uD1D8\uD1F4\uD1F8\uD207\uD209\uD210\uD22C\uD22D\uD230\uD234\uD23C\uD23D\uD23F\uD241\uD248\uD25C"], + ["c641", "\uD78D\uD78E\uD78F\uD791", 6, "\uD79A\uD79C\uD79E", 5], + ["c6a1", "\uD264\uD280\uD281\uD284\uD288\uD290\uD291\uD295\uD29C\uD2A0\uD2A4\uD2AC\uD2B1\uD2B8\uD2B9\uD2BC\uD2BF\uD2C0\uD2C2\uD2C8\uD2C9\uD2CB\uD2D4\uD2D8\uD2DC\uD2E4\uD2E5\uD2F0\uD2F1\uD2F4\uD2F8\uD300\uD301\uD303\uD305\uD30C\uD30D\uD30E\uD310\uD314\uD316\uD31C\uD31D\uD31F\uD320\uD321\uD325\uD328\uD329\uD32C\uD330\uD338\uD339\uD33B\uD33C\uD33D\uD344\uD345\uD37C\uD37D\uD380\uD384\uD38C\uD38D\uD38F\uD390\uD391\uD398\uD399\uD39C\uD3A0\uD3A8\uD3A9\uD3AB\uD3AD\uD3B4\uD3B8\uD3BC\uD3C4\uD3C5\uD3C8\uD3C9\uD3D0\uD3D8\uD3E1\uD3E3\uD3EC\uD3ED\uD3F0\uD3F4\uD3FC\uD3FD\uD3FF\uD401"], + ["c7a1", "\uD408\uD41D\uD440\uD444\uD45C\uD460\uD464\uD46D\uD46F\uD478\uD479\uD47C\uD47F\uD480\uD482\uD488\uD489\uD48B\uD48D\uD494\uD4A9\uD4CC\uD4D0\uD4D4\uD4DC\uD4DF\uD4E8\uD4EC\uD4F0\uD4F8\uD4FB\uD4FD\uD504\uD508\uD50C\uD514\uD515\uD517\uD53C\uD53D\uD540\uD544\uD54C\uD54D\uD54F\uD551\uD558\uD559\uD55C\uD560\uD565\uD568\uD569\uD56B\uD56D\uD574\uD575\uD578\uD57C\uD584\uD585\uD587\uD588\uD589\uD590\uD5A5\uD5C8\uD5C9\uD5CC\uD5D0\uD5D2\uD5D8\uD5D9\uD5DB\uD5DD\uD5E4\uD5E5\uD5E8\uD5EC\uD5F4\uD5F5\uD5F7\uD5F9\uD600\uD601\uD604\uD608\uD610\uD611\uD613\uD614\uD615\uD61C\uD620"], + ["c8a1", "\uD624\uD62D\uD638\uD639\uD63C\uD640\uD645\uD648\uD649\uD64B\uD64D\uD651\uD654\uD655\uD658\uD65C\uD667\uD669\uD670\uD671\uD674\uD683\uD685\uD68C\uD68D\uD690\uD694\uD69D\uD69F\uD6A1\uD6A8\uD6AC\uD6B0\uD6B9\uD6BB\uD6C4\uD6C5\uD6C8\uD6CC\uD6D1\uD6D4\uD6D7\uD6D9\uD6E0\uD6E4\uD6E8\uD6F0\uD6F5\uD6FC\uD6FD\uD700\uD704\uD711\uD718\uD719\uD71C\uD720\uD728\uD729\uD72B\uD72D\uD734\uD735\uD738\uD73C\uD744\uD747\uD749\uD750\uD751\uD754\uD756\uD757\uD758\uD759\uD760\uD761\uD763\uD765\uD769\uD76C\uD770\uD774\uD77C\uD77D\uD781\uD788\uD789\uD78C\uD790\uD798\uD799\uD79B\uD79D"], + ["caa1", "\u4F3D\u4F73\u5047\u50F9\u52A0\u53EF\u5475\u54E5\u5609\u5AC1\u5BB6\u6687\u67B6\u67B7\u67EF\u6B4C\u73C2\u75C2\u7A3C\u82DB\u8304\u8857\u8888\u8A36\u8CC8\u8DCF\u8EFB\u8FE6\u99D5\u523B\u5374\u5404\u606A\u6164\u6BBC\u73CF\u811A\u89BA\u89D2\u95A3\u4F83\u520A\u58BE\u5978\u59E6\u5E72\u5E79\u61C7\u63C0\u6746\u67EC\u687F\u6F97\u764E\u770B\u78F5\u7A08\u7AFF\u7C21\u809D\u826E\u8271\u8AEB\u9593\u4E6B\u559D\u66F7\u6E34\u78A3\u7AED\u845B\u8910\u874E\u97A8\u52D8\u574E\u582A\u5D4C\u611F\u61BE\u6221\u6562\u67D1\u6A44\u6E1B\u7518\u75B3\u76E3\u77B0\u7D3A\u90AF\u9451\u9452\u9F95"], + ["cba1", "\u5323\u5CAC\u7532\u80DB\u9240\u9598\u525B\u5808\u59DC\u5CA1\u5D17\u5EB7\u5F3A\u5F4A\u6177\u6C5F\u757A\u7586\u7CE0\u7D73\u7DB1\u7F8C\u8154\u8221\u8591\u8941\u8B1B\u92FC\u964D\u9C47\u4ECB\u4EF7\u500B\u51F1\u584F\u6137\u613E\u6168\u6539\u69EA\u6F11\u75A5\u7686\u76D6\u7B87\u82A5\u84CB\uF900\u93A7\u958B\u5580\u5BA2\u5751\uF901\u7CB3\u7FB9\u91B5\u5028\u53BB\u5C45\u5DE8\u62D2\u636E\u64DA\u64E7\u6E20\u70AC\u795B\u8DDD\u8E1E\uF902\u907D\u9245\u92F8\u4E7E\u4EF6\u5065\u5DFE\u5EFA\u6106\u6957\u8171\u8654\u8E47\u9375\u9A2B\u4E5E\u5091\u6770\u6840\u5109\u528D\u5292\u6AA2"], + ["cca1", "\u77BC\u9210\u9ED4\u52AB\u602F\u8FF2\u5048\u61A9\u63ED\u64CA\u683C\u6A84\u6FC0\u8188\u89A1\u9694\u5805\u727D\u72AC\u7504\u7D79\u7E6D\u80A9\u898B\u8B74\u9063\u9D51\u6289\u6C7A\u6F54\u7D50\u7F3A\u8A23\u517C\u614A\u7B9D\u8B19\u9257\u938C\u4EAC\u4FD3\u501E\u50BE\u5106\u52C1\u52CD\u537F\u5770\u5883\u5E9A\u5F91\u6176\u61AC\u64CE\u656C\u666F\u66BB\u66F4\u6897\u6D87\u7085\u70F1\u749F\u74A5\u74CA\u75D9\u786C\u78EC\u7ADF\u7AF6\u7D45\u7D93\u8015\u803F\u811B\u8396\u8B66\u8F15\u9015\u93E1\u9803\u9838\u9A5A\u9BE8\u4FC2\u5553\u583A\u5951\u5B63\u5C46\u60B8\u6212\u6842\u68B0"], + ["cda1", "\u68E8\u6EAA\u754C\u7678\u78CE\u7A3D\u7CFB\u7E6B\u7E7C\u8A08\u8AA1\u8C3F\u968E\u9DC4\u53E4\u53E9\u544A\u5471\u56FA\u59D1\u5B64\u5C3B\u5EAB\u62F7\u6537\u6545\u6572\u66A0\u67AF\u69C1\u6CBD\u75FC\u7690\u777E\u7A3F\u7F94\u8003\u80A1\u818F\u82E6\u82FD\u83F0\u85C1\u8831\u88B4\u8AA5\uF903\u8F9C\u932E\u96C7\u9867\u9AD8\u9F13\u54ED\u659B\u66F2\u688F\u7A40\u8C37\u9D60\u56F0\u5764\u5D11\u6606\u68B1\u68CD\u6EFE\u7428\u889E\u9BE4\u6C68\uF904\u9AA8\u4F9B\u516C\u5171\u529F\u5B54\u5DE5\u6050\u606D\u62F1\u63A7\u653B\u73D9\u7A7A\u86A3\u8CA2\u978F\u4E32\u5BE1\u6208\u679C\u74DC"], + ["cea1", "\u79D1\u83D3\u8A87\u8AB2\u8DE8\u904E\u934B\u9846\u5ED3\u69E8\u85FF\u90ED\uF905\u51A0\u5B98\u5BEC\u6163\u68FA\u6B3E\u704C\u742F\u74D8\u7BA1\u7F50\u83C5\u89C0\u8CAB\u95DC\u9928\u522E\u605D\u62EC\u9002\u4F8A\u5149\u5321\u58D9\u5EE3\u66E0\u6D38\u709A\u72C2\u73D6\u7B50\u80F1\u945B\u5366\u639B\u7F6B\u4E56\u5080\u584A\u58DE\u602A\u6127\u62D0\u69D0\u9B41\u5B8F\u7D18\u80B1\u8F5F\u4EA4\u50D1\u54AC\u55AC\u5B0C\u5DA0\u5DE7\u652A\u654E\u6821\u6A4B\u72E1\u768E\u77EF\u7D5E\u7FF9\u81A0\u854E\u86DF\u8F03\u8F4E\u90CA\u9903\u9A55\u9BAB\u4E18\u4E45\u4E5D\u4EC7\u4FF1\u5177\u52FE"], + ["cfa1", "\u5340\u53E3\u53E5\u548E\u5614\u5775\u57A2\u5BC7\u5D87\u5ED0\u61FC\u62D8\u6551\u67B8\u67E9\u69CB\u6B50\u6BC6\u6BEC\u6C42\u6E9D\u7078\u72D7\u7396\u7403\u77BF\u77E9\u7A76\u7D7F\u8009\u81FC\u8205\u820A\u82DF\u8862\u8B33\u8CFC\u8EC0\u9011\u90B1\u9264\u92B6\u99D2\u9A45\u9CE9\u9DD7\u9F9C\u570B\u5C40\u83CA\u97A0\u97AB\u9EB4\u541B\u7A98\u7FA4\u88D9\u8ECD\u90E1\u5800\u5C48\u6398\u7A9F\u5BAE\u5F13\u7A79\u7AAE\u828E\u8EAC\u5026\u5238\u52F8\u5377\u5708\u62F3\u6372\u6B0A\u6DC3\u7737\u53A5\u7357\u8568\u8E76\u95D5\u673A\u6AC3\u6F70\u8A6D\u8ECC\u994B\uF906\u6677\u6B78\u8CB4"], + ["d0a1", "\u9B3C\uF907\u53EB\u572D\u594E\u63C6\u69FB\u73EA\u7845\u7ABA\u7AC5\u7CFE\u8475\u898F\u8D73\u9035\u95A8\u52FB\u5747\u7547\u7B60\u83CC\u921E\uF908\u6A58\u514B\u524B\u5287\u621F\u68D8\u6975\u9699\u50C5\u52A4\u52E4\u61C3\u65A4\u6839\u69FF\u747E\u7B4B\u82B9\u83EB\u89B2\u8B39\u8FD1\u9949\uF909\u4ECA\u5997\u64D2\u6611\u6A8E\u7434\u7981\u79BD\u82A9\u887E\u887F\u895F\uF90A\u9326\u4F0B\u53CA\u6025\u6271\u6C72\u7D1A\u7D66\u4E98\u5162\u77DC\u80AF\u4F01\u4F0E\u5176\u5180\u55DC\u5668\u573B\u57FA\u57FC\u5914\u5947\u5993\u5BC4\u5C90\u5D0E\u5DF1\u5E7E\u5FCC\u6280\u65D7\u65E3"], + ["d1a1", "\u671E\u671F\u675E\u68CB\u68C4\u6A5F\u6B3A\u6C23\u6C7D\u6C82\u6DC7\u7398\u7426\u742A\u7482\u74A3\u7578\u757F\u7881\u78EF\u7941\u7947\u7948\u797A\u7B95\u7D00\u7DBA\u7F88\u8006\u802D\u808C\u8A18\u8B4F\u8C48\u8D77\u9321\u9324\u98E2\u9951\u9A0E\u9A0F\u9A65\u9E92\u7DCA\u4F76\u5409\u62EE\u6854\u91D1\u55AB\u513A\uF90B\uF90C\u5A1C\u61E6\uF90D\u62CF\u62FF\uF90E", 5, "\u90A3\uF914", 4, "\u8AFE\uF919\uF91A\uF91B\uF91C\u6696\uF91D\u7156\uF91E\uF91F\u96E3\uF920\u634F\u637A\u5357\uF921\u678F\u6960\u6E73\uF922\u7537\uF923\uF924\uF925"], + ["d2a1", "\u7D0D\uF926\uF927\u8872\u56CA\u5A18\uF928", 4, "\u4E43\uF92D\u5167\u5948\u67F0\u8010\uF92E\u5973\u5E74\u649A\u79CA\u5FF5\u606C\u62C8\u637B\u5BE7\u5BD7\u52AA\uF92F\u5974\u5F29\u6012\uF930\uF931\uF932\u7459\uF933", 5, "\u99D1\uF939", 10, "\u6FC3\uF944\uF945\u81BF\u8FB2\u60F1\uF946\uF947\u8166\uF948\uF949\u5C3F\uF94A", 7, "\u5AE9\u8A25\u677B\u7D10\uF952", 5, "\u80FD\uF958\uF959\u5C3C\u6CE5\u533F\u6EBA\u591A\u8336"], + ["d3a1", "\u4E39\u4EB6\u4F46\u55AE\u5718\u58C7\u5F56\u65B7\u65E6\u6A80\u6BB5\u6E4D\u77ED\u7AEF\u7C1E\u7DDE\u86CB\u8892\u9132\u935B\u64BB\u6FBE\u737A\u75B8\u9054\u5556\u574D\u61BA\u64D4\u66C7\u6DE1\u6E5B\u6F6D\u6FB9\u75F0\u8043\u81BD\u8541\u8983\u8AC7\u8B5A\u931F\u6C93\u7553\u7B54\u8E0F\u905D\u5510\u5802\u5858\u5E62\u6207\u649E\u68E0\u7576\u7CD6\u87B3\u9EE8\u4EE3\u5788\u576E\u5927\u5C0D\u5CB1\u5E36\u5F85\u6234\u64E1\u73B3\u81FA\u888B\u8CB8\u968A\u9EDB\u5B85\u5FB7\u60B3\u5012\u5200\u5230\u5716\u5835\u5857\u5C0E\u5C60\u5CF6\u5D8B\u5EA6\u5F92\u60BC\u6311\u6389\u6417\u6843"], + ["d4a1", "\u68F9\u6AC2\u6DD8\u6E21\u6ED4\u6FE4\u71FE\u76DC\u7779\u79B1\u7A3B\u8404\u89A9\u8CED\u8DF3\u8E48\u9003\u9014\u9053\u90FD\u934D\u9676\u97DC\u6BD2\u7006\u7258\u72A2\u7368\u7763\u79BF\u7BE4\u7E9B\u8B80\u58A9\u60C7\u6566\u65FD\u66BE\u6C8C\u711E\u71C9\u8C5A\u9813\u4E6D\u7A81\u4EDD\u51AC\u51CD\u52D5\u540C\u61A7\u6771\u6850\u68DF\u6D1E\u6F7C\u75BC\u77B3\u7AE5\u80F4\u8463\u9285\u515C\u6597\u675C\u6793\u75D8\u7AC7\u8373\uF95A\u8C46\u9017\u982D\u5C6F\u81C0\u829A\u9041\u906F\u920D\u5F97\u5D9D\u6A59\u71C8\u767B\u7B49\u85E4\u8B04\u9127\u9A30\u5587\u61F6\uF95B\u7669\u7F85"], + ["d5a1", "\u863F\u87BA\u88F8\u908F\uF95C\u6D1B\u70D9\u73DE\u7D61\u843D\uF95D\u916A\u99F1\uF95E\u4E82\u5375\u6B04\u6B12\u703E\u721B\u862D\u9E1E\u524C\u8FA3\u5D50\u64E5\u652C\u6B16\u6FEB\u7C43\u7E9C\u85CD\u8964\u89BD\u62C9\u81D8\u881F\u5ECA\u6717\u6D6A\u72FC\u7405\u746F\u8782\u90DE\u4F86\u5D0D\u5FA0\u840A\u51B7\u63A0\u7565\u4EAE\u5006\u5169\u51C9\u6881\u6A11\u7CAE\u7CB1\u7CE7\u826F\u8AD2\u8F1B\u91CF\u4FB6\u5137\u52F5\u5442\u5EEC\u616E\u623E\u65C5\u6ADA\u6FFE\u792A\u85DC\u8823\u95AD\u9A62\u9A6A\u9E97\u9ECE\u529B\u66C6\u6B77\u701D\u792B\u8F62\u9742\u6190\u6200\u6523\u6F23"], + ["d6a1", "\u7149\u7489\u7DF4\u806F\u84EE\u8F26\u9023\u934A\u51BD\u5217\u52A3\u6D0C\u70C8\u88C2\u5EC9\u6582\u6BAE\u6FC2\u7C3E\u7375\u4EE4\u4F36\u56F9\uF95F\u5CBA\u5DBA\u601C\u73B2\u7B2D\u7F9A\u7FCE\u8046\u901E\u9234\u96F6\u9748\u9818\u9F61\u4F8B\u6FA7\u79AE\u91B4\u96B7\u52DE\uF960\u6488\u64C4\u6AD3\u6F5E\u7018\u7210\u76E7\u8001\u8606\u865C\u8DEF\u8F05\u9732\u9B6F\u9DFA\u9E75\u788C\u797F\u7DA0\u83C9\u9304\u9E7F\u9E93\u8AD6\u58DF\u5F04\u6727\u7027\u74CF\u7C60\u807E\u5121\u7028\u7262\u78CA\u8CC2\u8CDA\u8CF4\u96F7\u4E86\u50DA\u5BEE\u5ED6\u6599\u71CE\u7642\u77AD\u804A\u84FC"], + ["d7a1", "\u907C\u9B27\u9F8D\u58D8\u5A41\u5C62\u6A13\u6DDA\u6F0F\u763B\u7D2F\u7E37\u851E\u8938\u93E4\u964B\u5289\u65D2\u67F3\u69B4\u6D41\u6E9C\u700F\u7409\u7460\u7559\u7624\u786B\u8B2C\u985E\u516D\u622E\u9678\u4F96\u502B\u5D19\u6DEA\u7DB8\u8F2A\u5F8B\u6144\u6817\uF961\u9686\u52D2\u808B\u51DC\u51CC\u695E\u7A1C\u7DBE\u83F1\u9675\u4FDA\u5229\u5398\u540F\u550E\u5C65\u60A7\u674E\u68A8\u6D6C\u7281\u72F8\u7406\u7483\uF962\u75E2\u7C6C\u7F79\u7FB8\u8389\u88CF\u88E1\u91CC\u91D0\u96E2\u9BC9\u541D\u6F7E\u71D0\u7498\u85FA\u8EAA\u96A3\u9C57\u9E9F\u6797\u6DCB\u7433\u81E8\u9716\u782C"], + ["d8a1", "\u7ACB\u7B20\u7C92\u6469\u746A\u75F2\u78BC\u78E8\u99AC\u9B54\u9EBB\u5BDE\u5E55\u6F20\u819C\u83AB\u9088\u4E07\u534D\u5A29\u5DD2\u5F4E\u6162\u633D\u6669\u66FC\u6EFF\u6F2B\u7063\u779E\u842C\u8513\u883B\u8F13\u9945\u9C3B\u551C\u62B9\u672B\u6CAB\u8309\u896A\u977A\u4EA1\u5984\u5FD8\u5FD9\u671B\u7DB2\u7F54\u8292\u832B\u83BD\u8F1E\u9099\u57CB\u59B9\u5A92\u5BD0\u6627\u679A\u6885\u6BCF\u7164\u7F75\u8CB7\u8CE3\u9081\u9B45\u8108\u8C8A\u964C\u9A40\u9EA5\u5B5F\u6C13\u731B\u76F2\u76DF\u840C\u51AA\u8993\u514D\u5195\u52C9\u68C9\u6C94\u7704\u7720\u7DBF\u7DEC\u9762\u9EB5\u6EC5"], + ["d9a1", "\u8511\u51A5\u540D\u547D\u660E\u669D\u6927\u6E9F\u76BF\u7791\u8317\u84C2\u879F\u9169\u9298\u9CF4\u8882\u4FAE\u5192\u52DF\u59C6\u5E3D\u6155\u6478\u6479\u66AE\u67D0\u6A21\u6BCD\u6BDB\u725F\u7261\u7441\u7738\u77DB\u8017\u82BC\u8305\u8B00\u8B28\u8C8C\u6728\u6C90\u7267\u76EE\u7766\u7A46\u9DA9\u6B7F\u6C92\u5922\u6726\u8499\u536F\u5893\u5999\u5EDF\u63CF\u6634\u6773\u6E3A\u732B\u7AD7\u82D7\u9328\u52D9\u5DEB\u61AE\u61CB\u620A\u62C7\u64AB\u65E0\u6959\u6B66\u6BCB\u7121\u73F7\u755D\u7E46\u821E\u8302\u856A\u8AA3\u8CBF\u9727\u9D61\u58A8\u9ED8\u5011\u520E\u543B\u554F\u6587"], + ["daa1", "\u6C76\u7D0A\u7D0B\u805E\u868A\u9580\u96EF\u52FF\u6C95\u7269\u5473\u5A9A\u5C3E\u5D4B\u5F4C\u5FAE\u672A\u68B6\u6963\u6E3C\u6E44\u7709\u7C73\u7F8E\u8587\u8B0E\u8FF7\u9761\u9EF4\u5CB7\u60B6\u610D\u61AB\u654F\u65FB\u65FC\u6C11\u6CEF\u739F\u73C9\u7DE1\u9594\u5BC6\u871C\u8B10\u525D\u535A\u62CD\u640F\u64B2\u6734\u6A38\u6CCA\u73C0\u749E\u7B94\u7C95\u7E1B\u818A\u8236\u8584\u8FEB\u96F9\u99C1\u4F34\u534A\u53CD\u53DB\u62CC\u642C\u6500\u6591\u69C3\u6CEE\u6F58\u73ED\u7554\u7622\u76E4\u76FC\u78D0\u78FB\u792C\u7D46\u822C\u87E0\u8FD4\u9812\u98EF\u52C3\u62D4\u64A5\u6E24\u6F51"], + ["dba1", "\u767C\u8DCB\u91B1\u9262\u9AEE\u9B43\u5023\u508D\u574A\u59A8\u5C28\u5E47\u5F77\u623F\u653E\u65B9\u65C1\u6609\u678B\u699C\u6EC2\u78C5\u7D21\u80AA\u8180\u822B\u82B3\u84A1\u868C\u8A2A\u8B17\u90A6\u9632\u9F90\u500D\u4FF3\uF963\u57F9\u5F98\u62DC\u6392\u676F\u6E43\u7119\u76C3\u80CC\u80DA\u88F4\u88F5\u8919\u8CE0\u8F29\u914D\u966A\u4F2F\u4F70\u5E1B\u67CF\u6822\u767D\u767E\u9B44\u5E61\u6A0A\u7169\u71D4\u756A\uF964\u7E41\u8543\u85E9\u98DC\u4F10\u7B4F\u7F70\u95A5\u51E1\u5E06\u68B5\u6C3E\u6C4E\u6CDB\u72AF\u7BC4\u8303\u6CD5\u743A\u50FB\u5288\u58C1\u64D8\u6A97\u74A7\u7656"], + ["dca1", "\u78A7\u8617\u95E2\u9739\uF965\u535E\u5F01\u8B8A\u8FA8\u8FAF\u908A\u5225\u77A5\u9C49\u9F08\u4E19\u5002\u5175\u5C5B\u5E77\u661E\u663A\u67C4\u68C5\u70B3\u7501\u75C5\u79C9\u7ADD\u8F27\u9920\u9A08\u4FDD\u5821\u5831\u5BF6\u666E\u6B65\u6D11\u6E7A\u6F7D\u73E4\u752B\u83E9\u88DC\u8913\u8B5C\u8F14\u4F0F\u50D5\u5310\u535C\u5B93\u5FA9\u670D\u798F\u8179\u832F\u8514\u8907\u8986\u8F39\u8F3B\u99A5\u9C12\u672C\u4E76\u4FF8\u5949\u5C01\u5CEF\u5CF0\u6367\u68D2\u70FD\u71A2\u742B\u7E2B\u84EC\u8702\u9022\u92D2\u9CF3\u4E0D\u4ED8\u4FEF\u5085\u5256\u526F\u5426\u5490\u57E0\u592B\u5A66"], + ["dda1", "\u5B5A\u5B75\u5BCC\u5E9C\uF966\u6276\u6577\u65A7\u6D6E\u6EA5\u7236\u7B26\u7C3F\u7F36\u8150\u8151\u819A\u8240\u8299\u83A9\u8A03\u8CA0\u8CE6\u8CFB\u8D74\u8DBA\u90E8\u91DC\u961C\u9644\u99D9\u9CE7\u5317\u5206\u5429\u5674\u58B3\u5954\u596E\u5FFF\u61A4\u626E\u6610\u6C7E\u711A\u76C6\u7C89\u7CDE\u7D1B\u82AC\u8CC1\u96F0\uF967\u4F5B\u5F17\u5F7F\u62C2\u5D29\u670B\u68DA\u787C\u7E43\u9D6C\u4E15\u5099\u5315\u532A\u5351\u5983\u5A62\u5E87\u60B2\u618A\u6249\u6279\u6590\u6787\u69A7\u6BD4\u6BD6\u6BD7\u6BD8\u6CB8\uF968\u7435\u75FA\u7812\u7891\u79D5\u79D8\u7C83\u7DCB\u7FE1\u80A5"], + ["dea1", "\u813E\u81C2\u83F2\u871A\u88E8\u8AB9\u8B6C\u8CBB\u9119\u975E\u98DB\u9F3B\u56AC\u5B2A\u5F6C\u658C\u6AB3\u6BAF\u6D5C\u6FF1\u7015\u725D\u73AD\u8CA7\u8CD3\u983B\u6191\u6C37\u8058\u9A01\u4E4D\u4E8B\u4E9B\u4ED5\u4F3A\u4F3C\u4F7F\u4FDF\u50FF\u53F2\u53F8\u5506\u55E3\u56DB\u58EB\u5962\u5A11\u5BEB\u5BFA\u5C04\u5DF3\u5E2B\u5F99\u601D\u6368\u659C\u65AF\u67F6\u67FB\u68AD\u6B7B\u6C99\u6CD7\u6E23\u7009\u7345\u7802\u793E\u7940\u7960\u79C1\u7BE9\u7D17\u7D72\u8086\u820D\u838E\u84D1\u86C7\u88DF\u8A50\u8A5E\u8B1D\u8CDC\u8D66\u8FAD\u90AA\u98FC\u99DF\u9E9D\u524A\uF969\u6714\uF96A"], + ["dfa1", "\u5098\u522A\u5C71\u6563\u6C55\u73CA\u7523\u759D\u7B97\u849C\u9178\u9730\u4E77\u6492\u6BBA\u715E\u85A9\u4E09\uF96B\u6749\u68EE\u6E17\u829F\u8518\u886B\u63F7\u6F81\u9212\u98AF\u4E0A\u50B7\u50CF\u511F\u5546\u55AA\u5617\u5B40\u5C19\u5CE0\u5E38\u5E8A\u5EA0\u5EC2\u60F3\u6851\u6A61\u6E58\u723D\u7240\u72C0\u76F8\u7965\u7BB1\u7FD4\u88F3\u89F4\u8A73\u8C61\u8CDE\u971C\u585E\u74BD\u8CFD\u55C7\uF96C\u7A61\u7D22\u8272\u7272\u751F\u7525\uF96D\u7B19\u5885\u58FB\u5DBC\u5E8F\u5EB6\u5F90\u6055\u6292\u637F\u654D\u6691\u66D9\u66F8\u6816\u68F2\u7280\u745E\u7B6E\u7D6E\u7DD6\u7F72"], + ["e0a1", "\u80E5\u8212\u85AF\u897F\u8A93\u901D\u92E4\u9ECD\u9F20\u5915\u596D\u5E2D\u60DC\u6614\u6673\u6790\u6C50\u6DC5\u6F5F\u77F3\u78A9\u84C6\u91CB\u932B\u4ED9\u50CA\u5148\u5584\u5B0B\u5BA3\u6247\u657E\u65CB\u6E32\u717D\u7401\u7444\u7487\u74BF\u766C\u79AA\u7DDA\u7E55\u7FA8\u817A\u81B3\u8239\u861A\u87EC\u8A75\u8DE3\u9078\u9291\u9425\u994D\u9BAE\u5368\u5C51\u6954\u6CC4\u6D29\u6E2B\u820C\u859B\u893B\u8A2D\u8AAA\u96EA\u9F67\u5261\u66B9\u6BB2\u7E96\u87FE\u8D0D\u9583\u965D\u651D\u6D89\u71EE\uF96E\u57CE\u59D3\u5BAC\u6027\u60FA\u6210\u661F\u665F\u7329\u73F9\u76DB\u7701\u7B6C"], + ["e1a1", "\u8056\u8072\u8165\u8AA0\u9192\u4E16\u52E2\u6B72\u6D17\u7A05\u7B39\u7D30\uF96F\u8CB0\u53EC\u562F\u5851\u5BB5\u5C0F\u5C11\u5DE2\u6240\u6383\u6414\u662D\u68B3\u6CBC\u6D88\u6EAF\u701F\u70A4\u71D2\u7526\u758F\u758E\u7619\u7B11\u7BE0\u7C2B\u7D20\u7D39\u852C\u856D\u8607\u8A34\u900D\u9061\u90B5\u92B7\u97F6\u9A37\u4FD7\u5C6C\u675F\u6D91\u7C9F\u7E8C\u8B16\u8D16\u901F\u5B6B\u5DFD\u640D\u84C0\u905C\u98E1\u7387\u5B8B\u609A\u677E\u6DDE\u8A1F\u8AA6\u9001\u980C\u5237\uF970\u7051\u788E\u9396\u8870\u91D7\u4FEE\u53D7\u55FD\u56DA\u5782\u58FD\u5AC2\u5B88\u5CAB\u5CC0\u5E25\u6101"], + ["e2a1", "\u620D\u624B\u6388\u641C\u6536\u6578\u6A39\u6B8A\u6C34\u6D19\u6F31\u71E7\u72E9\u7378\u7407\u74B2\u7626\u7761\u79C0\u7A57\u7AEA\u7CB9\u7D8F\u7DAC\u7E61\u7F9E\u8129\u8331\u8490\u84DA\u85EA\u8896\u8AB0\u8B90\u8F38\u9042\u9083\u916C\u9296\u92B9\u968B\u96A7\u96A8\u96D6\u9700\u9808\u9996\u9AD3\u9B1A\u53D4\u587E\u5919\u5B70\u5BBF\u6DD1\u6F5A\u719F\u7421\u74B9\u8085\u83FD\u5DE1\u5F87\u5FAA\u6042\u65EC\u6812\u696F\u6A53\u6B89\u6D35\u6DF3\u73E3\u76FE\u77AC\u7B4D\u7D14\u8123\u821C\u8340\u84F4\u8563\u8A62\u8AC4\u9187\u931E\u9806\u99B4\u620C\u8853\u8FF0\u9265\u5D07\u5D27"], + ["e3a1", "\u5D69\u745F\u819D\u8768\u6FD5\u62FE\u7FD2\u8936\u8972\u4E1E\u4E58\u50E7\u52DD\u5347\u627F\u6607\u7E69\u8805\u965E\u4F8D\u5319\u5636\u59CB\u5AA4\u5C38\u5C4E\u5C4D\u5E02\u5F11\u6043\u65BD\u662F\u6642\u67BE\u67F4\u731C\u77E2\u793A\u7FC5\u8494\u84CD\u8996\u8A66\u8A69\u8AE1\u8C55\u8C7A\u57F4\u5BD4\u5F0F\u606F\u62ED\u690D\u6B96\u6E5C\u7184\u7BD2\u8755\u8B58\u8EFE\u98DF\u98FE\u4F38\u4F81\u4FE1\u547B\u5A20\u5BB8\u613C\u65B0\u6668\u71FC\u7533\u795E\u7D33\u814E\u81E3\u8398\u85AA\u85CE\u8703\u8A0A\u8EAB\u8F9B\uF971\u8FC5\u5931\u5BA4\u5BE6\u6089\u5BE9\u5C0B\u5FC3\u6C81"], + ["e4a1", "\uF972\u6DF1\u700B\u751A\u82AF\u8AF6\u4EC0\u5341\uF973\u96D9\u6C0F\u4E9E\u4FC4\u5152\u555E\u5A25\u5CE8\u6211\u7259\u82BD\u83AA\u86FE\u8859\u8A1D\u963F\u96C5\u9913\u9D09\u9D5D\u580A\u5CB3\u5DBD\u5E44\u60E1\u6115\u63E1\u6A02\u6E25\u9102\u9354\u984E\u9C10\u9F77\u5B89\u5CB8\u6309\u664F\u6848\u773C\u96C1\u978D\u9854\u9B9F\u65A1\u8B01\u8ECB\u95BC\u5535\u5CA9\u5DD6\u5EB5\u6697\u764C\u83F4\u95C7\u58D3\u62BC\u72CE\u9D28\u4EF0\u592E\u600F\u663B\u6B83\u79E7\u9D26\u5393\u54C0\u57C3\u5D16\u611B\u66D6\u6DAF\u788D\u827E\u9698\u9744\u5384\u627C\u6396\u6DB2\u7E0A\u814B\u984D"], + ["e5a1", "\u6AFB\u7F4C\u9DAF\u9E1A\u4E5F\u503B\u51B6\u591C\u60F9\u63F6\u6930\u723A\u8036\uF974\u91CE\u5F31\uF975\uF976\u7D04\u82E5\u846F\u84BB\u85E5\u8E8D\uF977\u4F6F\uF978\uF979\u58E4\u5B43\u6059\u63DA\u6518\u656D\u6698\uF97A\u694A\u6A23\u6D0B\u7001\u716C\u75D2\u760D\u79B3\u7A70\uF97B\u7F8A\uF97C\u8944\uF97D\u8B93\u91C0\u967D\uF97E\u990A\u5704\u5FA1\u65BC\u6F01\u7600\u79A6\u8A9E\u99AD\u9B5A\u9F6C\u5104\u61B6\u6291\u6A8D\u81C6\u5043\u5830\u5F66\u7109\u8A00\u8AFA\u5B7C\u8616\u4FFA\u513C\u56B4\u5944\u63A9\u6DF9\u5DAA\u696D\u5186\u4E88\u4F59\uF97F\uF980\uF981\u5982\uF982"], + ["e6a1", "\uF983\u6B5F\u6C5D\uF984\u74B5\u7916\uF985\u8207\u8245\u8339\u8F3F\u8F5D\uF986\u9918\uF987\uF988\uF989\u4EA6\uF98A\u57DF\u5F79\u6613\uF98B\uF98C\u75AB\u7E79\u8B6F\uF98D\u9006\u9A5B\u56A5\u5827\u59F8\u5A1F\u5BB4\uF98E\u5EF6\uF98F\uF990\u6350\u633B\uF991\u693D\u6C87\u6CBF\u6D8E\u6D93\u6DF5\u6F14\uF992\u70DF\u7136\u7159\uF993\u71C3\u71D5\uF994\u784F\u786F\uF995\u7B75\u7DE3\uF996\u7E2F\uF997\u884D\u8EDF\uF998\uF999\uF99A\u925B\uF99B\u9CF6\uF99C\uF99D\uF99E\u6085\u6D85\uF99F\u71B1\uF9A0\uF9A1\u95B1\u53AD\uF9A2\uF9A3\uF9A4\u67D3\uF9A5\u708E\u7130\u7430\u8276\u82D2"], + ["e7a1", "\uF9A6\u95BB\u9AE5\u9E7D\u66C4\uF9A7\u71C1\u8449\uF9A8\uF9A9\u584B\uF9AA\uF9AB\u5DB8\u5F71\uF9AC\u6620\u668E\u6979\u69AE\u6C38\u6CF3\u6E36\u6F41\u6FDA\u701B\u702F\u7150\u71DF\u7370\uF9AD\u745B\uF9AE\u74D4\u76C8\u7A4E\u7E93\uF9AF\uF9B0\u82F1\u8A60\u8FCE\uF9B1\u9348\uF9B2\u9719\uF9B3\uF9B4\u4E42\u502A\uF9B5\u5208\u53E1\u66F3\u6C6D\u6FCA\u730A\u777F\u7A62\u82AE\u85DD\u8602\uF9B6\u88D4\u8A63\u8B7D\u8C6B\uF9B7\u92B3\uF9B8\u9713\u9810\u4E94\u4F0D\u4FC9\u50B2\u5348\u543E\u5433\u55DA\u5862\u58BA\u5967\u5A1B\u5BE4\u609F\uF9B9\u61CA\u6556\u65FF\u6664\u68A7\u6C5A\u6FB3"], + ["e8a1", "\u70CF\u71AC\u7352\u7B7D\u8708\u8AA4\u9C32\u9F07\u5C4B\u6C83\u7344\u7389\u923A\u6EAB\u7465\u761F\u7A69\u7E15\u860A\u5140\u58C5\u64C1\u74EE\u7515\u7670\u7FC1\u9095\u96CD\u9954\u6E26\u74E6\u7AA9\u7AAA\u81E5\u86D9\u8778\u8A1B\u5A49\u5B8C\u5B9B\u68A1\u6900\u6D63\u73A9\u7413\u742C\u7897\u7DE9\u7FEB\u8118\u8155\u839E\u8C4C\u962E\u9811\u66F0\u5F80\u65FA\u6789\u6C6A\u738B\u502D\u5A03\u6B6A\u77EE\u5916\u5D6C\u5DCD\u7325\u754F\uF9BA\uF9BB\u50E5\u51F9\u582F\u592D\u5996\u59DA\u5BE5\uF9BC\uF9BD\u5DA2\u62D7\u6416\u6493\u64FE\uF9BE\u66DC\uF9BF\u6A48\uF9C0\u71FF\u7464\uF9C1"], + ["e9a1", "\u7A88\u7AAF\u7E47\u7E5E\u8000\u8170\uF9C2\u87EF\u8981\u8B20\u9059\uF9C3\u9080\u9952\u617E\u6B32\u6D74\u7E1F\u8925\u8FB1\u4FD1\u50AD\u5197\u52C7\u57C7\u5889\u5BB9\u5EB8\u6142\u6995\u6D8C\u6E67\u6EB6\u7194\u7462\u7528\u752C\u8073\u8338\u84C9\u8E0A\u9394\u93DE\uF9C4\u4E8E\u4F51\u5076\u512A\u53C8\u53CB\u53F3\u5B87\u5BD3\u5C24\u611A\u6182\u65F4\u725B\u7397\u7440\u76C2\u7950\u7991\u79B9\u7D06\u7FBD\u828B\u85D5\u865E\u8FC2\u9047\u90F5\u91EA\u9685\u96E8\u96E9\u52D6\u5F67\u65ED\u6631\u682F\u715C\u7A36\u90C1\u980A\u4E91\uF9C5\u6A52\u6B9E\u6F90\u7189\u8018\u82B8\u8553"], + ["eaa1", "\u904B\u9695\u96F2\u97FB\u851A\u9B31\u4E90\u718A\u96C4\u5143\u539F\u54E1\u5713\u5712\u57A3\u5A9B\u5AC4\u5BC3\u6028\u613F\u63F4\u6C85\u6D39\u6E72\u6E90\u7230\u733F\u7457\u82D1\u8881\u8F45\u9060\uF9C6\u9662\u9858\u9D1B\u6708\u8D8A\u925E\u4F4D\u5049\u50DE\u5371\u570D\u59D4\u5A01\u5C09\u6170\u6690\u6E2D\u7232\u744B\u7DEF\u80C3\u840E\u8466\u853F\u875F\u885B\u8918\u8B02\u9055\u97CB\u9B4F\u4E73\u4F91\u5112\u516A\uF9C7\u552F\u55A9\u5B7A\u5BA5\u5E7C\u5E7D\u5EBE\u60A0\u60DF\u6108\u6109\u63C4\u6538\u6709\uF9C8\u67D4\u67DA\uF9C9\u6961\u6962\u6CB9\u6D27\uF9CA\u6E38\uF9CB"], + ["eba1", "\u6FE1\u7336\u7337\uF9CC\u745C\u7531\uF9CD\u7652\uF9CE\uF9CF\u7DAD\u81FE\u8438\u88D5\u8A98\u8ADB\u8AED\u8E30\u8E42\u904A\u903E\u907A\u9149\u91C9\u936E\uF9D0\uF9D1\u5809\uF9D2\u6BD3\u8089\u80B2\uF9D3\uF9D4\u5141\u596B\u5C39\uF9D5\uF9D6\u6F64\u73A7\u80E4\u8D07\uF9D7\u9217\u958F\uF9D8\uF9D9\uF9DA\uF9DB\u807F\u620E\u701C\u7D68\u878D\uF9DC\u57A0\u6069\u6147\u6BB7\u8ABE\u9280\u96B1\u4E59\u541F\u6DEB\u852D\u9670\u97F3\u98EE\u63D6\u6CE3\u9091\u51DD\u61C9\u81BA\u9DF9\u4F9D\u501A\u5100\u5B9C\u610F\u61FF\u64EC\u6905\u6BC5\u7591\u77E3\u7FA9\u8264\u858F\u87FB\u8863\u8ABC"], + ["eca1", "\u8B70\u91AB\u4E8C\u4EE5\u4F0A\uF9DD\uF9DE\u5937\u59E8\uF9DF\u5DF2\u5F1B\u5F5B\u6021\uF9E0\uF9E1\uF9E2\uF9E3\u723E\u73E5\uF9E4\u7570\u75CD\uF9E5\u79FB\uF9E6\u800C\u8033\u8084\u82E1\u8351\uF9E7\uF9E8\u8CBD\u8CB3\u9087\uF9E9\uF9EA\u98F4\u990C\uF9EB\uF9EC\u7037\u76CA\u7FCA\u7FCC\u7FFC\u8B1A\u4EBA\u4EC1\u5203\u5370\uF9ED\u54BD\u56E0\u59FB\u5BC5\u5F15\u5FCD\u6E6E\uF9EE\uF9EF\u7D6A\u8335\uF9F0\u8693\u8A8D\uF9F1\u976D\u9777\uF9F2\uF9F3\u4E00\u4F5A\u4F7E\u58F9\u65E5\u6EA2\u9038\u93B0\u99B9\u4EFB\u58EC\u598A\u59D9\u6041\uF9F4\uF9F5\u7A14\uF9F6\u834F\u8CC3\u5165\u5344"], + ["eda1", "\uF9F7\uF9F8\uF9F9\u4ECD\u5269\u5B55\u82BF\u4ED4\u523A\u54A8\u59C9\u59FF\u5B50\u5B57\u5B5C\u6063\u6148\u6ECB\u7099\u716E\u7386\u74F7\u75B5\u78C1\u7D2B\u8005\u81EA\u8328\u8517\u85C9\u8AEE\u8CC7\u96CC\u4F5C\u52FA\u56BC\u65AB\u6628\u707C\u70B8\u7235\u7DBD\u828D\u914C\u96C0\u9D72\u5B71\u68E7\u6B98\u6F7A\u76DE\u5C91\u66AB\u6F5B\u7BB4\u7C2A\u8836\u96DC\u4E08\u4ED7\u5320\u5834\u58BB\u58EF\u596C\u5C07\u5E33\u5E84\u5F35\u638C\u66B2\u6756\u6A1F\u6AA3\u6B0C\u6F3F\u7246\uF9FA\u7350\u748B\u7AE0\u7CA7\u8178\u81DF\u81E7\u838A\u846C\u8523\u8594\u85CF\u88DD\u8D13\u91AC\u9577"], + ["eea1", "\u969C\u518D\u54C9\u5728\u5BB0\u624D\u6750\u683D\u6893\u6E3D\u6ED3\u707D\u7E21\u88C1\u8CA1\u8F09\u9F4B\u9F4E\u722D\u7B8F\u8ACD\u931A\u4F47\u4F4E\u5132\u5480\u59D0\u5E95\u62B5\u6775\u696E\u6A17\u6CAE\u6E1A\u72D9\u732A\u75BD\u7BB8\u7D35\u82E7\u83F9\u8457\u85F7\u8A5B\u8CAF\u8E87\u9019\u90B8\u96CE\u9F5F\u52E3\u540A\u5AE1\u5BC2\u6458\u6575\u6EF4\u72C4\uF9FB\u7684\u7A4D\u7B1B\u7C4D\u7E3E\u7FDF\u837B\u8B2B\u8CCA\u8D64\u8DE1\u8E5F\u8FEA\u8FF9\u9069\u93D1\u4F43\u4F7A\u50B3\u5168\u5178\u524D\u526A\u5861\u587C\u5960\u5C08\u5C55\u5EDB\u609B\u6230\u6813\u6BBF\u6C08\u6FB1"], + ["efa1", "\u714E\u7420\u7530\u7538\u7551\u7672\u7B4C\u7B8B\u7BAD\u7BC6\u7E8F\u8A6E\u8F3E\u8F49\u923F\u9293\u9322\u942B\u96FB\u985A\u986B\u991E\u5207\u622A\u6298\u6D59\u7664\u7ACA\u7BC0\u7D76\u5360\u5CBE\u5E97\u6F38\u70B9\u7C98\u9711\u9B8E\u9EDE\u63A5\u647A\u8776\u4E01\u4E95\u4EAD\u505C\u5075\u5448\u59C3\u5B9A\u5E40\u5EAD\u5EF7\u5F81\u60C5\u633A\u653F\u6574\u65CC\u6676\u6678\u67FE\u6968\u6A89\u6B63\u6C40\u6DC0\u6DE8\u6E1F\u6E5E\u701E\u70A1\u738E\u73FD\u753A\u775B\u7887\u798E\u7A0B\u7A7D\u7CBE\u7D8E\u8247\u8A02\u8AEA\u8C9E\u912D\u914A\u91D8\u9266\u92CC\u9320\u9706\u9756"], + ["f0a1", "\u975C\u9802\u9F0E\u5236\u5291\u557C\u5824\u5E1D\u5F1F\u608C\u63D0\u68AF\u6FDF\u796D\u7B2C\u81CD\u85BA\u88FD\u8AF8\u8E44\u918D\u9664\u969B\u973D\u984C\u9F4A\u4FCE\u5146\u51CB\u52A9\u5632\u5F14\u5F6B\u63AA\u64CD\u65E9\u6641\u66FA\u66F9\u671D\u689D\u68D7\u69FD\u6F15\u6F6E\u7167\u71E5\u722A\u74AA\u773A\u7956\u795A\u79DF\u7A20\u7A95\u7C97\u7CDF\u7D44\u7E70\u8087\u85FB\u86A4\u8A54\u8ABF\u8D99\u8E81\u9020\u906D\u91E3\u963B\u96D5\u9CE5\u65CF\u7C07\u8DB3\u93C3\u5B58\u5C0A\u5352\u62D9\u731D\u5027\u5B97\u5F9E\u60B0\u616B\u68D5\u6DD9\u742E\u7A2E\u7D42\u7D9C\u7E31\u816B"], + ["f1a1", "\u8E2A\u8E35\u937E\u9418\u4F50\u5750\u5DE6\u5EA7\u632B\u7F6A\u4E3B\u4F4F\u4F8F\u505A\u59DD\u80C4\u546A\u5468\u55FE\u594F\u5B99\u5DDE\u5EDA\u665D\u6731\u67F1\u682A\u6CE8\u6D32\u6E4A\u6F8D\u70B7\u73E0\u7587\u7C4C\u7D02\u7D2C\u7DA2\u821F\u86DB\u8A3B\u8A85\u8D70\u8E8A\u8F33\u9031\u914E\u9152\u9444\u99D0\u7AF9\u7CA5\u4FCA\u5101\u51C6\u57C8\u5BEF\u5CFB\u6659\u6A3D\u6D5A\u6E96\u6FEC\u710C\u756F\u7AE3\u8822\u9021\u9075\u96CB\u99FF\u8301\u4E2D\u4EF2\u8846\u91CD\u537D\u6ADB\u696B\u6C41\u847A\u589E\u618E\u66FE\u62EF\u70DD\u7511\u75C7\u7E52\u84B8\u8B49\u8D08\u4E4B\u53EA"], + ["f2a1", "\u54AB\u5730\u5740\u5FD7\u6301\u6307\u646F\u652F\u65E8\u667A\u679D\u67B3\u6B62\u6C60\u6C9A\u6F2C\u77E5\u7825\u7949\u7957\u7D19\u80A2\u8102\u81F3\u829D\u82B7\u8718\u8A8C\uF9FC\u8D04\u8DBE\u9072\u76F4\u7A19\u7A37\u7E54\u8077\u5507\u55D4\u5875\u632F\u6422\u6649\u664B\u686D\u699B\u6B84\u6D25\u6EB1\u73CD\u7468\u74A1\u755B\u75B9\u76E1\u771E\u778B\u79E6\u7E09\u7E1D\u81FB\u852F\u8897\u8A3A\u8CD1\u8EEB\u8FB0\u9032\u93AD\u9663\u9673\u9707\u4F84\u53F1\u59EA\u5AC9\u5E19\u684E\u74C6\u75BE\u79E9\u7A92\u81A3\u86ED\u8CEA\u8DCC\u8FED\u659F\u6715\uF9FD\u57F7\u6F57\u7DDD\u8F2F"], + ["f3a1", "\u93F6\u96C6\u5FB5\u61F2\u6F84\u4E14\u4F98\u501F\u53C9\u55DF\u5D6F\u5DEE\u6B21\u6B64\u78CB\u7B9A\uF9FE\u8E49\u8ECA\u906E\u6349\u643E\u7740\u7A84\u932F\u947F\u9F6A\u64B0\u6FAF\u71E6\u74A8\u74DA\u7AC4\u7C12\u7E82\u7CB2\u7E98\u8B9A\u8D0A\u947D\u9910\u994C\u5239\u5BDF\u64E6\u672D\u7D2E\u50ED\u53C3\u5879\u6158\u6159\u61FA\u65AC\u7AD9\u8B92\u8B96\u5009\u5021\u5275\u5531\u5A3C\u5EE0\u5F70\u6134\u655E\u660C\u6636\u66A2\u69CD\u6EC4\u6F32\u7316\u7621\u7A93\u8139\u8259\u83D6\u84BC\u50B5\u57F0\u5BC0\u5BE8\u5F69\u63A1\u7826\u7DB5\u83DC\u8521\u91C7\u91F5\u518A\u67F5\u7B56"], + ["f4a1", "\u8CAC\u51C4\u59BB\u60BD\u8655\u501C\uF9FF\u5254\u5C3A\u617D\u621A\u62D3\u64F2\u65A5\u6ECC\u7620\u810A\u8E60\u965F\u96BB\u4EDF\u5343\u5598\u5929\u5DDD\u64C5\u6CC9\u6DFA\u7394\u7A7F\u821B\u85A6\u8CE4\u8E10\u9077\u91E7\u95E1\u9621\u97C6\u51F8\u54F2\u5586\u5FB9\u64A4\u6F88\u7DB4\u8F1F\u8F4D\u9435\u50C9\u5C16\u6CBE\u6DFB\u751B\u77BB\u7C3D\u7C64\u8A79\u8AC2\u581E\u59BE\u5E16\u6377\u7252\u758A\u776B\u8ADC\u8CBC\u8F12\u5EF3\u6674\u6DF8\u807D\u83C1\u8ACB\u9751\u9BD6\uFA00\u5243\u66FF\u6D95\u6EEF\u7DE0\u8AE6\u902E\u905E\u9AD4\u521D\u527F\u54E8\u6194\u6284\u62DB\u68A2"], + ["f5a1", "\u6912\u695A\u6A35\u7092\u7126\u785D\u7901\u790E\u79D2\u7A0D\u8096\u8278\u82D5\u8349\u8549\u8C82\u8D85\u9162\u918B\u91AE\u4FC3\u56D1\u71ED\u77D7\u8700\u89F8\u5BF8\u5FD6\u6751\u90A8\u53E2\u585A\u5BF5\u60A4\u6181\u6460\u7E3D\u8070\u8525\u9283\u64AE\u50AC\u5D14\u6700\u589C\u62BD\u63A8\u690E\u6978\u6A1E\u6E6B\u76BA\u79CB\u82BB\u8429\u8ACF\u8DA8\u8FFD\u9112\u914B\u919C\u9310\u9318\u939A\u96DB\u9A36\u9C0D\u4E11\u755C\u795D\u7AFA\u7B51\u7BC9\u7E2E\u84C4\u8E59\u8E74\u8EF8\u9010\u6625\u693F\u7443\u51FA\u672E\u9EDC\u5145\u5FE0\u6C96\u87F2\u885D\u8877\u60B4\u81B5\u8403"], + ["f6a1", "\u8D05\u53D6\u5439\u5634\u5A36\u5C31\u708A\u7FE0\u805A\u8106\u81ED\u8DA3\u9189\u9A5F\u9DF2\u5074\u4EC4\u53A0\u60FB\u6E2C\u5C64\u4F88\u5024\u55E4\u5CD9\u5E5F\u6065\u6894\u6CBB\u6DC4\u71BE\u75D4\u75F4\u7661\u7A1A\u7A49\u7DC7\u7DFB\u7F6E\u81F4\u86A9\u8F1C\u96C9\u99B3\u9F52\u5247\u52C5\u98ED\u89AA\u4E03\u67D2\u6F06\u4FB5\u5BE2\u6795\u6C88\u6D78\u741B\u7827\u91DD\u937C\u87C4\u79E4\u7A31\u5FEB\u4ED6\u54A4\u553E\u58AE\u59A5\u60F0\u6253\u62D6\u6736\u6955\u8235\u9640\u99B1\u99DD\u502C\u5353\u5544\u577C\uFA01\u6258\uFA02\u64E2\u666B\u67DD\u6FC1\u6FEF\u7422\u7438\u8A17"], + ["f7a1", "\u9438\u5451\u5606\u5766\u5F48\u619A\u6B4E\u7058\u70AD\u7DBB\u8A95\u596A\u812B\u63A2\u7708\u803D\u8CAA\u5854\u642D\u69BB\u5B95\u5E11\u6E6F\uFA03\u8569\u514C\u53F0\u592A\u6020\u614B\u6B86\u6C70\u6CF0\u7B1E\u80CE\u82D4\u8DC6\u90B0\u98B1\uFA04\u64C7\u6FA4\u6491\u6504\u514E\u5410\u571F\u8A0E\u615F\u6876\uFA05\u75DB\u7B52\u7D71\u901A\u5806\u69CC\u817F\u892A\u9000\u9839\u5078\u5957\u59AC\u6295\u900F\u9B2A\u615D\u7279\u95D6\u5761\u5A46\u5DF4\u628A\u64AD\u64FA\u6777\u6CE2\u6D3E\u722C\u7436\u7834\u7F77\u82AD\u8DDB\u9817\u5224\u5742\u677F\u7248\u74E3\u8CA9\u8FA6\u9211"], + ["f8a1", "\u962A\u516B\u53ED\u634C\u4F69\u5504\u6096\u6557\u6C9B\u6D7F\u724C\u72FD\u7A17\u8987\u8C9D\u5F6D\u6F8E\u70F9\u81A8\u610E\u4FBF\u504F\u6241\u7247\u7BC7\u7DE8\u7FE9\u904D\u97AD\u9A19\u8CB6\u576A\u5E73\u67B0\u840D\u8A55\u5420\u5B16\u5E63\u5EE2\u5F0A\u6583\u80BA\u853D\u9589\u965B\u4F48\u5305\u530D\u530F\u5486\u54FA\u5703\u5E03\u6016\u629B\u62B1\u6355\uFA06\u6CE1\u6D66\u75B1\u7832\u80DE\u812F\u82DE\u8461\u84B2\u888D\u8912\u900B\u92EA\u98FD\u9B91\u5E45\u66B4\u66DD\u7011\u7206\uFA07\u4FF5\u527D\u5F6A\u6153\u6753\u6A19\u6F02\u74E2\u7968\u8868\u8C79\u98C7\u98C4\u9A43"], + ["f9a1", "\u54C1\u7A1F\u6953\u8AF7\u8C4A\u98A8\u99AE\u5F7C\u62AB\u75B2\u76AE\u88AB\u907F\u9642\u5339\u5F3C\u5FC5\u6CCC\u73CC\u7562\u758B\u7B46\u82FE\u999D\u4E4F\u903C\u4E0B\u4F55\u53A6\u590F\u5EC8\u6630\u6CB3\u7455\u8377\u8766\u8CC0\u9050\u971E\u9C15\u58D1\u5B78\u8650\u8B14\u9DB4\u5BD2\u6068\u608D\u65F1\u6C57\u6F22\u6FA3\u701A\u7F55\u7FF0\u9591\u9592\u9650\u97D3\u5272\u8F44\u51FD\u542B\u54B8\u5563\u558A\u6ABB\u6DB5\u7DD8\u8266\u929C\u9677\u9E79\u5408\u54C8\u76D2\u86E4\u95A4\u95D4\u965C\u4EA2\u4F09\u59EE\u5AE6\u5DF7\u6052\u6297\u676D\u6841\u6C86\u6E2F\u7F38\u809B\u822A"], + ["faa1", "\uFA08\uFA09\u9805\u4EA5\u5055\u54B3\u5793\u595A\u5B69\u5BB3\u61C8\u6977\u6D77\u7023\u87F9\u89E3\u8A72\u8AE7\u9082\u99ED\u9AB8\u52BE\u6838\u5016\u5E78\u674F\u8347\u884C\u4EAB\u5411\u56AE\u73E6\u9115\u97FF\u9909\u9957\u9999\u5653\u589F\u865B\u8A31\u61B2\u6AF6\u737B\u8ED2\u6B47\u96AA\u9A57\u5955\u7200\u8D6B\u9769\u4FD4\u5CF4\u5F26\u61F8\u665B\u6CEB\u70AB\u7384\u73B9\u73FE\u7729\u774D\u7D43\u7D62\u7E23\u8237\u8852\uFA0A\u8CE2\u9249\u986F\u5B51\u7A74\u8840\u9801\u5ACC\u4FE0\u5354\u593E\u5CFD\u633E\u6D79\u72F9\u8105\u8107\u83A2\u92CF\u9830\u4EA8\u5144\u5211\u578B"], + ["fba1", "\u5F62\u6CC2\u6ECE\u7005\u7050\u70AF\u7192\u73E9\u7469\u834A\u87A2\u8861\u9008\u90A2\u93A3\u99A8\u516E\u5F57\u60E0\u6167\u66B3\u8559\u8E4A\u91AF\u978B\u4E4E\u4E92\u547C\u58D5\u58FA\u597D\u5CB5\u5F27\u6236\u6248\u660A\u6667\u6BEB\u6D69\u6DCF\u6E56\u6EF8\u6F94\u6FE0\u6FE9\u705D\u72D0\u7425\u745A\u74E0\u7693\u795C\u7CCA\u7E1E\u80E1\u82A6\u846B\u84BF\u864E\u865F\u8774\u8B77\u8C6A\u93AC\u9800\u9865\u60D1\u6216\u9177\u5A5A\u660F\u6DF7\u6E3E\u743F\u9B42\u5FFD\u60DA\u7B0F\u54C4\u5F18\u6C5E\u6CD3\u6D2A\u70D8\u7D05\u8679\u8A0C\u9D3B\u5316\u548C\u5B05\u6A3A\u706B\u7575"], + ["fca1", "\u798D\u79BE\u82B1\u83EF\u8A71\u8B41\u8CA8\u9774\uFA0B\u64F4\u652B\u78BA\u78BB\u7A6B\u4E38\u559A\u5950\u5BA6\u5E7B\u60A3\u63DB\u6B61\u6665\u6853\u6E19\u7165\u74B0\u7D08\u9084\u9A69\u9C25\u6D3B\u6ED1\u733E\u8C41\u95CA\u51F0\u5E4C\u5FA8\u604D\u60F6\u6130\u614C\u6643\u6644\u69A5\u6CC1\u6E5F\u6EC9\u6F62\u714C\u749C\u7687\u7BC1\u7C27\u8352\u8757\u9051\u968D\u9EC3\u532F\u56DE\u5EFB\u5F8A\u6062\u6094\u61F7\u6666\u6703\u6A9C\u6DEE\u6FAE\u7070\u736A\u7E6A\u81BE\u8334\u86D4\u8AA8\u8CC4\u5283\u7372\u5B96\u6A6B\u9404\u54EE\u5686\u5B5D\u6548\u6585\u66C9\u689F\u6D8D\u6DC6"], + ["fda1", "\u723B\u80B4\u9175\u9A4D\u4FAF\u5019\u539A\u540E\u543C\u5589\u55C5\u5E3F\u5F8C\u673D\u7166\u73DD\u9005\u52DB\u52F3\u5864\u58CE\u7104\u718F\u71FB\u85B0\u8A13\u6688\u85A8\u55A7\u6684\u714A\u8431\u5349\u5599\u6BC1\u5F59\u5FBD\u63EE\u6689\u7147\u8AF1\u8F1D\u9EBE\u4F11\u643A\u70CB\u7566\u8667\u6064\u8B4E\u9DF8\u5147\u51F6\u5308\u6D36\u80F8\u9ED1\u6615\u6B23\u7098\u75D5\u5403\u5C79\u7D07\u8A16\u6B20\u6B3D\u6B46\u5438\u6070\u6D3D\u7FD5\u8208\u50D6\u51DE\u559C\u566B\u56CD\u59EC\u5B09\u5E0C\u6199\u6198\u6231\u665E\u66E6\u7199\u71B9\u71BA\u72A7\u79A7\u7A00\u7FB2\u8A70"] + ]; + } +}); + +// node_modules/iconv-lite/encodings/tables/cp950.json +var require_cp950 = __commonJS({ + "node_modules/iconv-lite/encodings/tables/cp950.json"(exports2, module2) { + module2.exports = [ + ["0", "\0", 127], + ["a140", "\u3000\uFF0C\u3001\u3002\uFF0E\u2027\uFF1B\uFF1A\uFF1F\uFF01\uFE30\u2026\u2025\uFE50\uFE51\uFE52\xB7\uFE54\uFE55\uFE56\uFE57\uFF5C\u2013\uFE31\u2014\uFE33\u2574\uFE34\uFE4F\uFF08\uFF09\uFE35\uFE36\uFF5B\uFF5D\uFE37\uFE38\u3014\u3015\uFE39\uFE3A\u3010\u3011\uFE3B\uFE3C\u300A\u300B\uFE3D\uFE3E\u3008\u3009\uFE3F\uFE40\u300C\u300D\uFE41\uFE42\u300E\u300F\uFE43\uFE44\uFE59\uFE5A"], + ["a1a1", "\uFE5B\uFE5C\uFE5D\uFE5E\u2018\u2019\u201C\u201D\u301D\u301E\u2035\u2032\uFF03\uFF06\uFF0A\u203B\xA7\u3003\u25CB\u25CF\u25B3\u25B2\u25CE\u2606\u2605\u25C7\u25C6\u25A1\u25A0\u25BD\u25BC\u32A3\u2105\xAF\uFFE3\uFF3F\u02CD\uFE49\uFE4A\uFE4D\uFE4E\uFE4B\uFE4C\uFE5F\uFE60\uFE61\uFF0B\uFF0D\xD7\xF7\xB1\u221A\uFF1C\uFF1E\uFF1D\u2266\u2267\u2260\u221E\u2252\u2261\uFE62", 4, "\uFF5E\u2229\u222A\u22A5\u2220\u221F\u22BF\u33D2\u33D1\u222B\u222E\u2235\u2234\u2640\u2642\u2295\u2299\u2191\u2193\u2190\u2192\u2196\u2197\u2199\u2198\u2225\u2223\uFF0F"], + ["a240", "\uFF3C\u2215\uFE68\uFF04\uFFE5\u3012\uFFE0\uFFE1\uFF05\uFF20\u2103\u2109\uFE69\uFE6A\uFE6B\u33D5\u339C\u339D\u339E\u33CE\u33A1\u338E\u338F\u33C4\xB0\u5159\u515B\u515E\u515D\u5161\u5163\u55E7\u74E9\u7CCE\u2581", 7, "\u258F\u258E\u258D\u258C\u258B\u258A\u2589\u253C\u2534\u252C\u2524\u251C\u2594\u2500\u2502\u2595\u250C\u2510\u2514\u2518\u256D"], + ["a2a1", "\u256E\u2570\u256F\u2550\u255E\u256A\u2561\u25E2\u25E3\u25E5\u25E4\u2571\u2572\u2573\uFF10", 9, "\u2160", 9, "\u3021", 8, "\u5341\u5344\u5345\uFF21", 25, "\uFF41", 21], + ["a340", "\uFF57\uFF58\uFF59\uFF5A\u0391", 16, "\u03A3", 6, "\u03B1", 16, "\u03C3", 6, "\u3105", 10], + ["a3a1", "\u3110", 25, "\u02D9\u02C9\u02CA\u02C7\u02CB"], + ["a3e1", "\u20AC"], + ["a440", "\u4E00\u4E59\u4E01\u4E03\u4E43\u4E5D\u4E86\u4E8C\u4EBA\u513F\u5165\u516B\u51E0\u5200\u5201\u529B\u5315\u5341\u535C\u53C8\u4E09\u4E0B\u4E08\u4E0A\u4E2B\u4E38\u51E1\u4E45\u4E48\u4E5F\u4E5E\u4E8E\u4EA1\u5140\u5203\u52FA\u5343\u53C9\u53E3\u571F\u58EB\u5915\u5927\u5973\u5B50\u5B51\u5B53\u5BF8\u5C0F\u5C22\u5C38\u5C71\u5DDD\u5DE5\u5DF1\u5DF2\u5DF3\u5DFE\u5E72\u5EFE\u5F0B\u5F13\u624D"], + ["a4a1", "\u4E11\u4E10\u4E0D\u4E2D\u4E30\u4E39\u4E4B\u5C39\u4E88\u4E91\u4E95\u4E92\u4E94\u4EA2\u4EC1\u4EC0\u4EC3\u4EC6\u4EC7\u4ECD\u4ECA\u4ECB\u4EC4\u5143\u5141\u5167\u516D\u516E\u516C\u5197\u51F6\u5206\u5207\u5208\u52FB\u52FE\u52FF\u5316\u5339\u5348\u5347\u5345\u535E\u5384\u53CB\u53CA\u53CD\u58EC\u5929\u592B\u592A\u592D\u5B54\u5C11\u5C24\u5C3A\u5C6F\u5DF4\u5E7B\u5EFF\u5F14\u5F15\u5FC3\u6208\u6236\u624B\u624E\u652F\u6587\u6597\u65A4\u65B9\u65E5\u66F0\u6708\u6728\u6B20\u6B62\u6B79\u6BCB\u6BD4\u6BDB\u6C0F\u6C34\u706B\u722A\u7236\u723B\u7247\u7259\u725B\u72AC\u738B\u4E19"], + ["a540", "\u4E16\u4E15\u4E14\u4E18\u4E3B\u4E4D\u4E4F\u4E4E\u4EE5\u4ED8\u4ED4\u4ED5\u4ED6\u4ED7\u4EE3\u4EE4\u4ED9\u4EDE\u5145\u5144\u5189\u518A\u51AC\u51F9\u51FA\u51F8\u520A\u52A0\u529F\u5305\u5306\u5317\u531D\u4EDF\u534A\u5349\u5361\u5360\u536F\u536E\u53BB\u53EF\u53E4\u53F3\u53EC\u53EE\u53E9\u53E8\u53FC\u53F8\u53F5\u53EB\u53E6\u53EA\u53F2\u53F1\u53F0\u53E5\u53ED\u53FB\u56DB\u56DA\u5916"], + ["a5a1", "\u592E\u5931\u5974\u5976\u5B55\u5B83\u5C3C\u5DE8\u5DE7\u5DE6\u5E02\u5E03\u5E73\u5E7C\u5F01\u5F18\u5F17\u5FC5\u620A\u6253\u6254\u6252\u6251\u65A5\u65E6\u672E\u672C\u672A\u672B\u672D\u6B63\u6BCD\u6C11\u6C10\u6C38\u6C41\u6C40\u6C3E\u72AF\u7384\u7389\u74DC\u74E6\u7518\u751F\u7528\u7529\u7530\u7531\u7532\u7533\u758B\u767D\u76AE\u76BF\u76EE\u77DB\u77E2\u77F3\u793A\u79BE\u7A74\u7ACB\u4E1E\u4E1F\u4E52\u4E53\u4E69\u4E99\u4EA4\u4EA6\u4EA5\u4EFF\u4F09\u4F19\u4F0A\u4F15\u4F0D\u4F10\u4F11\u4F0F\u4EF2\u4EF6\u4EFB\u4EF0\u4EF3\u4EFD\u4F01\u4F0B\u5149\u5147\u5146\u5148\u5168"], + ["a640", "\u5171\u518D\u51B0\u5217\u5211\u5212\u520E\u5216\u52A3\u5308\u5321\u5320\u5370\u5371\u5409\u540F\u540C\u540A\u5410\u5401\u540B\u5404\u5411\u540D\u5408\u5403\u540E\u5406\u5412\u56E0\u56DE\u56DD\u5733\u5730\u5728\u572D\u572C\u572F\u5729\u5919\u591A\u5937\u5938\u5984\u5978\u5983\u597D\u5979\u5982\u5981\u5B57\u5B58\u5B87\u5B88\u5B85\u5B89\u5BFA\u5C16\u5C79\u5DDE\u5E06\u5E76\u5E74"], + ["a6a1", "\u5F0F\u5F1B\u5FD9\u5FD6\u620E\u620C\u620D\u6210\u6263\u625B\u6258\u6536\u65E9\u65E8\u65EC\u65ED\u66F2\u66F3\u6709\u673D\u6734\u6731\u6735\u6B21\u6B64\u6B7B\u6C16\u6C5D\u6C57\u6C59\u6C5F\u6C60\u6C50\u6C55\u6C61\u6C5B\u6C4D\u6C4E\u7070\u725F\u725D\u767E\u7AF9\u7C73\u7CF8\u7F36\u7F8A\u7FBD\u8001\u8003\u800C\u8012\u8033\u807F\u8089\u808B\u808C\u81E3\u81EA\u81F3\u81FC\u820C\u821B\u821F\u826E\u8272\u827E\u866B\u8840\u884C\u8863\u897F\u9621\u4E32\u4EA8\u4F4D\u4F4F\u4F47\u4F57\u4F5E\u4F34\u4F5B\u4F55\u4F30\u4F50\u4F51\u4F3D\u4F3A\u4F38\u4F43\u4F54\u4F3C\u4F46\u4F63"], + ["a740", "\u4F5C\u4F60\u4F2F\u4F4E\u4F36\u4F59\u4F5D\u4F48\u4F5A\u514C\u514B\u514D\u5175\u51B6\u51B7\u5225\u5224\u5229\u522A\u5228\u52AB\u52A9\u52AA\u52AC\u5323\u5373\u5375\u541D\u542D\u541E\u543E\u5426\u544E\u5427\u5446\u5443\u5433\u5448\u5442\u541B\u5429\u544A\u5439\u543B\u5438\u542E\u5435\u5436\u5420\u543C\u5440\u5431\u542B\u541F\u542C\u56EA\u56F0\u56E4\u56EB\u574A\u5751\u5740\u574D"], + ["a7a1", "\u5747\u574E\u573E\u5750\u574F\u573B\u58EF\u593E\u599D\u5992\u59A8\u599E\u59A3\u5999\u5996\u598D\u59A4\u5993\u598A\u59A5\u5B5D\u5B5C\u5B5A\u5B5B\u5B8C\u5B8B\u5B8F\u5C2C\u5C40\u5C41\u5C3F\u5C3E\u5C90\u5C91\u5C94\u5C8C\u5DEB\u5E0C\u5E8F\u5E87\u5E8A\u5EF7\u5F04\u5F1F\u5F64\u5F62\u5F77\u5F79\u5FD8\u5FCC\u5FD7\u5FCD\u5FF1\u5FEB\u5FF8\u5FEA\u6212\u6211\u6284\u6297\u6296\u6280\u6276\u6289\u626D\u628A\u627C\u627E\u6279\u6273\u6292\u626F\u6298\u626E\u6295\u6293\u6291\u6286\u6539\u653B\u6538\u65F1\u66F4\u675F\u674E\u674F\u6750\u6751\u675C\u6756\u675E\u6749\u6746\u6760"], + ["a840", "\u6753\u6757\u6B65\u6BCF\u6C42\u6C5E\u6C99\u6C81\u6C88\u6C89\u6C85\u6C9B\u6C6A\u6C7A\u6C90\u6C70\u6C8C\u6C68\u6C96\u6C92\u6C7D\u6C83\u6C72\u6C7E\u6C74\u6C86\u6C76\u6C8D\u6C94\u6C98\u6C82\u7076\u707C\u707D\u7078\u7262\u7261\u7260\u72C4\u72C2\u7396\u752C\u752B\u7537\u7538\u7682\u76EF\u77E3\u79C1\u79C0\u79BF\u7A76\u7CFB\u7F55\u8096\u8093\u809D\u8098\u809B\u809A\u80B2\u826F\u8292"], + ["a8a1", "\u828B\u828D\u898B\u89D2\u8A00\u8C37\u8C46\u8C55\u8C9D\u8D64\u8D70\u8DB3\u8EAB\u8ECA\u8F9B\u8FB0\u8FC2\u8FC6\u8FC5\u8FC4\u5DE1\u9091\u90A2\u90AA\u90A6\u90A3\u9149\u91C6\u91CC\u9632\u962E\u9631\u962A\u962C\u4E26\u4E56\u4E73\u4E8B\u4E9B\u4E9E\u4EAB\u4EAC\u4F6F\u4F9D\u4F8D\u4F73\u4F7F\u4F6C\u4F9B\u4F8B\u4F86\u4F83\u4F70\u4F75\u4F88\u4F69\u4F7B\u4F96\u4F7E\u4F8F\u4F91\u4F7A\u5154\u5152\u5155\u5169\u5177\u5176\u5178\u51BD\u51FD\u523B\u5238\u5237\u523A\u5230\u522E\u5236\u5241\u52BE\u52BB\u5352\u5354\u5353\u5351\u5366\u5377\u5378\u5379\u53D6\u53D4\u53D7\u5473\u5475"], + ["a940", "\u5496\u5478\u5495\u5480\u547B\u5477\u5484\u5492\u5486\u547C\u5490\u5471\u5476\u548C\u549A\u5462\u5468\u548B\u547D\u548E\u56FA\u5783\u5777\u576A\u5769\u5761\u5766\u5764\u577C\u591C\u5949\u5947\u5948\u5944\u5954\u59BE\u59BB\u59D4\u59B9\u59AE\u59D1\u59C6\u59D0\u59CD\u59CB\u59D3\u59CA\u59AF\u59B3\u59D2\u59C5\u5B5F\u5B64\u5B63\u5B97\u5B9A\u5B98\u5B9C\u5B99\u5B9B\u5C1A\u5C48\u5C45"], + ["a9a1", "\u5C46\u5CB7\u5CA1\u5CB8\u5CA9\u5CAB\u5CB1\u5CB3\u5E18\u5E1A\u5E16\u5E15\u5E1B\u5E11\u5E78\u5E9A\u5E97\u5E9C\u5E95\u5E96\u5EF6\u5F26\u5F27\u5F29\u5F80\u5F81\u5F7F\u5F7C\u5FDD\u5FE0\u5FFD\u5FF5\u5FFF\u600F\u6014\u602F\u6035\u6016\u602A\u6015\u6021\u6027\u6029\u602B\u601B\u6216\u6215\u623F\u623E\u6240\u627F\u62C9\u62CC\u62C4\u62BF\u62C2\u62B9\u62D2\u62DB\u62AB\u62D3\u62D4\u62CB\u62C8\u62A8\u62BD\u62BC\u62D0\u62D9\u62C7\u62CD\u62B5\u62DA\u62B1\u62D8\u62D6\u62D7\u62C6\u62AC\u62CE\u653E\u65A7\u65BC\u65FA\u6614\u6613\u660C\u6606\u6602\u660E\u6600\u660F\u6615\u660A"], + ["aa40", "\u6607\u670D\u670B\u676D\u678B\u6795\u6771\u679C\u6773\u6777\u6787\u679D\u6797\u676F\u6770\u677F\u6789\u677E\u6790\u6775\u679A\u6793\u677C\u676A\u6772\u6B23\u6B66\u6B67\u6B7F\u6C13\u6C1B\u6CE3\u6CE8\u6CF3\u6CB1\u6CCC\u6CE5\u6CB3\u6CBD\u6CBE\u6CBC\u6CE2\u6CAB\u6CD5\u6CD3\u6CB8\u6CC4\u6CB9\u6CC1\u6CAE\u6CD7\u6CC5\u6CF1\u6CBF\u6CBB\u6CE1\u6CDB\u6CCA\u6CAC\u6CEF\u6CDC\u6CD6\u6CE0"], + ["aaa1", "\u7095\u708E\u7092\u708A\u7099\u722C\u722D\u7238\u7248\u7267\u7269\u72C0\u72CE\u72D9\u72D7\u72D0\u73A9\u73A8\u739F\u73AB\u73A5\u753D\u759D\u7599\u759A\u7684\u76C2\u76F2\u76F4\u77E5\u77FD\u793E\u7940\u7941\u79C9\u79C8\u7A7A\u7A79\u7AFA\u7CFE\u7F54\u7F8C\u7F8B\u8005\u80BA\u80A5\u80A2\u80B1\u80A1\u80AB\u80A9\u80B4\u80AA\u80AF\u81E5\u81FE\u820D\u82B3\u829D\u8299\u82AD\u82BD\u829F\u82B9\u82B1\u82AC\u82A5\u82AF\u82B8\u82A3\u82B0\u82BE\u82B7\u864E\u8671\u521D\u8868\u8ECB\u8FCE\u8FD4\u8FD1\u90B5\u90B8\u90B1\u90B6\u91C7\u91D1\u9577\u9580\u961C\u9640\u963F\u963B\u9644"], + ["ab40", "\u9642\u96B9\u96E8\u9752\u975E\u4E9F\u4EAD\u4EAE\u4FE1\u4FB5\u4FAF\u4FBF\u4FE0\u4FD1\u4FCF\u4FDD\u4FC3\u4FB6\u4FD8\u4FDF\u4FCA\u4FD7\u4FAE\u4FD0\u4FC4\u4FC2\u4FDA\u4FCE\u4FDE\u4FB7\u5157\u5192\u5191\u51A0\u524E\u5243\u524A\u524D\u524C\u524B\u5247\u52C7\u52C9\u52C3\u52C1\u530D\u5357\u537B\u539A\u53DB\u54AC\u54C0\u54A8\u54CE\u54C9\u54B8\u54A6\u54B3\u54C7\u54C2\u54BD\u54AA\u54C1"], + ["aba1", "\u54C4\u54C8\u54AF\u54AB\u54B1\u54BB\u54A9\u54A7\u54BF\u56FF\u5782\u578B\u57A0\u57A3\u57A2\u57CE\u57AE\u5793\u5955\u5951\u594F\u594E\u5950\u59DC\u59D8\u59FF\u59E3\u59E8\u5A03\u59E5\u59EA\u59DA\u59E6\u5A01\u59FB\u5B69\u5BA3\u5BA6\u5BA4\u5BA2\u5BA5\u5C01\u5C4E\u5C4F\u5C4D\u5C4B\u5CD9\u5CD2\u5DF7\u5E1D\u5E25\u5E1F\u5E7D\u5EA0\u5EA6\u5EFA\u5F08\u5F2D\u5F65\u5F88\u5F85\u5F8A\u5F8B\u5F87\u5F8C\u5F89\u6012\u601D\u6020\u6025\u600E\u6028\u604D\u6070\u6068\u6062\u6046\u6043\u606C\u606B\u606A\u6064\u6241\u62DC\u6316\u6309\u62FC\u62ED\u6301\u62EE\u62FD\u6307\u62F1\u62F7"], + ["ac40", "\u62EF\u62EC\u62FE\u62F4\u6311\u6302\u653F\u6545\u65AB\u65BD\u65E2\u6625\u662D\u6620\u6627\u662F\u661F\u6628\u6631\u6624\u66F7\u67FF\u67D3\u67F1\u67D4\u67D0\u67EC\u67B6\u67AF\u67F5\u67E9\u67EF\u67C4\u67D1\u67B4\u67DA\u67E5\u67B8\u67CF\u67DE\u67F3\u67B0\u67D9\u67E2\u67DD\u67D2\u6B6A\u6B83\u6B86\u6BB5\u6BD2\u6BD7\u6C1F\u6CC9\u6D0B\u6D32\u6D2A\u6D41\u6D25\u6D0C\u6D31\u6D1E\u6D17"], + ["aca1", "\u6D3B\u6D3D\u6D3E\u6D36\u6D1B\u6CF5\u6D39\u6D27\u6D38\u6D29\u6D2E\u6D35\u6D0E\u6D2B\u70AB\u70BA\u70B3\u70AC\u70AF\u70AD\u70B8\u70AE\u70A4\u7230\u7272\u726F\u7274\u72E9\u72E0\u72E1\u73B7\u73CA\u73BB\u73B2\u73CD\u73C0\u73B3\u751A\u752D\u754F\u754C\u754E\u754B\u75AB\u75A4\u75A5\u75A2\u75A3\u7678\u7686\u7687\u7688\u76C8\u76C6\u76C3\u76C5\u7701\u76F9\u76F8\u7709\u770B\u76FE\u76FC\u7707\u77DC\u7802\u7814\u780C\u780D\u7946\u7949\u7948\u7947\u79B9\u79BA\u79D1\u79D2\u79CB\u7A7F\u7A81\u7AFF\u7AFD\u7C7D\u7D02\u7D05\u7D00\u7D09\u7D07\u7D04\u7D06\u7F38\u7F8E\u7FBF\u8004"], + ["ad40", "\u8010\u800D\u8011\u8036\u80D6\u80E5\u80DA\u80C3\u80C4\u80CC\u80E1\u80DB\u80CE\u80DE\u80E4\u80DD\u81F4\u8222\u82E7\u8303\u8305\u82E3\u82DB\u82E6\u8304\u82E5\u8302\u8309\u82D2\u82D7\u82F1\u8301\u82DC\u82D4\u82D1\u82DE\u82D3\u82DF\u82EF\u8306\u8650\u8679\u867B\u867A\u884D\u886B\u8981\u89D4\u8A08\u8A02\u8A03\u8C9E\u8CA0\u8D74\u8D73\u8DB4\u8ECD\u8ECC\u8FF0\u8FE6\u8FE2\u8FEA\u8FE5"], + ["ada1", "\u8FED\u8FEB\u8FE4\u8FE8\u90CA\u90CE\u90C1\u90C3\u914B\u914A\u91CD\u9582\u9650\u964B\u964C\u964D\u9762\u9769\u97CB\u97ED\u97F3\u9801\u98A8\u98DB\u98DF\u9996\u9999\u4E58\u4EB3\u500C\u500D\u5023\u4FEF\u5026\u5025\u4FF8\u5029\u5016\u5006\u503C\u501F\u501A\u5012\u5011\u4FFA\u5000\u5014\u5028\u4FF1\u5021\u500B\u5019\u5018\u4FF3\u4FEE\u502D\u502A\u4FFE\u502B\u5009\u517C\u51A4\u51A5\u51A2\u51CD\u51CC\u51C6\u51CB\u5256\u525C\u5254\u525B\u525D\u532A\u537F\u539F\u539D\u53DF\u54E8\u5510\u5501\u5537\u54FC\u54E5\u54F2\u5506\u54FA\u5514\u54E9\u54ED\u54E1\u5509\u54EE\u54EA"], + ["ae40", "\u54E6\u5527\u5507\u54FD\u550F\u5703\u5704\u57C2\u57D4\u57CB\u57C3\u5809\u590F\u5957\u5958\u595A\u5A11\u5A18\u5A1C\u5A1F\u5A1B\u5A13\u59EC\u5A20\u5A23\u5A29\u5A25\u5A0C\u5A09\u5B6B\u5C58\u5BB0\u5BB3\u5BB6\u5BB4\u5BAE\u5BB5\u5BB9\u5BB8\u5C04\u5C51\u5C55\u5C50\u5CED\u5CFD\u5CFB\u5CEA\u5CE8\u5CF0\u5CF6\u5D01\u5CF4\u5DEE\u5E2D\u5E2B\u5EAB\u5EAD\u5EA7\u5F31\u5F92\u5F91\u5F90\u6059"], + ["aea1", "\u6063\u6065\u6050\u6055\u606D\u6069\u606F\u6084\u609F\u609A\u608D\u6094\u608C\u6085\u6096\u6247\u62F3\u6308\u62FF\u634E\u633E\u632F\u6355\u6342\u6346\u634F\u6349\u633A\u6350\u633D\u632A\u632B\u6328\u634D\u634C\u6548\u6549\u6599\u65C1\u65C5\u6642\u6649\u664F\u6643\u6652\u664C\u6645\u6641\u66F8\u6714\u6715\u6717\u6821\u6838\u6848\u6846\u6853\u6839\u6842\u6854\u6829\u68B3\u6817\u684C\u6851\u683D\u67F4\u6850\u6840\u683C\u6843\u682A\u6845\u6813\u6818\u6841\u6B8A\u6B89\u6BB7\u6C23\u6C27\u6C28\u6C26\u6C24\u6CF0\u6D6A\u6D95\u6D88\u6D87\u6D66\u6D78\u6D77\u6D59\u6D93"], + ["af40", "\u6D6C\u6D89\u6D6E\u6D5A\u6D74\u6D69\u6D8C\u6D8A\u6D79\u6D85\u6D65\u6D94\u70CA\u70D8\u70E4\u70D9\u70C8\u70CF\u7239\u7279\u72FC\u72F9\u72FD\u72F8\u72F7\u7386\u73ED\u7409\u73EE\u73E0\u73EA\u73DE\u7554\u755D\u755C\u755A\u7559\u75BE\u75C5\u75C7\u75B2\u75B3\u75BD\u75BC\u75B9\u75C2\u75B8\u768B\u76B0\u76CA\u76CD\u76CE\u7729\u771F\u7720\u7728\u77E9\u7830\u7827\u7838\u781D\u7834\u7837"], + ["afa1", "\u7825\u782D\u7820\u781F\u7832\u7955\u7950\u7960\u795F\u7956\u795E\u795D\u7957\u795A\u79E4\u79E3\u79E7\u79DF\u79E6\u79E9\u79D8\u7A84\u7A88\u7AD9\u7B06\u7B11\u7C89\u7D21\u7D17\u7D0B\u7D0A\u7D20\u7D22\u7D14\u7D10\u7D15\u7D1A\u7D1C\u7D0D\u7D19\u7D1B\u7F3A\u7F5F\u7F94\u7FC5\u7FC1\u8006\u8018\u8015\u8019\u8017\u803D\u803F\u80F1\u8102\u80F0\u8105\u80ED\u80F4\u8106\u80F8\u80F3\u8108\u80FD\u810A\u80FC\u80EF\u81ED\u81EC\u8200\u8210\u822A\u822B\u8228\u822C\u82BB\u832B\u8352\u8354\u834A\u8338\u8350\u8349\u8335\u8334\u834F\u8332\u8339\u8336\u8317\u8340\u8331\u8328\u8343"], + ["b040", "\u8654\u868A\u86AA\u8693\u86A4\u86A9\u868C\u86A3\u869C\u8870\u8877\u8881\u8882\u887D\u8879\u8A18\u8A10\u8A0E\u8A0C\u8A15\u8A0A\u8A17\u8A13\u8A16\u8A0F\u8A11\u8C48\u8C7A\u8C79\u8CA1\u8CA2\u8D77\u8EAC\u8ED2\u8ED4\u8ECF\u8FB1\u9001\u9006\u8FF7\u9000\u8FFA\u8FF4\u9003\u8FFD\u9005\u8FF8\u9095\u90E1\u90DD\u90E2\u9152\u914D\u914C\u91D8\u91DD\u91D7\u91DC\u91D9\u9583\u9662\u9663\u9661"], + ["b0a1", "\u965B\u965D\u9664\u9658\u965E\u96BB\u98E2\u99AC\u9AA8\u9AD8\u9B25\u9B32\u9B3C\u4E7E\u507A\u507D\u505C\u5047\u5043\u504C\u505A\u5049\u5065\u5076\u504E\u5055\u5075\u5074\u5077\u504F\u500F\u506F\u506D\u515C\u5195\u51F0\u526A\u526F\u52D2\u52D9\u52D8\u52D5\u5310\u530F\u5319\u533F\u5340\u533E\u53C3\u66FC\u5546\u556A\u5566\u5544\u555E\u5561\u5543\u554A\u5531\u5556\u554F\u5555\u552F\u5564\u5538\u552E\u555C\u552C\u5563\u5533\u5541\u5557\u5708\u570B\u5709\u57DF\u5805\u580A\u5806\u57E0\u57E4\u57FA\u5802\u5835\u57F7\u57F9\u5920\u5962\u5A36\u5A41\u5A49\u5A66\u5A6A\u5A40"], + ["b140", "\u5A3C\u5A62\u5A5A\u5A46\u5A4A\u5B70\u5BC7\u5BC5\u5BC4\u5BC2\u5BBF\u5BC6\u5C09\u5C08\u5C07\u5C60\u5C5C\u5C5D\u5D07\u5D06\u5D0E\u5D1B\u5D16\u5D22\u5D11\u5D29\u5D14\u5D19\u5D24\u5D27\u5D17\u5DE2\u5E38\u5E36\u5E33\u5E37\u5EB7\u5EB8\u5EB6\u5EB5\u5EBE\u5F35\u5F37\u5F57\u5F6C\u5F69\u5F6B\u5F97\u5F99\u5F9E\u5F98\u5FA1\u5FA0\u5F9C\u607F\u60A3\u6089\u60A0\u60A8\u60CB\u60B4\u60E6\u60BD"], + ["b1a1", "\u60C5\u60BB\u60B5\u60DC\u60BC\u60D8\u60D5\u60C6\u60DF\u60B8\u60DA\u60C7\u621A\u621B\u6248\u63A0\u63A7\u6372\u6396\u63A2\u63A5\u6377\u6367\u6398\u63AA\u6371\u63A9\u6389\u6383\u639B\u636B\u63A8\u6384\u6388\u6399\u63A1\u63AC\u6392\u638F\u6380\u637B\u6369\u6368\u637A\u655D\u6556\u6551\u6559\u6557\u555F\u654F\u6558\u6555\u6554\u659C\u659B\u65AC\u65CF\u65CB\u65CC\u65CE\u665D\u665A\u6664\u6668\u6666\u665E\u66F9\u52D7\u671B\u6881\u68AF\u68A2\u6893\u68B5\u687F\u6876\u68B1\u68A7\u6897\u68B0\u6883\u68C4\u68AD\u6886\u6885\u6894\u689D\u68A8\u689F\u68A1\u6882\u6B32\u6BBA"], + ["b240", "\u6BEB\u6BEC\u6C2B\u6D8E\u6DBC\u6DF3\u6DD9\u6DB2\u6DE1\u6DCC\u6DE4\u6DFB\u6DFA\u6E05\u6DC7\u6DCB\u6DAF\u6DD1\u6DAE\u6DDE\u6DF9\u6DB8\u6DF7\u6DF5\u6DC5\u6DD2\u6E1A\u6DB5\u6DDA\u6DEB\u6DD8\u6DEA\u6DF1\u6DEE\u6DE8\u6DC6\u6DC4\u6DAA\u6DEC\u6DBF\u6DE6\u70F9\u7109\u710A\u70FD\u70EF\u723D\u727D\u7281\u731C\u731B\u7316\u7313\u7319\u7387\u7405\u740A\u7403\u7406\u73FE\u740D\u74E0\u74F6"], + ["b2a1", "\u74F7\u751C\u7522\u7565\u7566\u7562\u7570\u758F\u75D4\u75D5\u75B5\u75CA\u75CD\u768E\u76D4\u76D2\u76DB\u7737\u773E\u773C\u7736\u7738\u773A\u786B\u7843\u784E\u7965\u7968\u796D\u79FB\u7A92\u7A95\u7B20\u7B28\u7B1B\u7B2C\u7B26\u7B19\u7B1E\u7B2E\u7C92\u7C97\u7C95\u7D46\u7D43\u7D71\u7D2E\u7D39\u7D3C\u7D40\u7D30\u7D33\u7D44\u7D2F\u7D42\u7D32\u7D31\u7F3D\u7F9E\u7F9A\u7FCC\u7FCE\u7FD2\u801C\u804A\u8046\u812F\u8116\u8123\u812B\u8129\u8130\u8124\u8202\u8235\u8237\u8236\u8239\u838E\u839E\u8398\u8378\u83A2\u8396\u83BD\u83AB\u8392\u838A\u8393\u8389\u83A0\u8377\u837B\u837C"], + ["b340", "\u8386\u83A7\u8655\u5F6A\u86C7\u86C0\u86B6\u86C4\u86B5\u86C6\u86CB\u86B1\u86AF\u86C9\u8853\u889E\u8888\u88AB\u8892\u8896\u888D\u888B\u8993\u898F\u8A2A\u8A1D\u8A23\u8A25\u8A31\u8A2D\u8A1F\u8A1B\u8A22\u8C49\u8C5A\u8CA9\u8CAC\u8CAB\u8CA8\u8CAA\u8CA7\u8D67\u8D66\u8DBE\u8DBA\u8EDB\u8EDF\u9019\u900D\u901A\u9017\u9023\u901F\u901D\u9010\u9015\u901E\u9020\u900F\u9022\u9016\u901B\u9014"], + ["b3a1", "\u90E8\u90ED\u90FD\u9157\u91CE\u91F5\u91E6\u91E3\u91E7\u91ED\u91E9\u9589\u966A\u9675\u9673\u9678\u9670\u9674\u9676\u9677\u966C\u96C0\u96EA\u96E9\u7AE0\u7ADF\u9802\u9803\u9B5A\u9CE5\u9E75\u9E7F\u9EA5\u9EBB\u50A2\u508D\u5085\u5099\u5091\u5080\u5096\u5098\u509A\u6700\u51F1\u5272\u5274\u5275\u5269\u52DE\u52DD\u52DB\u535A\u53A5\u557B\u5580\u55A7\u557C\u558A\u559D\u5598\u5582\u559C\u55AA\u5594\u5587\u558B\u5583\u55B3\u55AE\u559F\u553E\u55B2\u559A\u55BB\u55AC\u55B1\u557E\u5589\u55AB\u5599\u570D\u582F\u582A\u5834\u5824\u5830\u5831\u5821\u581D\u5820\u58F9\u58FA\u5960"], + ["b440", "\u5A77\u5A9A\u5A7F\u5A92\u5A9B\u5AA7\u5B73\u5B71\u5BD2\u5BCC\u5BD3\u5BD0\u5C0A\u5C0B\u5C31\u5D4C\u5D50\u5D34\u5D47\u5DFD\u5E45\u5E3D\u5E40\u5E43\u5E7E\u5ECA\u5EC1\u5EC2\u5EC4\u5F3C\u5F6D\u5FA9\u5FAA\u5FA8\u60D1\u60E1\u60B2\u60B6\u60E0\u611C\u6123\u60FA\u6115\u60F0\u60FB\u60F4\u6168\u60F1\u610E\u60F6\u6109\u6100\u6112\u621F\u6249\u63A3\u638C\u63CF\u63C0\u63E9\u63C9\u63C6\u63CD"], + ["b4a1", "\u63D2\u63E3\u63D0\u63E1\u63D6\u63ED\u63EE\u6376\u63F4\u63EA\u63DB\u6452\u63DA\u63F9\u655E\u6566\u6562\u6563\u6591\u6590\u65AF\u666E\u6670\u6674\u6676\u666F\u6691\u667A\u667E\u6677\u66FE\u66FF\u671F\u671D\u68FA\u68D5\u68E0\u68D8\u68D7\u6905\u68DF\u68F5\u68EE\u68E7\u68F9\u68D2\u68F2\u68E3\u68CB\u68CD\u690D\u6912\u690E\u68C9\u68DA\u696E\u68FB\u6B3E\u6B3A\u6B3D\u6B98\u6B96\u6BBC\u6BEF\u6C2E\u6C2F\u6C2C\u6E2F\u6E38\u6E54\u6E21\u6E32\u6E67\u6E4A\u6E20\u6E25\u6E23\u6E1B\u6E5B\u6E58\u6E24\u6E56\u6E6E\u6E2D\u6E26\u6E6F\u6E34\u6E4D\u6E3A\u6E2C\u6E43\u6E1D\u6E3E\u6ECB"], + ["b540", "\u6E89\u6E19\u6E4E\u6E63\u6E44\u6E72\u6E69\u6E5F\u7119\u711A\u7126\u7130\u7121\u7136\u716E\u711C\u724C\u7284\u7280\u7336\u7325\u7334\u7329\u743A\u742A\u7433\u7422\u7425\u7435\u7436\u7434\u742F\u741B\u7426\u7428\u7525\u7526\u756B\u756A\u75E2\u75DB\u75E3\u75D9\u75D8\u75DE\u75E0\u767B\u767C\u7696\u7693\u76B4\u76DC\u774F\u77ED\u785D\u786C\u786F\u7A0D\u7A08\u7A0B\u7A05\u7A00\u7A98"], + ["b5a1", "\u7A97\u7A96\u7AE5\u7AE3\u7B49\u7B56\u7B46\u7B50\u7B52\u7B54\u7B4D\u7B4B\u7B4F\u7B51\u7C9F\u7CA5\u7D5E\u7D50\u7D68\u7D55\u7D2B\u7D6E\u7D72\u7D61\u7D66\u7D62\u7D70\u7D73\u5584\u7FD4\u7FD5\u800B\u8052\u8085\u8155\u8154\u814B\u8151\u814E\u8139\u8146\u813E\u814C\u8153\u8174\u8212\u821C\u83E9\u8403\u83F8\u840D\u83E0\u83C5\u840B\u83C1\u83EF\u83F1\u83F4\u8457\u840A\u83F0\u840C\u83CC\u83FD\u83F2\u83CA\u8438\u840E\u8404\u83DC\u8407\u83D4\u83DF\u865B\u86DF\u86D9\u86ED\u86D4\u86DB\u86E4\u86D0\u86DE\u8857\u88C1\u88C2\u88B1\u8983\u8996\u8A3B\u8A60\u8A55\u8A5E\u8A3C\u8A41"], + ["b640", "\u8A54\u8A5B\u8A50\u8A46\u8A34\u8A3A\u8A36\u8A56\u8C61\u8C82\u8CAF\u8CBC\u8CB3\u8CBD\u8CC1\u8CBB\u8CC0\u8CB4\u8CB7\u8CB6\u8CBF\u8CB8\u8D8A\u8D85\u8D81\u8DCE\u8DDD\u8DCB\u8DDA\u8DD1\u8DCC\u8DDB\u8DC6\u8EFB\u8EF8\u8EFC\u8F9C\u902E\u9035\u9031\u9038\u9032\u9036\u9102\u90F5\u9109\u90FE\u9163\u9165\u91CF\u9214\u9215\u9223\u9209\u921E\u920D\u9210\u9207\u9211\u9594\u958F\u958B\u9591"], + ["b6a1", "\u9593\u9592\u958E\u968A\u968E\u968B\u967D\u9685\u9686\u968D\u9672\u9684\u96C1\u96C5\u96C4\u96C6\u96C7\u96EF\u96F2\u97CC\u9805\u9806\u9808\u98E7\u98EA\u98EF\u98E9\u98F2\u98ED\u99AE\u99AD\u9EC3\u9ECD\u9ED1\u4E82\u50AD\u50B5\u50B2\u50B3\u50C5\u50BE\u50AC\u50B7\u50BB\u50AF\u50C7\u527F\u5277\u527D\u52DF\u52E6\u52E4\u52E2\u52E3\u532F\u55DF\u55E8\u55D3\u55E6\u55CE\u55DC\u55C7\u55D1\u55E3\u55E4\u55EF\u55DA\u55E1\u55C5\u55C6\u55E5\u55C9\u5712\u5713\u585E\u5851\u5858\u5857\u585A\u5854\u586B\u584C\u586D\u584A\u5862\u5852\u584B\u5967\u5AC1\u5AC9\u5ACC\u5ABE\u5ABD\u5ABC"], + ["b740", "\u5AB3\u5AC2\u5AB2\u5D69\u5D6F\u5E4C\u5E79\u5EC9\u5EC8\u5F12\u5F59\u5FAC\u5FAE\u611A\u610F\u6148\u611F\u60F3\u611B\u60F9\u6101\u6108\u614E\u614C\u6144\u614D\u613E\u6134\u6127\u610D\u6106\u6137\u6221\u6222\u6413\u643E\u641E\u642A\u642D\u643D\u642C\u640F\u641C\u6414\u640D\u6436\u6416\u6417\u6406\u656C\u659F\u65B0\u6697\u6689\u6687\u6688\u6696\u6684\u6698\u668D\u6703\u6994\u696D"], + ["b7a1", "\u695A\u6977\u6960\u6954\u6975\u6930\u6982\u694A\u6968\u696B\u695E\u6953\u6979\u6986\u695D\u6963\u695B\u6B47\u6B72\u6BC0\u6BBF\u6BD3\u6BFD\u6EA2\u6EAF\u6ED3\u6EB6\u6EC2\u6E90\u6E9D\u6EC7\u6EC5\u6EA5\u6E98\u6EBC\u6EBA\u6EAB\u6ED1\u6E96\u6E9C\u6EC4\u6ED4\u6EAA\u6EA7\u6EB4\u714E\u7159\u7169\u7164\u7149\u7167\u715C\u716C\u7166\u714C\u7165\u715E\u7146\u7168\u7156\u723A\u7252\u7337\u7345\u733F\u733E\u746F\u745A\u7455\u745F\u745E\u7441\u743F\u7459\u745B\u745C\u7576\u7578\u7600\u75F0\u7601\u75F2\u75F1\u75FA\u75FF\u75F4\u75F3\u76DE\u76DF\u775B\u776B\u7766\u775E\u7763"], + ["b840", "\u7779\u776A\u776C\u775C\u7765\u7768\u7762\u77EE\u788E\u78B0\u7897\u7898\u788C\u7889\u787C\u7891\u7893\u787F\u797A\u797F\u7981\u842C\u79BD\u7A1C\u7A1A\u7A20\u7A14\u7A1F\u7A1E\u7A9F\u7AA0\u7B77\u7BC0\u7B60\u7B6E\u7B67\u7CB1\u7CB3\u7CB5\u7D93\u7D79\u7D91\u7D81\u7D8F\u7D5B\u7F6E\u7F69\u7F6A\u7F72\u7FA9\u7FA8\u7FA4\u8056\u8058\u8086\u8084\u8171\u8170\u8178\u8165\u816E\u8173\u816B"], + ["b8a1", "\u8179\u817A\u8166\u8205\u8247\u8482\u8477\u843D\u8431\u8475\u8466\u846B\u8449\u846C\u845B\u843C\u8435\u8461\u8463\u8469\u846D\u8446\u865E\u865C\u865F\u86F9\u8713\u8708\u8707\u8700\u86FE\u86FB\u8702\u8703\u8706\u870A\u8859\u88DF\u88D4\u88D9\u88DC\u88D8\u88DD\u88E1\u88CA\u88D5\u88D2\u899C\u89E3\u8A6B\u8A72\u8A73\u8A66\u8A69\u8A70\u8A87\u8A7C\u8A63\u8AA0\u8A71\u8A85\u8A6D\u8A62\u8A6E\u8A6C\u8A79\u8A7B\u8A3E\u8A68\u8C62\u8C8A\u8C89\u8CCA\u8CC7\u8CC8\u8CC4\u8CB2\u8CC3\u8CC2\u8CC5\u8DE1\u8DDF\u8DE8\u8DEF\u8DF3\u8DFA\u8DEA\u8DE4\u8DE6\u8EB2\u8F03\u8F09\u8EFE\u8F0A"], + ["b940", "\u8F9F\u8FB2\u904B\u904A\u9053\u9042\u9054\u903C\u9055\u9050\u9047\u904F\u904E\u904D\u9051\u903E\u9041\u9112\u9117\u916C\u916A\u9169\u91C9\u9237\u9257\u9238\u923D\u9240\u923E\u925B\u924B\u9264\u9251\u9234\u9249\u924D\u9245\u9239\u923F\u925A\u9598\u9698\u9694\u9695\u96CD\u96CB\u96C9\u96CA\u96F7\u96FB\u96F9\u96F6\u9756\u9774\u9776\u9810\u9811\u9813\u980A\u9812\u980C\u98FC\u98F4"], + ["b9a1", "\u98FD\u98FE\u99B3\u99B1\u99B4\u9AE1\u9CE9\u9E82\u9F0E\u9F13\u9F20\u50E7\u50EE\u50E5\u50D6\u50ED\u50DA\u50D5\u50CF\u50D1\u50F1\u50CE\u50E9\u5162\u51F3\u5283\u5282\u5331\u53AD\u55FE\u5600\u561B\u5617\u55FD\u5614\u5606\u5609\u560D\u560E\u55F7\u5616\u561F\u5608\u5610\u55F6\u5718\u5716\u5875\u587E\u5883\u5893\u588A\u5879\u5885\u587D\u58FD\u5925\u5922\u5924\u596A\u5969\u5AE1\u5AE6\u5AE9\u5AD7\u5AD6\u5AD8\u5AE3\u5B75\u5BDE\u5BE7\u5BE1\u5BE5\u5BE6\u5BE8\u5BE2\u5BE4\u5BDF\u5C0D\u5C62\u5D84\u5D87\u5E5B\u5E63\u5E55\u5E57\u5E54\u5ED3\u5ED6\u5F0A\u5F46\u5F70\u5FB9\u6147"], + ["ba40", "\u613F\u614B\u6177\u6162\u6163\u615F\u615A\u6158\u6175\u622A\u6487\u6458\u6454\u64A4\u6478\u645F\u647A\u6451\u6467\u6434\u646D\u647B\u6572\u65A1\u65D7\u65D6\u66A2\u66A8\u669D\u699C\u69A8\u6995\u69C1\u69AE\u69D3\u69CB\u699B\u69B7\u69BB\u69AB\u69B4\u69D0\u69CD\u69AD\u69CC\u69A6\u69C3\u69A3\u6B49\u6B4C\u6C33\u6F33\u6F14\u6EFE\u6F13\u6EF4\u6F29\u6F3E\u6F20\u6F2C\u6F0F\u6F02\u6F22"], + ["baa1", "\u6EFF\u6EEF\u6F06\u6F31\u6F38\u6F32\u6F23\u6F15\u6F2B\u6F2F\u6F88\u6F2A\u6EEC\u6F01\u6EF2\u6ECC\u6EF7\u7194\u7199\u717D\u718A\u7184\u7192\u723E\u7292\u7296\u7344\u7350\u7464\u7463\u746A\u7470\u746D\u7504\u7591\u7627\u760D\u760B\u7609\u7613\u76E1\u76E3\u7784\u777D\u777F\u7761\u78C1\u789F\u78A7\u78B3\u78A9\u78A3\u798E\u798F\u798D\u7A2E\u7A31\u7AAA\u7AA9\u7AED\u7AEF\u7BA1\u7B95\u7B8B\u7B75\u7B97\u7B9D\u7B94\u7B8F\u7BB8\u7B87\u7B84\u7CB9\u7CBD\u7CBE\u7DBB\u7DB0\u7D9C\u7DBD\u7DBE\u7DA0\u7DCA\u7DB4\u7DB2\u7DB1\u7DBA\u7DA2\u7DBF\u7DB5\u7DB8\u7DAD\u7DD2\u7DC7\u7DAC"], + ["bb40", "\u7F70\u7FE0\u7FE1\u7FDF\u805E\u805A\u8087\u8150\u8180\u818F\u8188\u818A\u817F\u8182\u81E7\u81FA\u8207\u8214\u821E\u824B\u84C9\u84BF\u84C6\u84C4\u8499\u849E\u84B2\u849C\u84CB\u84B8\u84C0\u84D3\u8490\u84BC\u84D1\u84CA\u873F\u871C\u873B\u8722\u8725\u8734\u8718\u8755\u8737\u8729\u88F3\u8902\u88F4\u88F9\u88F8\u88FD\u88E8\u891A\u88EF\u8AA6\u8A8C\u8A9E\u8AA3\u8A8D\u8AA1\u8A93\u8AA4"], + ["bba1", "\u8AAA\u8AA5\u8AA8\u8A98\u8A91\u8A9A\u8AA7\u8C6A\u8C8D\u8C8C\u8CD3\u8CD1\u8CD2\u8D6B\u8D99\u8D95\u8DFC\u8F14\u8F12\u8F15\u8F13\u8FA3\u9060\u9058\u905C\u9063\u9059\u905E\u9062\u905D\u905B\u9119\u9118\u911E\u9175\u9178\u9177\u9174\u9278\u9280\u9285\u9298\u9296\u927B\u9293\u929C\u92A8\u927C\u9291\u95A1\u95A8\u95A9\u95A3\u95A5\u95A4\u9699\u969C\u969B\u96CC\u96D2\u9700\u977C\u9785\u97F6\u9817\u9818\u98AF\u98B1\u9903\u9905\u990C\u9909\u99C1\u9AAF\u9AB0\u9AE6\u9B41\u9B42\u9CF4\u9CF6\u9CF3\u9EBC\u9F3B\u9F4A\u5104\u5100\u50FB\u50F5\u50F9\u5102\u5108\u5109\u5105\u51DC"], + ["bc40", "\u5287\u5288\u5289\u528D\u528A\u52F0\u53B2\u562E\u563B\u5639\u5632\u563F\u5634\u5629\u5653\u564E\u5657\u5674\u5636\u562F\u5630\u5880\u589F\u589E\u58B3\u589C\u58AE\u58A9\u58A6\u596D\u5B09\u5AFB\u5B0B\u5AF5\u5B0C\u5B08\u5BEE\u5BEC\u5BE9\u5BEB\u5C64\u5C65\u5D9D\u5D94\u5E62\u5E5F\u5E61\u5EE2\u5EDA\u5EDF\u5EDD\u5EE3\u5EE0\u5F48\u5F71\u5FB7\u5FB5\u6176\u6167\u616E\u615D\u6155\u6182"], + ["bca1", "\u617C\u6170\u616B\u617E\u61A7\u6190\u61AB\u618E\u61AC\u619A\u61A4\u6194\u61AE\u622E\u6469\u646F\u6479\u649E\u64B2\u6488\u6490\u64B0\u64A5\u6493\u6495\u64A9\u6492\u64AE\u64AD\u64AB\u649A\u64AC\u6499\u64A2\u64B3\u6575\u6577\u6578\u66AE\u66AB\u66B4\u66B1\u6A23\u6A1F\u69E8\u6A01\u6A1E\u6A19\u69FD\u6A21\u6A13\u6A0A\u69F3\u6A02\u6A05\u69ED\u6A11\u6B50\u6B4E\u6BA4\u6BC5\u6BC6\u6F3F\u6F7C\u6F84\u6F51\u6F66\u6F54\u6F86\u6F6D\u6F5B\u6F78\u6F6E\u6F8E\u6F7A\u6F70\u6F64\u6F97\u6F58\u6ED5\u6F6F\u6F60\u6F5F\u719F\u71AC\u71B1\u71A8\u7256\u729B\u734E\u7357\u7469\u748B\u7483"], + ["bd40", "\u747E\u7480\u757F\u7620\u7629\u761F\u7624\u7626\u7621\u7622\u769A\u76BA\u76E4\u778E\u7787\u778C\u7791\u778B\u78CB\u78C5\u78BA\u78CA\u78BE\u78D5\u78BC\u78D0\u7A3F\u7A3C\u7A40\u7A3D\u7A37\u7A3B\u7AAF\u7AAE\u7BAD\u7BB1\u7BC4\u7BB4\u7BC6\u7BC7\u7BC1\u7BA0\u7BCC\u7CCA\u7DE0\u7DF4\u7DEF\u7DFB\u7DD8\u7DEC\u7DDD\u7DE8\u7DE3\u7DDA\u7DDE\u7DE9\u7D9E\u7DD9\u7DF2\u7DF9\u7F75\u7F77\u7FAF"], + ["bda1", "\u7FE9\u8026\u819B\u819C\u819D\u81A0\u819A\u8198\u8517\u853D\u851A\u84EE\u852C\u852D\u8513\u8511\u8523\u8521\u8514\u84EC\u8525\u84FF\u8506\u8782\u8774\u8776\u8760\u8766\u8778\u8768\u8759\u8757\u874C\u8753\u885B\u885D\u8910\u8907\u8912\u8913\u8915\u890A\u8ABC\u8AD2\u8AC7\u8AC4\u8A95\u8ACB\u8AF8\u8AB2\u8AC9\u8AC2\u8ABF\u8AB0\u8AD6\u8ACD\u8AB6\u8AB9\u8ADB\u8C4C\u8C4E\u8C6C\u8CE0\u8CDE\u8CE6\u8CE4\u8CEC\u8CED\u8CE2\u8CE3\u8CDC\u8CEA\u8CE1\u8D6D\u8D9F\u8DA3\u8E2B\u8E10\u8E1D\u8E22\u8E0F\u8E29\u8E1F\u8E21\u8E1E\u8EBA\u8F1D\u8F1B\u8F1F\u8F29\u8F26\u8F2A\u8F1C\u8F1E"], + ["be40", "\u8F25\u9069\u906E\u9068\u906D\u9077\u9130\u912D\u9127\u9131\u9187\u9189\u918B\u9183\u92C5\u92BB\u92B7\u92EA\u92AC\u92E4\u92C1\u92B3\u92BC\u92D2\u92C7\u92F0\u92B2\u95AD\u95B1\u9704\u9706\u9707\u9709\u9760\u978D\u978B\u978F\u9821\u982B\u981C\u98B3\u990A\u9913\u9912\u9918\u99DD\u99D0\u99DF\u99DB\u99D1\u99D5\u99D2\u99D9\u9AB7\u9AEE\u9AEF\u9B27\u9B45\u9B44\u9B77\u9B6F\u9D06\u9D09"], + ["bea1", "\u9D03\u9EA9\u9EBE\u9ECE\u58A8\u9F52\u5112\u5118\u5114\u5110\u5115\u5180\u51AA\u51DD\u5291\u5293\u52F3\u5659\u566B\u5679\u5669\u5664\u5678\u566A\u5668\u5665\u5671\u566F\u566C\u5662\u5676\u58C1\u58BE\u58C7\u58C5\u596E\u5B1D\u5B34\u5B78\u5BF0\u5C0E\u5F4A\u61B2\u6191\u61A9\u618A\u61CD\u61B6\u61BE\u61CA\u61C8\u6230\u64C5\u64C1\u64CB\u64BB\u64BC\u64DA\u64C4\u64C7\u64C2\u64CD\u64BF\u64D2\u64D4\u64BE\u6574\u66C6\u66C9\u66B9\u66C4\u66C7\u66B8\u6A3D\u6A38\u6A3A\u6A59\u6A6B\u6A58\u6A39\u6A44\u6A62\u6A61\u6A4B\u6A47\u6A35\u6A5F\u6A48\u6B59\u6B77\u6C05\u6FC2\u6FB1\u6FA1"], + ["bf40", "\u6FC3\u6FA4\u6FC1\u6FA7\u6FB3\u6FC0\u6FB9\u6FB6\u6FA6\u6FA0\u6FB4\u71BE\u71C9\u71D0\u71D2\u71C8\u71D5\u71B9\u71CE\u71D9\u71DC\u71C3\u71C4\u7368\u749C\u74A3\u7498\u749F\u749E\u74E2\u750C\u750D\u7634\u7638\u763A\u76E7\u76E5\u77A0\u779E\u779F\u77A5\u78E8\u78DA\u78EC\u78E7\u79A6\u7A4D\u7A4E\u7A46\u7A4C\u7A4B\u7ABA\u7BD9\u7C11\u7BC9\u7BE4\u7BDB\u7BE1\u7BE9\u7BE6\u7CD5\u7CD6\u7E0A"], + ["bfa1", "\u7E11\u7E08\u7E1B\u7E23\u7E1E\u7E1D\u7E09\u7E10\u7F79\u7FB2\u7FF0\u7FF1\u7FEE\u8028\u81B3\u81A9\u81A8\u81FB\u8208\u8258\u8259\u854A\u8559\u8548\u8568\u8569\u8543\u8549\u856D\u856A\u855E\u8783\u879F\u879E\u87A2\u878D\u8861\u892A\u8932\u8925\u892B\u8921\u89AA\u89A6\u8AE6\u8AFA\u8AEB\u8AF1\u8B00\u8ADC\u8AE7\u8AEE\u8AFE\u8B01\u8B02\u8AF7\u8AED\u8AF3\u8AF6\u8AFC\u8C6B\u8C6D\u8C93\u8CF4\u8E44\u8E31\u8E34\u8E42\u8E39\u8E35\u8F3B\u8F2F\u8F38\u8F33\u8FA8\u8FA6\u9075\u9074\u9078\u9072\u907C\u907A\u9134\u9192\u9320\u9336\u92F8\u9333\u932F\u9322\u92FC\u932B\u9304\u931A"], + ["c040", "\u9310\u9326\u9321\u9315\u932E\u9319\u95BB\u96A7\u96A8\u96AA\u96D5\u970E\u9711\u9716\u970D\u9713\u970F\u975B\u975C\u9766\u9798\u9830\u9838\u983B\u9837\u982D\u9839\u9824\u9910\u9928\u991E\u991B\u9921\u991A\u99ED\u99E2\u99F1\u9AB8\u9ABC\u9AFB\u9AED\u9B28\u9B91\u9D15\u9D23\u9D26\u9D28\u9D12\u9D1B\u9ED8\u9ED4\u9F8D\u9F9C\u512A\u511F\u5121\u5132\u52F5\u568E\u5680\u5690\u5685\u5687"], + ["c0a1", "\u568F\u58D5\u58D3\u58D1\u58CE\u5B30\u5B2A\u5B24\u5B7A\u5C37\u5C68\u5DBC\u5DBA\u5DBD\u5DB8\u5E6B\u5F4C\u5FBD\u61C9\u61C2\u61C7\u61E6\u61CB\u6232\u6234\u64CE\u64CA\u64D8\u64E0\u64F0\u64E6\u64EC\u64F1\u64E2\u64ED\u6582\u6583\u66D9\u66D6\u6A80\u6A94\u6A84\u6AA2\u6A9C\u6ADB\u6AA3\u6A7E\u6A97\u6A90\u6AA0\u6B5C\u6BAE\u6BDA\u6C08\u6FD8\u6FF1\u6FDF\u6FE0\u6FDB\u6FE4\u6FEB\u6FEF\u6F80\u6FEC\u6FE1\u6FE9\u6FD5\u6FEE\u6FF0\u71E7\u71DF\u71EE\u71E6\u71E5\u71ED\u71EC\u71F4\u71E0\u7235\u7246\u7370\u7372\u74A9\u74B0\u74A6\u74A8\u7646\u7642\u764C\u76EA\u77B3\u77AA\u77B0\u77AC"], + ["c140", "\u77A7\u77AD\u77EF\u78F7\u78FA\u78F4\u78EF\u7901\u79A7\u79AA\u7A57\u7ABF\u7C07\u7C0D\u7BFE\u7BF7\u7C0C\u7BE0\u7CE0\u7CDC\u7CDE\u7CE2\u7CDF\u7CD9\u7CDD\u7E2E\u7E3E\u7E46\u7E37\u7E32\u7E43\u7E2B\u7E3D\u7E31\u7E45\u7E41\u7E34\u7E39\u7E48\u7E35\u7E3F\u7E2F\u7F44\u7FF3\u7FFC\u8071\u8072\u8070\u806F\u8073\u81C6\u81C3\u81BA\u81C2\u81C0\u81BF\u81BD\u81C9\u81BE\u81E8\u8209\u8271\u85AA"], + ["c1a1", "\u8584\u857E\u859C\u8591\u8594\u85AF\u859B\u8587\u85A8\u858A\u8667\u87C0\u87D1\u87B3\u87D2\u87C6\u87AB\u87BB\u87BA\u87C8\u87CB\u893B\u8936\u8944\u8938\u893D\u89AC\u8B0E\u8B17\u8B19\u8B1B\u8B0A\u8B20\u8B1D\u8B04\u8B10\u8C41\u8C3F\u8C73\u8CFA\u8CFD\u8CFC\u8CF8\u8CFB\u8DA8\u8E49\u8E4B\u8E48\u8E4A\u8F44\u8F3E\u8F42\u8F45\u8F3F\u907F\u907D\u9084\u9081\u9082\u9080\u9139\u91A3\u919E\u919C\u934D\u9382\u9328\u9375\u934A\u9365\u934B\u9318\u937E\u936C\u935B\u9370\u935A\u9354\u95CA\u95CB\u95CC\u95C8\u95C6\u96B1\u96B8\u96D6\u971C\u971E\u97A0\u97D3\u9846\u98B6\u9935\u9A01"], + ["c240", "\u99FF\u9BAE\u9BAB\u9BAA\u9BAD\u9D3B\u9D3F\u9E8B\u9ECF\u9EDE\u9EDC\u9EDD\u9EDB\u9F3E\u9F4B\u53E2\u5695\u56AE\u58D9\u58D8\u5B38\u5F5D\u61E3\u6233\u64F4\u64F2\u64FE\u6506\u64FA\u64FB\u64F7\u65B7\u66DC\u6726\u6AB3\u6AAC\u6AC3\u6ABB\u6AB8\u6AC2\u6AAE\u6AAF\u6B5F\u6B78\u6BAF\u7009\u700B\u6FFE\u7006\u6FFA\u7011\u700F\u71FB\u71FC\u71FE\u71F8\u7377\u7375\u74A7\u74BF\u7515\u7656\u7658"], + ["c2a1", "\u7652\u77BD\u77BF\u77BB\u77BC\u790E\u79AE\u7A61\u7A62\u7A60\u7AC4\u7AC5\u7C2B\u7C27\u7C2A\u7C1E\u7C23\u7C21\u7CE7\u7E54\u7E55\u7E5E\u7E5A\u7E61\u7E52\u7E59\u7F48\u7FF9\u7FFB\u8077\u8076\u81CD\u81CF\u820A\u85CF\u85A9\u85CD\u85D0\u85C9\u85B0\u85BA\u85B9\u85A6\u87EF\u87EC\u87F2\u87E0\u8986\u89B2\u89F4\u8B28\u8B39\u8B2C\u8B2B\u8C50\u8D05\u8E59\u8E63\u8E66\u8E64\u8E5F\u8E55\u8EC0\u8F49\u8F4D\u9087\u9083\u9088\u91AB\u91AC\u91D0\u9394\u938A\u9396\u93A2\u93B3\u93AE\u93AC\u93B0\u9398\u939A\u9397\u95D4\u95D6\u95D0\u95D5\u96E2\u96DC\u96D9\u96DB\u96DE\u9724\u97A3\u97A6"], + ["c340", "\u97AD\u97F9\u984D\u984F\u984C\u984E\u9853\u98BA\u993E\u993F\u993D\u992E\u99A5\u9A0E\u9AC1\u9B03\u9B06\u9B4F\u9B4E\u9B4D\u9BCA\u9BC9\u9BFD\u9BC8\u9BC0\u9D51\u9D5D\u9D60\u9EE0\u9F15\u9F2C\u5133\u56A5\u58DE\u58DF\u58E2\u5BF5\u9F90\u5EEC\u61F2\u61F7\u61F6\u61F5\u6500\u650F\u66E0\u66DD\u6AE5\u6ADD\u6ADA\u6AD3\u701B\u701F\u7028\u701A\u701D\u7015\u7018\u7206\u720D\u7258\u72A2\u7378"], + ["c3a1", "\u737A\u74BD\u74CA\u74E3\u7587\u7586\u765F\u7661\u77C7\u7919\u79B1\u7A6B\u7A69\u7C3E\u7C3F\u7C38\u7C3D\u7C37\u7C40\u7E6B\u7E6D\u7E79\u7E69\u7E6A\u7F85\u7E73\u7FB6\u7FB9\u7FB8\u81D8\u85E9\u85DD\u85EA\u85D5\u85E4\u85E5\u85F7\u87FB\u8805\u880D\u87F9\u87FE\u8960\u895F\u8956\u895E\u8B41\u8B5C\u8B58\u8B49\u8B5A\u8B4E\u8B4F\u8B46\u8B59\u8D08\u8D0A\u8E7C\u8E72\u8E87\u8E76\u8E6C\u8E7A\u8E74\u8F54\u8F4E\u8FAD\u908A\u908B\u91B1\u91AE\u93E1\u93D1\u93DF\u93C3\u93C8\u93DC\u93DD\u93D6\u93E2\u93CD\u93D8\u93E4\u93D7\u93E8\u95DC\u96B4\u96E3\u972A\u9727\u9761\u97DC\u97FB\u985E"], + ["c440", "\u9858\u985B\u98BC\u9945\u9949\u9A16\u9A19\u9B0D\u9BE8\u9BE7\u9BD6\u9BDB\u9D89\u9D61\u9D72\u9D6A\u9D6C\u9E92\u9E97\u9E93\u9EB4\u52F8\u56A8\u56B7\u56B6\u56B4\u56BC\u58E4\u5B40\u5B43\u5B7D\u5BF6\u5DC9\u61F8\u61FA\u6518\u6514\u6519\u66E6\u6727\u6AEC\u703E\u7030\u7032\u7210\u737B\u74CF\u7662\u7665\u7926\u792A\u792C\u792B\u7AC7\u7AF6\u7C4C\u7C43\u7C4D\u7CEF\u7CF0\u8FAE\u7E7D\u7E7C"], + ["c4a1", "\u7E82\u7F4C\u8000\u81DA\u8266\u85FB\u85F9\u8611\u85FA\u8606\u860B\u8607\u860A\u8814\u8815\u8964\u89BA\u89F8\u8B70\u8B6C\u8B66\u8B6F\u8B5F\u8B6B\u8D0F\u8D0D\u8E89\u8E81\u8E85\u8E82\u91B4\u91CB\u9418\u9403\u93FD\u95E1\u9730\u98C4\u9952\u9951\u99A8\u9A2B\u9A30\u9A37\u9A35\u9C13\u9C0D\u9E79\u9EB5\u9EE8\u9F2F\u9F5F\u9F63\u9F61\u5137\u5138\u56C1\u56C0\u56C2\u5914\u5C6C\u5DCD\u61FC\u61FE\u651D\u651C\u6595\u66E9\u6AFB\u6B04\u6AFA\u6BB2\u704C\u721B\u72A7\u74D6\u74D4\u7669\u77D3\u7C50\u7E8F\u7E8C\u7FBC\u8617\u862D\u861A\u8823\u8822\u8821\u881F\u896A\u896C\u89BD\u8B74"], + ["c540", "\u8B77\u8B7D\u8D13\u8E8A\u8E8D\u8E8B\u8F5F\u8FAF\u91BA\u942E\u9433\u9435\u943A\u9438\u9432\u942B\u95E2\u9738\u9739\u9732\u97FF\u9867\u9865\u9957\u9A45\u9A43\u9A40\u9A3E\u9ACF\u9B54\u9B51\u9C2D\u9C25\u9DAF\u9DB4\u9DC2\u9DB8\u9E9D\u9EEF\u9F19\u9F5C\u9F66\u9F67\u513C\u513B\u56C8\u56CA\u56C9\u5B7F\u5DD4\u5DD2\u5F4E\u61FF\u6524\u6B0A\u6B61\u7051\u7058\u7380\u74E4\u758A\u766E\u766C"], + ["c5a1", "\u79B3\u7C60\u7C5F\u807E\u807D\u81DF\u8972\u896F\u89FC\u8B80\u8D16\u8D17\u8E91\u8E93\u8F61\u9148\u9444\u9451\u9452\u973D\u973E\u97C3\u97C1\u986B\u9955\u9A55\u9A4D\u9AD2\u9B1A\u9C49\u9C31\u9C3E\u9C3B\u9DD3\u9DD7\u9F34\u9F6C\u9F6A\u9F94\u56CC\u5DD6\u6200\u6523\u652B\u652A\u66EC\u6B10\u74DA\u7ACA\u7C64\u7C63\u7C65\u7E93\u7E96\u7E94\u81E2\u8638\u863F\u8831\u8B8A\u9090\u908F\u9463\u9460\u9464\u9768\u986F\u995C\u9A5A\u9A5B\u9A57\u9AD3\u9AD4\u9AD1\u9C54\u9C57\u9C56\u9DE5\u9E9F\u9EF4\u56D1\u58E9\u652C\u705E\u7671\u7672\u77D7\u7F50\u7F88\u8836\u8839\u8862\u8B93\u8B92"], + ["c640", "\u8B96\u8277\u8D1B\u91C0\u946A\u9742\u9748\u9744\u97C6\u9870\u9A5F\u9B22\u9B58\u9C5F\u9DF9\u9DFA\u9E7C\u9E7D\u9F07\u9F77\u9F72\u5EF3\u6B16\u7063\u7C6C\u7C6E\u883B\u89C0\u8EA1\u91C1\u9472\u9470\u9871\u995E\u9AD6\u9B23\u9ECC\u7064\u77DA\u8B9A\u9477\u97C9\u9A62\u9A65\u7E9C\u8B9C\u8EAA\u91C5\u947D\u947E\u947C\u9C77\u9C78\u9EF7\u8C54\u947F\u9E1A\u7228\u9A6A\u9B31\u9E1B\u9E1E\u7C72"], + ["c940", "\u4E42\u4E5C\u51F5\u531A\u5382\u4E07\u4E0C\u4E47\u4E8D\u56D7\uFA0C\u5C6E\u5F73\u4E0F\u5187\u4E0E\u4E2E\u4E93\u4EC2\u4EC9\u4EC8\u5198\u52FC\u536C\u53B9\u5720\u5903\u592C\u5C10\u5DFF\u65E1\u6BB3\u6BCC\u6C14\u723F\u4E31\u4E3C\u4EE8\u4EDC\u4EE9\u4EE1\u4EDD\u4EDA\u520C\u531C\u534C\u5722\u5723\u5917\u592F\u5B81\u5B84\u5C12\u5C3B\u5C74\u5C73\u5E04\u5E80\u5E82\u5FC9\u6209\u6250\u6C15"], + ["c9a1", "\u6C36\u6C43\u6C3F\u6C3B\u72AE\u72B0\u738A\u79B8\u808A\u961E\u4F0E\u4F18\u4F2C\u4EF5\u4F14\u4EF1\u4F00\u4EF7\u4F08\u4F1D\u4F02\u4F05\u4F22\u4F13\u4F04\u4EF4\u4F12\u51B1\u5213\u5209\u5210\u52A6\u5322\u531F\u534D\u538A\u5407\u56E1\u56DF\u572E\u572A\u5734\u593C\u5980\u597C\u5985\u597B\u597E\u5977\u597F\u5B56\u5C15\u5C25\u5C7C\u5C7A\u5C7B\u5C7E\u5DDF\u5E75\u5E84\u5F02\u5F1A\u5F74\u5FD5\u5FD4\u5FCF\u625C\u625E\u6264\u6261\u6266\u6262\u6259\u6260\u625A\u6265\u65EF\u65EE\u673E\u6739\u6738\u673B\u673A\u673F\u673C\u6733\u6C18\u6C46\u6C52\u6C5C\u6C4F\u6C4A\u6C54\u6C4B"], + ["ca40", "\u6C4C\u7071\u725E\u72B4\u72B5\u738E\u752A\u767F\u7A75\u7F51\u8278\u827C\u8280\u827D\u827F\u864D\u897E\u9099\u9097\u9098\u909B\u9094\u9622\u9624\u9620\u9623\u4F56\u4F3B\u4F62\u4F49\u4F53\u4F64\u4F3E\u4F67\u4F52\u4F5F\u4F41\u4F58\u4F2D\u4F33\u4F3F\u4F61\u518F\u51B9\u521C\u521E\u5221\u52AD\u52AE\u5309\u5363\u5372\u538E\u538F\u5430\u5437\u542A\u5454\u5445\u5419\u541C\u5425\u5418"], + ["caa1", "\u543D\u544F\u5441\u5428\u5424\u5447\u56EE\u56E7\u56E5\u5741\u5745\u574C\u5749\u574B\u5752\u5906\u5940\u59A6\u5998\u59A0\u5997\u598E\u59A2\u5990\u598F\u59A7\u59A1\u5B8E\u5B92\u5C28\u5C2A\u5C8D\u5C8F\u5C88\u5C8B\u5C89\u5C92\u5C8A\u5C86\u5C93\u5C95\u5DE0\u5E0A\u5E0E\u5E8B\u5E89\u5E8C\u5E88\u5E8D\u5F05\u5F1D\u5F78\u5F76\u5FD2\u5FD1\u5FD0\u5FED\u5FE8\u5FEE\u5FF3\u5FE1\u5FE4\u5FE3\u5FFA\u5FEF\u5FF7\u5FFB\u6000\u5FF4\u623A\u6283\u628C\u628E\u628F\u6294\u6287\u6271\u627B\u627A\u6270\u6281\u6288\u6277\u627D\u6272\u6274\u6537\u65F0\u65F4\u65F3\u65F2\u65F5\u6745\u6747"], + ["cb40", "\u6759\u6755\u674C\u6748\u675D\u674D\u675A\u674B\u6BD0\u6C19\u6C1A\u6C78\u6C67\u6C6B\u6C84\u6C8B\u6C8F\u6C71\u6C6F\u6C69\u6C9A\u6C6D\u6C87\u6C95\u6C9C\u6C66\u6C73\u6C65\u6C7B\u6C8E\u7074\u707A\u7263\u72BF\u72BD\u72C3\u72C6\u72C1\u72BA\u72C5\u7395\u7397\u7393\u7394\u7392\u753A\u7539\u7594\u7595\u7681\u793D\u8034\u8095\u8099\u8090\u8092\u809C\u8290\u828F\u8285\u828E\u8291\u8293"], + ["cba1", "\u828A\u8283\u8284\u8C78\u8FC9\u8FBF\u909F\u90A1\u90A5\u909E\u90A7\u90A0\u9630\u9628\u962F\u962D\u4E33\u4F98\u4F7C\u4F85\u4F7D\u4F80\u4F87\u4F76\u4F74\u4F89\u4F84\u4F77\u4F4C\u4F97\u4F6A\u4F9A\u4F79\u4F81\u4F78\u4F90\u4F9C\u4F94\u4F9E\u4F92\u4F82\u4F95\u4F6B\u4F6E\u519E\u51BC\u51BE\u5235\u5232\u5233\u5246\u5231\u52BC\u530A\u530B\u533C\u5392\u5394\u5487\u547F\u5481\u5491\u5482\u5488\u546B\u547A\u547E\u5465\u546C\u5474\u5466\u548D\u546F\u5461\u5460\u5498\u5463\u5467\u5464\u56F7\u56F9\u576F\u5772\u576D\u576B\u5771\u5770\u5776\u5780\u5775\u577B\u5773\u5774\u5762"], + ["cc40", "\u5768\u577D\u590C\u5945\u59B5\u59BA\u59CF\u59CE\u59B2\u59CC\u59C1\u59B6\u59BC\u59C3\u59D6\u59B1\u59BD\u59C0\u59C8\u59B4\u59C7\u5B62\u5B65\u5B93\u5B95\u5C44\u5C47\u5CAE\u5CA4\u5CA0\u5CB5\u5CAF\u5CA8\u5CAC\u5C9F\u5CA3\u5CAD\u5CA2\u5CAA\u5CA7\u5C9D\u5CA5\u5CB6\u5CB0\u5CA6\u5E17\u5E14\u5E19\u5F28\u5F22\u5F23\u5F24\u5F54\u5F82\u5F7E\u5F7D\u5FDE\u5FE5\u602D\u6026\u6019\u6032\u600B"], + ["cca1", "\u6034\u600A\u6017\u6033\u601A\u601E\u602C\u6022\u600D\u6010\u602E\u6013\u6011\u600C\u6009\u601C\u6214\u623D\u62AD\u62B4\u62D1\u62BE\u62AA\u62B6\u62CA\u62AE\u62B3\u62AF\u62BB\u62A9\u62B0\u62B8\u653D\u65A8\u65BB\u6609\u65FC\u6604\u6612\u6608\u65FB\u6603\u660B\u660D\u6605\u65FD\u6611\u6610\u66F6\u670A\u6785\u676C\u678E\u6792\u6776\u677B\u6798\u6786\u6784\u6774\u678D\u678C\u677A\u679F\u6791\u6799\u6783\u677D\u6781\u6778\u6779\u6794\u6B25\u6B80\u6B7E\u6BDE\u6C1D\u6C93\u6CEC\u6CEB\u6CEE\u6CD9\u6CB6\u6CD4\u6CAD\u6CE7\u6CB7\u6CD0\u6CC2\u6CBA\u6CC3\u6CC6\u6CED\u6CF2"], + ["cd40", "\u6CD2\u6CDD\u6CB4\u6C8A\u6C9D\u6C80\u6CDE\u6CC0\u6D30\u6CCD\u6CC7\u6CB0\u6CF9\u6CCF\u6CE9\u6CD1\u7094\u7098\u7085\u7093\u7086\u7084\u7091\u7096\u7082\u709A\u7083\u726A\u72D6\u72CB\u72D8\u72C9\u72DC\u72D2\u72D4\u72DA\u72CC\u72D1\u73A4\u73A1\u73AD\u73A6\u73A2\u73A0\u73AC\u739D\u74DD\u74E8\u753F\u7540\u753E\u758C\u7598\u76AF\u76F3\u76F1\u76F0\u76F5\u77F8\u77FC\u77F9\u77FB\u77FA"], + ["cda1", "\u77F7\u7942\u793F\u79C5\u7A78\u7A7B\u7AFB\u7C75\u7CFD\u8035\u808F\u80AE\u80A3\u80B8\u80B5\u80AD\u8220\u82A0\u82C0\u82AB\u829A\u8298\u829B\u82B5\u82A7\u82AE\u82BC\u829E\u82BA\u82B4\u82A8\u82A1\u82A9\u82C2\u82A4\u82C3\u82B6\u82A2\u8670\u866F\u866D\u866E\u8C56\u8FD2\u8FCB\u8FD3\u8FCD\u8FD6\u8FD5\u8FD7\u90B2\u90B4\u90AF\u90B3\u90B0\u9639\u963D\u963C\u963A\u9643\u4FCD\u4FC5\u4FD3\u4FB2\u4FC9\u4FCB\u4FC1\u4FD4\u4FDC\u4FD9\u4FBB\u4FB3\u4FDB\u4FC7\u4FD6\u4FBA\u4FC0\u4FB9\u4FEC\u5244\u5249\u52C0\u52C2\u533D\u537C\u5397\u5396\u5399\u5398\u54BA\u54A1\u54AD\u54A5\u54CF"], + ["ce40", "\u54C3\u830D\u54B7\u54AE\u54D6\u54B6\u54C5\u54C6\u54A0\u5470\u54BC\u54A2\u54BE\u5472\u54DE\u54B0\u57B5\u579E\u579F\u57A4\u578C\u5797\u579D\u579B\u5794\u5798\u578F\u5799\u57A5\u579A\u5795\u58F4\u590D\u5953\u59E1\u59DE\u59EE\u5A00\u59F1\u59DD\u59FA\u59FD\u59FC\u59F6\u59E4\u59F2\u59F7\u59DB\u59E9\u59F3\u59F5\u59E0\u59FE\u59F4\u59ED\u5BA8\u5C4C\u5CD0\u5CD8\u5CCC\u5CD7\u5CCB\u5CDB"], + ["cea1", "\u5CDE\u5CDA\u5CC9\u5CC7\u5CCA\u5CD6\u5CD3\u5CD4\u5CCF\u5CC8\u5CC6\u5CCE\u5CDF\u5CF8\u5DF9\u5E21\u5E22\u5E23\u5E20\u5E24\u5EB0\u5EA4\u5EA2\u5E9B\u5EA3\u5EA5\u5F07\u5F2E\u5F56\u5F86\u6037\u6039\u6054\u6072\u605E\u6045\u6053\u6047\u6049\u605B\u604C\u6040\u6042\u605F\u6024\u6044\u6058\u6066\u606E\u6242\u6243\u62CF\u630D\u630B\u62F5\u630E\u6303\u62EB\u62F9\u630F\u630C\u62F8\u62F6\u6300\u6313\u6314\u62FA\u6315\u62FB\u62F0\u6541\u6543\u65AA\u65BF\u6636\u6621\u6632\u6635\u661C\u6626\u6622\u6633\u662B\u663A\u661D\u6634\u6639\u662E\u670F\u6710\u67C1\u67F2\u67C8\u67BA"], + ["cf40", "\u67DC\u67BB\u67F8\u67D8\u67C0\u67B7\u67C5\u67EB\u67E4\u67DF\u67B5\u67CD\u67B3\u67F7\u67F6\u67EE\u67E3\u67C2\u67B9\u67CE\u67E7\u67F0\u67B2\u67FC\u67C6\u67ED\u67CC\u67AE\u67E6\u67DB\u67FA\u67C9\u67CA\u67C3\u67EA\u67CB\u6B28\u6B82\u6B84\u6BB6\u6BD6\u6BD8\u6BE0\u6C20\u6C21\u6D28\u6D34\u6D2D\u6D1F\u6D3C\u6D3F\u6D12\u6D0A\u6CDA\u6D33\u6D04\u6D19\u6D3A\u6D1A\u6D11\u6D00\u6D1D\u6D42"], + ["cfa1", "\u6D01\u6D18\u6D37\u6D03\u6D0F\u6D40\u6D07\u6D20\u6D2C\u6D08\u6D22\u6D09\u6D10\u70B7\u709F\u70BE\u70B1\u70B0\u70A1\u70B4\u70B5\u70A9\u7241\u7249\u724A\u726C\u7270\u7273\u726E\u72CA\u72E4\u72E8\u72EB\u72DF\u72EA\u72E6\u72E3\u7385\u73CC\u73C2\u73C8\u73C5\u73B9\u73B6\u73B5\u73B4\u73EB\u73BF\u73C7\u73BE\u73C3\u73C6\u73B8\u73CB\u74EC\u74EE\u752E\u7547\u7548\u75A7\u75AA\u7679\u76C4\u7708\u7703\u7704\u7705\u770A\u76F7\u76FB\u76FA\u77E7\u77E8\u7806\u7811\u7812\u7805\u7810\u780F\u780E\u7809\u7803\u7813\u794A\u794C\u794B\u7945\u7944\u79D5\u79CD\u79CF\u79D6\u79CE\u7A80"], + ["d040", "\u7A7E\u7AD1\u7B00\u7B01\u7C7A\u7C78\u7C79\u7C7F\u7C80\u7C81\u7D03\u7D08\u7D01\u7F58\u7F91\u7F8D\u7FBE\u8007\u800E\u800F\u8014\u8037\u80D8\u80C7\u80E0\u80D1\u80C8\u80C2\u80D0\u80C5\u80E3\u80D9\u80DC\u80CA\u80D5\u80C9\u80CF\u80D7\u80E6\u80CD\u81FF\u8221\u8294\u82D9\u82FE\u82F9\u8307\u82E8\u8300\u82D5\u833A\u82EB\u82D6\u82F4\u82EC\u82E1\u82F2\u82F5\u830C\u82FB\u82F6\u82F0\u82EA"], + ["d0a1", "\u82E4\u82E0\u82FA\u82F3\u82ED\u8677\u8674\u867C\u8673\u8841\u884E\u8867\u886A\u8869\u89D3\u8A04\u8A07\u8D72\u8FE3\u8FE1\u8FEE\u8FE0\u90F1\u90BD\u90BF\u90D5\u90C5\u90BE\u90C7\u90CB\u90C8\u91D4\u91D3\u9654\u964F\u9651\u9653\u964A\u964E\u501E\u5005\u5007\u5013\u5022\u5030\u501B\u4FF5\u4FF4\u5033\u5037\u502C\u4FF6\u4FF7\u5017\u501C\u5020\u5027\u5035\u502F\u5031\u500E\u515A\u5194\u5193\u51CA\u51C4\u51C5\u51C8\u51CE\u5261\u525A\u5252\u525E\u525F\u5255\u5262\u52CD\u530E\u539E\u5526\u54E2\u5517\u5512\u54E7\u54F3\u54E4\u551A\u54FF\u5504\u5508\u54EB\u5511\u5505\u54F1"], + ["d140", "\u550A\u54FB\u54F7\u54F8\u54E0\u550E\u5503\u550B\u5701\u5702\u57CC\u5832\u57D5\u57D2\u57BA\u57C6\u57BD\u57BC\u57B8\u57B6\u57BF\u57C7\u57D0\u57B9\u57C1\u590E\u594A\u5A19\u5A16\u5A2D\u5A2E\u5A15\u5A0F\u5A17\u5A0A\u5A1E\u5A33\u5B6C\u5BA7\u5BAD\u5BAC\u5C03\u5C56\u5C54\u5CEC\u5CFF\u5CEE\u5CF1\u5CF7\u5D00\u5CF9\u5E29\u5E28\u5EA8\u5EAE\u5EAA\u5EAC\u5F33\u5F30\u5F67\u605D\u605A\u6067"], + ["d1a1", "\u6041\u60A2\u6088\u6080\u6092\u6081\u609D\u6083\u6095\u609B\u6097\u6087\u609C\u608E\u6219\u6246\u62F2\u6310\u6356\u632C\u6344\u6345\u6336\u6343\u63E4\u6339\u634B\u634A\u633C\u6329\u6341\u6334\u6358\u6354\u6359\u632D\u6347\u6333\u635A\u6351\u6338\u6357\u6340\u6348\u654A\u6546\u65C6\u65C3\u65C4\u65C2\u664A\u665F\u6647\u6651\u6712\u6713\u681F\u681A\u6849\u6832\u6833\u683B\u684B\u684F\u6816\u6831\u681C\u6835\u682B\u682D\u682F\u684E\u6844\u6834\u681D\u6812\u6814\u6826\u6828\u682E\u684D\u683A\u6825\u6820\u6B2C\u6B2F\u6B2D\u6B31\u6B34\u6B6D\u8082\u6B88\u6BE6\u6BE4"], + ["d240", "\u6BE8\u6BE3\u6BE2\u6BE7\u6C25\u6D7A\u6D63\u6D64\u6D76\u6D0D\u6D61\u6D92\u6D58\u6D62\u6D6D\u6D6F\u6D91\u6D8D\u6DEF\u6D7F\u6D86\u6D5E\u6D67\u6D60\u6D97\u6D70\u6D7C\u6D5F\u6D82\u6D98\u6D2F\u6D68\u6D8B\u6D7E\u6D80\u6D84\u6D16\u6D83\u6D7B\u6D7D\u6D75\u6D90\u70DC\u70D3\u70D1\u70DD\u70CB\u7F39\u70E2\u70D7\u70D2\u70DE\u70E0\u70D4\u70CD\u70C5\u70C6\u70C7\u70DA\u70CE\u70E1\u7242\u7278"], + ["d2a1", "\u7277\u7276\u7300\u72FA\u72F4\u72FE\u72F6\u72F3\u72FB\u7301\u73D3\u73D9\u73E5\u73D6\u73BC\u73E7\u73E3\u73E9\u73DC\u73D2\u73DB\u73D4\u73DD\u73DA\u73D7\u73D8\u73E8\u74DE\u74DF\u74F4\u74F5\u7521\u755B\u755F\u75B0\u75C1\u75BB\u75C4\u75C0\u75BF\u75B6\u75BA\u768A\u76C9\u771D\u771B\u7710\u7713\u7712\u7723\u7711\u7715\u7719\u771A\u7722\u7727\u7823\u782C\u7822\u7835\u782F\u7828\u782E\u782B\u7821\u7829\u7833\u782A\u7831\u7954\u795B\u794F\u795C\u7953\u7952\u7951\u79EB\u79EC\u79E0\u79EE\u79ED\u79EA\u79DC\u79DE\u79DD\u7A86\u7A89\u7A85\u7A8B\u7A8C\u7A8A\u7A87\u7AD8\u7B10"], + ["d340", "\u7B04\u7B13\u7B05\u7B0F\u7B08\u7B0A\u7B0E\u7B09\u7B12\u7C84\u7C91\u7C8A\u7C8C\u7C88\u7C8D\u7C85\u7D1E\u7D1D\u7D11\u7D0E\u7D18\u7D16\u7D13\u7D1F\u7D12\u7D0F\u7D0C\u7F5C\u7F61\u7F5E\u7F60\u7F5D\u7F5B\u7F96\u7F92\u7FC3\u7FC2\u7FC0\u8016\u803E\u8039\u80FA\u80F2\u80F9\u80F5\u8101\u80FB\u8100\u8201\u822F\u8225\u8333\u832D\u8344\u8319\u8351\u8325\u8356\u833F\u8341\u8326\u831C\u8322"], + ["d3a1", "\u8342\u834E\u831B\u832A\u8308\u833C\u834D\u8316\u8324\u8320\u8337\u832F\u8329\u8347\u8345\u834C\u8353\u831E\u832C\u834B\u8327\u8348\u8653\u8652\u86A2\u86A8\u8696\u868D\u8691\u869E\u8687\u8697\u8686\u868B\u869A\u8685\u86A5\u8699\u86A1\u86A7\u8695\u8698\u868E\u869D\u8690\u8694\u8843\u8844\u886D\u8875\u8876\u8872\u8880\u8871\u887F\u886F\u8883\u887E\u8874\u887C\u8A12\u8C47\u8C57\u8C7B\u8CA4\u8CA3\u8D76\u8D78\u8DB5\u8DB7\u8DB6\u8ED1\u8ED3\u8FFE\u8FF5\u9002\u8FFF\u8FFB\u9004\u8FFC\u8FF6\u90D6\u90E0\u90D9\u90DA\u90E3\u90DF\u90E5\u90D8\u90DB\u90D7\u90DC\u90E4\u9150"], + ["d440", "\u914E\u914F\u91D5\u91E2\u91DA\u965C\u965F\u96BC\u98E3\u9ADF\u9B2F\u4E7F\u5070\u506A\u5061\u505E\u5060\u5053\u504B\u505D\u5072\u5048\u504D\u5041\u505B\u504A\u5062\u5015\u5045\u505F\u5069\u506B\u5063\u5064\u5046\u5040\u506E\u5073\u5057\u5051\u51D0\u526B\u526D\u526C\u526E\u52D6\u52D3\u532D\u539C\u5575\u5576\u553C\u554D\u5550\u5534\u552A\u5551\u5562\u5536\u5535\u5530\u5552\u5545"], + ["d4a1", "\u550C\u5532\u5565\u554E\u5539\u5548\u552D\u553B\u5540\u554B\u570A\u5707\u57FB\u5814\u57E2\u57F6\u57DC\u57F4\u5800\u57ED\u57FD\u5808\u57F8\u580B\u57F3\u57CF\u5807\u57EE\u57E3\u57F2\u57E5\u57EC\u57E1\u580E\u57FC\u5810\u57E7\u5801\u580C\u57F1\u57E9\u57F0\u580D\u5804\u595C\u5A60\u5A58\u5A55\u5A67\u5A5E\u5A38\u5A35\u5A6D\u5A50\u5A5F\u5A65\u5A6C\u5A53\u5A64\u5A57\u5A43\u5A5D\u5A52\u5A44\u5A5B\u5A48\u5A8E\u5A3E\u5A4D\u5A39\u5A4C\u5A70\u5A69\u5A47\u5A51\u5A56\u5A42\u5A5C\u5B72\u5B6E\u5BC1\u5BC0\u5C59\u5D1E\u5D0B\u5D1D\u5D1A\u5D20\u5D0C\u5D28\u5D0D\u5D26\u5D25\u5D0F"], + ["d540", "\u5D30\u5D12\u5D23\u5D1F\u5D2E\u5E3E\u5E34\u5EB1\u5EB4\u5EB9\u5EB2\u5EB3\u5F36\u5F38\u5F9B\u5F96\u5F9F\u608A\u6090\u6086\u60BE\u60B0\u60BA\u60D3\u60D4\u60CF\u60E4\u60D9\u60DD\u60C8\u60B1\u60DB\u60B7\u60CA\u60BF\u60C3\u60CD\u60C0\u6332\u6365\u638A\u6382\u637D\u63BD\u639E\u63AD\u639D\u6397\u63AB\u638E\u636F\u6387\u6390\u636E\u63AF\u6375\u639C\u636D\u63AE\u637C\u63A4\u633B\u639F"], + ["d5a1", "\u6378\u6385\u6381\u6391\u638D\u6370\u6553\u65CD\u6665\u6661\u665B\u6659\u665C\u6662\u6718\u6879\u6887\u6890\u689C\u686D\u686E\u68AE\u68AB\u6956\u686F\u68A3\u68AC\u68A9\u6875\u6874\u68B2\u688F\u6877\u6892\u687C\u686B\u6872\u68AA\u6880\u6871\u687E\u689B\u6896\u688B\u68A0\u6889\u68A4\u6878\u687B\u6891\u688C\u688A\u687D\u6B36\u6B33\u6B37\u6B38\u6B91\u6B8F\u6B8D\u6B8E\u6B8C\u6C2A\u6DC0\u6DAB\u6DB4\u6DB3\u6E74\u6DAC\u6DE9\u6DE2\u6DB7\u6DF6\u6DD4\u6E00\u6DC8\u6DE0\u6DDF\u6DD6\u6DBE\u6DE5\u6DDC\u6DDD\u6DDB\u6DF4\u6DCA\u6DBD\u6DED\u6DF0\u6DBA\u6DD5\u6DC2\u6DCF\u6DC9"], + ["d640", "\u6DD0\u6DF2\u6DD3\u6DFD\u6DD7\u6DCD\u6DE3\u6DBB\u70FA\u710D\u70F7\u7117\u70F4\u710C\u70F0\u7104\u70F3\u7110\u70FC\u70FF\u7106\u7113\u7100\u70F8\u70F6\u710B\u7102\u710E\u727E\u727B\u727C\u727F\u731D\u7317\u7307\u7311\u7318\u730A\u7308\u72FF\u730F\u731E\u7388\u73F6\u73F8\u73F5\u7404\u7401\u73FD\u7407\u7400\u73FA\u73FC\u73FF\u740C\u740B\u73F4\u7408\u7564\u7563\u75CE\u75D2\u75CF"], + ["d6a1", "\u75CB\u75CC\u75D1\u75D0\u768F\u7689\u76D3\u7739\u772F\u772D\u7731\u7732\u7734\u7733\u773D\u7725\u773B\u7735\u7848\u7852\u7849\u784D\u784A\u784C\u7826\u7845\u7850\u7964\u7967\u7969\u796A\u7963\u796B\u7961\u79BB\u79FA\u79F8\u79F6\u79F7\u7A8F\u7A94\u7A90\u7B35\u7B47\u7B34\u7B25\u7B30\u7B22\u7B24\u7B33\u7B18\u7B2A\u7B1D\u7B31\u7B2B\u7B2D\u7B2F\u7B32\u7B38\u7B1A\u7B23\u7C94\u7C98\u7C96\u7CA3\u7D35\u7D3D\u7D38\u7D36\u7D3A\u7D45\u7D2C\u7D29\u7D41\u7D47\u7D3E\u7D3F\u7D4A\u7D3B\u7D28\u7F63\u7F95\u7F9C\u7F9D\u7F9B\u7FCA\u7FCB\u7FCD\u7FD0\u7FD1\u7FC7\u7FCF\u7FC9\u801F"], + ["d740", "\u801E\u801B\u8047\u8043\u8048\u8118\u8125\u8119\u811B\u812D\u811F\u812C\u811E\u8121\u8115\u8127\u811D\u8122\u8211\u8238\u8233\u823A\u8234\u8232\u8274\u8390\u83A3\u83A8\u838D\u837A\u8373\u83A4\u8374\u838F\u8381\u8395\u8399\u8375\u8394\u83A9\u837D\u8383\u838C\u839D\u839B\u83AA\u838B\u837E\u83A5\u83AF\u8388\u8397\u83B0\u837F\u83A6\u8387\u83AE\u8376\u839A\u8659\u8656\u86BF\u86B7"], + ["d7a1", "\u86C2\u86C1\u86C5\u86BA\u86B0\u86C8\u86B9\u86B3\u86B8\u86CC\u86B4\u86BB\u86BC\u86C3\u86BD\u86BE\u8852\u8889\u8895\u88A8\u88A2\u88AA\u889A\u8891\u88A1\u889F\u8898\u88A7\u8899\u889B\u8897\u88A4\u88AC\u888C\u8893\u888E\u8982\u89D6\u89D9\u89D5\u8A30\u8A27\u8A2C\u8A1E\u8C39\u8C3B\u8C5C\u8C5D\u8C7D\u8CA5\u8D7D\u8D7B\u8D79\u8DBC\u8DC2\u8DB9\u8DBF\u8DC1\u8ED8\u8EDE\u8EDD\u8EDC\u8ED7\u8EE0\u8EE1\u9024\u900B\u9011\u901C\u900C\u9021\u90EF\u90EA\u90F0\u90F4\u90F2\u90F3\u90D4\u90EB\u90EC\u90E9\u9156\u9158\u915A\u9153\u9155\u91EC\u91F4\u91F1\u91F3\u91F8\u91E4\u91F9\u91EA"], + ["d840", "\u91EB\u91F7\u91E8\u91EE\u957A\u9586\u9588\u967C\u966D\u966B\u9671\u966F\u96BF\u976A\u9804\u98E5\u9997\u509B\u5095\u5094\u509E\u508B\u50A3\u5083\u508C\u508E\u509D\u5068\u509C\u5092\u5082\u5087\u515F\u51D4\u5312\u5311\u53A4\u53A7\u5591\u55A8\u55A5\u55AD\u5577\u5645\u55A2\u5593\u5588\u558F\u55B5\u5581\u55A3\u5592\u55A4\u557D\u558C\u55A6\u557F\u5595\u55A1\u558E\u570C\u5829\u5837"], + ["d8a1", "\u5819\u581E\u5827\u5823\u5828\u57F5\u5848\u5825\u581C\u581B\u5833\u583F\u5836\u582E\u5839\u5838\u582D\u582C\u583B\u5961\u5AAF\u5A94\u5A9F\u5A7A\u5AA2\u5A9E\u5A78\u5AA6\u5A7C\u5AA5\u5AAC\u5A95\u5AAE\u5A37\u5A84\u5A8A\u5A97\u5A83\u5A8B\u5AA9\u5A7B\u5A7D\u5A8C\u5A9C\u5A8F\u5A93\u5A9D\u5BEA\u5BCD\u5BCB\u5BD4\u5BD1\u5BCA\u5BCE\u5C0C\u5C30\u5D37\u5D43\u5D6B\u5D41\u5D4B\u5D3F\u5D35\u5D51\u5D4E\u5D55\u5D33\u5D3A\u5D52\u5D3D\u5D31\u5D59\u5D42\u5D39\u5D49\u5D38\u5D3C\u5D32\u5D36\u5D40\u5D45\u5E44\u5E41\u5F58\u5FA6\u5FA5\u5FAB\u60C9\u60B9\u60CC\u60E2\u60CE\u60C4\u6114"], + ["d940", "\u60F2\u610A\u6116\u6105\u60F5\u6113\u60F8\u60FC\u60FE\u60C1\u6103\u6118\u611D\u6110\u60FF\u6104\u610B\u624A\u6394\u63B1\u63B0\u63CE\u63E5\u63E8\u63EF\u63C3\u649D\u63F3\u63CA\u63E0\u63F6\u63D5\u63F2\u63F5\u6461\u63DF\u63BE\u63DD\u63DC\u63C4\u63D8\u63D3\u63C2\u63C7\u63CC\u63CB\u63C8\u63F0\u63D7\u63D9\u6532\u6567\u656A\u6564\u655C\u6568\u6565\u658C\u659D\u659E\u65AE\u65D0\u65D2"], + ["d9a1", "\u667C\u666C\u667B\u6680\u6671\u6679\u666A\u6672\u6701\u690C\u68D3\u6904\u68DC\u692A\u68EC\u68EA\u68F1\u690F\u68D6\u68F7\u68EB\u68E4\u68F6\u6913\u6910\u68F3\u68E1\u6907\u68CC\u6908\u6970\u68B4\u6911\u68EF\u68C6\u6914\u68F8\u68D0\u68FD\u68FC\u68E8\u690B\u690A\u6917\u68CE\u68C8\u68DD\u68DE\u68E6\u68F4\u68D1\u6906\u68D4\u68E9\u6915\u6925\u68C7\u6B39\u6B3B\u6B3F\u6B3C\u6B94\u6B97\u6B99\u6B95\u6BBD\u6BF0\u6BF2\u6BF3\u6C30\u6DFC\u6E46\u6E47\u6E1F\u6E49\u6E88\u6E3C\u6E3D\u6E45\u6E62\u6E2B\u6E3F\u6E41\u6E5D\u6E73\u6E1C\u6E33\u6E4B\u6E40\u6E51\u6E3B\u6E03\u6E2E\u6E5E"], + ["da40", "\u6E68\u6E5C\u6E61\u6E31\u6E28\u6E60\u6E71\u6E6B\u6E39\u6E22\u6E30\u6E53\u6E65\u6E27\u6E78\u6E64\u6E77\u6E55\u6E79\u6E52\u6E66\u6E35\u6E36\u6E5A\u7120\u711E\u712F\u70FB\u712E\u7131\u7123\u7125\u7122\u7132\u711F\u7128\u713A\u711B\u724B\u725A\u7288\u7289\u7286\u7285\u728B\u7312\u730B\u7330\u7322\u7331\u7333\u7327\u7332\u732D\u7326\u7323\u7335\u730C\u742E\u742C\u7430\u742B\u7416"], + ["daa1", "\u741A\u7421\u742D\u7431\u7424\u7423\u741D\u7429\u7420\u7432\u74FB\u752F\u756F\u756C\u75E7\u75DA\u75E1\u75E6\u75DD\u75DF\u75E4\u75D7\u7695\u7692\u76DA\u7746\u7747\u7744\u774D\u7745\u774A\u774E\u774B\u774C\u77DE\u77EC\u7860\u7864\u7865\u785C\u786D\u7871\u786A\u786E\u7870\u7869\u7868\u785E\u7862\u7974\u7973\u7972\u7970\u7A02\u7A0A\u7A03\u7A0C\u7A04\u7A99\u7AE6\u7AE4\u7B4A\u7B3B\u7B44\u7B48\u7B4C\u7B4E\u7B40\u7B58\u7B45\u7CA2\u7C9E\u7CA8\u7CA1\u7D58\u7D6F\u7D63\u7D53\u7D56\u7D67\u7D6A\u7D4F\u7D6D\u7D5C\u7D6B\u7D52\u7D54\u7D69\u7D51\u7D5F\u7D4E\u7F3E\u7F3F\u7F65"], + ["db40", "\u7F66\u7FA2\u7FA0\u7FA1\u7FD7\u8051\u804F\u8050\u80FE\u80D4\u8143\u814A\u8152\u814F\u8147\u813D\u814D\u813A\u81E6\u81EE\u81F7\u81F8\u81F9\u8204\u823C\u823D\u823F\u8275\u833B\u83CF\u83F9\u8423\u83C0\u83E8\u8412\u83E7\u83E4\u83FC\u83F6\u8410\u83C6\u83C8\u83EB\u83E3\u83BF\u8401\u83DD\u83E5\u83D8\u83FF\u83E1\u83CB\u83CE\u83D6\u83F5\u83C9\u8409\u840F\u83DE\u8411\u8406\u83C2\u83F3"], + ["dba1", "\u83D5\u83FA\u83C7\u83D1\u83EA\u8413\u83C3\u83EC\u83EE\u83C4\u83FB\u83D7\u83E2\u841B\u83DB\u83FE\u86D8\u86E2\u86E6\u86D3\u86E3\u86DA\u86EA\u86DD\u86EB\u86DC\u86EC\u86E9\u86D7\u86E8\u86D1\u8848\u8856\u8855\u88BA\u88D7\u88B9\u88B8\u88C0\u88BE\u88B6\u88BC\u88B7\u88BD\u88B2\u8901\u88C9\u8995\u8998\u8997\u89DD\u89DA\u89DB\u8A4E\u8A4D\u8A39\u8A59\u8A40\u8A57\u8A58\u8A44\u8A45\u8A52\u8A48\u8A51\u8A4A\u8A4C\u8A4F\u8C5F\u8C81\u8C80\u8CBA\u8CBE\u8CB0\u8CB9\u8CB5\u8D84\u8D80\u8D89\u8DD8\u8DD3\u8DCD\u8DC7\u8DD6\u8DDC\u8DCF\u8DD5\u8DD9\u8DC8\u8DD7\u8DC5\u8EEF\u8EF7\u8EFA"], + ["dc40", "\u8EF9\u8EE6\u8EEE\u8EE5\u8EF5\u8EE7\u8EE8\u8EF6\u8EEB\u8EF1\u8EEC\u8EF4\u8EE9\u902D\u9034\u902F\u9106\u912C\u9104\u90FF\u90FC\u9108\u90F9\u90FB\u9101\u9100\u9107\u9105\u9103\u9161\u9164\u915F\u9162\u9160\u9201\u920A\u9225\u9203\u921A\u9226\u920F\u920C\u9200\u9212\u91FF\u91FD\u9206\u9204\u9227\u9202\u921C\u9224\u9219\u9217\u9205\u9216\u957B\u958D\u958C\u9590\u9687\u967E\u9688"], + ["dca1", "\u9689\u9683\u9680\u96C2\u96C8\u96C3\u96F1\u96F0\u976C\u9770\u976E\u9807\u98A9\u98EB\u9CE6\u9EF9\u4E83\u4E84\u4EB6\u50BD\u50BF\u50C6\u50AE\u50C4\u50CA\u50B4\u50C8\u50C2\u50B0\u50C1\u50BA\u50B1\u50CB\u50C9\u50B6\u50B8\u51D7\u527A\u5278\u527B\u527C\u55C3\u55DB\u55CC\u55D0\u55CB\u55CA\u55DD\u55C0\u55D4\u55C4\u55E9\u55BF\u55D2\u558D\u55CF\u55D5\u55E2\u55D6\u55C8\u55F2\u55CD\u55D9\u55C2\u5714\u5853\u5868\u5864\u584F\u584D\u5849\u586F\u5855\u584E\u585D\u5859\u5865\u585B\u583D\u5863\u5871\u58FC\u5AC7\u5AC4\u5ACB\u5ABA\u5AB8\u5AB1\u5AB5\u5AB0\u5ABF\u5AC8\u5ABB\u5AC6"], + ["dd40", "\u5AB7\u5AC0\u5ACA\u5AB4\u5AB6\u5ACD\u5AB9\u5A90\u5BD6\u5BD8\u5BD9\u5C1F\u5C33\u5D71\u5D63\u5D4A\u5D65\u5D72\u5D6C\u5D5E\u5D68\u5D67\u5D62\u5DF0\u5E4F\u5E4E\u5E4A\u5E4D\u5E4B\u5EC5\u5ECC\u5EC6\u5ECB\u5EC7\u5F40\u5FAF\u5FAD\u60F7\u6149\u614A\u612B\u6145\u6136\u6132\u612E\u6146\u612F\u614F\u6129\u6140\u6220\u9168\u6223\u6225\u6224\u63C5\u63F1\u63EB\u6410\u6412\u6409\u6420\u6424"], + ["dda1", "\u6433\u6443\u641F\u6415\u6418\u6439\u6437\u6422\u6423\u640C\u6426\u6430\u6428\u6441\u6435\u642F\u640A\u641A\u6440\u6425\u6427\u640B\u63E7\u641B\u642E\u6421\u640E\u656F\u6592\u65D3\u6686\u668C\u6695\u6690\u668B\u668A\u6699\u6694\u6678\u6720\u6966\u695F\u6938\u694E\u6962\u6971\u693F\u6945\u696A\u6939\u6942\u6957\u6959\u697A\u6948\u6949\u6935\u696C\u6933\u693D\u6965\u68F0\u6978\u6934\u6969\u6940\u696F\u6944\u6976\u6958\u6941\u6974\u694C\u693B\u694B\u6937\u695C\u694F\u6951\u6932\u6952\u692F\u697B\u693C\u6B46\u6B45\u6B43\u6B42\u6B48\u6B41\u6B9B\uFA0D\u6BFB\u6BFC"], + ["de40", "\u6BF9\u6BF7\u6BF8\u6E9B\u6ED6\u6EC8\u6E8F\u6EC0\u6E9F\u6E93\u6E94\u6EA0\u6EB1\u6EB9\u6EC6\u6ED2\u6EBD\u6EC1\u6E9E\u6EC9\u6EB7\u6EB0\u6ECD\u6EA6\u6ECF\u6EB2\u6EBE\u6EC3\u6EDC\u6ED8\u6E99\u6E92\u6E8E\u6E8D\u6EA4\u6EA1\u6EBF\u6EB3\u6ED0\u6ECA\u6E97\u6EAE\u6EA3\u7147\u7154\u7152\u7163\u7160\u7141\u715D\u7162\u7172\u7178\u716A\u7161\u7142\u7158\u7143\u714B\u7170\u715F\u7150\u7153"], + ["dea1", "\u7144\u714D\u715A\u724F\u728D\u728C\u7291\u7290\u728E\u733C\u7342\u733B\u733A\u7340\u734A\u7349\u7444\u744A\u744B\u7452\u7451\u7457\u7440\u744F\u7450\u744E\u7442\u7446\u744D\u7454\u74E1\u74FF\u74FE\u74FD\u751D\u7579\u7577\u6983\u75EF\u760F\u7603\u75F7\u75FE\u75FC\u75F9\u75F8\u7610\u75FB\u75F6\u75ED\u75F5\u75FD\u7699\u76B5\u76DD\u7755\u775F\u7760\u7752\u7756\u775A\u7769\u7767\u7754\u7759\u776D\u77E0\u7887\u789A\u7894\u788F\u7884\u7895\u7885\u7886\u78A1\u7883\u7879\u7899\u7880\u7896\u787B\u797C\u7982\u797D\u7979\u7A11\u7A18\u7A19\u7A12\u7A17\u7A15\u7A22\u7A13"], + ["df40", "\u7A1B\u7A10\u7AA3\u7AA2\u7A9E\u7AEB\u7B66\u7B64\u7B6D\u7B74\u7B69\u7B72\u7B65\u7B73\u7B71\u7B70\u7B61\u7B78\u7B76\u7B63\u7CB2\u7CB4\u7CAF\u7D88\u7D86\u7D80\u7D8D\u7D7F\u7D85\u7D7A\u7D8E\u7D7B\u7D83\u7D7C\u7D8C\u7D94\u7D84\u7D7D\u7D92\u7F6D\u7F6B\u7F67\u7F68\u7F6C\u7FA6\u7FA5\u7FA7\u7FDB\u7FDC\u8021\u8164\u8160\u8177\u815C\u8169\u815B\u8162\u8172\u6721\u815E\u8176\u8167\u816F"], + ["dfa1", "\u8144\u8161\u821D\u8249\u8244\u8240\u8242\u8245\u84F1\u843F\u8456\u8476\u8479\u848F\u848D\u8465\u8451\u8440\u8486\u8467\u8430\u844D\u847D\u845A\u8459\u8474\u8473\u845D\u8507\u845E\u8437\u843A\u8434\u847A\u8443\u8478\u8432\u8445\u8429\u83D9\u844B\u842F\u8442\u842D\u845F\u8470\u8439\u844E\u844C\u8452\u846F\u84C5\u848E\u843B\u8447\u8436\u8433\u8468\u847E\u8444\u842B\u8460\u8454\u846E\u8450\u870B\u8704\u86F7\u870C\u86FA\u86D6\u86F5\u874D\u86F8\u870E\u8709\u8701\u86F6\u870D\u8705\u88D6\u88CB\u88CD\u88CE\u88DE\u88DB\u88DA\u88CC\u88D0\u8985\u899B\u89DF\u89E5\u89E4"], + ["e040", "\u89E1\u89E0\u89E2\u89DC\u89E6\u8A76\u8A86\u8A7F\u8A61\u8A3F\u8A77\u8A82\u8A84\u8A75\u8A83\u8A81\u8A74\u8A7A\u8C3C\u8C4B\u8C4A\u8C65\u8C64\u8C66\u8C86\u8C84\u8C85\u8CCC\u8D68\u8D69\u8D91\u8D8C\u8D8E\u8D8F\u8D8D\u8D93\u8D94\u8D90\u8D92\u8DF0\u8DE0\u8DEC\u8DF1\u8DEE\u8DD0\u8DE9\u8DE3\u8DE2\u8DE7\u8DF2\u8DEB\u8DF4\u8F06\u8EFF\u8F01\u8F00\u8F05\u8F07\u8F08\u8F02\u8F0B\u9052\u903F"], + ["e0a1", "\u9044\u9049\u903D\u9110\u910D\u910F\u9111\u9116\u9114\u910B\u910E\u916E\u916F\u9248\u9252\u9230\u923A\u9266\u9233\u9265\u925E\u9283\u922E\u924A\u9246\u926D\u926C\u924F\u9260\u9267\u926F\u9236\u9261\u9270\u9231\u9254\u9263\u9250\u9272\u924E\u9253\u924C\u9256\u9232\u959F\u959C\u959E\u959B\u9692\u9693\u9691\u9697\u96CE\u96FA\u96FD\u96F8\u96F5\u9773\u9777\u9778\u9772\u980F\u980D\u980E\u98AC\u98F6\u98F9\u99AF\u99B2\u99B0\u99B5\u9AAD\u9AAB\u9B5B\u9CEA\u9CED\u9CE7\u9E80\u9EFD\u50E6\u50D4\u50D7\u50E8\u50F3\u50DB\u50EA\u50DD\u50E4\u50D3\u50EC\u50F0\u50EF\u50E3\u50E0"], + ["e140", "\u51D8\u5280\u5281\u52E9\u52EB\u5330\u53AC\u5627\u5615\u560C\u5612\u55FC\u560F\u561C\u5601\u5613\u5602\u55FA\u561D\u5604\u55FF\u55F9\u5889\u587C\u5890\u5898\u5886\u5881\u587F\u5874\u588B\u587A\u5887\u5891\u588E\u5876\u5882\u5888\u587B\u5894\u588F\u58FE\u596B\u5ADC\u5AEE\u5AE5\u5AD5\u5AEA\u5ADA\u5AED\u5AEB\u5AF3\u5AE2\u5AE0\u5ADB\u5AEC\u5ADE\u5ADD\u5AD9\u5AE8\u5ADF\u5B77\u5BE0"], + ["e1a1", "\u5BE3\u5C63\u5D82\u5D80\u5D7D\u5D86\u5D7A\u5D81\u5D77\u5D8A\u5D89\u5D88\u5D7E\u5D7C\u5D8D\u5D79\u5D7F\u5E58\u5E59\u5E53\u5ED8\u5ED1\u5ED7\u5ECE\u5EDC\u5ED5\u5ED9\u5ED2\u5ED4\u5F44\u5F43\u5F6F\u5FB6\u612C\u6128\u6141\u615E\u6171\u6173\u6152\u6153\u6172\u616C\u6180\u6174\u6154\u617A\u615B\u6165\u613B\u616A\u6161\u6156\u6229\u6227\u622B\u642B\u644D\u645B\u645D\u6474\u6476\u6472\u6473\u647D\u6475\u6466\u64A6\u644E\u6482\u645E\u645C\u644B\u6453\u6460\u6450\u647F\u643F\u646C\u646B\u6459\u6465\u6477\u6573\u65A0\u66A1\u66A0\u669F\u6705\u6704\u6722\u69B1\u69B6\u69C9"], + ["e240", "\u69A0\u69CE\u6996\u69B0\u69AC\u69BC\u6991\u6999\u698E\u69A7\u698D\u69A9\u69BE\u69AF\u69BF\u69C4\u69BD\u69A4\u69D4\u69B9\u69CA\u699A\u69CF\u69B3\u6993\u69AA\u69A1\u699E\u69D9\u6997\u6990\u69C2\u69B5\u69A5\u69C6\u6B4A\u6B4D\u6B4B\u6B9E\u6B9F\u6BA0\u6BC3\u6BC4\u6BFE\u6ECE\u6EF5\u6EF1\u6F03\u6F25\u6EF8\u6F37\u6EFB\u6F2E\u6F09\u6F4E\u6F19\u6F1A\u6F27\u6F18\u6F3B\u6F12\u6EED\u6F0A"], + ["e2a1", "\u6F36\u6F73\u6EF9\u6EEE\u6F2D\u6F40\u6F30\u6F3C\u6F35\u6EEB\u6F07\u6F0E\u6F43\u6F05\u6EFD\u6EF6\u6F39\u6F1C\u6EFC\u6F3A\u6F1F\u6F0D\u6F1E\u6F08\u6F21\u7187\u7190\u7189\u7180\u7185\u7182\u718F\u717B\u7186\u7181\u7197\u7244\u7253\u7297\u7295\u7293\u7343\u734D\u7351\u734C\u7462\u7473\u7471\u7475\u7472\u7467\u746E\u7500\u7502\u7503\u757D\u7590\u7616\u7608\u760C\u7615\u7611\u760A\u7614\u76B8\u7781\u777C\u7785\u7782\u776E\u7780\u776F\u777E\u7783\u78B2\u78AA\u78B4\u78AD\u78A8\u787E\u78AB\u789E\u78A5\u78A0\u78AC\u78A2\u78A4\u7998\u798A\u798B\u7996\u7995\u7994\u7993"], + ["e340", "\u7997\u7988\u7992\u7990\u7A2B\u7A4A\u7A30\u7A2F\u7A28\u7A26\u7AA8\u7AAB\u7AAC\u7AEE\u7B88\u7B9C\u7B8A\u7B91\u7B90\u7B96\u7B8D\u7B8C\u7B9B\u7B8E\u7B85\u7B98\u5284\u7B99\u7BA4\u7B82\u7CBB\u7CBF\u7CBC\u7CBA\u7DA7\u7DB7\u7DC2\u7DA3\u7DAA\u7DC1\u7DC0\u7DC5\u7D9D\u7DCE\u7DC4\u7DC6\u7DCB\u7DCC\u7DAF\u7DB9\u7D96\u7DBC\u7D9F\u7DA6\u7DAE\u7DA9\u7DA1\u7DC9\u7F73\u7FE2\u7FE3\u7FE5\u7FDE"], + ["e3a1", "\u8024\u805D\u805C\u8189\u8186\u8183\u8187\u818D\u818C\u818B\u8215\u8497\u84A4\u84A1\u849F\u84BA\u84CE\u84C2\u84AC\u84AE\u84AB\u84B9\u84B4\u84C1\u84CD\u84AA\u849A\u84B1\u84D0\u849D\u84A7\u84BB\u84A2\u8494\u84C7\u84CC\u849B\u84A9\u84AF\u84A8\u84D6\u8498\u84B6\u84CF\u84A0\u84D7\u84D4\u84D2\u84DB\u84B0\u8491\u8661\u8733\u8723\u8728\u876B\u8740\u872E\u871E\u8721\u8719\u871B\u8743\u872C\u8741\u873E\u8746\u8720\u8732\u872A\u872D\u873C\u8712\u873A\u8731\u8735\u8742\u8726\u8727\u8738\u8724\u871A\u8730\u8711\u88F7\u88E7\u88F1\u88F2\u88FA\u88FE\u88EE\u88FC\u88F6\u88FB"], + ["e440", "\u88F0\u88EC\u88EB\u899D\u89A1\u899F\u899E\u89E9\u89EB\u89E8\u8AAB\u8A99\u8A8B\u8A92\u8A8F\u8A96\u8C3D\u8C68\u8C69\u8CD5\u8CCF\u8CD7\u8D96\u8E09\u8E02\u8DFF\u8E0D\u8DFD\u8E0A\u8E03\u8E07\u8E06\u8E05\u8DFE\u8E00\u8E04\u8F10\u8F11\u8F0E\u8F0D\u9123\u911C\u9120\u9122\u911F\u911D\u911A\u9124\u9121\u911B\u917A\u9172\u9179\u9173\u92A5\u92A4\u9276\u929B\u927A\u92A0\u9294\u92AA\u928D"], + ["e4a1", "\u92A6\u929A\u92AB\u9279\u9297\u927F\u92A3\u92EE\u928E\u9282\u9295\u92A2\u927D\u9288\u92A1\u928A\u9286\u928C\u9299\u92A7\u927E\u9287\u92A9\u929D\u928B\u922D\u969E\u96A1\u96FF\u9758\u977D\u977A\u977E\u9783\u9780\u9782\u977B\u9784\u9781\u977F\u97CE\u97CD\u9816\u98AD\u98AE\u9902\u9900\u9907\u999D\u999C\u99C3\u99B9\u99BB\u99BA\u99C2\u99BD\u99C7\u9AB1\u9AE3\u9AE7\u9B3E\u9B3F\u9B60\u9B61\u9B5F\u9CF1\u9CF2\u9CF5\u9EA7\u50FF\u5103\u5130\u50F8\u5106\u5107\u50F6\u50FE\u510B\u510C\u50FD\u510A\u528B\u528C\u52F1\u52EF\u5648\u5642\u564C\u5635\u5641\u564A\u5649\u5646\u5658"], + ["e540", "\u565A\u5640\u5633\u563D\u562C\u563E\u5638\u562A\u563A\u571A\u58AB\u589D\u58B1\u58A0\u58A3\u58AF\u58AC\u58A5\u58A1\u58FF\u5AFF\u5AF4\u5AFD\u5AF7\u5AF6\u5B03\u5AF8\u5B02\u5AF9\u5B01\u5B07\u5B05\u5B0F\u5C67\u5D99\u5D97\u5D9F\u5D92\u5DA2\u5D93\u5D95\u5DA0\u5D9C\u5DA1\u5D9A\u5D9E\u5E69\u5E5D\u5E60\u5E5C\u7DF3\u5EDB\u5EDE\u5EE1\u5F49\u5FB2\u618B\u6183\u6179\u61B1\u61B0\u61A2\u6189"], + ["e5a1", "\u619B\u6193\u61AF\u61AD\u619F\u6192\u61AA\u61A1\u618D\u6166\u61B3\u622D\u646E\u6470\u6496\u64A0\u6485\u6497\u649C\u648F\u648B\u648A\u648C\u64A3\u649F\u6468\u64B1\u6498\u6576\u657A\u6579\u657B\u65B2\u65B3\u66B5\u66B0\u66A9\u66B2\u66B7\u66AA\u66AF\u6A00\u6A06\u6A17\u69E5\u69F8\u6A15\u69F1\u69E4\u6A20\u69FF\u69EC\u69E2\u6A1B\u6A1D\u69FE\u6A27\u69F2\u69EE\u6A14\u69F7\u69E7\u6A40\u6A08\u69E6\u69FB\u6A0D\u69FC\u69EB\u6A09\u6A04\u6A18\u6A25\u6A0F\u69F6\u6A26\u6A07\u69F4\u6A16\u6B51\u6BA5\u6BA3\u6BA2\u6BA6\u6C01\u6C00\u6BFF\u6C02\u6F41\u6F26\u6F7E\u6F87\u6FC6\u6F92"], + ["e640", "\u6F8D\u6F89\u6F8C\u6F62\u6F4F\u6F85\u6F5A\u6F96\u6F76\u6F6C\u6F82\u6F55\u6F72\u6F52\u6F50\u6F57\u6F94\u6F93\u6F5D\u6F00\u6F61\u6F6B\u6F7D\u6F67\u6F90\u6F53\u6F8B\u6F69\u6F7F\u6F95\u6F63\u6F77\u6F6A\u6F7B\u71B2\u71AF\u719B\u71B0\u71A0\u719A\u71A9\u71B5\u719D\u71A5\u719E\u71A4\u71A1\u71AA\u719C\u71A7\u71B3\u7298\u729A\u7358\u7352\u735E\u735F\u7360\u735D\u735B\u7361\u735A\u7359"], + ["e6a1", "\u7362\u7487\u7489\u748A\u7486\u7481\u747D\u7485\u7488\u747C\u7479\u7508\u7507\u757E\u7625\u761E\u7619\u761D\u761C\u7623\u761A\u7628\u761B\u769C\u769D\u769E\u769B\u778D\u778F\u7789\u7788\u78CD\u78BB\u78CF\u78CC\u78D1\u78CE\u78D4\u78C8\u78C3\u78C4\u78C9\u799A\u79A1\u79A0\u799C\u79A2\u799B\u6B76\u7A39\u7AB2\u7AB4\u7AB3\u7BB7\u7BCB\u7BBE\u7BAC\u7BCE\u7BAF\u7BB9\u7BCA\u7BB5\u7CC5\u7CC8\u7CCC\u7CCB\u7DF7\u7DDB\u7DEA\u7DE7\u7DD7\u7DE1\u7E03\u7DFA\u7DE6\u7DF6\u7DF1\u7DF0\u7DEE\u7DDF\u7F76\u7FAC\u7FB0\u7FAD\u7FED\u7FEB\u7FEA\u7FEC\u7FE6\u7FE8\u8064\u8067\u81A3\u819F"], + ["e740", "\u819E\u8195\u81A2\u8199\u8197\u8216\u824F\u8253\u8252\u8250\u824E\u8251\u8524\u853B\u850F\u8500\u8529\u850E\u8509\u850D\u851F\u850A\u8527\u851C\u84FB\u852B\u84FA\u8508\u850C\u84F4\u852A\u84F2\u8515\u84F7\u84EB\u84F3\u84FC\u8512\u84EA\u84E9\u8516\u84FE\u8528\u851D\u852E\u8502\u84FD\u851E\u84F6\u8531\u8526\u84E7\u84E8\u84F0\u84EF\u84F9\u8518\u8520\u8530\u850B\u8519\u852F\u8662"], + ["e7a1", "\u8756\u8763\u8764\u8777\u87E1\u8773\u8758\u8754\u875B\u8752\u8761\u875A\u8751\u875E\u876D\u876A\u8750\u874E\u875F\u875D\u876F\u876C\u877A\u876E\u875C\u8765\u874F\u877B\u8775\u8762\u8767\u8769\u885A\u8905\u890C\u8914\u890B\u8917\u8918\u8919\u8906\u8916\u8911\u890E\u8909\u89A2\u89A4\u89A3\u89ED\u89F0\u89EC\u8ACF\u8AC6\u8AB8\u8AD3\u8AD1\u8AD4\u8AD5\u8ABB\u8AD7\u8ABE\u8AC0\u8AC5\u8AD8\u8AC3\u8ABA\u8ABD\u8AD9\u8C3E\u8C4D\u8C8F\u8CE5\u8CDF\u8CD9\u8CE8\u8CDA\u8CDD\u8CE7\u8DA0\u8D9C\u8DA1\u8D9B\u8E20\u8E23\u8E25\u8E24\u8E2E\u8E15\u8E1B\u8E16\u8E11\u8E19\u8E26\u8E27"], + ["e840", "\u8E14\u8E12\u8E18\u8E13\u8E1C\u8E17\u8E1A\u8F2C\u8F24\u8F18\u8F1A\u8F20\u8F23\u8F16\u8F17\u9073\u9070\u906F\u9067\u906B\u912F\u912B\u9129\u912A\u9132\u9126\u912E\u9185\u9186\u918A\u9181\u9182\u9184\u9180\u92D0\u92C3\u92C4\u92C0\u92D9\u92B6\u92CF\u92F1\u92DF\u92D8\u92E9\u92D7\u92DD\u92CC\u92EF\u92C2\u92E8\u92CA\u92C8\u92CE\u92E6\u92CD\u92D5\u92C9\u92E0\u92DE\u92E7\u92D1\u92D3"], + ["e8a1", "\u92B5\u92E1\u92C6\u92B4\u957C\u95AC\u95AB\u95AE\u95B0\u96A4\u96A2\u96D3\u9705\u9708\u9702\u975A\u978A\u978E\u9788\u97D0\u97CF\u981E\u981D\u9826\u9829\u9828\u9820\u981B\u9827\u98B2\u9908\u98FA\u9911\u9914\u9916\u9917\u9915\u99DC\u99CD\u99CF\u99D3\u99D4\u99CE\u99C9\u99D6\u99D8\u99CB\u99D7\u99CC\u9AB3\u9AEC\u9AEB\u9AF3\u9AF2\u9AF1\u9B46\u9B43\u9B67\u9B74\u9B71\u9B66\u9B76\u9B75\u9B70\u9B68\u9B64\u9B6C\u9CFC\u9CFA\u9CFD\u9CFF\u9CF7\u9D07\u9D00\u9CF9\u9CFB\u9D08\u9D05\u9D04\u9E83\u9ED3\u9F0F\u9F10\u511C\u5113\u5117\u511A\u5111\u51DE\u5334\u53E1\u5670\u5660\u566E"], + ["e940", "\u5673\u5666\u5663\u566D\u5672\u565E\u5677\u571C\u571B\u58C8\u58BD\u58C9\u58BF\u58BA\u58C2\u58BC\u58C6\u5B17\u5B19\u5B1B\u5B21\u5B14\u5B13\u5B10\u5B16\u5B28\u5B1A\u5B20\u5B1E\u5BEF\u5DAC\u5DB1\u5DA9\u5DA7\u5DB5\u5DB0\u5DAE\u5DAA\u5DA8\u5DB2\u5DAD\u5DAF\u5DB4\u5E67\u5E68\u5E66\u5E6F\u5EE9\u5EE7\u5EE6\u5EE8\u5EE5\u5F4B\u5FBC\u619D\u61A8\u6196\u61C5\u61B4\u61C6\u61C1\u61CC\u61BA"], + ["e9a1", "\u61BF\u61B8\u618C\u64D7\u64D6\u64D0\u64CF\u64C9\u64BD\u6489\u64C3\u64DB\u64F3\u64D9\u6533\u657F\u657C\u65A2\u66C8\u66BE\u66C0\u66CA\u66CB\u66CF\u66BD\u66BB\u66BA\u66CC\u6723\u6A34\u6A66\u6A49\u6A67\u6A32\u6A68\u6A3E\u6A5D\u6A6D\u6A76\u6A5B\u6A51\u6A28\u6A5A\u6A3B\u6A3F\u6A41\u6A6A\u6A64\u6A50\u6A4F\u6A54\u6A6F\u6A69\u6A60\u6A3C\u6A5E\u6A56\u6A55\u6A4D\u6A4E\u6A46\u6B55\u6B54\u6B56\u6BA7\u6BAA\u6BAB\u6BC8\u6BC7\u6C04\u6C03\u6C06\u6FAD\u6FCB\u6FA3\u6FC7\u6FBC\u6FCE\u6FC8\u6F5E\u6FC4\u6FBD\u6F9E\u6FCA\u6FA8\u7004\u6FA5\u6FAE\u6FBA\u6FAC\u6FAA\u6FCF\u6FBF\u6FB8"], + ["ea40", "\u6FA2\u6FC9\u6FAB\u6FCD\u6FAF\u6FB2\u6FB0\u71C5\u71C2\u71BF\u71B8\u71D6\u71C0\u71C1\u71CB\u71D4\u71CA\u71C7\u71CF\u71BD\u71D8\u71BC\u71C6\u71DA\u71DB\u729D\u729E\u7369\u7366\u7367\u736C\u7365\u736B\u736A\u747F\u749A\u74A0\u7494\u7492\u7495\u74A1\u750B\u7580\u762F\u762D\u7631\u763D\u7633\u763C\u7635\u7632\u7630\u76BB\u76E6\u779A\u779D\u77A1\u779C\u779B\u77A2\u77A3\u7795\u7799"], + ["eaa1", "\u7797\u78DD\u78E9\u78E5\u78EA\u78DE\u78E3\u78DB\u78E1\u78E2\u78ED\u78DF\u78E0\u79A4\u7A44\u7A48\u7A47\u7AB6\u7AB8\u7AB5\u7AB1\u7AB7\u7BDE\u7BE3\u7BE7\u7BDD\u7BD5\u7BE5\u7BDA\u7BE8\u7BF9\u7BD4\u7BEA\u7BE2\u7BDC\u7BEB\u7BD8\u7BDF\u7CD2\u7CD4\u7CD7\u7CD0\u7CD1\u7E12\u7E21\u7E17\u7E0C\u7E1F\u7E20\u7E13\u7E0E\u7E1C\u7E15\u7E1A\u7E22\u7E0B\u7E0F\u7E16\u7E0D\u7E14\u7E25\u7E24\u7F43\u7F7B\u7F7C\u7F7A\u7FB1\u7FEF\u802A\u8029\u806C\u81B1\u81A6\u81AE\u81B9\u81B5\u81AB\u81B0\u81AC\u81B4\u81B2\u81B7\u81A7\u81F2\u8255\u8256\u8257\u8556\u8545\u856B\u854D\u8553\u8561\u8558"], + ["eb40", "\u8540\u8546\u8564\u8541\u8562\u8544\u8551\u8547\u8563\u853E\u855B\u8571\u854E\u856E\u8575\u8555\u8567\u8560\u858C\u8566\u855D\u8554\u8565\u856C\u8663\u8665\u8664\u879B\u878F\u8797\u8793\u8792\u8788\u8781\u8796\u8798\u8779\u8787\u87A3\u8785\u8790\u8791\u879D\u8784\u8794\u879C\u879A\u8789\u891E\u8926\u8930\u892D\u892E\u8927\u8931\u8922\u8929\u8923\u892F\u892C\u891F\u89F1\u8AE0"], + ["eba1", "\u8AE2\u8AF2\u8AF4\u8AF5\u8ADD\u8B14\u8AE4\u8ADF\u8AF0\u8AC8\u8ADE\u8AE1\u8AE8\u8AFF\u8AEF\u8AFB\u8C91\u8C92\u8C90\u8CF5\u8CEE\u8CF1\u8CF0\u8CF3\u8D6C\u8D6E\u8DA5\u8DA7\u8E33\u8E3E\u8E38\u8E40\u8E45\u8E36\u8E3C\u8E3D\u8E41\u8E30\u8E3F\u8EBD\u8F36\u8F2E\u8F35\u8F32\u8F39\u8F37\u8F34\u9076\u9079\u907B\u9086\u90FA\u9133\u9135\u9136\u9193\u9190\u9191\u918D\u918F\u9327\u931E\u9308\u931F\u9306\u930F\u937A\u9338\u933C\u931B\u9323\u9312\u9301\u9346\u932D\u930E\u930D\u92CB\u931D\u92FA\u9325\u9313\u92F9\u92F7\u9334\u9302\u9324\u92FF\u9329\u9339\u9335\u932A\u9314\u930C"], + ["ec40", "\u930B\u92FE\u9309\u9300\u92FB\u9316\u95BC\u95CD\u95BE\u95B9\u95BA\u95B6\u95BF\u95B5\u95BD\u96A9\u96D4\u970B\u9712\u9710\u9799\u9797\u9794\u97F0\u97F8\u9835\u982F\u9832\u9924\u991F\u9927\u9929\u999E\u99EE\u99EC\u99E5\u99E4\u99F0\u99E3\u99EA\u99E9\u99E7\u9AB9\u9ABF\u9AB4\u9ABB\u9AF6\u9AFA\u9AF9\u9AF7\u9B33\u9B80\u9B85\u9B87\u9B7C\u9B7E\u9B7B\u9B82\u9B93\u9B92\u9B90\u9B7A\u9B95"], + ["eca1", "\u9B7D\u9B88\u9D25\u9D17\u9D20\u9D1E\u9D14\u9D29\u9D1D\u9D18\u9D22\u9D10\u9D19\u9D1F\u9E88\u9E86\u9E87\u9EAE\u9EAD\u9ED5\u9ED6\u9EFA\u9F12\u9F3D\u5126\u5125\u5122\u5124\u5120\u5129\u52F4\u5693\u568C\u568D\u5686\u5684\u5683\u567E\u5682\u567F\u5681\u58D6\u58D4\u58CF\u58D2\u5B2D\u5B25\u5B32\u5B23\u5B2C\u5B27\u5B26\u5B2F\u5B2E\u5B7B\u5BF1\u5BF2\u5DB7\u5E6C\u5E6A\u5FBE\u5FBB\u61C3\u61B5\u61BC\u61E7\u61E0\u61E5\u61E4\u61E8\u61DE\u64EF\u64E9\u64E3\u64EB\u64E4\u64E8\u6581\u6580\u65B6\u65DA\u66D2\u6A8D\u6A96\u6A81\u6AA5\u6A89\u6A9F\u6A9B\u6AA1\u6A9E\u6A87\u6A93\u6A8E"], + ["ed40", "\u6A95\u6A83\u6AA8\u6AA4\u6A91\u6A7F\u6AA6\u6A9A\u6A85\u6A8C\u6A92\u6B5B\u6BAD\u6C09\u6FCC\u6FA9\u6FF4\u6FD4\u6FE3\u6FDC\u6FED\u6FE7\u6FE6\u6FDE\u6FF2\u6FDD\u6FE2\u6FE8\u71E1\u71F1\u71E8\u71F2\u71E4\u71F0\u71E2\u7373\u736E\u736F\u7497\u74B2\u74AB\u7490\u74AA\u74AD\u74B1\u74A5\u74AF\u7510\u7511\u7512\u750F\u7584\u7643\u7648\u7649\u7647\u76A4\u76E9\u77B5\u77AB\u77B2\u77B7\u77B6"], + ["eda1", "\u77B4\u77B1\u77A8\u77F0\u78F3\u78FD\u7902\u78FB\u78FC\u78F2\u7905\u78F9\u78FE\u7904\u79AB\u79A8\u7A5C\u7A5B\u7A56\u7A58\u7A54\u7A5A\u7ABE\u7AC0\u7AC1\u7C05\u7C0F\u7BF2\u7C00\u7BFF\u7BFB\u7C0E\u7BF4\u7C0B\u7BF3\u7C02\u7C09\u7C03\u7C01\u7BF8\u7BFD\u7C06\u7BF0\u7BF1\u7C10\u7C0A\u7CE8\u7E2D\u7E3C\u7E42\u7E33\u9848\u7E38\u7E2A\u7E49\u7E40\u7E47\u7E29\u7E4C\u7E30\u7E3B\u7E36\u7E44\u7E3A\u7F45\u7F7F\u7F7E\u7F7D\u7FF4\u7FF2\u802C\u81BB\u81C4\u81CC\u81CA\u81C5\u81C7\u81BC\u81E9\u825B\u825A\u825C\u8583\u8580\u858F\u85A7\u8595\u85A0\u858B\u85A3\u857B\u85A4\u859A\u859E"], + ["ee40", "\u8577\u857C\u8589\u85A1\u857A\u8578\u8557\u858E\u8596\u8586\u858D\u8599\u859D\u8581\u85A2\u8582\u8588\u8585\u8579\u8576\u8598\u8590\u859F\u8668\u87BE\u87AA\u87AD\u87C5\u87B0\u87AC\u87B9\u87B5\u87BC\u87AE\u87C9\u87C3\u87C2\u87CC\u87B7\u87AF\u87C4\u87CA\u87B4\u87B6\u87BF\u87B8\u87BD\u87DE\u87B2\u8935\u8933\u893C\u893E\u8941\u8952\u8937\u8942\u89AD\u89AF\u89AE\u89F2\u89F3\u8B1E"], + ["eea1", "\u8B18\u8B16\u8B11\u8B05\u8B0B\u8B22\u8B0F\u8B12\u8B15\u8B07\u8B0D\u8B08\u8B06\u8B1C\u8B13\u8B1A\u8C4F\u8C70\u8C72\u8C71\u8C6F\u8C95\u8C94\u8CF9\u8D6F\u8E4E\u8E4D\u8E53\u8E50\u8E4C\u8E47\u8F43\u8F40\u9085\u907E\u9138\u919A\u91A2\u919B\u9199\u919F\u91A1\u919D\u91A0\u93A1\u9383\u93AF\u9364\u9356\u9347\u937C\u9358\u935C\u9376\u9349\u9350\u9351\u9360\u936D\u938F\u934C\u936A\u9379\u9357\u9355\u9352\u934F\u9371\u9377\u937B\u9361\u935E\u9363\u9367\u9380\u934E\u9359\u95C7\u95C0\u95C9\u95C3\u95C5\u95B7\u96AE\u96B0\u96AC\u9720\u971F\u9718\u971D\u9719\u979A\u97A1\u979C"], + ["ef40", "\u979E\u979D\u97D5\u97D4\u97F1\u9841\u9844\u984A\u9849\u9845\u9843\u9925\u992B\u992C\u992A\u9933\u9932\u992F\u992D\u9931\u9930\u9998\u99A3\u99A1\u9A02\u99FA\u99F4\u99F7\u99F9\u99F8\u99F6\u99FB\u99FD\u99FE\u99FC\u9A03\u9ABE\u9AFE\u9AFD\u9B01\u9AFC\u9B48\u9B9A\u9BA8\u9B9E\u9B9B\u9BA6\u9BA1\u9BA5\u9BA4\u9B86\u9BA2\u9BA0\u9BAF\u9D33\u9D41\u9D67\u9D36\u9D2E\u9D2F\u9D31\u9D38\u9D30"], + ["efa1", "\u9D45\u9D42\u9D43\u9D3E\u9D37\u9D40\u9D3D\u7FF5\u9D2D\u9E8A\u9E89\u9E8D\u9EB0\u9EC8\u9EDA\u9EFB\u9EFF\u9F24\u9F23\u9F22\u9F54\u9FA0\u5131\u512D\u512E\u5698\u569C\u5697\u569A\u569D\u5699\u5970\u5B3C\u5C69\u5C6A\u5DC0\u5E6D\u5E6E\u61D8\u61DF\u61ED\u61EE\u61F1\u61EA\u61F0\u61EB\u61D6\u61E9\u64FF\u6504\u64FD\u64F8\u6501\u6503\u64FC\u6594\u65DB\u66DA\u66DB\u66D8\u6AC5\u6AB9\u6ABD\u6AE1\u6AC6\u6ABA\u6AB6\u6AB7\u6AC7\u6AB4\u6AAD\u6B5E\u6BC9\u6C0B\u7007\u700C\u700D\u7001\u7005\u7014\u700E\u6FFF\u7000\u6FFB\u7026\u6FFC\u6FF7\u700A\u7201\u71FF\u71F9\u7203\u71FD\u7376"], + ["f040", "\u74B8\u74C0\u74B5\u74C1\u74BE\u74B6\u74BB\u74C2\u7514\u7513\u765C\u7664\u7659\u7650\u7653\u7657\u765A\u76A6\u76BD\u76EC\u77C2\u77BA\u78FF\u790C\u7913\u7914\u7909\u7910\u7912\u7911\u79AD\u79AC\u7A5F\u7C1C\u7C29\u7C19\u7C20\u7C1F\u7C2D\u7C1D\u7C26\u7C28\u7C22\u7C25\u7C30\u7E5C\u7E50\u7E56\u7E63\u7E58\u7E62\u7E5F\u7E51\u7E60\u7E57\u7E53\u7FB5\u7FB3\u7FF7\u7FF8\u8075\u81D1\u81D2"], + ["f0a1", "\u81D0\u825F\u825E\u85B4\u85C6\u85C0\u85C3\u85C2\u85B3\u85B5\u85BD\u85C7\u85C4\u85BF\u85CB\u85CE\u85C8\u85C5\u85B1\u85B6\u85D2\u8624\u85B8\u85B7\u85BE\u8669\u87E7\u87E6\u87E2\u87DB\u87EB\u87EA\u87E5\u87DF\u87F3\u87E4\u87D4\u87DC\u87D3\u87ED\u87D8\u87E3\u87A4\u87D7\u87D9\u8801\u87F4\u87E8\u87DD\u8953\u894B\u894F\u894C\u8946\u8950\u8951\u8949\u8B2A\u8B27\u8B23\u8B33\u8B30\u8B35\u8B47\u8B2F\u8B3C\u8B3E\u8B31\u8B25\u8B37\u8B26\u8B36\u8B2E\u8B24\u8B3B\u8B3D\u8B3A\u8C42\u8C75\u8C99\u8C98\u8C97\u8CFE\u8D04\u8D02\u8D00\u8E5C\u8E62\u8E60\u8E57\u8E56\u8E5E\u8E65\u8E67"], + ["f140", "\u8E5B\u8E5A\u8E61\u8E5D\u8E69\u8E54\u8F46\u8F47\u8F48\u8F4B\u9128\u913A\u913B\u913E\u91A8\u91A5\u91A7\u91AF\u91AA\u93B5\u938C\u9392\u93B7\u939B\u939D\u9389\u93A7\u938E\u93AA\u939E\u93A6\u9395\u9388\u9399\u939F\u938D\u93B1\u9391\u93B2\u93A4\u93A8\u93B4\u93A3\u93A5\u95D2\u95D3\u95D1\u96B3\u96D7\u96DA\u5DC2\u96DF\u96D8\u96DD\u9723\u9722\u9725\u97AC\u97AE\u97A8\u97AB\u97A4\u97AA"], + ["f1a1", "\u97A2\u97A5\u97D7\u97D9\u97D6\u97D8\u97FA\u9850\u9851\u9852\u98B8\u9941\u993C\u993A\u9A0F\u9A0B\u9A09\u9A0D\u9A04\u9A11\u9A0A\u9A05\u9A07\u9A06\u9AC0\u9ADC\u9B08\u9B04\u9B05\u9B29\u9B35\u9B4A\u9B4C\u9B4B\u9BC7\u9BC6\u9BC3\u9BBF\u9BC1\u9BB5\u9BB8\u9BD3\u9BB6\u9BC4\u9BB9\u9BBD\u9D5C\u9D53\u9D4F\u9D4A\u9D5B\u9D4B\u9D59\u9D56\u9D4C\u9D57\u9D52\u9D54\u9D5F\u9D58\u9D5A\u9E8E\u9E8C\u9EDF\u9F01\u9F00\u9F16\u9F25\u9F2B\u9F2A\u9F29\u9F28\u9F4C\u9F55\u5134\u5135\u5296\u52F7\u53B4\u56AB\u56AD\u56A6\u56A7\u56AA\u56AC\u58DA\u58DD\u58DB\u5912\u5B3D\u5B3E\u5B3F\u5DC3\u5E70"], + ["f240", "\u5FBF\u61FB\u6507\u6510\u650D\u6509\u650C\u650E\u6584\u65DE\u65DD\u66DE\u6AE7\u6AE0\u6ACC\u6AD1\u6AD9\u6ACB\u6ADF\u6ADC\u6AD0\u6AEB\u6ACF\u6ACD\u6ADE\u6B60\u6BB0\u6C0C\u7019\u7027\u7020\u7016\u702B\u7021\u7022\u7023\u7029\u7017\u7024\u701C\u702A\u720C\u720A\u7207\u7202\u7205\u72A5\u72A6\u72A4\u72A3\u72A1\u74CB\u74C5\u74B7\u74C3\u7516\u7660\u77C9\u77CA\u77C4\u77F1\u791D\u791B"], + ["f2a1", "\u7921\u791C\u7917\u791E\u79B0\u7A67\u7A68\u7C33\u7C3C\u7C39\u7C2C\u7C3B\u7CEC\u7CEA\u7E76\u7E75\u7E78\u7E70\u7E77\u7E6F\u7E7A\u7E72\u7E74\u7E68\u7F4B\u7F4A\u7F83\u7F86\u7FB7\u7FFD\u7FFE\u8078\u81D7\u81D5\u8264\u8261\u8263\u85EB\u85F1\u85ED\u85D9\u85E1\u85E8\u85DA\u85D7\u85EC\u85F2\u85F8\u85D8\u85DF\u85E3\u85DC\u85D1\u85F0\u85E6\u85EF\u85DE\u85E2\u8800\u87FA\u8803\u87F6\u87F7\u8809\u880C\u880B\u8806\u87FC\u8808\u87FF\u880A\u8802\u8962\u895A\u895B\u8957\u8961\u895C\u8958\u895D\u8959\u8988\u89B7\u89B6\u89F6\u8B50\u8B48\u8B4A\u8B40\u8B53\u8B56\u8B54\u8B4B\u8B55"], + ["f340", "\u8B51\u8B42\u8B52\u8B57\u8C43\u8C77\u8C76\u8C9A\u8D06\u8D07\u8D09\u8DAC\u8DAA\u8DAD\u8DAB\u8E6D\u8E78\u8E73\u8E6A\u8E6F\u8E7B\u8EC2\u8F52\u8F51\u8F4F\u8F50\u8F53\u8FB4\u9140\u913F\u91B0\u91AD\u93DE\u93C7\u93CF\u93C2\u93DA\u93D0\u93F9\u93EC\u93CC\u93D9\u93A9\u93E6\u93CA\u93D4\u93EE\u93E3\u93D5\u93C4\u93CE\u93C0\u93D2\u93E7\u957D\u95DA\u95DB\u96E1\u9729\u972B\u972C\u9728\u9726"], + ["f3a1", "\u97B3\u97B7\u97B6\u97DD\u97DE\u97DF\u985C\u9859\u985D\u9857\u98BF\u98BD\u98BB\u98BE\u9948\u9947\u9943\u99A6\u99A7\u9A1A\u9A15\u9A25\u9A1D\u9A24\u9A1B\u9A22\u9A20\u9A27\u9A23\u9A1E\u9A1C\u9A14\u9AC2\u9B0B\u9B0A\u9B0E\u9B0C\u9B37\u9BEA\u9BEB\u9BE0\u9BDE\u9BE4\u9BE6\u9BE2\u9BF0\u9BD4\u9BD7\u9BEC\u9BDC\u9BD9\u9BE5\u9BD5\u9BE1\u9BDA\u9D77\u9D81\u9D8A\u9D84\u9D88\u9D71\u9D80\u9D78\u9D86\u9D8B\u9D8C\u9D7D\u9D6B\u9D74\u9D75\u9D70\u9D69\u9D85\u9D73\u9D7B\u9D82\u9D6F\u9D79\u9D7F\u9D87\u9D68\u9E94\u9E91\u9EC0\u9EFC\u9F2D\u9F40\u9F41\u9F4D\u9F56\u9F57\u9F58\u5337\u56B2"], + ["f440", "\u56B5\u56B3\u58E3\u5B45\u5DC6\u5DC7\u5EEE\u5EEF\u5FC0\u5FC1\u61F9\u6517\u6516\u6515\u6513\u65DF\u66E8\u66E3\u66E4\u6AF3\u6AF0\u6AEA\u6AE8\u6AF9\u6AF1\u6AEE\u6AEF\u703C\u7035\u702F\u7037\u7034\u7031\u7042\u7038\u703F\u703A\u7039\u7040\u703B\u7033\u7041\u7213\u7214\u72A8\u737D\u737C\u74BA\u76AB\u76AA\u76BE\u76ED\u77CC\u77CE\u77CF\u77CD\u77F2\u7925\u7923\u7927\u7928\u7924\u7929"], + ["f4a1", "\u79B2\u7A6E\u7A6C\u7A6D\u7AF7\u7C49\u7C48\u7C4A\u7C47\u7C45\u7CEE\u7E7B\u7E7E\u7E81\u7E80\u7FBA\u7FFF\u8079\u81DB\u81D9\u820B\u8268\u8269\u8622\u85FF\u8601\u85FE\u861B\u8600\u85F6\u8604\u8609\u8605\u860C\u85FD\u8819\u8810\u8811\u8817\u8813\u8816\u8963\u8966\u89B9\u89F7\u8B60\u8B6A\u8B5D\u8B68\u8B63\u8B65\u8B67\u8B6D\u8DAE\u8E86\u8E88\u8E84\u8F59\u8F56\u8F57\u8F55\u8F58\u8F5A\u908D\u9143\u9141\u91B7\u91B5\u91B2\u91B3\u940B\u9413\u93FB\u9420\u940F\u9414\u93FE\u9415\u9410\u9428\u9419\u940D\u93F5\u9400\u93F7\u9407\u940E\u9416\u9412\u93FA\u9409\u93F8\u940A\u93FF"], + ["f540", "\u93FC\u940C\u93F6\u9411\u9406\u95DE\u95E0\u95DF\u972E\u972F\u97B9\u97BB\u97FD\u97FE\u9860\u9862\u9863\u985F\u98C1\u98C2\u9950\u994E\u9959\u994C\u994B\u9953\u9A32\u9A34\u9A31\u9A2C\u9A2A\u9A36\u9A29\u9A2E\u9A38\u9A2D\u9AC7\u9ACA\u9AC6\u9B10\u9B12\u9B11\u9C0B\u9C08\u9BF7\u9C05\u9C12\u9BF8\u9C40\u9C07\u9C0E\u9C06\u9C17\u9C14\u9C09\u9D9F\u9D99\u9DA4\u9D9D\u9D92\u9D98\u9D90\u9D9B"], + ["f5a1", "\u9DA0\u9D94\u9D9C\u9DAA\u9D97\u9DA1\u9D9A\u9DA2\u9DA8\u9D9E\u9DA3\u9DBF\u9DA9\u9D96\u9DA6\u9DA7\u9E99\u9E9B\u9E9A\u9EE5\u9EE4\u9EE7\u9EE6\u9F30\u9F2E\u9F5B\u9F60\u9F5E\u9F5D\u9F59\u9F91\u513A\u5139\u5298\u5297\u56C3\u56BD\u56BE\u5B48\u5B47\u5DCB\u5DCF\u5EF1\u61FD\u651B\u6B02\u6AFC\u6B03\u6AF8\u6B00\u7043\u7044\u704A\u7048\u7049\u7045\u7046\u721D\u721A\u7219\u737E\u7517\u766A\u77D0\u792D\u7931\u792F\u7C54\u7C53\u7CF2\u7E8A\u7E87\u7E88\u7E8B\u7E86\u7E8D\u7F4D\u7FBB\u8030\u81DD\u8618\u862A\u8626\u861F\u8623\u861C\u8619\u8627\u862E\u8621\u8620\u8629\u861E\u8625"], + ["f640", "\u8829\u881D\u881B\u8820\u8824\u881C\u882B\u884A\u896D\u8969\u896E\u896B\u89FA\u8B79\u8B78\u8B45\u8B7A\u8B7B\u8D10\u8D14\u8DAF\u8E8E\u8E8C\u8F5E\u8F5B\u8F5D\u9146\u9144\u9145\u91B9\u943F\u943B\u9436\u9429\u943D\u943C\u9430\u9439\u942A\u9437\u942C\u9440\u9431\u95E5\u95E4\u95E3\u9735\u973A\u97BF\u97E1\u9864\u98C9\u98C6\u98C0\u9958\u9956\u9A39\u9A3D\u9A46\u9A44\u9A42\u9A41\u9A3A"], + ["f6a1", "\u9A3F\u9ACD\u9B15\u9B17\u9B18\u9B16\u9B3A\u9B52\u9C2B\u9C1D\u9C1C\u9C2C\u9C23\u9C28\u9C29\u9C24\u9C21\u9DB7\u9DB6\u9DBC\u9DC1\u9DC7\u9DCA\u9DCF\u9DBE\u9DC5\u9DC3\u9DBB\u9DB5\u9DCE\u9DB9\u9DBA\u9DAC\u9DC8\u9DB1\u9DAD\u9DCC\u9DB3\u9DCD\u9DB2\u9E7A\u9E9C\u9EEB\u9EEE\u9EED\u9F1B\u9F18\u9F1A\u9F31\u9F4E\u9F65\u9F64\u9F92\u4EB9\u56C6\u56C5\u56CB\u5971\u5B4B\u5B4C\u5DD5\u5DD1\u5EF2\u6521\u6520\u6526\u6522\u6B0B\u6B08\u6B09\u6C0D\u7055\u7056\u7057\u7052\u721E\u721F\u72A9\u737F\u74D8\u74D5\u74D9\u74D7\u766D\u76AD\u7935\u79B4\u7A70\u7A71\u7C57\u7C5C\u7C59\u7C5B\u7C5A"], + ["f740", "\u7CF4\u7CF1\u7E91\u7F4F\u7F87\u81DE\u826B\u8634\u8635\u8633\u862C\u8632\u8636\u882C\u8828\u8826\u882A\u8825\u8971\u89BF\u89BE\u89FB\u8B7E\u8B84\u8B82\u8B86\u8B85\u8B7F\u8D15\u8E95\u8E94\u8E9A\u8E92\u8E90\u8E96\u8E97\u8F60\u8F62\u9147\u944C\u9450\u944A\u944B\u944F\u9447\u9445\u9448\u9449\u9446\u973F\u97E3\u986A\u9869\u98CB\u9954\u995B\u9A4E\u9A53\u9A54\u9A4C\u9A4F\u9A48\u9A4A"], + ["f7a1", "\u9A49\u9A52\u9A50\u9AD0\u9B19\u9B2B\u9B3B\u9B56\u9B55\u9C46\u9C48\u9C3F\u9C44\u9C39\u9C33\u9C41\u9C3C\u9C37\u9C34\u9C32\u9C3D\u9C36\u9DDB\u9DD2\u9DDE\u9DDA\u9DCB\u9DD0\u9DDC\u9DD1\u9DDF\u9DE9\u9DD9\u9DD8\u9DD6\u9DF5\u9DD5\u9DDD\u9EB6\u9EF0\u9F35\u9F33\u9F32\u9F42\u9F6B\u9F95\u9FA2\u513D\u5299\u58E8\u58E7\u5972\u5B4D\u5DD8\u882F\u5F4F\u6201\u6203\u6204\u6529\u6525\u6596\u66EB\u6B11\u6B12\u6B0F\u6BCA\u705B\u705A\u7222\u7382\u7381\u7383\u7670\u77D4\u7C67\u7C66\u7E95\u826C\u863A\u8640\u8639\u863C\u8631\u863B\u863E\u8830\u8832\u882E\u8833\u8976\u8974\u8973\u89FE"], + ["f840", "\u8B8C\u8B8E\u8B8B\u8B88\u8C45\u8D19\u8E98\u8F64\u8F63\u91BC\u9462\u9455\u945D\u9457\u945E\u97C4\u97C5\u9800\u9A56\u9A59\u9B1E\u9B1F\u9B20\u9C52\u9C58\u9C50\u9C4A\u9C4D\u9C4B\u9C55\u9C59\u9C4C\u9C4E\u9DFB\u9DF7\u9DEF\u9DE3\u9DEB\u9DF8\u9DE4\u9DF6\u9DE1\u9DEE\u9DE6\u9DF2\u9DF0\u9DE2\u9DEC\u9DF4\u9DF3\u9DE8\u9DED\u9EC2\u9ED0\u9EF2\u9EF3\u9F06\u9F1C\u9F38\u9F37\u9F36\u9F43\u9F4F"], + ["f8a1", "\u9F71\u9F70\u9F6E\u9F6F\u56D3\u56CD\u5B4E\u5C6D\u652D\u66ED\u66EE\u6B13\u705F\u7061\u705D\u7060\u7223\u74DB\u74E5\u77D5\u7938\u79B7\u79B6\u7C6A\u7E97\u7F89\u826D\u8643\u8838\u8837\u8835\u884B\u8B94\u8B95\u8E9E\u8E9F\u8EA0\u8E9D\u91BE\u91BD\u91C2\u946B\u9468\u9469\u96E5\u9746\u9743\u9747\u97C7\u97E5\u9A5E\u9AD5\u9B59\u9C63\u9C67\u9C66\u9C62\u9C5E\u9C60\u9E02\u9DFE\u9E07\u9E03\u9E06\u9E05\u9E00\u9E01\u9E09\u9DFF\u9DFD\u9E04\u9EA0\u9F1E\u9F46\u9F74\u9F75\u9F76\u56D4\u652E\u65B8\u6B18\u6B19\u6B17\u6B1A\u7062\u7226\u72AA\u77D8\u77D9\u7939\u7C69\u7C6B\u7CF6\u7E9A"], + ["f940", "\u7E98\u7E9B\u7E99\u81E0\u81E1\u8646\u8647\u8648\u8979\u897A\u897C\u897B\u89FF\u8B98\u8B99\u8EA5\u8EA4\u8EA3\u946E\u946D\u946F\u9471\u9473\u9749\u9872\u995F\u9C68\u9C6E\u9C6D\u9E0B\u9E0D\u9E10\u9E0F\u9E12\u9E11\u9EA1\u9EF5\u9F09\u9F47\u9F78\u9F7B\u9F7A\u9F79\u571E\u7066\u7C6F\u883C\u8DB2\u8EA6\u91C3\u9474\u9478\u9476\u9475\u9A60\u9C74\u9C73\u9C71\u9C75\u9E14\u9E13\u9EF6\u9F0A"], + ["f9a1", "\u9FA4\u7068\u7065\u7CF7\u866A\u883E\u883D\u883F\u8B9E\u8C9C\u8EA9\u8EC9\u974B\u9873\u9874\u98CC\u9961\u99AB\u9A64\u9A66\u9A67\u9B24\u9E15\u9E17\u9F48\u6207\u6B1E\u7227\u864C\u8EA8\u9482\u9480\u9481\u9A69\u9A68\u9B2E\u9E19\u7229\u864B\u8B9F\u9483\u9C79\u9EB7\u7675\u9A6B\u9C7A\u9E1D\u7069\u706A\u9EA4\u9F7E\u9F49\u9F98\u7881\u92B9\u88CF\u58BB\u6052\u7CA7\u5AFA\u2554\u2566\u2557\u2560\u256C\u2563\u255A\u2569\u255D\u2552\u2564\u2555\u255E\u256A\u2561\u2558\u2567\u255B\u2553\u2565\u2556\u255F\u256B\u2562\u2559\u2568\u255C\u2551\u2550\u256D\u256E\u2570\u256F\u2593"] + ]; + } +}); + +// node_modules/iconv-lite/encodings/tables/big5-added.json +var require_big5_added = __commonJS({ + "node_modules/iconv-lite/encodings/tables/big5-added.json"(exports2, module2) { + module2.exports = [ + ["8740", "\u43F0\u4C32\u4603\u45A6\u4578\u{27267}\u4D77\u45B3\u{27CB1}\u4CE2\u{27CC5}\u3B95\u4736\u4744\u4C47\u4C40\u{242BF}\u{23617}\u{27352}\u{26E8B}\u{270D2}\u4C57\u{2A351}\u474F\u45DA\u4C85\u{27C6C}\u4D07\u4AA4\u46A1\u{26B23}\u7225\u{25A54}\u{21A63}\u{23E06}\u{23F61}\u664D\u56FB"], + ["8767", "\u7D95\u591D\u{28BB9}\u3DF4\u9734\u{27BEF}\u5BDB\u{21D5E}\u5AA4\u3625\u{29EB0}\u5AD1\u5BB7\u5CFC\u676E\u8593\u{29945}\u7461\u749D\u3875\u{21D53}\u{2369E}\u{26021}\u3EEC"], + ["87a1", "\u{258DE}\u3AF5\u7AFC\u9F97\u{24161}\u{2890D}\u{231EA}\u{20A8A}\u{2325E}\u430A\u8484\u9F96\u942F\u4930\u8613\u5896\u974A\u9218\u79D0\u7A32\u6660\u6A29\u889D\u744C\u7BC5\u6782\u7A2C\u524F\u9046\u34E6\u73C4\u{25DB9}\u74C6\u9FC7\u57B3\u492F\u544C\u4131\u{2368E}\u5818\u7A72\u{27B65}\u8B8F\u46AE\u{26E88}\u4181\u{25D99}\u7BAE\u{224BC}\u9FC8\u{224C1}\u{224C9}\u{224CC}\u9FC9\u8504\u{235BB}\u40B4\u9FCA\u44E1\u{2ADFF}\u62C1\u706E\u9FCB"], + ["8840", "\u31C0", 4, "\u{2010C}\u31C5\u{200D1}\u{200CD}\u31C6\u31C7\u{200CB}\u{21FE8}\u31C8\u{200CA}\u31C9\u31CA\u31CB\u31CC\u{2010E}\u31CD\u31CE\u0100\xC1\u01CD\xC0\u0112\xC9\u011A\xC8\u014C\xD3\u01D1\xD2\u0FFF\xCA\u0304\u1EBE\u0FFF\xCA\u030C\u1EC0\xCA\u0101\xE1\u01CE\xE0\u0251\u0113\xE9\u011B\xE8\u012B\xED\u01D0\xEC\u014D\xF3\u01D2\xF2\u016B\xFA\u01D4\xF9\u01D6\u01D8\u01DA"], + ["88a1", "\u01DC\xFC\u0FFF\xEA\u0304\u1EBF\u0FFF\xEA\u030C\u1EC1\xEA\u0261\u23DA\u23DB"], + ["8940", "\u{2A3A9}\u{21145}"], + ["8943", "\u650A"], + ["8946", "\u4E3D\u6EDD\u9D4E\u91DF"], + ["894c", "\u{27735}\u6491\u4F1A\u4F28\u4FA8\u5156\u5174\u519C\u51E4\u52A1\u52A8\u533B\u534E\u53D1\u53D8\u56E2\u58F0\u5904\u5907\u5932\u5934\u5B66\u5B9E\u5B9F\u5C9A\u5E86\u603B\u6589\u67FE\u6804\u6865\u6D4E\u70BC\u7535\u7EA4\u7EAC\u7EBA\u7EC7\u7ECF\u7EDF\u7F06\u7F37\u827A\u82CF\u836F\u89C6\u8BBE\u8BE2\u8F66\u8F67\u8F6E"], + ["89a1", "\u7411\u7CFC\u7DCD\u6946\u7AC9\u5227"], + ["89ab", "\u918C\u78B8\u915E\u80BC"], + ["89b0", "\u8D0B\u80F6\u{209E7}"], + ["89b5", "\u809F\u9EC7\u4CCD\u9DC9\u9E0C\u4C3E\u{29DF6}\u{2700E}\u9E0A\u{2A133}\u35C1"], + ["89c1", "\u6E9A\u823E\u7519"], + ["89c5", "\u4911\u9A6C\u9A8F\u9F99\u7987\u{2846C}\u{21DCA}\u{205D0}\u{22AE6}\u4E24\u4E81\u4E80\u4E87\u4EBF\u4EEB\u4F37\u344C\u4FBD\u3E48\u5003\u5088\u347D\u3493\u34A5\u5186\u5905\u51DB\u51FC\u5205\u4E89\u5279\u5290\u5327\u35C7\u53A9\u3551\u53B0\u3553\u53C2\u5423\u356D\u3572\u3681\u5493\u54A3\u54B4\u54B9\u54D0\u54EF\u5518\u5523\u5528\u3598\u553F\u35A5\u35BF\u55D7\u35C5"], + ["8a40", "\u{27D84}\u5525"], + ["8a43", "\u{20C42}\u{20D15}\u{2512B}\u5590\u{22CC6}\u39EC\u{20341}\u8E46\u{24DB8}\u{294E5}\u4053\u{280BE}\u777A\u{22C38}\u3A34\u47D5\u{2815D}\u{269F2}\u{24DEA}\u64DD\u{20D7C}\u{20FB4}\u{20CD5}\u{210F4}\u648D\u8E7E\u{20E96}\u{20C0B}\u{20F64}\u{22CA9}\u{28256}\u{244D3}"], + ["8a64", "\u{20D46}\u{29A4D}\u{280E9}\u47F4\u{24EA7}\u{22CC2}\u9AB2\u3A67\u{295F4}\u3FED\u3506\u{252C7}\u{297D4}\u{278C8}\u{22D44}\u9D6E\u9815"], + ["8a76", "\u43D9\u{260A5}\u64B4\u54E3\u{22D4C}\u{22BCA}\u{21077}\u39FB\u{2106F}"], + ["8aa1", "\u{266DA}\u{26716}\u{279A0}\u64EA\u{25052}\u{20C43}\u8E68\u{221A1}\u{28B4C}\u{20731}"], + ["8aac", "\u480B\u{201A9}\u3FFA\u5873\u{22D8D}"], + ["8ab2", "\u{245C8}\u{204FC}\u{26097}\u{20F4C}\u{20D96}\u5579\u40BB\u43BA"], + ["8abb", "\u4AB4\u{22A66}\u{2109D}\u81AA\u98F5\u{20D9C}\u6379\u39FE\u{22775}\u8DC0\u56A1\u647C\u3E43"], + ["8ac9", "\u{2A601}\u{20E09}\u{22ACF}\u{22CC9}"], + ["8ace", "\u{210C8}\u{239C2}\u3992\u3A06\u{2829B}\u3578\u{25E49}\u{220C7}\u5652\u{20F31}\u{22CB2}\u{29720}\u34BC\u6C3D\u{24E3B}"], + ["8adf", "\u{27574}\u{22E8B}\u{22208}\u{2A65B}\u{28CCD}\u{20E7A}\u{20C34}\u{2681C}\u7F93\u{210CF}\u{22803}\u{22939}\u35FB\u{251E3}\u{20E8C}\u{20F8D}\u{20EAA}\u3F93\u{20F30}\u{20D47}\u{2114F}\u{20E4C}"], + ["8af6", "\u{20EAB}\u{20BA9}\u{20D48}\u{210C0}\u{2113D}\u3FF9\u{22696}\u6432\u{20FAD}"], + ["8b40", "\u{233F4}\u{27639}\u{22BCE}\u{20D7E}\u{20D7F}\u{22C51}\u{22C55}\u3A18\u{20E98}\u{210C7}\u{20F2E}\u{2A632}\u{26B50}\u{28CD2}\u{28D99}\u{28CCA}\u95AA\u54CC\u82C4\u55B9"], + ["8b55", "\u{29EC3}\u9C26\u9AB6\u{2775E}\u{22DEE}\u7140\u816D\u80EC\u5C1C\u{26572}\u8134\u3797\u535F\u{280BD}\u91B6\u{20EFA}\u{20E0F}\u{20E77}\u{20EFB}\u35DD\u{24DEB}\u3609\u{20CD6}\u56AF\u{227B5}\u{210C9}\u{20E10}\u{20E78}\u{21078}\u{21148}\u{28207}\u{21455}\u{20E79}\u{24E50}\u{22DA4}\u5A54\u{2101D}\u{2101E}\u{210F5}\u{210F6}\u579C\u{20E11}"], + ["8ba1", "\u{27694}\u{282CD}\u{20FB5}\u{20E7B}\u{2517E}\u3703\u{20FB6}\u{21180}\u{252D8}\u{2A2BD}\u{249DA}\u{2183A}\u{24177}\u{2827C}\u5899\u5268\u361A\u{2573D}\u7BB2\u5B68\u4800\u4B2C\u9F27\u49E7\u9C1F\u9B8D\u{25B74}\u{2313D}\u55FB\u35F2\u5689\u4E28\u5902\u{21BC1}\u{2F878}\u9751\u{20086}\u4E5B\u4EBB\u353E\u5C23\u5F51\u5FC4\u38FA\u624C\u6535\u6B7A\u6C35\u6C3A\u706C\u722B\u4E2C\u72AD\u{248E9}\u7F52\u793B\u7CF9\u7F53\u{2626A}\u34C1"], + ["8bde", "\u{2634B}\u8002\u8080\u{26612}\u{26951}\u535D\u8864\u89C1\u{278B2}\u8BA0\u8D1D\u9485\u9578\u957F\u95E8\u{28E0F}\u97E6\u9875\u98CE\u98DE\u9963\u{29810}\u9C7C\u9E1F\u9EC4\u6B6F\uF907\u4E37\u{20087}\u961D\u6237\u94A2"], + ["8c40", "\u503B\u6DFE\u{29C73}\u9FA6\u3DC9\u888F\u{2414E}\u7077\u5CF5\u4B20\u{251CD}\u3559\u{25D30}\u6122\u{28A32}\u8FA7\u91F6\u7191\u6719\u73BA\u{23281}\u{2A107}\u3C8B\u{21980}\u4B10\u78E4\u7402\u51AE\u{2870F}\u4009\u6A63\u{2A2BA}\u4223\u860F\u{20A6F}\u7A2A\u{29947}\u{28AEA}\u9755\u704D\u5324\u{2207E}\u93F4\u76D9\u{289E3}\u9FA7\u77DD\u4EA3\u4FF0\u50BC\u4E2F\u4F17\u9FA8\u5434\u7D8B\u5892\u58D0\u{21DB6}\u5E92\u5E99\u5FC2\u{22712}\u658B"], + ["8ca1", "\u{233F9}\u6919\u6A43\u{23C63}\u6CFF"], + ["8ca7", "\u7200\u{24505}\u738C\u3EDB\u{24A13}\u5B15\u74B9\u8B83\u{25CA4}\u{25695}\u7A93\u7BEC\u7CC3\u7E6C\u82F8\u8597\u9FA9\u8890\u9FAA\u8EB9\u9FAB\u8FCF\u855F\u99E0\u9221\u9FAC\u{28DB9}\u{2143F}\u4071\u42A2\u5A1A"], + ["8cc9", "\u9868\u676B\u4276\u573D"], + ["8cce", "\u85D6\u{2497B}\u82BF\u{2710D}\u4C81\u{26D74}\u5D7B\u{26B15}\u{26FBE}\u9FAD\u9FAE\u5B96\u9FAF\u66E7\u7E5B\u6E57\u79CA\u3D88\u44C3\u{23256}\u{22796}\u439A\u4536"], + ["8ce6", "\u5CD5\u{23B1A}\u8AF9\u5C78\u3D12\u{23551}\u5D78\u9FB2\u7157\u4558\u{240EC}\u{21E23}\u4C77\u3978\u344A\u{201A4}\u{26C41}\u8ACC\u4FB4\u{20239}\u59BF\u816C\u9856\u{298FA}\u5F3B"], + ["8d40", "\u{20B9F}"], + ["8d42", "\u{221C1}\u{2896D}\u4102\u46BB\u{29079}\u3F07\u9FB3\u{2A1B5}\u40F8\u37D6\u46F7\u{26C46}\u417C\u{286B2}\u{273FF}\u456D\u38D4\u{2549A}\u4561\u451B\u4D89\u4C7B\u4D76\u45EA\u3FC8\u{24B0F}\u3661\u44DE\u44BD\u41ED\u5D3E\u5D48\u5D56\u3DFC\u380F\u5DA4\u5DB9\u3820\u3838\u5E42\u5EBD\u5F25\u5F83\u3908\u3914\u393F\u394D\u60D7\u613D\u5CE5\u3989\u61B7\u61B9\u61CF\u39B8\u622C\u6290\u62E5\u6318\u39F8\u56B1"], + ["8da1", "\u3A03\u63E2\u63FB\u6407\u645A\u3A4B\u64C0\u5D15\u5621\u9F9F\u3A97\u6586\u3ABD\u65FF\u6653\u3AF2\u6692\u3B22\u6716\u3B42\u67A4\u6800\u3B58\u684A\u6884\u3B72\u3B71\u3B7B\u6909\u6943\u725C\u6964\u699F\u6985\u3BBC\u69D6\u3BDD\u6A65\u6A74\u6A71\u6A82\u3BEC\u6A99\u3BF2\u6AAB\u6AB5\u6AD4\u6AF6\u6B81\u6BC1\u6BEA\u6C75\u6CAA\u3CCB\u6D02\u6D06\u6D26\u6D81\u3CEF\u6DA4\u6DB1\u6E15\u6E18\u6E29\u6E86\u{289C0}\u6EBB\u6EE2\u6EDA\u9F7F\u6EE8\u6EE9\u6F24\u6F34\u3D46\u{23F41}\u6F81\u6FBE\u3D6A\u3D75\u71B7\u5C99\u3D8A\u702C\u3D91\u7050\u7054\u706F\u707F\u7089\u{20325}\u43C1\u35F1\u{20ED8}"], + ["8e40", "\u{23ED7}\u57BE\u{26ED3}\u713E\u{257E0}\u364E\u69A2\u{28BE9}\u5B74\u7A49\u{258E1}\u{294D9}\u7A65\u7A7D\u{259AC}\u7ABB\u7AB0\u7AC2\u7AC3\u71D1\u{2648D}\u41CA\u7ADA\u7ADD\u7AEA\u41EF\u54B2\u{25C01}\u7B0B\u7B55\u7B29\u{2530E}\u{25CFE}\u7BA2\u7B6F\u839C\u{25BB4}\u{26C7F}\u7BD0\u8421\u7B92\u7BB8\u{25D20}\u3DAD\u{25C65}\u8492\u7BFA\u7C06\u7C35\u{25CC1}\u7C44\u7C83\u{24882}\u7CA6\u667D\u{24578}\u7CC9\u7CC7\u7CE6\u7C74\u7CF3\u7CF5\u7CCE"], + ["8ea1", "\u7E67\u451D\u{26E44}\u7D5D\u{26ED6}\u748D\u7D89\u7DAB\u7135\u7DB3\u7DD2\u{24057}\u{26029}\u7DE4\u3D13\u7DF5\u{217F9}\u7DE5\u{2836D}\u7E1D\u{26121}\u{2615A}\u7E6E\u7E92\u432B\u946C\u7E27\u7F40\u7F41\u7F47\u7936\u{262D0}\u99E1\u7F97\u{26351}\u7FA3\u{21661}\u{20068}\u455C\u{23766}\u4503\u{2833A}\u7FFA\u{26489}\u8005\u8008\u801D\u8028\u802F\u{2A087}\u{26CC3}\u803B\u803C\u8061\u{22714}\u4989\u{26626}\u{23DE3}\u{266E8}\u6725\u80A7\u{28A48}\u8107\u811A\u58B0\u{226F6}\u6C7F\u{26498}\u{24FB8}\u64E7\u{2148A}\u8218\u{2185E}\u6A53\u{24A65}\u{24A95}\u447A\u8229\u{20B0D}\u{26A52}\u{23D7E}\u4FF9\u{214FD}\u84E2\u8362\u{26B0A}\u{249A7}\u{23530}\u{21773}\u{23DF8}\u82AA\u691B\u{2F994}\u41DB"], + ["8f40", "\u854B\u82D0\u831A\u{20E16}\u{217B4}\u36C1\u{2317D}\u{2355A}\u827B\u82E2\u8318\u{23E8B}\u{26DA3}\u{26B05}\u{26B97}\u{235CE}\u3DBF\u831D\u55EC\u8385\u450B\u{26DA5}\u83AC\u83C1\u83D3\u347E\u{26ED4}\u6A57\u855A\u3496\u{26E42}\u{22EEF}\u8458\u{25BE4}\u8471\u3DD3\u44E4\u6AA7\u844A\u{23CB5}\u7958\u84A8\u{26B96}\u{26E77}\u{26E43}\u84DE\u840F\u8391\u44A0\u8493\u84E4\u{25C91}\u4240\u{25CC0}\u4543\u8534\u5AF2\u{26E99}\u4527\u8573\u4516\u67BF\u8616"], + ["8fa1", "\u{28625}\u{2863B}\u85C1\u{27088}\u8602\u{21582}\u{270CD}\u{2F9B2}\u456A\u8628\u3648\u{218A2}\u53F7\u{2739A}\u867E\u8771\u{2A0F8}\u87EE\u{22C27}\u87B1\u87DA\u880F\u5661\u866C\u6856\u460F\u8845\u8846\u{275E0}\u{23DB9}\u{275E4}\u885E\u889C\u465B\u88B4\u88B5\u63C1\u88C5\u7777\u{2770F}\u8987\u898A\u89A6\u89A9\u89A7\u89BC\u{28A25}\u89E7\u{27924}\u{27ABD}\u8A9C\u7793\u91FE\u8A90\u{27A59}\u7AE9\u{27B3A}\u{23F8F}\u4713\u{27B38}\u717C\u8B0C\u8B1F\u{25430}\u{25565}\u8B3F\u8B4C\u8B4D\u8AA9\u{24A7A}\u8B90\u8B9B\u8AAF\u{216DF}\u4615\u884F\u8C9B\u{27D54}\u{27D8F}\u{2F9D4}\u3725\u{27D53}\u8CD6\u{27D98}\u{27DBD}\u8D12\u8D03\u{21910}\u8CDB\u705C\u8D11\u{24CC9}\u3ED0\u8D77"], + ["9040", "\u8DA9\u{28002}\u{21014}\u{2498A}\u3B7C\u{281BC}\u{2710C}\u7AE7\u8EAD\u8EB6\u8EC3\u92D4\u8F19\u8F2D\u{28365}\u{28412}\u8FA5\u9303\u{2A29F}\u{20A50}\u8FB3\u492A\u{289DE}\u{2853D}\u{23DBB}\u5EF8\u{23262}\u8FF9\u{2A014}\u{286BC}\u{28501}\u{22325}\u3980\u{26ED7}\u9037\u{2853C}\u{27ABE}\u9061\u{2856C}\u{2860B}\u90A8\u{28713}\u90C4\u{286E6}\u90AE\u90FD\u9167\u3AF0\u91A9\u91C4\u7CAC\u{28933}\u{21E89}\u920E\u6C9F\u9241\u9262\u{255B9}\u92B9\u{28AC6}\u{23C9B}\u{28B0C}\u{255DB}"], + ["90a1", "\u{20D31}\u932C\u936B\u{28AE1}\u{28BEB}\u708F\u5AC3\u{28AE2}\u{28AE5}\u4965\u9244\u{28BEC}\u{28C39}\u{28BFF}\u9373\u945B\u8EBC\u9585\u95A6\u9426\u95A0\u6FF6\u42B9\u{2267A}\u{286D8}\u{2127C}\u{23E2E}\u49DF\u6C1C\u967B\u9696\u416C\u96A3\u{26ED5}\u61DA\u96B6\u78F5\u{28AE0}\u96BD\u53CC\u49A1\u{26CB8}\u{20274}\u{26410}\u{290AF}\u{290E5}\u{24AD1}\u{21915}\u{2330A}\u9731\u8642\u9736\u4A0F\u453D\u4585\u{24AE9}\u7075\u5B41\u971B\u975C\u{291D5}\u9757\u5B4A\u{291EB}\u975F\u9425\u50D0\u{230B7}\u{230BC}\u9789\u979F\u97B1\u97BE\u97C0\u97D2\u97E0\u{2546C}\u97EE\u741C\u{29433}\u97FF\u97F5\u{2941D}\u{2797A}\u4AD1\u9834\u9833\u984B\u9866\u3B0E\u{27175}\u3D51\u{20630}\u{2415C}"], + ["9140", "\u{25706}\u98CA\u98B7\u98C8\u98C7\u4AFF\u{26D27}\u{216D3}\u55B0\u98E1\u98E6\u98EC\u9378\u9939\u{24A29}\u4B72\u{29857}\u{29905}\u99F5\u9A0C\u9A3B\u9A10\u9A58\u{25725}\u36C4\u{290B1}\u{29BD5}\u9AE0\u9AE2\u{29B05}\u9AF4\u4C0E\u9B14\u9B2D\u{28600}\u5034\u9B34\u{269A8}\u38C3\u{2307D}\u9B50\u9B40\u{29D3E}\u5A45\u{21863}\u9B8E\u{2424B}\u9C02\u9BFF\u9C0C\u{29E68}\u9DD4\u{29FB7}\u{2A192}\u{2A1AB}\u{2A0E1}\u{2A123}\u{2A1DF}\u9D7E\u9D83\u{2A134}\u9E0E\u6888"], + ["91a1", "\u9DC4\u{2215B}\u{2A193}\u{2A220}\u{2193B}\u{2A233}\u9D39\u{2A0B9}\u{2A2B4}\u9E90\u9E95\u9E9E\u9EA2\u4D34\u9EAA\u9EAF\u{24364}\u9EC1\u3B60\u39E5\u3D1D\u4F32\u37BE\u{28C2B}\u9F02\u9F08\u4B96\u9424\u{26DA2}\u9F17\u9F16\u9F39\u569F\u568A\u9F45\u99B8\u{2908B}\u97F2\u847F\u9F62\u9F69\u7ADC\u9F8E\u7216\u4BBE\u{24975}\u{249BB}\u7177\u{249F8}\u{24348}\u{24A51}\u739E\u{28BDA}\u{218FA}\u799F\u{2897E}\u{28E36}\u9369\u93F3\u{28A44}\u92EC\u9381\u93CB\u{2896C}\u{244B9}\u7217\u3EEB\u7772\u7A43\u70D0\u{24473}\u{243F8}\u717E\u{217EF}\u70A3\u{218BE}\u{23599}\u3EC7\u{21885}\u{2542F}\u{217F8}\u3722\u{216FB}\u{21839}\u36E1\u{21774}\u{218D1}\u{25F4B}\u3723\u{216C0}\u575B\u{24A25}\u{213FE}\u{212A8}"], + ["9240", "\u{213C6}\u{214B6}\u8503\u{236A6}\u8503\u8455\u{24994}\u{27165}\u{23E31}\u{2555C}\u{23EFB}\u{27052}\u44F4\u{236EE}\u{2999D}\u{26F26}\u67F9\u3733\u3C15\u3DE7\u586C\u{21922}\u6810\u4057\u{2373F}\u{240E1}\u{2408B}\u{2410F}\u{26C21}\u54CB\u569E\u{266B1}\u5692\u{20FDF}\u{20BA8}\u{20E0D}\u93C6\u{28B13}\u939C\u4EF8\u512B\u3819\u{24436}\u4EBC\u{20465}\u{2037F}\u4F4B\u4F8A\u{25651}\u5A68\u{201AB}\u{203CB}\u3999\u{2030A}\u{20414}\u3435\u4F29\u{202C0}\u{28EB3}\u{20275}\u8ADA\u{2020C}\u4E98"], + ["92a1", "\u50CD\u510D\u4FA2\u4F03\u{24A0E}\u{23E8A}\u4F42\u502E\u506C\u5081\u4FCC\u4FE5\u5058\u50FC\u5159\u515B\u515D\u515E\u6E76\u{23595}\u{23E39}\u{23EBF}\u6D72\u{21884}\u{23E89}\u51A8\u51C3\u{205E0}\u44DD\u{204A3}\u{20492}\u{20491}\u8D7A\u{28A9C}\u{2070E}\u5259\u52A4\u{20873}\u52E1\u936E\u467A\u718C\u{2438C}\u{20C20}\u{249AC}\u{210E4}\u69D1\u{20E1D}\u7479\u3EDE\u7499\u7414\u7456\u7398\u4B8E\u{24ABC}\u{2408D}\u53D0\u3584\u720F\u{240C9}\u55B4\u{20345}\u54CD\u{20BC6}\u571D\u925D\u96F4\u9366\u57DD\u578D\u577F\u363E\u58CB\u5A99\u{28A46}\u{216FA}\u{2176F}\u{21710}\u5A2C\u59B8\u928F\u5A7E\u5ACF\u5A12\u{25946}\u{219F3}\u{21861}\u{24295}\u36F5\u6D05\u7443\u5A21\u{25E83}"], + ["9340", "\u5A81\u{28BD7}\u{20413}\u93E0\u748C\u{21303}\u7105\u4972\u9408\u{289FB}\u93BD\u37A0\u5C1E\u5C9E\u5E5E\u5E48\u{21996}\u{2197C}\u{23AEE}\u5ECD\u5B4F\u{21903}\u{21904}\u3701\u{218A0}\u36DD\u{216FE}\u36D3\u812A\u{28A47}\u{21DBA}\u{23472}\u{289A8}\u5F0C\u5F0E\u{21927}\u{217AB}\u5A6B\u{2173B}\u5B44\u8614\u{275FD}\u8860\u607E\u{22860}\u{2262B}\u5FDB\u3EB8\u{225AF}\u{225BE}\u{29088}\u{26F73}\u61C0\u{2003E}\u{20046}\u{2261B}\u6199\u6198\u6075\u{22C9B}\u{22D07}\u{246D4}\u{2914D}"], + ["93a1", "\u6471\u{24665}\u{22B6A}\u3A29\u{22B22}\u{23450}\u{298EA}\u{22E78}\u6337\u{2A45B}\u64B6\u6331\u63D1\u{249E3}\u{22D67}\u62A4\u{22CA1}\u643B\u656B\u6972\u3BF4\u{2308E}\u{232AD}\u{24989}\u{232AB}\u550D\u{232E0}\u{218D9}\u{2943F}\u66CE\u{23289}\u{231B3}\u3AE0\u4190\u{25584}\u{28B22}\u{2558F}\u{216FC}\u{2555B}\u{25425}\u78EE\u{23103}\u{2182A}\u{23234}\u3464\u{2320F}\u{23182}\u{242C9}\u668E\u{26D24}\u666B\u4B93\u6630\u{27870}\u{21DEB}\u6663\u{232D2}\u{232E1}\u661E\u{25872}\u38D1\u{2383A}\u{237BC}\u3B99\u{237A2}\u{233FE}\u74D0\u3B96\u678F\u{2462A}\u68B6\u681E\u3BC4\u6ABE\u3863\u{237D5}\u{24487}\u6A33\u6A52\u6AC9\u6B05\u{21912}\u6511\u6898\u6A4C\u3BD7\u6A7A\u6B57\u{23FC0}\u{23C9A}\u93A0\u92F2\u{28BEA}\u{28ACB}"], + ["9440", "\u9289\u{2801E}\u{289DC}\u9467\u6DA5\u6F0B\u{249EC}\u6D67\u{23F7F}\u3D8F\u6E04\u{2403C}\u5A3D\u6E0A\u5847\u6D24\u7842\u713B\u{2431A}\u{24276}\u70F1\u7250\u7287\u7294\u{2478F}\u{24725}\u5179\u{24AA4}\u{205EB}\u747A\u{23EF8}\u{2365F}\u{24A4A}\u{24917}\u{25FE1}\u3F06\u3EB1\u{24ADF}\u{28C23}\u{23F35}\u60A7\u3EF3\u74CC\u743C\u9387\u7437\u449F\u{26DEA}\u4551\u7583\u3F63\u{24CD9}\u{24D06}\u3F58\u7555\u7673\u{2A5C6}\u3B19\u7468\u{28ACC}\u{249AB}\u{2498E}\u3AFB"], + ["94a1", "\u3DCD\u{24A4E}\u3EFF\u{249C5}\u{248F3}\u91FA\u5732\u9342\u{28AE3}\u{21864}\u50DF\u{25221}\u{251E7}\u7778\u{23232}\u770E\u770F\u777B\u{24697}\u{23781}\u3A5E\u{248F0}\u7438\u749B\u3EBF\u{24ABA}\u{24AC7}\u40C8\u{24A96}\u{261AE}\u9307\u{25581}\u781E\u788D\u7888\u78D2\u73D0\u7959\u{27741}\u{256E3}\u410E\u799B\u8496\u79A5\u6A2D\u{23EFA}\u7A3A\u79F4\u416E\u{216E6}\u4132\u9235\u79F1\u{20D4C}\u{2498C}\u{20299}\u{23DBA}\u{2176E}\u3597\u556B\u3570\u36AA\u{201D4}\u{20C0D}\u7AE2\u5A59\u{226F5}\u{25AAF}\u{25A9C}\u5A0D\u{2025B}\u78F0\u5A2A\u{25BC6}\u7AFE\u41F9\u7C5D\u7C6D\u4211\u{25BB3}\u{25EBC}\u{25EA6}\u7CCD\u{249F9}\u{217B0}\u7C8E\u7C7C\u7CAE\u6AB2\u7DDC\u7E07\u7DD3\u7F4E\u{26261}"], + ["9540", "\u{2615C}\u{27B48}\u7D97\u{25E82}\u426A\u{26B75}\u{20916}\u67D6\u{2004E}\u{235CF}\u57C4\u{26412}\u{263F8}\u{24962}\u7FDD\u7B27\u{2082C}\u{25AE9}\u{25D43}\u7B0C\u{25E0E}\u99E6\u8645\u9A63\u6A1C\u{2343F}\u39E2\u{249F7}\u{265AD}\u9A1F\u{265A0}\u8480\u{27127}\u{26CD1}\u44EA\u8137\u4402\u80C6\u8109\u8142\u{267B4}\u98C3\u{26A42}\u8262\u8265\u{26A51}\u8453\u{26DA7}\u8610\u{2721B}\u5A86\u417F\u{21840}\u5B2B\u{218A1}\u5AE4\u{218D8}\u86A0\u{2F9BC}\u{23D8F}\u882D\u{27422}\u5A02"], + ["95a1", "\u886E\u4F45\u8887\u88BF\u88E6\u8965\u894D\u{25683}\u8954\u{27785}\u{27784}\u{28BF5}\u{28BD9}\u{28B9C}\u{289F9}\u3EAD\u84A3\u46F5\u46CF\u37F2\u8A3D\u8A1C\u{29448}\u5F4D\u922B\u{24284}\u65D4\u7129\u70C4\u{21845}\u9D6D\u8C9F\u8CE9\u{27DDC}\u599A\u77C3\u59F0\u436E\u36D4\u8E2A\u8EA7\u{24C09}\u8F30\u8F4A\u42F4\u6C58\u6FBB\u{22321}\u489B\u6F79\u6E8B\u{217DA}\u9BE9\u36B5\u{2492F}\u90BB\u9097\u5571\u4906\u91BB\u9404\u{28A4B}\u4062\u{28AFC}\u9427\u{28C1D}\u{28C3B}\u84E5\u8A2B\u9599\u95A7\u9597\u9596\u{28D34}\u7445\u3EC2\u{248FF}\u{24A42}\u{243EA}\u3EE7\u{23225}\u968F\u{28EE7}\u{28E66}\u{28E65}\u3ECC\u{249ED}\u{24A78}\u{23FEE}\u7412\u746B\u3EFC\u9741\u{290B0}"], + ["9640", "\u6847\u4A1D\u{29093}\u{257DF}\u975D\u9368\u{28989}\u{28C26}\u{28B2F}\u{263BE}\u92BA\u5B11\u8B69\u493C\u73F9\u{2421B}\u979B\u9771\u9938\u{20F26}\u5DC1\u{28BC5}\u{24AB2}\u981F\u{294DA}\u92F6\u{295D7}\u91E5\u44C0\u{28B50}\u{24A67}\u{28B64}\u98DC\u{28A45}\u3F00\u922A\u4925\u8414\u993B\u994D\u{27B06}\u3DFD\u999B\u4B6F\u99AA\u9A5C\u{28B65}\u{258C8}\u6A8F\u9A21\u5AFE\u9A2F\u{298F1}\u4B90\u{29948}\u99BC\u4BBD\u4B97\u937D\u5872\u{21302}\u5822\u{249B8}"], + ["96a1", "\u{214E8}\u7844\u{2271F}\u{23DB8}\u68C5\u3D7D\u9458\u3927\u6150\u{22781}\u{2296B}\u6107\u9C4F\u9C53\u9C7B\u9C35\u9C10\u9B7F\u9BCF\u{29E2D}\u9B9F\u{2A1F5}\u{2A0FE}\u9D21\u4CAE\u{24104}\u9E18\u4CB0\u9D0C\u{2A1B4}\u{2A0ED}\u{2A0F3}\u{2992F}\u9DA5\u84BD\u{26E12}\u{26FDF}\u{26B82}\u85FC\u4533\u{26DA4}\u{26E84}\u{26DF0}\u8420\u85EE\u{26E00}\u{237D7}\u{26064}\u79E2\u{2359C}\u{23640}\u492D\u{249DE}\u3D62\u93DB\u92BE\u9348\u{202BF}\u78B9\u9277\u944D\u4FE4\u3440\u9064\u{2555D}\u783D\u7854\u78B6\u784B\u{21757}\u{231C9}\u{24941}\u369A\u4F72\u6FDA\u6FD9\u701E\u701E\u5414\u{241B5}\u57BB\u58F3\u578A\u9D16\u57D7\u7134\u34AF\u{241AC}\u71EB\u{26C40}\u{24F97}\u5B28\u{217B5}\u{28A49}"], + ["9740", "\u610C\u5ACE\u5A0B\u42BC\u{24488}\u372C\u4B7B\u{289FC}\u93BB\u93B8\u{218D6}\u{20F1D}\u8472\u{26CC0}\u{21413}\u{242FA}\u{22C26}\u{243C1}\u5994\u{23DB7}\u{26741}\u7DA8\u{2615B}\u{260A4}\u{249B9}\u{2498B}\u{289FA}\u92E5\u73E2\u3EE9\u74B4\u{28B63}\u{2189F}\u3EE1\u{24AB3}\u6AD8\u73F3\u73FB\u3ED6\u{24A3E}\u{24A94}\u{217D9}\u{24A66}\u{203A7}\u{21424}\u{249E5}\u7448\u{24916}\u70A5\u{24976}\u9284\u73E6\u935F\u{204FE}\u9331\u{28ACE}\u{28A16}\u9386\u{28BE7}\u{255D5}\u4935\u{28A82}\u716B"], + ["97a1", "\u{24943}\u{20CFF}\u56A4\u{2061A}\u{20BEB}\u{20CB8}\u5502\u79C4\u{217FA}\u7DFE\u{216C2}\u{24A50}\u{21852}\u452E\u9401\u370A\u{28AC0}\u{249AD}\u59B0\u{218BF}\u{21883}\u{27484}\u5AA1\u36E2\u{23D5B}\u36B0\u925F\u5A79\u{28A81}\u{21862}\u9374\u3CCD\u{20AB4}\u4A96\u398A\u50F4\u3D69\u3D4C\u{2139C}\u7175\u42FB\u{28218}\u6E0F\u{290E4}\u44EB\u6D57\u{27E4F}\u7067\u6CAF\u3CD6\u{23FED}\u{23E2D}\u6E02\u6F0C\u3D6F\u{203F5}\u7551\u36BC\u34C8\u4680\u3EDA\u4871\u59C4\u926E\u493E\u8F41\u{28C1C}\u{26BC0}\u5812\u57C8\u36D6\u{21452}\u70FE\u{24362}\u{24A71}\u{22FE3}\u{212B0}\u{223BD}\u68B9\u6967\u{21398}\u{234E5}\u{27BF4}\u{236DF}\u{28A83}\u{237D6}\u{233FA}\u{24C9F}\u6A1A\u{236AD}\u{26CB7}\u843E\u44DF\u44CE"], + ["9840", "\u{26D26}\u{26D51}\u{26C82}\u{26FDE}\u6F17\u{27109}\u833D\u{2173A}\u83ED\u{26C80}\u{27053}\u{217DB}\u5989\u5A82\u{217B3}\u5A61\u5A71\u{21905}\u{241FC}\u372D\u59EF\u{2173C}\u36C7\u718E\u9390\u669A\u{242A5}\u5A6E\u5A2B\u{24293}\u6A2B\u{23EF9}\u{27736}\u{2445B}\u{242CA}\u711D\u{24259}\u{289E1}\u4FB0\u{26D28}\u5CC2\u{244CE}\u{27E4D}\u{243BD}\u6A0C\u{24256}\u{21304}\u70A6\u7133\u{243E9}\u3DA5\u6CDF\u{2F825}\u{24A4F}\u7E65\u59EB\u5D2F\u3DF3\u5F5C\u{24A5D}\u{217DF}\u7DA4\u8426"], + ["98a1", "\u5485\u{23AFA}\u{23300}\u{20214}\u577E\u{208D5}\u{20619}\u3FE5\u{21F9E}\u{2A2B6}\u7003\u{2915B}\u5D70\u738F\u7CD3\u{28A59}\u{29420}\u4FC8\u7FE7\u72CD\u7310\u{27AF4}\u7338\u7339\u{256F6}\u7341\u7348\u3EA9\u{27B18}\u906C\u71F5\u{248F2}\u73E1\u81F6\u3ECA\u770C\u3ED1\u6CA2\u56FD\u7419\u741E\u741F\u3EE2\u3EF0\u3EF4\u3EFA\u74D3\u3F0E\u3F53\u7542\u756D\u7572\u758D\u3F7C\u75C8\u75DC\u3FC0\u764D\u3FD7\u7674\u3FDC\u767A\u{24F5C}\u7188\u5623\u8980\u5869\u401D\u7743\u4039\u6761\u4045\u35DB\u7798\u406A\u406F\u5C5E\u77BE\u77CB\u58F2\u7818\u70B9\u781C\u40A8\u7839\u7847\u7851\u7866\u8448\u{25535}\u7933\u6803\u7932\u4103"], + ["9940", "\u4109\u7991\u7999\u8FBB\u7A06\u8FBC\u4167\u7A91\u41B2\u7ABC\u8279\u41C4\u7ACF\u7ADB\u41CF\u4E21\u7B62\u7B6C\u7B7B\u7C12\u7C1B\u4260\u427A\u7C7B\u7C9C\u428C\u7CB8\u4294\u7CED\u8F93\u70C0\u{20CCF}\u7DCF\u7DD4\u7DD0\u7DFD\u7FAE\u7FB4\u729F\u4397\u8020\u8025\u7B39\u802E\u8031\u8054\u3DCC\u57B4\u70A0\u80B7\u80E9\u43ED\u810C\u732A\u810E\u8112\u7560\u8114\u4401\u3B39\u8156\u8159\u815A"], + ["99a1", "\u4413\u583A\u817C\u8184\u4425\u8193\u442D\u81A5\u57EF\u81C1\u81E4\u8254\u448F\u82A6\u8276\u82CA\u82D8\u82FF\u44B0\u8357\u9669\u698A\u8405\u70F5\u8464\u60E3\u8488\u4504\u84BE\u84E1\u84F8\u8510\u8538\u8552\u453B\u856F\u8570\u85E0\u4577\u8672\u8692\u86B2\u86EF\u9645\u878B\u4606\u4617\u88AE\u88FF\u8924\u8947\u8991\u{27967}\u8A29\u8A38\u8A94\u8AB4\u8C51\u8CD4\u8CF2\u8D1C\u4798\u585F\u8DC3\u47ED\u4EEE\u8E3A\u55D8\u5754\u8E71\u55F5\u8EB0\u4837\u8ECE\u8EE2\u8EE4\u8EED\u8EF2\u8FB7\u8FC1\u8FCA\u8FCC\u9033\u99C4\u48AD\u98E0\u9213\u491E\u9228\u9258\u926B\u92B1\u92AE\u92BF"], + ["9a40", "\u92E3\u92EB\u92F3\u92F4\u92FD\u9343\u9384\u93AD\u4945\u4951\u9EBF\u9417\u5301\u941D\u942D\u943E\u496A\u9454\u9479\u952D\u95A2\u49A7\u95F4\u9633\u49E5\u67A0\u4A24\u9740\u4A35\u97B2\u97C2\u5654\u4AE4\u60E8\u98B9\u4B19\u98F1\u5844\u990E\u9919\u51B4\u991C\u9937\u9942\u995D\u9962\u4B70\u99C5\u4B9D\u9A3C\u9B0F\u7A83\u9B69\u9B81\u9BDD\u9BF1\u9BF4\u4C6D\u9C20\u376F\u{21BC2}\u9D49\u9C3A"], + ["9aa1", "\u9EFE\u5650\u9D93\u9DBD\u9DC0\u9DFC\u94F6\u8FB6\u9E7B\u9EAC\u9EB1\u9EBD\u9EC6\u94DC\u9EE2\u9EF1\u9EF8\u7AC8\u9F44\u{20094}\u{202B7}\u{203A0}\u691A\u94C3\u59AC\u{204D7}\u5840\u94C1\u37B9\u{205D5}\u{20615}\u{20676}\u{216BA}\u5757\u7173\u{20AC2}\u{20ACD}\u{20BBF}\u546A\u{2F83B}\u{20BCB}\u549E\u{20BFB}\u{20C3B}\u{20C53}\u{20C65}\u{20C7C}\u60E7\u{20C8D}\u567A\u{20CB5}\u{20CDD}\u{20CED}\u{20D6F}\u{20DB2}\u{20DC8}\u6955\u9C2F\u87A5\u{20E04}\u{20E0E}\u{20ED7}\u{20F90}\u{20F2D}\u{20E73}\u5C20\u{20FBC}\u5E0B\u{2105C}\u{2104F}\u{21076}\u671E\u{2107B}\u{21088}\u{21096}\u3647\u{210BF}\u{210D3}\u{2112F}\u{2113B}\u5364\u84AD\u{212E3}\u{21375}\u{21336}\u8B81\u{21577}\u{21619}\u{217C3}\u{217C7}\u4E78\u70BB\u{2182D}\u{2196A}"], + ["9b40", "\u{21A2D}\u{21A45}\u{21C2A}\u{21C70}\u{21CAC}\u{21EC8}\u62C3\u{21ED5}\u{21F15}\u7198\u6855\u{22045}\u69E9\u36C8\u{2227C}\u{223D7}\u{223FA}\u{2272A}\u{22871}\u{2294F}\u82FD\u{22967}\u{22993}\u{22AD5}\u89A5\u{22AE8}\u8FA0\u{22B0E}\u97B8\u{22B3F}\u9847\u9ABD\u{22C4C}"], + ["9b62", "\u{22C88}\u{22CB7}\u{25BE8}\u{22D08}\u{22D12}\u{22DB7}\u{22D95}\u{22E42}\u{22F74}\u{22FCC}\u{23033}\u{23066}\u{2331F}\u{233DE}\u5FB1\u6648\u66BF\u{27A79}\u{23567}\u{235F3}\u7201\u{249BA}\u77D7\u{2361A}\u{23716}\u7E87\u{20346}\u58B5\u670E"], + ["9ba1", "\u6918\u{23AA7}\u{27657}\u{25FE2}\u{23E11}\u{23EB9}\u{275FE}\u{2209A}\u48D0\u4AB8\u{24119}\u{28A9A}\u{242EE}\u{2430D}\u{2403B}\u{24334}\u{24396}\u{24A45}\u{205CA}\u51D2\u{20611}\u599F\u{21EA8}\u3BBE\u{23CFF}\u{24404}\u{244D6}\u5788\u{24674}\u399B\u{2472F}\u{285E8}\u{299C9}\u3762\u{221C3}\u8B5E\u{28B4E}\u99D6\u{24812}\u{248FB}\u{24A15}\u7209\u{24AC0}\u{20C78}\u5965\u{24EA5}\u{24F86}\u{20779}\u8EDA\u{2502C}\u528F\u573F\u7171\u{25299}\u{25419}\u{23F4A}\u{24AA7}\u55BC\u{25446}\u{2546E}\u{26B52}\u91D4\u3473\u{2553F}\u{27632}\u{2555E}\u4718\u{25562}\u{25566}\u{257C7}\u{2493F}\u{2585D}\u5066\u34FB\u{233CC}\u60DE\u{25903}\u477C\u{28948}\u{25AAE}\u{25B89}\u{25C06}\u{21D90}\u57A1\u7151\u6FB6\u{26102}\u{27C12}\u9056\u{261B2}\u{24F9A}\u8B62\u{26402}\u{2644A}"], + ["9c40", "\u5D5B\u{26BF7}\u8F36\u{26484}\u{2191C}\u8AEA\u{249F6}\u{26488}\u{23FEF}\u{26512}\u4BC0\u{265BF}\u{266B5}\u{2271B}\u9465\u{257E1}\u6195\u5A27\u{2F8CD}\u4FBB\u56B9\u{24521}\u{266FC}\u4E6A\u{24934}\u9656\u6D8F\u{26CBD}\u3618\u8977\u{26799}\u{2686E}\u{26411}\u{2685E}\u71DF\u{268C7}\u7B42\u{290C0}\u{20A11}\u{26926}\u9104\u{26939}\u7A45\u9DF0\u{269FA}\u9A26\u{26A2D}\u365F\u{26469}\u{20021}\u7983\u{26A34}\u{26B5B}\u5D2C\u{23519}\u83CF\u{26B9D}\u46D0\u{26CA4}\u753B\u8865\u{26DAE}\u58B6"], + ["9ca1", "\u371C\u{2258D}\u{2704B}\u{271CD}\u3C54\u{27280}\u{27285}\u9281\u{2217A}\u{2728B}\u9330\u{272E6}\u{249D0}\u6C39\u949F\u{27450}\u{20EF8}\u8827\u88F5\u{22926}\u{28473}\u{217B1}\u6EB8\u{24A2A}\u{21820}\u39A4\u36B9\u5C10\u79E3\u453F\u66B6\u{29CAD}\u{298A4}\u8943\u{277CC}\u{27858}\u56D6\u40DF\u{2160A}\u39A1\u{2372F}\u{280E8}\u{213C5}\u71AD\u8366\u{279DD}\u{291A8}\u5A67\u4CB7\u{270AF}\u{289AB}\u{279FD}\u{27A0A}\u{27B0B}\u{27D66}\u{2417A}\u7B43\u797E\u{28009}\u6FB5\u{2A2DF}\u6A03\u{28318}\u53A2\u{26E07}\u93BF\u6836\u975D\u{2816F}\u{28023}\u{269B5}\u{213ED}\u{2322F}\u{28048}\u5D85\u{28C30}\u{28083}\u5715\u9823\u{28949}\u5DAB\u{24988}\u65BE\u69D5\u53D2\u{24AA5}\u{23F81}\u3C11\u6736\u{28090}\u{280F4}\u{2812E}\u{21FA1}\u{2814F}"], + ["9d40", "\u{28189}\u{281AF}\u{2821A}\u{28306}\u{2832F}\u{2838A}\u35CA\u{28468}\u{286AA}\u48FA\u63E6\u{28956}\u7808\u9255\u{289B8}\u43F2\u{289E7}\u43DF\u{289E8}\u{28B46}\u{28BD4}\u59F8\u{28C09}\u8F0B\u{28FC5}\u{290EC}\u7B51\u{29110}\u{2913C}\u3DF7\u{2915E}\u{24ACA}\u8FD0\u728F\u568B\u{294E7}\u{295E9}\u{295B0}\u{295B8}\u{29732}\u{298D1}\u{29949}\u{2996A}\u{299C3}\u{29A28}\u{29B0E}\u{29D5A}\u{29D9B}\u7E9F\u{29EF8}\u{29F23}\u4CA4\u9547\u{2A293}\u71A2\u{2A2FF}\u4D91\u9012\u{2A5CB}\u4D9C\u{20C9C}\u8FBE\u55C1"], + ["9da1", "\u8FBA\u{224B0}\u8FB9\u{24A93}\u4509\u7E7F\u6F56\u6AB1\u4EEA\u34E4\u{28B2C}\u{2789D}\u373A\u8E80\u{217F5}\u{28024}\u{28B6C}\u{28B99}\u{27A3E}\u{266AF}\u3DEB\u{27655}\u{23CB7}\u{25635}\u{25956}\u4E9A\u{25E81}\u{26258}\u56BF\u{20E6D}\u8E0E\u5B6D\u{23E88}\u{24C9E}\u63DE\u62D0\u{217F6}\u{2187B}\u6530\u562D\u{25C4A}\u541A\u{25311}\u3DC6\u{29D98}\u4C7D\u5622\u561E\u7F49\u{25ED8}\u5975\u{23D40}\u8770\u4E1C\u{20FEA}\u{20D49}\u{236BA}\u8117\u9D5E\u8D18\u763B\u9C45\u764E\u77B9\u9345\u5432\u8148\u82F7\u5625\u8132\u8418\u80BD\u55EA\u7962\u5643\u5416\u{20E9D}\u35CE\u5605\u55F1\u66F1\u{282E2}\u362D\u7534\u55F0\u55BA\u5497\u5572\u{20C41}\u{20C96}\u5ED0\u{25148}\u{20E76}\u{22C62}"], + ["9e40", "\u{20EA2}\u9EAB\u7D5A\u55DE\u{21075}\u629D\u976D\u5494\u8CCD\u71F6\u9176\u63FC\u63B9\u63FE\u5569\u{22B43}\u9C72\u{22EB3}\u519A\u34DF\u{20DA7}\u51A7\u544D\u551E\u5513\u7666\u8E2D\u{2688A}\u75B1\u80B6\u8804\u8786\u88C7\u81B6\u841C\u{210C1}\u44EC\u7304\u{24706}\u5B90\u830B\u{26893}\u567B\u{226F4}\u{27D2F}\u{241A3}\u{27D73}\u{26ED0}\u{272B6}\u9170\u{211D9}\u9208\u{23CFC}\u{2A6A9}\u{20EAC}\u{20EF9}\u7266\u{21CA2}\u474E\u{24FC2}\u{27FF9}\u{20FEB}\u40FA"], + ["9ea1", "\u9C5D\u651F\u{22DA0}\u48F3\u{247E0}\u{29D7C}\u{20FEC}\u{20E0A}\u6062\u{275A3}\u{20FED}"], + ["9ead", "\u{26048}\u{21187}\u71A3\u7E8E\u9D50\u4E1A\u4E04\u3577\u5B0D\u6CB2\u5367\u36AC\u39DC\u537D\u36A5\u{24618}\u589A\u{24B6E}\u822D\u544B\u57AA\u{25A95}\u{20979}"], + ["9ec5", "\u3A52\u{22465}\u7374\u{29EAC}\u4D09\u9BED\u{23CFE}\u{29F30}\u4C5B\u{24FA9}\u{2959E}\u{29FDE}\u845C\u{23DB6}\u{272B2}\u{267B3}\u{23720}\u632E\u7D25\u{23EF7}\u{23E2C}\u3A2A\u9008\u52CC\u3E74\u367A\u45E9\u{2048E}\u7640\u5AF0\u{20EB6}\u787A\u{27F2E}\u58A7\u40BF\u567C\u9B8B\u5D74\u7654\u{2A434}\u9E85\u4CE1\u75F9\u37FB\u6119\u{230DA}\u{243F2}"], + ["9ef5", "\u565D\u{212A9}\u57A7\u{24963}\u{29E06}\u5234\u{270AE}\u35AD\u6C4A\u9D7C"], + ["9f40", "\u7C56\u9B39\u57DE\u{2176C}\u5C53\u64D3\u{294D0}\u{26335}\u{27164}\u86AD\u{20D28}\u{26D22}\u{24AE2}\u{20D71}"], + ["9f4f", "\u51FE\u{21F0F}\u5D8E\u9703\u{21DD1}\u9E81\u904C\u7B1F\u9B02\u5CD1\u7BA3\u6268\u6335\u9AFF\u7BCF\u9B2A\u7C7E\u9B2E\u7C42\u7C86\u9C15\u7BFC\u9B09\u9F17\u9C1B\u{2493E}\u9F5A\u5573\u5BC3\u4FFD\u9E98\u4FF2\u5260\u3E06\u52D1\u5767\u5056\u59B7\u5E12\u97C8\u9DAB\u8F5C\u5469\u97B4\u9940\u97BA\u532C\u6130"], + ["9fa1", "\u692C\u53DA\u9C0A\u9D02\u4C3B\u9641\u6980\u50A6\u7546\u{2176D}\u99DA\u5273"], + ["9fae", "\u9159\u9681\u915C"], + ["9fb2", "\u9151\u{28E97}\u637F\u{26D23}\u6ACA\u5611\u918E\u757A\u6285\u{203FC}\u734F\u7C70\u{25C21}\u{23CFD}"], + ["9fc1", "\u{24919}\u76D6\u9B9D\u4E2A\u{20CD4}\u83BE\u8842"], + ["9fc9", "\u5C4A\u69C0\u50ED\u577A\u521F\u5DF5\u4ECE\u6C31\u{201F2}\u4F39\u549C\u54DA\u529A\u8D82\u35FE\u5F0C\u35F3"], + ["9fdb", "\u6B52\u917C\u9FA5\u9B97\u982E\u98B4\u9ABA\u9EA8\u9E84\u717A\u7B14"], + ["9fe7", "\u6BFA\u8818\u7F78"], + ["9feb", "\u5620\u{2A64A}\u8E77\u9F53"], + ["9ff0", "\u8DD4\u8E4F\u9E1C\u8E01\u6282\u{2837D}\u8E28\u8E75\u7AD3\u{24A77}\u7A3E\u78D8\u6CEA\u8A67\u7607"], + ["a040", "\u{28A5A}\u9F26\u6CCE\u87D6\u75C3\u{2A2B2}\u7853\u{2F840}\u8D0C\u72E2\u7371\u8B2D\u7302\u74F1\u8CEB\u{24ABB}\u862F\u5FBA\u88A0\u44B7"], + ["a055", "\u{2183B}\u{26E05}"], + ["a058", "\u8A7E\u{2251B}"], + ["a05b", "\u60FD\u7667\u9AD7\u9D44\u936E\u9B8F\u87F5"], + ["a063", "\u880F\u8CF7\u732C\u9721\u9BB0\u35D6\u72B2\u4C07\u7C51\u994A\u{26159}\u6159\u4C04\u9E96\u617D"], + ["a073", "\u575F\u616F\u62A6\u6239\u62CE\u3A5C\u61E2\u53AA\u{233F5}\u6364\u6802\u35D2"], + ["a0a1", "\u5D57\u{28BC2}\u8FDA\u{28E39}"], + ["a0a6", "\u50D9\u{21D46}\u7906\u5332\u9638\u{20F3B}\u4065"], + ["a0ae", "\u77FE"], + ["a0b0", "\u7CC2\u{25F1A}\u7CDA\u7A2D\u8066\u8063\u7D4D\u7505\u74F2\u8994\u821A\u670C\u8062\u{27486}\u805B\u74F0\u8103\u7724\u8989\u{267CC}\u7553\u{26ED1}\u87A9\u87CE\u81C8\u878C\u8A49\u8CAD\u8B43\u772B\u74F8\u84DA\u3635\u69B2\u8DA6"], + ["a0d4", "\u89A9\u7468\u6DB9\u87C1\u{24011}\u74E7\u3DDB\u7176\u60A4\u619C\u3CD1\u7162\u6077"], + ["a0e2", "\u7F71\u{28B2D}\u7250\u60E9\u4B7E\u5220\u3C18\u{23CC7}\u{25ED7}\u{27656}\u{25531}\u{21944}\u{212FE}\u{29903}\u{26DDC}\u{270AD}\u5CC1\u{261AD}\u{28A0F}\u{23677}\u{200EE}\u{26846}\u{24F0E}\u4562\u5B1F\u{2634C}\u9F50\u9EA6\u{2626B}"], + ["a3c0", "\u2400", 31, "\u2421"], + ["c6a1", "\u2460", 9, "\u2474", 9, "\u2170", 9, "\u4E36\u4E3F\u4E85\u4EA0\u5182\u5196\u51AB\u52F9\u5338\u5369\u53B6\u590A\u5B80\u5DDB\u2F33\u5E7F\u5EF4\u5F50\u5F61\u6534\u65E0\u7592\u7676\u8FB5\u96B6\xA8\u02C6\u30FD\u30FE\u309D\u309E\u3003\u4EDD\u3005\u3006\u3007\u30FC\uFF3B\uFF3D\u273D\u3041", 23], + ["c740", "\u3059", 58, "\u30A1\u30A2\u30A3\u30A4"], + ["c7a1", "\u30A5", 81, "\u0410", 5, "\u0401\u0416", 4], + ["c840", "\u041B", 26, "\u0451\u0436", 25, "\u21E7\u21B8\u21B9\u31CF\u{200CC}\u4E5A\u{2008A}\u5202\u4491"], + ["c8a1", "\u9FB0\u5188\u9FB1\u{27607}"], + ["c8cd", "\uFFE2\uFFE4\uFF07\uFF02\u3231\u2116\u2121\u309B\u309C\u2E80\u2E84\u2E86\u2E87\u2E88\u2E8A\u2E8C\u2E8D\u2E95\u2E9C\u2E9D\u2EA5\u2EA7\u2EAA\u2EAC\u2EAE\u2EB6\u2EBC\u2EBE\u2EC6\u2ECA\u2ECC\u2ECD\u2ECF\u2ED6\u2ED7\u2EDE\u2EE3"], + ["c8f5", "\u0283\u0250\u025B\u0254\u0275\u0153\xF8\u014B\u028A\u026A"], + ["f9fe", "\uFFED"], + ["fa40", "\u{20547}\u92DB\u{205DF}\u{23FC5}\u854C\u42B5\u73EF\u51B5\u3649\u{24942}\u{289E4}\u9344\u{219DB}\u82EE\u{23CC8}\u783C\u6744\u62DF\u{24933}\u{289AA}\u{202A0}\u{26BB3}\u{21305}\u4FAB\u{224ED}\u5008\u{26D29}\u{27A84}\u{23600}\u{24AB1}\u{22513}\u5029\u{2037E}\u5FA4\u{20380}\u{20347}\u6EDB\u{2041F}\u507D\u5101\u347A\u510E\u986C\u3743\u8416\u{249A4}\u{20487}\u5160\u{233B4}\u516A\u{20BFF}\u{220FC}\u{202E5}\u{22530}\u{2058E}\u{23233}\u{21983}\u5B82\u877D\u{205B3}\u{23C99}\u51B2\u51B8"], + ["faa1", "\u9D34\u51C9\u51CF\u51D1\u3CDC\u51D3\u{24AA6}\u51B3\u51E2\u5342\u51ED\u83CD\u693E\u{2372D}\u5F7B\u520B\u5226\u523C\u52B5\u5257\u5294\u52B9\u52C5\u7C15\u8542\u52E0\u860D\u{26B13}\u5305\u{28ADE}\u5549\u6ED9\u{23F80}\u{20954}\u{23FEC}\u5333\u5344\u{20BE2}\u6CCB\u{21726}\u681B\u73D5\u604A\u3EAA\u38CC\u{216E8}\u71DD\u44A2\u536D\u5374\u{286AB}\u537E\u537F\u{21596}\u{21613}\u77E6\u5393\u{28A9B}\u53A0\u53AB\u53AE\u73A7\u{25772}\u3F59\u739C\u53C1\u53C5\u6C49\u4E49\u57FE\u53D9\u3AAB\u{20B8F}\u53E0\u{23FEB}\u{22DA3}\u53F6\u{20C77}\u5413\u7079\u552B\u6657\u6D5B\u546D\u{26B53}\u{20D74}\u555D\u548F\u54A4\u47A6\u{2170D}\u{20EDD}\u3DB4\u{20D4D}"], + ["fb40", "\u{289BC}\u{22698}\u5547\u4CED\u542F\u7417\u5586\u55A9\u5605\u{218D7}\u{2403A}\u4552\u{24435}\u66B3\u{210B4}\u5637\u66CD\u{2328A}\u66A4\u66AD\u564D\u564F\u78F1\u56F1\u9787\u53FE\u5700\u56EF\u56ED\u{28B66}\u3623\u{2124F}\u5746\u{241A5}\u6C6E\u708B\u5742\u36B1\u{26C7E}\u57E6\u{21416}\u5803\u{21454}\u{24363}\u5826\u{24BF5}\u585C\u58AA\u3561\u58E0\u58DC\u{2123C}\u58FB\u5BFF\u5743\u{2A150}\u{24278}\u93D3\u35A1\u591F\u68A6\u36C3\u6E59"], + ["fba1", "\u{2163E}\u5A24\u5553\u{21692}\u8505\u59C9\u{20D4E}\u{26C81}\u{26D2A}\u{217DC}\u59D9\u{217FB}\u{217B2}\u{26DA6}\u6D71\u{21828}\u{216D5}\u59F9\u{26E45}\u5AAB\u5A63\u36E6\u{249A9}\u5A77\u3708\u5A96\u7465\u5AD3\u{26FA1}\u{22554}\u3D85\u{21911}\u3732\u{216B8}\u5E83\u52D0\u5B76\u6588\u5B7C\u{27A0E}\u4004\u485D\u{20204}\u5BD5\u6160\u{21A34}\u{259CC}\u{205A5}\u5BF3\u5B9D\u4D10\u5C05\u{21B44}\u5C13\u73CE\u5C14\u{21CA5}\u{26B28}\u5C49\u48DD\u5C85\u5CE9\u5CEF\u5D8B\u{21DF9}\u{21E37}\u5D10\u5D18\u5D46\u{21EA4}\u5CBA\u5DD7\u82FC\u382D\u{24901}\u{22049}\u{22173}\u8287\u3836\u3BC2\u5E2E\u6A8A\u5E75\u5E7A\u{244BC}\u{20CD3}\u53A6\u4EB7\u5ED0\u53A8\u{21771}\u5E09\u5EF4\u{28482}"], + ["fc40", "\u5EF9\u5EFB\u38A0\u5EFC\u683E\u941B\u5F0D\u{201C1}\u{2F894}\u3ADE\u48AE\u{2133A}\u5F3A\u{26888}\u{223D0}\u5F58\u{22471}\u5F63\u97BD\u{26E6E}\u5F72\u9340\u{28A36}\u5FA7\u5DB6\u3D5F\u{25250}\u{21F6A}\u{270F8}\u{22668}\u91D6\u{2029E}\u{28A29}\u6031\u6685\u{21877}\u3963\u3DC7\u3639\u5790\u{227B4}\u7971\u3E40\u609E\u60A4\u60B3\u{24982}\u{2498F}\u{27A53}\u74A4\u50E1\u5AA0\u6164\u8424\u6142\u{2F8A6}\u{26ED2}\u6181\u51F4\u{20656}\u6187\u5BAA\u{23FB7}"], + ["fca1", "\u{2285F}\u61D3\u{28B9D}\u{2995D}\u61D0\u3932\u{22980}\u{228C1}\u6023\u615C\u651E\u638B\u{20118}\u62C5\u{21770}\u62D5\u{22E0D}\u636C\u{249DF}\u3A17\u6438\u63F8\u{2138E}\u{217FC}\u6490\u6F8A\u{22E36}\u9814\u{2408C}\u{2571D}\u64E1\u64E5\u947B\u3A66\u643A\u3A57\u654D\u6F16\u{24A28}\u{24A23}\u6585\u656D\u655F\u{2307E}\u65B5\u{24940}\u4B37\u65D1\u40D8\u{21829}\u65E0\u65E3\u5FDF\u{23400}\u6618\u{231F7}\u{231F8}\u6644\u{231A4}\u{231A5}\u664B\u{20E75}\u6667\u{251E6}\u6673\u6674\u{21E3D}\u{23231}\u{285F4}\u{231C8}\u{25313}\u77C5\u{228F7}\u99A4\u6702\u{2439C}\u{24A21}\u3B2B\u69FA\u{237C2}\u675E\u6767\u6762\u{241CD}\u{290ED}\u67D7\u44E9\u6822\u6E50\u923C\u6801\u{233E6}\u{26DA0}\u685D"], + ["fd40", "\u{2346F}\u69E1\u6A0B\u{28ADF}\u6973\u68C3\u{235CD}\u6901\u6900\u3D32\u3A01\u{2363C}\u3B80\u67AC\u6961\u{28A4A}\u42FC\u6936\u6998\u3BA1\u{203C9}\u8363\u5090\u69F9\u{23659}\u{2212A}\u6A45\u{23703}\u6A9D\u3BF3\u67B1\u6AC8\u{2919C}\u3C0D\u6B1D\u{20923}\u60DE\u6B35\u6B74\u{227CD}\u6EB5\u{23ADB}\u{203B5}\u{21958}\u3740\u5421\u{23B5A}\u6BE1\u{23EFC}\u6BDC\u6C37\u{2248B}\u{248F1}\u{26B51}\u6C5A\u8226\u6C79\u{23DBC}\u44C5\u{23DBD}\u{241A4}\u{2490C}\u{24900}"], + ["fda1", "\u{23CC9}\u36E5\u3CEB\u{20D32}\u9B83\u{231F9}\u{22491}\u7F8F\u6837\u{26D25}\u{26DA1}\u{26DEB}\u6D96\u6D5C\u6E7C\u6F04\u{2497F}\u{24085}\u{26E72}\u8533\u{26F74}\u51C7\u6C9C\u6E1D\u842E\u{28B21}\u6E2F\u{23E2F}\u7453\u{23F82}\u79CC\u6E4F\u5A91\u{2304B}\u6FF8\u370D\u6F9D\u{23E30}\u6EFA\u{21497}\u{2403D}\u4555\u93F0\u6F44\u6F5C\u3D4E\u6F74\u{29170}\u3D3B\u6F9F\u{24144}\u6FD3\u{24091}\u{24155}\u{24039}\u{23FF0}\u{23FB4}\u{2413F}\u51DF\u{24156}\u{24157}\u{24140}\u{261DD}\u704B\u707E\u70A7\u7081\u70CC\u70D5\u70D6\u70DF\u4104\u3DE8\u71B4\u7196\u{24277}\u712B\u7145\u5A88\u714A\u716E\u5C9C\u{24365}\u714F\u9362\u{242C1}\u712C\u{2445A}\u{24A27}\u{24A22}\u71BA\u{28BE8}\u70BD\u720E"], + ["fe40", "\u9442\u7215\u5911\u9443\u7224\u9341\u{25605}\u722E\u7240\u{24974}\u68BD\u7255\u7257\u3E55\u{23044}\u680D\u6F3D\u7282\u732A\u732B\u{24823}\u{2882B}\u48ED\u{28804}\u7328\u732E\u73CF\u73AA\u{20C3A}\u{26A2E}\u73C9\u7449\u{241E2}\u{216E7}\u{24A24}\u6623\u36C5\u{249B7}\u{2498D}\u{249FB}\u73F7\u7415\u6903\u{24A26}\u7439\u{205C3}\u3ED7\u745C\u{228AD}\u7460\u{28EB2}\u7447\u73E4\u7476\u83B9\u746C\u3730\u7474\u93F1\u6A2C\u7482\u4953\u{24A8C}"], + ["fea1", "\u{2415F}\u{24A79}\u{28B8F}\u5B46\u{28C03}\u{2189E}\u74C8\u{21988}\u750E\u74E9\u751E\u{28ED9}\u{21A4B}\u5BD7\u{28EAC}\u9385\u754D\u754A\u7567\u756E\u{24F82}\u3F04\u{24D13}\u758E\u745D\u759E\u75B4\u7602\u762C\u7651\u764F\u766F\u7676\u{263F5}\u7690\u81EF\u37F8\u{26911}\u{2690E}\u76A1\u76A5\u76B7\u76CC\u{26F9F}\u8462\u{2509D}\u{2517D}\u{21E1C}\u771E\u7726\u7740\u64AF\u{25220}\u7758\u{232AC}\u77AF\u{28964}\u{28968}\u{216C1}\u77F4\u7809\u{21376}\u{24A12}\u68CA\u78AF\u78C7\u78D3\u96A5\u792E\u{255E0}\u78D7\u7934\u78B1\u{2760C}\u8FB8\u8884\u{28B2B}\u{26083}\u{2261C}\u7986\u8900\u6902\u7980\u{25857}\u799D\u{27B39}\u793C\u79A9\u6E2A\u{27126}\u3EA8\u79C6\u{2910D}\u79D4"] + ]; + } +}); + +// node_modules/iconv-lite/encodings/dbcs-data.js +var require_dbcs_data = __commonJS({ + "node_modules/iconv-lite/encodings/dbcs-data.js"(exports2, module2) { + "use strict"; + module2.exports = { + // == Japanese/ShiftJIS ==================================================== + // All japanese encodings are based on JIS X set of standards: + // JIS X 0201 - Single-byte encoding of ASCII + ¥ + Kana chars at 0xA1-0xDF. + // JIS X 0208 - Main set of 6879 characters, placed in 94x94 plane, to be encoded by 2 bytes. + // Has several variations in 1978, 1983, 1990 and 1997. + // JIS X 0212 - Supplementary plane of 6067 chars in 94x94 plane. 1990. Effectively dead. + // JIS X 0213 - Extension and modern replacement of 0208 and 0212. Total chars: 11233. + // 2 planes, first is superset of 0208, second - revised 0212. + // Introduced in 2000, revised 2004. Some characters are in Unicode Plane 2 (0x2xxxx) + // Byte encodings are: + // * Shift_JIS: Compatible with 0201, uses not defined chars in top half as lead bytes for double-byte + // encoding of 0208. Lead byte ranges: 0x81-0x9F, 0xE0-0xEF; Trail byte ranges: 0x40-0x7E, 0x80-0x9E, 0x9F-0xFC. + // Windows CP932 is a superset of Shift_JIS. Some companies added more chars, notably KDDI. + // * EUC-JP: Up to 3 bytes per character. Used mostly on *nixes. + // 0x00-0x7F - lower part of 0201 + // 0x8E, 0xA1-0xDF - upper part of 0201 + // (0xA1-0xFE)x2 - 0208 plane (94x94). + // 0x8F, (0xA1-0xFE)x2 - 0212 plane (94x94). + // * JIS X 208: 7-bit, direct encoding of 0208. Byte ranges: 0x21-0x7E (94 values). Uncommon. + // Used as-is in ISO2022 family. + // * ISO2022-JP: Stateful encoding, with escape sequences to switch between ASCII, + // 0201-1976 Roman, 0208-1978, 0208-1983. + // * ISO2022-JP-1: Adds esc seq for 0212-1990. + // * ISO2022-JP-2: Adds esc seq for GB2313-1980, KSX1001-1992, ISO8859-1, ISO8859-7. + // * ISO2022-JP-3: Adds esc seq for 0201-1976 Kana set, 0213-2000 Planes 1, 2. + // * ISO2022-JP-2004: Adds 0213-2004 Plane 1. + // + // After JIS X 0213 appeared, Shift_JIS-2004, EUC-JISX0213 and ISO2022-JP-2004 followed, with just changing the planes. + // + // Overall, it seems that it's a mess :( http://www8.plala.or.jp/tkubota1/unicode-symbols-map2.html + shiftjis: { + type: "_dbcs", + table: function() { + return require_shiftjis(); + }, + encodeAdd: { "\xA5": 92, "\u203E": 126 }, + encodeSkipVals: [{ from: 60736, to: 63808 }] + }, + csshiftjis: "shiftjis", + mskanji: "shiftjis", + sjis: "shiftjis", + windows31j: "shiftjis", + ms31j: "shiftjis", + xsjis: "shiftjis", + windows932: "shiftjis", + ms932: "shiftjis", + 932: "shiftjis", + cp932: "shiftjis", + eucjp: { + type: "_dbcs", + table: function() { + return require_eucjp(); + }, + encodeAdd: { "\xA5": 92, "\u203E": 126 } + }, + // TODO: KDDI extension to Shift_JIS + // TODO: IBM CCSID 942 = CP932, but F0-F9 custom chars and other char changes. + // TODO: IBM CCSID 943 = Shift_JIS = CP932 with original Shift_JIS lower 128 chars. + // == Chinese/GBK ========================================================== + // http://en.wikipedia.org/wiki/GBK + // We mostly implement W3C recommendation: https://www.w3.org/TR/encoding/#gbk-encoder + // Oldest GB2312 (1981, ~7600 chars) is a subset of CP936 + gb2312: "cp936", + gb231280: "cp936", + gb23121980: "cp936", + csgb2312: "cp936", + csiso58gb231280: "cp936", + euccn: "cp936", + // Microsoft's CP936 is a subset and approximation of GBK. + windows936: "cp936", + ms936: "cp936", + 936: "cp936", + cp936: { + type: "_dbcs", + table: function() { + return require_cp936(); + } + }, + // GBK (~22000 chars) is an extension of CP936 that added user-mapped chars and some other. + gbk: { + type: "_dbcs", + table: function() { + return require_cp936().concat(require_gbk_added()); + } + }, + xgbk: "gbk", + isoir58: "gbk", + // GB18030 is an algorithmic extension of GBK. + // Main source: https://www.w3.org/TR/encoding/#gbk-encoder + // http://icu-project.org/docs/papers/gb18030.html + // http://source.icu-project.org/repos/icu/data/trunk/charset/data/xml/gb-18030-2000.xml + // http://www.khngai.com/chinese/charmap/tblgbk.php?page=0 + gb18030: { + type: "_dbcs", + table: function() { + return require_cp936().concat(require_gbk_added()); + }, + gb18030: function() { + return require_gb18030_ranges(); + }, + encodeSkipVals: [128], + encodeAdd: { "\u20AC": 41699 } + }, + chinese: "gb18030", + // == Korean =============================================================== + // EUC-KR, KS_C_5601 and KS X 1001 are exactly the same. + windows949: "cp949", + ms949: "cp949", + 949: "cp949", + cp949: { + type: "_dbcs", + table: function() { + return require_cp949(); + } + }, + cseuckr: "cp949", + csksc56011987: "cp949", + euckr: "cp949", + isoir149: "cp949", + korean: "cp949", + ksc56011987: "cp949", + ksc56011989: "cp949", + ksc5601: "cp949", + // == Big5/Taiwan/Hong Kong ================================================ + // There are lots of tables for Big5 and cp950. Please see the following links for history: + // http://moztw.org/docs/big5/ http://www.haible.de/bruno/charsets/conversion-tables/Big5.html + // Variations, in roughly number of defined chars: + // * Windows CP 950: Microsoft variant of Big5. Canonical: http://www.unicode.org/Public/MAPPINGS/VENDORS/MICSFT/WINDOWS/CP950.TXT + // * Windows CP 951: Microsoft variant of Big5-HKSCS-2001. Seems to be never public. http://me.abelcheung.org/articles/research/what-is-cp951/ + // * Big5-2003 (Taiwan standard) almost superset of cp950. + // * Unicode-at-on (UAO) / Mozilla 1.8. Falling out of use on the Web. Not supported by other browsers. + // * Big5-HKSCS (-2001, -2004, -2008). Hong Kong standard. + // many unicode code points moved from PUA to Supplementary plane (U+2XXXX) over the years. + // Plus, it has 4 combining sequences. + // Seems that Mozilla refused to support it for 10 yrs. https://bugzilla.mozilla.org/show_bug.cgi?id=162431 https://bugzilla.mozilla.org/show_bug.cgi?id=310299 + // because big5-hkscs is the only encoding to include astral characters in non-algorithmic way. + // Implementations are not consistent within browsers; sometimes labeled as just big5. + // MS Internet Explorer switches from big5 to big5-hkscs when a patch applied. + // Great discussion & recap of what's going on https://bugzilla.mozilla.org/show_bug.cgi?id=912470#c31 + // In the encoder, it might make sense to support encoding old PUA mappings to Big5 bytes seq-s. + // Official spec: http://www.ogcio.gov.hk/en/business/tech_promotion/ccli/terms/doc/2003cmp_2008.txt + // http://www.ogcio.gov.hk/tc/business/tech_promotion/ccli/terms/doc/hkscs-2008-big5-iso.txt + // + // Current understanding of how to deal with Big5(-HKSCS) is in the Encoding Standard, http://encoding.spec.whatwg.org/#big5-encoder + // Unicode mapping (http://www.unicode.org/Public/MAPPINGS/OBSOLETE/EASTASIA/OTHER/BIG5.TXT) is said to be wrong. + windows950: "cp950", + ms950: "cp950", + 950: "cp950", + cp950: { + type: "_dbcs", + table: function() { + return require_cp950(); + } + }, + // Big5 has many variations and is an extension of cp950. We use Encoding Standard's as a consensus. + big5: "big5hkscs", + big5hkscs: { + type: "_dbcs", + table: function() { + return require_cp950().concat(require_big5_added()); + }, + encodeSkipVals: [ + // Although Encoding Standard says we should avoid encoding to HKSCS area (See Step 1 of + // https://encoding.spec.whatwg.org/#index-big5-pointer), we still do it to increase compatibility with ICU. + // But if a single unicode point can be encoded both as HKSCS and regular Big5, we prefer the latter. + 36457, + 36463, + 36478, + 36523, + 36532, + 36557, + 36560, + 36695, + 36713, + 36718, + 36811, + 36862, + 36973, + 36986, + 37060, + 37084, + 37105, + 37311, + 37551, + 37552, + 37553, + 37554, + 37585, + 37959, + 38090, + 38361, + 38652, + 39285, + 39798, + 39800, + 39803, + 39878, + 39902, + 39916, + 39926, + 40002, + 40019, + 40034, + 40040, + 40043, + 40055, + 40124, + 40125, + 40144, + 40279, + 40282, + 40388, + 40431, + 40443, + 40617, + 40687, + 40701, + 40800, + 40907, + 41079, + 41180, + 41183, + 36812, + 37576, + 38468, + 38637, + // Step 2 of https://encoding.spec.whatwg.org/#index-big5-pointer: Use last pointer for U+2550, U+255E, U+2561, U+256A, U+5341, or U+5345 + 41636, + 41637, + 41639, + 41638, + 41676, + 41678 + ] + }, + cnbig5: "big5hkscs", + csbig5: "big5hkscs", + xxbig5: "big5hkscs" + }; + } +}); + +// node_modules/iconv-lite/encodings/index.js +var require_encodings = __commonJS({ + "node_modules/iconv-lite/encodings/index.js"(exports2, module2) { + "use strict"; + var mergeModules = require_merge_exports(); + var modules = [ + require_internal(), + require_utf32(), + require_utf16(), + require_utf7(), + require_sbcs_codec(), + require_sbcs_data(), + require_sbcs_data_generated(), + require_dbcs_codec(), + require_dbcs_data() + ]; + for (i = 0; i < modules.length; i++) { + module2 = modules[i]; + mergeModules(exports2, module2); + } + var module2; + var i; + } +}); + +// node_modules/iconv-lite/lib/streams.js +var require_streams = __commonJS({ + "node_modules/iconv-lite/lib/streams.js"(exports2, module2) { + "use strict"; + var Buffer5 = require_safer().Buffer; + module2.exports = function(streamModule) { + var Transform2 = streamModule.Transform; + function IconvLiteEncoderStream(conv, options) { + this.conv = conv; + options = options || {}; + options.decodeStrings = false; + Transform2.call(this, options); + } + IconvLiteEncoderStream.prototype = Object.create(Transform2.prototype, { + constructor: { value: IconvLiteEncoderStream } + }); + IconvLiteEncoderStream.prototype._transform = function(chunk, encoding, done) { + if (typeof chunk !== "string") { + return done(new Error("Iconv encoding stream needs strings as its input.")); + } + try { + var res = this.conv.write(chunk); + if (res && res.length) this.push(res); + done(); + } catch (e) { + done(e); + } + }; + IconvLiteEncoderStream.prototype._flush = function(done) { + try { + var res = this.conv.end(); + if (res && res.length) this.push(res); + done(); + } catch (e) { + done(e); + } + }; + IconvLiteEncoderStream.prototype.collect = function(cb) { + var chunks = []; + this.on("error", cb); + this.on("data", function(chunk) { + chunks.push(chunk); + }); + this.on("end", function() { + cb(null, Buffer5.concat(chunks)); + }); + return this; + }; + function IconvLiteDecoderStream(conv, options) { + this.conv = conv; + options = options || {}; + options.encoding = this.encoding = "utf8"; + Transform2.call(this, options); + } + IconvLiteDecoderStream.prototype = Object.create(Transform2.prototype, { + constructor: { value: IconvLiteDecoderStream } + }); + IconvLiteDecoderStream.prototype._transform = function(chunk, encoding, done) { + if (!Buffer5.isBuffer(chunk) && !(chunk instanceof Uint8Array)) { + return done(new Error("Iconv decoding stream needs buffers as its input.")); + } + try { + var res = this.conv.write(chunk); + if (res && res.length) this.push(res, this.encoding); + done(); + } catch (e) { + done(e); + } + }; + IconvLiteDecoderStream.prototype._flush = function(done) { + try { + var res = this.conv.end(); + if (res && res.length) this.push(res, this.encoding); + done(); + } catch (e) { + done(e); + } + }; + IconvLiteDecoderStream.prototype.collect = function(cb) { + var res = ""; + this.on("error", cb); + this.on("data", function(chunk) { + res += chunk; + }); + this.on("end", function() { + cb(null, res); + }); + return this; + }; + return { + IconvLiteEncoderStream, + IconvLiteDecoderStream + }; + }; + } +}); + +// node_modules/iconv-lite/lib/index.js +var require_lib = __commonJS({ + "node_modules/iconv-lite/lib/index.js"(exports2, module2) { + "use strict"; + var Buffer5 = require_safer().Buffer; + var bomHandling = require_bom_handling(); + var mergeModules = require_merge_exports(); + module2.exports.encodings = null; + module2.exports.defaultCharUnicode = "\uFFFD"; + module2.exports.defaultCharSingleByte = "?"; + module2.exports.encode = function encode2(str, encoding, options) { + str = "" + (str || ""); + var encoder = module2.exports.getEncoder(encoding, options); + var res = encoder.write(str); + var trail = encoder.end(); + return trail && trail.length > 0 ? Buffer5.concat([res, trail]) : res; + }; + module2.exports.decode = function decode(buf, encoding, options) { + if (typeof buf === "string") { + if (!module2.exports.skipDecodeWarning) { + console.error("Iconv-lite warning: decode()-ing strings is deprecated. Refer to https://github.com/ashtuchkin/iconv-lite/wiki/Use-Buffers-when-decoding"); + module2.exports.skipDecodeWarning = true; + } + buf = Buffer5.from("" + (buf || ""), "binary"); + } + var decoder = module2.exports.getDecoder(encoding, options); + var res = decoder.write(buf); + var trail = decoder.end(); + return trail ? res + trail : res; + }; + module2.exports.encodingExists = function encodingExists(enc) { + try { + module2.exports.getCodec(enc); + return true; + } catch (e) { + return false; + } + }; + module2.exports.toEncoding = module2.exports.encode; + module2.exports.fromEncoding = module2.exports.decode; + module2.exports._codecDataCache = { __proto__: null }; + module2.exports.getCodec = function getCodec(encoding) { + if (!module2.exports.encodings) { + var raw = require_encodings(); + module2.exports.encodings = { __proto__: null }; + mergeModules(module2.exports.encodings, raw); + } + var enc = module2.exports._canonicalizeEncoding(encoding); + var codecOptions = {}; + while (true) { + var codec = module2.exports._codecDataCache[enc]; + if (codec) { + return codec; + } + var codecDef = module2.exports.encodings[enc]; + switch (typeof codecDef) { + case "string": + enc = codecDef; + break; + case "object": + for (var key in codecDef) { + codecOptions[key] = codecDef[key]; + } + if (!codecOptions.encodingName) { + codecOptions.encodingName = enc; + } + enc = codecDef.type; + break; + case "function": + if (!codecOptions.encodingName) { + codecOptions.encodingName = enc; + } + codec = new codecDef(codecOptions, module2.exports); + module2.exports._codecDataCache[codecOptions.encodingName] = codec; + return codec; + default: + throw new Error("Encoding not recognized: '" + encoding + "' (searched as: '" + enc + "')"); + } + } + }; + module2.exports._canonicalizeEncoding = function(encoding) { + return ("" + encoding).toLowerCase().replace(/:\d{4}$|[^0-9a-z]/g, ""); + }; + module2.exports.getEncoder = function getEncoder(encoding, options) { + var codec = module2.exports.getCodec(encoding); + var encoder = new codec.encoder(options, codec); + if (codec.bomAware && options && options.addBOM) { + encoder = new bomHandling.PrependBOM(encoder, options); + } + return encoder; + }; + module2.exports.getDecoder = function getDecoder(encoding, options) { + var codec = module2.exports.getCodec(encoding); + var decoder = new codec.decoder(options, codec); + if (codec.bomAware && !(options && options.stripBOM === false)) { + decoder = new bomHandling.StripBOM(decoder, options); + } + return decoder; + }; + module2.exports.enableStreamingAPI = function enableStreamingAPI(streamModule2) { + if (module2.exports.supportsStreams) { + return; + } + var streams = require_streams()(streamModule2); + module2.exports.IconvLiteEncoderStream = streams.IconvLiteEncoderStream; + module2.exports.IconvLiteDecoderStream = streams.IconvLiteDecoderStream; + module2.exports.encodeStream = function encodeStream(encoding, options) { + return new module2.exports.IconvLiteEncoderStream(module2.exports.getEncoder(encoding, options), options); + }; + module2.exports.decodeStream = function decodeStream(encoding, options) { + return new module2.exports.IconvLiteDecoderStream(module2.exports.getDecoder(encoding, options), options); + }; + module2.exports.supportsStreams = true; + }; + var streamModule; + try { + streamModule = require("stream"); + } catch (e) { + } + if (streamModule && streamModule.Transform) { + module2.exports.enableStreamingAPI(streamModule); + } else { + module2.exports.encodeStream = module2.exports.decodeStream = function() { + throw new Error("iconv-lite Streaming API is not enabled. Use iconv.enableStreamingAPI(require('stream')); to enable it."); + }; + } + if (false) { + console.error("iconv-lite warning: js files use non-utf8 encoding. See https://github.com/ashtuchkin/iconv-lite/wiki/Javascript-source-file-encodings for more info."); + } + } +}); + +// node_modules/unpipe/index.js +var require_unpipe = __commonJS({ + "node_modules/unpipe/index.js"(exports2, module2) { + "use strict"; + module2.exports = unpipe; + function hasPipeDataListeners(stream) { + var listeners = stream.listeners("data"); + for (var i = 0; i < listeners.length; i++) { + if (listeners[i].name === "ondata") { + return true; + } + } + return false; + } + function unpipe(stream) { + if (!stream) { + throw new TypeError("argument stream is required"); + } + if (typeof stream.unpipe === "function") { + stream.unpipe(); + return; + } + if (!hasPipeDataListeners(stream)) { + return; + } + var listener; + var listeners = stream.listeners("close"); + for (var i = 0; i < listeners.length; i++) { + listener = listeners[i]; + if (listener.name !== "cleanup" && listener.name !== "onclose") { + continue; + } + listener.call(stream); + } + } + } +}); + +// node_modules/raw-body/index.js +var require_raw_body = __commonJS({ + "node_modules/raw-body/index.js"(exports2, module2) { + "use strict"; + var asyncHooks = tryRequireAsyncHooks(); + var bytes = require_bytes(); + var createError = require_http_errors(); + var iconv = require_lib(); + var unpipe = require_unpipe(); + module2.exports = getRawBody; + var ICONV_ENCODING_MESSAGE_REGEXP = /^Encoding not recognized: /; + function getDecoder(encoding) { + if (!encoding) return null; + try { + return iconv.getDecoder(encoding); + } catch (e) { + if (!ICONV_ENCODING_MESSAGE_REGEXP.test(e.message)) throw e; + throw createError(415, "specified encoding unsupported", { + encoding, + type: "encoding.unsupported" + }); + } + } + function getRawBody(stream, options, callback) { + var done = callback; + var opts = options || {}; + if (stream === void 0) { + throw new TypeError("argument stream is required"); + } else if (typeof stream !== "object" || stream === null || typeof stream.on !== "function") { + throw new TypeError("argument stream must be a stream"); + } + if (options === true || typeof options === "string") { + opts = { + encoding: options + }; + } + if (typeof options === "function") { + done = options; + opts = {}; + } + if (done !== void 0 && typeof done !== "function") { + throw new TypeError("argument callback must be a function"); + } + if (!done && !global.Promise) { + throw new TypeError("argument callback is required"); + } + var encoding = opts.encoding !== true ? opts.encoding : "utf-8"; + var limit = bytes.parse(opts.limit); + var length = opts.length != null && !isNaN(opts.length) ? parseInt(opts.length, 10) : null; + if (done) { + return readStream(stream, encoding, length, limit, wrap(done)); + } + return new Promise(function executor(resolve, reject) { + readStream(stream, encoding, length, limit, function onRead(err, buf) { + if (err) return reject(err); + resolve(buf); + }); + }); + } + function halt(stream) { + unpipe(stream); + if (typeof stream.pause === "function") { + stream.pause(); + } + } + function readStream(stream, encoding, length, limit, callback) { + var complete = false; + var sync = true; + if (limit !== null && length !== null && length > limit) { + return done(createError(413, "request entity too large", { + expected: length, + length, + limit, + type: "entity.too.large" + })); + } + var state3 = stream._readableState; + if (stream._decoder || state3 && (state3.encoding || state3.decoder)) { + return done(createError(500, "stream encoding should not be set", { + type: "stream.encoding.set" + })); + } + if (typeof stream.readable !== "undefined" && !stream.readable) { + return done(createError(500, "stream is not readable", { + type: "stream.not.readable" + })); + } + var received = 0; + var decoder; + try { + decoder = getDecoder(encoding); + } catch (err) { + return done(err); + } + var buffer = decoder ? "" : []; + stream.on("aborted", onAborted); + stream.on("close", cleanup); + stream.on("data", onData); + stream.on("end", onEnd); + stream.on("error", onEnd); + sync = false; + function done() { + var args = new Array(arguments.length); + for (var i = 0; i < args.length; i++) { + args[i] = arguments[i]; + } + complete = true; + if (sync) { + process.nextTick(invokeCallback); + } else { + invokeCallback(); + } + function invokeCallback() { + cleanup(); + if (args[0]) { + halt(stream); + } + callback.apply(null, args); + } + } + function onAborted() { + if (complete) return; + done(createError(400, "request aborted", { + code: "ECONNABORTED", + expected: length, + length, + received, + type: "request.aborted" + })); + } + function onData(chunk) { + if (complete) return; + received += chunk.length; + if (limit !== null && received > limit) { + done(createError(413, "request entity too large", { + limit, + received, + type: "entity.too.large" + })); + } else if (decoder) { + buffer += decoder.write(chunk); + } else { + buffer.push(chunk); + } + } + function onEnd(err) { + if (complete) return; + if (err) return done(err); + if (length !== null && received !== length) { + done(createError(400, "request size did not match content length", { + expected: length, + length, + received, + type: "request.size.invalid" + })); + } else { + var string4 = decoder ? buffer + (decoder.end() || "") : Buffer.concat(buffer); + done(null, string4); + } + } + function cleanup() { + buffer = null; + stream.removeListener("aborted", onAborted); + stream.removeListener("data", onData); + stream.removeListener("end", onEnd); + stream.removeListener("error", onEnd); + stream.removeListener("close", cleanup); + } + } + function tryRequireAsyncHooks() { + try { + return require("async_hooks"); + } catch (e) { + return {}; + } + } + function wrap(fn) { + var res; + if (asyncHooks.AsyncResource) { + res = new asyncHooks.AsyncResource(fn.name || "bound-anonymous-fn"); + } + if (!res || !res.runInAsyncScope) { + return fn; + } + return res.runInAsyncScope.bind(res, fn, null); + } + } +}); + +// node_modules/ee-first/index.js +var require_ee_first = __commonJS({ + "node_modules/ee-first/index.js"(exports2, module2) { + "use strict"; + module2.exports = first; + function first(stuff, done) { + if (!Array.isArray(stuff)) + throw new TypeError("arg must be an array of [ee, events...] arrays"); + var cleanups = []; + for (var i = 0; i < stuff.length; i++) { + var arr = stuff[i]; + if (!Array.isArray(arr) || arr.length < 2) + throw new TypeError("each array member must be [ee, events...]"); + var ee = arr[0]; + for (var j = 1; j < arr.length; j++) { + var event = arr[j]; + var fn = listener(event, callback); + ee.on(event, fn); + cleanups.push({ + ee, + event, + fn + }); + } + } + function callback() { + cleanup(); + done.apply(null, arguments); + } + function cleanup() { + var x; + for (var i2 = 0; i2 < cleanups.length; i2++) { + x = cleanups[i2]; + x.ee.removeListener(x.event, x.fn); + } + } + function thunk(fn2) { + done = fn2; + } + thunk.cancel = cleanup; + return thunk; + } + function listener(event, done) { + return function onevent(arg1) { + var args = new Array(arguments.length); + var ee = this; + var err = event === "error" ? arg1 : null; + for (var i = 0; i < args.length; i++) { + args[i] = arguments[i]; + } + done(err, ee, event, args); + }; + } + } +}); + +// node_modules/on-finished/index.js +var require_on_finished = __commonJS({ + "node_modules/on-finished/index.js"(exports2, module2) { + "use strict"; + module2.exports = onFinished; + module2.exports.isFinished = isFinished; + var asyncHooks = tryRequireAsyncHooks(); + var first = require_ee_first(); + var defer = typeof setImmediate === "function" ? setImmediate : function(fn) { + process.nextTick(fn.bind.apply(fn, arguments)); + }; + function onFinished(msg, listener) { + if (isFinished(msg) !== false) { + defer(listener, null, msg); + return msg; + } + attachListener(msg, wrap(listener)); + return msg; + } + function isFinished(msg) { + var socket = msg.socket; + if (typeof msg.finished === "boolean") { + return Boolean(msg.finished || socket && !socket.writable); + } + if (typeof msg.complete === "boolean") { + return Boolean(msg.upgrade || !socket || !socket.readable || msg.complete && !msg.readable); + } + return void 0; + } + function attachFinishedListener(msg, callback) { + var eeMsg; + var eeSocket; + var finished = false; + function onFinish(error2) { + eeMsg.cancel(); + eeSocket.cancel(); + finished = true; + callback(error2); + } + eeMsg = eeSocket = first([[msg, "end", "finish"]], onFinish); + function onSocket(socket) { + msg.removeListener("socket", onSocket); + if (finished) return; + if (eeMsg !== eeSocket) return; + eeSocket = first([[socket, "error", "close"]], onFinish); + } + if (msg.socket) { + onSocket(msg.socket); + return; + } + msg.on("socket", onSocket); + if (msg.socket === void 0) { + patchAssignSocket(msg, onSocket); + } + } + function attachListener(msg, listener) { + var attached = msg.__onFinished; + if (!attached || !attached.queue) { + attached = msg.__onFinished = createListener(msg); + attachFinishedListener(msg, attached); + } + attached.queue.push(listener); + } + function createListener(msg) { + function listener(err) { + if (msg.__onFinished === listener) msg.__onFinished = null; + if (!listener.queue) return; + var queue = listener.queue; + listener.queue = null; + for (var i = 0; i < queue.length; i++) { + queue[i](err, msg); + } + } + listener.queue = []; + return listener; + } + function patchAssignSocket(res, callback) { + var assignSocket = res.assignSocket; + if (typeof assignSocket !== "function") return; + res.assignSocket = function _assignSocket(socket) { + assignSocket.call(this, socket); + callback(socket); + }; + } + function tryRequireAsyncHooks() { + try { + return require("async_hooks"); + } catch (e) { + return {}; + } + } + function wrap(fn) { + var res; + if (asyncHooks.AsyncResource) { + res = new asyncHooks.AsyncResource(fn.name || "bound-anonymous-fn"); + } + if (!res || !res.runInAsyncScope) { + return fn; + } + return res.runInAsyncScope.bind(res, fn, null); + } + } +}); + +// node_modules/content-type/index.js +var require_content_type = __commonJS({ + "node_modules/content-type/index.js"(exports2) { + "use strict"; + var PARAM_REGEXP = /; *([!#$%&'*+.^_`|~0-9A-Za-z-]+) *= *("(?:[\u000b\u0020\u0021\u0023-\u005b\u005d-\u007e\u0080-\u00ff]|\\[\u000b\u0020-\u00ff])*"|[!#$%&'*+.^_`|~0-9A-Za-z-]+) */g; + var TEXT_REGEXP = /^[\u000b\u0020-\u007e\u0080-\u00ff]+$/; + var TOKEN_REGEXP = /^[!#$%&'*+.^_`|~0-9A-Za-z-]+$/; + var QESC_REGEXP = /\\([\u000b\u0020-\u00ff])/g; + var QUOTE_REGEXP = /([\\"])/g; + var TYPE_REGEXP = /^[!#$%&'*+.^_`|~0-9A-Za-z-]+\/[!#$%&'*+.^_`|~0-9A-Za-z-]+$/; + exports2.format = format; + exports2.parse = parse4; + function format(obj) { + if (!obj || typeof obj !== "object") { + throw new TypeError("argument obj is required"); + } + var parameters = obj.parameters; + var type = obj.type; + if (!type || !TYPE_REGEXP.test(type)) { + throw new TypeError("invalid type"); + } + var string4 = type; + if (parameters && typeof parameters === "object") { + var param; + var params = Object.keys(parameters).sort(); + for (var i = 0; i < params.length; i++) { + param = params[i]; + if (!TOKEN_REGEXP.test(param)) { + throw new TypeError("invalid parameter name"); + } + string4 += "; " + param + "=" + qstring(parameters[param]); + } + } + return string4; + } + function parse4(string4) { + if (!string4) { + throw new TypeError("argument string is required"); + } + var header = typeof string4 === "object" ? getcontenttype(string4) : string4; + if (typeof header !== "string") { + throw new TypeError("argument string is required to be a string"); + } + var index = header.indexOf(";"); + var type = index !== -1 ? header.slice(0, index).trim() : header.trim(); + if (!TYPE_REGEXP.test(type)) { + throw new TypeError("invalid media type"); + } + var obj = new ContentType(type.toLowerCase()); + if (index !== -1) { + var key; + var match; + var value; + PARAM_REGEXP.lastIndex = index; + while (match = PARAM_REGEXP.exec(header)) { + if (match.index !== index) { + throw new TypeError("invalid parameter format"); + } + index += match[0].length; + key = match[1].toLowerCase(); + value = match[2]; + if (value.charCodeAt(0) === 34) { + value = value.slice(1, -1); + if (value.indexOf("\\") !== -1) { + value = value.replace(QESC_REGEXP, "$1"); + } + } + obj.parameters[key] = value; + } + if (index !== header.length) { + throw new TypeError("invalid parameter format"); + } + } + return obj; + } + function getcontenttype(obj) { + var header; + if (typeof obj.getHeader === "function") { + header = obj.getHeader("content-type"); + } else if (typeof obj.headers === "object") { + header = obj.headers && obj.headers["content-type"]; + } + if (typeof header !== "string") { + throw new TypeError("content-type header is missing from object"); + } + return header; + } + function qstring(val) { + var str = String(val); + if (TOKEN_REGEXP.test(str)) { + return str; + } + if (str.length > 0 && !TEXT_REGEXP.test(str)) { + throw new TypeError("invalid parameter value"); + } + return '"' + str.replace(QUOTE_REGEXP, "\\$1") + '"'; + } + function ContentType(type) { + this.parameters = /* @__PURE__ */ Object.create(null); + this.type = type; + } + } +}); + +// node_modules/mime-db/db.json +var require_db = __commonJS({ + "node_modules/mime-db/db.json"(exports2, module2) { + module2.exports = { + "application/1d-interleaved-parityfec": { + source: "iana" + }, + "application/3gpdash-qoe-report+xml": { + source: "iana", + charset: "UTF-8", + compressible: true + }, + "application/3gpp-ims+xml": { + source: "iana", + compressible: true + }, + "application/3gpphal+json": { + source: "iana", + compressible: true + }, + "application/3gpphalforms+json": { + source: "iana", + compressible: true + }, + "application/a2l": { + source: "iana" + }, + "application/ace+cbor": { + source: "iana" + }, + "application/ace+json": { + source: "iana", + compressible: true + }, + "application/ace-groupcomm+cbor": { + source: "iana" + }, + "application/ace-trl+cbor": { + source: "iana" + }, + "application/activemessage": { + source: "iana" + }, + "application/activity+json": { + source: "iana", + compressible: true + }, + "application/aif+cbor": { + source: "iana" + }, + "application/aif+json": { + source: "iana", + compressible: true + }, + "application/alto-cdni+json": { + source: "iana", + compressible: true + }, + "application/alto-cdnifilter+json": { + source: "iana", + compressible: true + }, + "application/alto-costmap+json": { + source: "iana", + compressible: true + }, + "application/alto-costmapfilter+json": { + source: "iana", + compressible: true + }, + "application/alto-directory+json": { + source: "iana", + compressible: true + }, + "application/alto-endpointcost+json": { + source: "iana", + compressible: true + }, + "application/alto-endpointcostparams+json": { + source: "iana", + compressible: true + }, + "application/alto-endpointprop+json": { + source: "iana", + compressible: true + }, + "application/alto-endpointpropparams+json": { + source: "iana", + compressible: true + }, + "application/alto-error+json": { + source: "iana", + compressible: true + }, + "application/alto-networkmap+json": { + source: "iana", + compressible: true + }, + "application/alto-networkmapfilter+json": { + source: "iana", + compressible: true + }, + "application/alto-propmap+json": { + source: "iana", + compressible: true + }, + "application/alto-propmapparams+json": { + source: "iana", + compressible: true + }, + "application/alto-tips+json": { + source: "iana", + compressible: true + }, + "application/alto-tipsparams+json": { + source: "iana", + compressible: true + }, + "application/alto-updatestreamcontrol+json": { + source: "iana", + compressible: true + }, + "application/alto-updatestreamparams+json": { + source: "iana", + compressible: true + }, + "application/aml": { + source: "iana" + }, + "application/andrew-inset": { + source: "iana", + extensions: ["ez"] + }, + "application/appinstaller": { + compressible: false, + extensions: ["appinstaller"] + }, + "application/applefile": { + source: "iana" + }, + "application/applixware": { + source: "apache", + extensions: ["aw"] + }, + "application/appx": { + compressible: false, + extensions: ["appx"] + }, + "application/appxbundle": { + compressible: false, + extensions: ["appxbundle"] + }, + "application/at+jwt": { + source: "iana" + }, + "application/atf": { + source: "iana" + }, + "application/atfx": { + source: "iana" + }, + "application/atom+xml": { + source: "iana", + compressible: true, + extensions: ["atom"] + }, + "application/atomcat+xml": { + source: "iana", + compressible: true, + extensions: ["atomcat"] + }, + "application/atomdeleted+xml": { + source: "iana", + compressible: true, + extensions: ["atomdeleted"] + }, + "application/atomicmail": { + source: "iana" + }, + "application/atomsvc+xml": { + source: "iana", + compressible: true, + extensions: ["atomsvc"] + }, + "application/atsc-dwd+xml": { + source: "iana", + compressible: true, + extensions: ["dwd"] + }, + "application/atsc-dynamic-event-message": { + source: "iana" + }, + "application/atsc-held+xml": { + source: "iana", + compressible: true, + extensions: ["held"] + }, + "application/atsc-rdt+json": { + source: "iana", + compressible: true + }, + "application/atsc-rsat+xml": { + source: "iana", + compressible: true, + extensions: ["rsat"] + }, + "application/atxml": { + source: "iana" + }, + "application/auth-policy+xml": { + source: "iana", + compressible: true + }, + "application/automationml-aml+xml": { + source: "iana", + compressible: true, + extensions: ["aml"] + }, + "application/automationml-amlx+zip": { + source: "iana", + compressible: false, + extensions: ["amlx"] + }, + "application/bacnet-xdd+zip": { + source: "iana", + compressible: false + }, + "application/batch-smtp": { + source: "iana" + }, + "application/bdoc": { + compressible: false, + extensions: ["bdoc"] + }, + "application/beep+xml": { + source: "iana", + charset: "UTF-8", + compressible: true + }, + "application/bufr": { + source: "iana" + }, + "application/c2pa": { + source: "iana" + }, + "application/calendar+json": { + source: "iana", + compressible: true + }, + "application/calendar+xml": { + source: "iana", + compressible: true, + extensions: ["xcs"] + }, + "application/call-completion": { + source: "iana" + }, + "application/cals-1840": { + source: "iana" + }, + "application/captive+json": { + source: "iana", + compressible: true + }, + "application/cbor": { + source: "iana" + }, + "application/cbor-seq": { + source: "iana" + }, + "application/cccex": { + source: "iana" + }, + "application/ccmp+xml": { + source: "iana", + compressible: true + }, + "application/ccxml+xml": { + source: "iana", + compressible: true, + extensions: ["ccxml"] + }, + "application/cda+xml": { + source: "iana", + charset: "UTF-8", + compressible: true + }, + "application/cdfx+xml": { + source: "iana", + compressible: true, + extensions: ["cdfx"] + }, + "application/cdmi-capability": { + source: "iana", + extensions: ["cdmia"] + }, + "application/cdmi-container": { + source: "iana", + extensions: ["cdmic"] + }, + "application/cdmi-domain": { + source: "iana", + extensions: ["cdmid"] + }, + "application/cdmi-object": { + source: "iana", + extensions: ["cdmio"] + }, + "application/cdmi-queue": { + source: "iana", + extensions: ["cdmiq"] + }, + "application/cdni": { + source: "iana" + }, + "application/ce+cbor": { + source: "iana" + }, + "application/cea": { + source: "iana" + }, + "application/cea-2018+xml": { + source: "iana", + compressible: true + }, + "application/cellml+xml": { + source: "iana", + compressible: true + }, + "application/cfw": { + source: "iana" + }, + "application/cid-edhoc+cbor-seq": { + source: "iana" + }, + "application/city+json": { + source: "iana", + compressible: true + }, + "application/city+json-seq": { + source: "iana" + }, + "application/clr": { + source: "iana" + }, + "application/clue+xml": { + source: "iana", + compressible: true + }, + "application/clue_info+xml": { + source: "iana", + compressible: true + }, + "application/cms": { + source: "iana" + }, + "application/cnrp+xml": { + source: "iana", + compressible: true + }, + "application/coap-eap": { + source: "iana" + }, + "application/coap-group+json": { + source: "iana", + compressible: true + }, + "application/coap-payload": { + source: "iana" + }, + "application/commonground": { + source: "iana" + }, + "application/concise-problem-details+cbor": { + source: "iana" + }, + "application/conference-info+xml": { + source: "iana", + compressible: true + }, + "application/cose": { + source: "iana" + }, + "application/cose-key": { + source: "iana" + }, + "application/cose-key-set": { + source: "iana" + }, + "application/cose-x509": { + source: "iana" + }, + "application/cpl+xml": { + source: "iana", + compressible: true, + extensions: ["cpl"] + }, + "application/csrattrs": { + source: "iana" + }, + "application/csta+xml": { + source: "iana", + compressible: true + }, + "application/cstadata+xml": { + source: "iana", + compressible: true + }, + "application/csvm+json": { + source: "iana", + compressible: true + }, + "application/cu-seeme": { + source: "apache", + extensions: ["cu"] + }, + "application/cwl": { + source: "iana", + extensions: ["cwl"] + }, + "application/cwl+json": { + source: "iana", + compressible: true + }, + "application/cwl+yaml": { + source: "iana" + }, + "application/cwt": { + source: "iana" + }, + "application/cybercash": { + source: "iana" + }, + "application/dart": { + compressible: true + }, + "application/dash+xml": { + source: "iana", + compressible: true, + extensions: ["mpd"] + }, + "application/dash-patch+xml": { + source: "iana", + compressible: true, + extensions: ["mpp"] + }, + "application/dashdelta": { + source: "iana" + }, + "application/davmount+xml": { + source: "iana", + compressible: true, + extensions: ["davmount"] + }, + "application/dca-rft": { + source: "iana" + }, + "application/dcd": { + source: "iana" + }, + "application/dec-dx": { + source: "iana" + }, + "application/dialog-info+xml": { + source: "iana", + compressible: true + }, + "application/dicom": { + source: "iana", + extensions: ["dcm"] + }, + "application/dicom+json": { + source: "iana", + compressible: true + }, + "application/dicom+xml": { + source: "iana", + compressible: true + }, + "application/dii": { + source: "iana" + }, + "application/dit": { + source: "iana" + }, + "application/dns": { + source: "iana" + }, + "application/dns+json": { + source: "iana", + compressible: true + }, + "application/dns-message": { + source: "iana" + }, + "application/docbook+xml": { + source: "apache", + compressible: true, + extensions: ["dbk"] + }, + "application/dots+cbor": { + source: "iana" + }, + "application/dpop+jwt": { + source: "iana" + }, + "application/dskpp+xml": { + source: "iana", + compressible: true + }, + "application/dssc+der": { + source: "iana", + extensions: ["dssc"] + }, + "application/dssc+xml": { + source: "iana", + compressible: true, + extensions: ["xdssc"] + }, + "application/dvcs": { + source: "iana" + }, + "application/eat+cwt": { + source: "iana" + }, + "application/eat+jwt": { + source: "iana" + }, + "application/eat-bun+cbor": { + source: "iana" + }, + "application/eat-bun+json": { + source: "iana", + compressible: true + }, + "application/eat-ucs+cbor": { + source: "iana" + }, + "application/eat-ucs+json": { + source: "iana", + compressible: true + }, + "application/ecmascript": { + source: "apache", + compressible: true, + extensions: ["ecma"] + }, + "application/edhoc+cbor-seq": { + source: "iana" + }, + "application/edi-consent": { + source: "iana" + }, + "application/edi-x12": { + source: "iana", + compressible: false + }, + "application/edifact": { + source: "iana", + compressible: false + }, + "application/efi": { + source: "iana" + }, + "application/elm+json": { + source: "iana", + charset: "UTF-8", + compressible: true + }, + "application/elm+xml": { + source: "iana", + compressible: true + }, + "application/emergencycalldata.cap+xml": { + source: "iana", + charset: "UTF-8", + compressible: true + }, + "application/emergencycalldata.comment+xml": { + source: "iana", + compressible: true + }, + "application/emergencycalldata.control+xml": { + source: "iana", + compressible: true + }, + "application/emergencycalldata.deviceinfo+xml": { + source: "iana", + compressible: true + }, + "application/emergencycalldata.ecall.msd": { + source: "iana" + }, + "application/emergencycalldata.legacyesn+json": { + source: "iana", + compressible: true + }, + "application/emergencycalldata.providerinfo+xml": { + source: "iana", + compressible: true + }, + "application/emergencycalldata.serviceinfo+xml": { + source: "iana", + compressible: true + }, + "application/emergencycalldata.subscriberinfo+xml": { + source: "iana", + compressible: true + }, + "application/emergencycalldata.veds+xml": { + source: "iana", + compressible: true + }, + "application/emma+xml": { + source: "iana", + compressible: true, + extensions: ["emma"] + }, + "application/emotionml+xml": { + source: "iana", + compressible: true, + extensions: ["emotionml"] + }, + "application/encaprtp": { + source: "iana" + }, + "application/entity-statement+jwt": { + source: "iana" + }, + "application/epp+xml": { + source: "iana", + compressible: true + }, + "application/epub+zip": { + source: "iana", + compressible: false, + extensions: ["epub"] + }, + "application/eshop": { + source: "iana" + }, + "application/exi": { + source: "iana", + extensions: ["exi"] + }, + "application/expect-ct-report+json": { + source: "iana", + compressible: true + }, + "application/express": { + source: "iana", + extensions: ["exp"] + }, + "application/fastinfoset": { + source: "iana" + }, + "application/fastsoap": { + source: "iana" + }, + "application/fdf": { + source: "iana", + extensions: ["fdf"] + }, + "application/fdt+xml": { + source: "iana", + compressible: true, + extensions: ["fdt"] + }, + "application/fhir+json": { + source: "iana", + charset: "UTF-8", + compressible: true + }, + "application/fhir+xml": { + source: "iana", + charset: "UTF-8", + compressible: true + }, + "application/fido.trusted-apps+json": { + compressible: true + }, + "application/fits": { + source: "iana" + }, + "application/flexfec": { + source: "iana" + }, + "application/font-sfnt": { + source: "iana" + }, + "application/font-tdpfr": { + source: "iana", + extensions: ["pfr"] + }, + "application/font-woff": { + source: "iana", + compressible: false + }, + "application/framework-attributes+xml": { + source: "iana", + compressible: true + }, + "application/geo+json": { + source: "iana", + compressible: true, + extensions: ["geojson"] + }, + "application/geo+json-seq": { + source: "iana" + }, + "application/geopackage+sqlite3": { + source: "iana" + }, + "application/geopose+json": { + source: "iana", + compressible: true + }, + "application/geoxacml+json": { + source: "iana", + compressible: true + }, + "application/geoxacml+xml": { + source: "iana", + compressible: true + }, + "application/gltf-buffer": { + source: "iana" + }, + "application/gml+xml": { + source: "iana", + compressible: true, + extensions: ["gml"] + }, + "application/gnap-binding-jws": { + source: "iana" + }, + "application/gnap-binding-jwsd": { + source: "iana" + }, + "application/gnap-binding-rotation-jws": { + source: "iana" + }, + "application/gnap-binding-rotation-jwsd": { + source: "iana" + }, + "application/gpx+xml": { + source: "apache", + compressible: true, + extensions: ["gpx"] + }, + "application/grib": { + source: "iana" + }, + "application/gxf": { + source: "apache", + extensions: ["gxf"] + }, + "application/gzip": { + source: "iana", + compressible: false, + extensions: ["gz"] + }, + "application/h224": { + source: "iana" + }, + "application/held+xml": { + source: "iana", + compressible: true + }, + "application/hjson": { + extensions: ["hjson"] + }, + "application/hl7v2+xml": { + source: "iana", + charset: "UTF-8", + compressible: true + }, + "application/http": { + source: "iana" + }, + "application/hyperstudio": { + source: "iana", + extensions: ["stk"] + }, + "application/ibe-key-request+xml": { + source: "iana", + compressible: true + }, + "application/ibe-pkg-reply+xml": { + source: "iana", + compressible: true + }, + "application/ibe-pp-data": { + source: "iana" + }, + "application/iges": { + source: "iana" + }, + "application/im-iscomposing+xml": { + source: "iana", + charset: "UTF-8", + compressible: true + }, + "application/index": { + source: "iana" + }, + "application/index.cmd": { + source: "iana" + }, + "application/index.obj": { + source: "iana" + }, + "application/index.response": { + source: "iana" + }, + "application/index.vnd": { + source: "iana" + }, + "application/inkml+xml": { + source: "iana", + compressible: true, + extensions: ["ink", "inkml"] + }, + "application/iotp": { + source: "iana" + }, + "application/ipfix": { + source: "iana", + extensions: ["ipfix"] + }, + "application/ipp": { + source: "iana" + }, + "application/isup": { + source: "iana" + }, + "application/its+xml": { + source: "iana", + compressible: true, + extensions: ["its"] + }, + "application/java-archive": { + source: "iana", + compressible: false, + extensions: ["jar", "war", "ear"] + }, + "application/java-serialized-object": { + source: "apache", + compressible: false, + extensions: ["ser"] + }, + "application/java-vm": { + source: "apache", + compressible: false, + extensions: ["class"] + }, + "application/javascript": { + source: "apache", + charset: "UTF-8", + compressible: true, + extensions: ["js"] + }, + "application/jf2feed+json": { + source: "iana", + compressible: true + }, + "application/jose": { + source: "iana" + }, + "application/jose+json": { + source: "iana", + compressible: true + }, + "application/jrd+json": { + source: "iana", + compressible: true + }, + "application/jscalendar+json": { + source: "iana", + compressible: true + }, + "application/jscontact+json": { + source: "iana", + compressible: true + }, + "application/json": { + source: "iana", + charset: "UTF-8", + compressible: true, + extensions: ["json", "map"] + }, + "application/json-patch+json": { + source: "iana", + compressible: true + }, + "application/json-seq": { + source: "iana" + }, + "application/json5": { + extensions: ["json5"] + }, + "application/jsonml+json": { + source: "apache", + compressible: true, + extensions: ["jsonml"] + }, + "application/jsonpath": { + source: "iana" + }, + "application/jwk+json": { + source: "iana", + compressible: true + }, + "application/jwk-set+json": { + source: "iana", + compressible: true + }, + "application/jwk-set+jwt": { + source: "iana" + }, + "application/jwt": { + source: "iana" + }, + "application/kpml-request+xml": { + source: "iana", + compressible: true + }, + "application/kpml-response+xml": { + source: "iana", + compressible: true + }, + "application/ld+json": { + source: "iana", + compressible: true, + extensions: ["jsonld"] + }, + "application/lgr+xml": { + source: "iana", + compressible: true, + extensions: ["lgr"] + }, + "application/link-format": { + source: "iana" + }, + "application/linkset": { + source: "iana" + }, + "application/linkset+json": { + source: "iana", + compressible: true + }, + "application/load-control+xml": { + source: "iana", + compressible: true + }, + "application/logout+jwt": { + source: "iana" + }, + "application/lost+xml": { + source: "iana", + compressible: true, + extensions: ["lostxml"] + }, + "application/lostsync+xml": { + source: "iana", + compressible: true + }, + "application/lpf+zip": { + source: "iana", + compressible: false + }, + "application/lxf": { + source: "iana" + }, + "application/mac-binhex40": { + source: "iana", + extensions: ["hqx"] + }, + "application/mac-compactpro": { + source: "apache", + extensions: ["cpt"] + }, + "application/macwriteii": { + source: "iana" + }, + "application/mads+xml": { + source: "iana", + compressible: true, + extensions: ["mads"] + }, + "application/manifest+json": { + source: "iana", + charset: "UTF-8", + compressible: true, + extensions: ["webmanifest"] + }, + "application/marc": { + source: "iana", + extensions: ["mrc"] + }, + "application/marcxml+xml": { + source: "iana", + compressible: true, + extensions: ["mrcx"] + }, + "application/mathematica": { + source: "iana", + extensions: ["ma", "nb", "mb"] + }, + "application/mathml+xml": { + source: "iana", + compressible: true, + extensions: ["mathml"] + }, + "application/mathml-content+xml": { + source: "iana", + compressible: true + }, + "application/mathml-presentation+xml": { + source: "iana", + compressible: true + }, + "application/mbms-associated-procedure-description+xml": { + source: "iana", + compressible: true + }, + "application/mbms-deregister+xml": { + source: "iana", + compressible: true + }, + "application/mbms-envelope+xml": { + source: "iana", + compressible: true + }, + "application/mbms-msk+xml": { + source: "iana", + compressible: true + }, + "application/mbms-msk-response+xml": { + source: "iana", + compressible: true + }, + "application/mbms-protection-description+xml": { + source: "iana", + compressible: true + }, + "application/mbms-reception-report+xml": { + source: "iana", + compressible: true + }, + "application/mbms-register+xml": { + source: "iana", + compressible: true + }, + "application/mbms-register-response+xml": { + source: "iana", + compressible: true + }, + "application/mbms-schedule+xml": { + source: "iana", + compressible: true + }, + "application/mbms-user-service-description+xml": { + source: "iana", + compressible: true + }, + "application/mbox": { + source: "iana", + extensions: ["mbox"] + }, + "application/media-policy-dataset+xml": { + source: "iana", + compressible: true, + extensions: ["mpf"] + }, + "application/media_control+xml": { + source: "iana", + compressible: true + }, + "application/mediaservercontrol+xml": { + source: "iana", + compressible: true, + extensions: ["mscml"] + }, + "application/merge-patch+json": { + source: "iana", + compressible: true + }, + "application/metalink+xml": { + source: "apache", + compressible: true, + extensions: ["metalink"] + }, + "application/metalink4+xml": { + source: "iana", + compressible: true, + extensions: ["meta4"] + }, + "application/mets+xml": { + source: "iana", + compressible: true, + extensions: ["mets"] + }, + "application/mf4": { + source: "iana" + }, + "application/mikey": { + source: "iana" + }, + "application/mipc": { + source: "iana" + }, + "application/missing-blocks+cbor-seq": { + source: "iana" + }, + "application/mmt-aei+xml": { + source: "iana", + compressible: true, + extensions: ["maei"] + }, + "application/mmt-usd+xml": { + source: "iana", + compressible: true, + extensions: ["musd"] + }, + "application/mods+xml": { + source: "iana", + compressible: true, + extensions: ["mods"] + }, + "application/moss-keys": { + source: "iana" + }, + "application/moss-signature": { + source: "iana" + }, + "application/mosskey-data": { + source: "iana" + }, + "application/mosskey-request": { + source: "iana" + }, + "application/mp21": { + source: "iana", + extensions: ["m21", "mp21"] + }, + "application/mp4": { + source: "iana", + extensions: ["mp4", "mpg4", "mp4s", "m4p"] + }, + "application/mpeg4-generic": { + source: "iana" + }, + "application/mpeg4-iod": { + source: "iana" + }, + "application/mpeg4-iod-xmt": { + source: "iana" + }, + "application/mrb-consumer+xml": { + source: "iana", + compressible: true + }, + "application/mrb-publish+xml": { + source: "iana", + compressible: true + }, + "application/msc-ivr+xml": { + source: "iana", + charset: "UTF-8", + compressible: true + }, + "application/msc-mixer+xml": { + source: "iana", + charset: "UTF-8", + compressible: true + }, + "application/msix": { + compressible: false, + extensions: ["msix"] + }, + "application/msixbundle": { + compressible: false, + extensions: ["msixbundle"] + }, + "application/msword": { + source: "iana", + compressible: false, + extensions: ["doc", "dot"] + }, + "application/mud+json": { + source: "iana", + compressible: true + }, + "application/multipart-core": { + source: "iana" + }, + "application/mxf": { + source: "iana", + extensions: ["mxf"] + }, + "application/n-quads": { + source: "iana", + extensions: ["nq"] + }, + "application/n-triples": { + source: "iana", + extensions: ["nt"] + }, + "application/nasdata": { + source: "iana" + }, + "application/news-checkgroups": { + source: "iana", + charset: "US-ASCII" + }, + "application/news-groupinfo": { + source: "iana", + charset: "US-ASCII" + }, + "application/news-transmission": { + source: "iana" + }, + "application/nlsml+xml": { + source: "iana", + compressible: true + }, + "application/node": { + source: "iana", + extensions: ["cjs"] + }, + "application/nss": { + source: "iana" + }, + "application/oauth-authz-req+jwt": { + source: "iana" + }, + "application/oblivious-dns-message": { + source: "iana" + }, + "application/ocsp-request": { + source: "iana" + }, + "application/ocsp-response": { + source: "iana" + }, + "application/octet-stream": { + source: "iana", + compressible: true, + extensions: ["bin", "dms", "lrf", "mar", "so", "dist", "distz", "pkg", "bpk", "dump", "elc", "deploy", "exe", "dll", "deb", "dmg", "iso", "img", "msi", "msp", "msm", "buffer"] + }, + "application/oda": { + source: "iana", + extensions: ["oda"] + }, + "application/odm+xml": { + source: "iana", + compressible: true + }, + "application/odx": { + source: "iana" + }, + "application/oebps-package+xml": { + source: "iana", + compressible: true, + extensions: ["opf"] + }, + "application/ogg": { + source: "iana", + compressible: false, + extensions: ["ogx"] + }, + "application/ohttp-keys": { + source: "iana" + }, + "application/omdoc+xml": { + source: "apache", + compressible: true, + extensions: ["omdoc"] + }, + "application/onenote": { + source: "apache", + extensions: ["onetoc", "onetoc2", "onetmp", "onepkg", "one", "onea"] + }, + "application/opc-nodeset+xml": { + source: "iana", + compressible: true + }, + "application/oscore": { + source: "iana" + }, + "application/oxps": { + source: "iana", + extensions: ["oxps"] + }, + "application/p21": { + source: "iana" + }, + "application/p21+zip": { + source: "iana", + compressible: false + }, + "application/p2p-overlay+xml": { + source: "iana", + compressible: true, + extensions: ["relo"] + }, + "application/parityfec": { + source: "iana" + }, + "application/passport": { + source: "iana" + }, + "application/patch-ops-error+xml": { + source: "iana", + compressible: true, + extensions: ["xer"] + }, + "application/pdf": { + source: "iana", + compressible: false, + extensions: ["pdf"] + }, + "application/pdx": { + source: "iana" + }, + "application/pem-certificate-chain": { + source: "iana" + }, + "application/pgp-encrypted": { + source: "iana", + compressible: false, + extensions: ["pgp"] + }, + "application/pgp-keys": { + source: "iana", + extensions: ["asc"] + }, + "application/pgp-signature": { + source: "iana", + extensions: ["sig", "asc"] + }, + "application/pics-rules": { + source: "apache", + extensions: ["prf"] + }, + "application/pidf+xml": { + source: "iana", + charset: "UTF-8", + compressible: true + }, + "application/pidf-diff+xml": { + source: "iana", + charset: "UTF-8", + compressible: true + }, + "application/pkcs10": { + source: "iana", + extensions: ["p10"] + }, + "application/pkcs12": { + source: "iana" + }, + "application/pkcs7-mime": { + source: "iana", + extensions: ["p7m", "p7c"] + }, + "application/pkcs7-signature": { + source: "iana", + extensions: ["p7s"] + }, + "application/pkcs8": { + source: "iana", + extensions: ["p8"] + }, + "application/pkcs8-encrypted": { + source: "iana" + }, + "application/pkix-attr-cert": { + source: "iana", + extensions: ["ac"] + }, + "application/pkix-cert": { + source: "iana", + extensions: ["cer"] + }, + "application/pkix-crl": { + source: "iana", + extensions: ["crl"] + }, + "application/pkix-pkipath": { + source: "iana", + extensions: ["pkipath"] + }, + "application/pkixcmp": { + source: "iana", + extensions: ["pki"] + }, + "application/pls+xml": { + source: "iana", + compressible: true, + extensions: ["pls"] + }, + "application/poc-settings+xml": { + source: "iana", + charset: "UTF-8", + compressible: true + }, + "application/postscript": { + source: "iana", + compressible: true, + extensions: ["ai", "eps", "ps"] + }, + "application/ppsp-tracker+json": { + source: "iana", + compressible: true + }, + "application/private-token-issuer-directory": { + source: "iana" + }, + "application/private-token-request": { + source: "iana" + }, + "application/private-token-response": { + source: "iana" + }, + "application/problem+json": { + source: "iana", + compressible: true + }, + "application/problem+xml": { + source: "iana", + compressible: true + }, + "application/provenance+xml": { + source: "iana", + compressible: true, + extensions: ["provx"] + }, + "application/provided-claims+jwt": { + source: "iana" + }, + "application/prs.alvestrand.titrax-sheet": { + source: "iana" + }, + "application/prs.cww": { + source: "iana", + extensions: ["cww"] + }, + "application/prs.cyn": { + source: "iana", + charset: "7-BIT" + }, + "application/prs.hpub+zip": { + source: "iana", + compressible: false + }, + "application/prs.implied-document+xml": { + source: "iana", + compressible: true + }, + "application/prs.implied-executable": { + source: "iana" + }, + "application/prs.implied-object+json": { + source: "iana", + compressible: true + }, + "application/prs.implied-object+json-seq": { + source: "iana" + }, + "application/prs.implied-object+yaml": { + source: "iana" + }, + "application/prs.implied-structure": { + source: "iana" + }, + "application/prs.mayfile": { + source: "iana" + }, + "application/prs.nprend": { + source: "iana" + }, + "application/prs.plucker": { + source: "iana" + }, + "application/prs.rdf-xml-crypt": { + source: "iana" + }, + "application/prs.vcfbzip2": { + source: "iana" + }, + "application/prs.xsf+xml": { + source: "iana", + compressible: true, + extensions: ["xsf"] + }, + "application/pskc+xml": { + source: "iana", + compressible: true, + extensions: ["pskcxml"] + }, + "application/pvd+json": { + source: "iana", + compressible: true + }, + "application/qsig": { + source: "iana" + }, + "application/raml+yaml": { + compressible: true, + extensions: ["raml"] + }, + "application/raptorfec": { + source: "iana" + }, + "application/rdap+json": { + source: "iana", + compressible: true + }, + "application/rdf+xml": { + source: "iana", + compressible: true, + extensions: ["rdf", "owl"] + }, + "application/reginfo+xml": { + source: "iana", + compressible: true, + extensions: ["rif"] + }, + "application/relax-ng-compact-syntax": { + source: "iana", + extensions: ["rnc"] + }, + "application/remote-printing": { + source: "apache" + }, + "application/reputon+json": { + source: "iana", + compressible: true + }, + "application/resolve-response+jwt": { + source: "iana" + }, + "application/resource-lists+xml": { + source: "iana", + compressible: true, + extensions: ["rl"] + }, + "application/resource-lists-diff+xml": { + source: "iana", + compressible: true, + extensions: ["rld"] + }, + "application/rfc+xml": { + source: "iana", + compressible: true + }, + "application/riscos": { + source: "iana" + }, + "application/rlmi+xml": { + source: "iana", + compressible: true + }, + "application/rls-services+xml": { + source: "iana", + compressible: true, + extensions: ["rs"] + }, + "application/route-apd+xml": { + source: "iana", + compressible: true, + extensions: ["rapd"] + }, + "application/route-s-tsid+xml": { + source: "iana", + compressible: true, + extensions: ["sls"] + }, + "application/route-usd+xml": { + source: "iana", + compressible: true, + extensions: ["rusd"] + }, + "application/rpki-checklist": { + source: "iana" + }, + "application/rpki-ghostbusters": { + source: "iana", + extensions: ["gbr"] + }, + "application/rpki-manifest": { + source: "iana", + extensions: ["mft"] + }, + "application/rpki-publication": { + source: "iana" + }, + "application/rpki-roa": { + source: "iana", + extensions: ["roa"] + }, + "application/rpki-signed-tal": { + source: "iana" + }, + "application/rpki-updown": { + source: "iana" + }, + "application/rsd+xml": { + source: "apache", + compressible: true, + extensions: ["rsd"] + }, + "application/rss+xml": { + source: "apache", + compressible: true, + extensions: ["rss"] + }, + "application/rtf": { + source: "iana", + compressible: true, + extensions: ["rtf"] + }, + "application/rtploopback": { + source: "iana" + }, + "application/rtx": { + source: "iana" + }, + "application/samlassertion+xml": { + source: "iana", + compressible: true + }, + "application/samlmetadata+xml": { + source: "iana", + compressible: true + }, + "application/sarif+json": { + source: "iana", + compressible: true + }, + "application/sarif-external-properties+json": { + source: "iana", + compressible: true + }, + "application/sbe": { + source: "iana" + }, + "application/sbml+xml": { + source: "iana", + compressible: true, + extensions: ["sbml"] + }, + "application/scaip+xml": { + source: "iana", + compressible: true + }, + "application/scim+json": { + source: "iana", + compressible: true + }, + "application/scvp-cv-request": { + source: "iana", + extensions: ["scq"] + }, + "application/scvp-cv-response": { + source: "iana", + extensions: ["scs"] + }, + "application/scvp-vp-request": { + source: "iana", + extensions: ["spq"] + }, + "application/scvp-vp-response": { + source: "iana", + extensions: ["spp"] + }, + "application/sdp": { + source: "iana", + extensions: ["sdp"] + }, + "application/secevent+jwt": { + source: "iana" + }, + "application/senml+cbor": { + source: "iana" + }, + "application/senml+json": { + source: "iana", + compressible: true + }, + "application/senml+xml": { + source: "iana", + compressible: true, + extensions: ["senmlx"] + }, + "application/senml-etch+cbor": { + source: "iana" + }, + "application/senml-etch+json": { + source: "iana", + compressible: true + }, + "application/senml-exi": { + source: "iana" + }, + "application/sensml+cbor": { + source: "iana" + }, + "application/sensml+json": { + source: "iana", + compressible: true + }, + "application/sensml+xml": { + source: "iana", + compressible: true, + extensions: ["sensmlx"] + }, + "application/sensml-exi": { + source: "iana" + }, + "application/sep+xml": { + source: "iana", + compressible: true + }, + "application/sep-exi": { + source: "iana" + }, + "application/session-info": { + source: "iana" + }, + "application/set-payment": { + source: "iana" + }, + "application/set-payment-initiation": { + source: "iana", + extensions: ["setpay"] + }, + "application/set-registration": { + source: "iana" + }, + "application/set-registration-initiation": { + source: "iana", + extensions: ["setreg"] + }, + "application/sgml": { + source: "iana" + }, + "application/sgml-open-catalog": { + source: "iana" + }, + "application/shf+xml": { + source: "iana", + compressible: true, + extensions: ["shf"] + }, + "application/sieve": { + source: "iana", + extensions: ["siv", "sieve"] + }, + "application/simple-filter+xml": { + source: "iana", + compressible: true + }, + "application/simple-message-summary": { + source: "iana" + }, + "application/simplesymbolcontainer": { + source: "iana" + }, + "application/sipc": { + source: "iana" + }, + "application/slate": { + source: "iana" + }, + "application/smil": { + source: "apache" + }, + "application/smil+xml": { + source: "iana", + compressible: true, + extensions: ["smi", "smil"] + }, + "application/smpte336m": { + source: "iana" + }, + "application/soap+fastinfoset": { + source: "iana" + }, + "application/soap+xml": { + source: "iana", + compressible: true + }, + "application/sparql-query": { + source: "iana", + extensions: ["rq"] + }, + "application/sparql-results+xml": { + source: "iana", + compressible: true, + extensions: ["srx"] + }, + "application/spdx+json": { + source: "iana", + compressible: true + }, + "application/spirits-event+xml": { + source: "iana", + compressible: true + }, + "application/sql": { + source: "iana", + extensions: ["sql"] + }, + "application/srgs": { + source: "iana", + extensions: ["gram"] + }, + "application/srgs+xml": { + source: "iana", + compressible: true, + extensions: ["grxml"] + }, + "application/sru+xml": { + source: "iana", + compressible: true, + extensions: ["sru"] + }, + "application/ssdl+xml": { + source: "apache", + compressible: true, + extensions: ["ssdl"] + }, + "application/sslkeylogfile": { + source: "iana" + }, + "application/ssml+xml": { + source: "iana", + compressible: true, + extensions: ["ssml"] + }, + "application/st2110-41": { + source: "iana" + }, + "application/stix+json": { + source: "iana", + compressible: true + }, + "application/stratum": { + source: "iana" + }, + "application/swid+cbor": { + source: "iana" + }, + "application/swid+xml": { + source: "iana", + compressible: true, + extensions: ["swidtag"] + }, + "application/tamp-apex-update": { + source: "iana" + }, + "application/tamp-apex-update-confirm": { + source: "iana" + }, + "application/tamp-community-update": { + source: "iana" + }, + "application/tamp-community-update-confirm": { + source: "iana" + }, + "application/tamp-error": { + source: "iana" + }, + "application/tamp-sequence-adjust": { + source: "iana" + }, + "application/tamp-sequence-adjust-confirm": { + source: "iana" + }, + "application/tamp-status-query": { + source: "iana" + }, + "application/tamp-status-response": { + source: "iana" + }, + "application/tamp-update": { + source: "iana" + }, + "application/tamp-update-confirm": { + source: "iana" + }, + "application/tar": { + compressible: true + }, + "application/taxii+json": { + source: "iana", + compressible: true + }, + "application/td+json": { + source: "iana", + compressible: true + }, + "application/tei+xml": { + source: "iana", + compressible: true, + extensions: ["tei", "teicorpus"] + }, + "application/tetra_isi": { + source: "iana" + }, + "application/thraud+xml": { + source: "iana", + compressible: true, + extensions: ["tfi"] + }, + "application/timestamp-query": { + source: "iana" + }, + "application/timestamp-reply": { + source: "iana" + }, + "application/timestamped-data": { + source: "iana", + extensions: ["tsd"] + }, + "application/tlsrpt+gzip": { + source: "iana" + }, + "application/tlsrpt+json": { + source: "iana", + compressible: true + }, + "application/tm+json": { + source: "iana", + compressible: true + }, + "application/tnauthlist": { + source: "iana" + }, + "application/toc+cbor": { + source: "iana" + }, + "application/token-introspection+jwt": { + source: "iana" + }, + "application/toml": { + source: "iana", + compressible: true, + extensions: ["toml"] + }, + "application/trickle-ice-sdpfrag": { + source: "iana" + }, + "application/trig": { + source: "iana", + extensions: ["trig"] + }, + "application/trust-chain+json": { + source: "iana", + compressible: true + }, + "application/trust-mark+jwt": { + source: "iana" + }, + "application/trust-mark-delegation+jwt": { + source: "iana" + }, + "application/ttml+xml": { + source: "iana", + compressible: true, + extensions: ["ttml"] + }, + "application/tve-trigger": { + source: "iana" + }, + "application/tzif": { + source: "iana" + }, + "application/tzif-leap": { + source: "iana" + }, + "application/ubjson": { + compressible: false, + extensions: ["ubj"] + }, + "application/uccs+cbor": { + source: "iana" + }, + "application/ujcs+json": { + source: "iana", + compressible: true + }, + "application/ulpfec": { + source: "iana" + }, + "application/urc-grpsheet+xml": { + source: "iana", + compressible: true + }, + "application/urc-ressheet+xml": { + source: "iana", + compressible: true, + extensions: ["rsheet"] + }, + "application/urc-targetdesc+xml": { + source: "iana", + compressible: true, + extensions: ["td"] + }, + "application/urc-uisocketdesc+xml": { + source: "iana", + compressible: true + }, + "application/vc": { + source: "iana" + }, + "application/vc+cose": { + source: "iana" + }, + "application/vc+jwt": { + source: "iana" + }, + "application/vcard+json": { + source: "iana", + compressible: true + }, + "application/vcard+xml": { + source: "iana", + compressible: true + }, + "application/vemmi": { + source: "iana" + }, + "application/vividence.scriptfile": { + source: "apache" + }, + "application/vnd.1000minds.decision-model+xml": { + source: "iana", + compressible: true, + extensions: ["1km"] + }, + "application/vnd.1ob": { + source: "iana" + }, + "application/vnd.3gpp-prose+xml": { + source: "iana", + compressible: true + }, + "application/vnd.3gpp-prose-pc3a+xml": { + source: "iana", + compressible: true + }, + "application/vnd.3gpp-prose-pc3ach+xml": { + source: "iana", + compressible: true + }, + "application/vnd.3gpp-prose-pc3ch+xml": { + source: "iana", + compressible: true + }, + "application/vnd.3gpp-prose-pc8+xml": { + source: "iana", + compressible: true + }, + "application/vnd.3gpp-v2x-local-service-information": { + source: "iana" + }, + "application/vnd.3gpp.5gnas": { + source: "iana" + }, + "application/vnd.3gpp.5gsa2x": { + source: "iana" + }, + "application/vnd.3gpp.5gsa2x-local-service-information": { + source: "iana" + }, + "application/vnd.3gpp.5gsv2x": { + source: "iana" + }, + "application/vnd.3gpp.5gsv2x-local-service-information": { + source: "iana" + }, + "application/vnd.3gpp.access-transfer-events+xml": { + source: "iana", + compressible: true + }, + "application/vnd.3gpp.bsf+xml": { + source: "iana", + compressible: true + }, + "application/vnd.3gpp.crs+xml": { + source: "iana", + compressible: true + }, + "application/vnd.3gpp.current-location-discovery+xml": { + source: "iana", + compressible: true + }, + "application/vnd.3gpp.gmop+xml": { + source: "iana", + compressible: true + }, + "application/vnd.3gpp.gtpc": { + source: "iana" + }, + "application/vnd.3gpp.interworking-data": { + source: "iana" + }, + "application/vnd.3gpp.lpp": { + source: "iana" + }, + "application/vnd.3gpp.mc-signalling-ear": { + source: "iana" + }, + "application/vnd.3gpp.mcdata-affiliation-command+xml": { + source: "iana", + compressible: true + }, + "application/vnd.3gpp.mcdata-info+xml": { + source: "iana", + compressible: true + }, + "application/vnd.3gpp.mcdata-msgstore-ctrl-request+xml": { + source: "iana", + compressible: true + }, + "application/vnd.3gpp.mcdata-payload": { + source: "iana" + }, + "application/vnd.3gpp.mcdata-regroup+xml": { + source: "iana", + compressible: true + }, + "application/vnd.3gpp.mcdata-service-config+xml": { + source: "iana", + compressible: true + }, + "application/vnd.3gpp.mcdata-signalling": { + source: "iana" + }, + "application/vnd.3gpp.mcdata-ue-config+xml": { + source: "iana", + compressible: true + }, + "application/vnd.3gpp.mcdata-user-profile+xml": { + source: "iana", + compressible: true + }, + "application/vnd.3gpp.mcptt-affiliation-command+xml": { + source: "iana", + compressible: true + }, + "application/vnd.3gpp.mcptt-floor-request+xml": { + source: "iana", + compressible: true + }, + "application/vnd.3gpp.mcptt-info+xml": { + source: "iana", + compressible: true + }, + "application/vnd.3gpp.mcptt-location-info+xml": { + source: "iana", + compressible: true + }, + "application/vnd.3gpp.mcptt-mbms-usage-info+xml": { + source: "iana", + compressible: true + }, + "application/vnd.3gpp.mcptt-regroup+xml": { + source: "iana", + compressible: true + }, + "application/vnd.3gpp.mcptt-service-config+xml": { + source: "iana", + compressible: true + }, + "application/vnd.3gpp.mcptt-signed+xml": { + source: "iana", + compressible: true + }, + "application/vnd.3gpp.mcptt-ue-config+xml": { + source: "iana", + compressible: true + }, + "application/vnd.3gpp.mcptt-ue-init-config+xml": { + source: "iana", + compressible: true + }, + "application/vnd.3gpp.mcptt-user-profile+xml": { + source: "iana", + compressible: true + }, + "application/vnd.3gpp.mcvideo-affiliation-command+xml": { + source: "iana", + compressible: true + }, + "application/vnd.3gpp.mcvideo-info+xml": { + source: "iana", + compressible: true + }, + "application/vnd.3gpp.mcvideo-location-info+xml": { + source: "iana", + compressible: true + }, + "application/vnd.3gpp.mcvideo-mbms-usage-info+xml": { + source: "iana", + compressible: true + }, + "application/vnd.3gpp.mcvideo-regroup+xml": { + source: "iana", + compressible: true + }, + "application/vnd.3gpp.mcvideo-service-config+xml": { + source: "iana", + compressible: true + }, + "application/vnd.3gpp.mcvideo-transmission-request+xml": { + source: "iana", + compressible: true + }, + "application/vnd.3gpp.mcvideo-ue-config+xml": { + source: "iana", + compressible: true + }, + "application/vnd.3gpp.mcvideo-user-profile+xml": { + source: "iana", + compressible: true + }, + "application/vnd.3gpp.mid-call+xml": { + source: "iana", + compressible: true + }, + "application/vnd.3gpp.ngap": { + source: "iana" + }, + "application/vnd.3gpp.pfcp": { + source: "iana" + }, + "application/vnd.3gpp.pic-bw-large": { + source: "iana", + extensions: ["plb"] + }, + "application/vnd.3gpp.pic-bw-small": { + source: "iana", + extensions: ["psb"] + }, + "application/vnd.3gpp.pic-bw-var": { + source: "iana", + extensions: ["pvb"] + }, + "application/vnd.3gpp.pinapp-info+xml": { + source: "iana", + compressible: true + }, + "application/vnd.3gpp.s1ap": { + source: "iana" + }, + "application/vnd.3gpp.seal-group-doc+xml": { + source: "iana", + compressible: true + }, + "application/vnd.3gpp.seal-info+xml": { + source: "iana", + compressible: true + }, + "application/vnd.3gpp.seal-location-info+xml": { + source: "iana", + compressible: true + }, + "application/vnd.3gpp.seal-mbms-usage-info+xml": { + source: "iana", + compressible: true + }, + "application/vnd.3gpp.seal-network-qos-management-info+xml": { + source: "iana", + compressible: true + }, + "application/vnd.3gpp.seal-ue-config-info+xml": { + source: "iana", + compressible: true + }, + "application/vnd.3gpp.seal-unicast-info+xml": { + source: "iana", + compressible: true + }, + "application/vnd.3gpp.seal-user-profile-info+xml": { + source: "iana", + compressible: true + }, + "application/vnd.3gpp.sms": { + source: "iana" + }, + "application/vnd.3gpp.sms+xml": { + source: "iana", + compressible: true + }, + "application/vnd.3gpp.srvcc-ext+xml": { + source: "iana", + compressible: true + }, + "application/vnd.3gpp.srvcc-info+xml": { + source: "iana", + compressible: true + }, + "application/vnd.3gpp.state-and-event-info+xml": { + source: "iana", + compressible: true + }, + "application/vnd.3gpp.ussd+xml": { + source: "iana", + compressible: true + }, + "application/vnd.3gpp.v2x": { + source: "iana" + }, + "application/vnd.3gpp.vae-info+xml": { + source: "iana", + compressible: true + }, + "application/vnd.3gpp2.bcmcsinfo+xml": { + source: "iana", + compressible: true + }, + "application/vnd.3gpp2.sms": { + source: "iana" + }, + "application/vnd.3gpp2.tcap": { + source: "iana", + extensions: ["tcap"] + }, + "application/vnd.3lightssoftware.imagescal": { + source: "iana" + }, + "application/vnd.3m.post-it-notes": { + source: "iana", + extensions: ["pwn"] + }, + "application/vnd.accpac.simply.aso": { + source: "iana", + extensions: ["aso"] + }, + "application/vnd.accpac.simply.imp": { + source: "iana", + extensions: ["imp"] + }, + "application/vnd.acm.addressxfer+json": { + source: "iana", + compressible: true + }, + "application/vnd.acm.chatbot+json": { + source: "iana", + compressible: true + }, + "application/vnd.acucobol": { + source: "iana", + extensions: ["acu"] + }, + "application/vnd.acucorp": { + source: "iana", + extensions: ["atc", "acutc"] + }, + "application/vnd.adobe.air-application-installer-package+zip": { + source: "apache", + compressible: false, + extensions: ["air"] + }, + "application/vnd.adobe.flash.movie": { + source: "iana" + }, + "application/vnd.adobe.formscentral.fcdt": { + source: "iana", + extensions: ["fcdt"] + }, + "application/vnd.adobe.fxp": { + source: "iana", + extensions: ["fxp", "fxpl"] + }, + "application/vnd.adobe.partial-upload": { + source: "iana" + }, + "application/vnd.adobe.xdp+xml": { + source: "iana", + compressible: true, + extensions: ["xdp"] + }, + "application/vnd.adobe.xfdf": { + source: "apache", + extensions: ["xfdf"] + }, + "application/vnd.aether.imp": { + source: "iana" + }, + "application/vnd.afpc.afplinedata": { + source: "iana" + }, + "application/vnd.afpc.afplinedata-pagedef": { + source: "iana" + }, + "application/vnd.afpc.cmoca-cmresource": { + source: "iana" + }, + "application/vnd.afpc.foca-charset": { + source: "iana" + }, + "application/vnd.afpc.foca-codedfont": { + source: "iana" + }, + "application/vnd.afpc.foca-codepage": { + source: "iana" + }, + "application/vnd.afpc.modca": { + source: "iana" + }, + "application/vnd.afpc.modca-cmtable": { + source: "iana" + }, + "application/vnd.afpc.modca-formdef": { + source: "iana" + }, + "application/vnd.afpc.modca-mediummap": { + source: "iana" + }, + "application/vnd.afpc.modca-objectcontainer": { + source: "iana" + }, + "application/vnd.afpc.modca-overlay": { + source: "iana" + }, + "application/vnd.afpc.modca-pagesegment": { + source: "iana" + }, + "application/vnd.age": { + source: "iana", + extensions: ["age"] + }, + "application/vnd.ah-barcode": { + source: "apache" + }, + "application/vnd.ahead.space": { + source: "iana", + extensions: ["ahead"] + }, + "application/vnd.airzip.filesecure.azf": { + source: "iana", + extensions: ["azf"] + }, + "application/vnd.airzip.filesecure.azs": { + source: "iana", + extensions: ["azs"] + }, + "application/vnd.amadeus+json": { + source: "iana", + compressible: true + }, + "application/vnd.amazon.ebook": { + source: "apache", + extensions: ["azw"] + }, + "application/vnd.amazon.mobi8-ebook": { + source: "iana" + }, + "application/vnd.americandynamics.acc": { + source: "iana", + extensions: ["acc"] + }, + "application/vnd.amiga.ami": { + source: "iana", + extensions: ["ami"] + }, + "application/vnd.amundsen.maze+xml": { + source: "iana", + compressible: true + }, + "application/vnd.android.ota": { + source: "iana" + }, + "application/vnd.android.package-archive": { + source: "apache", + compressible: false, + extensions: ["apk"] + }, + "application/vnd.anki": { + source: "iana" + }, + "application/vnd.anser-web-certificate-issue-initiation": { + source: "iana", + extensions: ["cii"] + }, + "application/vnd.anser-web-funds-transfer-initiation": { + source: "apache", + extensions: ["fti"] + }, + "application/vnd.antix.game-component": { + source: "iana", + extensions: ["atx"] + }, + "application/vnd.apache.arrow.file": { + source: "iana" + }, + "application/vnd.apache.arrow.stream": { + source: "iana" + }, + "application/vnd.apache.parquet": { + source: "iana" + }, + "application/vnd.apache.thrift.binary": { + source: "iana" + }, + "application/vnd.apache.thrift.compact": { + source: "iana" + }, + "application/vnd.apache.thrift.json": { + source: "iana" + }, + "application/vnd.apexlang": { + source: "iana" + }, + "application/vnd.api+json": { + source: "iana", + compressible: true + }, + "application/vnd.aplextor.warrp+json": { + source: "iana", + compressible: true + }, + "application/vnd.apothekende.reservation+json": { + source: "iana", + compressible: true + }, + "application/vnd.apple.installer+xml": { + source: "iana", + compressible: true, + extensions: ["mpkg"] + }, + "application/vnd.apple.keynote": { + source: "iana", + extensions: ["key"] + }, + "application/vnd.apple.mpegurl": { + source: "iana", + extensions: ["m3u8"] + }, + "application/vnd.apple.numbers": { + source: "iana", + extensions: ["numbers"] + }, + "application/vnd.apple.pages": { + source: "iana", + extensions: ["pages"] + }, + "application/vnd.apple.pkpass": { + compressible: false, + extensions: ["pkpass"] + }, + "application/vnd.arastra.swi": { + source: "apache" + }, + "application/vnd.aristanetworks.swi": { + source: "iana", + extensions: ["swi"] + }, + "application/vnd.artisan+json": { + source: "iana", + compressible: true + }, + "application/vnd.artsquare": { + source: "iana" + }, + "application/vnd.astraea-software.iota": { + source: "iana", + extensions: ["iota"] + }, + "application/vnd.audiograph": { + source: "iana", + extensions: ["aep"] + }, + "application/vnd.autodesk.fbx": { + extensions: ["fbx"] + }, + "application/vnd.autopackage": { + source: "iana" + }, + "application/vnd.avalon+json": { + source: "iana", + compressible: true + }, + "application/vnd.avistar+xml": { + source: "iana", + compressible: true + }, + "application/vnd.balsamiq.bmml+xml": { + source: "iana", + compressible: true, + extensions: ["bmml"] + }, + "application/vnd.balsamiq.bmpr": { + source: "iana" + }, + "application/vnd.banana-accounting": { + source: "iana" + }, + "application/vnd.bbf.usp.error": { + source: "iana" + }, + "application/vnd.bbf.usp.msg": { + source: "iana" + }, + "application/vnd.bbf.usp.msg+json": { + source: "iana", + compressible: true + }, + "application/vnd.bekitzur-stech+json": { + source: "iana", + compressible: true + }, + "application/vnd.belightsoft.lhzd+zip": { + source: "iana", + compressible: false + }, + "application/vnd.belightsoft.lhzl+zip": { + source: "iana", + compressible: false + }, + "application/vnd.bint.med-content": { + source: "iana" + }, + "application/vnd.biopax.rdf+xml": { + source: "iana", + compressible: true + }, + "application/vnd.blink-idb-value-wrapper": { + source: "iana" + }, + "application/vnd.blueice.multipass": { + source: "iana", + extensions: ["mpm"] + }, + "application/vnd.bluetooth.ep.oob": { + source: "iana" + }, + "application/vnd.bluetooth.le.oob": { + source: "iana" + }, + "application/vnd.bmi": { + source: "iana", + extensions: ["bmi"] + }, + "application/vnd.bpf": { + source: "iana" + }, + "application/vnd.bpf3": { + source: "iana" + }, + "application/vnd.businessobjects": { + source: "iana", + extensions: ["rep"] + }, + "application/vnd.byu.uapi+json": { + source: "iana", + compressible: true + }, + "application/vnd.bzip3": { + source: "iana" + }, + "application/vnd.c3voc.schedule+xml": { + source: "iana", + compressible: true + }, + "application/vnd.cab-jscript": { + source: "iana" + }, + "application/vnd.canon-cpdl": { + source: "iana" + }, + "application/vnd.canon-lips": { + source: "iana" + }, + "application/vnd.capasystems-pg+json": { + source: "iana", + compressible: true + }, + "application/vnd.cendio.thinlinc.clientconf": { + source: "iana" + }, + "application/vnd.century-systems.tcp_stream": { + source: "iana" + }, + "application/vnd.chemdraw+xml": { + source: "iana", + compressible: true, + extensions: ["cdxml"] + }, + "application/vnd.chess-pgn": { + source: "iana" + }, + "application/vnd.chipnuts.karaoke-mmd": { + source: "iana", + extensions: ["mmd"] + }, + "application/vnd.ciedi": { + source: "iana" + }, + "application/vnd.cinderella": { + source: "iana", + extensions: ["cdy"] + }, + "application/vnd.cirpack.isdn-ext": { + source: "iana" + }, + "application/vnd.citationstyles.style+xml": { + source: "iana", + compressible: true, + extensions: ["csl"] + }, + "application/vnd.claymore": { + source: "iana", + extensions: ["cla"] + }, + "application/vnd.cloanto.rp9": { + source: "iana", + extensions: ["rp9"] + }, + "application/vnd.clonk.c4group": { + source: "iana", + extensions: ["c4g", "c4d", "c4f", "c4p", "c4u"] + }, + "application/vnd.cluetrust.cartomobile-config": { + source: "iana", + extensions: ["c11amc"] + }, + "application/vnd.cluetrust.cartomobile-config-pkg": { + source: "iana", + extensions: ["c11amz"] + }, + "application/vnd.cncf.helm.chart.content.v1.tar+gzip": { + source: "iana" + }, + "application/vnd.cncf.helm.chart.provenance.v1.prov": { + source: "iana" + }, + "application/vnd.cncf.helm.config.v1+json": { + source: "iana", + compressible: true + }, + "application/vnd.coffeescript": { + source: "iana" + }, + "application/vnd.collabio.xodocuments.document": { + source: "iana" + }, + "application/vnd.collabio.xodocuments.document-template": { + source: "iana" + }, + "application/vnd.collabio.xodocuments.presentation": { + source: "iana" + }, + "application/vnd.collabio.xodocuments.presentation-template": { + source: "iana" + }, + "application/vnd.collabio.xodocuments.spreadsheet": { + source: "iana" + }, + "application/vnd.collabio.xodocuments.spreadsheet-template": { + source: "iana" + }, + "application/vnd.collection+json": { + source: "iana", + compressible: true + }, + "application/vnd.collection.doc+json": { + source: "iana", + compressible: true + }, + "application/vnd.collection.next+json": { + source: "iana", + compressible: true + }, + "application/vnd.comicbook+zip": { + source: "iana", + compressible: false + }, + "application/vnd.comicbook-rar": { + source: "iana" + }, + "application/vnd.commerce-battelle": { + source: "iana" + }, + "application/vnd.commonspace": { + source: "iana", + extensions: ["csp"] + }, + "application/vnd.contact.cmsg": { + source: "iana", + extensions: ["cdbcmsg"] + }, + "application/vnd.coreos.ignition+json": { + source: "iana", + compressible: true + }, + "application/vnd.cosmocaller": { + source: "iana", + extensions: ["cmc"] + }, + "application/vnd.crick.clicker": { + source: "iana", + extensions: ["clkx"] + }, + "application/vnd.crick.clicker.keyboard": { + source: "iana", + extensions: ["clkk"] + }, + "application/vnd.crick.clicker.palette": { + source: "iana", + extensions: ["clkp"] + }, + "application/vnd.crick.clicker.template": { + source: "iana", + extensions: ["clkt"] + }, + "application/vnd.crick.clicker.wordbank": { + source: "iana", + extensions: ["clkw"] + }, + "application/vnd.criticaltools.wbs+xml": { + source: "iana", + compressible: true, + extensions: ["wbs"] + }, + "application/vnd.cryptii.pipe+json": { + source: "iana", + compressible: true + }, + "application/vnd.crypto-shade-file": { + source: "iana" + }, + "application/vnd.cryptomator.encrypted": { + source: "iana" + }, + "application/vnd.cryptomator.vault": { + source: "iana" + }, + "application/vnd.ctc-posml": { + source: "iana", + extensions: ["pml"] + }, + "application/vnd.ctct.ws+xml": { + source: "iana", + compressible: true + }, + "application/vnd.cups-pdf": { + source: "iana" + }, + "application/vnd.cups-postscript": { + source: "iana" + }, + "application/vnd.cups-ppd": { + source: "iana", + extensions: ["ppd"] + }, + "application/vnd.cups-raster": { + source: "iana" + }, + "application/vnd.cups-raw": { + source: "iana" + }, + "application/vnd.curl": { + source: "iana" + }, + "application/vnd.curl.car": { + source: "apache", + extensions: ["car"] + }, + "application/vnd.curl.pcurl": { + source: "apache", + extensions: ["pcurl"] + }, + "application/vnd.cyan.dean.root+xml": { + source: "iana", + compressible: true + }, + "application/vnd.cybank": { + source: "iana" + }, + "application/vnd.cyclonedx+json": { + source: "iana", + compressible: true + }, + "application/vnd.cyclonedx+xml": { + source: "iana", + compressible: true + }, + "application/vnd.d2l.coursepackage1p0+zip": { + source: "iana", + compressible: false + }, + "application/vnd.d3m-dataset": { + source: "iana" + }, + "application/vnd.d3m-problem": { + source: "iana" + }, + "application/vnd.dart": { + source: "iana", + compressible: true, + extensions: ["dart"] + }, + "application/vnd.data-vision.rdz": { + source: "iana", + extensions: ["rdz"] + }, + "application/vnd.datalog": { + source: "iana" + }, + "application/vnd.datapackage+json": { + source: "iana", + compressible: true + }, + "application/vnd.dataresource+json": { + source: "iana", + compressible: true + }, + "application/vnd.dbf": { + source: "iana", + extensions: ["dbf"] + }, + "application/vnd.dcmp+xml": { + source: "iana", + compressible: true, + extensions: ["dcmp"] + }, + "application/vnd.debian.binary-package": { + source: "iana" + }, + "application/vnd.dece.data": { + source: "iana", + extensions: ["uvf", "uvvf", "uvd", "uvvd"] + }, + "application/vnd.dece.ttml+xml": { + source: "iana", + compressible: true, + extensions: ["uvt", "uvvt"] + }, + "application/vnd.dece.unspecified": { + source: "iana", + extensions: ["uvx", "uvvx"] + }, + "application/vnd.dece.zip": { + source: "iana", + extensions: ["uvz", "uvvz"] + }, + "application/vnd.denovo.fcselayout-link": { + source: "iana", + extensions: ["fe_launch"] + }, + "application/vnd.desmume.movie": { + source: "iana" + }, + "application/vnd.dir-bi.plate-dl-nosuffix": { + source: "iana" + }, + "application/vnd.dm.delegation+xml": { + source: "iana", + compressible: true + }, + "application/vnd.dna": { + source: "iana", + extensions: ["dna"] + }, + "application/vnd.document+json": { + source: "iana", + compressible: true + }, + "application/vnd.dolby.mlp": { + source: "apache", + extensions: ["mlp"] + }, + "application/vnd.dolby.mobile.1": { + source: "iana" + }, + "application/vnd.dolby.mobile.2": { + source: "iana" + }, + "application/vnd.doremir.scorecloud-binary-document": { + source: "iana" + }, + "application/vnd.dpgraph": { + source: "iana", + extensions: ["dpg"] + }, + "application/vnd.dreamfactory": { + source: "iana", + extensions: ["dfac"] + }, + "application/vnd.drive+json": { + source: "iana", + compressible: true + }, + "application/vnd.ds-keypoint": { + source: "apache", + extensions: ["kpxx"] + }, + "application/vnd.dtg.local": { + source: "iana" + }, + "application/vnd.dtg.local.flash": { + source: "iana" + }, + "application/vnd.dtg.local.html": { + source: "iana" + }, + "application/vnd.dvb.ait": { + source: "iana", + extensions: ["ait"] + }, + "application/vnd.dvb.dvbisl+xml": { + source: "iana", + compressible: true + }, + "application/vnd.dvb.dvbj": { + source: "iana" + }, + "application/vnd.dvb.esgcontainer": { + source: "iana" + }, + "application/vnd.dvb.ipdcdftnotifaccess": { + source: "iana" + }, + "application/vnd.dvb.ipdcesgaccess": { + source: "iana" + }, + "application/vnd.dvb.ipdcesgaccess2": { + source: "iana" + }, + "application/vnd.dvb.ipdcesgpdd": { + source: "iana" + }, + "application/vnd.dvb.ipdcroaming": { + source: "iana" + }, + "application/vnd.dvb.iptv.alfec-base": { + source: "iana" + }, + "application/vnd.dvb.iptv.alfec-enhancement": { + source: "iana" + }, + "application/vnd.dvb.notif-aggregate-root+xml": { + source: "iana", + compressible: true + }, + "application/vnd.dvb.notif-container+xml": { + source: "iana", + compressible: true + }, + "application/vnd.dvb.notif-generic+xml": { + source: "iana", + compressible: true + }, + "application/vnd.dvb.notif-ia-msglist+xml": { + source: "iana", + compressible: true + }, + "application/vnd.dvb.notif-ia-registration-request+xml": { + source: "iana", + compressible: true + }, + "application/vnd.dvb.notif-ia-registration-response+xml": { + source: "iana", + compressible: true + }, + "application/vnd.dvb.notif-init+xml": { + source: "iana", + compressible: true + }, + "application/vnd.dvb.pfr": { + source: "iana" + }, + "application/vnd.dvb.service": { + source: "iana", + extensions: ["svc"] + }, + "application/vnd.dxr": { + source: "iana" + }, + "application/vnd.dynageo": { + source: "iana", + extensions: ["geo"] + }, + "application/vnd.dzr": { + source: "iana" + }, + "application/vnd.easykaraoke.cdgdownload": { + source: "iana" + }, + "application/vnd.ecdis-update": { + source: "iana" + }, + "application/vnd.ecip.rlp": { + source: "iana" + }, + "application/vnd.eclipse.ditto+json": { + source: "iana", + compressible: true + }, + "application/vnd.ecowin.chart": { + source: "iana", + extensions: ["mag"] + }, + "application/vnd.ecowin.filerequest": { + source: "iana" + }, + "application/vnd.ecowin.fileupdate": { + source: "iana" + }, + "application/vnd.ecowin.series": { + source: "iana" + }, + "application/vnd.ecowin.seriesrequest": { + source: "iana" + }, + "application/vnd.ecowin.seriesupdate": { + source: "iana" + }, + "application/vnd.efi.img": { + source: "iana" + }, + "application/vnd.efi.iso": { + source: "iana" + }, + "application/vnd.eln+zip": { + source: "iana", + compressible: false + }, + "application/vnd.emclient.accessrequest+xml": { + source: "iana", + compressible: true + }, + "application/vnd.enliven": { + source: "iana", + extensions: ["nml"] + }, + "application/vnd.enphase.envoy": { + source: "iana" + }, + "application/vnd.eprints.data+xml": { + source: "iana", + compressible: true + }, + "application/vnd.epson.esf": { + source: "iana", + extensions: ["esf"] + }, + "application/vnd.epson.msf": { + source: "iana", + extensions: ["msf"] + }, + "application/vnd.epson.quickanime": { + source: "iana", + extensions: ["qam"] + }, + "application/vnd.epson.salt": { + source: "iana", + extensions: ["slt"] + }, + "application/vnd.epson.ssf": { + source: "iana", + extensions: ["ssf"] + }, + "application/vnd.ericsson.quickcall": { + source: "iana" + }, + "application/vnd.erofs": { + source: "iana" + }, + "application/vnd.espass-espass+zip": { + source: "iana", + compressible: false + }, + "application/vnd.eszigno3+xml": { + source: "iana", + compressible: true, + extensions: ["es3", "et3"] + }, + "application/vnd.etsi.aoc+xml": { + source: "iana", + compressible: true + }, + "application/vnd.etsi.asic-e+zip": { + source: "iana", + compressible: false + }, + "application/vnd.etsi.asic-s+zip": { + source: "iana", + compressible: false + }, + "application/vnd.etsi.cug+xml": { + source: "iana", + compressible: true + }, + "application/vnd.etsi.iptvcommand+xml": { + source: "iana", + compressible: true + }, + "application/vnd.etsi.iptvdiscovery+xml": { + source: "iana", + compressible: true + }, + "application/vnd.etsi.iptvprofile+xml": { + source: "iana", + compressible: true + }, + "application/vnd.etsi.iptvsad-bc+xml": { + source: "iana", + compressible: true + }, + "application/vnd.etsi.iptvsad-cod+xml": { + source: "iana", + compressible: true + }, + "application/vnd.etsi.iptvsad-npvr+xml": { + source: "iana", + compressible: true + }, + "application/vnd.etsi.iptvservice+xml": { + source: "iana", + compressible: true + }, + "application/vnd.etsi.iptvsync+xml": { + source: "iana", + compressible: true + }, + "application/vnd.etsi.iptvueprofile+xml": { + source: "iana", + compressible: true + }, + "application/vnd.etsi.mcid+xml": { + source: "iana", + compressible: true + }, + "application/vnd.etsi.mheg5": { + source: "iana" + }, + "application/vnd.etsi.overload-control-policy-dataset+xml": { + source: "iana", + compressible: true + }, + "application/vnd.etsi.pstn+xml": { + source: "iana", + compressible: true + }, + "application/vnd.etsi.sci+xml": { + source: "iana", + compressible: true + }, + "application/vnd.etsi.simservs+xml": { + source: "iana", + compressible: true + }, + "application/vnd.etsi.timestamp-token": { + source: "iana" + }, + "application/vnd.etsi.tsl+xml": { + source: "iana", + compressible: true + }, + "application/vnd.etsi.tsl.der": { + source: "iana" + }, + "application/vnd.eu.kasparian.car+json": { + source: "iana", + compressible: true + }, + "application/vnd.eudora.data": { + source: "iana" + }, + "application/vnd.evolv.ecig.profile": { + source: "iana" + }, + "application/vnd.evolv.ecig.settings": { + source: "iana" + }, + "application/vnd.evolv.ecig.theme": { + source: "iana" + }, + "application/vnd.exstream-empower+zip": { + source: "iana", + compressible: false + }, + "application/vnd.exstream-package": { + source: "iana" + }, + "application/vnd.ezpix-album": { + source: "iana", + extensions: ["ez2"] + }, + "application/vnd.ezpix-package": { + source: "iana", + extensions: ["ez3"] + }, + "application/vnd.f-secure.mobile": { + source: "iana" + }, + "application/vnd.familysearch.gedcom+zip": { + source: "iana", + compressible: false + }, + "application/vnd.fastcopy-disk-image": { + source: "iana" + }, + "application/vnd.fdf": { + source: "apache", + extensions: ["fdf"] + }, + "application/vnd.fdsn.mseed": { + source: "iana", + extensions: ["mseed"] + }, + "application/vnd.fdsn.seed": { + source: "iana", + extensions: ["seed", "dataless"] + }, + "application/vnd.fdsn.stationxml+xml": { + source: "iana", + charset: "XML-BASED", + compressible: true + }, + "application/vnd.ffsns": { + source: "iana" + }, + "application/vnd.ficlab.flb+zip": { + source: "iana", + compressible: false + }, + "application/vnd.filmit.zfc": { + source: "iana" + }, + "application/vnd.fints": { + source: "iana" + }, + "application/vnd.firemonkeys.cloudcell": { + source: "iana" + }, + "application/vnd.flographit": { + source: "iana", + extensions: ["gph"] + }, + "application/vnd.fluxtime.clip": { + source: "iana", + extensions: ["ftc"] + }, + "application/vnd.font-fontforge-sfd": { + source: "iana" + }, + "application/vnd.framemaker": { + source: "iana", + extensions: ["fm", "frame", "maker", "book"] + }, + "application/vnd.freelog.comic": { + source: "iana" + }, + "application/vnd.frogans.fnc": { + source: "apache", + extensions: ["fnc"] + }, + "application/vnd.frogans.ltf": { + source: "apache", + extensions: ["ltf"] + }, + "application/vnd.fsc.weblaunch": { + source: "iana", + extensions: ["fsc"] + }, + "application/vnd.fujifilm.fb.docuworks": { + source: "iana" + }, + "application/vnd.fujifilm.fb.docuworks.binder": { + source: "iana" + }, + "application/vnd.fujifilm.fb.docuworks.container": { + source: "iana" + }, + "application/vnd.fujifilm.fb.jfi+xml": { + source: "iana", + compressible: true + }, + "application/vnd.fujitsu.oasys": { + source: "iana", + extensions: ["oas"] + }, + "application/vnd.fujitsu.oasys2": { + source: "iana", + extensions: ["oa2"] + }, + "application/vnd.fujitsu.oasys3": { + source: "iana", + extensions: ["oa3"] + }, + "application/vnd.fujitsu.oasysgp": { + source: "iana", + extensions: ["fg5"] + }, + "application/vnd.fujitsu.oasysprs": { + source: "iana", + extensions: ["bh2"] + }, + "application/vnd.fujixerox.art-ex": { + source: "iana" + }, + "application/vnd.fujixerox.art4": { + source: "iana" + }, + "application/vnd.fujixerox.ddd": { + source: "iana", + extensions: ["ddd"] + }, + "application/vnd.fujixerox.docuworks": { + source: "iana", + extensions: ["xdw"] + }, + "application/vnd.fujixerox.docuworks.binder": { + source: "iana", + extensions: ["xbd"] + }, + "application/vnd.fujixerox.docuworks.container": { + source: "iana" + }, + "application/vnd.fujixerox.hbpl": { + source: "iana" + }, + "application/vnd.fut-misnet": { + source: "iana" + }, + "application/vnd.futoin+cbor": { + source: "iana" + }, + "application/vnd.futoin+json": { + source: "iana", + compressible: true + }, + "application/vnd.fuzzysheet": { + source: "iana", + extensions: ["fzs"] + }, + "application/vnd.ga4gh.passport+jwt": { + source: "iana" + }, + "application/vnd.genomatix.tuxedo": { + source: "iana", + extensions: ["txd"] + }, + "application/vnd.genozip": { + source: "iana" + }, + "application/vnd.gentics.grd+json": { + source: "iana", + compressible: true + }, + "application/vnd.gentoo.catmetadata+xml": { + source: "iana", + compressible: true + }, + "application/vnd.gentoo.ebuild": { + source: "iana" + }, + "application/vnd.gentoo.eclass": { + source: "iana" + }, + "application/vnd.gentoo.gpkg": { + source: "iana" + }, + "application/vnd.gentoo.manifest": { + source: "iana" + }, + "application/vnd.gentoo.pkgmetadata+xml": { + source: "iana", + compressible: true + }, + "application/vnd.gentoo.xpak": { + source: "iana" + }, + "application/vnd.geo+json": { + source: "apache", + compressible: true + }, + "application/vnd.geocube+xml": { + source: "apache", + compressible: true + }, + "application/vnd.geogebra.file": { + source: "iana", + extensions: ["ggb"] + }, + "application/vnd.geogebra.pinboard": { + source: "iana" + }, + "application/vnd.geogebra.slides": { + source: "iana", + extensions: ["ggs"] + }, + "application/vnd.geogebra.tool": { + source: "iana", + extensions: ["ggt"] + }, + "application/vnd.geometry-explorer": { + source: "iana", + extensions: ["gex", "gre"] + }, + "application/vnd.geonext": { + source: "iana", + extensions: ["gxt"] + }, + "application/vnd.geoplan": { + source: "iana", + extensions: ["g2w"] + }, + "application/vnd.geospace": { + source: "iana", + extensions: ["g3w"] + }, + "application/vnd.gerber": { + source: "iana" + }, + "application/vnd.globalplatform.card-content-mgt": { + source: "iana" + }, + "application/vnd.globalplatform.card-content-mgt-response": { + source: "iana" + }, + "application/vnd.gmx": { + source: "iana", + extensions: ["gmx"] + }, + "application/vnd.gnu.taler.exchange+json": { + source: "iana", + compressible: true + }, + "application/vnd.gnu.taler.merchant+json": { + source: "iana", + compressible: true + }, + "application/vnd.google-apps.audio": {}, + "application/vnd.google-apps.document": { + compressible: false, + extensions: ["gdoc"] + }, + "application/vnd.google-apps.drawing": { + compressible: false, + extensions: ["gdraw"] + }, + "application/vnd.google-apps.drive-sdk": { + compressible: false + }, + "application/vnd.google-apps.file": {}, + "application/vnd.google-apps.folder": { + compressible: false + }, + "application/vnd.google-apps.form": { + compressible: false, + extensions: ["gform"] + }, + "application/vnd.google-apps.fusiontable": {}, + "application/vnd.google-apps.jam": { + compressible: false, + extensions: ["gjam"] + }, + "application/vnd.google-apps.mail-layout": {}, + "application/vnd.google-apps.map": { + compressible: false, + extensions: ["gmap"] + }, + "application/vnd.google-apps.photo": {}, + "application/vnd.google-apps.presentation": { + compressible: false, + extensions: ["gslides"] + }, + "application/vnd.google-apps.script": { + compressible: false, + extensions: ["gscript"] + }, + "application/vnd.google-apps.shortcut": {}, + "application/vnd.google-apps.site": { + compressible: false, + extensions: ["gsite"] + }, + "application/vnd.google-apps.spreadsheet": { + compressible: false, + extensions: ["gsheet"] + }, + "application/vnd.google-apps.unknown": {}, + "application/vnd.google-apps.video": {}, + "application/vnd.google-earth.kml+xml": { + source: "iana", + compressible: true, + extensions: ["kml"] + }, + "application/vnd.google-earth.kmz": { + source: "iana", + compressible: false, + extensions: ["kmz"] + }, + "application/vnd.gov.sk.e-form+xml": { + source: "apache", + compressible: true + }, + "application/vnd.gov.sk.e-form+zip": { + source: "iana", + compressible: false + }, + "application/vnd.gov.sk.xmldatacontainer+xml": { + source: "iana", + compressible: true, + extensions: ["xdcf"] + }, + "application/vnd.gpxsee.map+xml": { + source: "iana", + compressible: true + }, + "application/vnd.grafeq": { + source: "iana", + extensions: ["gqf", "gqs"] + }, + "application/vnd.gridmp": { + source: "iana" + }, + "application/vnd.groove-account": { + source: "iana", + extensions: ["gac"] + }, + "application/vnd.groove-help": { + source: "iana", + extensions: ["ghf"] + }, + "application/vnd.groove-identity-message": { + source: "iana", + extensions: ["gim"] + }, + "application/vnd.groove-injector": { + source: "iana", + extensions: ["grv"] + }, + "application/vnd.groove-tool-message": { + source: "iana", + extensions: ["gtm"] + }, + "application/vnd.groove-tool-template": { + source: "iana", + extensions: ["tpl"] + }, + "application/vnd.groove-vcard": { + source: "iana", + extensions: ["vcg"] + }, + "application/vnd.hal+json": { + source: "iana", + compressible: true + }, + "application/vnd.hal+xml": { + source: "iana", + compressible: true, + extensions: ["hal"] + }, + "application/vnd.handheld-entertainment+xml": { + source: "iana", + compressible: true, + extensions: ["zmm"] + }, + "application/vnd.hbci": { + source: "iana", + extensions: ["hbci"] + }, + "application/vnd.hc+json": { + source: "iana", + compressible: true + }, + "application/vnd.hcl-bireports": { + source: "iana" + }, + "application/vnd.hdt": { + source: "iana" + }, + "application/vnd.heroku+json": { + source: "iana", + compressible: true + }, + "application/vnd.hhe.lesson-player": { + source: "iana", + extensions: ["les"] + }, + "application/vnd.hp-hpgl": { + source: "iana", + extensions: ["hpgl"] + }, + "application/vnd.hp-hpid": { + source: "iana", + extensions: ["hpid"] + }, + "application/vnd.hp-hps": { + source: "iana", + extensions: ["hps"] + }, + "application/vnd.hp-jlyt": { + source: "iana", + extensions: ["jlt"] + }, + "application/vnd.hp-pcl": { + source: "iana", + extensions: ["pcl"] + }, + "application/vnd.hp-pclxl": { + source: "iana", + extensions: ["pclxl"] + }, + "application/vnd.hsl": { + source: "iana" + }, + "application/vnd.httphone": { + source: "iana" + }, + "application/vnd.hydrostatix.sof-data": { + source: "iana", + extensions: ["sfd-hdstx"] + }, + "application/vnd.hyper+json": { + source: "iana", + compressible: true + }, + "application/vnd.hyper-item+json": { + source: "iana", + compressible: true + }, + "application/vnd.hyperdrive+json": { + source: "iana", + compressible: true + }, + "application/vnd.hzn-3d-crossword": { + source: "iana" + }, + "application/vnd.ibm.afplinedata": { + source: "apache" + }, + "application/vnd.ibm.electronic-media": { + source: "iana" + }, + "application/vnd.ibm.minipay": { + source: "iana", + extensions: ["mpy"] + }, + "application/vnd.ibm.modcap": { + source: "apache", + extensions: ["afp", "listafp", "list3820"] + }, + "application/vnd.ibm.rights-management": { + source: "iana", + extensions: ["irm"] + }, + "application/vnd.ibm.secure-container": { + source: "iana", + extensions: ["sc"] + }, + "application/vnd.iccprofile": { + source: "iana", + extensions: ["icc", "icm"] + }, + "application/vnd.ieee.1905": { + source: "iana" + }, + "application/vnd.igloader": { + source: "iana", + extensions: ["igl"] + }, + "application/vnd.imagemeter.folder+zip": { + source: "iana", + compressible: false + }, + "application/vnd.imagemeter.image+zip": { + source: "iana", + compressible: false + }, + "application/vnd.immervision-ivp": { + source: "iana", + extensions: ["ivp"] + }, + "application/vnd.immervision-ivu": { + source: "iana", + extensions: ["ivu"] + }, + "application/vnd.ims.imsccv1p1": { + source: "iana" + }, + "application/vnd.ims.imsccv1p2": { + source: "iana" + }, + "application/vnd.ims.imsccv1p3": { + source: "iana" + }, + "application/vnd.ims.lis.v2.result+json": { + source: "iana", + compressible: true + }, + "application/vnd.ims.lti.v2.toolconsumerprofile+json": { + source: "iana", + compressible: true + }, + "application/vnd.ims.lti.v2.toolproxy+json": { + source: "iana", + compressible: true + }, + "application/vnd.ims.lti.v2.toolproxy.id+json": { + source: "iana", + compressible: true + }, + "application/vnd.ims.lti.v2.toolsettings+json": { + source: "iana", + compressible: true + }, + "application/vnd.ims.lti.v2.toolsettings.simple+json": { + source: "iana", + compressible: true + }, + "application/vnd.informedcontrol.rms+xml": { + source: "iana", + compressible: true + }, + "application/vnd.informix-visionary": { + source: "apache" + }, + "application/vnd.infotech.project": { + source: "iana" + }, + "application/vnd.infotech.project+xml": { + source: "iana", + compressible: true + }, + "application/vnd.innopath.wamp.notification": { + source: "iana" + }, + "application/vnd.insors.igm": { + source: "iana", + extensions: ["igm"] + }, + "application/vnd.intercon.formnet": { + source: "iana", + extensions: ["xpw", "xpx"] + }, + "application/vnd.intergeo": { + source: "iana", + extensions: ["i2g"] + }, + "application/vnd.intertrust.digibox": { + source: "iana" + }, + "application/vnd.intertrust.nncp": { + source: "iana" + }, + "application/vnd.intu.qbo": { + source: "iana", + extensions: ["qbo"] + }, + "application/vnd.intu.qfx": { + source: "iana", + extensions: ["qfx"] + }, + "application/vnd.ipfs.ipns-record": { + source: "iana" + }, + "application/vnd.ipld.car": { + source: "iana" + }, + "application/vnd.ipld.dag-cbor": { + source: "iana" + }, + "application/vnd.ipld.dag-json": { + source: "iana" + }, + "application/vnd.ipld.raw": { + source: "iana" + }, + "application/vnd.iptc.g2.catalogitem+xml": { + source: "iana", + compressible: true + }, + "application/vnd.iptc.g2.conceptitem+xml": { + source: "iana", + compressible: true + }, + "application/vnd.iptc.g2.knowledgeitem+xml": { + source: "iana", + compressible: true + }, + "application/vnd.iptc.g2.newsitem+xml": { + source: "iana", + compressible: true + }, + "application/vnd.iptc.g2.newsmessage+xml": { + source: "iana", + compressible: true + }, + "application/vnd.iptc.g2.packageitem+xml": { + source: "iana", + compressible: true + }, + "application/vnd.iptc.g2.planningitem+xml": { + source: "iana", + compressible: true + }, + "application/vnd.ipunplugged.rcprofile": { + source: "iana", + extensions: ["rcprofile"] + }, + "application/vnd.irepository.package+xml": { + source: "iana", + compressible: true, + extensions: ["irp"] + }, + "application/vnd.is-xpr": { + source: "iana", + extensions: ["xpr"] + }, + "application/vnd.isac.fcs": { + source: "iana", + extensions: ["fcs"] + }, + "application/vnd.iso11783-10+zip": { + source: "iana", + compressible: false + }, + "application/vnd.jam": { + source: "iana", + extensions: ["jam"] + }, + "application/vnd.japannet-directory-service": { + source: "iana" + }, + "application/vnd.japannet-jpnstore-wakeup": { + source: "iana" + }, + "application/vnd.japannet-payment-wakeup": { + source: "iana" + }, + "application/vnd.japannet-registration": { + source: "iana" + }, + "application/vnd.japannet-registration-wakeup": { + source: "iana" + }, + "application/vnd.japannet-setstore-wakeup": { + source: "iana" + }, + "application/vnd.japannet-verification": { + source: "iana" + }, + "application/vnd.japannet-verification-wakeup": { + source: "iana" + }, + "application/vnd.jcp.javame.midlet-rms": { + source: "iana", + extensions: ["rms"] + }, + "application/vnd.jisp": { + source: "iana", + extensions: ["jisp"] + }, + "application/vnd.joost.joda-archive": { + source: "iana", + extensions: ["joda"] + }, + "application/vnd.jsk.isdn-ngn": { + source: "iana" + }, + "application/vnd.kahootz": { + source: "iana", + extensions: ["ktz", "ktr"] + }, + "application/vnd.kde.karbon": { + source: "iana", + extensions: ["karbon"] + }, + "application/vnd.kde.kchart": { + source: "iana", + extensions: ["chrt"] + }, + "application/vnd.kde.kformula": { + source: "iana", + extensions: ["kfo"] + }, + "application/vnd.kde.kivio": { + source: "iana", + extensions: ["flw"] + }, + "application/vnd.kde.kontour": { + source: "iana", + extensions: ["kon"] + }, + "application/vnd.kde.kpresenter": { + source: "iana", + extensions: ["kpr", "kpt"] + }, + "application/vnd.kde.kspread": { + source: "iana", + extensions: ["ksp"] + }, + "application/vnd.kde.kword": { + source: "iana", + extensions: ["kwd", "kwt"] + }, + "application/vnd.kdl": { + source: "iana" + }, + "application/vnd.kenameaapp": { + source: "iana", + extensions: ["htke"] + }, + "application/vnd.keyman.kmp+zip": { + source: "iana", + compressible: false + }, + "application/vnd.keyman.kmx": { + source: "iana" + }, + "application/vnd.kidspiration": { + source: "iana", + extensions: ["kia"] + }, + "application/vnd.kinar": { + source: "iana", + extensions: ["kne", "knp"] + }, + "application/vnd.koan": { + source: "iana", + extensions: ["skp", "skd", "skt", "skm"] + }, + "application/vnd.kodak-descriptor": { + source: "iana", + extensions: ["sse"] + }, + "application/vnd.las": { + source: "iana" + }, + "application/vnd.las.las+json": { + source: "iana", + compressible: true + }, + "application/vnd.las.las+xml": { + source: "iana", + compressible: true, + extensions: ["lasxml"] + }, + "application/vnd.laszip": { + source: "iana" + }, + "application/vnd.ldev.productlicensing": { + source: "iana" + }, + "application/vnd.leap+json": { + source: "iana", + compressible: true + }, + "application/vnd.liberty-request+xml": { + source: "iana", + compressible: true + }, + "application/vnd.llamagraphics.life-balance.desktop": { + source: "iana", + extensions: ["lbd"] + }, + "application/vnd.llamagraphics.life-balance.exchange+xml": { + source: "iana", + compressible: true, + extensions: ["lbe"] + }, + "application/vnd.logipipe.circuit+zip": { + source: "iana", + compressible: false + }, + "application/vnd.loom": { + source: "iana" + }, + "application/vnd.lotus-1-2-3": { + source: "iana", + extensions: ["123"] + }, + "application/vnd.lotus-approach": { + source: "iana", + extensions: ["apr"] + }, + "application/vnd.lotus-freelance": { + source: "iana", + extensions: ["pre"] + }, + "application/vnd.lotus-notes": { + source: "iana", + extensions: ["nsf"] + }, + "application/vnd.lotus-organizer": { + source: "iana", + extensions: ["org"] + }, + "application/vnd.lotus-screencam": { + source: "iana", + extensions: ["scm"] + }, + "application/vnd.lotus-wordpro": { + source: "iana", + extensions: ["lwp"] + }, + "application/vnd.macports.portpkg": { + source: "iana", + extensions: ["portpkg"] + }, + "application/vnd.mapbox-vector-tile": { + source: "iana", + extensions: ["mvt"] + }, + "application/vnd.marlin.drm.actiontoken+xml": { + source: "iana", + compressible: true + }, + "application/vnd.marlin.drm.conftoken+xml": { + source: "iana", + compressible: true + }, + "application/vnd.marlin.drm.license+xml": { + source: "iana", + compressible: true + }, + "application/vnd.marlin.drm.mdcf": { + source: "iana" + }, + "application/vnd.mason+json": { + source: "iana", + compressible: true + }, + "application/vnd.maxar.archive.3tz+zip": { + source: "iana", + compressible: false + }, + "application/vnd.maxmind.maxmind-db": { + source: "iana" + }, + "application/vnd.mcd": { + source: "iana", + extensions: ["mcd"] + }, + "application/vnd.mdl": { + source: "iana" + }, + "application/vnd.mdl-mbsdf": { + source: "iana" + }, + "application/vnd.medcalcdata": { + source: "iana", + extensions: ["mc1"] + }, + "application/vnd.mediastation.cdkey": { + source: "iana", + extensions: ["cdkey"] + }, + "application/vnd.medicalholodeck.recordxr": { + source: "iana" + }, + "application/vnd.meridian-slingshot": { + source: "iana" + }, + "application/vnd.mermaid": { + source: "iana" + }, + "application/vnd.mfer": { + source: "iana", + extensions: ["mwf"] + }, + "application/vnd.mfmp": { + source: "iana", + extensions: ["mfm"] + }, + "application/vnd.micro+json": { + source: "iana", + compressible: true + }, + "application/vnd.micrografx.flo": { + source: "iana", + extensions: ["flo"] + }, + "application/vnd.micrografx.igx": { + source: "iana", + extensions: ["igx"] + }, + "application/vnd.microsoft.portable-executable": { + source: "iana" + }, + "application/vnd.microsoft.windows.thumbnail-cache": { + source: "iana" + }, + "application/vnd.miele+json": { + source: "iana", + compressible: true + }, + "application/vnd.mif": { + source: "iana", + extensions: ["mif"] + }, + "application/vnd.minisoft-hp3000-save": { + source: "iana" + }, + "application/vnd.mitsubishi.misty-guard.trustweb": { + source: "iana" + }, + "application/vnd.mobius.daf": { + source: "iana", + extensions: ["daf"] + }, + "application/vnd.mobius.dis": { + source: "iana", + extensions: ["dis"] + }, + "application/vnd.mobius.mbk": { + source: "iana", + extensions: ["mbk"] + }, + "application/vnd.mobius.mqy": { + source: "iana", + extensions: ["mqy"] + }, + "application/vnd.mobius.msl": { + source: "iana", + extensions: ["msl"] + }, + "application/vnd.mobius.plc": { + source: "iana", + extensions: ["plc"] + }, + "application/vnd.mobius.txf": { + source: "iana", + extensions: ["txf"] + }, + "application/vnd.modl": { + source: "iana" + }, + "application/vnd.mophun.application": { + source: "iana", + extensions: ["mpn"] + }, + "application/vnd.mophun.certificate": { + source: "iana", + extensions: ["mpc"] + }, + "application/vnd.motorola.flexsuite": { + source: "iana" + }, + "application/vnd.motorola.flexsuite.adsi": { + source: "iana" + }, + "application/vnd.motorola.flexsuite.fis": { + source: "iana" + }, + "application/vnd.motorola.flexsuite.gotap": { + source: "iana" + }, + "application/vnd.motorola.flexsuite.kmr": { + source: "iana" + }, + "application/vnd.motorola.flexsuite.ttc": { + source: "iana" + }, + "application/vnd.motorola.flexsuite.wem": { + source: "iana" + }, + "application/vnd.motorola.iprm": { + source: "iana" + }, + "application/vnd.mozilla.xul+xml": { + source: "iana", + compressible: true, + extensions: ["xul"] + }, + "application/vnd.ms-3mfdocument": { + source: "iana" + }, + "application/vnd.ms-artgalry": { + source: "iana", + extensions: ["cil"] + }, + "application/vnd.ms-asf": { + source: "iana" + }, + "application/vnd.ms-cab-compressed": { + source: "iana", + extensions: ["cab"] + }, + "application/vnd.ms-color.iccprofile": { + source: "apache" + }, + "application/vnd.ms-excel": { + source: "iana", + compressible: false, + extensions: ["xls", "xlm", "xla", "xlc", "xlt", "xlw"] + }, + "application/vnd.ms-excel.addin.macroenabled.12": { + source: "iana", + extensions: ["xlam"] + }, + "application/vnd.ms-excel.sheet.binary.macroenabled.12": { + source: "iana", + extensions: ["xlsb"] + }, + "application/vnd.ms-excel.sheet.macroenabled.12": { + source: "iana", + extensions: ["xlsm"] + }, + "application/vnd.ms-excel.template.macroenabled.12": { + source: "iana", + extensions: ["xltm"] + }, + "application/vnd.ms-fontobject": { + source: "iana", + compressible: true, + extensions: ["eot"] + }, + "application/vnd.ms-htmlhelp": { + source: "iana", + extensions: ["chm"] + }, + "application/vnd.ms-ims": { + source: "iana", + extensions: ["ims"] + }, + "application/vnd.ms-lrm": { + source: "iana", + extensions: ["lrm"] + }, + "application/vnd.ms-office.activex+xml": { + source: "iana", + compressible: true + }, + "application/vnd.ms-officetheme": { + source: "iana", + extensions: ["thmx"] + }, + "application/vnd.ms-opentype": { + source: "apache", + compressible: true + }, + "application/vnd.ms-outlook": { + compressible: false, + extensions: ["msg"] + }, + "application/vnd.ms-package.obfuscated-opentype": { + source: "apache" + }, + "application/vnd.ms-pki.seccat": { + source: "apache", + extensions: ["cat"] + }, + "application/vnd.ms-pki.stl": { + source: "apache", + extensions: ["stl"] + }, + "application/vnd.ms-playready.initiator+xml": { + source: "iana", + compressible: true + }, + "application/vnd.ms-powerpoint": { + source: "iana", + compressible: false, + extensions: ["ppt", "pps", "pot"] + }, + "application/vnd.ms-powerpoint.addin.macroenabled.12": { + source: "iana", + extensions: ["ppam"] + }, + "application/vnd.ms-powerpoint.presentation.macroenabled.12": { + source: "iana", + extensions: ["pptm"] + }, + "application/vnd.ms-powerpoint.slide.macroenabled.12": { + source: "iana", + extensions: ["sldm"] + }, + "application/vnd.ms-powerpoint.slideshow.macroenabled.12": { + source: "iana", + extensions: ["ppsm"] + }, + "application/vnd.ms-powerpoint.template.macroenabled.12": { + source: "iana", + extensions: ["potm"] + }, + "application/vnd.ms-printdevicecapabilities+xml": { + source: "iana", + compressible: true + }, + "application/vnd.ms-printing.printticket+xml": { + source: "apache", + compressible: true + }, + "application/vnd.ms-printschematicket+xml": { + source: "iana", + compressible: true + }, + "application/vnd.ms-project": { + source: "iana", + extensions: ["mpp", "mpt"] + }, + "application/vnd.ms-tnef": { + source: "iana" + }, + "application/vnd.ms-visio.viewer": { + extensions: ["vdx"] + }, + "application/vnd.ms-windows.devicepairing": { + source: "iana" + }, + "application/vnd.ms-windows.nwprinting.oob": { + source: "iana" + }, + "application/vnd.ms-windows.printerpairing": { + source: "iana" + }, + "application/vnd.ms-windows.wsd.oob": { + source: "iana" + }, + "application/vnd.ms-wmdrm.lic-chlg-req": { + source: "iana" + }, + "application/vnd.ms-wmdrm.lic-resp": { + source: "iana" + }, + "application/vnd.ms-wmdrm.meter-chlg-req": { + source: "iana" + }, + "application/vnd.ms-wmdrm.meter-resp": { + source: "iana" + }, + "application/vnd.ms-word.document.macroenabled.12": { + source: "iana", + extensions: ["docm"] + }, + "application/vnd.ms-word.template.macroenabled.12": { + source: "iana", + extensions: ["dotm"] + }, + "application/vnd.ms-works": { + source: "iana", + extensions: ["wps", "wks", "wcm", "wdb"] + }, + "application/vnd.ms-wpl": { + source: "iana", + extensions: ["wpl"] + }, + "application/vnd.ms-xpsdocument": { + source: "iana", + compressible: false, + extensions: ["xps"] + }, + "application/vnd.msa-disk-image": { + source: "iana" + }, + "application/vnd.mseq": { + source: "iana", + extensions: ["mseq"] + }, + "application/vnd.msgpack": { + source: "iana" + }, + "application/vnd.msign": { + source: "iana" + }, + "application/vnd.multiad.creator": { + source: "iana" + }, + "application/vnd.multiad.creator.cif": { + source: "iana" + }, + "application/vnd.music-niff": { + source: "iana" + }, + "application/vnd.musician": { + source: "iana", + extensions: ["mus"] + }, + "application/vnd.muvee.style": { + source: "iana", + extensions: ["msty"] + }, + "application/vnd.mynfc": { + source: "iana", + extensions: ["taglet"] + }, + "application/vnd.nacamar.ybrid+json": { + source: "iana", + compressible: true + }, + "application/vnd.nato.bindingdataobject+cbor": { + source: "iana" + }, + "application/vnd.nato.bindingdataobject+json": { + source: "iana", + compressible: true + }, + "application/vnd.nato.bindingdataobject+xml": { + source: "iana", + compressible: true, + extensions: ["bdo"] + }, + "application/vnd.nato.openxmlformats-package.iepd+zip": { + source: "iana", + compressible: false + }, + "application/vnd.ncd.control": { + source: "iana" + }, + "application/vnd.ncd.reference": { + source: "iana" + }, + "application/vnd.nearst.inv+json": { + source: "iana", + compressible: true + }, + "application/vnd.nebumind.line": { + source: "iana" + }, + "application/vnd.nervana": { + source: "iana" + }, + "application/vnd.netfpx": { + source: "iana" + }, + "application/vnd.neurolanguage.nlu": { + source: "iana", + extensions: ["nlu"] + }, + "application/vnd.nimn": { + source: "iana" + }, + "application/vnd.nintendo.nitro.rom": { + source: "iana" + }, + "application/vnd.nintendo.snes.rom": { + source: "iana" + }, + "application/vnd.nitf": { + source: "iana", + extensions: ["ntf", "nitf"] + }, + "application/vnd.noblenet-directory": { + source: "iana", + extensions: ["nnd"] + }, + "application/vnd.noblenet-sealer": { + source: "iana", + extensions: ["nns"] + }, + "application/vnd.noblenet-web": { + source: "iana", + extensions: ["nnw"] + }, + "application/vnd.nokia.catalogs": { + source: "iana" + }, + "application/vnd.nokia.conml+wbxml": { + source: "iana" + }, + "application/vnd.nokia.conml+xml": { + source: "iana", + compressible: true + }, + "application/vnd.nokia.iptv.config+xml": { + source: "iana", + compressible: true + }, + "application/vnd.nokia.isds-radio-presets": { + source: "iana" + }, + "application/vnd.nokia.landmark+wbxml": { + source: "iana" + }, + "application/vnd.nokia.landmark+xml": { + source: "iana", + compressible: true + }, + "application/vnd.nokia.landmarkcollection+xml": { + source: "iana", + compressible: true + }, + "application/vnd.nokia.n-gage.ac+xml": { + source: "iana", + compressible: true, + extensions: ["ac"] + }, + "application/vnd.nokia.n-gage.data": { + source: "iana", + extensions: ["ngdat"] + }, + "application/vnd.nokia.n-gage.symbian.install": { + source: "apache", + extensions: ["n-gage"] + }, + "application/vnd.nokia.ncd": { + source: "iana" + }, + "application/vnd.nokia.pcd+wbxml": { + source: "iana" + }, + "application/vnd.nokia.pcd+xml": { + source: "iana", + compressible: true + }, + "application/vnd.nokia.radio-preset": { + source: "iana", + extensions: ["rpst"] + }, + "application/vnd.nokia.radio-presets": { + source: "iana", + extensions: ["rpss"] + }, + "application/vnd.novadigm.edm": { + source: "iana", + extensions: ["edm"] + }, + "application/vnd.novadigm.edx": { + source: "iana", + extensions: ["edx"] + }, + "application/vnd.novadigm.ext": { + source: "iana", + extensions: ["ext"] + }, + "application/vnd.ntt-local.content-share": { + source: "iana" + }, + "application/vnd.ntt-local.file-transfer": { + source: "iana" + }, + "application/vnd.ntt-local.ogw_remote-access": { + source: "iana" + }, + "application/vnd.ntt-local.sip-ta_remote": { + source: "iana" + }, + "application/vnd.ntt-local.sip-ta_tcp_stream": { + source: "iana" + }, + "application/vnd.oai.workflows": { + source: "iana" + }, + "application/vnd.oai.workflows+json": { + source: "iana", + compressible: true + }, + "application/vnd.oai.workflows+yaml": { + source: "iana" + }, + "application/vnd.oasis.opendocument.base": { + source: "iana" + }, + "application/vnd.oasis.opendocument.chart": { + source: "iana", + extensions: ["odc"] + }, + "application/vnd.oasis.opendocument.chart-template": { + source: "iana", + extensions: ["otc"] + }, + "application/vnd.oasis.opendocument.database": { + source: "apache", + extensions: ["odb"] + }, + "application/vnd.oasis.opendocument.formula": { + source: "iana", + extensions: ["odf"] + }, + "application/vnd.oasis.opendocument.formula-template": { + source: "iana", + extensions: ["odft"] + }, + "application/vnd.oasis.opendocument.graphics": { + source: "iana", + compressible: false, + extensions: ["odg"] + }, + "application/vnd.oasis.opendocument.graphics-template": { + source: "iana", + extensions: ["otg"] + }, + "application/vnd.oasis.opendocument.image": { + source: "iana", + extensions: ["odi"] + }, + "application/vnd.oasis.opendocument.image-template": { + source: "iana", + extensions: ["oti"] + }, + "application/vnd.oasis.opendocument.presentation": { + source: "iana", + compressible: false, + extensions: ["odp"] + }, + "application/vnd.oasis.opendocument.presentation-template": { + source: "iana", + extensions: ["otp"] + }, + "application/vnd.oasis.opendocument.spreadsheet": { + source: "iana", + compressible: false, + extensions: ["ods"] + }, + "application/vnd.oasis.opendocument.spreadsheet-template": { + source: "iana", + extensions: ["ots"] + }, + "application/vnd.oasis.opendocument.text": { + source: "iana", + compressible: false, + extensions: ["odt"] + }, + "application/vnd.oasis.opendocument.text-master": { + source: "iana", + extensions: ["odm"] + }, + "application/vnd.oasis.opendocument.text-master-template": { + source: "iana" + }, + "application/vnd.oasis.opendocument.text-template": { + source: "iana", + extensions: ["ott"] + }, + "application/vnd.oasis.opendocument.text-web": { + source: "iana", + extensions: ["oth"] + }, + "application/vnd.obn": { + source: "iana" + }, + "application/vnd.ocf+cbor": { + source: "iana" + }, + "application/vnd.oci.image.manifest.v1+json": { + source: "iana", + compressible: true + }, + "application/vnd.oftn.l10n+json": { + source: "iana", + compressible: true + }, + "application/vnd.oipf.contentaccessdownload+xml": { + source: "iana", + compressible: true + }, + "application/vnd.oipf.contentaccessstreaming+xml": { + source: "iana", + compressible: true + }, + "application/vnd.oipf.cspg-hexbinary": { + source: "iana" + }, + "application/vnd.oipf.dae.svg+xml": { + source: "iana", + compressible: true + }, + "application/vnd.oipf.dae.xhtml+xml": { + source: "iana", + compressible: true + }, + "application/vnd.oipf.mippvcontrolmessage+xml": { + source: "iana", + compressible: true + }, + "application/vnd.oipf.pae.gem": { + source: "iana" + }, + "application/vnd.oipf.spdiscovery+xml": { + source: "iana", + compressible: true + }, + "application/vnd.oipf.spdlist+xml": { + source: "iana", + compressible: true + }, + "application/vnd.oipf.ueprofile+xml": { + source: "iana", + compressible: true + }, + "application/vnd.oipf.userprofile+xml": { + source: "iana", + compressible: true + }, + "application/vnd.olpc-sugar": { + source: "iana", + extensions: ["xo"] + }, + "application/vnd.oma-scws-config": { + source: "iana" + }, + "application/vnd.oma-scws-http-request": { + source: "iana" + }, + "application/vnd.oma-scws-http-response": { + source: "iana" + }, + "application/vnd.oma.bcast.associated-procedure-parameter+xml": { + source: "iana", + compressible: true + }, + "application/vnd.oma.bcast.drm-trigger+xml": { + source: "apache", + compressible: true + }, + "application/vnd.oma.bcast.imd+xml": { + source: "iana", + compressible: true + }, + "application/vnd.oma.bcast.ltkm": { + source: "iana" + }, + "application/vnd.oma.bcast.notification+xml": { + source: "iana", + compressible: true + }, + "application/vnd.oma.bcast.provisioningtrigger": { + source: "iana" + }, + "application/vnd.oma.bcast.sgboot": { + source: "iana" + }, + "application/vnd.oma.bcast.sgdd+xml": { + source: "iana", + compressible: true + }, + "application/vnd.oma.bcast.sgdu": { + source: "iana" + }, + "application/vnd.oma.bcast.simple-symbol-container": { + source: "iana" + }, + "application/vnd.oma.bcast.smartcard-trigger+xml": { + source: "apache", + compressible: true + }, + "application/vnd.oma.bcast.sprov+xml": { + source: "iana", + compressible: true + }, + "application/vnd.oma.bcast.stkm": { + source: "iana" + }, + "application/vnd.oma.cab-address-book+xml": { + source: "iana", + compressible: true + }, + "application/vnd.oma.cab-feature-handler+xml": { + source: "iana", + compressible: true + }, + "application/vnd.oma.cab-pcc+xml": { + source: "iana", + compressible: true + }, + "application/vnd.oma.cab-subs-invite+xml": { + source: "iana", + compressible: true + }, + "application/vnd.oma.cab-user-prefs+xml": { + source: "iana", + compressible: true + }, + "application/vnd.oma.dcd": { + source: "iana" + }, + "application/vnd.oma.dcdc": { + source: "iana" + }, + "application/vnd.oma.dd2+xml": { + source: "iana", + compressible: true, + extensions: ["dd2"] + }, + "application/vnd.oma.drm.risd+xml": { + source: "iana", + compressible: true + }, + "application/vnd.oma.group-usage-list+xml": { + source: "iana", + compressible: true + }, + "application/vnd.oma.lwm2m+cbor": { + source: "iana" + }, + "application/vnd.oma.lwm2m+json": { + source: "iana", + compressible: true + }, + "application/vnd.oma.lwm2m+tlv": { + source: "iana" + }, + "application/vnd.oma.pal+xml": { + source: "iana", + compressible: true + }, + "application/vnd.oma.poc.detailed-progress-report+xml": { + source: "iana", + compressible: true + }, + "application/vnd.oma.poc.final-report+xml": { + source: "iana", + compressible: true + }, + "application/vnd.oma.poc.groups+xml": { + source: "iana", + compressible: true + }, + "application/vnd.oma.poc.invocation-descriptor+xml": { + source: "iana", + compressible: true + }, + "application/vnd.oma.poc.optimized-progress-report+xml": { + source: "iana", + compressible: true + }, + "application/vnd.oma.push": { + source: "iana" + }, + "application/vnd.oma.scidm.messages+xml": { + source: "iana", + compressible: true + }, + "application/vnd.oma.xcap-directory+xml": { + source: "iana", + compressible: true + }, + "application/vnd.omads-email+xml": { + source: "iana", + charset: "UTF-8", + compressible: true + }, + "application/vnd.omads-file+xml": { + source: "iana", + charset: "UTF-8", + compressible: true + }, + "application/vnd.omads-folder+xml": { + source: "iana", + charset: "UTF-8", + compressible: true + }, + "application/vnd.omaloc-supl-init": { + source: "iana" + }, + "application/vnd.onepager": { + source: "iana" + }, + "application/vnd.onepagertamp": { + source: "iana" + }, + "application/vnd.onepagertamx": { + source: "iana" + }, + "application/vnd.onepagertat": { + source: "iana" + }, + "application/vnd.onepagertatp": { + source: "iana" + }, + "application/vnd.onepagertatx": { + source: "iana" + }, + "application/vnd.onvif.metadata": { + source: "iana" + }, + "application/vnd.openblox.game+xml": { + source: "iana", + compressible: true, + extensions: ["obgx"] + }, + "application/vnd.openblox.game-binary": { + source: "iana" + }, + "application/vnd.openeye.oeb": { + source: "iana" + }, + "application/vnd.openofficeorg.extension": { + source: "apache", + extensions: ["oxt"] + }, + "application/vnd.openstreetmap.data+xml": { + source: "iana", + compressible: true, + extensions: ["osm"] + }, + "application/vnd.opentimestamps.ots": { + source: "iana" + }, + "application/vnd.openvpi.dspx+json": { + source: "iana", + compressible: true + }, + "application/vnd.openxmlformats-officedocument.custom-properties+xml": { + source: "iana", + compressible: true + }, + "application/vnd.openxmlformats-officedocument.customxmlproperties+xml": { + source: "iana", + compressible: true + }, + "application/vnd.openxmlformats-officedocument.drawing+xml": { + source: "iana", + compressible: true + }, + "application/vnd.openxmlformats-officedocument.drawingml.chart+xml": { + source: "iana", + compressible: true + }, + "application/vnd.openxmlformats-officedocument.drawingml.chartshapes+xml": { + source: "iana", + compressible: true + }, + "application/vnd.openxmlformats-officedocument.drawingml.diagramcolors+xml": { + source: "iana", + compressible: true + }, + "application/vnd.openxmlformats-officedocument.drawingml.diagramdata+xml": { + source: "iana", + compressible: true + }, + "application/vnd.openxmlformats-officedocument.drawingml.diagramlayout+xml": { + source: "iana", + compressible: true + }, + "application/vnd.openxmlformats-officedocument.drawingml.diagramstyle+xml": { + source: "iana", + compressible: true + }, + "application/vnd.openxmlformats-officedocument.extended-properties+xml": { + source: "iana", + compressible: true + }, + "application/vnd.openxmlformats-officedocument.presentationml.commentauthors+xml": { + source: "iana", + compressible: true + }, + "application/vnd.openxmlformats-officedocument.presentationml.comments+xml": { + source: "iana", + compressible: true + }, + "application/vnd.openxmlformats-officedocument.presentationml.handoutmaster+xml": { + source: "iana", + compressible: true + }, + "application/vnd.openxmlformats-officedocument.presentationml.notesmaster+xml": { + source: "iana", + compressible: true + }, + "application/vnd.openxmlformats-officedocument.presentationml.notesslide+xml": { + source: "iana", + compressible: true + }, + "application/vnd.openxmlformats-officedocument.presentationml.presentation": { + source: "iana", + compressible: false, + extensions: ["pptx"] + }, + "application/vnd.openxmlformats-officedocument.presentationml.presentation.main+xml": { + source: "iana", + compressible: true + }, + "application/vnd.openxmlformats-officedocument.presentationml.presprops+xml": { + source: "iana", + compressible: true + }, + "application/vnd.openxmlformats-officedocument.presentationml.slide": { + source: "iana", + extensions: ["sldx"] + }, + "application/vnd.openxmlformats-officedocument.presentationml.slide+xml": { + source: "iana", + compressible: true + }, + "application/vnd.openxmlformats-officedocument.presentationml.slidelayout+xml": { + source: "iana", + compressible: true + }, + "application/vnd.openxmlformats-officedocument.presentationml.slidemaster+xml": { + source: "iana", + compressible: true + }, + "application/vnd.openxmlformats-officedocument.presentationml.slideshow": { + source: "iana", + extensions: ["ppsx"] + }, + "application/vnd.openxmlformats-officedocument.presentationml.slideshow.main+xml": { + source: "iana", + compressible: true + }, + "application/vnd.openxmlformats-officedocument.presentationml.slideupdateinfo+xml": { + source: "iana", + compressible: true + }, + "application/vnd.openxmlformats-officedocument.presentationml.tablestyles+xml": { + source: "iana", + compressible: true + }, + "application/vnd.openxmlformats-officedocument.presentationml.tags+xml": { + source: "iana", + compressible: true + }, + "application/vnd.openxmlformats-officedocument.presentationml.template": { + source: "iana", + extensions: ["potx"] + }, + "application/vnd.openxmlformats-officedocument.presentationml.template.main+xml": { + source: "iana", + compressible: true + }, + "application/vnd.openxmlformats-officedocument.presentationml.viewprops+xml": { + source: "iana", + compressible: true + }, + "application/vnd.openxmlformats-officedocument.spreadsheetml.calcchain+xml": { + source: "iana", + compressible: true + }, + "application/vnd.openxmlformats-officedocument.spreadsheetml.chartsheet+xml": { + source: "iana", + compressible: true + }, + "application/vnd.openxmlformats-officedocument.spreadsheetml.comments+xml": { + source: "iana", + compressible: true + }, + "application/vnd.openxmlformats-officedocument.spreadsheetml.connections+xml": { + source: "iana", + compressible: true + }, + "application/vnd.openxmlformats-officedocument.spreadsheetml.dialogsheet+xml": { + source: "iana", + compressible: true + }, + "application/vnd.openxmlformats-officedocument.spreadsheetml.externallink+xml": { + source: "iana", + compressible: true + }, + "application/vnd.openxmlformats-officedocument.spreadsheetml.pivotcachedefinition+xml": { + source: "iana", + compressible: true + }, + "application/vnd.openxmlformats-officedocument.spreadsheetml.pivotcacherecords+xml": { + source: "iana", + compressible: true + }, + "application/vnd.openxmlformats-officedocument.spreadsheetml.pivottable+xml": { + source: "iana", + compressible: true + }, + "application/vnd.openxmlformats-officedocument.spreadsheetml.querytable+xml": { + source: "iana", + compressible: true + }, + "application/vnd.openxmlformats-officedocument.spreadsheetml.revisionheaders+xml": { + source: "iana", + compressible: true + }, + "application/vnd.openxmlformats-officedocument.spreadsheetml.revisionlog+xml": { + source: "iana", + compressible: true + }, + "application/vnd.openxmlformats-officedocument.spreadsheetml.sharedstrings+xml": { + source: "iana", + compressible: true + }, + "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet": { + source: "iana", + compressible: false, + extensions: ["xlsx"] + }, + "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet.main+xml": { + source: "iana", + compressible: true + }, + "application/vnd.openxmlformats-officedocument.spreadsheetml.sheetmetadata+xml": { + source: "iana", + compressible: true + }, + "application/vnd.openxmlformats-officedocument.spreadsheetml.styles+xml": { + source: "iana", + compressible: true + }, + "application/vnd.openxmlformats-officedocument.spreadsheetml.table+xml": { + source: "iana", + compressible: true + }, + "application/vnd.openxmlformats-officedocument.spreadsheetml.tablesinglecells+xml": { + source: "iana", + compressible: true + }, + "application/vnd.openxmlformats-officedocument.spreadsheetml.template": { + source: "iana", + extensions: ["xltx"] + }, + "application/vnd.openxmlformats-officedocument.spreadsheetml.template.main+xml": { + source: "iana", + compressible: true + }, + "application/vnd.openxmlformats-officedocument.spreadsheetml.usernames+xml": { + source: "iana", + compressible: true + }, + "application/vnd.openxmlformats-officedocument.spreadsheetml.volatiledependencies+xml": { + source: "iana", + compressible: true + }, + "application/vnd.openxmlformats-officedocument.spreadsheetml.worksheet+xml": { + source: "iana", + compressible: true + }, + "application/vnd.openxmlformats-officedocument.theme+xml": { + source: "iana", + compressible: true + }, + "application/vnd.openxmlformats-officedocument.themeoverride+xml": { + source: "iana", + compressible: true + }, + "application/vnd.openxmlformats-officedocument.vmldrawing": { + source: "iana" + }, + "application/vnd.openxmlformats-officedocument.wordprocessingml.comments+xml": { + source: "iana", + compressible: true + }, + "application/vnd.openxmlformats-officedocument.wordprocessingml.document": { + source: "iana", + compressible: false, + extensions: ["docx"] + }, + "application/vnd.openxmlformats-officedocument.wordprocessingml.document.glossary+xml": { + source: "iana", + compressible: true + }, + "application/vnd.openxmlformats-officedocument.wordprocessingml.document.main+xml": { + source: "iana", + compressible: true + }, + "application/vnd.openxmlformats-officedocument.wordprocessingml.endnotes+xml": { + source: "iana", + compressible: true + }, + "application/vnd.openxmlformats-officedocument.wordprocessingml.fonttable+xml": { + source: "iana", + compressible: true + }, + "application/vnd.openxmlformats-officedocument.wordprocessingml.footer+xml": { + source: "iana", + compressible: true + }, + "application/vnd.openxmlformats-officedocument.wordprocessingml.footnotes+xml": { + source: "iana", + compressible: true + }, + "application/vnd.openxmlformats-officedocument.wordprocessingml.numbering+xml": { + source: "iana", + compressible: true + }, + "application/vnd.openxmlformats-officedocument.wordprocessingml.settings+xml": { + source: "iana", + compressible: true + }, + "application/vnd.openxmlformats-officedocument.wordprocessingml.styles+xml": { + source: "iana", + compressible: true + }, + "application/vnd.openxmlformats-officedocument.wordprocessingml.template": { + source: "iana", + extensions: ["dotx"] + }, + "application/vnd.openxmlformats-officedocument.wordprocessingml.template.main+xml": { + source: "iana", + compressible: true + }, + "application/vnd.openxmlformats-officedocument.wordprocessingml.websettings+xml": { + source: "iana", + compressible: true + }, + "application/vnd.openxmlformats-package.core-properties+xml": { + source: "iana", + compressible: true + }, + "application/vnd.openxmlformats-package.digital-signature-xmlsignature+xml": { + source: "iana", + compressible: true + }, + "application/vnd.openxmlformats-package.relationships+xml": { + source: "iana", + compressible: true + }, + "application/vnd.oracle.resource+json": { + source: "iana", + compressible: true + }, + "application/vnd.orange.indata": { + source: "iana" + }, + "application/vnd.osa.netdeploy": { + source: "iana" + }, + "application/vnd.osgeo.mapguide.package": { + source: "iana", + extensions: ["mgp"] + }, + "application/vnd.osgi.bundle": { + source: "iana" + }, + "application/vnd.osgi.dp": { + source: "iana", + extensions: ["dp"] + }, + "application/vnd.osgi.subsystem": { + source: "iana", + extensions: ["esa"] + }, + "application/vnd.otps.ct-kip+xml": { + source: "iana", + compressible: true + }, + "application/vnd.oxli.countgraph": { + source: "iana" + }, + "application/vnd.pagerduty+json": { + source: "iana", + compressible: true + }, + "application/vnd.palm": { + source: "iana", + extensions: ["pdb", "pqa", "oprc"] + }, + "application/vnd.panoply": { + source: "iana" + }, + "application/vnd.paos.xml": { + source: "iana" + }, + "application/vnd.patentdive": { + source: "iana" + }, + "application/vnd.patientecommsdoc": { + source: "iana" + }, + "application/vnd.pawaafile": { + source: "iana", + extensions: ["paw"] + }, + "application/vnd.pcos": { + source: "iana" + }, + "application/vnd.pg.format": { + source: "iana", + extensions: ["str"] + }, + "application/vnd.pg.osasli": { + source: "iana", + extensions: ["ei6"] + }, + "application/vnd.piaccess.application-licence": { + source: "iana" + }, + "application/vnd.picsel": { + source: "iana", + extensions: ["efif"] + }, + "application/vnd.pmi.widget": { + source: "iana", + extensions: ["wg"] + }, + "application/vnd.poc.group-advertisement+xml": { + source: "iana", + compressible: true + }, + "application/vnd.pocketlearn": { + source: "iana", + extensions: ["plf"] + }, + "application/vnd.powerbuilder6": { + source: "iana", + extensions: ["pbd"] + }, + "application/vnd.powerbuilder6-s": { + source: "iana" + }, + "application/vnd.powerbuilder7": { + source: "iana" + }, + "application/vnd.powerbuilder7-s": { + source: "iana" + }, + "application/vnd.powerbuilder75": { + source: "iana" + }, + "application/vnd.powerbuilder75-s": { + source: "iana" + }, + "application/vnd.preminet": { + source: "iana" + }, + "application/vnd.previewsystems.box": { + source: "iana", + extensions: ["box"] + }, + "application/vnd.procrate.brushset": { + extensions: ["brushset"] + }, + "application/vnd.procreate.brush": { + extensions: ["brush"] + }, + "application/vnd.procreate.dream": { + extensions: ["drm"] + }, + "application/vnd.proteus.magazine": { + source: "iana", + extensions: ["mgz"] + }, + "application/vnd.psfs": { + source: "iana" + }, + "application/vnd.pt.mundusmundi": { + source: "iana" + }, + "application/vnd.publishare-delta-tree": { + source: "iana", + extensions: ["qps"] + }, + "application/vnd.pvi.ptid1": { + source: "iana", + extensions: ["ptid"] + }, + "application/vnd.pwg-multiplexed": { + source: "iana" + }, + "application/vnd.pwg-xhtml-print+xml": { + source: "iana", + compressible: true, + extensions: ["xhtm"] + }, + "application/vnd.qualcomm.brew-app-res": { + source: "iana" + }, + "application/vnd.quarantainenet": { + source: "iana" + }, + "application/vnd.quark.quarkxpress": { + source: "iana", + extensions: ["qxd", "qxt", "qwd", "qwt", "qxl", "qxb"] + }, + "application/vnd.quobject-quoxdocument": { + source: "iana" + }, + "application/vnd.radisys.moml+xml": { + source: "iana", + compressible: true + }, + "application/vnd.radisys.msml+xml": { + source: "iana", + compressible: true + }, + "application/vnd.radisys.msml-audit+xml": { + source: "iana", + compressible: true + }, + "application/vnd.radisys.msml-audit-conf+xml": { + source: "iana", + compressible: true + }, + "application/vnd.radisys.msml-audit-conn+xml": { + source: "iana", + compressible: true + }, + "application/vnd.radisys.msml-audit-dialog+xml": { + source: "iana", + compressible: true + }, + "application/vnd.radisys.msml-audit-stream+xml": { + source: "iana", + compressible: true + }, + "application/vnd.radisys.msml-conf+xml": { + source: "iana", + compressible: true + }, + "application/vnd.radisys.msml-dialog+xml": { + source: "iana", + compressible: true + }, + "application/vnd.radisys.msml-dialog-base+xml": { + source: "iana", + compressible: true + }, + "application/vnd.radisys.msml-dialog-fax-detect+xml": { + source: "iana", + compressible: true + }, + "application/vnd.radisys.msml-dialog-fax-sendrecv+xml": { + source: "iana", + compressible: true + }, + "application/vnd.radisys.msml-dialog-group+xml": { + source: "iana", + compressible: true + }, + "application/vnd.radisys.msml-dialog-speech+xml": { + source: "iana", + compressible: true + }, + "application/vnd.radisys.msml-dialog-transform+xml": { + source: "iana", + compressible: true + }, + "application/vnd.rainstor.data": { + source: "iana" + }, + "application/vnd.rapid": { + source: "iana" + }, + "application/vnd.rar": { + source: "iana", + extensions: ["rar"] + }, + "application/vnd.realvnc.bed": { + source: "iana", + extensions: ["bed"] + }, + "application/vnd.recordare.musicxml": { + source: "iana", + extensions: ["mxl"] + }, + "application/vnd.recordare.musicxml+xml": { + source: "iana", + compressible: true, + extensions: ["musicxml"] + }, + "application/vnd.relpipe": { + source: "iana" + }, + "application/vnd.renlearn.rlprint": { + source: "iana" + }, + "application/vnd.resilient.logic": { + source: "iana" + }, + "application/vnd.restful+json": { + source: "iana", + compressible: true + }, + "application/vnd.rig.cryptonote": { + source: "iana", + extensions: ["cryptonote"] + }, + "application/vnd.rim.cod": { + source: "apache", + extensions: ["cod"] + }, + "application/vnd.rn-realmedia": { + source: "apache", + extensions: ["rm"] + }, + "application/vnd.rn-realmedia-vbr": { + source: "apache", + extensions: ["rmvb"] + }, + "application/vnd.route66.link66+xml": { + source: "iana", + compressible: true, + extensions: ["link66"] + }, + "application/vnd.rs-274x": { + source: "iana" + }, + "application/vnd.ruckus.download": { + source: "iana" + }, + "application/vnd.s3sms": { + source: "iana" + }, + "application/vnd.sailingtracker.track": { + source: "iana", + extensions: ["st"] + }, + "application/vnd.sar": { + source: "iana" + }, + "application/vnd.sbm.cid": { + source: "iana" + }, + "application/vnd.sbm.mid2": { + source: "iana" + }, + "application/vnd.scribus": { + source: "iana" + }, + "application/vnd.sealed.3df": { + source: "iana" + }, + "application/vnd.sealed.csf": { + source: "iana" + }, + "application/vnd.sealed.doc": { + source: "iana" + }, + "application/vnd.sealed.eml": { + source: "iana" + }, + "application/vnd.sealed.mht": { + source: "iana" + }, + "application/vnd.sealed.net": { + source: "iana" + }, + "application/vnd.sealed.ppt": { + source: "iana" + }, + "application/vnd.sealed.tiff": { + source: "iana" + }, + "application/vnd.sealed.xls": { + source: "iana" + }, + "application/vnd.sealedmedia.softseal.html": { + source: "iana" + }, + "application/vnd.sealedmedia.softseal.pdf": { + source: "iana" + }, + "application/vnd.seemail": { + source: "iana", + extensions: ["see"] + }, + "application/vnd.seis+json": { + source: "iana", + compressible: true + }, + "application/vnd.sema": { + source: "iana", + extensions: ["sema"] + }, + "application/vnd.semd": { + source: "iana", + extensions: ["semd"] + }, + "application/vnd.semf": { + source: "iana", + extensions: ["semf"] + }, + "application/vnd.shade-save-file": { + source: "iana" + }, + "application/vnd.shana.informed.formdata": { + source: "iana", + extensions: ["ifm"] + }, + "application/vnd.shana.informed.formtemplate": { + source: "iana", + extensions: ["itp"] + }, + "application/vnd.shana.informed.interchange": { + source: "iana", + extensions: ["iif"] + }, + "application/vnd.shana.informed.package": { + source: "iana", + extensions: ["ipk"] + }, + "application/vnd.shootproof+json": { + source: "iana", + compressible: true + }, + "application/vnd.shopkick+json": { + source: "iana", + compressible: true + }, + "application/vnd.shp": { + source: "iana" + }, + "application/vnd.shx": { + source: "iana" + }, + "application/vnd.sigrok.session": { + source: "iana" + }, + "application/vnd.simtech-mindmapper": { + source: "iana", + extensions: ["twd", "twds"] + }, + "application/vnd.siren+json": { + source: "iana", + compressible: true + }, + "application/vnd.sketchometry": { + source: "iana" + }, + "application/vnd.smaf": { + source: "iana", + extensions: ["mmf"] + }, + "application/vnd.smart.notebook": { + source: "iana" + }, + "application/vnd.smart.teacher": { + source: "iana", + extensions: ["teacher"] + }, + "application/vnd.smintio.portals.archive": { + source: "iana" + }, + "application/vnd.snesdev-page-table": { + source: "iana" + }, + "application/vnd.software602.filler.form+xml": { + source: "iana", + compressible: true, + extensions: ["fo"] + }, + "application/vnd.software602.filler.form-xml-zip": { + source: "iana" + }, + "application/vnd.solent.sdkm+xml": { + source: "iana", + compressible: true, + extensions: ["sdkm", "sdkd"] + }, + "application/vnd.spotfire.dxp": { + source: "iana", + extensions: ["dxp"] + }, + "application/vnd.spotfire.sfs": { + source: "iana", + extensions: ["sfs"] + }, + "application/vnd.sqlite3": { + source: "iana" + }, + "application/vnd.sss-cod": { + source: "iana" + }, + "application/vnd.sss-dtf": { + source: "iana" + }, + "application/vnd.sss-ntf": { + source: "iana" + }, + "application/vnd.stardivision.calc": { + source: "apache", + extensions: ["sdc"] + }, + "application/vnd.stardivision.draw": { + source: "apache", + extensions: ["sda"] + }, + "application/vnd.stardivision.impress": { + source: "apache", + extensions: ["sdd"] + }, + "application/vnd.stardivision.math": { + source: "apache", + extensions: ["smf"] + }, + "application/vnd.stardivision.writer": { + source: "apache", + extensions: ["sdw", "vor"] + }, + "application/vnd.stardivision.writer-global": { + source: "apache", + extensions: ["sgl"] + }, + "application/vnd.stepmania.package": { + source: "iana", + extensions: ["smzip"] + }, + "application/vnd.stepmania.stepchart": { + source: "iana", + extensions: ["sm"] + }, + "application/vnd.street-stream": { + source: "iana" + }, + "application/vnd.sun.wadl+xml": { + source: "iana", + compressible: true, + extensions: ["wadl"] + }, + "application/vnd.sun.xml.calc": { + source: "apache", + extensions: ["sxc"] + }, + "application/vnd.sun.xml.calc.template": { + source: "apache", + extensions: ["stc"] + }, + "application/vnd.sun.xml.draw": { + source: "apache", + extensions: ["sxd"] + }, + "application/vnd.sun.xml.draw.template": { + source: "apache", + extensions: ["std"] + }, + "application/vnd.sun.xml.impress": { + source: "apache", + extensions: ["sxi"] + }, + "application/vnd.sun.xml.impress.template": { + source: "apache", + extensions: ["sti"] + }, + "application/vnd.sun.xml.math": { + source: "apache", + extensions: ["sxm"] + }, + "application/vnd.sun.xml.writer": { + source: "apache", + extensions: ["sxw"] + }, + "application/vnd.sun.xml.writer.global": { + source: "apache", + extensions: ["sxg"] + }, + "application/vnd.sun.xml.writer.template": { + source: "apache", + extensions: ["stw"] + }, + "application/vnd.sus-calendar": { + source: "iana", + extensions: ["sus", "susp"] + }, + "application/vnd.svd": { + source: "iana", + extensions: ["svd"] + }, + "application/vnd.swiftview-ics": { + source: "iana" + }, + "application/vnd.sybyl.mol2": { + source: "iana" + }, + "application/vnd.sycle+xml": { + source: "iana", + compressible: true + }, + "application/vnd.syft+json": { + source: "iana", + compressible: true + }, + "application/vnd.symbian.install": { + source: "apache", + extensions: ["sis", "sisx"] + }, + "application/vnd.syncml+xml": { + source: "iana", + charset: "UTF-8", + compressible: true, + extensions: ["xsm"] + }, + "application/vnd.syncml.dm+wbxml": { + source: "iana", + charset: "UTF-8", + extensions: ["bdm"] + }, + "application/vnd.syncml.dm+xml": { + source: "iana", + charset: "UTF-8", + compressible: true, + extensions: ["xdm"] + }, + "application/vnd.syncml.dm.notification": { + source: "iana" + }, + "application/vnd.syncml.dmddf+wbxml": { + source: "iana" + }, + "application/vnd.syncml.dmddf+xml": { + source: "iana", + charset: "UTF-8", + compressible: true, + extensions: ["ddf"] + }, + "application/vnd.syncml.dmtnds+wbxml": { + source: "iana" + }, + "application/vnd.syncml.dmtnds+xml": { + source: "iana", + charset: "UTF-8", + compressible: true + }, + "application/vnd.syncml.ds.notification": { + source: "iana" + }, + "application/vnd.tableschema+json": { + source: "iana", + compressible: true + }, + "application/vnd.tao.intent-module-archive": { + source: "iana", + extensions: ["tao"] + }, + "application/vnd.tcpdump.pcap": { + source: "iana", + extensions: ["pcap", "cap", "dmp"] + }, + "application/vnd.think-cell.ppttc+json": { + source: "iana", + compressible: true + }, + "application/vnd.tmd.mediaflex.api+xml": { + source: "iana", + compressible: true + }, + "application/vnd.tml": { + source: "iana" + }, + "application/vnd.tmobile-livetv": { + source: "iana", + extensions: ["tmo"] + }, + "application/vnd.tri.onesource": { + source: "iana" + }, + "application/vnd.trid.tpt": { + source: "iana", + extensions: ["tpt"] + }, + "application/vnd.triscape.mxs": { + source: "iana", + extensions: ["mxs"] + }, + "application/vnd.trueapp": { + source: "iana", + extensions: ["tra"] + }, + "application/vnd.truedoc": { + source: "iana" + }, + "application/vnd.ubisoft.webplayer": { + source: "iana" + }, + "application/vnd.ufdl": { + source: "iana", + extensions: ["ufd", "ufdl"] + }, + "application/vnd.uic.osdm+json": { + source: "iana", + compressible: true + }, + "application/vnd.uiq.theme": { + source: "iana", + extensions: ["utz"] + }, + "application/vnd.umajin": { + source: "iana", + extensions: ["umj"] + }, + "application/vnd.unity": { + source: "iana", + extensions: ["unityweb"] + }, + "application/vnd.uoml+xml": { + source: "iana", + compressible: true, + extensions: ["uoml", "uo"] + }, + "application/vnd.uplanet.alert": { + source: "iana" + }, + "application/vnd.uplanet.alert-wbxml": { + source: "iana" + }, + "application/vnd.uplanet.bearer-choice": { + source: "iana" + }, + "application/vnd.uplanet.bearer-choice-wbxml": { + source: "iana" + }, + "application/vnd.uplanet.cacheop": { + source: "iana" + }, + "application/vnd.uplanet.cacheop-wbxml": { + source: "iana" + }, + "application/vnd.uplanet.channel": { + source: "iana" + }, + "application/vnd.uplanet.channel-wbxml": { + source: "iana" + }, + "application/vnd.uplanet.list": { + source: "iana" + }, + "application/vnd.uplanet.list-wbxml": { + source: "iana" + }, + "application/vnd.uplanet.listcmd": { + source: "iana" + }, + "application/vnd.uplanet.listcmd-wbxml": { + source: "iana" + }, + "application/vnd.uplanet.signal": { + source: "iana" + }, + "application/vnd.uri-map": { + source: "iana" + }, + "application/vnd.valve.source.material": { + source: "iana" + }, + "application/vnd.vcx": { + source: "iana", + extensions: ["vcx"] + }, + "application/vnd.vd-study": { + source: "iana" + }, + "application/vnd.vectorworks": { + source: "iana" + }, + "application/vnd.vel+json": { + source: "iana", + compressible: true + }, + "application/vnd.veraison.tsm-report+cbor": { + source: "iana" + }, + "application/vnd.veraison.tsm-report+json": { + source: "iana", + compressible: true + }, + "application/vnd.verimatrix.vcas": { + source: "iana" + }, + "application/vnd.veritone.aion+json": { + source: "iana", + compressible: true + }, + "application/vnd.veryant.thin": { + source: "iana" + }, + "application/vnd.ves.encrypted": { + source: "iana" + }, + "application/vnd.vidsoft.vidconference": { + source: "iana" + }, + "application/vnd.visio": { + source: "iana", + extensions: ["vsd", "vst", "vss", "vsw", "vsdx", "vtx"] + }, + "application/vnd.visionary": { + source: "iana", + extensions: ["vis"] + }, + "application/vnd.vividence.scriptfile": { + source: "iana" + }, + "application/vnd.vocalshaper.vsp4": { + source: "iana" + }, + "application/vnd.vsf": { + source: "iana", + extensions: ["vsf"] + }, + "application/vnd.wap.sic": { + source: "iana" + }, + "application/vnd.wap.slc": { + source: "iana" + }, + "application/vnd.wap.wbxml": { + source: "iana", + charset: "UTF-8", + extensions: ["wbxml"] + }, + "application/vnd.wap.wmlc": { + source: "iana", + extensions: ["wmlc"] + }, + "application/vnd.wap.wmlscriptc": { + source: "iana", + extensions: ["wmlsc"] + }, + "application/vnd.wasmflow.wafl": { + source: "iana" + }, + "application/vnd.webturbo": { + source: "iana", + extensions: ["wtb"] + }, + "application/vnd.wfa.dpp": { + source: "iana" + }, + "application/vnd.wfa.p2p": { + source: "iana" + }, + "application/vnd.wfa.wsc": { + source: "iana" + }, + "application/vnd.windows.devicepairing": { + source: "iana" + }, + "application/vnd.wmc": { + source: "iana" + }, + "application/vnd.wmf.bootstrap": { + source: "iana" + }, + "application/vnd.wolfram.mathematica": { + source: "iana" + }, + "application/vnd.wolfram.mathematica.package": { + source: "iana" + }, + "application/vnd.wolfram.player": { + source: "iana", + extensions: ["nbp"] + }, + "application/vnd.wordlift": { + source: "iana" + }, + "application/vnd.wordperfect": { + source: "iana", + extensions: ["wpd"] + }, + "application/vnd.wqd": { + source: "iana", + extensions: ["wqd"] + }, + "application/vnd.wrq-hp3000-labelled": { + source: "iana" + }, + "application/vnd.wt.stf": { + source: "iana", + extensions: ["stf"] + }, + "application/vnd.wv.csp+wbxml": { + source: "iana" + }, + "application/vnd.wv.csp+xml": { + source: "iana", + compressible: true + }, + "application/vnd.wv.ssp+xml": { + source: "iana", + compressible: true + }, + "application/vnd.xacml+json": { + source: "iana", + compressible: true + }, + "application/vnd.xara": { + source: "iana", + extensions: ["xar"] + }, + "application/vnd.xarin.cpj": { + source: "iana" + }, + "application/vnd.xecrets-encrypted": { + source: "iana" + }, + "application/vnd.xfdl": { + source: "iana", + extensions: ["xfdl"] + }, + "application/vnd.xfdl.webform": { + source: "iana" + }, + "application/vnd.xmi+xml": { + source: "iana", + compressible: true + }, + "application/vnd.xmpie.cpkg": { + source: "iana" + }, + "application/vnd.xmpie.dpkg": { + source: "iana" + }, + "application/vnd.xmpie.plan": { + source: "iana" + }, + "application/vnd.xmpie.ppkg": { + source: "iana" + }, + "application/vnd.xmpie.xlim": { + source: "iana" + }, + "application/vnd.yamaha.hv-dic": { + source: "iana", + extensions: ["hvd"] + }, + "application/vnd.yamaha.hv-script": { + source: "iana", + extensions: ["hvs"] + }, + "application/vnd.yamaha.hv-voice": { + source: "iana", + extensions: ["hvp"] + }, + "application/vnd.yamaha.openscoreformat": { + source: "iana", + extensions: ["osf"] + }, + "application/vnd.yamaha.openscoreformat.osfpvg+xml": { + source: "iana", + compressible: true, + extensions: ["osfpvg"] + }, + "application/vnd.yamaha.remote-setup": { + source: "iana" + }, + "application/vnd.yamaha.smaf-audio": { + source: "iana", + extensions: ["saf"] + }, + "application/vnd.yamaha.smaf-phrase": { + source: "iana", + extensions: ["spf"] + }, + "application/vnd.yamaha.through-ngn": { + source: "iana" + }, + "application/vnd.yamaha.tunnel-udpencap": { + source: "iana" + }, + "application/vnd.yaoweme": { + source: "iana" + }, + "application/vnd.yellowriver-custom-menu": { + source: "iana", + extensions: ["cmp"] + }, + "application/vnd.zul": { + source: "iana", + extensions: ["zir", "zirz"] + }, + "application/vnd.zzazz.deck+xml": { + source: "iana", + compressible: true, + extensions: ["zaz"] + }, + "application/voicexml+xml": { + source: "iana", + compressible: true, + extensions: ["vxml"] + }, + "application/voucher-cms+json": { + source: "iana", + compressible: true + }, + "application/voucher-jws+json": { + source: "iana", + compressible: true + }, + "application/vp": { + source: "iana" + }, + "application/vp+cose": { + source: "iana" + }, + "application/vp+jwt": { + source: "iana" + }, + "application/vq-rtcpxr": { + source: "iana" + }, + "application/wasm": { + source: "iana", + compressible: true, + extensions: ["wasm"] + }, + "application/watcherinfo+xml": { + source: "iana", + compressible: true, + extensions: ["wif"] + }, + "application/webpush-options+json": { + source: "iana", + compressible: true + }, + "application/whoispp-query": { + source: "iana" + }, + "application/whoispp-response": { + source: "iana" + }, + "application/widget": { + source: "iana", + extensions: ["wgt"] + }, + "application/winhlp": { + source: "apache", + extensions: ["hlp"] + }, + "application/wita": { + source: "iana" + }, + "application/wordperfect5.1": { + source: "iana" + }, + "application/wsdl+xml": { + source: "iana", + compressible: true, + extensions: ["wsdl"] + }, + "application/wspolicy+xml": { + source: "iana", + compressible: true, + extensions: ["wspolicy"] + }, + "application/x-7z-compressed": { + source: "apache", + compressible: false, + extensions: ["7z"] + }, + "application/x-abiword": { + source: "apache", + extensions: ["abw"] + }, + "application/x-ace-compressed": { + source: "apache", + extensions: ["ace"] + }, + "application/x-amf": { + source: "apache" + }, + "application/x-apple-diskimage": { + source: "apache", + extensions: ["dmg"] + }, + "application/x-arj": { + compressible: false, + extensions: ["arj"] + }, + "application/x-authorware-bin": { + source: "apache", + extensions: ["aab", "x32", "u32", "vox"] + }, + "application/x-authorware-map": { + source: "apache", + extensions: ["aam"] + }, + "application/x-authorware-seg": { + source: "apache", + extensions: ["aas"] + }, + "application/x-bcpio": { + source: "apache", + extensions: ["bcpio"] + }, + "application/x-bdoc": { + compressible: false, + extensions: ["bdoc"] + }, + "application/x-bittorrent": { + source: "apache", + extensions: ["torrent"] + }, + "application/x-blender": { + extensions: ["blend"] + }, + "application/x-blorb": { + source: "apache", + extensions: ["blb", "blorb"] + }, + "application/x-bzip": { + source: "apache", + compressible: false, + extensions: ["bz"] + }, + "application/x-bzip2": { + source: "apache", + compressible: false, + extensions: ["bz2", "boz"] + }, + "application/x-cbr": { + source: "apache", + extensions: ["cbr", "cba", "cbt", "cbz", "cb7"] + }, + "application/x-cdlink": { + source: "apache", + extensions: ["vcd"] + }, + "application/x-cfs-compressed": { + source: "apache", + extensions: ["cfs"] + }, + "application/x-chat": { + source: "apache", + extensions: ["chat"] + }, + "application/x-chess-pgn": { + source: "apache", + extensions: ["pgn"] + }, + "application/x-chrome-extension": { + extensions: ["crx"] + }, + "application/x-cocoa": { + source: "nginx", + extensions: ["cco"] + }, + "application/x-compress": { + source: "apache" + }, + "application/x-compressed": { + extensions: ["rar"] + }, + "application/x-conference": { + source: "apache", + extensions: ["nsc"] + }, + "application/x-cpio": { + source: "apache", + extensions: ["cpio"] + }, + "application/x-csh": { + source: "apache", + extensions: ["csh"] + }, + "application/x-deb": { + compressible: false + }, + "application/x-debian-package": { + source: "apache", + extensions: ["deb", "udeb"] + }, + "application/x-dgc-compressed": { + source: "apache", + extensions: ["dgc"] + }, + "application/x-director": { + source: "apache", + extensions: ["dir", "dcr", "dxr", "cst", "cct", "cxt", "w3d", "fgd", "swa"] + }, + "application/x-doom": { + source: "apache", + extensions: ["wad"] + }, + "application/x-dtbncx+xml": { + source: "apache", + compressible: true, + extensions: ["ncx"] + }, + "application/x-dtbook+xml": { + source: "apache", + compressible: true, + extensions: ["dtb"] + }, + "application/x-dtbresource+xml": { + source: "apache", + compressible: true, + extensions: ["res"] + }, + "application/x-dvi": { + source: "apache", + compressible: false, + extensions: ["dvi"] + }, + "application/x-envoy": { + source: "apache", + extensions: ["evy"] + }, + "application/x-eva": { + source: "apache", + extensions: ["eva"] + }, + "application/x-font-bdf": { + source: "apache", + extensions: ["bdf"] + }, + "application/x-font-dos": { + source: "apache" + }, + "application/x-font-framemaker": { + source: "apache" + }, + "application/x-font-ghostscript": { + source: "apache", + extensions: ["gsf"] + }, + "application/x-font-libgrx": { + source: "apache" + }, + "application/x-font-linux-psf": { + source: "apache", + extensions: ["psf"] + }, + "application/x-font-pcf": { + source: "apache", + extensions: ["pcf"] + }, + "application/x-font-snf": { + source: "apache", + extensions: ["snf"] + }, + "application/x-font-speedo": { + source: "apache" + }, + "application/x-font-sunos-news": { + source: "apache" + }, + "application/x-font-type1": { + source: "apache", + extensions: ["pfa", "pfb", "pfm", "afm"] + }, + "application/x-font-vfont": { + source: "apache" + }, + "application/x-freearc": { + source: "apache", + extensions: ["arc"] + }, + "application/x-futuresplash": { + source: "apache", + extensions: ["spl"] + }, + "application/x-gca-compressed": { + source: "apache", + extensions: ["gca"] + }, + "application/x-glulx": { + source: "apache", + extensions: ["ulx"] + }, + "application/x-gnumeric": { + source: "apache", + extensions: ["gnumeric"] + }, + "application/x-gramps-xml": { + source: "apache", + extensions: ["gramps"] + }, + "application/x-gtar": { + source: "apache", + extensions: ["gtar"] + }, + "application/x-gzip": { + source: "apache" + }, + "application/x-hdf": { + source: "apache", + extensions: ["hdf"] + }, + "application/x-httpd-php": { + compressible: true, + extensions: ["php"] + }, + "application/x-install-instructions": { + source: "apache", + extensions: ["install"] + }, + "application/x-ipynb+json": { + compressible: true, + extensions: ["ipynb"] + }, + "application/x-iso9660-image": { + source: "apache", + extensions: ["iso"] + }, + "application/x-iwork-keynote-sffkey": { + extensions: ["key"] + }, + "application/x-iwork-numbers-sffnumbers": { + extensions: ["numbers"] + }, + "application/x-iwork-pages-sffpages": { + extensions: ["pages"] + }, + "application/x-java-archive-diff": { + source: "nginx", + extensions: ["jardiff"] + }, + "application/x-java-jnlp-file": { + source: "apache", + compressible: false, + extensions: ["jnlp"] + }, + "application/x-javascript": { + compressible: true + }, + "application/x-keepass2": { + extensions: ["kdbx"] + }, + "application/x-latex": { + source: "apache", + compressible: false, + extensions: ["latex"] + }, + "application/x-lua-bytecode": { + extensions: ["luac"] + }, + "application/x-lzh-compressed": { + source: "apache", + extensions: ["lzh", "lha"] + }, + "application/x-makeself": { + source: "nginx", + extensions: ["run"] + }, + "application/x-mie": { + source: "apache", + extensions: ["mie"] + }, + "application/x-mobipocket-ebook": { + source: "apache", + extensions: ["prc", "mobi"] + }, + "application/x-mpegurl": { + compressible: false + }, + "application/x-ms-application": { + source: "apache", + extensions: ["application"] + }, + "application/x-ms-shortcut": { + source: "apache", + extensions: ["lnk"] + }, + "application/x-ms-wmd": { + source: "apache", + extensions: ["wmd"] + }, + "application/x-ms-wmz": { + source: "apache", + extensions: ["wmz"] + }, + "application/x-ms-xbap": { + source: "apache", + extensions: ["xbap"] + }, + "application/x-msaccess": { + source: "apache", + extensions: ["mdb"] + }, + "application/x-msbinder": { + source: "apache", + extensions: ["obd"] + }, + "application/x-mscardfile": { + source: "apache", + extensions: ["crd"] + }, + "application/x-msclip": { + source: "apache", + extensions: ["clp"] + }, + "application/x-msdos-program": { + extensions: ["exe"] + }, + "application/x-msdownload": { + source: "apache", + extensions: ["exe", "dll", "com", "bat", "msi"] + }, + "application/x-msmediaview": { + source: "apache", + extensions: ["mvb", "m13", "m14"] + }, + "application/x-msmetafile": { + source: "apache", + extensions: ["wmf", "wmz", "emf", "emz"] + }, + "application/x-msmoney": { + source: "apache", + extensions: ["mny"] + }, + "application/x-mspublisher": { + source: "apache", + extensions: ["pub"] + }, + "application/x-msschedule": { + source: "apache", + extensions: ["scd"] + }, + "application/x-msterminal": { + source: "apache", + extensions: ["trm"] + }, + "application/x-mswrite": { + source: "apache", + extensions: ["wri"] + }, + "application/x-netcdf": { + source: "apache", + extensions: ["nc", "cdf"] + }, + "application/x-ns-proxy-autoconfig": { + compressible: true, + extensions: ["pac"] + }, + "application/x-nzb": { + source: "apache", + extensions: ["nzb"] + }, + "application/x-perl": { + source: "nginx", + extensions: ["pl", "pm"] + }, + "application/x-pilot": { + source: "nginx", + extensions: ["prc", "pdb"] + }, + "application/x-pkcs12": { + source: "apache", + compressible: false, + extensions: ["p12", "pfx"] + }, + "application/x-pkcs7-certificates": { + source: "apache", + extensions: ["p7b", "spc"] + }, + "application/x-pkcs7-certreqresp": { + source: "apache", + extensions: ["p7r"] + }, + "application/x-pki-message": { + source: "iana" + }, + "application/x-rar-compressed": { + source: "apache", + compressible: false, + extensions: ["rar"] + }, + "application/x-redhat-package-manager": { + source: "nginx", + extensions: ["rpm"] + }, + "application/x-research-info-systems": { + source: "apache", + extensions: ["ris"] + }, + "application/x-sea": { + source: "nginx", + extensions: ["sea"] + }, + "application/x-sh": { + source: "apache", + compressible: true, + extensions: ["sh"] + }, + "application/x-shar": { + source: "apache", + extensions: ["shar"] + }, + "application/x-shockwave-flash": { + source: "apache", + compressible: false, + extensions: ["swf"] + }, + "application/x-silverlight-app": { + source: "apache", + extensions: ["xap"] + }, + "application/x-sql": { + source: "apache", + extensions: ["sql"] + }, + "application/x-stuffit": { + source: "apache", + compressible: false, + extensions: ["sit"] + }, + "application/x-stuffitx": { + source: "apache", + extensions: ["sitx"] + }, + "application/x-subrip": { + source: "apache", + extensions: ["srt"] + }, + "application/x-sv4cpio": { + source: "apache", + extensions: ["sv4cpio"] + }, + "application/x-sv4crc": { + source: "apache", + extensions: ["sv4crc"] + }, + "application/x-t3vm-image": { + source: "apache", + extensions: ["t3"] + }, + "application/x-tads": { + source: "apache", + extensions: ["gam"] + }, + "application/x-tar": { + source: "apache", + compressible: true, + extensions: ["tar"] + }, + "application/x-tcl": { + source: "apache", + extensions: ["tcl", "tk"] + }, + "application/x-tex": { + source: "apache", + extensions: ["tex"] + }, + "application/x-tex-tfm": { + source: "apache", + extensions: ["tfm"] + }, + "application/x-texinfo": { + source: "apache", + extensions: ["texinfo", "texi"] + }, + "application/x-tgif": { + source: "apache", + extensions: ["obj"] + }, + "application/x-ustar": { + source: "apache", + extensions: ["ustar"] + }, + "application/x-virtualbox-hdd": { + compressible: true, + extensions: ["hdd"] + }, + "application/x-virtualbox-ova": { + compressible: true, + extensions: ["ova"] + }, + "application/x-virtualbox-ovf": { + compressible: true, + extensions: ["ovf"] + }, + "application/x-virtualbox-vbox": { + compressible: true, + extensions: ["vbox"] + }, + "application/x-virtualbox-vbox-extpack": { + compressible: false, + extensions: ["vbox-extpack"] + }, + "application/x-virtualbox-vdi": { + compressible: true, + extensions: ["vdi"] + }, + "application/x-virtualbox-vhd": { + compressible: true, + extensions: ["vhd"] + }, + "application/x-virtualbox-vmdk": { + compressible: true, + extensions: ["vmdk"] + }, + "application/x-wais-source": { + source: "apache", + extensions: ["src"] + }, + "application/x-web-app-manifest+json": { + compressible: true, + extensions: ["webapp"] + }, + "application/x-www-form-urlencoded": { + source: "iana", + compressible: true + }, + "application/x-x509-ca-cert": { + source: "iana", + extensions: ["der", "crt", "pem"] + }, + "application/x-x509-ca-ra-cert": { + source: "iana" + }, + "application/x-x509-next-ca-cert": { + source: "iana" + }, + "application/x-xfig": { + source: "apache", + extensions: ["fig"] + }, + "application/x-xliff+xml": { + source: "apache", + compressible: true, + extensions: ["xlf"] + }, + "application/x-xpinstall": { + source: "apache", + compressible: false, + extensions: ["xpi"] + }, + "application/x-xz": { + source: "apache", + extensions: ["xz"] + }, + "application/x-zip-compressed": { + extensions: ["zip"] + }, + "application/x-zmachine": { + source: "apache", + extensions: ["z1", "z2", "z3", "z4", "z5", "z6", "z7", "z8"] + }, + "application/x400-bp": { + source: "iana" + }, + "application/xacml+xml": { + source: "iana", + compressible: true + }, + "application/xaml+xml": { + source: "apache", + compressible: true, + extensions: ["xaml"] + }, + "application/xcap-att+xml": { + source: "iana", + compressible: true, + extensions: ["xav"] + }, + "application/xcap-caps+xml": { + source: "iana", + compressible: true, + extensions: ["xca"] + }, + "application/xcap-diff+xml": { + source: "iana", + compressible: true, + extensions: ["xdf"] + }, + "application/xcap-el+xml": { + source: "iana", + compressible: true, + extensions: ["xel"] + }, + "application/xcap-error+xml": { + source: "iana", + compressible: true + }, + "application/xcap-ns+xml": { + source: "iana", + compressible: true, + extensions: ["xns"] + }, + "application/xcon-conference-info+xml": { + source: "iana", + compressible: true + }, + "application/xcon-conference-info-diff+xml": { + source: "iana", + compressible: true + }, + "application/xenc+xml": { + source: "iana", + compressible: true, + extensions: ["xenc"] + }, + "application/xfdf": { + source: "iana", + extensions: ["xfdf"] + }, + "application/xhtml+xml": { + source: "iana", + compressible: true, + extensions: ["xhtml", "xht"] + }, + "application/xhtml-voice+xml": { + source: "apache", + compressible: true + }, + "application/xliff+xml": { + source: "iana", + compressible: true, + extensions: ["xlf"] + }, + "application/xml": { + source: "iana", + compressible: true, + extensions: ["xml", "xsl", "xsd", "rng"] + }, + "application/xml-dtd": { + source: "iana", + compressible: true, + extensions: ["dtd"] + }, + "application/xml-external-parsed-entity": { + source: "iana" + }, + "application/xml-patch+xml": { + source: "iana", + compressible: true + }, + "application/xmpp+xml": { + source: "iana", + compressible: true + }, + "application/xop+xml": { + source: "iana", + compressible: true, + extensions: ["xop"] + }, + "application/xproc+xml": { + source: "apache", + compressible: true, + extensions: ["xpl"] + }, + "application/xslt+xml": { + source: "iana", + compressible: true, + extensions: ["xsl", "xslt"] + }, + "application/xspf+xml": { + source: "apache", + compressible: true, + extensions: ["xspf"] + }, + "application/xv+xml": { + source: "iana", + compressible: true, + extensions: ["mxml", "xhvml", "xvml", "xvm"] + }, + "application/yaml": { + source: "iana" + }, + "application/yang": { + source: "iana", + extensions: ["yang"] + }, + "application/yang-data+cbor": { + source: "iana" + }, + "application/yang-data+json": { + source: "iana", + compressible: true + }, + "application/yang-data+xml": { + source: "iana", + compressible: true + }, + "application/yang-patch+json": { + source: "iana", + compressible: true + }, + "application/yang-patch+xml": { + source: "iana", + compressible: true + }, + "application/yang-sid+json": { + source: "iana", + compressible: true + }, + "application/yin+xml": { + source: "iana", + compressible: true, + extensions: ["yin"] + }, + "application/zip": { + source: "iana", + compressible: false, + extensions: ["zip"] + }, + "application/zip+dotlottie": { + extensions: ["lottie"] + }, + "application/zlib": { + source: "iana" + }, + "application/zstd": { + source: "iana" + }, + "audio/1d-interleaved-parityfec": { + source: "iana" + }, + "audio/32kadpcm": { + source: "iana" + }, + "audio/3gpp": { + source: "iana", + compressible: false, + extensions: ["3gpp"] + }, + "audio/3gpp2": { + source: "iana" + }, + "audio/aac": { + source: "iana", + extensions: ["adts", "aac"] + }, + "audio/ac3": { + source: "iana" + }, + "audio/adpcm": { + source: "apache", + extensions: ["adp"] + }, + "audio/amr": { + source: "iana", + extensions: ["amr"] + }, + "audio/amr-wb": { + source: "iana" + }, + "audio/amr-wb+": { + source: "iana" + }, + "audio/aptx": { + source: "iana" + }, + "audio/asc": { + source: "iana" + }, + "audio/atrac-advanced-lossless": { + source: "iana" + }, + "audio/atrac-x": { + source: "iana" + }, + "audio/atrac3": { + source: "iana" + }, + "audio/basic": { + source: "iana", + compressible: false, + extensions: ["au", "snd"] + }, + "audio/bv16": { + source: "iana" + }, + "audio/bv32": { + source: "iana" + }, + "audio/clearmode": { + source: "iana" + }, + "audio/cn": { + source: "iana" + }, + "audio/dat12": { + source: "iana" + }, + "audio/dls": { + source: "iana" + }, + "audio/dsr-es201108": { + source: "iana" + }, + "audio/dsr-es202050": { + source: "iana" + }, + "audio/dsr-es202211": { + source: "iana" + }, + "audio/dsr-es202212": { + source: "iana" + }, + "audio/dv": { + source: "iana" + }, + "audio/dvi4": { + source: "iana" + }, + "audio/eac3": { + source: "iana" + }, + "audio/encaprtp": { + source: "iana" + }, + "audio/evrc": { + source: "iana" + }, + "audio/evrc-qcp": { + source: "iana" + }, + "audio/evrc0": { + source: "iana" + }, + "audio/evrc1": { + source: "iana" + }, + "audio/evrcb": { + source: "iana" + }, + "audio/evrcb0": { + source: "iana" + }, + "audio/evrcb1": { + source: "iana" + }, + "audio/evrcnw": { + source: "iana" + }, + "audio/evrcnw0": { + source: "iana" + }, + "audio/evrcnw1": { + source: "iana" + }, + "audio/evrcwb": { + source: "iana" + }, + "audio/evrcwb0": { + source: "iana" + }, + "audio/evrcwb1": { + source: "iana" + }, + "audio/evs": { + source: "iana" + }, + "audio/flac": { + source: "iana" + }, + "audio/flexfec": { + source: "iana" + }, + "audio/fwdred": { + source: "iana" + }, + "audio/g711-0": { + source: "iana" + }, + "audio/g719": { + source: "iana" + }, + "audio/g722": { + source: "iana" + }, + "audio/g7221": { + source: "iana" + }, + "audio/g723": { + source: "iana" + }, + "audio/g726-16": { + source: "iana" + }, + "audio/g726-24": { + source: "iana" + }, + "audio/g726-32": { + source: "iana" + }, + "audio/g726-40": { + source: "iana" + }, + "audio/g728": { + source: "iana" + }, + "audio/g729": { + source: "iana" + }, + "audio/g7291": { + source: "iana" + }, + "audio/g729d": { + source: "iana" + }, + "audio/g729e": { + source: "iana" + }, + "audio/gsm": { + source: "iana" + }, + "audio/gsm-efr": { + source: "iana" + }, + "audio/gsm-hr-08": { + source: "iana" + }, + "audio/ilbc": { + source: "iana" + }, + "audio/ip-mr_v2.5": { + source: "iana" + }, + "audio/isac": { + source: "apache" + }, + "audio/l16": { + source: "iana" + }, + "audio/l20": { + source: "iana" + }, + "audio/l24": { + source: "iana", + compressible: false + }, + "audio/l8": { + source: "iana" + }, + "audio/lpc": { + source: "iana" + }, + "audio/matroska": { + source: "iana" + }, + "audio/melp": { + source: "iana" + }, + "audio/melp1200": { + source: "iana" + }, + "audio/melp2400": { + source: "iana" + }, + "audio/melp600": { + source: "iana" + }, + "audio/mhas": { + source: "iana" + }, + "audio/midi": { + source: "apache", + extensions: ["mid", "midi", "kar", "rmi"] + }, + "audio/midi-clip": { + source: "iana" + }, + "audio/mobile-xmf": { + source: "iana", + extensions: ["mxmf"] + }, + "audio/mp3": { + compressible: false, + extensions: ["mp3"] + }, + "audio/mp4": { + source: "iana", + compressible: false, + extensions: ["m4a", "mp4a", "m4b"] + }, + "audio/mp4a-latm": { + source: "iana" + }, + "audio/mpa": { + source: "iana" + }, + "audio/mpa-robust": { + source: "iana" + }, + "audio/mpeg": { + source: "iana", + compressible: false, + extensions: ["mpga", "mp2", "mp2a", "mp3", "m2a", "m3a"] + }, + "audio/mpeg4-generic": { + source: "iana" + }, + "audio/musepack": { + source: "apache" + }, + "audio/ogg": { + source: "iana", + compressible: false, + extensions: ["oga", "ogg", "spx", "opus"] + }, + "audio/opus": { + source: "iana" + }, + "audio/parityfec": { + source: "iana" + }, + "audio/pcma": { + source: "iana" + }, + "audio/pcma-wb": { + source: "iana" + }, + "audio/pcmu": { + source: "iana" + }, + "audio/pcmu-wb": { + source: "iana" + }, + "audio/prs.sid": { + source: "iana" + }, + "audio/qcelp": { + source: "iana" + }, + "audio/raptorfec": { + source: "iana" + }, + "audio/red": { + source: "iana" + }, + "audio/rtp-enc-aescm128": { + source: "iana" + }, + "audio/rtp-midi": { + source: "iana" + }, + "audio/rtploopback": { + source: "iana" + }, + "audio/rtx": { + source: "iana" + }, + "audio/s3m": { + source: "apache", + extensions: ["s3m"] + }, + "audio/scip": { + source: "iana" + }, + "audio/silk": { + source: "apache", + extensions: ["sil"] + }, + "audio/smv": { + source: "iana" + }, + "audio/smv-qcp": { + source: "iana" + }, + "audio/smv0": { + source: "iana" + }, + "audio/sofa": { + source: "iana" + }, + "audio/sp-midi": { + source: "iana" + }, + "audio/speex": { + source: "iana" + }, + "audio/t140c": { + source: "iana" + }, + "audio/t38": { + source: "iana" + }, + "audio/telephone-event": { + source: "iana" + }, + "audio/tetra_acelp": { + source: "iana" + }, + "audio/tetra_acelp_bb": { + source: "iana" + }, + "audio/tone": { + source: "iana" + }, + "audio/tsvcis": { + source: "iana" + }, + "audio/uemclip": { + source: "iana" + }, + "audio/ulpfec": { + source: "iana" + }, + "audio/usac": { + source: "iana" + }, + "audio/vdvi": { + source: "iana" + }, + "audio/vmr-wb": { + source: "iana" + }, + "audio/vnd.3gpp.iufp": { + source: "iana" + }, + "audio/vnd.4sb": { + source: "iana" + }, + "audio/vnd.audiokoz": { + source: "iana" + }, + "audio/vnd.celp": { + source: "iana" + }, + "audio/vnd.cisco.nse": { + source: "iana" + }, + "audio/vnd.cmles.radio-events": { + source: "iana" + }, + "audio/vnd.cns.anp1": { + source: "iana" + }, + "audio/vnd.cns.inf1": { + source: "iana" + }, + "audio/vnd.dece.audio": { + source: "iana", + extensions: ["uva", "uvva"] + }, + "audio/vnd.digital-winds": { + source: "iana", + extensions: ["eol"] + }, + "audio/vnd.dlna.adts": { + source: "iana" + }, + "audio/vnd.dolby.heaac.1": { + source: "iana" + }, + "audio/vnd.dolby.heaac.2": { + source: "iana" + }, + "audio/vnd.dolby.mlp": { + source: "iana" + }, + "audio/vnd.dolby.mps": { + source: "iana" + }, + "audio/vnd.dolby.pl2": { + source: "iana" + }, + "audio/vnd.dolby.pl2x": { + source: "iana" + }, + "audio/vnd.dolby.pl2z": { + source: "iana" + }, + "audio/vnd.dolby.pulse.1": { + source: "iana" + }, + "audio/vnd.dra": { + source: "iana", + extensions: ["dra"] + }, + "audio/vnd.dts": { + source: "iana", + extensions: ["dts"] + }, + "audio/vnd.dts.hd": { + source: "iana", + extensions: ["dtshd"] + }, + "audio/vnd.dts.uhd": { + source: "iana" + }, + "audio/vnd.dvb.file": { + source: "iana" + }, + "audio/vnd.everad.plj": { + source: "iana" + }, + "audio/vnd.hns.audio": { + source: "iana" + }, + "audio/vnd.lucent.voice": { + source: "iana", + extensions: ["lvp"] + }, + "audio/vnd.ms-playready.media.pya": { + source: "iana", + extensions: ["pya"] + }, + "audio/vnd.nokia.mobile-xmf": { + source: "iana" + }, + "audio/vnd.nortel.vbk": { + source: "iana" + }, + "audio/vnd.nuera.ecelp4800": { + source: "iana", + extensions: ["ecelp4800"] + }, + "audio/vnd.nuera.ecelp7470": { + source: "iana", + extensions: ["ecelp7470"] + }, + "audio/vnd.nuera.ecelp9600": { + source: "iana", + extensions: ["ecelp9600"] + }, + "audio/vnd.octel.sbc": { + source: "iana" + }, + "audio/vnd.presonus.multitrack": { + source: "iana" + }, + "audio/vnd.qcelp": { + source: "apache" + }, + "audio/vnd.rhetorex.32kadpcm": { + source: "iana" + }, + "audio/vnd.rip": { + source: "iana", + extensions: ["rip"] + }, + "audio/vnd.rn-realaudio": { + compressible: false + }, + "audio/vnd.sealedmedia.softseal.mpeg": { + source: "iana" + }, + "audio/vnd.vmx.cvsd": { + source: "iana" + }, + "audio/vnd.wave": { + compressible: false + }, + "audio/vorbis": { + source: "iana", + compressible: false + }, + "audio/vorbis-config": { + source: "iana" + }, + "audio/wav": { + compressible: false, + extensions: ["wav"] + }, + "audio/wave": { + compressible: false, + extensions: ["wav"] + }, + "audio/webm": { + source: "apache", + compressible: false, + extensions: ["weba"] + }, + "audio/x-aac": { + source: "apache", + compressible: false, + extensions: ["aac"] + }, + "audio/x-aiff": { + source: "apache", + extensions: ["aif", "aiff", "aifc"] + }, + "audio/x-caf": { + source: "apache", + compressible: false, + extensions: ["caf"] + }, + "audio/x-flac": { + source: "apache", + extensions: ["flac"] + }, + "audio/x-m4a": { + source: "nginx", + extensions: ["m4a"] + }, + "audio/x-matroska": { + source: "apache", + extensions: ["mka"] + }, + "audio/x-mpegurl": { + source: "apache", + extensions: ["m3u"] + }, + "audio/x-ms-wax": { + source: "apache", + extensions: ["wax"] + }, + "audio/x-ms-wma": { + source: "apache", + extensions: ["wma"] + }, + "audio/x-pn-realaudio": { + source: "apache", + extensions: ["ram", "ra"] + }, + "audio/x-pn-realaudio-plugin": { + source: "apache", + extensions: ["rmp"] + }, + "audio/x-realaudio": { + source: "nginx", + extensions: ["ra"] + }, + "audio/x-tta": { + source: "apache" + }, + "audio/x-wav": { + source: "apache", + extensions: ["wav"] + }, + "audio/xm": { + source: "apache", + extensions: ["xm"] + }, + "chemical/x-cdx": { + source: "apache", + extensions: ["cdx"] + }, + "chemical/x-cif": { + source: "apache", + extensions: ["cif"] + }, + "chemical/x-cmdf": { + source: "apache", + extensions: ["cmdf"] + }, + "chemical/x-cml": { + source: "apache", + extensions: ["cml"] + }, + "chemical/x-csml": { + source: "apache", + extensions: ["csml"] + }, + "chemical/x-pdb": { + source: "apache" + }, + "chemical/x-xyz": { + source: "apache", + extensions: ["xyz"] + }, + "font/collection": { + source: "iana", + extensions: ["ttc"] + }, + "font/otf": { + source: "iana", + compressible: true, + extensions: ["otf"] + }, + "font/sfnt": { + source: "iana" + }, + "font/ttf": { + source: "iana", + compressible: true, + extensions: ["ttf"] + }, + "font/woff": { + source: "iana", + extensions: ["woff"] + }, + "font/woff2": { + source: "iana", + extensions: ["woff2"] + }, + "image/aces": { + source: "iana", + extensions: ["exr"] + }, + "image/apng": { + source: "iana", + compressible: false, + extensions: ["apng"] + }, + "image/avci": { + source: "iana", + extensions: ["avci"] + }, + "image/avcs": { + source: "iana", + extensions: ["avcs"] + }, + "image/avif": { + source: "iana", + compressible: false, + extensions: ["avif"] + }, + "image/bmp": { + source: "iana", + compressible: true, + extensions: ["bmp", "dib"] + }, + "image/cgm": { + source: "iana", + extensions: ["cgm"] + }, + "image/dicom-rle": { + source: "iana", + extensions: ["drle"] + }, + "image/dpx": { + source: "iana", + extensions: ["dpx"] + }, + "image/emf": { + source: "iana", + extensions: ["emf"] + }, + "image/fits": { + source: "iana", + extensions: ["fits"] + }, + "image/g3fax": { + source: "iana", + extensions: ["g3"] + }, + "image/gif": { + source: "iana", + compressible: false, + extensions: ["gif"] + }, + "image/heic": { + source: "iana", + extensions: ["heic"] + }, + "image/heic-sequence": { + source: "iana", + extensions: ["heics"] + }, + "image/heif": { + source: "iana", + extensions: ["heif"] + }, + "image/heif-sequence": { + source: "iana", + extensions: ["heifs"] + }, + "image/hej2k": { + source: "iana", + extensions: ["hej2"] + }, + "image/ief": { + source: "iana", + extensions: ["ief"] + }, + "image/j2c": { + source: "iana" + }, + "image/jaii": { + source: "iana", + extensions: ["jaii"] + }, + "image/jais": { + source: "iana", + extensions: ["jais"] + }, + "image/jls": { + source: "iana", + extensions: ["jls"] + }, + "image/jp2": { + source: "iana", + compressible: false, + extensions: ["jp2", "jpg2"] + }, + "image/jpeg": { + source: "iana", + compressible: false, + extensions: ["jpg", "jpeg", "jpe"] + }, + "image/jph": { + source: "iana", + extensions: ["jph"] + }, + "image/jphc": { + source: "iana", + extensions: ["jhc"] + }, + "image/jpm": { + source: "iana", + compressible: false, + extensions: ["jpm", "jpgm"] + }, + "image/jpx": { + source: "iana", + compressible: false, + extensions: ["jpx", "jpf"] + }, + "image/jxl": { + source: "iana", + extensions: ["jxl"] + }, + "image/jxr": { + source: "iana", + extensions: ["jxr"] + }, + "image/jxra": { + source: "iana", + extensions: ["jxra"] + }, + "image/jxrs": { + source: "iana", + extensions: ["jxrs"] + }, + "image/jxs": { + source: "iana", + extensions: ["jxs"] + }, + "image/jxsc": { + source: "iana", + extensions: ["jxsc"] + }, + "image/jxsi": { + source: "iana", + extensions: ["jxsi"] + }, + "image/jxss": { + source: "iana", + extensions: ["jxss"] + }, + "image/ktx": { + source: "iana", + extensions: ["ktx"] + }, + "image/ktx2": { + source: "iana", + extensions: ["ktx2"] + }, + "image/naplps": { + source: "iana" + }, + "image/pjpeg": { + compressible: false, + extensions: ["jfif"] + }, + "image/png": { + source: "iana", + compressible: false, + extensions: ["png"] + }, + "image/prs.btif": { + source: "iana", + extensions: ["btif", "btf"] + }, + "image/prs.pti": { + source: "iana", + extensions: ["pti"] + }, + "image/pwg-raster": { + source: "iana" + }, + "image/sgi": { + source: "apache", + extensions: ["sgi"] + }, + "image/svg+xml": { + source: "iana", + compressible: true, + extensions: ["svg", "svgz"] + }, + "image/t38": { + source: "iana", + extensions: ["t38"] + }, + "image/tiff": { + source: "iana", + compressible: false, + extensions: ["tif", "tiff"] + }, + "image/tiff-fx": { + source: "iana", + extensions: ["tfx"] + }, + "image/vnd.adobe.photoshop": { + source: "iana", + compressible: true, + extensions: ["psd"] + }, + "image/vnd.airzip.accelerator.azv": { + source: "iana", + extensions: ["azv"] + }, + "image/vnd.clip": { + source: "iana" + }, + "image/vnd.cns.inf2": { + source: "iana" + }, + "image/vnd.dece.graphic": { + source: "iana", + extensions: ["uvi", "uvvi", "uvg", "uvvg"] + }, + "image/vnd.djvu": { + source: "iana", + extensions: ["djvu", "djv"] + }, + "image/vnd.dvb.subtitle": { + source: "iana", + extensions: ["sub"] + }, + "image/vnd.dwg": { + source: "iana", + extensions: ["dwg"] + }, + "image/vnd.dxf": { + source: "iana", + extensions: ["dxf"] + }, + "image/vnd.fastbidsheet": { + source: "iana", + extensions: ["fbs"] + }, + "image/vnd.fpx": { + source: "iana", + extensions: ["fpx"] + }, + "image/vnd.fst": { + source: "iana", + extensions: ["fst"] + }, + "image/vnd.fujixerox.edmics-mmr": { + source: "iana", + extensions: ["mmr"] + }, + "image/vnd.fujixerox.edmics-rlc": { + source: "iana", + extensions: ["rlc"] + }, + "image/vnd.globalgraphics.pgb": { + source: "iana" + }, + "image/vnd.microsoft.icon": { + source: "iana", + compressible: true, + extensions: ["ico"] + }, + "image/vnd.mix": { + source: "iana" + }, + "image/vnd.mozilla.apng": { + source: "iana" + }, + "image/vnd.ms-dds": { + compressible: true, + extensions: ["dds"] + }, + "image/vnd.ms-modi": { + source: "iana", + extensions: ["mdi"] + }, + "image/vnd.ms-photo": { + source: "apache", + extensions: ["wdp"] + }, + "image/vnd.net-fpx": { + source: "iana", + extensions: ["npx"] + }, + "image/vnd.pco.b16": { + source: "iana", + extensions: ["b16"] + }, + "image/vnd.radiance": { + source: "iana" + }, + "image/vnd.sealed.png": { + source: "iana" + }, + "image/vnd.sealedmedia.softseal.gif": { + source: "iana" + }, + "image/vnd.sealedmedia.softseal.jpg": { + source: "iana" + }, + "image/vnd.svf": { + source: "iana" + }, + "image/vnd.tencent.tap": { + source: "iana", + extensions: ["tap"] + }, + "image/vnd.valve.source.texture": { + source: "iana", + extensions: ["vtf"] + }, + "image/vnd.wap.wbmp": { + source: "iana", + extensions: ["wbmp"] + }, + "image/vnd.xiff": { + source: "iana", + extensions: ["xif"] + }, + "image/vnd.zbrush.pcx": { + source: "iana", + extensions: ["pcx"] + }, + "image/webp": { + source: "iana", + extensions: ["webp"] + }, + "image/wmf": { + source: "iana", + extensions: ["wmf"] + }, + "image/x-3ds": { + source: "apache", + extensions: ["3ds"] + }, + "image/x-adobe-dng": { + extensions: ["dng"] + }, + "image/x-cmu-raster": { + source: "apache", + extensions: ["ras"] + }, + "image/x-cmx": { + source: "apache", + extensions: ["cmx"] + }, + "image/x-emf": { + source: "iana" + }, + "image/x-freehand": { + source: "apache", + extensions: ["fh", "fhc", "fh4", "fh5", "fh7"] + }, + "image/x-icon": { + source: "apache", + compressible: true, + extensions: ["ico"] + }, + "image/x-jng": { + source: "nginx", + extensions: ["jng"] + }, + "image/x-mrsid-image": { + source: "apache", + extensions: ["sid"] + }, + "image/x-ms-bmp": { + source: "nginx", + compressible: true, + extensions: ["bmp"] + }, + "image/x-pcx": { + source: "apache", + extensions: ["pcx"] + }, + "image/x-pict": { + source: "apache", + extensions: ["pic", "pct"] + }, + "image/x-portable-anymap": { + source: "apache", + extensions: ["pnm"] + }, + "image/x-portable-bitmap": { + source: "apache", + extensions: ["pbm"] + }, + "image/x-portable-graymap": { + source: "apache", + extensions: ["pgm"] + }, + "image/x-portable-pixmap": { + source: "apache", + extensions: ["ppm"] + }, + "image/x-rgb": { + source: "apache", + extensions: ["rgb"] + }, + "image/x-tga": { + source: "apache", + extensions: ["tga"] + }, + "image/x-wmf": { + source: "iana" + }, + "image/x-xbitmap": { + source: "apache", + extensions: ["xbm"] + }, + "image/x-xcf": { + compressible: false + }, + "image/x-xpixmap": { + source: "apache", + extensions: ["xpm"] + }, + "image/x-xwindowdump": { + source: "apache", + extensions: ["xwd"] + }, + "message/bhttp": { + source: "iana" + }, + "message/cpim": { + source: "iana" + }, + "message/delivery-status": { + source: "iana" + }, + "message/disposition-notification": { + source: "iana", + extensions: [ + "disposition-notification" + ] + }, + "message/external-body": { + source: "iana" + }, + "message/feedback-report": { + source: "iana" + }, + "message/global": { + source: "iana", + extensions: ["u8msg"] + }, + "message/global-delivery-status": { + source: "iana", + extensions: ["u8dsn"] + }, + "message/global-disposition-notification": { + source: "iana", + extensions: ["u8mdn"] + }, + "message/global-headers": { + source: "iana", + extensions: ["u8hdr"] + }, + "message/http": { + source: "iana", + compressible: false + }, + "message/imdn+xml": { + source: "iana", + compressible: true + }, + "message/mls": { + source: "iana" + }, + "message/news": { + source: "apache" + }, + "message/ohttp-req": { + source: "iana" + }, + "message/ohttp-res": { + source: "iana" + }, + "message/partial": { + source: "iana", + compressible: false + }, + "message/rfc822": { + source: "iana", + compressible: true, + extensions: ["eml", "mime", "mht", "mhtml"] + }, + "message/s-http": { + source: "apache" + }, + "message/sip": { + source: "iana" + }, + "message/sipfrag": { + source: "iana" + }, + "message/tracking-status": { + source: "iana" + }, + "message/vnd.si.simp": { + source: "apache" + }, + "message/vnd.wfa.wsc": { + source: "iana", + extensions: ["wsc"] + }, + "model/3mf": { + source: "iana", + extensions: ["3mf"] + }, + "model/e57": { + source: "iana" + }, + "model/gltf+json": { + source: "iana", + compressible: true, + extensions: ["gltf"] + }, + "model/gltf-binary": { + source: "iana", + compressible: true, + extensions: ["glb"] + }, + "model/iges": { + source: "iana", + compressible: false, + extensions: ["igs", "iges"] + }, + "model/jt": { + source: "iana", + extensions: ["jt"] + }, + "model/mesh": { + source: "iana", + compressible: false, + extensions: ["msh", "mesh", "silo"] + }, + "model/mtl": { + source: "iana", + extensions: ["mtl"] + }, + "model/obj": { + source: "iana", + extensions: ["obj"] + }, + "model/prc": { + source: "iana", + extensions: ["prc"] + }, + "model/step": { + source: "iana", + extensions: ["step", "stp", "stpnc", "p21", "210"] + }, + "model/step+xml": { + source: "iana", + compressible: true, + extensions: ["stpx"] + }, + "model/step+zip": { + source: "iana", + compressible: false, + extensions: ["stpz"] + }, + "model/step-xml+zip": { + source: "iana", + compressible: false, + extensions: ["stpxz"] + }, + "model/stl": { + source: "iana", + extensions: ["stl"] + }, + "model/u3d": { + source: "iana", + extensions: ["u3d"] + }, + "model/vnd.bary": { + source: "iana", + extensions: ["bary"] + }, + "model/vnd.cld": { + source: "iana", + extensions: ["cld"] + }, + "model/vnd.collada+xml": { + source: "iana", + compressible: true, + extensions: ["dae"] + }, + "model/vnd.dwf": { + source: "iana", + extensions: ["dwf"] + }, + "model/vnd.flatland.3dml": { + source: "iana" + }, + "model/vnd.gdl": { + source: "iana", + extensions: ["gdl"] + }, + "model/vnd.gs-gdl": { + source: "apache" + }, + "model/vnd.gs.gdl": { + source: "iana" + }, + "model/vnd.gtw": { + source: "iana", + extensions: ["gtw"] + }, + "model/vnd.moml+xml": { + source: "iana", + compressible: true + }, + "model/vnd.mts": { + source: "iana", + extensions: ["mts"] + }, + "model/vnd.opengex": { + source: "iana", + extensions: ["ogex"] + }, + "model/vnd.parasolid.transmit.binary": { + source: "iana", + extensions: ["x_b"] + }, + "model/vnd.parasolid.transmit.text": { + source: "iana", + extensions: ["x_t"] + }, + "model/vnd.pytha.pyox": { + source: "iana", + extensions: ["pyo", "pyox"] + }, + "model/vnd.rosette.annotated-data-model": { + source: "iana" + }, + "model/vnd.sap.vds": { + source: "iana", + extensions: ["vds"] + }, + "model/vnd.usda": { + source: "iana", + extensions: ["usda"] + }, + "model/vnd.usdz+zip": { + source: "iana", + compressible: false, + extensions: ["usdz"] + }, + "model/vnd.valve.source.compiled-map": { + source: "iana", + extensions: ["bsp"] + }, + "model/vnd.vtu": { + source: "iana", + extensions: ["vtu"] + }, + "model/vrml": { + source: "iana", + compressible: false, + extensions: ["wrl", "vrml"] + }, + "model/x3d+binary": { + source: "apache", + compressible: false, + extensions: ["x3db", "x3dbz"] + }, + "model/x3d+fastinfoset": { + source: "iana", + extensions: ["x3db"] + }, + "model/x3d+vrml": { + source: "apache", + compressible: false, + extensions: ["x3dv", "x3dvz"] + }, + "model/x3d+xml": { + source: "iana", + compressible: true, + extensions: ["x3d", "x3dz"] + }, + "model/x3d-vrml": { + source: "iana", + extensions: ["x3dv"] + }, + "multipart/alternative": { + source: "iana", + compressible: false + }, + "multipart/appledouble": { + source: "iana" + }, + "multipart/byteranges": { + source: "iana" + }, + "multipart/digest": { + source: "iana" + }, + "multipart/encrypted": { + source: "iana", + compressible: false + }, + "multipart/form-data": { + source: "iana", + compressible: false + }, + "multipart/header-set": { + source: "iana" + }, + "multipart/mixed": { + source: "iana" + }, + "multipart/multilingual": { + source: "iana" + }, + "multipart/parallel": { + source: "iana" + }, + "multipart/related": { + source: "iana", + compressible: false + }, + "multipart/report": { + source: "iana" + }, + "multipart/signed": { + source: "iana", + compressible: false + }, + "multipart/vnd.bint.med-plus": { + source: "iana" + }, + "multipart/voice-message": { + source: "iana" + }, + "multipart/x-mixed-replace": { + source: "iana" + }, + "text/1d-interleaved-parityfec": { + source: "iana" + }, + "text/cache-manifest": { + source: "iana", + compressible: true, + extensions: ["appcache", "manifest"] + }, + "text/calendar": { + source: "iana", + extensions: ["ics", "ifb"] + }, + "text/calender": { + compressible: true + }, + "text/cmd": { + compressible: true + }, + "text/coffeescript": { + extensions: ["coffee", "litcoffee"] + }, + "text/cql": { + source: "iana" + }, + "text/cql-expression": { + source: "iana" + }, + "text/cql-identifier": { + source: "iana" + }, + "text/css": { + source: "iana", + charset: "UTF-8", + compressible: true, + extensions: ["css"] + }, + "text/csv": { + source: "iana", + compressible: true, + extensions: ["csv"] + }, + "text/csv-schema": { + source: "iana" + }, + "text/directory": { + source: "iana" + }, + "text/dns": { + source: "iana" + }, + "text/ecmascript": { + source: "apache" + }, + "text/encaprtp": { + source: "iana" + }, + "text/enriched": { + source: "iana" + }, + "text/fhirpath": { + source: "iana" + }, + "text/flexfec": { + source: "iana" + }, + "text/fwdred": { + source: "iana" + }, + "text/gff3": { + source: "iana" + }, + "text/grammar-ref-list": { + source: "iana" + }, + "text/hl7v2": { + source: "iana" + }, + "text/html": { + source: "iana", + compressible: true, + extensions: ["html", "htm", "shtml"] + }, + "text/jade": { + extensions: ["jade"] + }, + "text/javascript": { + source: "iana", + charset: "UTF-8", + compressible: true, + extensions: ["js", "mjs"] + }, + "text/jcr-cnd": { + source: "iana" + }, + "text/jsx": { + compressible: true, + extensions: ["jsx"] + }, + "text/less": { + compressible: true, + extensions: ["less"] + }, + "text/markdown": { + source: "iana", + compressible: true, + extensions: ["md", "markdown"] + }, + "text/mathml": { + source: "nginx", + extensions: ["mml"] + }, + "text/mdx": { + compressible: true, + extensions: ["mdx"] + }, + "text/mizar": { + source: "iana" + }, + "text/n3": { + source: "iana", + charset: "UTF-8", + compressible: true, + extensions: ["n3"] + }, + "text/parameters": { + source: "iana", + charset: "UTF-8" + }, + "text/parityfec": { + source: "iana" + }, + "text/plain": { + source: "iana", + compressible: true, + extensions: ["txt", "text", "conf", "def", "list", "log", "in", "ini"] + }, + "text/provenance-notation": { + source: "iana", + charset: "UTF-8" + }, + "text/prs.fallenstein.rst": { + source: "iana" + }, + "text/prs.lines.tag": { + source: "iana", + extensions: ["dsc"] + }, + "text/prs.prop.logic": { + source: "iana" + }, + "text/prs.texi": { + source: "iana" + }, + "text/raptorfec": { + source: "iana" + }, + "text/red": { + source: "iana" + }, + "text/rfc822-headers": { + source: "iana" + }, + "text/richtext": { + source: "iana", + compressible: true, + extensions: ["rtx"] + }, + "text/rtf": { + source: "iana", + compressible: true, + extensions: ["rtf"] + }, + "text/rtp-enc-aescm128": { + source: "iana" + }, + "text/rtploopback": { + source: "iana" + }, + "text/rtx": { + source: "iana" + }, + "text/sgml": { + source: "iana", + extensions: ["sgml", "sgm"] + }, + "text/shaclc": { + source: "iana" + }, + "text/shex": { + source: "iana", + extensions: ["shex"] + }, + "text/slim": { + extensions: ["slim", "slm"] + }, + "text/spdx": { + source: "iana", + extensions: ["spdx"] + }, + "text/strings": { + source: "iana" + }, + "text/stylus": { + extensions: ["stylus", "styl"] + }, + "text/t140": { + source: "iana" + }, + "text/tab-separated-values": { + source: "iana", + compressible: true, + extensions: ["tsv"] + }, + "text/troff": { + source: "iana", + extensions: ["t", "tr", "roff", "man", "me", "ms"] + }, + "text/turtle": { + source: "iana", + charset: "UTF-8", + extensions: ["ttl"] + }, + "text/ulpfec": { + source: "iana" + }, + "text/uri-list": { + source: "iana", + compressible: true, + extensions: ["uri", "uris", "urls"] + }, + "text/vcard": { + source: "iana", + compressible: true, + extensions: ["vcard"] + }, + "text/vnd.a": { + source: "iana" + }, + "text/vnd.abc": { + source: "iana" + }, + "text/vnd.ascii-art": { + source: "iana" + }, + "text/vnd.curl": { + source: "iana", + extensions: ["curl"] + }, + "text/vnd.curl.dcurl": { + source: "apache", + extensions: ["dcurl"] + }, + "text/vnd.curl.mcurl": { + source: "apache", + extensions: ["mcurl"] + }, + "text/vnd.curl.scurl": { + source: "apache", + extensions: ["scurl"] + }, + "text/vnd.debian.copyright": { + source: "iana", + charset: "UTF-8" + }, + "text/vnd.dmclientscript": { + source: "iana" + }, + "text/vnd.dvb.subtitle": { + source: "iana", + extensions: ["sub"] + }, + "text/vnd.esmertec.theme-descriptor": { + source: "iana", + charset: "UTF-8" + }, + "text/vnd.exchangeable": { + source: "iana" + }, + "text/vnd.familysearch.gedcom": { + source: "iana", + extensions: ["ged"] + }, + "text/vnd.ficlab.flt": { + source: "iana" + }, + "text/vnd.fly": { + source: "iana", + extensions: ["fly"] + }, + "text/vnd.fmi.flexstor": { + source: "iana", + extensions: ["flx"] + }, + "text/vnd.gml": { + source: "iana" + }, + "text/vnd.graphviz": { + source: "iana", + extensions: ["gv"] + }, + "text/vnd.hans": { + source: "iana" + }, + "text/vnd.hgl": { + source: "iana" + }, + "text/vnd.in3d.3dml": { + source: "iana", + extensions: ["3dml"] + }, + "text/vnd.in3d.spot": { + source: "iana", + extensions: ["spot"] + }, + "text/vnd.iptc.newsml": { + source: "iana" + }, + "text/vnd.iptc.nitf": { + source: "iana" + }, + "text/vnd.latex-z": { + source: "iana" + }, + "text/vnd.motorola.reflex": { + source: "iana" + }, + "text/vnd.ms-mediapackage": { + source: "iana" + }, + "text/vnd.net2phone.commcenter.command": { + source: "iana" + }, + "text/vnd.radisys.msml-basic-layout": { + source: "iana" + }, + "text/vnd.senx.warpscript": { + source: "iana" + }, + "text/vnd.si.uricatalogue": { + source: "apache" + }, + "text/vnd.sosi": { + source: "iana" + }, + "text/vnd.sun.j2me.app-descriptor": { + source: "iana", + charset: "UTF-8", + extensions: ["jad"] + }, + "text/vnd.trolltech.linguist": { + source: "iana", + charset: "UTF-8" + }, + "text/vnd.vcf": { + source: "iana" + }, + "text/vnd.wap.si": { + source: "iana" + }, + "text/vnd.wap.sl": { + source: "iana" + }, + "text/vnd.wap.wml": { + source: "iana", + extensions: ["wml"] + }, + "text/vnd.wap.wmlscript": { + source: "iana", + extensions: ["wmls"] + }, + "text/vnd.zoo.kcl": { + source: "iana" + }, + "text/vtt": { + source: "iana", + charset: "UTF-8", + compressible: true, + extensions: ["vtt"] + }, + "text/wgsl": { + source: "iana", + extensions: ["wgsl"] + }, + "text/x-asm": { + source: "apache", + extensions: ["s", "asm"] + }, + "text/x-c": { + source: "apache", + extensions: ["c", "cc", "cxx", "cpp", "h", "hh", "dic"] + }, + "text/x-component": { + source: "nginx", + extensions: ["htc"] + }, + "text/x-fortran": { + source: "apache", + extensions: ["f", "for", "f77", "f90"] + }, + "text/x-gwt-rpc": { + compressible: true + }, + "text/x-handlebars-template": { + extensions: ["hbs"] + }, + "text/x-java-source": { + source: "apache", + extensions: ["java"] + }, + "text/x-jquery-tmpl": { + compressible: true + }, + "text/x-lua": { + extensions: ["lua"] + }, + "text/x-markdown": { + compressible: true, + extensions: ["mkd"] + }, + "text/x-nfo": { + source: "apache", + extensions: ["nfo"] + }, + "text/x-opml": { + source: "apache", + extensions: ["opml"] + }, + "text/x-org": { + compressible: true, + extensions: ["org"] + }, + "text/x-pascal": { + source: "apache", + extensions: ["p", "pas"] + }, + "text/x-processing": { + compressible: true, + extensions: ["pde"] + }, + "text/x-sass": { + extensions: ["sass"] + }, + "text/x-scss": { + extensions: ["scss"] + }, + "text/x-setext": { + source: "apache", + extensions: ["etx"] + }, + "text/x-sfv": { + source: "apache", + extensions: ["sfv"] + }, + "text/x-suse-ymp": { + compressible: true, + extensions: ["ymp"] + }, + "text/x-uuencode": { + source: "apache", + extensions: ["uu"] + }, + "text/x-vcalendar": { + source: "apache", + extensions: ["vcs"] + }, + "text/x-vcard": { + source: "apache", + extensions: ["vcf"] + }, + "text/xml": { + source: "iana", + compressible: true, + extensions: ["xml"] + }, + "text/xml-external-parsed-entity": { + source: "iana" + }, + "text/yaml": { + compressible: true, + extensions: ["yaml", "yml"] + }, + "video/1d-interleaved-parityfec": { + source: "iana" + }, + "video/3gpp": { + source: "iana", + extensions: ["3gp", "3gpp"] + }, + "video/3gpp-tt": { + source: "iana" + }, + "video/3gpp2": { + source: "iana", + extensions: ["3g2"] + }, + "video/av1": { + source: "iana" + }, + "video/bmpeg": { + source: "iana" + }, + "video/bt656": { + source: "iana" + }, + "video/celb": { + source: "iana" + }, + "video/dv": { + source: "iana" + }, + "video/encaprtp": { + source: "iana" + }, + "video/evc": { + source: "iana" + }, + "video/ffv1": { + source: "iana" + }, + "video/flexfec": { + source: "iana" + }, + "video/h261": { + source: "iana", + extensions: ["h261"] + }, + "video/h263": { + source: "iana", + extensions: ["h263"] + }, + "video/h263-1998": { + source: "iana" + }, + "video/h263-2000": { + source: "iana" + }, + "video/h264": { + source: "iana", + extensions: ["h264"] + }, + "video/h264-rcdo": { + source: "iana" + }, + "video/h264-svc": { + source: "iana" + }, + "video/h265": { + source: "iana" + }, + "video/h266": { + source: "iana" + }, + "video/iso.segment": { + source: "iana", + extensions: ["m4s"] + }, + "video/jpeg": { + source: "iana", + extensions: ["jpgv"] + }, + "video/jpeg2000": { + source: "iana" + }, + "video/jpm": { + source: "apache", + extensions: ["jpm", "jpgm"] + }, + "video/jxsv": { + source: "iana" + }, + "video/lottie+json": { + source: "iana", + compressible: true + }, + "video/matroska": { + source: "iana" + }, + "video/matroska-3d": { + source: "iana" + }, + "video/mj2": { + source: "iana", + extensions: ["mj2", "mjp2"] + }, + "video/mp1s": { + source: "iana" + }, + "video/mp2p": { + source: "iana" + }, + "video/mp2t": { + source: "iana", + extensions: ["ts", "m2t", "m2ts", "mts"] + }, + "video/mp4": { + source: "iana", + compressible: false, + extensions: ["mp4", "mp4v", "mpg4"] + }, + "video/mp4v-es": { + source: "iana" + }, + "video/mpeg": { + source: "iana", + compressible: false, + extensions: ["mpeg", "mpg", "mpe", "m1v", "m2v"] + }, + "video/mpeg4-generic": { + source: "iana" + }, + "video/mpv": { + source: "iana" + }, + "video/nv": { + source: "iana" + }, + "video/ogg": { + source: "iana", + compressible: false, + extensions: ["ogv"] + }, + "video/parityfec": { + source: "iana" + }, + "video/pointer": { + source: "iana" + }, + "video/quicktime": { + source: "iana", + compressible: false, + extensions: ["qt", "mov"] + }, + "video/raptorfec": { + source: "iana" + }, + "video/raw": { + source: "iana" + }, + "video/rtp-enc-aescm128": { + source: "iana" + }, + "video/rtploopback": { + source: "iana" + }, + "video/rtx": { + source: "iana" + }, + "video/scip": { + source: "iana" + }, + "video/smpte291": { + source: "iana" + }, + "video/smpte292m": { + source: "iana" + }, + "video/ulpfec": { + source: "iana" + }, + "video/vc1": { + source: "iana" + }, + "video/vc2": { + source: "iana" + }, + "video/vnd.cctv": { + source: "iana" + }, + "video/vnd.dece.hd": { + source: "iana", + extensions: ["uvh", "uvvh"] + }, + "video/vnd.dece.mobile": { + source: "iana", + extensions: ["uvm", "uvvm"] + }, + "video/vnd.dece.mp4": { + source: "iana" + }, + "video/vnd.dece.pd": { + source: "iana", + extensions: ["uvp", "uvvp"] + }, + "video/vnd.dece.sd": { + source: "iana", + extensions: ["uvs", "uvvs"] + }, + "video/vnd.dece.video": { + source: "iana", + extensions: ["uvv", "uvvv"] + }, + "video/vnd.directv.mpeg": { + source: "iana" + }, + "video/vnd.directv.mpeg-tts": { + source: "iana" + }, + "video/vnd.dlna.mpeg-tts": { + source: "iana" + }, + "video/vnd.dvb.file": { + source: "iana", + extensions: ["dvb"] + }, + "video/vnd.fvt": { + source: "iana", + extensions: ["fvt"] + }, + "video/vnd.hns.video": { + source: "iana" + }, + "video/vnd.iptvforum.1dparityfec-1010": { + source: "iana" + }, + "video/vnd.iptvforum.1dparityfec-2005": { + source: "iana" + }, + "video/vnd.iptvforum.2dparityfec-1010": { + source: "iana" + }, + "video/vnd.iptvforum.2dparityfec-2005": { + source: "iana" + }, + "video/vnd.iptvforum.ttsavc": { + source: "iana" + }, + "video/vnd.iptvforum.ttsmpeg2": { + source: "iana" + }, + "video/vnd.motorola.video": { + source: "iana" + }, + "video/vnd.motorola.videop": { + source: "iana" + }, + "video/vnd.mpegurl": { + source: "iana", + extensions: ["mxu", "m4u"] + }, + "video/vnd.ms-playready.media.pyv": { + source: "iana", + extensions: ["pyv"] + }, + "video/vnd.nokia.interleaved-multimedia": { + source: "iana" + }, + "video/vnd.nokia.mp4vr": { + source: "iana" + }, + "video/vnd.nokia.videovoip": { + source: "iana" + }, + "video/vnd.objectvideo": { + source: "iana" + }, + "video/vnd.planar": { + source: "iana" + }, + "video/vnd.radgamettools.bink": { + source: "iana" + }, + "video/vnd.radgamettools.smacker": { + source: "apache" + }, + "video/vnd.sealed.mpeg1": { + source: "iana" + }, + "video/vnd.sealed.mpeg4": { + source: "iana" + }, + "video/vnd.sealed.swf": { + source: "iana" + }, + "video/vnd.sealedmedia.softseal.mov": { + source: "iana" + }, + "video/vnd.uvvu.mp4": { + source: "iana", + extensions: ["uvu", "uvvu"] + }, + "video/vnd.vivo": { + source: "iana", + extensions: ["viv"] + }, + "video/vnd.youtube.yt": { + source: "iana" + }, + "video/vp8": { + source: "iana" + }, + "video/vp9": { + source: "iana" + }, + "video/webm": { + source: "apache", + compressible: false, + extensions: ["webm"] + }, + "video/x-f4v": { + source: "apache", + extensions: ["f4v"] + }, + "video/x-fli": { + source: "apache", + extensions: ["fli"] + }, + "video/x-flv": { + source: "apache", + compressible: false, + extensions: ["flv"] + }, + "video/x-m4v": { + source: "apache", + extensions: ["m4v"] + }, + "video/x-matroska": { + source: "apache", + compressible: false, + extensions: ["mkv", "mk3d", "mks"] + }, + "video/x-mng": { + source: "apache", + extensions: ["mng"] + }, + "video/x-ms-asf": { + source: "apache", + extensions: ["asf", "asx"] + }, + "video/x-ms-vob": { + source: "apache", + extensions: ["vob"] + }, + "video/x-ms-wm": { + source: "apache", + extensions: ["wm"] + }, + "video/x-ms-wmv": { + source: "apache", + compressible: false, + extensions: ["wmv"] + }, + "video/x-ms-wmx": { + source: "apache", + extensions: ["wmx"] + }, + "video/x-ms-wvx": { + source: "apache", + extensions: ["wvx"] + }, + "video/x-msvideo": { + source: "apache", + extensions: ["avi"] + }, + "video/x-sgi-movie": { + source: "apache", + extensions: ["movie"] + }, + "video/x-smv": { + source: "apache", + extensions: ["smv"] + }, + "x-conference/x-cooltalk": { + source: "apache", + extensions: ["ice"] + }, + "x-shader/x-fragment": { + compressible: true + }, + "x-shader/x-vertex": { + compressible: true + } + }; + } +}); + +// node_modules/mime-db/index.js +var require_mime_db = __commonJS({ + "node_modules/mime-db/index.js"(exports2, module2) { + module2.exports = require_db(); + } +}); + +// node_modules/mime-types/mimeScore.js +var require_mimeScore = __commonJS({ + "node_modules/mime-types/mimeScore.js"(exports2, module2) { + var FACET_SCORES = { + "prs.": 100, + "x-": 200, + "x.": 300, + "vnd.": 400, + default: 900 + }; + var SOURCE_SCORES = { + nginx: 10, + apache: 20, + iana: 40, + default: 30 + // definitions added by `jshttp/mime-db` project? + }; + var TYPE_SCORES = { + // prefer application/xml over text/xml + // prefer application/rtf over text/rtf + application: 1, + // prefer font/woff over application/font-woff + font: 2, + // prefer video/mp4 over audio/mp4 over application/mp4 + // See https://www.rfc-editor.org/rfc/rfc4337.html#section-2 + audio: 2, + video: 3, + default: 0 + }; + module2.exports = function mimeScore(mimeType, source = "default") { + if (mimeType === "application/octet-stream") { + return 0; + } + const [type, subtype] = mimeType.split("/"); + const facet = subtype.replace(/(\.|x-).*/, "$1"); + const facetScore = FACET_SCORES[facet] || FACET_SCORES.default; + const sourceScore = SOURCE_SCORES[source] || SOURCE_SCORES.default; + const typeScore = TYPE_SCORES[type] || TYPE_SCORES.default; + const lengthScore = 1 - mimeType.length / 100; + return facetScore + sourceScore + typeScore + lengthScore; + }; + } +}); + +// node_modules/mime-types/index.js +var require_mime_types = __commonJS({ + "node_modules/mime-types/index.js"(exports2) { + "use strict"; + var db = require_mime_db(); + var extname = require("path").extname; + var mimeScore = require_mimeScore(); + var EXTRACT_TYPE_REGEXP = /^\s*([^;\s]*)(?:;|\s|$)/; + var TEXT_TYPE_REGEXP = /^text\//i; + exports2.charset = charset; + exports2.charsets = { lookup: charset }; + exports2.contentType = contentType; + exports2.extension = extension; + exports2.extensions = /* @__PURE__ */ Object.create(null); + exports2.lookup = lookup; + exports2.types = /* @__PURE__ */ Object.create(null); + exports2._extensionConflicts = []; + populateMaps(exports2.extensions, exports2.types); + function charset(type) { + if (!type || typeof type !== "string") { + return false; + } + var match = EXTRACT_TYPE_REGEXP.exec(type); + var mime = match && db[match[1].toLowerCase()]; + if (mime && mime.charset) { + return mime.charset; + } + if (match && TEXT_TYPE_REGEXP.test(match[1])) { + return "UTF-8"; + } + return false; + } + function contentType(str) { + if (!str || typeof str !== "string") { + return false; + } + var mime = str.indexOf("/") === -1 ? exports2.lookup(str) : str; + if (!mime) { + return false; + } + if (mime.indexOf("charset") === -1) { + var charset2 = exports2.charset(mime); + if (charset2) mime += "; charset=" + charset2.toLowerCase(); + } + return mime; + } + function extension(type) { + if (!type || typeof type !== "string") { + return false; + } + var match = EXTRACT_TYPE_REGEXP.exec(type); + var exts = match && exports2.extensions[match[1].toLowerCase()]; + if (!exts || !exts.length) { + return false; + } + return exts[0]; + } + function lookup(path9) { + if (!path9 || typeof path9 !== "string") { + return false; + } + var extension2 = extname("x." + path9).toLowerCase().slice(1); + if (!extension2) { + return false; + } + return exports2.types[extension2] || false; + } + function populateMaps(extensions, types) { + Object.keys(db).forEach(function forEachMimeType(type) { + var mime = db[type]; + var exts = mime.extensions; + if (!exts || !exts.length) { + return; + } + extensions[type] = exts; + for (var i = 0; i < exts.length; i++) { + var extension2 = exts[i]; + types[extension2] = _preferredType(extension2, types[extension2], type); + const legacyType = _preferredTypeLegacy( + extension2, + types[extension2], + type + ); + if (legacyType !== types[extension2]) { + exports2._extensionConflicts.push([extension2, legacyType, types[extension2]]); + } + } + }); + } + function _preferredType(ext, type0, type1) { + var score0 = type0 ? mimeScore(type0, db[type0].source) : 0; + var score1 = type1 ? mimeScore(type1, db[type1].source) : 0; + return score0 > score1 ? type0 : type1; + } + function _preferredTypeLegacy(ext, type0, type1) { + var SOURCE_RANK = ["nginx", "apache", void 0, "iana"]; + var score0 = type0 ? SOURCE_RANK.indexOf(db[type0].source) : 0; + var score1 = type1 ? SOURCE_RANK.indexOf(db[type1].source) : 0; + if (exports2.types[extension] !== "application/octet-stream" && (score0 > score1 || score0 === score1 && exports2.types[extension]?.slice(0, 12) === "application/")) { + return type0; + } + return score0 > score1 ? type0 : type1; + } + } +}); + +// node_modules/media-typer/index.js +var require_media_typer = __commonJS({ + "node_modules/media-typer/index.js"(exports2) { + "use strict"; + var SUBTYPE_NAME_REGEXP = /^[A-Za-z0-9][A-Za-z0-9!#$&^_.-]{0,126}$/; + var TYPE_NAME_REGEXP = /^[A-Za-z0-9][A-Za-z0-9!#$&^_-]{0,126}$/; + var TYPE_REGEXP = /^ *([A-Za-z0-9][A-Za-z0-9!#$&^_-]{0,126})\/([A-Za-z0-9][A-Za-z0-9!#$&^_.+-]{0,126}) *$/; + exports2.format = format; + exports2.parse = parse4; + exports2.test = test; + function format(obj) { + if (!obj || typeof obj !== "object") { + throw new TypeError("argument obj is required"); + } + var subtype = obj.subtype; + var suffix = obj.suffix; + var type = obj.type; + if (!type || !TYPE_NAME_REGEXP.test(type)) { + throw new TypeError("invalid type"); + } + if (!subtype || !SUBTYPE_NAME_REGEXP.test(subtype)) { + throw new TypeError("invalid subtype"); + } + var string4 = type + "/" + subtype; + if (suffix) { + if (!TYPE_NAME_REGEXP.test(suffix)) { + throw new TypeError("invalid suffix"); + } + string4 += "+" + suffix; + } + return string4; + } + function test(string4) { + if (!string4) { + throw new TypeError("argument string is required"); + } + if (typeof string4 !== "string") { + throw new TypeError("argument string is required to be a string"); + } + return TYPE_REGEXP.test(string4.toLowerCase()); + } + function parse4(string4) { + if (!string4) { + throw new TypeError("argument string is required"); + } + if (typeof string4 !== "string") { + throw new TypeError("argument string is required to be a string"); + } + var match = TYPE_REGEXP.exec(string4.toLowerCase()); + if (!match) { + throw new TypeError("invalid media type"); + } + var type = match[1]; + var subtype = match[2]; + var suffix; + var index = subtype.lastIndexOf("+"); + if (index !== -1) { + suffix = subtype.substr(index + 1); + subtype = subtype.substr(0, index); + } + return new MediaType(type, subtype, suffix); + } + function MediaType(type, subtype, suffix) { + this.type = type; + this.subtype = subtype; + this.suffix = suffix; + } + } +}); + +// node_modules/type-is/index.js +var require_type_is = __commonJS({ + "node_modules/type-is/index.js"(exports2, module2) { + "use strict"; + var contentType = require_content_type(); + var mime = require_mime_types(); + var typer = require_media_typer(); + module2.exports = typeofrequest; + module2.exports.is = typeis; + module2.exports.hasBody = hasbody; + module2.exports.normalize = normalize; + module2.exports.match = mimeMatch; + function typeis(value, types_) { + var i; + var types = types_; + var val = tryNormalizeType(value); + if (!val) { + return false; + } + if (types && !Array.isArray(types)) { + types = new Array(arguments.length - 1); + for (i = 0; i < types.length; i++) { + types[i] = arguments[i + 1]; + } + } + if (!types || !types.length) { + return val; + } + var type; + for (i = 0; i < types.length; i++) { + if (mimeMatch(normalize(type = types[i]), val)) { + return type[0] === "+" || type.indexOf("*") !== -1 ? val : type; + } + } + return false; + } + function hasbody(req) { + return req.headers["transfer-encoding"] !== void 0 || !isNaN(req.headers["content-length"]); + } + function typeofrequest(req, types_) { + if (!hasbody(req)) return null; + var types = arguments.length > 2 ? Array.prototype.slice.call(arguments, 1) : types_; + var value = req.headers["content-type"]; + return typeis(value, types); + } + function normalize(type) { + if (typeof type !== "string") { + return false; + } + switch (type) { + case "urlencoded": + return "application/x-www-form-urlencoded"; + case "multipart": + return "multipart/*"; + } + if (type[0] === "+") { + return "*/*" + type; + } + return type.indexOf("/") === -1 ? mime.lookup(type) : type; + } + function mimeMatch(expected, actual) { + if (expected === false) { + return false; + } + var actualParts = actual.split("/"); + var expectedParts = expected.split("/"); + if (actualParts.length !== 2 || expectedParts.length !== 2) { + return false; + } + if (expectedParts[0] !== "*" && expectedParts[0] !== actualParts[0]) { + return false; + } + if (expectedParts[1].slice(0, 2) === "*+") { + return expectedParts[1].length <= actualParts[1].length + 1 && expectedParts[1].slice(1) === actualParts[1].slice(1 - expectedParts[1].length); + } + if (expectedParts[1] !== "*" && expectedParts[1] !== actualParts[1]) { + return false; + } + return true; + } + function normalizeType(value) { + var type = contentType.parse(value).type; + return typer.test(type) ? type : null; + } + function tryNormalizeType(value) { + try { + return value ? normalizeType(value) : null; + } catch (err) { + return null; + } + } + } +}); + +// node_modules/body-parser/lib/utils.js +var require_utils2 = __commonJS({ + "node_modules/body-parser/lib/utils.js"(exports2, module2) { + "use strict"; + var bytes = require_bytes(); + var contentType = require_content_type(); + var typeis = require_type_is(); + module2.exports = { + getCharset, + normalizeOptions, + passthrough + }; + function getCharset(req) { + try { + return (contentType.parse(req).parameters.charset || "").toLowerCase(); + } catch { + return void 0; + } + } + function typeChecker(type) { + return function checkType(req) { + return Boolean(typeis(req, type)); + }; + } + function normalizeOptions(options, defaultType) { + if (!defaultType) { + throw new TypeError("defaultType must be provided"); + } + var inflate = options?.inflate !== false; + var limit = typeof options?.limit !== "number" ? bytes.parse(options?.limit || "100kb") : options?.limit; + var type = options?.type || defaultType; + var verify = options?.verify || false; + var defaultCharset = options?.defaultCharset || "utf-8"; + if (verify !== false && typeof verify !== "function") { + throw new TypeError("option verify must be function"); + } + var shouldParse = typeof type !== "function" ? typeChecker(type) : type; + return { + inflate, + limit, + verify, + defaultCharset, + shouldParse + }; + } + function passthrough(value) { + return value; + } + } +}); + +// node_modules/body-parser/lib/read.js +var require_read = __commonJS({ + "node_modules/body-parser/lib/read.js"(exports2, module2) { + "use strict"; + var createError = require_http_errors(); + var getBody = require_raw_body(); + var iconv = require_lib(); + var onFinished = require_on_finished(); + var zlib2 = require("node:zlib"); + var hasBody = require_type_is().hasBody; + var { getCharset } = require_utils2(); + module2.exports = read; + function read(req, res, next, parse4, debug, options) { + if (onFinished.isFinished(req)) { + debug("body already parsed"); + next(); + return; + } + if (!("body" in req)) { + req.body = void 0; + } + if (!hasBody(req)) { + debug("skip empty body"); + next(); + return; + } + debug("content-type %j", req.headers["content-type"]); + if (!options.shouldParse(req)) { + debug("skip parsing"); + next(); + return; + } + var encoding = null; + if (options?.skipCharset !== true) { + encoding = getCharset(req) || options.defaultCharset; + if (!!options?.isValidCharset && !options.isValidCharset(encoding)) { + debug("invalid charset"); + next(createError(415, 'unsupported charset "' + encoding.toUpperCase() + '"', { + charset: encoding, + type: "charset.unsupported" + })); + return; + } + } + var length; + var opts = options; + var stream; + var verify = opts.verify; + try { + stream = contentstream(req, debug, opts.inflate); + length = stream.length; + stream.length = void 0; + } catch (err) { + return next(err); + } + opts.length = length; + opts.encoding = verify ? null : encoding; + if (opts.encoding === null && encoding !== null && !iconv.encodingExists(encoding)) { + return next(createError(415, 'unsupported charset "' + encoding.toUpperCase() + '"', { + charset: encoding.toLowerCase(), + type: "charset.unsupported" + })); + } + debug("read body"); + getBody(stream, opts, function(error2, body) { + if (error2) { + var _error; + if (error2.type === "encoding.unsupported") { + _error = createError(415, 'unsupported charset "' + encoding.toUpperCase() + '"', { + charset: encoding.toLowerCase(), + type: "charset.unsupported" + }); + } else { + _error = createError(400, error2); + } + if (stream !== req) { + req.unpipe(); + stream.destroy(); + } + dump(req, function onfinished() { + next(createError(400, _error)); + }); + return; + } + if (verify) { + try { + debug("verify body"); + verify(req, res, body, encoding); + } catch (err) { + next(createError(403, err, { + body, + type: err.type || "entity.verify.failed" + })); + return; + } + } + var str = body; + try { + debug("parse body"); + str = typeof body !== "string" && encoding !== null ? iconv.decode(body, encoding) : body; + req.body = parse4(str, encoding); + } catch (err) { + next(createError(400, err, { + body: str, + type: err.type || "entity.parse.failed" + })); + return; + } + next(); + }); + } + function contentstream(req, debug, inflate) { + var encoding = (req.headers["content-encoding"] || "identity").toLowerCase(); + var length = req.headers["content-length"]; + debug('content-encoding "%s"', encoding); + if (inflate === false && encoding !== "identity") { + throw createError(415, "content encoding unsupported", { + encoding, + type: "encoding.unsupported" + }); + } + if (encoding === "identity") { + req.length = length; + return req; + } + var stream = createDecompressionStream(encoding, debug); + req.pipe(stream); + return stream; + } + function createDecompressionStream(encoding, debug) { + switch (encoding) { + case "deflate": + debug("inflate body"); + return zlib2.createInflate(); + case "gzip": + debug("gunzip body"); + return zlib2.createGunzip(); + case "br": + debug("brotli decompress body"); + return zlib2.createBrotliDecompress(); + default: + throw createError(415, 'unsupported content encoding "' + encoding + '"', { + encoding, + type: "encoding.unsupported" + }); + } + } + function dump(req, callback) { + if (onFinished.isFinished(req)) { + callback(null); + } else { + onFinished(req, callback); + req.resume(); + } + } + } +}); + +// node_modules/body-parser/lib/types/json.js +var require_json2 = __commonJS({ + "node_modules/body-parser/lib/types/json.js"(exports2, module2) { + "use strict"; + var debug = require_src()("body-parser:json"); + var read = require_read(); + var { normalizeOptions } = require_utils2(); + module2.exports = json; + var FIRST_CHAR_REGEXP = /^[\x20\x09\x0a\x0d]*([^\x20\x09\x0a\x0d])/; + var JSON_SYNTAX_CHAR = "#"; + var JSON_SYNTAX_REGEXP = /#+/g; + function json(options) { + const normalizedOptions = normalizeOptions(options, "application/json"); + var reviver = options?.reviver; + var strict = options?.strict !== false; + function parse4(body) { + if (body.length === 0) { + return {}; + } + if (strict) { + var first = firstchar(body); + if (first !== "{" && first !== "[") { + debug("strict violation"); + throw createStrictSyntaxError(body, first); + } + } + try { + debug("parse json"); + return JSON.parse(body, reviver); + } catch (e) { + throw normalizeJsonSyntaxError(e, { + message: e.message, + stack: e.stack + }); + } + } + const readOptions = { + ...normalizedOptions, + // assert charset per RFC 7159 sec 8.1 + isValidCharset: (charset) => charset.slice(0, 4) === "utf-" + }; + return function jsonParser(req, res, next) { + read(req, res, next, parse4, debug, readOptions); + }; + } + function createStrictSyntaxError(str, char) { + var index = str.indexOf(char); + var partial2 = ""; + if (index !== -1) { + partial2 = str.substring(0, index) + JSON_SYNTAX_CHAR.repeat(str.length - index); + } + try { + JSON.parse(partial2); + throw new SyntaxError("strict violation"); + } catch (e) { + return normalizeJsonSyntaxError(e, { + message: e.message.replace(JSON_SYNTAX_REGEXP, function(placeholder) { + return str.substring(index, index + placeholder.length); + }), + stack: e.stack + }); + } + } + function firstchar(str) { + var match = FIRST_CHAR_REGEXP.exec(str); + return match ? match[1] : void 0; + } + function normalizeJsonSyntaxError(error2, obj) { + var keys = Object.getOwnPropertyNames(error2); + for (var i = 0; i < keys.length; i++) { + var key = keys[i]; + if (key !== "stack" && key !== "message") { + delete error2[key]; + } + } + error2.stack = obj.stack.replace(error2.message, obj.message); + error2.message = obj.message; + return error2; + } + } +}); + +// node_modules/body-parser/lib/types/raw.js +var require_raw = __commonJS({ + "node_modules/body-parser/lib/types/raw.js"(exports2, module2) { + "use strict"; + var debug = require_src()("body-parser:raw"); + var read = require_read(); + var { normalizeOptions, passthrough } = require_utils2(); + module2.exports = raw; + function raw(options) { + const normalizedOptions = normalizeOptions(options, "application/octet-stream"); + const readOptions = { + ...normalizedOptions, + // Skip charset validation and parse the body as is + skipCharset: true + }; + return function rawParser(req, res, next) { + read(req, res, next, passthrough, debug, readOptions); + }; + } + } +}); + +// node_modules/body-parser/lib/types/text.js +var require_text = __commonJS({ + "node_modules/body-parser/lib/types/text.js"(exports2, module2) { + "use strict"; + var debug = require_src()("body-parser:text"); + var read = require_read(); + var { normalizeOptions, passthrough } = require_utils2(); + module2.exports = text; + function text(options) { + const normalizedOptions = normalizeOptions(options, "text/plain"); + return function textParser(req, res, next) { + read(req, res, next, passthrough, debug, normalizedOptions); + }; + } + } +}); + +// node_modules/es-errors/type.js +var require_type = __commonJS({ + "node_modules/es-errors/type.js"(exports2, module2) { + "use strict"; + module2.exports = TypeError; + } +}); + +// node_modules/object-inspect/util.inspect.js +var require_util_inspect = __commonJS({ + "node_modules/object-inspect/util.inspect.js"(exports2, module2) { + module2.exports = require("util").inspect; + } +}); + +// node_modules/object-inspect/index.js +var require_object_inspect = __commonJS({ + "node_modules/object-inspect/index.js"(exports2, module2) { + var hasMap = typeof Map === "function" && Map.prototype; + var mapSizeDescriptor = Object.getOwnPropertyDescriptor && hasMap ? Object.getOwnPropertyDescriptor(Map.prototype, "size") : null; + var mapSize = hasMap && mapSizeDescriptor && typeof mapSizeDescriptor.get === "function" ? mapSizeDescriptor.get : null; + var mapForEach = hasMap && Map.prototype.forEach; + var hasSet = typeof Set === "function" && Set.prototype; + var setSizeDescriptor = Object.getOwnPropertyDescriptor && hasSet ? Object.getOwnPropertyDescriptor(Set.prototype, "size") : null; + var setSize = hasSet && setSizeDescriptor && typeof setSizeDescriptor.get === "function" ? setSizeDescriptor.get : null; + var setForEach = hasSet && Set.prototype.forEach; + var hasWeakMap = typeof WeakMap === "function" && WeakMap.prototype; + var weakMapHas = hasWeakMap ? WeakMap.prototype.has : null; + var hasWeakSet = typeof WeakSet === "function" && WeakSet.prototype; + var weakSetHas = hasWeakSet ? WeakSet.prototype.has : null; + var hasWeakRef = typeof WeakRef === "function" && WeakRef.prototype; + var weakRefDeref = hasWeakRef ? WeakRef.prototype.deref : null; + var booleanValueOf = Boolean.prototype.valueOf; + var objectToString = Object.prototype.toString; + var functionToString = Function.prototype.toString; + var $match = String.prototype.match; + var $slice = String.prototype.slice; + var $replace = String.prototype.replace; + var $toUpperCase = String.prototype.toUpperCase; + var $toLowerCase = String.prototype.toLowerCase; + var $test = RegExp.prototype.test; + var $concat = Array.prototype.concat; + var $join = Array.prototype.join; + var $arrSlice = Array.prototype.slice; + var $floor = Math.floor; + var bigIntValueOf = typeof BigInt === "function" ? BigInt.prototype.valueOf : null; + var gOPS = Object.getOwnPropertySymbols; + var symToString = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? Symbol.prototype.toString : null; + var hasShammedSymbols = typeof Symbol === "function" && typeof Symbol.iterator === "object"; + var toStringTag = typeof Symbol === "function" && Symbol.toStringTag && (typeof Symbol.toStringTag === hasShammedSymbols ? "object" : "symbol") ? Symbol.toStringTag : null; + var isEnumerable = Object.prototype.propertyIsEnumerable; + var gPO = (typeof Reflect === "function" ? Reflect.getPrototypeOf : Object.getPrototypeOf) || ([].__proto__ === Array.prototype ? function(O) { + return O.__proto__; + } : null); + function addNumericSeparator(num, str) { + if (num === Infinity || num === -Infinity || num !== num || num && num > -1e3 && num < 1e3 || $test.call(/e/, str)) { + return str; + } + var sepRegex = /[0-9](?=(?:[0-9]{3})+(?![0-9]))/g; + if (typeof num === "number") { + var int2 = num < 0 ? -$floor(-num) : $floor(num); + if (int2 !== num) { + var intStr = String(int2); + var dec = $slice.call(str, intStr.length + 1); + return $replace.call(intStr, sepRegex, "$&_") + "." + $replace.call($replace.call(dec, /([0-9]{3})/g, "$&_"), /_$/, ""); + } + } + return $replace.call(str, sepRegex, "$&_"); + } + var utilInspect = require_util_inspect(); + var inspectCustom = utilInspect.custom; + var inspectSymbol = isSymbol(inspectCustom) ? inspectCustom : null; + var quotes = { + __proto__: null, + "double": '"', + single: "'" + }; + var quoteREs = { + __proto__: null, + "double": /(["\\])/g, + single: /(['\\])/g + }; + module2.exports = function inspect_(obj, options, depth, seen) { + var opts = options || {}; + if (has(opts, "quoteStyle") && !has(quotes, opts.quoteStyle)) { + throw new TypeError('option "quoteStyle" must be "single" or "double"'); + } + if (has(opts, "maxStringLength") && (typeof opts.maxStringLength === "number" ? opts.maxStringLength < 0 && opts.maxStringLength !== Infinity : opts.maxStringLength !== null)) { + throw new TypeError('option "maxStringLength", if provided, must be a positive integer, Infinity, or `null`'); + } + var customInspect = has(opts, "customInspect") ? opts.customInspect : true; + if (typeof customInspect !== "boolean" && customInspect !== "symbol") { + throw new TypeError("option \"customInspect\", if provided, must be `true`, `false`, or `'symbol'`"); + } + if (has(opts, "indent") && opts.indent !== null && opts.indent !== " " && !(parseInt(opts.indent, 10) === opts.indent && opts.indent > 0)) { + throw new TypeError('option "indent" must be "\\t", an integer > 0, or `null`'); + } + if (has(opts, "numericSeparator") && typeof opts.numericSeparator !== "boolean") { + throw new TypeError('option "numericSeparator", if provided, must be `true` or `false`'); + } + var numericSeparator = opts.numericSeparator; + if (typeof obj === "undefined") { + return "undefined"; + } + if (obj === null) { + return "null"; + } + if (typeof obj === "boolean") { + return obj ? "true" : "false"; + } + if (typeof obj === "string") { + return inspectString(obj, opts); + } + if (typeof obj === "number") { + if (obj === 0) { + return Infinity / obj > 0 ? "0" : "-0"; + } + var str = String(obj); + return numericSeparator ? addNumericSeparator(obj, str) : str; + } + if (typeof obj === "bigint") { + var bigIntStr = String(obj) + "n"; + return numericSeparator ? addNumericSeparator(obj, bigIntStr) : bigIntStr; + } + var maxDepth = typeof opts.depth === "undefined" ? 5 : opts.depth; + if (typeof depth === "undefined") { + depth = 0; + } + if (depth >= maxDepth && maxDepth > 0 && typeof obj === "object") { + return isArray(obj) ? "[Array]" : "[Object]"; + } + var indent = getIndent(opts, depth); + if (typeof seen === "undefined") { + seen = []; + } else if (indexOf(seen, obj) >= 0) { + return "[Circular]"; + } + function inspect2(value, from, noIndent) { + if (from) { + seen = $arrSlice.call(seen); + seen.push(from); + } + if (noIndent) { + var newOpts = { + depth: opts.depth + }; + if (has(opts, "quoteStyle")) { + newOpts.quoteStyle = opts.quoteStyle; + } + return inspect_(value, newOpts, depth + 1, seen); + } + return inspect_(value, opts, depth + 1, seen); + } + if (typeof obj === "function" && !isRegExp(obj)) { + var name5 = nameOf(obj); + var keys = arrObjKeys(obj, inspect2); + return "[Function" + (name5 ? ": " + name5 : " (anonymous)") + "]" + (keys.length > 0 ? " { " + $join.call(keys, ", ") + " }" : ""); + } + if (isSymbol(obj)) { + var symString = hasShammedSymbols ? $replace.call(String(obj), /^(Symbol\(.*\))_[^)]*$/, "$1") : symToString.call(obj); + return typeof obj === "object" && !hasShammedSymbols ? markBoxed(symString) : symString; + } + if (isElement(obj)) { + var s = "<" + $toLowerCase.call(String(obj.nodeName)); + var attrs = obj.attributes || []; + for (var i = 0; i < attrs.length; i++) { + s += " " + attrs[i].name + "=" + wrapQuotes(quote(attrs[i].value), "double", opts); + } + s += ">"; + if (obj.childNodes && obj.childNodes.length) { + s += "..."; + } + s += ""; + return s; + } + if (isArray(obj)) { + if (obj.length === 0) { + return "[]"; + } + var xs = arrObjKeys(obj, inspect2); + if (indent && !singleLineValues(xs)) { + return "[" + indentedJoin(xs, indent) + "]"; + } + return "[ " + $join.call(xs, ", ") + " ]"; + } + if (isError3(obj)) { + var parts = arrObjKeys(obj, inspect2); + if (!("cause" in Error.prototype) && "cause" in obj && !isEnumerable.call(obj, "cause")) { + return "{ [" + String(obj) + "] " + $join.call($concat.call("[cause]: " + inspect2(obj.cause), parts), ", ") + " }"; + } + if (parts.length === 0) { + return "[" + String(obj) + "]"; + } + return "{ [" + String(obj) + "] " + $join.call(parts, ", ") + " }"; + } + if (typeof obj === "object" && customInspect) { + if (inspectSymbol && typeof obj[inspectSymbol] === "function" && utilInspect) { + return utilInspect(obj, { depth: maxDepth - depth }); + } else if (customInspect !== "symbol" && typeof obj.inspect === "function") { + return obj.inspect(); + } + } + if (isMap(obj)) { + var mapParts = []; + if (mapForEach) { + mapForEach.call(obj, function(value, key) { + mapParts.push(inspect2(key, obj, true) + " => " + inspect2(value, obj)); + }); + } + return collectionOf("Map", mapSize.call(obj), mapParts, indent); + } + if (isSet(obj)) { + var setParts = []; + if (setForEach) { + setForEach.call(obj, function(value) { + setParts.push(inspect2(value, obj)); + }); + } + return collectionOf("Set", setSize.call(obj), setParts, indent); + } + if (isWeakMap(obj)) { + return weakCollectionOf("WeakMap"); + } + if (isWeakSet(obj)) { + return weakCollectionOf("WeakSet"); + } + if (isWeakRef(obj)) { + return weakCollectionOf("WeakRef"); + } + if (isNumber(obj)) { + return markBoxed(inspect2(Number(obj))); + } + if (isBigInt(obj)) { + return markBoxed(inspect2(bigIntValueOf.call(obj))); + } + if (isBoolean(obj)) { + return markBoxed(booleanValueOf.call(obj)); + } + if (isString(obj)) { + return markBoxed(inspect2(String(obj))); + } + if (typeof window !== "undefined" && obj === window) { + return "{ [object Window] }"; + } + if (typeof globalThis !== "undefined" && obj === globalThis || typeof global !== "undefined" && obj === global) { + return "{ [object globalThis] }"; + } + if (!isDate(obj) && !isRegExp(obj)) { + var ys = arrObjKeys(obj, inspect2); + var isPlainObject4 = gPO ? gPO(obj) === Object.prototype : obj instanceof Object || obj.constructor === Object; + var protoTag = obj instanceof Object ? "" : "null prototype"; + var stringTag = !isPlainObject4 && toStringTag && Object(obj) === obj && toStringTag in obj ? $slice.call(toStr(obj), 8, -1) : protoTag ? "Object" : ""; + var constructorTag = isPlainObject4 || typeof obj.constructor !== "function" ? "" : obj.constructor.name ? obj.constructor.name + " " : ""; + var tag = constructorTag + (stringTag || protoTag ? "[" + $join.call($concat.call([], stringTag || [], protoTag || []), ": ") + "] " : ""); + if (ys.length === 0) { + return tag + "{}"; + } + if (indent) { + return tag + "{" + indentedJoin(ys, indent) + "}"; + } + return tag + "{ " + $join.call(ys, ", ") + " }"; + } + return String(obj); + }; + function wrapQuotes(s, defaultStyle, opts) { + var style = opts.quoteStyle || defaultStyle; + var quoteChar = quotes[style]; + return quoteChar + s + quoteChar; + } + function quote(s) { + return $replace.call(String(s), /"/g, """); + } + function canTrustToString(obj) { + return !toStringTag || !(typeof obj === "object" && (toStringTag in obj || typeof obj[toStringTag] !== "undefined")); + } + function isArray(obj) { + return toStr(obj) === "[object Array]" && canTrustToString(obj); + } + function isDate(obj) { + return toStr(obj) === "[object Date]" && canTrustToString(obj); + } + function isRegExp(obj) { + return toStr(obj) === "[object RegExp]" && canTrustToString(obj); + } + function isError3(obj) { + return toStr(obj) === "[object Error]" && canTrustToString(obj); + } + function isString(obj) { + return toStr(obj) === "[object String]" && canTrustToString(obj); + } + function isNumber(obj) { + return toStr(obj) === "[object Number]" && canTrustToString(obj); + } + function isBoolean(obj) { + return toStr(obj) === "[object Boolean]" && canTrustToString(obj); + } + function isSymbol(obj) { + if (hasShammedSymbols) { + return obj && typeof obj === "object" && obj instanceof Symbol; + } + if (typeof obj === "symbol") { + return true; + } + if (!obj || typeof obj !== "object" || !symToString) { + return false; + } + try { + symToString.call(obj); + return true; + } catch (e) { + } + return false; + } + function isBigInt(obj) { + if (!obj || typeof obj !== "object" || !bigIntValueOf) { + return false; + } + try { + bigIntValueOf.call(obj); + return true; + } catch (e) { + } + return false; + } + var hasOwn = Object.prototype.hasOwnProperty || function(key) { + return key in this; + }; + function has(obj, key) { + return hasOwn.call(obj, key); + } + function toStr(obj) { + return objectToString.call(obj); + } + function nameOf(f) { + if (f.name) { + return f.name; + } + var m = $match.call(functionToString.call(f), /^function\s*([\w$]+)/); + if (m) { + return m[1]; + } + return null; + } + function indexOf(xs, x) { + if (xs.indexOf) { + return xs.indexOf(x); + } + for (var i = 0, l = xs.length; i < l; i++) { + if (xs[i] === x) { + return i; + } + } + return -1; + } + function isMap(x) { + if (!mapSize || !x || typeof x !== "object") { + return false; + } + try { + mapSize.call(x); + try { + setSize.call(x); + } catch (s) { + return true; + } + return x instanceof Map; + } catch (e) { + } + return false; + } + function isWeakMap(x) { + if (!weakMapHas || !x || typeof x !== "object") { + return false; + } + try { + weakMapHas.call(x, weakMapHas); + try { + weakSetHas.call(x, weakSetHas); + } catch (s) { + return true; + } + return x instanceof WeakMap; + } catch (e) { + } + return false; + } + function isWeakRef(x) { + if (!weakRefDeref || !x || typeof x !== "object") { + return false; + } + try { + weakRefDeref.call(x); + return true; + } catch (e) { + } + return false; + } + function isSet(x) { + if (!setSize || !x || typeof x !== "object") { + return false; + } + try { + setSize.call(x); + try { + mapSize.call(x); + } catch (m) { + return true; + } + return x instanceof Set; + } catch (e) { + } + return false; + } + function isWeakSet(x) { + if (!weakSetHas || !x || typeof x !== "object") { + return false; + } + try { + weakSetHas.call(x, weakSetHas); + try { + weakMapHas.call(x, weakMapHas); + } catch (s) { + return true; + } + return x instanceof WeakSet; + } catch (e) { + } + return false; + } + function isElement(x) { + if (!x || typeof x !== "object") { + return false; + } + if (typeof HTMLElement !== "undefined" && x instanceof HTMLElement) { + return true; + } + return typeof x.nodeName === "string" && typeof x.getAttribute === "function"; + } + function inspectString(str, opts) { + if (str.length > opts.maxStringLength) { + var remaining = str.length - opts.maxStringLength; + var trailer = "... " + remaining + " more character" + (remaining > 1 ? "s" : ""); + return inspectString($slice.call(str, 0, opts.maxStringLength), opts) + trailer; + } + var quoteRE = quoteREs[opts.quoteStyle || "single"]; + quoteRE.lastIndex = 0; + var s = $replace.call($replace.call(str, quoteRE, "\\$1"), /[\x00-\x1f]/g, lowbyte); + return wrapQuotes(s, "single", opts); + } + function lowbyte(c) { + var n = c.charCodeAt(0); + var x = { + 8: "b", + 9: "t", + 10: "n", + 12: "f", + 13: "r" + }[n]; + if (x) { + return "\\" + x; + } + return "\\x" + (n < 16 ? "0" : "") + $toUpperCase.call(n.toString(16)); + } + function markBoxed(str) { + return "Object(" + str + ")"; + } + function weakCollectionOf(type) { + return type + " { ? }"; + } + function collectionOf(type, size, entries, indent) { + var joinedEntries = indent ? indentedJoin(entries, indent) : $join.call(entries, ", "); + return type + " (" + size + ") {" + joinedEntries + "}"; + } + function singleLineValues(xs) { + for (var i = 0; i < xs.length; i++) { + if (indexOf(xs[i], "\n") >= 0) { + return false; + } + } + return true; + } + function getIndent(opts, depth) { + var baseIndent; + if (opts.indent === " ") { + baseIndent = " "; + } else if (typeof opts.indent === "number" && opts.indent > 0) { + baseIndent = $join.call(Array(opts.indent + 1), " "); + } else { + return null; + } + return { + base: baseIndent, + prev: $join.call(Array(depth + 1), baseIndent) + }; + } + function indentedJoin(xs, indent) { + if (xs.length === 0) { + return ""; + } + var lineJoiner = "\n" + indent.prev + indent.base; + return lineJoiner + $join.call(xs, "," + lineJoiner) + "\n" + indent.prev; + } + function arrObjKeys(obj, inspect2) { + var isArr = isArray(obj); + var xs = []; + if (isArr) { + xs.length = obj.length; + for (var i = 0; i < obj.length; i++) { + xs[i] = has(obj, i) ? inspect2(obj[i], obj) : ""; + } + } + var syms = typeof gOPS === "function" ? gOPS(obj) : []; + var symMap; + if (hasShammedSymbols) { + symMap = {}; + for (var k = 0; k < syms.length; k++) { + symMap["$" + syms[k]] = syms[k]; + } + } + for (var key in obj) { + if (!has(obj, key)) { + continue; + } + if (isArr && String(Number(key)) === key && key < obj.length) { + continue; + } + if (hasShammedSymbols && symMap["$" + key] instanceof Symbol) { + continue; + } else if ($test.call(/[^\w$]/, key)) { + xs.push(inspect2(key, obj) + ": " + inspect2(obj[key], obj)); + } else { + xs.push(key + ": " + inspect2(obj[key], obj)); + } + } + if (typeof gOPS === "function") { + for (var j = 0; j < syms.length; j++) { + if (isEnumerable.call(obj, syms[j])) { + xs.push("[" + inspect2(syms[j]) + "]: " + inspect2(obj[syms[j]], obj)); + } + } + } + return xs; + } + } +}); + +// node_modules/side-channel-list/index.js +var require_side_channel_list = __commonJS({ + "node_modules/side-channel-list/index.js"(exports2, module2) { + "use strict"; + var inspect2 = require_object_inspect(); + var $TypeError = require_type(); + var listGetNode = function(list, key, isDelete) { + var prev = list; + var curr; + for (; (curr = prev.next) != null; prev = curr) { + if (curr.key === key) { + prev.next = curr.next; + if (!isDelete) { + curr.next = /** @type {NonNullable} */ + list.next; + list.next = curr; + } + return curr; + } + } + }; + var listGet = function(objects, key) { + if (!objects) { + return void 0; + } + var node = listGetNode(objects, key); + return node && node.value; + }; + var listSet = function(objects, key, value) { + var node = listGetNode(objects, key); + if (node) { + node.value = value; + } else { + objects.next = /** @type {import('./list.d.ts').ListNode} */ + { + // eslint-disable-line no-param-reassign, no-extra-parens + key, + next: objects.next, + value + }; + } + }; + var listHas = function(objects, key) { + if (!objects) { + return false; + } + return !!listGetNode(objects, key); + }; + var listDelete = function(objects, key) { + if (objects) { + return listGetNode(objects, key, true); + } + }; + module2.exports = function getSideChannelList() { + var $o; + var channel = { + assert: function(key) { + if (!channel.has(key)) { + throw new $TypeError("Side channel does not contain " + inspect2(key)); + } + }, + "delete": function(key) { + var deletedNode = listDelete($o, key); + if (deletedNode && $o && !$o.next) { + $o = void 0; + } + return !!deletedNode; + }, + get: function(key) { + return listGet($o, key); + }, + has: function(key) { + return listHas($o, key); + }, + set: function(key, value) { + if (!$o) { + $o = { + next: void 0 + }; + } + listSet( + /** @type {NonNullable} */ + $o, + key, + value + ); + } + }; + return channel; + }; + } +}); + +// node_modules/es-object-atoms/index.js +var require_es_object_atoms = __commonJS({ + "node_modules/es-object-atoms/index.js"(exports2, module2) { + "use strict"; + module2.exports = Object; + } +}); + +// node_modules/es-errors/index.js +var require_es_errors = __commonJS({ + "node_modules/es-errors/index.js"(exports2, module2) { + "use strict"; + module2.exports = Error; + } +}); + +// node_modules/es-errors/eval.js +var require_eval = __commonJS({ + "node_modules/es-errors/eval.js"(exports2, module2) { + "use strict"; + module2.exports = EvalError; + } +}); + +// node_modules/es-errors/range.js +var require_range2 = __commonJS({ + "node_modules/es-errors/range.js"(exports2, module2) { + "use strict"; + module2.exports = RangeError; + } +}); + +// node_modules/es-errors/ref.js +var require_ref2 = __commonJS({ + "node_modules/es-errors/ref.js"(exports2, module2) { + "use strict"; + module2.exports = ReferenceError; + } +}); + +// node_modules/es-errors/syntax.js +var require_syntax = __commonJS({ + "node_modules/es-errors/syntax.js"(exports2, module2) { + "use strict"; + module2.exports = SyntaxError; + } +}); + +// node_modules/es-errors/uri.js +var require_uri2 = __commonJS({ + "node_modules/es-errors/uri.js"(exports2, module2) { + "use strict"; + module2.exports = URIError; + } +}); + +// node_modules/math-intrinsics/abs.js +var require_abs = __commonJS({ + "node_modules/math-intrinsics/abs.js"(exports2, module2) { + "use strict"; + module2.exports = Math.abs; + } +}); + +// node_modules/math-intrinsics/floor.js +var require_floor = __commonJS({ + "node_modules/math-intrinsics/floor.js"(exports2, module2) { + "use strict"; + module2.exports = Math.floor; + } +}); + +// node_modules/math-intrinsics/max.js +var require_max = __commonJS({ + "node_modules/math-intrinsics/max.js"(exports2, module2) { + "use strict"; + module2.exports = Math.max; + } +}); + +// node_modules/math-intrinsics/min.js +var require_min = __commonJS({ + "node_modules/math-intrinsics/min.js"(exports2, module2) { + "use strict"; + module2.exports = Math.min; + } +}); + +// node_modules/math-intrinsics/pow.js +var require_pow = __commonJS({ + "node_modules/math-intrinsics/pow.js"(exports2, module2) { + "use strict"; + module2.exports = Math.pow; + } +}); + +// node_modules/math-intrinsics/round.js +var require_round = __commonJS({ + "node_modules/math-intrinsics/round.js"(exports2, module2) { + "use strict"; + module2.exports = Math.round; + } +}); + +// node_modules/math-intrinsics/isNaN.js +var require_isNaN = __commonJS({ + "node_modules/math-intrinsics/isNaN.js"(exports2, module2) { + "use strict"; + module2.exports = Number.isNaN || function isNaN2(a) { + return a !== a; + }; + } +}); + +// node_modules/math-intrinsics/sign.js +var require_sign2 = __commonJS({ + "node_modules/math-intrinsics/sign.js"(exports2, module2) { + "use strict"; + var $isNaN = require_isNaN(); + module2.exports = function sign(number4) { + if ($isNaN(number4) || number4 === 0) { + return number4; + } + return number4 < 0 ? -1 : 1; + }; + } +}); + +// node_modules/gopd/gOPD.js +var require_gOPD = __commonJS({ + "node_modules/gopd/gOPD.js"(exports2, module2) { + "use strict"; + module2.exports = Object.getOwnPropertyDescriptor; + } +}); + +// node_modules/gopd/index.js +var require_gopd = __commonJS({ + "node_modules/gopd/index.js"(exports2, module2) { + "use strict"; + var $gOPD = require_gOPD(); + if ($gOPD) { + try { + $gOPD([], "length"); + } catch (e) { + $gOPD = null; + } + } + module2.exports = $gOPD; + } +}); + +// node_modules/es-define-property/index.js +var require_es_define_property = __commonJS({ + "node_modules/es-define-property/index.js"(exports2, module2) { + "use strict"; + var $defineProperty = Object.defineProperty || false; + if ($defineProperty) { + try { + $defineProperty({}, "a", { value: 1 }); + } catch (e) { + $defineProperty = false; + } + } + module2.exports = $defineProperty; + } +}); + +// node_modules/has-symbols/shams.js +var require_shams = __commonJS({ + "node_modules/has-symbols/shams.js"(exports2, module2) { + "use strict"; + module2.exports = function hasSymbols() { + if (typeof Symbol !== "function" || typeof Object.getOwnPropertySymbols !== "function") { + return false; + } + if (typeof Symbol.iterator === "symbol") { + return true; + } + var obj = {}; + var sym = /* @__PURE__ */ Symbol("test"); + var symObj = Object(sym); + if (typeof sym === "string") { + return false; + } + if (Object.prototype.toString.call(sym) !== "[object Symbol]") { + return false; + } + if (Object.prototype.toString.call(symObj) !== "[object Symbol]") { + return false; + } + var symVal = 42; + obj[sym] = symVal; + for (var _ in obj) { + return false; + } + if (typeof Object.keys === "function" && Object.keys(obj).length !== 0) { + return false; + } + if (typeof Object.getOwnPropertyNames === "function" && Object.getOwnPropertyNames(obj).length !== 0) { + return false; + } + var syms = Object.getOwnPropertySymbols(obj); + if (syms.length !== 1 || syms[0] !== sym) { + return false; + } + if (!Object.prototype.propertyIsEnumerable.call(obj, sym)) { + return false; + } + if (typeof Object.getOwnPropertyDescriptor === "function") { + var descriptor = ( + /** @type {PropertyDescriptor} */ + Object.getOwnPropertyDescriptor(obj, sym) + ); + if (descriptor.value !== symVal || descriptor.enumerable !== true) { + return false; + } + } + return true; + }; + } +}); + +// node_modules/has-symbols/index.js +var require_has_symbols = __commonJS({ + "node_modules/has-symbols/index.js"(exports2, module2) { + "use strict"; + var origSymbol = typeof Symbol !== "undefined" && Symbol; + var hasSymbolSham = require_shams(); + module2.exports = function hasNativeSymbols() { + if (typeof origSymbol !== "function") { + return false; + } + if (typeof Symbol !== "function") { + return false; + } + if (typeof origSymbol("foo") !== "symbol") { + return false; + } + if (typeof /* @__PURE__ */ Symbol("bar") !== "symbol") { + return false; + } + return hasSymbolSham(); + }; + } +}); + +// node_modules/get-proto/Reflect.getPrototypeOf.js +var require_Reflect_getPrototypeOf = __commonJS({ + "node_modules/get-proto/Reflect.getPrototypeOf.js"(exports2, module2) { + "use strict"; + module2.exports = typeof Reflect !== "undefined" && Reflect.getPrototypeOf || null; + } +}); + +// node_modules/get-proto/Object.getPrototypeOf.js +var require_Object_getPrototypeOf = __commonJS({ + "node_modules/get-proto/Object.getPrototypeOf.js"(exports2, module2) { + "use strict"; + var $Object = require_es_object_atoms(); + module2.exports = $Object.getPrototypeOf || null; + } +}); + +// node_modules/function-bind/implementation.js +var require_implementation = __commonJS({ + "node_modules/function-bind/implementation.js"(exports2, module2) { + "use strict"; + var ERROR_MESSAGE = "Function.prototype.bind called on incompatible "; + var toStr = Object.prototype.toString; + var max = Math.max; + var funcType = "[object Function]"; + var concatty = function concatty2(a, b) { + var arr = []; + for (var i = 0; i < a.length; i += 1) { + arr[i] = a[i]; + } + for (var j = 0; j < b.length; j += 1) { + arr[j + a.length] = b[j]; + } + return arr; + }; + var slicy = function slicy2(arrLike, offset) { + var arr = []; + for (var i = offset || 0, j = 0; i < arrLike.length; i += 1, j += 1) { + arr[j] = arrLike[i]; + } + return arr; + }; + var joiny = function(arr, joiner) { + var str = ""; + for (var i = 0; i < arr.length; i += 1) { + str += arr[i]; + if (i + 1 < arr.length) { + str += joiner; + } + } + return str; + }; + module2.exports = function bind(that) { + var target = this; + if (typeof target !== "function" || toStr.apply(target) !== funcType) { + throw new TypeError(ERROR_MESSAGE + target); + } + var args = slicy(arguments, 1); + var bound; + var binder = function() { + if (this instanceof bound) { + var result = target.apply( + this, + concatty(args, arguments) + ); + if (Object(result) === result) { + return result; + } + return this; + } + return target.apply( + that, + concatty(args, arguments) + ); + }; + var boundLength = max(0, target.length - args.length); + var boundArgs = []; + for (var i = 0; i < boundLength; i++) { + boundArgs[i] = "$" + i; + } + bound = Function("binder", "return function (" + joiny(boundArgs, ",") + "){ return binder.apply(this,arguments); }")(binder); + if (target.prototype) { + var Empty = function Empty2() { + }; + Empty.prototype = target.prototype; + bound.prototype = new Empty(); + Empty.prototype = null; + } + return bound; + }; + } +}); + +// node_modules/function-bind/index.js +var require_function_bind = __commonJS({ + "node_modules/function-bind/index.js"(exports2, module2) { + "use strict"; + var implementation = require_implementation(); + module2.exports = Function.prototype.bind || implementation; + } +}); + +// node_modules/call-bind-apply-helpers/functionCall.js +var require_functionCall = __commonJS({ + "node_modules/call-bind-apply-helpers/functionCall.js"(exports2, module2) { + "use strict"; + module2.exports = Function.prototype.call; + } +}); + +// node_modules/call-bind-apply-helpers/functionApply.js +var require_functionApply = __commonJS({ + "node_modules/call-bind-apply-helpers/functionApply.js"(exports2, module2) { + "use strict"; + module2.exports = Function.prototype.apply; + } +}); + +// node_modules/call-bind-apply-helpers/reflectApply.js +var require_reflectApply = __commonJS({ + "node_modules/call-bind-apply-helpers/reflectApply.js"(exports2, module2) { + "use strict"; + module2.exports = typeof Reflect !== "undefined" && Reflect && Reflect.apply; + } +}); + +// node_modules/call-bind-apply-helpers/actualApply.js +var require_actualApply = __commonJS({ + "node_modules/call-bind-apply-helpers/actualApply.js"(exports2, module2) { + "use strict"; + var bind = require_function_bind(); + var $apply = require_functionApply(); + var $call = require_functionCall(); + var $reflectApply = require_reflectApply(); + module2.exports = $reflectApply || bind.call($call, $apply); + } +}); + +// node_modules/call-bind-apply-helpers/index.js +var require_call_bind_apply_helpers = __commonJS({ + "node_modules/call-bind-apply-helpers/index.js"(exports2, module2) { + "use strict"; + var bind = require_function_bind(); + var $TypeError = require_type(); + var $call = require_functionCall(); + var $actualApply = require_actualApply(); + module2.exports = function callBindBasic(args) { + if (args.length < 1 || typeof args[0] !== "function") { + throw new $TypeError("a function is required"); + } + return $actualApply(bind, $call, args); + }; + } +}); + +// node_modules/dunder-proto/get.js +var require_get = __commonJS({ + "node_modules/dunder-proto/get.js"(exports2, module2) { + "use strict"; + var callBind = require_call_bind_apply_helpers(); + var gOPD = require_gopd(); + var hasProtoAccessor; + try { + hasProtoAccessor = /** @type {{ __proto__?: typeof Array.prototype }} */ + [].__proto__ === Array.prototype; + } catch (e) { + if (!e || typeof e !== "object" || !("code" in e) || e.code !== "ERR_PROTO_ACCESS") { + throw e; + } + } + var desc = !!hasProtoAccessor && gOPD && gOPD( + Object.prototype, + /** @type {keyof typeof Object.prototype} */ + "__proto__" + ); + var $Object = Object; + var $getPrototypeOf = $Object.getPrototypeOf; + module2.exports = desc && typeof desc.get === "function" ? callBind([desc.get]) : typeof $getPrototypeOf === "function" ? ( + /** @type {import('./get')} */ + function getDunder(value) { + return $getPrototypeOf(value == null ? value : $Object(value)); + } + ) : false; + } +}); + +// node_modules/get-proto/index.js +var require_get_proto = __commonJS({ + "node_modules/get-proto/index.js"(exports2, module2) { + "use strict"; + var reflectGetProto = require_Reflect_getPrototypeOf(); + var originalGetProto = require_Object_getPrototypeOf(); + var getDunderProto = require_get(); + module2.exports = reflectGetProto ? function getProto(O) { + return reflectGetProto(O); + } : originalGetProto ? function getProto(O) { + if (!O || typeof O !== "object" && typeof O !== "function") { + throw new TypeError("getProto: not an object"); + } + return originalGetProto(O); + } : getDunderProto ? function getProto(O) { + return getDunderProto(O); + } : null; + } +}); + +// node_modules/hasown/index.js +var require_hasown = __commonJS({ + "node_modules/hasown/index.js"(exports2, module2) { + "use strict"; + var call = Function.prototype.call; + var $hasOwn = Object.prototype.hasOwnProperty; + var bind = require_function_bind(); + module2.exports = bind.call(call, $hasOwn); + } +}); + +// node_modules/get-intrinsic/index.js +var require_get_intrinsic = __commonJS({ + "node_modules/get-intrinsic/index.js"(exports2, module2) { + "use strict"; + var undefined2; + var $Object = require_es_object_atoms(); + var $Error = require_es_errors(); + var $EvalError = require_eval(); + var $RangeError = require_range2(); + var $ReferenceError = require_ref2(); + var $SyntaxError = require_syntax(); + var $TypeError = require_type(); + var $URIError = require_uri2(); + var abs = require_abs(); + var floor = require_floor(); + var max = require_max(); + var min = require_min(); + var pow = require_pow(); + var round = require_round(); + var sign = require_sign2(); + var $Function = Function; + var getEvalledConstructor = function(expressionSyntax) { + try { + return $Function('"use strict"; return (' + expressionSyntax + ").constructor;")(); + } catch (e) { + } + }; + var $gOPD = require_gopd(); + var $defineProperty = require_es_define_property(); + var throwTypeError = function() { + throw new $TypeError(); + }; + var ThrowTypeError = $gOPD ? (function() { + try { + arguments.callee; + return throwTypeError; + } catch (calleeThrows) { + try { + return $gOPD(arguments, "callee").get; + } catch (gOPDthrows) { + return throwTypeError; + } + } + })() : throwTypeError; + var hasSymbols = require_has_symbols()(); + var getProto = require_get_proto(); + var $ObjectGPO = require_Object_getPrototypeOf(); + var $ReflectGPO = require_Reflect_getPrototypeOf(); + var $apply = require_functionApply(); + var $call = require_functionCall(); + var needsEval = {}; + var TypedArray = typeof Uint8Array === "undefined" || !getProto ? undefined2 : getProto(Uint8Array); + var INTRINSICS = { + __proto__: null, + "%AggregateError%": typeof AggregateError === "undefined" ? undefined2 : AggregateError, + "%Array%": Array, + "%ArrayBuffer%": typeof ArrayBuffer === "undefined" ? undefined2 : ArrayBuffer, + "%ArrayIteratorPrototype%": hasSymbols && getProto ? getProto([][Symbol.iterator]()) : undefined2, + "%AsyncFromSyncIteratorPrototype%": undefined2, + "%AsyncFunction%": needsEval, + "%AsyncGenerator%": needsEval, + "%AsyncGeneratorFunction%": needsEval, + "%AsyncIteratorPrototype%": needsEval, + "%Atomics%": typeof Atomics === "undefined" ? undefined2 : Atomics, + "%BigInt%": typeof BigInt === "undefined" ? undefined2 : BigInt, + "%BigInt64Array%": typeof BigInt64Array === "undefined" ? undefined2 : BigInt64Array, + "%BigUint64Array%": typeof BigUint64Array === "undefined" ? undefined2 : BigUint64Array, + "%Boolean%": Boolean, + "%DataView%": typeof DataView === "undefined" ? undefined2 : DataView, + "%Date%": Date, + "%decodeURI%": decodeURI, + "%decodeURIComponent%": decodeURIComponent, + "%encodeURI%": encodeURI, + "%encodeURIComponent%": encodeURIComponent, + "%Error%": $Error, + "%eval%": eval, + // eslint-disable-line no-eval + "%EvalError%": $EvalError, + "%Float16Array%": typeof Float16Array === "undefined" ? undefined2 : Float16Array, + "%Float32Array%": typeof Float32Array === "undefined" ? undefined2 : Float32Array, + "%Float64Array%": typeof Float64Array === "undefined" ? undefined2 : Float64Array, + "%FinalizationRegistry%": typeof FinalizationRegistry === "undefined" ? undefined2 : FinalizationRegistry, + "%Function%": $Function, + "%GeneratorFunction%": needsEval, + "%Int8Array%": typeof Int8Array === "undefined" ? undefined2 : Int8Array, + "%Int16Array%": typeof Int16Array === "undefined" ? undefined2 : Int16Array, + "%Int32Array%": typeof Int32Array === "undefined" ? undefined2 : Int32Array, + "%isFinite%": isFinite, + "%isNaN%": isNaN, + "%IteratorPrototype%": hasSymbols && getProto ? getProto(getProto([][Symbol.iterator]())) : undefined2, + "%JSON%": typeof JSON === "object" ? JSON : undefined2, + "%Map%": typeof Map === "undefined" ? undefined2 : Map, + "%MapIteratorPrototype%": typeof Map === "undefined" || !hasSymbols || !getProto ? undefined2 : getProto((/* @__PURE__ */ new Map())[Symbol.iterator]()), + "%Math%": Math, + "%Number%": Number, + "%Object%": $Object, + "%Object.getOwnPropertyDescriptor%": $gOPD, + "%parseFloat%": parseFloat, + "%parseInt%": parseInt, + "%Promise%": typeof Promise === "undefined" ? undefined2 : Promise, + "%Proxy%": typeof Proxy === "undefined" ? undefined2 : Proxy, + "%RangeError%": $RangeError, + "%ReferenceError%": $ReferenceError, + "%Reflect%": typeof Reflect === "undefined" ? undefined2 : Reflect, + "%RegExp%": RegExp, + "%Set%": typeof Set === "undefined" ? undefined2 : Set, + "%SetIteratorPrototype%": typeof Set === "undefined" || !hasSymbols || !getProto ? undefined2 : getProto((/* @__PURE__ */ new Set())[Symbol.iterator]()), + "%SharedArrayBuffer%": typeof SharedArrayBuffer === "undefined" ? undefined2 : SharedArrayBuffer, + "%String%": String, + "%StringIteratorPrototype%": hasSymbols && getProto ? getProto(""[Symbol.iterator]()) : undefined2, + "%Symbol%": hasSymbols ? Symbol : undefined2, + "%SyntaxError%": $SyntaxError, + "%ThrowTypeError%": ThrowTypeError, + "%TypedArray%": TypedArray, + "%TypeError%": $TypeError, + "%Uint8Array%": typeof Uint8Array === "undefined" ? undefined2 : Uint8Array, + "%Uint8ClampedArray%": typeof Uint8ClampedArray === "undefined" ? undefined2 : Uint8ClampedArray, + "%Uint16Array%": typeof Uint16Array === "undefined" ? undefined2 : Uint16Array, + "%Uint32Array%": typeof Uint32Array === "undefined" ? undefined2 : Uint32Array, + "%URIError%": $URIError, + "%WeakMap%": typeof WeakMap === "undefined" ? undefined2 : WeakMap, + "%WeakRef%": typeof WeakRef === "undefined" ? undefined2 : WeakRef, + "%WeakSet%": typeof WeakSet === "undefined" ? undefined2 : WeakSet, + "%Function.prototype.call%": $call, + "%Function.prototype.apply%": $apply, + "%Object.defineProperty%": $defineProperty, + "%Object.getPrototypeOf%": $ObjectGPO, + "%Math.abs%": abs, + "%Math.floor%": floor, + "%Math.max%": max, + "%Math.min%": min, + "%Math.pow%": pow, + "%Math.round%": round, + "%Math.sign%": sign, + "%Reflect.getPrototypeOf%": $ReflectGPO + }; + if (getProto) { + try { + null.error; + } catch (e) { + errorProto = getProto(getProto(e)); + INTRINSICS["%Error.prototype%"] = errorProto; + } + } + var errorProto; + var doEval = function doEval2(name5) { + var value; + if (name5 === "%AsyncFunction%") { + value = getEvalledConstructor("async function () {}"); + } else if (name5 === "%GeneratorFunction%") { + value = getEvalledConstructor("function* () {}"); + } else if (name5 === "%AsyncGeneratorFunction%") { + value = getEvalledConstructor("async function* () {}"); + } else if (name5 === "%AsyncGenerator%") { + var fn = doEval2("%AsyncGeneratorFunction%"); + if (fn) { + value = fn.prototype; + } + } else if (name5 === "%AsyncIteratorPrototype%") { + var gen = doEval2("%AsyncGenerator%"); + if (gen && getProto) { + value = getProto(gen.prototype); + } + } + INTRINSICS[name5] = value; + return value; + }; + var LEGACY_ALIASES = { + __proto__: null, + "%ArrayBufferPrototype%": ["ArrayBuffer", "prototype"], + "%ArrayPrototype%": ["Array", "prototype"], + "%ArrayProto_entries%": ["Array", "prototype", "entries"], + "%ArrayProto_forEach%": ["Array", "prototype", "forEach"], + "%ArrayProto_keys%": ["Array", "prototype", "keys"], + "%ArrayProto_values%": ["Array", "prototype", "values"], + "%AsyncFunctionPrototype%": ["AsyncFunction", "prototype"], + "%AsyncGenerator%": ["AsyncGeneratorFunction", "prototype"], + "%AsyncGeneratorPrototype%": ["AsyncGeneratorFunction", "prototype", "prototype"], + "%BooleanPrototype%": ["Boolean", "prototype"], + "%DataViewPrototype%": ["DataView", "prototype"], + "%DatePrototype%": ["Date", "prototype"], + "%ErrorPrototype%": ["Error", "prototype"], + "%EvalErrorPrototype%": ["EvalError", "prototype"], + "%Float32ArrayPrototype%": ["Float32Array", "prototype"], + "%Float64ArrayPrototype%": ["Float64Array", "prototype"], + "%FunctionPrototype%": ["Function", "prototype"], + "%Generator%": ["GeneratorFunction", "prototype"], + "%GeneratorPrototype%": ["GeneratorFunction", "prototype", "prototype"], + "%Int8ArrayPrototype%": ["Int8Array", "prototype"], + "%Int16ArrayPrototype%": ["Int16Array", "prototype"], + "%Int32ArrayPrototype%": ["Int32Array", "prototype"], + "%JSONParse%": ["JSON", "parse"], + "%JSONStringify%": ["JSON", "stringify"], + "%MapPrototype%": ["Map", "prototype"], + "%NumberPrototype%": ["Number", "prototype"], + "%ObjectPrototype%": ["Object", "prototype"], + "%ObjProto_toString%": ["Object", "prototype", "toString"], + "%ObjProto_valueOf%": ["Object", "prototype", "valueOf"], + "%PromisePrototype%": ["Promise", "prototype"], + "%PromiseProto_then%": ["Promise", "prototype", "then"], + "%Promise_all%": ["Promise", "all"], + "%Promise_reject%": ["Promise", "reject"], + "%Promise_resolve%": ["Promise", "resolve"], + "%RangeErrorPrototype%": ["RangeError", "prototype"], + "%ReferenceErrorPrototype%": ["ReferenceError", "prototype"], + "%RegExpPrototype%": ["RegExp", "prototype"], + "%SetPrototype%": ["Set", "prototype"], + "%SharedArrayBufferPrototype%": ["SharedArrayBuffer", "prototype"], + "%StringPrototype%": ["String", "prototype"], + "%SymbolPrototype%": ["Symbol", "prototype"], + "%SyntaxErrorPrototype%": ["SyntaxError", "prototype"], + "%TypedArrayPrototype%": ["TypedArray", "prototype"], + "%TypeErrorPrototype%": ["TypeError", "prototype"], + "%Uint8ArrayPrototype%": ["Uint8Array", "prototype"], + "%Uint8ClampedArrayPrototype%": ["Uint8ClampedArray", "prototype"], + "%Uint16ArrayPrototype%": ["Uint16Array", "prototype"], + "%Uint32ArrayPrototype%": ["Uint32Array", "prototype"], + "%URIErrorPrototype%": ["URIError", "prototype"], + "%WeakMapPrototype%": ["WeakMap", "prototype"], + "%WeakSetPrototype%": ["WeakSet", "prototype"] + }; + var bind = require_function_bind(); + var hasOwn = require_hasown(); + var $concat = bind.call($call, Array.prototype.concat); + var $spliceApply = bind.call($apply, Array.prototype.splice); + var $replace = bind.call($call, String.prototype.replace); + var $strSlice = bind.call($call, String.prototype.slice); + var $exec = bind.call($call, RegExp.prototype.exec); + var rePropName = /[^%.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|%$))/g; + var reEscapeChar = /\\(\\)?/g; + var stringToPath = function stringToPath2(string4) { + var first = $strSlice(string4, 0, 1); + var last = $strSlice(string4, -1); + if (first === "%" && last !== "%") { + throw new $SyntaxError("invalid intrinsic syntax, expected closing `%`"); + } else if (last === "%" && first !== "%") { + throw new $SyntaxError("invalid intrinsic syntax, expected opening `%`"); + } + var result = []; + $replace(string4, rePropName, function(match, number4, quote, subString) { + result[result.length] = quote ? $replace(subString, reEscapeChar, "$1") : number4 || match; + }); + return result; + }; + var getBaseIntrinsic = function getBaseIntrinsic2(name5, allowMissing) { + var intrinsicName = name5; + var alias; + if (hasOwn(LEGACY_ALIASES, intrinsicName)) { + alias = LEGACY_ALIASES[intrinsicName]; + intrinsicName = "%" + alias[0] + "%"; + } + if (hasOwn(INTRINSICS, intrinsicName)) { + var value = INTRINSICS[intrinsicName]; + if (value === needsEval) { + value = doEval(intrinsicName); + } + if (typeof value === "undefined" && !allowMissing) { + throw new $TypeError("intrinsic " + name5 + " exists, but is not available. Please file an issue!"); + } + return { + alias, + name: intrinsicName, + value + }; + } + throw new $SyntaxError("intrinsic " + name5 + " does not exist!"); + }; + module2.exports = function GetIntrinsic(name5, allowMissing) { + if (typeof name5 !== "string" || name5.length === 0) { + throw new $TypeError("intrinsic name must be a non-empty string"); + } + if (arguments.length > 1 && typeof allowMissing !== "boolean") { + throw new $TypeError('"allowMissing" argument must be a boolean'); + } + if ($exec(/^%?[^%]*%?$/, name5) === null) { + throw new $SyntaxError("`%` may not be present anywhere but at the beginning and end of the intrinsic name"); + } + var parts = stringToPath(name5); + var intrinsicBaseName = parts.length > 0 ? parts[0] : ""; + var intrinsic = getBaseIntrinsic("%" + intrinsicBaseName + "%", allowMissing); + var intrinsicRealName = intrinsic.name; + var value = intrinsic.value; + var skipFurtherCaching = false; + var alias = intrinsic.alias; + if (alias) { + intrinsicBaseName = alias[0]; + $spliceApply(parts, $concat([0, 1], alias)); + } + for (var i = 1, isOwn = true; i < parts.length; i += 1) { + var part = parts[i]; + var first = $strSlice(part, 0, 1); + var last = $strSlice(part, -1); + if ((first === '"' || first === "'" || first === "`" || (last === '"' || last === "'" || last === "`")) && first !== last) { + throw new $SyntaxError("property names with quotes must have matching quotes"); + } + if (part === "constructor" || !isOwn) { + skipFurtherCaching = true; + } + intrinsicBaseName += "." + part; + intrinsicRealName = "%" + intrinsicBaseName + "%"; + if (hasOwn(INTRINSICS, intrinsicRealName)) { + value = INTRINSICS[intrinsicRealName]; + } else if (value != null) { + if (!(part in value)) { + if (!allowMissing) { + throw new $TypeError("base intrinsic for " + name5 + " exists, but the property is not available."); + } + return void undefined2; + } + if ($gOPD && i + 1 >= parts.length) { + var desc = $gOPD(value, part); + isOwn = !!desc; + if (isOwn && "get" in desc && !("originalValue" in desc.get)) { + value = desc.get; + } else { + value = value[part]; + } + } else { + isOwn = hasOwn(value, part); + value = value[part]; + } + if (isOwn && !skipFurtherCaching) { + INTRINSICS[intrinsicRealName] = value; + } + } + } + return value; + }; + } +}); + +// node_modules/call-bound/index.js +var require_call_bound = __commonJS({ + "node_modules/call-bound/index.js"(exports2, module2) { + "use strict"; + var GetIntrinsic = require_get_intrinsic(); + var callBindBasic = require_call_bind_apply_helpers(); + var $indexOf = callBindBasic([GetIntrinsic("%String.prototype.indexOf%")]); + module2.exports = function callBoundIntrinsic(name5, allowMissing) { + var intrinsic = ( + /** @type {(this: unknown, ...args: unknown[]) => unknown} */ + GetIntrinsic(name5, !!allowMissing) + ); + if (typeof intrinsic === "function" && $indexOf(name5, ".prototype.") > -1) { + return callBindBasic( + /** @type {const} */ + [intrinsic] + ); + } + return intrinsic; + }; + } +}); + +// node_modules/side-channel-map/index.js +var require_side_channel_map = __commonJS({ + "node_modules/side-channel-map/index.js"(exports2, module2) { + "use strict"; + var GetIntrinsic = require_get_intrinsic(); + var callBound = require_call_bound(); + var inspect2 = require_object_inspect(); + var $TypeError = require_type(); + var $Map = GetIntrinsic("%Map%", true); + var $mapGet = callBound("Map.prototype.get", true); + var $mapSet = callBound("Map.prototype.set", true); + var $mapHas = callBound("Map.prototype.has", true); + var $mapDelete = callBound("Map.prototype.delete", true); + var $mapSize = callBound("Map.prototype.size", true); + module2.exports = !!$Map && /** @type {Exclude} */ + function getSideChannelMap() { + var $m; + var channel = { + assert: function(key) { + if (!channel.has(key)) { + throw new $TypeError("Side channel does not contain " + inspect2(key)); + } + }, + "delete": function(key) { + if ($m) { + var result = $mapDelete($m, key); + if ($mapSize($m) === 0) { + $m = void 0; + } + return result; + } + return false; + }, + get: function(key) { + if ($m) { + return $mapGet($m, key); + } + }, + has: function(key) { + if ($m) { + return $mapHas($m, key); + } + return false; + }, + set: function(key, value) { + if (!$m) { + $m = new $Map(); + } + $mapSet($m, key, value); + } + }; + return channel; + }; + } +}); + +// node_modules/side-channel-weakmap/index.js +var require_side_channel_weakmap = __commonJS({ + "node_modules/side-channel-weakmap/index.js"(exports2, module2) { + "use strict"; + var GetIntrinsic = require_get_intrinsic(); + var callBound = require_call_bound(); + var inspect2 = require_object_inspect(); + var getSideChannelMap = require_side_channel_map(); + var $TypeError = require_type(); + var $WeakMap = GetIntrinsic("%WeakMap%", true); + var $weakMapGet = callBound("WeakMap.prototype.get", true); + var $weakMapSet = callBound("WeakMap.prototype.set", true); + var $weakMapHas = callBound("WeakMap.prototype.has", true); + var $weakMapDelete = callBound("WeakMap.prototype.delete", true); + module2.exports = $WeakMap ? ( + /** @type {Exclude} */ + function getSideChannelWeakMap() { + var $wm; + var $m; + var channel = { + assert: function(key) { + if (!channel.has(key)) { + throw new $TypeError("Side channel does not contain " + inspect2(key)); + } + }, + "delete": function(key) { + if ($WeakMap && key && (typeof key === "object" || typeof key === "function")) { + if ($wm) { + return $weakMapDelete($wm, key); + } + } else if (getSideChannelMap) { + if ($m) { + return $m["delete"](key); + } + } + return false; + }, + get: function(key) { + if ($WeakMap && key && (typeof key === "object" || typeof key === "function")) { + if ($wm) { + return $weakMapGet($wm, key); + } + } + return $m && $m.get(key); + }, + has: function(key) { + if ($WeakMap && key && (typeof key === "object" || typeof key === "function")) { + if ($wm) { + return $weakMapHas($wm, key); + } + } + return !!$m && $m.has(key); + }, + set: function(key, value) { + if ($WeakMap && key && (typeof key === "object" || typeof key === "function")) { + if (!$wm) { + $wm = new $WeakMap(); + } + $weakMapSet($wm, key, value); + } else if (getSideChannelMap) { + if (!$m) { + $m = getSideChannelMap(); + } + $m.set(key, value); + } + } + }; + return channel; + } + ) : getSideChannelMap; + } +}); + +// node_modules/side-channel/index.js +var require_side_channel = __commonJS({ + "node_modules/side-channel/index.js"(exports2, module2) { + "use strict"; + var $TypeError = require_type(); + var inspect2 = require_object_inspect(); + var getSideChannelList = require_side_channel_list(); + var getSideChannelMap = require_side_channel_map(); + var getSideChannelWeakMap = require_side_channel_weakmap(); + var makeChannel = getSideChannelWeakMap || getSideChannelMap || getSideChannelList; + module2.exports = function getSideChannel() { + var $channelData; + var channel = { + assert: function(key) { + if (!channel.has(key)) { + throw new $TypeError("Side channel does not contain " + inspect2(key)); + } + }, + "delete": function(key) { + return !!$channelData && $channelData["delete"](key); + }, + get: function(key) { + return $channelData && $channelData.get(key); + }, + has: function(key) { + return !!$channelData && $channelData.has(key); + }, + set: function(key, value) { + if (!$channelData) { + $channelData = makeChannel(); + } + $channelData.set(key, value); + } + }; + return channel; + }; + } +}); + +// node_modules/qs/lib/formats.js +var require_formats2 = __commonJS({ + "node_modules/qs/lib/formats.js"(exports2, module2) { + "use strict"; + var replace = String.prototype.replace; + var percentTwenties = /%20/g; + var Format = { + RFC1738: "RFC1738", + RFC3986: "RFC3986" + }; + module2.exports = { + "default": Format.RFC3986, + formatters: { + RFC1738: function(value) { + return replace.call(value, percentTwenties, "+"); + }, + RFC3986: function(value) { + return String(value); + } + }, + RFC1738: Format.RFC1738, + RFC3986: Format.RFC3986 + }; + } +}); + +// node_modules/qs/lib/utils.js +var require_utils3 = __commonJS({ + "node_modules/qs/lib/utils.js"(exports2, module2) { + "use strict"; + var formats = require_formats2(); + var getSideChannel = require_side_channel(); + var has = Object.prototype.hasOwnProperty; + var isArray = Array.isArray; + var overflowChannel = getSideChannel(); + var markOverflow = function markOverflow2(obj, maxIndex) { + overflowChannel.set(obj, maxIndex); + return obj; + }; + var isOverflow = function isOverflow2(obj) { + return overflowChannel.has(obj); + }; + var getMaxIndex = function getMaxIndex2(obj) { + return overflowChannel.get(obj); + }; + var setMaxIndex = function setMaxIndex2(obj, maxIndex) { + overflowChannel.set(obj, maxIndex); + }; + var hexTable = (function() { + var array2 = []; + for (var i = 0; i < 256; ++i) { + array2[array2.length] = "%" + ((i < 16 ? "0" : "") + i.toString(16)).toUpperCase(); + } + return array2; + })(); + var compactQueue = function compactQueue2(queue) { + while (queue.length > 1) { + var item = queue.pop(); + var obj = item.obj[item.prop]; + if (isArray(obj)) { + var compacted = []; + for (var j = 0; j < obj.length; ++j) { + if (typeof obj[j] !== "undefined") { + compacted[compacted.length] = obj[j]; + } + } + item.obj[item.prop] = compacted; + } + } + }; + var arrayToObject = function arrayToObject2(source, options) { + var obj = options && options.plainObjects ? { __proto__: null } : {}; + for (var i = 0; i < source.length; ++i) { + if (typeof source[i] !== "undefined") { + obj[i] = source[i]; + } + } + return obj; + }; + var merge2 = function merge3(target, source, options) { + if (!source) { + return target; + } + if (typeof source !== "object" && typeof source !== "function") { + if (isArray(target)) { + var nextIndex = target.length; + if (options && typeof options.arrayLimit === "number" && nextIndex > options.arrayLimit) { + return markOverflow(arrayToObject(target.concat(source), options), nextIndex); + } + target[nextIndex] = source; + } else if (target && typeof target === "object") { + if (isOverflow(target)) { + var newIndex = getMaxIndex(target) + 1; + target[newIndex] = source; + setMaxIndex(target, newIndex); + } else if (options && options.strictMerge) { + return [target, source]; + } else if (options && (options.plainObjects || options.allowPrototypes) || !has.call(Object.prototype, source)) { + target[source] = true; + } + } else { + return [target, source]; + } + return target; + } + if (!target || typeof target !== "object") { + if (isOverflow(source)) { + var sourceKeys = Object.keys(source); + var result = options && options.plainObjects ? { __proto__: null, 0: target } : { 0: target }; + for (var m = 0; m < sourceKeys.length; m++) { + var oldKey = parseInt(sourceKeys[m], 10); + result[oldKey + 1] = source[sourceKeys[m]]; + } + return markOverflow(result, getMaxIndex(source) + 1); + } + var combined = [target].concat(source); + if (options && typeof options.arrayLimit === "number" && combined.length > options.arrayLimit) { + return markOverflow(arrayToObject(combined, options), combined.length - 1); + } + return combined; + } + var mergeTarget = target; + if (isArray(target) && !isArray(source)) { + mergeTarget = arrayToObject(target, options); + } + if (isArray(target) && isArray(source)) { + source.forEach(function(item, i) { + if (has.call(target, i)) { + var targetItem = target[i]; + if (targetItem && typeof targetItem === "object" && item && typeof item === "object") { + target[i] = merge3(targetItem, item, options); + } else { + target[target.length] = item; + } + } else { + target[i] = item; + } + }); + return target; + } + return Object.keys(source).reduce(function(acc, key) { + var value = source[key]; + if (has.call(acc, key)) { + acc[key] = merge3(acc[key], value, options); + } else { + acc[key] = value; + } + if (isOverflow(source) && !isOverflow(acc)) { + markOverflow(acc, getMaxIndex(source)); + } + if (isOverflow(acc)) { + var keyNum = parseInt(key, 10); + if (String(keyNum) === key && keyNum >= 0 && keyNum > getMaxIndex(acc)) { + setMaxIndex(acc, keyNum); + } + } + return acc; + }, mergeTarget); + }; + var assign = function assignSingleSource(target, source) { + return Object.keys(source).reduce(function(acc, key) { + acc[key] = source[key]; + return acc; + }, target); + }; + var decode = function(str, defaultDecoder, charset) { + var strWithoutPlus = str.replace(/\+/g, " "); + if (charset === "iso-8859-1") { + return strWithoutPlus.replace(/%[0-9a-f]{2}/gi, unescape); + } + try { + return decodeURIComponent(strWithoutPlus); + } catch (e) { + return strWithoutPlus; + } + }; + var limit = 1024; + var encode2 = function encode3(str, defaultEncoder, charset, kind, format) { + if (str.length === 0) { + return str; + } + var string4 = str; + if (typeof str === "symbol") { + string4 = Symbol.prototype.toString.call(str); + } else if (typeof str !== "string") { + string4 = String(str); + } + if (charset === "iso-8859-1") { + return escape(string4).replace(/%u[0-9a-f]{4}/gi, function($0) { + return "%26%23" + parseInt($0.slice(2), 16) + "%3B"; + }); + } + var out = ""; + for (var j = 0; j < string4.length; j += limit) { + var segment = string4.length >= limit ? string4.slice(j, j + limit) : string4; + var arr = []; + for (var i = 0; i < segment.length; ++i) { + var c = segment.charCodeAt(i); + if (c === 45 || c === 46 || c === 95 || c === 126 || c >= 48 && c <= 57 || c >= 65 && c <= 90 || c >= 97 && c <= 122 || format === formats.RFC1738 && (c === 40 || c === 41)) { + arr[arr.length] = segment.charAt(i); + continue; + } + if (c < 128) { + arr[arr.length] = hexTable[c]; + continue; + } + if (c < 2048) { + arr[arr.length] = hexTable[192 | c >> 6] + hexTable[128 | c & 63]; + continue; + } + if (c < 55296 || c >= 57344) { + arr[arr.length] = hexTable[224 | c >> 12] + hexTable[128 | c >> 6 & 63] + hexTable[128 | c & 63]; + continue; + } + i += 1; + c = 65536 + ((c & 1023) << 10 | segment.charCodeAt(i) & 1023); + arr[arr.length] = hexTable[240 | c >> 18] + hexTable[128 | c >> 12 & 63] + hexTable[128 | c >> 6 & 63] + hexTable[128 | c & 63]; + } + out += arr.join(""); + } + return out; + }; + var compact = function compact2(value) { + var queue = [{ obj: { o: value }, prop: "o" }]; + var refs = []; + for (var i = 0; i < queue.length; ++i) { + var item = queue[i]; + var obj = item.obj[item.prop]; + var keys = Object.keys(obj); + for (var j = 0; j < keys.length; ++j) { + var key = keys[j]; + var val = obj[key]; + if (typeof val === "object" && val !== null && refs.indexOf(val) === -1) { + queue[queue.length] = { obj, prop: key }; + refs[refs.length] = val; + } + } + } + compactQueue(queue); + return value; + }; + var isRegExp = function isRegExp2(obj) { + return Object.prototype.toString.call(obj) === "[object RegExp]"; + }; + var isBuffer = function isBuffer2(obj) { + if (!obj || typeof obj !== "object") { + return false; + } + return !!(obj.constructor && obj.constructor.isBuffer && obj.constructor.isBuffer(obj)); + }; + var combine = function combine2(a, b, arrayLimit, plainObjects) { + if (isOverflow(a)) { + var newIndex = getMaxIndex(a) + 1; + a[newIndex] = b; + setMaxIndex(a, newIndex); + return a; + } + var result = [].concat(a, b); + if (result.length > arrayLimit) { + return markOverflow(arrayToObject(result, { plainObjects }), result.length - 1); + } + return result; + }; + var maybeMap = function maybeMap2(val, fn) { + if (isArray(val)) { + var mapped = []; + for (var i = 0; i < val.length; i += 1) { + mapped[mapped.length] = fn(val[i]); + } + return mapped; + } + return fn(val); + }; + module2.exports = { + arrayToObject, + assign, + combine, + compact, + decode, + encode: encode2, + isBuffer, + isOverflow, + isRegExp, + markOverflow, + maybeMap, + merge: merge2 + }; + } +}); + +// node_modules/qs/lib/stringify.js +var require_stringify = __commonJS({ + "node_modules/qs/lib/stringify.js"(exports2, module2) { + "use strict"; + var getSideChannel = require_side_channel(); + var utils = require_utils3(); + var formats = require_formats2(); + var has = Object.prototype.hasOwnProperty; + var arrayPrefixGenerators = { + brackets: function brackets(prefix) { + return prefix + "[]"; + }, + comma: "comma", + indices: function indices(prefix, key) { + return prefix + "[" + key + "]"; + }, + repeat: function repeat(prefix) { + return prefix; + } + }; + var isArray = Array.isArray; + var push = Array.prototype.push; + var pushToArray = function(arr, valueOrArray) { + push.apply(arr, isArray(valueOrArray) ? valueOrArray : [valueOrArray]); + }; + var toISO = Date.prototype.toISOString; + var defaultFormat = formats["default"]; + var defaults = { + addQueryPrefix: false, + allowDots: false, + allowEmptyArrays: false, + arrayFormat: "indices", + charset: "utf-8", + charsetSentinel: false, + commaRoundTrip: false, + delimiter: "&", + encode: true, + encodeDotInKeys: false, + encoder: utils.encode, + encodeValuesOnly: false, + filter: void 0, + format: defaultFormat, + formatter: formats.formatters[defaultFormat], + // deprecated + indices: false, + serializeDate: function serializeDate(date4) { + return toISO.call(date4); + }, + skipNulls: false, + strictNullHandling: false + }; + var isNonNullishPrimitive = function isNonNullishPrimitive2(v) { + return typeof v === "string" || typeof v === "number" || typeof v === "boolean" || typeof v === "symbol" || typeof v === "bigint"; + }; + var sentinel = {}; + var stringify2 = function stringify3(object3, prefix, generateArrayPrefix, commaRoundTrip, allowEmptyArrays, strictNullHandling, skipNulls, encodeDotInKeys, encoder, filter, sort, allowDots, serializeDate, format, formatter, encodeValuesOnly, charset, sideChannel) { + var obj = object3; + var tmpSc = sideChannel; + var step = 0; + var findFlag = false; + while ((tmpSc = tmpSc.get(sentinel)) !== void 0 && !findFlag) { + var pos = tmpSc.get(object3); + step += 1; + if (typeof pos !== "undefined") { + if (pos === step) { + throw new RangeError("Cyclic object value"); + } else { + findFlag = true; + } + } + if (typeof tmpSc.get(sentinel) === "undefined") { + step = 0; + } + } + if (typeof filter === "function") { + obj = filter(prefix, obj); + } else if (obj instanceof Date) { + obj = serializeDate(obj); + } else if (generateArrayPrefix === "comma" && isArray(obj)) { + obj = utils.maybeMap(obj, function(value2) { + if (value2 instanceof Date) { + return serializeDate(value2); + } + return value2; + }); + } + if (obj === null) { + if (strictNullHandling) { + return encoder && !encodeValuesOnly ? encoder(prefix, defaults.encoder, charset, "key", format) : prefix; + } + obj = ""; + } + if (isNonNullishPrimitive(obj) || utils.isBuffer(obj)) { + if (encoder) { + var keyValue = encodeValuesOnly ? prefix : encoder(prefix, defaults.encoder, charset, "key", format); + return [formatter(keyValue) + "=" + formatter(encoder(obj, defaults.encoder, charset, "value", format))]; + } + return [formatter(prefix) + "=" + formatter(String(obj))]; + } + var values = []; + if (typeof obj === "undefined") { + return values; + } + var objKeys; + if (generateArrayPrefix === "comma" && isArray(obj)) { + if (encodeValuesOnly && encoder) { + obj = utils.maybeMap(obj, encoder); + } + objKeys = [{ value: obj.length > 0 ? obj.join(",") || null : void 0 }]; + } else if (isArray(filter)) { + objKeys = filter; + } else { + var keys = Object.keys(obj); + objKeys = sort ? keys.sort(sort) : keys; + } + var encodedPrefix = encodeDotInKeys ? String(prefix).replace(/\./g, "%2E") : String(prefix); + var adjustedPrefix = commaRoundTrip && isArray(obj) && obj.length === 1 ? encodedPrefix + "[]" : encodedPrefix; + if (allowEmptyArrays && isArray(obj) && obj.length === 0) { + return adjustedPrefix + "[]"; + } + for (var j = 0; j < objKeys.length; ++j) { + var key = objKeys[j]; + var value = typeof key === "object" && key && typeof key.value !== "undefined" ? key.value : obj[key]; + if (skipNulls && value === null) { + continue; + } + var encodedKey = allowDots && encodeDotInKeys ? String(key).replace(/\./g, "%2E") : String(key); + var keyPrefix = isArray(obj) ? typeof generateArrayPrefix === "function" ? generateArrayPrefix(adjustedPrefix, encodedKey) : adjustedPrefix : adjustedPrefix + (allowDots ? "." + encodedKey : "[" + encodedKey + "]"); + sideChannel.set(object3, step); + var valueSideChannel = getSideChannel(); + valueSideChannel.set(sentinel, sideChannel); + pushToArray(values, stringify3( + value, + keyPrefix, + generateArrayPrefix, + commaRoundTrip, + allowEmptyArrays, + strictNullHandling, + skipNulls, + encodeDotInKeys, + generateArrayPrefix === "comma" && encodeValuesOnly && isArray(obj) ? null : encoder, + filter, + sort, + allowDots, + serializeDate, + format, + formatter, + encodeValuesOnly, + charset, + valueSideChannel + )); + } + return values; + }; + var normalizeStringifyOptions = function normalizeStringifyOptions2(opts) { + if (!opts) { + return defaults; + } + if (typeof opts.allowEmptyArrays !== "undefined" && typeof opts.allowEmptyArrays !== "boolean") { + throw new TypeError("`allowEmptyArrays` option can only be `true` or `false`, when provided"); + } + if (typeof opts.encodeDotInKeys !== "undefined" && typeof opts.encodeDotInKeys !== "boolean") { + throw new TypeError("`encodeDotInKeys` option can only be `true` or `false`, when provided"); + } + if (opts.encoder !== null && typeof opts.encoder !== "undefined" && typeof opts.encoder !== "function") { + throw new TypeError("Encoder has to be a function."); + } + var charset = opts.charset || defaults.charset; + if (typeof opts.charset !== "undefined" && opts.charset !== "utf-8" && opts.charset !== "iso-8859-1") { + throw new TypeError("The charset option must be either utf-8, iso-8859-1, or undefined"); + } + var format = formats["default"]; + if (typeof opts.format !== "undefined") { + if (!has.call(formats.formatters, opts.format)) { + throw new TypeError("Unknown format option provided."); + } + format = opts.format; + } + var formatter = formats.formatters[format]; + var filter = defaults.filter; + if (typeof opts.filter === "function" || isArray(opts.filter)) { + filter = opts.filter; + } + var arrayFormat; + if (opts.arrayFormat in arrayPrefixGenerators) { + arrayFormat = opts.arrayFormat; + } else if ("indices" in opts) { + arrayFormat = opts.indices ? "indices" : "repeat"; + } else { + arrayFormat = defaults.arrayFormat; + } + if ("commaRoundTrip" in opts && typeof opts.commaRoundTrip !== "boolean") { + throw new TypeError("`commaRoundTrip` must be a boolean, or absent"); + } + var allowDots = typeof opts.allowDots === "undefined" ? opts.encodeDotInKeys === true ? true : defaults.allowDots : !!opts.allowDots; + return { + addQueryPrefix: typeof opts.addQueryPrefix === "boolean" ? opts.addQueryPrefix : defaults.addQueryPrefix, + allowDots, + allowEmptyArrays: typeof opts.allowEmptyArrays === "boolean" ? !!opts.allowEmptyArrays : defaults.allowEmptyArrays, + arrayFormat, + charset, + charsetSentinel: typeof opts.charsetSentinel === "boolean" ? opts.charsetSentinel : defaults.charsetSentinel, + commaRoundTrip: !!opts.commaRoundTrip, + delimiter: typeof opts.delimiter === "undefined" ? defaults.delimiter : opts.delimiter, + encode: typeof opts.encode === "boolean" ? opts.encode : defaults.encode, + encodeDotInKeys: typeof opts.encodeDotInKeys === "boolean" ? opts.encodeDotInKeys : defaults.encodeDotInKeys, + encoder: typeof opts.encoder === "function" ? opts.encoder : defaults.encoder, + encodeValuesOnly: typeof opts.encodeValuesOnly === "boolean" ? opts.encodeValuesOnly : defaults.encodeValuesOnly, + filter, + format, + formatter, + serializeDate: typeof opts.serializeDate === "function" ? opts.serializeDate : defaults.serializeDate, + skipNulls: typeof opts.skipNulls === "boolean" ? opts.skipNulls : defaults.skipNulls, + sort: typeof opts.sort === "function" ? opts.sort : null, + strictNullHandling: typeof opts.strictNullHandling === "boolean" ? opts.strictNullHandling : defaults.strictNullHandling + }; + }; + module2.exports = function(object3, opts) { + var obj = object3; + var options = normalizeStringifyOptions(opts); + var objKeys; + var filter; + if (typeof options.filter === "function") { + filter = options.filter; + obj = filter("", obj); + } else if (isArray(options.filter)) { + filter = options.filter; + objKeys = filter; + } + var keys = []; + if (typeof obj !== "object" || obj === null) { + return ""; + } + var generateArrayPrefix = arrayPrefixGenerators[options.arrayFormat]; + var commaRoundTrip = generateArrayPrefix === "comma" && options.commaRoundTrip; + if (!objKeys) { + objKeys = Object.keys(obj); + } + if (options.sort) { + objKeys.sort(options.sort); + } + var sideChannel = getSideChannel(); + for (var i = 0; i < objKeys.length; ++i) { + var key = objKeys[i]; + var value = obj[key]; + if (options.skipNulls && value === null) { + continue; + } + pushToArray(keys, stringify2( + value, + key, + generateArrayPrefix, + commaRoundTrip, + options.allowEmptyArrays, + options.strictNullHandling, + options.skipNulls, + options.encodeDotInKeys, + options.encode ? options.encoder : null, + options.filter, + options.sort, + options.allowDots, + options.serializeDate, + options.format, + options.formatter, + options.encodeValuesOnly, + options.charset, + sideChannel + )); + } + var joined = keys.join(options.delimiter); + var prefix = options.addQueryPrefix === true ? "?" : ""; + if (options.charsetSentinel) { + if (options.charset === "iso-8859-1") { + prefix += "utf8=%26%2310003%3B&"; + } else { + prefix += "utf8=%E2%9C%93&"; + } + } + return joined.length > 0 ? prefix + joined : ""; + }; + } +}); + +// node_modules/qs/lib/parse.js +var require_parse2 = __commonJS({ + "node_modules/qs/lib/parse.js"(exports2, module2) { + "use strict"; + var utils = require_utils3(); + var has = Object.prototype.hasOwnProperty; + var isArray = Array.isArray; + var defaults = { + allowDots: false, + allowEmptyArrays: false, + allowPrototypes: false, + allowSparse: false, + arrayLimit: 20, + charset: "utf-8", + charsetSentinel: false, + comma: false, + decodeDotInKeys: false, + decoder: utils.decode, + delimiter: "&", + depth: 5, + duplicates: "combine", + ignoreQueryPrefix: false, + interpretNumericEntities: false, + parameterLimit: 1e3, + parseArrays: true, + plainObjects: false, + strictDepth: false, + strictMerge: true, + strictNullHandling: false, + throwOnLimitExceeded: false + }; + var interpretNumericEntities = function(str) { + return str.replace(/&#(\d+);/g, function($0, numberStr) { + return String.fromCharCode(parseInt(numberStr, 10)); + }); + }; + var parseArrayValue = function(val, options, currentArrayLength) { + if (val && typeof val === "string" && options.comma && val.indexOf(",") > -1) { + return val.split(","); + } + if (options.throwOnLimitExceeded && currentArrayLength >= options.arrayLimit) { + throw new RangeError("Array limit exceeded. Only " + options.arrayLimit + " element" + (options.arrayLimit === 1 ? "" : "s") + " allowed in an array."); + } + return val; + }; + var isoSentinel = "utf8=%26%2310003%3B"; + var charsetSentinel = "utf8=%E2%9C%93"; + var parseValues = function parseQueryStringValues(str, options) { + var obj = { __proto__: null }; + var cleanStr = options.ignoreQueryPrefix ? str.replace(/^\?/, "") : str; + cleanStr = cleanStr.replace(/%5B/gi, "[").replace(/%5D/gi, "]"); + var limit = options.parameterLimit === Infinity ? void 0 : options.parameterLimit; + var parts = cleanStr.split( + options.delimiter, + options.throwOnLimitExceeded && typeof limit !== "undefined" ? limit + 1 : limit + ); + if (options.throwOnLimitExceeded && typeof limit !== "undefined" && parts.length > limit) { + throw new RangeError("Parameter limit exceeded. Only " + limit + " parameter" + (limit === 1 ? "" : "s") + " allowed."); + } + var skipIndex = -1; + var i; + var charset = options.charset; + if (options.charsetSentinel) { + for (i = 0; i < parts.length; ++i) { + if (parts[i].indexOf("utf8=") === 0) { + if (parts[i] === charsetSentinel) { + charset = "utf-8"; + } else if (parts[i] === isoSentinel) { + charset = "iso-8859-1"; + } + skipIndex = i; + i = parts.length; + } + } + } + for (i = 0; i < parts.length; ++i) { + if (i === skipIndex) { + continue; + } + var part = parts[i]; + var bracketEqualsPos = part.indexOf("]="); + var pos = bracketEqualsPos === -1 ? part.indexOf("=") : bracketEqualsPos + 1; + var key; + var val; + if (pos === -1) { + key = options.decoder(part, defaults.decoder, charset, "key"); + val = options.strictNullHandling ? null : ""; + } else { + key = options.decoder(part.slice(0, pos), defaults.decoder, charset, "key"); + if (key !== null) { + val = utils.maybeMap( + parseArrayValue( + part.slice(pos + 1), + options, + isArray(obj[key]) ? obj[key].length : 0 + ), + function(encodedVal) { + return options.decoder(encodedVal, defaults.decoder, charset, "value"); + } + ); + } + } + if (val && options.interpretNumericEntities && charset === "iso-8859-1") { + val = interpretNumericEntities(String(val)); + } + if (part.indexOf("[]=") > -1) { + val = isArray(val) ? [val] : val; + } + if (options.comma && isArray(val) && val.length > options.arrayLimit) { + if (options.throwOnLimitExceeded) { + throw new RangeError("Array limit exceeded. Only " + options.arrayLimit + " element" + (options.arrayLimit === 1 ? "" : "s") + " allowed in an array."); + } + val = utils.combine([], val, options.arrayLimit, options.plainObjects); + } + if (key !== null) { + var existing = has.call(obj, key); + if (existing && (options.duplicates === "combine" || part.indexOf("[]=") > -1)) { + obj[key] = utils.combine( + obj[key], + val, + options.arrayLimit, + options.plainObjects + ); + } else if (!existing || options.duplicates === "last") { + obj[key] = val; + } + } + } + return obj; + }; + var parseObject = function(chain, val, options, valuesParsed) { + var currentArrayLength = 0; + if (chain.length > 0 && chain[chain.length - 1] === "[]") { + var parentKey = chain.slice(0, -1).join(""); + currentArrayLength = Array.isArray(val) && val[parentKey] ? val[parentKey].length : 0; + } + var leaf = valuesParsed ? val : parseArrayValue(val, options, currentArrayLength); + for (var i = chain.length - 1; i >= 0; --i) { + var obj; + var root = chain[i]; + if (root === "[]" && options.parseArrays) { + if (utils.isOverflow(leaf)) { + obj = leaf; + } else { + obj = options.allowEmptyArrays && (leaf === "" || options.strictNullHandling && leaf === null) ? [] : utils.combine( + [], + leaf, + options.arrayLimit, + options.plainObjects + ); + } + } else { + obj = options.plainObjects ? { __proto__: null } : {}; + var cleanRoot = root.charAt(0) === "[" && root.charAt(root.length - 1) === "]" ? root.slice(1, -1) : root; + var decodedRoot = options.decodeDotInKeys ? cleanRoot.replace(/%2E/g, ".") : cleanRoot; + var index = parseInt(decodedRoot, 10); + var isValidArrayIndex = !isNaN(index) && root !== decodedRoot && String(index) === decodedRoot && index >= 0 && options.parseArrays; + if (!options.parseArrays && decodedRoot === "") { + obj = { 0: leaf }; + } else if (isValidArrayIndex && index < options.arrayLimit) { + obj = []; + obj[index] = leaf; + } else if (isValidArrayIndex && options.throwOnLimitExceeded) { + throw new RangeError("Array limit exceeded. Only " + options.arrayLimit + " element" + (options.arrayLimit === 1 ? "" : "s") + " allowed in an array."); + } else if (isValidArrayIndex) { + obj[index] = leaf; + utils.markOverflow(obj, index); + } else if (decodedRoot !== "__proto__") { + obj[decodedRoot] = leaf; + } + } + leaf = obj; + } + return leaf; + }; + var splitKeyIntoSegments = function splitKeyIntoSegments2(givenKey, options) { + var key = options.allowDots ? givenKey.replace(/\.([^.[]+)/g, "[$1]") : givenKey; + if (options.depth <= 0) { + if (!options.plainObjects && has.call(Object.prototype, key)) { + if (!options.allowPrototypes) { + return; + } + } + return [key]; + } + var brackets = /(\[[^[\]]*])/; + var child = /(\[[^[\]]*])/g; + var segment = brackets.exec(key); + var parent = segment ? key.slice(0, segment.index) : key; + var keys = []; + if (parent) { + if (!options.plainObjects && has.call(Object.prototype, parent)) { + if (!options.allowPrototypes) { + return; + } + } + keys[keys.length] = parent; + } + var i = 0; + while ((segment = child.exec(key)) !== null && i < options.depth) { + i += 1; + var segmentContent = segment[1].slice(1, -1); + if (!options.plainObjects && has.call(Object.prototype, segmentContent)) { + if (!options.allowPrototypes) { + return; + } + } + keys[keys.length] = segment[1]; + } + if (segment) { + if (options.strictDepth === true) { + throw new RangeError("Input depth exceeded depth option of " + options.depth + " and strictDepth is true"); + } + keys[keys.length] = "[" + key.slice(segment.index) + "]"; + } + return keys; + }; + var parseKeys = function parseQueryStringKeys(givenKey, val, options, valuesParsed) { + if (!givenKey) { + return; + } + var keys = splitKeyIntoSegments(givenKey, options); + if (!keys) { + return; + } + return parseObject(keys, val, options, valuesParsed); + }; + var normalizeParseOptions = function normalizeParseOptions2(opts) { + if (!opts) { + return defaults; + } + if (typeof opts.allowEmptyArrays !== "undefined" && typeof opts.allowEmptyArrays !== "boolean") { + throw new TypeError("`allowEmptyArrays` option can only be `true` or `false`, when provided"); + } + if (typeof opts.decodeDotInKeys !== "undefined" && typeof opts.decodeDotInKeys !== "boolean") { + throw new TypeError("`decodeDotInKeys` option can only be `true` or `false`, when provided"); + } + if (opts.decoder !== null && typeof opts.decoder !== "undefined" && typeof opts.decoder !== "function") { + throw new TypeError("Decoder has to be a function."); + } + if (typeof opts.charset !== "undefined" && opts.charset !== "utf-8" && opts.charset !== "iso-8859-1") { + throw new TypeError("The charset option must be either utf-8, iso-8859-1, or undefined"); + } + if (typeof opts.throwOnLimitExceeded !== "undefined" && typeof opts.throwOnLimitExceeded !== "boolean") { + throw new TypeError("`throwOnLimitExceeded` option must be a boolean"); + } + var charset = typeof opts.charset === "undefined" ? defaults.charset : opts.charset; + var duplicates = typeof opts.duplicates === "undefined" ? defaults.duplicates : opts.duplicates; + if (duplicates !== "combine" && duplicates !== "first" && duplicates !== "last") { + throw new TypeError("The duplicates option must be either combine, first, or last"); + } + var allowDots = typeof opts.allowDots === "undefined" ? opts.decodeDotInKeys === true ? true : defaults.allowDots : !!opts.allowDots; + return { + allowDots, + allowEmptyArrays: typeof opts.allowEmptyArrays === "boolean" ? !!opts.allowEmptyArrays : defaults.allowEmptyArrays, + allowPrototypes: typeof opts.allowPrototypes === "boolean" ? opts.allowPrototypes : defaults.allowPrototypes, + allowSparse: typeof opts.allowSparse === "boolean" ? opts.allowSparse : defaults.allowSparse, + arrayLimit: typeof opts.arrayLimit === "number" ? opts.arrayLimit : defaults.arrayLimit, + charset, + charsetSentinel: typeof opts.charsetSentinel === "boolean" ? opts.charsetSentinel : defaults.charsetSentinel, + comma: typeof opts.comma === "boolean" ? opts.comma : defaults.comma, + decodeDotInKeys: typeof opts.decodeDotInKeys === "boolean" ? opts.decodeDotInKeys : defaults.decodeDotInKeys, + decoder: typeof opts.decoder === "function" ? opts.decoder : defaults.decoder, + delimiter: typeof opts.delimiter === "string" || utils.isRegExp(opts.delimiter) ? opts.delimiter : defaults.delimiter, + // eslint-disable-next-line no-implicit-coercion, no-extra-parens + depth: typeof opts.depth === "number" || opts.depth === false ? +opts.depth : defaults.depth, + duplicates, + ignoreQueryPrefix: opts.ignoreQueryPrefix === true, + interpretNumericEntities: typeof opts.interpretNumericEntities === "boolean" ? opts.interpretNumericEntities : defaults.interpretNumericEntities, + parameterLimit: typeof opts.parameterLimit === "number" ? opts.parameterLimit : defaults.parameterLimit, + parseArrays: opts.parseArrays !== false, + plainObjects: typeof opts.plainObjects === "boolean" ? opts.plainObjects : defaults.plainObjects, + strictDepth: typeof opts.strictDepth === "boolean" ? !!opts.strictDepth : defaults.strictDepth, + strictMerge: typeof opts.strictMerge === "boolean" ? !!opts.strictMerge : defaults.strictMerge, + strictNullHandling: typeof opts.strictNullHandling === "boolean" ? opts.strictNullHandling : defaults.strictNullHandling, + throwOnLimitExceeded: typeof opts.throwOnLimitExceeded === "boolean" ? opts.throwOnLimitExceeded : false + }; + }; + module2.exports = function(str, opts) { + var options = normalizeParseOptions(opts); + if (str === "" || str === null || typeof str === "undefined") { + return options.plainObjects ? { __proto__: null } : {}; + } + var tempObj = typeof str === "string" ? parseValues(str, options) : str; + var obj = options.plainObjects ? { __proto__: null } : {}; + var keys = Object.keys(tempObj); + for (var i = 0; i < keys.length; ++i) { + var key = keys[i]; + var newObj = parseKeys(key, tempObj[key], options, typeof str === "string"); + obj = utils.merge(obj, newObj, options); + } + if (options.allowSparse === true) { + return obj; + } + return utils.compact(obj); + }; + } +}); + +// node_modules/qs/lib/index.js +var require_lib2 = __commonJS({ + "node_modules/qs/lib/index.js"(exports2, module2) { + "use strict"; + var stringify2 = require_stringify(); + var parse4 = require_parse2(); + var formats = require_formats2(); + module2.exports = { + formats, + parse: parse4, + stringify: stringify2 + }; + } +}); + +// node_modules/body-parser/lib/types/urlencoded.js +var require_urlencoded = __commonJS({ + "node_modules/body-parser/lib/types/urlencoded.js"(exports2, module2) { + "use strict"; + var createError = require_http_errors(); + var debug = require_src()("body-parser:urlencoded"); + var read = require_read(); + var qs = require_lib2(); + var { normalizeOptions } = require_utils2(); + module2.exports = urlencoded; + function urlencoded(options) { + const normalizedOptions = normalizeOptions(options, "application/x-www-form-urlencoded"); + if (normalizedOptions.defaultCharset !== "utf-8" && normalizedOptions.defaultCharset !== "iso-8859-1") { + throw new TypeError("option defaultCharset must be either utf-8 or iso-8859-1"); + } + var queryparse = createQueryParser(options); + function parse4(body, encoding) { + return body.length ? queryparse(body, encoding) : {}; + } + const readOptions = { + ...normalizedOptions, + // assert charset + isValidCharset: (charset) => charset === "utf-8" || charset === "iso-8859-1" + }; + return function urlencodedParser(req, res, next) { + read(req, res, next, parse4, debug, readOptions); + }; + } + function createQueryParser(options) { + var extended = Boolean(options?.extended); + var parameterLimit = options?.parameterLimit !== void 0 ? options?.parameterLimit : 1e3; + var charsetSentinel = options?.charsetSentinel; + var interpretNumericEntities = options?.interpretNumericEntities; + var depth = extended ? options?.depth !== void 0 ? options?.depth : 32 : 0; + if (isNaN(parameterLimit) || parameterLimit < 1) { + throw new TypeError("option parameterLimit must be a positive number"); + } + if (isNaN(depth) || depth < 0) { + throw new TypeError("option depth must be a zero or a positive number"); + } + if (isFinite(parameterLimit)) { + parameterLimit = parameterLimit | 0; + } + return function queryparse(body, encoding) { + var paramCount = parameterCount(body, parameterLimit); + if (paramCount === void 0) { + debug("too many parameters"); + throw createError(413, "too many parameters", { + type: "parameters.too.many" + }); + } + var arrayLimit = extended ? Math.max(100, paramCount) : paramCount; + debug("parse " + (extended ? "extended " : "") + "urlencoding"); + try { + return qs.parse(body, { + allowPrototypes: true, + arrayLimit, + depth, + charsetSentinel, + interpretNumericEntities, + charset: encoding, + parameterLimit, + strictDepth: true + }); + } catch (err) { + if (err instanceof RangeError) { + throw createError(400, "The input exceeded the depth", { + type: "querystring.parse.rangeError" + }); + } else { + throw err; + } + } + }; + } + function parameterCount(body, limit) { + let count = 0; + let index = -1; + do { + count++; + if (count > limit) return void 0; + index = body.indexOf("&", index + 1); + } while (index !== -1); + return count; + } + } +}); + +// node_modules/body-parser/index.js +var require_body_parser = __commonJS({ + "node_modules/body-parser/index.js"(exports2, module2) { + "use strict"; + exports2 = module2.exports = bodyParser; + Object.defineProperty(exports2, "json", { + configurable: true, + enumerable: true, + get: () => require_json2() + }); + Object.defineProperty(exports2, "raw", { + configurable: true, + enumerable: true, + get: () => require_raw() + }); + Object.defineProperty(exports2, "text", { + configurable: true, + enumerable: true, + get: () => require_text() + }); + Object.defineProperty(exports2, "urlencoded", { + configurable: true, + enumerable: true, + get: () => require_urlencoded() + }); + function bodyParser() { + throw new Error("The bodyParser() generic has been split into individual middleware to use instead."); + } + } +}); + +// node_modules/merge-descriptors/index.js +var require_merge_descriptors = __commonJS({ + "node_modules/merge-descriptors/index.js"(exports2, module2) { + "use strict"; + function mergeDescriptors(destination, source, overwrite = true) { + if (!destination) { + throw new TypeError("The `destination` argument is required."); + } + if (!source) { + throw new TypeError("The `source` argument is required."); + } + for (const name5 of Object.getOwnPropertyNames(source)) { + if (!overwrite && Object.hasOwn(destination, name5)) { + continue; + } + const descriptor = Object.getOwnPropertyDescriptor(source, name5); + Object.defineProperty(destination, name5, descriptor); + } + return destination; + } + module2.exports = mergeDescriptors; + } +}); + +// node_modules/encodeurl/index.js +var require_encodeurl = __commonJS({ + "node_modules/encodeurl/index.js"(exports2, module2) { + "use strict"; + module2.exports = encodeUrl; + var ENCODE_CHARS_REGEXP = /(?:[^\x21\x23-\x3B\x3D\x3F-\x5F\x61-\x7A\x7C\x7E]|%(?:[^0-9A-Fa-f]|[0-9A-Fa-f][^0-9A-Fa-f]|$))+/g; + var UNMATCHED_SURROGATE_PAIR_REGEXP = /(^|[^\uD800-\uDBFF])[\uDC00-\uDFFF]|[\uD800-\uDBFF]([^\uDC00-\uDFFF]|$)/g; + var UNMATCHED_SURROGATE_PAIR_REPLACE = "$1\uFFFD$2"; + function encodeUrl(url2) { + return String(url2).replace(UNMATCHED_SURROGATE_PAIR_REGEXP, UNMATCHED_SURROGATE_PAIR_REPLACE).replace(ENCODE_CHARS_REGEXP, encodeURI); + } + } +}); + +// node_modules/escape-html/index.js +var require_escape_html = __commonJS({ + "node_modules/escape-html/index.js"(exports2, module2) { + "use strict"; + var matchHtmlRegExp = /["'&<>]/; + module2.exports = escapeHtml; + function escapeHtml(string4) { + var str = "" + string4; + var match = matchHtmlRegExp.exec(str); + if (!match) { + return str; + } + var escape2; + var html = ""; + var index = 0; + var lastIndex = 0; + for (index = match.index; index < str.length; index++) { + switch (str.charCodeAt(index)) { + case 34: + escape2 = """; + break; + case 38: + escape2 = "&"; + break; + case 39: + escape2 = "'"; + break; + case 60: + escape2 = "<"; + break; + case 62: + escape2 = ">"; + break; + default: + continue; + } + if (lastIndex !== index) { + html += str.substring(lastIndex, index); + } + lastIndex = index + 1; + html += escape2; + } + return lastIndex !== index ? html + str.substring(lastIndex, index) : html; + } + } +}); + +// node_modules/parseurl/index.js +var require_parseurl = __commonJS({ + "node_modules/parseurl/index.js"(exports2, module2) { + "use strict"; + var url2 = require("url"); + var parse4 = url2.parse; + var Url = url2.Url; + module2.exports = parseurl; + module2.exports.original = originalurl; + function parseurl(req) { + var url3 = req.url; + if (url3 === void 0) { + return void 0; + } + var parsed = req._parsedUrl; + if (fresh(url3, parsed)) { + return parsed; + } + parsed = fastparse(url3); + parsed._raw = url3; + return req._parsedUrl = parsed; + } + function originalurl(req) { + var url3 = req.originalUrl; + if (typeof url3 !== "string") { + return parseurl(req); + } + var parsed = req._parsedOriginalUrl; + if (fresh(url3, parsed)) { + return parsed; + } + parsed = fastparse(url3); + parsed._raw = url3; + return req._parsedOriginalUrl = parsed; + } + function fastparse(str) { + if (typeof str !== "string" || str.charCodeAt(0) !== 47) { + return parse4(str); + } + var pathname = str; + var query = null; + var search = null; + for (var i = 1; i < str.length; i++) { + switch (str.charCodeAt(i)) { + case 63: + if (search === null) { + pathname = str.substring(0, i); + query = str.substring(i + 1); + search = str.substring(i); + } + break; + case 9: + /* \t */ + case 10: + /* \n */ + case 12: + /* \f */ + case 13: + /* \r */ + case 32: + /* */ + case 35: + /* # */ + case 160: + case 65279: + return parse4(str); + } + } + var url3 = Url !== void 0 ? new Url() : {}; + url3.path = str; + url3.href = str; + url3.pathname = pathname; + if (search !== null) { + url3.query = query; + url3.search = search; + } + return url3; + } + function fresh(url3, parsedUrl) { + return typeof parsedUrl === "object" && parsedUrl !== null && (Url === void 0 || parsedUrl instanceof Url) && parsedUrl._raw === url3; + } + } +}); + +// node_modules/finalhandler/index.js +var require_finalhandler = __commonJS({ + "node_modules/finalhandler/index.js"(exports2, module2) { + "use strict"; + var debug = require_src()("finalhandler"); + var encodeUrl = require_encodeurl(); + var escapeHtml = require_escape_html(); + var onFinished = require_on_finished(); + var parseUrl = require_parseurl(); + var statuses = require_statuses(); + var isFinished = onFinished.isFinished; + function createHtmlDocument(message) { + var body = escapeHtml(message).replaceAll("\n", "
").replaceAll(" ", "  "); + return '\n\n\n\nError\n\n\n
' + body + "
\n\n\n"; + } + module2.exports = finalhandler; + function finalhandler(req, res, options) { + var opts = options || {}; + var env = opts.env || process.env.NODE_ENV || "development"; + var onerror = opts.onerror; + return function(err) { + var headers; + var msg; + var status; + if (!err && res.headersSent) { + debug("cannot 404 after headers sent"); + return; + } + if (err) { + status = getErrorStatusCode(err); + if (status === void 0) { + status = getResponseStatusCode(res); + } else { + headers = getErrorHeaders(err); + } + msg = getErrorMessage2(err, status, env); + } else { + status = 404; + msg = "Cannot " + req.method + " " + encodeUrl(getResourceName(req)); + } + debug("default %s", status); + if (err && onerror) { + setImmediate(onerror, err, req, res); + } + if (res.headersSent) { + debug("cannot %d after headers sent", status); + if (req.socket) { + req.socket.destroy(); + } + return; + } + send(req, res, status, headers, msg); + }; + } + function getErrorHeaders(err) { + if (!err.headers || typeof err.headers !== "object") { + return void 0; + } + return { ...err.headers }; + } + function getErrorMessage2(err, status, env) { + var msg; + if (env !== "production") { + msg = err.stack; + if (!msg && typeof err.toString === "function") { + msg = err.toString(); + } + } + return msg || statuses.message[status]; + } + function getErrorStatusCode(err) { + if (typeof err.status === "number" && err.status >= 400 && err.status < 600) { + return err.status; + } + if (typeof err.statusCode === "number" && err.statusCode >= 400 && err.statusCode < 600) { + return err.statusCode; + } + return void 0; + } + function getResourceName(req) { + try { + return parseUrl.original(req).pathname; + } catch (e) { + return "resource"; + } + } + function getResponseStatusCode(res) { + var status = res.statusCode; + if (typeof status !== "number" || status < 400 || status > 599) { + status = 500; + } + return status; + } + function send(req, res, status, headers, message) { + function write() { + var body = createHtmlDocument(message); + res.statusCode = status; + if (req.httpVersionMajor < 2) { + res.statusMessage = statuses.message[status]; + } + res.removeHeader("Content-Encoding"); + res.removeHeader("Content-Language"); + res.removeHeader("Content-Range"); + for (const [key, value] of Object.entries(headers ?? {})) { + res.setHeader(key, value); + } + res.setHeader("Content-Security-Policy", "default-src 'none'"); + res.setHeader("X-Content-Type-Options", "nosniff"); + res.setHeader("Content-Type", "text/html; charset=utf-8"); + res.setHeader("Content-Length", Buffer.byteLength(body, "utf8")); + if (req.method === "HEAD") { + res.end(); + return; + } + res.end(body, "utf8"); + } + if (isFinished(req)) { + write(); + return; + } + req.unpipe(); + onFinished(req, write); + req.resume(); + } + } +}); + +// node_modules/express/lib/view.js +var require_view = __commonJS({ + "node_modules/express/lib/view.js"(exports2, module2) { + "use strict"; + var debug = require_src()("express:view"); + var path9 = require("node:path"); + var fs10 = require("node:fs"); + var dirname = path9.dirname; + var basename = path9.basename; + var extname = path9.extname; + var join = path9.join; + var resolve = path9.resolve; + module2.exports = View; + function View(name5, options) { + var opts = options || {}; + this.defaultEngine = opts.defaultEngine; + this.ext = extname(name5); + this.name = name5; + this.root = opts.root; + if (!this.ext && !this.defaultEngine) { + throw new Error("No default engine was specified and no extension was provided."); + } + var fileName = name5; + if (!this.ext) { + this.ext = this.defaultEngine[0] !== "." ? "." + this.defaultEngine : this.defaultEngine; + fileName += this.ext; + } + if (!opts.engines[this.ext]) { + var mod = this.ext.slice(1); + debug('require "%s"', mod); + var fn = require(mod).__express; + if (typeof fn !== "function") { + throw new Error('Module "' + mod + '" does not provide a view engine.'); + } + opts.engines[this.ext] = fn; + } + this.engine = opts.engines[this.ext]; + this.path = this.lookup(fileName); + } + View.prototype.lookup = function lookup(name5) { + var path10; + var roots = [].concat(this.root); + debug('lookup "%s"', name5); + for (var i = 0; i < roots.length && !path10; i++) { + var root = roots[i]; + var loc = resolve(root, name5); + var dir = dirname(loc); + var file = basename(loc); + path10 = this.resolve(dir, file); + } + return path10; + }; + View.prototype.render = function render(options, callback) { + var sync = true; + debug('render "%s"', this.path); + this.engine(this.path, options, function onRender() { + if (!sync) { + return callback.apply(this, arguments); + } + var args = new Array(arguments.length); + var cntx = this; + for (var i = 0; i < arguments.length; i++) { + args[i] = arguments[i]; + } + return process.nextTick(function renderTick() { + return callback.apply(cntx, args); + }); + }); + sync = false; + }; + View.prototype.resolve = function resolve2(dir, file) { + var ext = this.ext; + var path10 = join(dir, file); + var stat = tryStat(path10); + if (stat && stat.isFile()) { + return path10; + } + path10 = join(dir, basename(file, ext), "index" + ext); + stat = tryStat(path10); + if (stat && stat.isFile()) { + return path10; + } + }; + function tryStat(path10) { + debug('stat "%s"', path10); + try { + return fs10.statSync(path10); + } catch (e) { + return void 0; + } + } + } +}); + +// node_modules/etag/index.js +var require_etag = __commonJS({ + "node_modules/etag/index.js"(exports2, module2) { + "use strict"; + module2.exports = etag; + var crypto11 = require("crypto"); + var Stats = require("fs").Stats; + var toString = Object.prototype.toString; + function entitytag(entity) { + if (entity.length === 0) { + return '"0-2jmj7l5rSw0yVb/vlWAYkK/YBwk"'; + } + var hash = crypto11.createHash("sha1").update(entity, "utf8").digest("base64").substring(0, 27); + var len = typeof entity === "string" ? Buffer.byteLength(entity, "utf8") : entity.length; + return '"' + len.toString(16) + "-" + hash + '"'; + } + function etag(entity, options) { + if (entity == null) { + throw new TypeError("argument entity is required"); + } + var isStats = isstats(entity); + var weak = options && typeof options.weak === "boolean" ? options.weak : isStats; + if (!isStats && typeof entity !== "string" && !Buffer.isBuffer(entity)) { + throw new TypeError("argument entity must be string, Buffer, or fs.Stats"); + } + var tag = isStats ? stattag(entity) : entitytag(entity); + return weak ? "W/" + tag : tag; + } + function isstats(obj) { + if (typeof Stats === "function" && obj instanceof Stats) { + return true; + } + return obj && typeof obj === "object" && "ctime" in obj && toString.call(obj.ctime) === "[object Date]" && "mtime" in obj && toString.call(obj.mtime) === "[object Date]" && "ino" in obj && typeof obj.ino === "number" && "size" in obj && typeof obj.size === "number"; + } + function stattag(stat) { + var mtime = stat.mtime.getTime().toString(16); + var size = stat.size.toString(16); + return '"' + size + "-" + mtime + '"'; + } + } +}); + +// node_modules/forwarded/index.js +var require_forwarded = __commonJS({ + "node_modules/forwarded/index.js"(exports2, module2) { + "use strict"; + module2.exports = forwarded; + function forwarded(req) { + if (!req) { + throw new TypeError("argument req is required"); + } + var proxyAddrs = parse4(req.headers["x-forwarded-for"] || ""); + var socketAddr = getSocketAddr(req); + var addrs = [socketAddr].concat(proxyAddrs); + return addrs; + } + function getSocketAddr(req) { + return req.socket ? req.socket.remoteAddress : req.connection.remoteAddress; + } + function parse4(header) { + var end = header.length; + var list = []; + var start = header.length; + for (var i = header.length - 1; i >= 0; i--) { + switch (header.charCodeAt(i)) { + case 32: + if (start === end) { + start = end = i; + } + break; + case 44: + if (start !== end) { + list.push(header.substring(start, end)); + } + start = end = i; + break; + default: + start = i; + break; + } + } + if (start !== end) { + list.push(header.substring(start, end)); + } + return list; + } + } +}); + +// node_modules/ipaddr.js/lib/ipaddr.js +var require_ipaddr = __commonJS({ + "node_modules/ipaddr.js/lib/ipaddr.js"(exports2, module2) { + (function() { + var expandIPv6, ipaddr, ipv4Part, ipv4Regexes, ipv6Part, ipv6Regexes, matchCIDR, root, zoneIndex; + ipaddr = {}; + root = this; + if (typeof module2 !== "undefined" && module2 !== null && module2.exports) { + module2.exports = ipaddr; + } else { + root["ipaddr"] = ipaddr; + } + matchCIDR = function(first, second, partSize, cidrBits) { + var part, shift; + if (first.length !== second.length) { + throw new Error("ipaddr: cannot match CIDR for objects with different lengths"); + } + part = 0; + while (cidrBits > 0) { + shift = partSize - cidrBits; + if (shift < 0) { + shift = 0; + } + if (first[part] >> shift !== second[part] >> shift) { + return false; + } + cidrBits -= partSize; + part += 1; + } + return true; + }; + ipaddr.subnetMatch = function(address, rangeList, defaultName) { + var k, len, rangeName, rangeSubnets, subnet; + if (defaultName == null) { + defaultName = "unicast"; + } + for (rangeName in rangeList) { + rangeSubnets = rangeList[rangeName]; + if (rangeSubnets[0] && !(rangeSubnets[0] instanceof Array)) { + rangeSubnets = [rangeSubnets]; + } + for (k = 0, len = rangeSubnets.length; k < len; k++) { + subnet = rangeSubnets[k]; + if (address.kind() === subnet[0].kind()) { + if (address.match.apply(address, subnet)) { + return rangeName; + } + } + } + } + return defaultName; + }; + ipaddr.IPv4 = (function() { + function IPv4(octets) { + var k, len, octet; + if (octets.length !== 4) { + throw new Error("ipaddr: ipv4 octet count should be 4"); + } + for (k = 0, len = octets.length; k < len; k++) { + octet = octets[k]; + if (!(0 <= octet && octet <= 255)) { + throw new Error("ipaddr: ipv4 octet should fit in 8 bits"); + } + } + this.octets = octets; + } + IPv4.prototype.kind = function() { + return "ipv4"; + }; + IPv4.prototype.toString = function() { + return this.octets.join("."); + }; + IPv4.prototype.toNormalizedString = function() { + return this.toString(); + }; + IPv4.prototype.toByteArray = function() { + return this.octets.slice(0); + }; + IPv4.prototype.match = function(other, cidrRange) { + var ref; + if (cidrRange === void 0) { + ref = other, other = ref[0], cidrRange = ref[1]; + } + if (other.kind() !== "ipv4") { + throw new Error("ipaddr: cannot match ipv4 address with non-ipv4 one"); + } + return matchCIDR(this.octets, other.octets, 8, cidrRange); + }; + IPv4.prototype.SpecialRanges = { + unspecified: [[new IPv4([0, 0, 0, 0]), 8]], + broadcast: [[new IPv4([255, 255, 255, 255]), 32]], + multicast: [[new IPv4([224, 0, 0, 0]), 4]], + linkLocal: [[new IPv4([169, 254, 0, 0]), 16]], + loopback: [[new IPv4([127, 0, 0, 0]), 8]], + carrierGradeNat: [[new IPv4([100, 64, 0, 0]), 10]], + "private": [[new IPv4([10, 0, 0, 0]), 8], [new IPv4([172, 16, 0, 0]), 12], [new IPv4([192, 168, 0, 0]), 16]], + reserved: [[new IPv4([192, 0, 0, 0]), 24], [new IPv4([192, 0, 2, 0]), 24], [new IPv4([192, 88, 99, 0]), 24], [new IPv4([198, 51, 100, 0]), 24], [new IPv4([203, 0, 113, 0]), 24], [new IPv4([240, 0, 0, 0]), 4]] + }; + IPv4.prototype.range = function() { + return ipaddr.subnetMatch(this, this.SpecialRanges); + }; + IPv4.prototype.toIPv4MappedAddress = function() { + return ipaddr.IPv6.parse("::ffff:" + this.toString()); + }; + IPv4.prototype.prefixLengthFromSubnetMask = function() { + var cidr, i, k, octet, stop, zeros, zerotable; + zerotable = { + 0: 8, + 128: 7, + 192: 6, + 224: 5, + 240: 4, + 248: 3, + 252: 2, + 254: 1, + 255: 0 + }; + cidr = 0; + stop = false; + for (i = k = 3; k >= 0; i = k += -1) { + octet = this.octets[i]; + if (octet in zerotable) { + zeros = zerotable[octet]; + if (stop && zeros !== 0) { + return null; + } + if (zeros !== 8) { + stop = true; + } + cidr += zeros; + } else { + return null; + } + } + return 32 - cidr; + }; + return IPv4; + })(); + ipv4Part = "(0?\\d+|0x[a-f0-9]+)"; + ipv4Regexes = { + fourOctet: new RegExp("^" + ipv4Part + "\\." + ipv4Part + "\\." + ipv4Part + "\\." + ipv4Part + "$", "i"), + longValue: new RegExp("^" + ipv4Part + "$", "i") + }; + ipaddr.IPv4.parser = function(string4) { + var match, parseIntAuto, part, shift, value; + parseIntAuto = function(string5) { + if (string5[0] === "0" && string5[1] !== "x") { + return parseInt(string5, 8); + } else { + return parseInt(string5); + } + }; + if (match = string4.match(ipv4Regexes.fourOctet)) { + return (function() { + var k, len, ref, results; + ref = match.slice(1, 6); + results = []; + for (k = 0, len = ref.length; k < len; k++) { + part = ref[k]; + results.push(parseIntAuto(part)); + } + return results; + })(); + } else if (match = string4.match(ipv4Regexes.longValue)) { + value = parseIntAuto(match[1]); + if (value > 4294967295 || value < 0) { + throw new Error("ipaddr: address outside defined range"); + } + return (function() { + var k, results; + results = []; + for (shift = k = 0; k <= 24; shift = k += 8) { + results.push(value >> shift & 255); + } + return results; + })().reverse(); + } else { + return null; + } + }; + ipaddr.IPv6 = (function() { + function IPv6(parts, zoneId) { + var i, k, l, len, part, ref; + if (parts.length === 16) { + this.parts = []; + for (i = k = 0; k <= 14; i = k += 2) { + this.parts.push(parts[i] << 8 | parts[i + 1]); + } + } else if (parts.length === 8) { + this.parts = parts; + } else { + throw new Error("ipaddr: ipv6 part count should be 8 or 16"); + } + ref = this.parts; + for (l = 0, len = ref.length; l < len; l++) { + part = ref[l]; + if (!(0 <= part && part <= 65535)) { + throw new Error("ipaddr: ipv6 part should fit in 16 bits"); + } + } + if (zoneId) { + this.zoneId = zoneId; + } + } + IPv6.prototype.kind = function() { + return "ipv6"; + }; + IPv6.prototype.toString = function() { + return this.toNormalizedString().replace(/((^|:)(0(:|$))+)/, "::"); + }; + IPv6.prototype.toRFC5952String = function() { + var bestMatchIndex, bestMatchLength, match, regex, string4; + regex = /((^|:)(0(:|$)){2,})/g; + string4 = this.toNormalizedString(); + bestMatchIndex = 0; + bestMatchLength = -1; + while (match = regex.exec(string4)) { + if (match[0].length > bestMatchLength) { + bestMatchIndex = match.index; + bestMatchLength = match[0].length; + } + } + if (bestMatchLength < 0) { + return string4; + } + return string4.substring(0, bestMatchIndex) + "::" + string4.substring(bestMatchIndex + bestMatchLength); + }; + IPv6.prototype.toByteArray = function() { + var bytes, k, len, part, ref; + bytes = []; + ref = this.parts; + for (k = 0, len = ref.length; k < len; k++) { + part = ref[k]; + bytes.push(part >> 8); + bytes.push(part & 255); + } + return bytes; + }; + IPv6.prototype.toNormalizedString = function() { + var addr, part, suffix; + addr = (function() { + var k, len, ref, results; + ref = this.parts; + results = []; + for (k = 0, len = ref.length; k < len; k++) { + part = ref[k]; + results.push(part.toString(16)); + } + return results; + }).call(this).join(":"); + suffix = ""; + if (this.zoneId) { + suffix = "%" + this.zoneId; + } + return addr + suffix; + }; + IPv6.prototype.toFixedLengthString = function() { + var addr, part, suffix; + addr = (function() { + var k, len, ref, results; + ref = this.parts; + results = []; + for (k = 0, len = ref.length; k < len; k++) { + part = ref[k]; + results.push(part.toString(16).padStart(4, "0")); + } + return results; + }).call(this).join(":"); + suffix = ""; + if (this.zoneId) { + suffix = "%" + this.zoneId; + } + return addr + suffix; + }; + IPv6.prototype.match = function(other, cidrRange) { + var ref; + if (cidrRange === void 0) { + ref = other, other = ref[0], cidrRange = ref[1]; + } + if (other.kind() !== "ipv6") { + throw new Error("ipaddr: cannot match ipv6 address with non-ipv6 one"); + } + return matchCIDR(this.parts, other.parts, 16, cidrRange); + }; + IPv6.prototype.SpecialRanges = { + unspecified: [new IPv6([0, 0, 0, 0, 0, 0, 0, 0]), 128], + linkLocal: [new IPv6([65152, 0, 0, 0, 0, 0, 0, 0]), 10], + multicast: [new IPv6([65280, 0, 0, 0, 0, 0, 0, 0]), 8], + loopback: [new IPv6([0, 0, 0, 0, 0, 0, 0, 1]), 128], + uniqueLocal: [new IPv6([64512, 0, 0, 0, 0, 0, 0, 0]), 7], + ipv4Mapped: [new IPv6([0, 0, 0, 0, 0, 65535, 0, 0]), 96], + rfc6145: [new IPv6([0, 0, 0, 0, 65535, 0, 0, 0]), 96], + rfc6052: [new IPv6([100, 65435, 0, 0, 0, 0, 0, 0]), 96], + "6to4": [new IPv6([8194, 0, 0, 0, 0, 0, 0, 0]), 16], + teredo: [new IPv6([8193, 0, 0, 0, 0, 0, 0, 0]), 32], + reserved: [[new IPv6([8193, 3512, 0, 0, 0, 0, 0, 0]), 32]] + }; + IPv6.prototype.range = function() { + return ipaddr.subnetMatch(this, this.SpecialRanges); + }; + IPv6.prototype.isIPv4MappedAddress = function() { + return this.range() === "ipv4Mapped"; + }; + IPv6.prototype.toIPv4Address = function() { + var high, low, ref; + if (!this.isIPv4MappedAddress()) { + throw new Error("ipaddr: trying to convert a generic ipv6 address to ipv4"); + } + ref = this.parts.slice(-2), high = ref[0], low = ref[1]; + return new ipaddr.IPv4([high >> 8, high & 255, low >> 8, low & 255]); + }; + IPv6.prototype.prefixLengthFromSubnetMask = function() { + var cidr, i, k, part, stop, zeros, zerotable; + zerotable = { + 0: 16, + 32768: 15, + 49152: 14, + 57344: 13, + 61440: 12, + 63488: 11, + 64512: 10, + 65024: 9, + 65280: 8, + 65408: 7, + 65472: 6, + 65504: 5, + 65520: 4, + 65528: 3, + 65532: 2, + 65534: 1, + 65535: 0 + }; + cidr = 0; + stop = false; + for (i = k = 7; k >= 0; i = k += -1) { + part = this.parts[i]; + if (part in zerotable) { + zeros = zerotable[part]; + if (stop && zeros !== 0) { + return null; + } + if (zeros !== 16) { + stop = true; + } + cidr += zeros; + } else { + return null; + } + } + return 128 - cidr; + }; + return IPv6; + })(); + ipv6Part = "(?:[0-9a-f]+::?)+"; + zoneIndex = "%[0-9a-z]{1,}"; + ipv6Regexes = { + zoneIndex: new RegExp(zoneIndex, "i"), + "native": new RegExp("^(::)?(" + ipv6Part + ")?([0-9a-f]+)?(::)?(" + zoneIndex + ")?$", "i"), + transitional: new RegExp("^((?:" + ipv6Part + ")|(?:::)(?:" + ipv6Part + ")?)" + (ipv4Part + "\\." + ipv4Part + "\\." + ipv4Part + "\\." + ipv4Part) + ("(" + zoneIndex + ")?$"), "i") + }; + expandIPv6 = function(string4, parts) { + var colonCount, lastColon, part, replacement, replacementCount, zoneId; + if (string4.indexOf("::") !== string4.lastIndexOf("::")) { + return null; + } + zoneId = (string4.match(ipv6Regexes["zoneIndex"]) || [])[0]; + if (zoneId) { + zoneId = zoneId.substring(1); + string4 = string4.replace(/%.+$/, ""); + } + colonCount = 0; + lastColon = -1; + while ((lastColon = string4.indexOf(":", lastColon + 1)) >= 0) { + colonCount++; + } + if (string4.substr(0, 2) === "::") { + colonCount--; + } + if (string4.substr(-2, 2) === "::") { + colonCount--; + } + if (colonCount > parts) { + return null; + } + replacementCount = parts - colonCount; + replacement = ":"; + while (replacementCount--) { + replacement += "0:"; + } + string4 = string4.replace("::", replacement); + if (string4[0] === ":") { + string4 = string4.slice(1); + } + if (string4[string4.length - 1] === ":") { + string4 = string4.slice(0, -1); + } + parts = (function() { + var k, len, ref, results; + ref = string4.split(":"); + results = []; + for (k = 0, len = ref.length; k < len; k++) { + part = ref[k]; + results.push(parseInt(part, 16)); + } + return results; + })(); + return { + parts, + zoneId + }; + }; + ipaddr.IPv6.parser = function(string4) { + var addr, k, len, match, octet, octets, zoneId; + if (ipv6Regexes["native"].test(string4)) { + return expandIPv6(string4, 8); + } else if (match = string4.match(ipv6Regexes["transitional"])) { + zoneId = match[6] || ""; + addr = expandIPv6(match[1].slice(0, -1) + zoneId, 6); + if (addr.parts) { + octets = [parseInt(match[2]), parseInt(match[3]), parseInt(match[4]), parseInt(match[5])]; + for (k = 0, len = octets.length; k < len; k++) { + octet = octets[k]; + if (!(0 <= octet && octet <= 255)) { + return null; + } + } + addr.parts.push(octets[0] << 8 | octets[1]); + addr.parts.push(octets[2] << 8 | octets[3]); + return { + parts: addr.parts, + zoneId: addr.zoneId + }; + } + } + return null; + }; + ipaddr.IPv4.isIPv4 = ipaddr.IPv6.isIPv6 = function(string4) { + return this.parser(string4) !== null; + }; + ipaddr.IPv4.isValid = function(string4) { + var e; + try { + new this(this.parser(string4)); + return true; + } catch (error1) { + e = error1; + return false; + } + }; + ipaddr.IPv4.isValidFourPartDecimal = function(string4) { + if (ipaddr.IPv4.isValid(string4) && string4.match(/^(0|[1-9]\d*)(\.(0|[1-9]\d*)){3}$/)) { + return true; + } else { + return false; + } + }; + ipaddr.IPv6.isValid = function(string4) { + var addr, e; + if (typeof string4 === "string" && string4.indexOf(":") === -1) { + return false; + } + try { + addr = this.parser(string4); + new this(addr.parts, addr.zoneId); + return true; + } catch (error1) { + e = error1; + return false; + } + }; + ipaddr.IPv4.parse = function(string4) { + var parts; + parts = this.parser(string4); + if (parts === null) { + throw new Error("ipaddr: string is not formatted like ip address"); + } + return new this(parts); + }; + ipaddr.IPv6.parse = function(string4) { + var addr; + addr = this.parser(string4); + if (addr.parts === null) { + throw new Error("ipaddr: string is not formatted like ip address"); + } + return new this(addr.parts, addr.zoneId); + }; + ipaddr.IPv4.parseCIDR = function(string4) { + var maskLength, match, parsed; + if (match = string4.match(/^(.+)\/(\d+)$/)) { + maskLength = parseInt(match[2]); + if (maskLength >= 0 && maskLength <= 32) { + parsed = [this.parse(match[1]), maskLength]; + Object.defineProperty(parsed, "toString", { + value: function() { + return this.join("/"); + } + }); + return parsed; + } + } + throw new Error("ipaddr: string is not formatted like an IPv4 CIDR range"); + }; + ipaddr.IPv4.subnetMaskFromPrefixLength = function(prefix) { + var filledOctetCount, j, octets; + prefix = parseInt(prefix); + if (prefix < 0 || prefix > 32) { + throw new Error("ipaddr: invalid IPv4 prefix length"); + } + octets = [0, 0, 0, 0]; + j = 0; + filledOctetCount = Math.floor(prefix / 8); + while (j < filledOctetCount) { + octets[j] = 255; + j++; + } + if (filledOctetCount < 4) { + octets[filledOctetCount] = Math.pow(2, prefix % 8) - 1 << 8 - prefix % 8; + } + return new this(octets); + }; + ipaddr.IPv4.broadcastAddressFromCIDR = function(string4) { + var cidr, error2, i, ipInterfaceOctets, octets, subnetMaskOctets; + try { + cidr = this.parseCIDR(string4); + ipInterfaceOctets = cidr[0].toByteArray(); + subnetMaskOctets = this.subnetMaskFromPrefixLength(cidr[1]).toByteArray(); + octets = []; + i = 0; + while (i < 4) { + octets.push(parseInt(ipInterfaceOctets[i], 10) | parseInt(subnetMaskOctets[i], 10) ^ 255); + i++; + } + return new this(octets); + } catch (error1) { + error2 = error1; + throw new Error("ipaddr: the address does not have IPv4 CIDR format"); + } + }; + ipaddr.IPv4.networkAddressFromCIDR = function(string4) { + var cidr, error2, i, ipInterfaceOctets, octets, subnetMaskOctets; + try { + cidr = this.parseCIDR(string4); + ipInterfaceOctets = cidr[0].toByteArray(); + subnetMaskOctets = this.subnetMaskFromPrefixLength(cidr[1]).toByteArray(); + octets = []; + i = 0; + while (i < 4) { + octets.push(parseInt(ipInterfaceOctets[i], 10) & parseInt(subnetMaskOctets[i], 10)); + i++; + } + return new this(octets); + } catch (error1) { + error2 = error1; + throw new Error("ipaddr: the address does not have IPv4 CIDR format"); + } + }; + ipaddr.IPv6.parseCIDR = function(string4) { + var maskLength, match, parsed; + if (match = string4.match(/^(.+)\/(\d+)$/)) { + maskLength = parseInt(match[2]); + if (maskLength >= 0 && maskLength <= 128) { + parsed = [this.parse(match[1]), maskLength]; + Object.defineProperty(parsed, "toString", { + value: function() { + return this.join("/"); + } + }); + return parsed; + } + } + throw new Error("ipaddr: string is not formatted like an IPv6 CIDR range"); + }; + ipaddr.isValid = function(string4) { + return ipaddr.IPv6.isValid(string4) || ipaddr.IPv4.isValid(string4); + }; + ipaddr.parse = function(string4) { + if (ipaddr.IPv6.isValid(string4)) { + return ipaddr.IPv6.parse(string4); + } else if (ipaddr.IPv4.isValid(string4)) { + return ipaddr.IPv4.parse(string4); + } else { + throw new Error("ipaddr: the address has neither IPv6 nor IPv4 format"); + } + }; + ipaddr.parseCIDR = function(string4) { + var e; + try { + return ipaddr.IPv6.parseCIDR(string4); + } catch (error1) { + e = error1; + try { + return ipaddr.IPv4.parseCIDR(string4); + } catch (error12) { + e = error12; + throw new Error("ipaddr: the address has neither IPv6 nor IPv4 CIDR format"); + } + } + }; + ipaddr.fromByteArray = function(bytes) { + var length; + length = bytes.length; + if (length === 4) { + return new ipaddr.IPv4(bytes); + } else if (length === 16) { + return new ipaddr.IPv6(bytes); + } else { + throw new Error("ipaddr: the binary input is neither an IPv6 nor IPv4 address"); + } + }; + ipaddr.process = function(string4) { + var addr; + addr = this.parse(string4); + if (addr.kind() === "ipv6" && addr.isIPv4MappedAddress()) { + return addr.toIPv4Address(); + } else { + return addr; + } + }; + }).call(exports2); + } +}); + +// node_modules/proxy-addr/index.js +var require_proxy_addr = __commonJS({ + "node_modules/proxy-addr/index.js"(exports2, module2) { + "use strict"; + module2.exports = proxyaddr; + module2.exports.all = alladdrs; + module2.exports.compile = compile; + var forwarded = require_forwarded(); + var ipaddr = require_ipaddr(); + var DIGIT_REGEXP = /^[0-9]+$/; + var isip = ipaddr.isValid; + var parseip = ipaddr.parse; + var IP_RANGES = { + linklocal: ["169.254.0.0/16", "fe80::/10"], + loopback: ["127.0.0.1/8", "::1/128"], + uniquelocal: ["10.0.0.0/8", "172.16.0.0/12", "192.168.0.0/16", "fc00::/7"] + }; + function alladdrs(req, trust) { + var addrs = forwarded(req); + if (!trust) { + return addrs; + } + if (typeof trust !== "function") { + trust = compile(trust); + } + for (var i = 0; i < addrs.length - 1; i++) { + if (trust(addrs[i], i)) continue; + addrs.length = i + 1; + } + return addrs; + } + function compile(val) { + if (!val) { + throw new TypeError("argument is required"); + } + var trust; + if (typeof val === "string") { + trust = [val]; + } else if (Array.isArray(val)) { + trust = val.slice(); + } else { + throw new TypeError("unsupported trust argument"); + } + for (var i = 0; i < trust.length; i++) { + val = trust[i]; + if (!Object.prototype.hasOwnProperty.call(IP_RANGES, val)) { + continue; + } + val = IP_RANGES[val]; + trust.splice.apply(trust, [i, 1].concat(val)); + i += val.length - 1; + } + return compileTrust(compileRangeSubnets(trust)); + } + function compileRangeSubnets(arr) { + var rangeSubnets = new Array(arr.length); + for (var i = 0; i < arr.length; i++) { + rangeSubnets[i] = parseipNotation(arr[i]); + } + return rangeSubnets; + } + function compileTrust(rangeSubnets) { + var len = rangeSubnets.length; + return len === 0 ? trustNone : len === 1 ? trustSingle(rangeSubnets[0]) : trustMulti(rangeSubnets); + } + function parseipNotation(note) { + var pos = note.lastIndexOf("/"); + var str = pos !== -1 ? note.substring(0, pos) : note; + if (!isip(str)) { + throw new TypeError("invalid IP address: " + str); + } + var ip = parseip(str); + if (pos === -1 && ip.kind() === "ipv6" && ip.isIPv4MappedAddress()) { + ip = ip.toIPv4Address(); + } + var max = ip.kind() === "ipv6" ? 128 : 32; + var range = pos !== -1 ? note.substring(pos + 1, note.length) : null; + if (range === null) { + range = max; + } else if (DIGIT_REGEXP.test(range)) { + range = parseInt(range, 10); + } else if (ip.kind() === "ipv4" && isip(range)) { + range = parseNetmask(range); + } else { + range = null; + } + if (range <= 0 || range > max) { + throw new TypeError("invalid range on address: " + note); + } + return [ip, range]; + } + function parseNetmask(netmask) { + var ip = parseip(netmask); + var kind = ip.kind(); + return kind === "ipv4" ? ip.prefixLengthFromSubnetMask() : null; + } + function proxyaddr(req, trust) { + if (!req) { + throw new TypeError("req argument is required"); + } + if (!trust) { + throw new TypeError("trust argument is required"); + } + var addrs = alladdrs(req, trust); + var addr = addrs[addrs.length - 1]; + return addr; + } + function trustNone() { + return false; + } + function trustMulti(subnets) { + return function trust(addr) { + if (!isip(addr)) return false; + var ip = parseip(addr); + var ipconv; + var kind = ip.kind(); + for (var i = 0; i < subnets.length; i++) { + var subnet = subnets[i]; + var subnetip = subnet[0]; + var subnetkind = subnetip.kind(); + var subnetrange = subnet[1]; + var trusted = ip; + if (kind !== subnetkind) { + if (subnetkind === "ipv4" && !ip.isIPv4MappedAddress()) { + continue; + } + if (!ipconv) { + ipconv = subnetkind === "ipv4" ? ip.toIPv4Address() : ip.toIPv4MappedAddress(); + } + trusted = ipconv; + } + if (trusted.match(subnetip, subnetrange)) { + return true; + } + } + return false; + }; + } + function trustSingle(subnet) { + var subnetip = subnet[0]; + var subnetkind = subnetip.kind(); + var subnetisipv4 = subnetkind === "ipv4"; + var subnetrange = subnet[1]; + return function trust(addr) { + if (!isip(addr)) return false; + var ip = parseip(addr); + var kind = ip.kind(); + if (kind !== subnetkind) { + if (subnetisipv4 && !ip.isIPv4MappedAddress()) { + return false; + } + ip = subnetisipv4 ? ip.toIPv4Address() : ip.toIPv4MappedAddress(); + } + return ip.match(subnetip, subnetrange); + }; + } + } +}); + +// node_modules/express/lib/utils.js +var require_utils4 = __commonJS({ + "node_modules/express/lib/utils.js"(exports2) { + "use strict"; + var { METHODS } = require("node:http"); + var contentType = require_content_type(); + var etag = require_etag(); + var mime = require_mime_types(); + var proxyaddr = require_proxy_addr(); + var qs = require_lib2(); + var querystring = require("node:querystring"); + var { Buffer: Buffer5 } = require("node:buffer"); + exports2.methods = METHODS.map((method) => method.toLowerCase()); + exports2.etag = createETagGenerator({ weak: false }); + exports2.wetag = createETagGenerator({ weak: true }); + exports2.normalizeType = function(type) { + return ~type.indexOf("/") ? acceptParams(type) : { value: mime.lookup(type) || "application/octet-stream", params: {} }; + }; + exports2.normalizeTypes = function(types) { + return types.map(exports2.normalizeType); + }; + function acceptParams(str) { + var length = str.length; + var colonIndex = str.indexOf(";"); + var index = colonIndex === -1 ? length : colonIndex; + var ret = { value: str.slice(0, index).trim(), quality: 1, params: {} }; + while (index < length) { + var splitIndex = str.indexOf("=", index); + if (splitIndex === -1) break; + var colonIndex = str.indexOf(";", index); + var endIndex = colonIndex === -1 ? length : colonIndex; + if (splitIndex > endIndex) { + index = str.lastIndexOf(";", splitIndex - 1) + 1; + continue; + } + var key = str.slice(index, splitIndex).trim(); + var value = str.slice(splitIndex + 1, endIndex).trim(); + if (key === "q") { + ret.quality = parseFloat(value); + } else { + ret.params[key] = value; + } + index = endIndex + 1; + } + return ret; + } + exports2.compileETag = function(val) { + var fn; + if (typeof val === "function") { + return val; + } + switch (val) { + case true: + case "weak": + fn = exports2.wetag; + break; + case false: + break; + case "strong": + fn = exports2.etag; + break; + default: + throw new TypeError("unknown value for etag function: " + val); + } + return fn; + }; + exports2.compileQueryParser = function compileQueryParser(val) { + var fn; + if (typeof val === "function") { + return val; + } + switch (val) { + case true: + case "simple": + fn = querystring.parse; + break; + case false: + break; + case "extended": + fn = parseExtendedQueryString; + break; + default: + throw new TypeError("unknown value for query parser function: " + val); + } + return fn; + }; + exports2.compileTrust = function(val) { + if (typeof val === "function") return val; + if (val === true) { + return function() { + return true; + }; + } + if (typeof val === "number") { + return function(a, i) { + return i < val; + }; + } + if (typeof val === "string") { + val = val.split(",").map(function(v) { + return v.trim(); + }); + } + return proxyaddr.compile(val || []); + }; + exports2.setCharset = function setCharset(type, charset) { + if (!type || !charset) { + return type; + } + var parsed = contentType.parse(type); + parsed.parameters.charset = charset; + return contentType.format(parsed); + }; + function createETagGenerator(options) { + return function generateETag(body, encoding) { + var buf = !Buffer5.isBuffer(body) ? Buffer5.from(body, encoding) : body; + return etag(buf, options); + }; + } + function parseExtendedQueryString(str) { + return qs.parse(str, { + allowPrototypes: true + }); + } + } +}); + +// node_modules/wrappy/wrappy.js +var require_wrappy = __commonJS({ + "node_modules/wrappy/wrappy.js"(exports2, module2) { + module2.exports = wrappy; + function wrappy(fn, cb) { + if (fn && cb) return wrappy(fn)(cb); + if (typeof fn !== "function") + throw new TypeError("need wrapper function"); + Object.keys(fn).forEach(function(k) { + wrapper[k] = fn[k]; + }); + return wrapper; + function wrapper() { + var args = new Array(arguments.length); + for (var i = 0; i < args.length; i++) { + args[i] = arguments[i]; + } + var ret = fn.apply(this, args); + var cb2 = args[args.length - 1]; + if (typeof ret === "function" && ret !== cb2) { + Object.keys(cb2).forEach(function(k) { + ret[k] = cb2[k]; + }); + } + return ret; + } + } + } +}); + +// node_modules/once/once.js +var require_once2 = __commonJS({ + "node_modules/once/once.js"(exports2, module2) { + var wrappy = require_wrappy(); + module2.exports = wrappy(once); + module2.exports.strict = wrappy(onceStrict); + once.proto = once(function() { + Object.defineProperty(Function.prototype, "once", { + value: function() { + return once(this); + }, + configurable: true + }); + Object.defineProperty(Function.prototype, "onceStrict", { + value: function() { + return onceStrict(this); + }, + configurable: true + }); + }); + function once(fn) { + var f = function() { + if (f.called) return f.value; + f.called = true; + return f.value = fn.apply(this, arguments); + }; + f.called = false; + return f; + } + function onceStrict(fn) { + var f = function() { + if (f.called) + throw new Error(f.onceError); + f.called = true; + return f.value = fn.apply(this, arguments); + }; + var name5 = fn.name || "Function wrapped with `once`"; + f.onceError = name5 + " shouldn't be called more than once"; + f.called = false; + return f; + } + } +}); + +// node_modules/is-promise/index.js +var require_is_promise = __commonJS({ + "node_modules/is-promise/index.js"(exports2, module2) { + module2.exports = isPromise2; + module2.exports.default = isPromise2; + function isPromise2(obj) { + return !!obj && (typeof obj === "object" || typeof obj === "function") && typeof obj.then === "function"; + } + } +}); + +// node_modules/path-to-regexp/dist/index.js +var require_dist5 = __commonJS({ + "node_modules/path-to-regexp/dist/index.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { value: true }); + exports2.PathError = exports2.TokenData = void 0; + exports2.parse = parse4; + exports2.compile = compile; + exports2.match = match; + exports2.pathToRegexp = pathToRegexp; + exports2.stringify = stringify2; + var DEFAULT_DELIMITER2 = "/"; + var NOOP_VALUE = (value) => value; + var ID_START = /^[$_\p{ID_Start}]$/u; + var ID_CONTINUE = /^[$\u200c\u200d\p{ID_Continue}]$/u; + var ID = /^[$_\p{ID_Start}][$\u200c\u200d\p{ID_Continue}]*$/u; + function escapeText(str) { + return str.replace(/[{}()\[\]+?!:*\\]/g, "\\$&"); + } + function escape2(str) { + return str.replace(/[.+*?^${}()[\]|/\\]/g, "\\$&"); + } + var TokenData = class { + constructor(tokens, originalPath) { + this.tokens = tokens; + this.originalPath = originalPath; + } + }; + exports2.TokenData = TokenData; + var PathError = class extends TypeError { + constructor(message, originalPath) { + let text = message; + if (originalPath) + text += `: ${originalPath}`; + text += `; visit https://git.new/pathToRegexpError for info`; + super(text); + this.originalPath = originalPath; + } + }; + exports2.PathError = PathError; + function parse4(str, options = {}) { + const { encodePath = NOOP_VALUE } = options; + const chars = [...str]; + let index = 0; + function consumeUntil(end) { + const output = []; + let path9 = ""; + function writePath() { + if (!path9) + return; + output.push({ + type: "text", + value: encodePath(path9) + }); + path9 = ""; + } + while (index < chars.length) { + const value = chars[index++]; + if (value === end) { + writePath(); + return output; + } + if (value === "\\") { + if (index === chars.length) { + throw new PathError(`Unexpected end after \\ at index ${index}`, str); + } + path9 += chars[index++]; + continue; + } + if (value === ":" || value === "*") { + const type = value === ":" ? "param" : "wildcard"; + let name5 = ""; + if (ID_START.test(chars[index])) { + do { + name5 += chars[index++]; + } while (ID_CONTINUE.test(chars[index])); + } else if (chars[index] === '"') { + let quoteStart = index; + while (index < chars.length) { + if (chars[++index] === '"') { + index++; + quoteStart = 0; + break; + } + if (chars[index] === "\\") + index++; + name5 += chars[index]; + } + if (quoteStart) { + throw new PathError(`Unterminated quote at index ${quoteStart}`, str); + } + } + if (!name5) { + throw new PathError(`Missing parameter name at index ${index}`, str); + } + writePath(); + output.push({ type, name: name5 }); + continue; + } + if (value === "{") { + writePath(); + output.push({ + type: "group", + tokens: consumeUntil("}") + }); + continue; + } + if (value === "}" || value === "(" || value === ")" || value === "[" || value === "]" || value === "+" || value === "?" || value === "!") { + throw new PathError(`Unexpected ${value} at index ${index - 1}`, str); + } + path9 += value; + } + if (end) { + throw new PathError(`Unexpected end at index ${index}, expected ${end}`, str); + } + writePath(); + return output; + } + return new TokenData(consumeUntil(""), str); + } + function compile(path9, options = {}) { + const { encode: encode2 = encodeURIComponent, delimiter = DEFAULT_DELIMITER2 } = options; + const data = typeof path9 === "object" ? path9 : parse4(path9, options); + const fn = tokensToFunction(data.tokens, delimiter, encode2); + return function path10(params = {}) { + const missing = []; + const path11 = fn(params, missing); + if (missing.length) { + throw new TypeError(`Missing parameters: ${missing.join(", ")}`); + } + return path11; + }; + } + function tokensToFunction(tokens, delimiter, encode2) { + const encoders = tokens.map((token) => tokenToFunction(token, delimiter, encode2)); + return (data, missing) => { + let result = ""; + for (const encoder of encoders) { + result += encoder(data, missing); + } + return result; + }; + } + function tokenToFunction(token, delimiter, encode2) { + if (token.type === "text") + return () => token.value; + if (token.type === "group") { + const fn = tokensToFunction(token.tokens, delimiter, encode2); + return (data, missing) => { + const len = missing.length; + const value = fn(data, missing); + if (missing.length === len) + return value; + missing.length = len; + return ""; + }; + } + const encodeValue2 = encode2 || NOOP_VALUE; + if (token.type === "wildcard" && encode2 !== false) { + return (data, missing) => { + const value = data[token.name]; + if (value == null) { + missing.push(token.name); + return ""; + } + if (!Array.isArray(value) || value.length === 0) { + throw new TypeError(`Expected "${token.name}" to be a non-empty array`); + } + let result = ""; + for (let i = 0; i < value.length; i++) { + if (typeof value[i] !== "string") { + throw new TypeError(`Expected "${token.name}/${i}" to be a string`); + } + if (i > 0) + result += delimiter; + result += encodeValue2(value[i]); + } + return result; + }; + } + return (data, missing) => { + const value = data[token.name]; + if (value == null) { + missing.push(token.name); + return ""; + } + if (typeof value !== "string") { + throw new TypeError(`Expected "${token.name}" to be a string`); + } + return encodeValue2(value); + }; + } + function match(path9, options = {}) { + const { decode = decodeURIComponent, delimiter = DEFAULT_DELIMITER2 } = options; + const { regexp, keys } = pathToRegexp(path9, options); + const decoders = keys.map((key) => { + if (decode === false) + return NOOP_VALUE; + if (key.type === "param") + return decode; + return (value) => value.split(delimiter).map(decode); + }); + return function match2(input) { + const m = regexp.exec(input); + if (!m) + return false; + const path10 = m[0]; + const params = /* @__PURE__ */ Object.create(null); + for (let i = 1; i < m.length; i++) { + if (m[i] === void 0) + continue; + const key = keys[i - 1]; + const decoder = decoders[i - 1]; + params[key.name] = decoder(m[i]); + } + return { path: path10, params }; + }; + } + function pathToRegexp(path9, options = {}) { + const { delimiter = DEFAULT_DELIMITER2, end = true, sensitive = false, trailing = true } = options; + const keys = []; + let source = ""; + let combinations = 0; + function process15(path10) { + if (Array.isArray(path10)) { + for (const p of path10) + process15(p); + return; + } + const data = typeof path10 === "object" ? path10 : parse4(path10, options); + flatten(data.tokens, 0, [], (tokens) => { + if (combinations >= 256) { + throw new PathError("Too many path combinations", data.originalPath); + } + if (combinations > 0) + source += "|"; + source += toRegExpSource(tokens, delimiter, keys, data.originalPath); + combinations++; + }); + } + process15(path9); + let pattern = `^(?:${source})`; + if (trailing) + pattern += "(?:" + escape2(delimiter) + "$)?"; + pattern += end ? "$" : "(?=" + escape2(delimiter) + "|$)"; + return { regexp: new RegExp(pattern, sensitive ? "" : "i"), keys }; + } + function flatten(tokens, index, result, callback) { + while (index < tokens.length) { + const token = tokens[index++]; + if (token.type === "group") { + const len = result.length; + flatten(token.tokens, 0, result, (seq) => flatten(tokens, index, seq, callback)); + result.length = len; + continue; + } + result.push(token); + } + callback(result); + } + function toRegExpSource(tokens, delimiter, keys, originalPath) { + let result = ""; + let backtrack = ""; + let wildcardBacktrack = ""; + let prevCaptureType = 0; + let hasSegmentCapture = 0; + let index = 0; + function hasInSegment(index2, type) { + while (index2 < tokens.length) { + const token = tokens[index2++]; + if (token.type === type) + return true; + if (token.type === "text") { + if (token.value.includes(delimiter)) + break; + } + } + return false; + } + function peekText(index2) { + let result2 = ""; + while (index2 < tokens.length) { + const token = tokens[index2++]; + if (token.type !== "text") + break; + result2 += token.value; + } + return result2; + } + while (index < tokens.length) { + const token = tokens[index++]; + if (token.type === "text") { + result += escape2(token.value); + backtrack += token.value; + if (prevCaptureType === 2) + wildcardBacktrack += token.value; + if (token.value.includes(delimiter)) + hasSegmentCapture = 0; + continue; + } + if (token.type === "param" || token.type === "wildcard") { + if (prevCaptureType && !backtrack) { + throw new PathError(`Missing text before "${token.name}" ${token.type}`, originalPath); + } + if (token.type === "param") { + result += hasSegmentCapture & 2 ? `(${negate(delimiter, backtrack)}+)` : hasInSegment(index, "wildcard") ? `(${negate(delimiter, peekText(index))}+)` : hasSegmentCapture & 1 ? `(${negate(delimiter, backtrack)}+|${escape2(backtrack)})` : `(${negate(delimiter, "")}+)`; + hasSegmentCapture |= prevCaptureType = 1; + } else { + result += hasSegmentCapture & 2 ? `(${negate(backtrack, "")}+)` : wildcardBacktrack ? `(${negate(wildcardBacktrack, "")}+|${negate(delimiter, "")}+)` : `([^]+)`; + wildcardBacktrack = ""; + hasSegmentCapture |= prevCaptureType = 2; + } + keys.push(token); + backtrack = ""; + continue; + } + throw new TypeError(`Unknown token type: ${token.type}`); + } + return result; + } + function negate(a, b) { + if (b.length > a.length) + return negate(b, a); + if (a === b) + b = ""; + if (b.length > 1) + return `(?:(?!${escape2(a)}|${escape2(b)})[^])`; + if (a.length > 1) + return `(?:(?!${escape2(a)})[^${escape2(b)}])`; + return `[^${escape2(a + b)}]`; + } + function stringifyTokens(tokens, index) { + let value = ""; + while (index < tokens.length) { + const token = tokens[index++]; + if (token.type === "text") { + value += escapeText(token.value); + continue; + } + if (token.type === "group") { + value += "{" + stringifyTokens(token.tokens, 0) + "}"; + continue; + } + if (token.type === "param") { + value += ":" + stringifyName(token.name, tokens[index]); + continue; + } + if (token.type === "wildcard") { + value += "*" + stringifyName(token.name, tokens[index]); + continue; + } + throw new TypeError(`Unknown token type: ${token.type}`); + } + return value; + } + function stringify2(data) { + return stringifyTokens(data.tokens, 0); + } + function stringifyName(name5, next) { + if (!ID.test(name5)) + return JSON.stringify(name5); + if ((next === null || next === void 0 ? void 0 : next.type) === "text" && ID_CONTINUE.test(next.value[0])) { + return JSON.stringify(name5); + } + return name5; + } + } +}); + +// node_modules/router/lib/layer.js +var require_layer = __commonJS({ + "node_modules/router/lib/layer.js"(exports2, module2) { + "use strict"; + var isPromise2 = require_is_promise(); + var pathRegexp = require_dist5(); + var debug = require_src()("router:layer"); + var deprecate = require_depd()("router"); + var TRAILING_SLASH_REGEXP = /\/+$/; + var MATCHING_GROUP_REGEXP = /\((?:\?<(.*?)>)?(?!\?)/g; + module2.exports = Layer; + function Layer(path9, options, fn) { + if (!(this instanceof Layer)) { + return new Layer(path9, options, fn); + } + debug("new %o", path9); + const opts = options || {}; + this.handle = fn; + this.keys = []; + this.name = fn.name || ""; + this.params = void 0; + this.path = void 0; + this.slash = path9 === "/" && opts.end === false; + function matcher(_path) { + if (_path instanceof RegExp) { + const keys = []; + let name5 = 0; + let m; + while (m = MATCHING_GROUP_REGEXP.exec(_path.source)) { + keys.push({ + name: m[1] || name5++, + offset: m.index + }); + } + return function regexpMatcher(p) { + const match = _path.exec(p); + if (!match) { + return false; + } + const params = {}; + for (let i = 1; i < match.length; i++) { + const key = keys[i - 1]; + const prop = key.name; + const val = decodeParam(match[i]); + if (val !== void 0) { + params[prop] = val; + } + } + return { + params, + path: match[0] + }; + }; + } + return pathRegexp.match(opts.strict ? _path : loosen(_path), { + sensitive: opts.sensitive, + end: opts.end, + trailing: !opts.strict, + decode: decodeParam + }); + } + this.matchers = Array.isArray(path9) ? path9.map(matcher) : [matcher(path9)]; + } + Layer.prototype.handleError = function handleError(error2, req, res, next) { + const fn = this.handle; + if (fn.length !== 4) { + return next(error2); + } + try { + const ret = fn(error2, req, res, next); + if (isPromise2(ret)) { + if (!(ret instanceof Promise)) { + deprecate("handlers that are Promise-like are deprecated, use a native Promise instead"); + } + ret.then(null, function(error3) { + next(error3 || new Error("Rejected promise")); + }); + } + } catch (err) { + next(err); + } + }; + Layer.prototype.handleRequest = function handleRequest(req, res, next) { + const fn = this.handle; + if (fn.length > 3) { + return next(); + } + try { + const ret = fn(req, res, next); + if (isPromise2(ret)) { + if (!(ret instanceof Promise)) { + deprecate("handlers that are Promise-like are deprecated, use a native Promise instead"); + } + ret.then(null, function(error2) { + next(error2 || new Error("Rejected promise")); + }); + } + } catch (err) { + next(err); + } + }; + Layer.prototype.match = function match(path9) { + let match2; + if (path9 != null) { + if (this.slash) { + this.params = {}; + this.path = ""; + return true; + } + let i = 0; + while (!match2 && i < this.matchers.length) { + match2 = this.matchers[i](path9); + i++; + } + } + if (!match2) { + this.params = void 0; + this.path = void 0; + return false; + } + this.params = match2.params; + this.path = match2.path; + this.keys = Object.keys(match2.params); + return true; + }; + function decodeParam(val) { + if (typeof val !== "string" || val.length === 0) { + return val; + } + try { + return decodeURIComponent(val); + } catch (err) { + if (err instanceof URIError) { + err.message = "Failed to decode param '" + val + "'"; + err.status = 400; + } + throw err; + } + } + function loosen(path9) { + if (path9 instanceof RegExp || path9 === "/") { + return path9; + } + return Array.isArray(path9) ? path9.map(function(p) { + return loosen(p); + }) : String(path9).replace(TRAILING_SLASH_REGEXP, ""); + } + } +}); + +// node_modules/router/lib/route.js +var require_route = __commonJS({ + "node_modules/router/lib/route.js"(exports2, module2) { + "use strict"; + var debug = require_src()("router:route"); + var Layer = require_layer(); + var { METHODS } = require("node:http"); + var slice = Array.prototype.slice; + var flatten = Array.prototype.flat; + var methods = METHODS.map((method) => method.toLowerCase()); + module2.exports = Route; + function Route(path9) { + debug("new %o", path9); + this.path = path9; + this.stack = []; + this.methods = /* @__PURE__ */ Object.create(null); + } + Route.prototype._handlesMethod = function _handlesMethod(method) { + if (this.methods._all) { + return true; + } + let name5 = typeof method === "string" ? method.toLowerCase() : method; + if (name5 === "head" && !this.methods.head) { + name5 = "get"; + } + return Boolean(this.methods[name5]); + }; + Route.prototype._methods = function _methods() { + const methods2 = Object.keys(this.methods); + if (this.methods.get && !this.methods.head) { + methods2.push("head"); + } + for (let i = 0; i < methods2.length; i++) { + methods2[i] = methods2[i].toUpperCase(); + } + return methods2; + }; + Route.prototype.dispatch = function dispatch(req, res, done) { + let idx = 0; + const stack = this.stack; + let sync = 0; + if (stack.length === 0) { + return done(); + } + let method = typeof req.method === "string" ? req.method.toLowerCase() : req.method; + if (method === "head" && !this.methods.head) { + method = "get"; + } + req.route = this; + next(); + function next(err) { + if (err && err === "route") { + return done(); + } + if (err && err === "router") { + return done(err); + } + if (idx >= stack.length) { + return done(err); + } + if (++sync > 100) { + return setImmediate(next, err); + } + let layer; + let match; + while (match !== true && idx < stack.length) { + layer = stack[idx++]; + match = !layer.method || layer.method === method; + } + if (match !== true) { + return done(err); + } + if (err) { + layer.handleError(err, req, res, next); + } else { + layer.handleRequest(req, res, next); + } + sync = 0; + } + }; + Route.prototype.all = function all(handler) { + const callbacks = flatten.call(slice.call(arguments), Infinity); + if (callbacks.length === 0) { + throw new TypeError("argument handler is required"); + } + for (let i = 0; i < callbacks.length; i++) { + const fn = callbacks[i]; + if (typeof fn !== "function") { + throw new TypeError("argument handler must be a function"); + } + const layer = Layer("/", {}, fn); + layer.method = void 0; + this.methods._all = true; + this.stack.push(layer); + } + return this; + }; + methods.forEach(function(method) { + Route.prototype[method] = function(handler) { + const callbacks = flatten.call(slice.call(arguments), Infinity); + if (callbacks.length === 0) { + throw new TypeError("argument handler is required"); + } + for (let i = 0; i < callbacks.length; i++) { + const fn = callbacks[i]; + if (typeof fn !== "function") { + throw new TypeError("argument handler must be a function"); + } + debug("%s %s", method, this.path); + const layer = Layer("/", {}, fn); + layer.method = method; + this.methods[method] = true; + this.stack.push(layer); + } + return this; + }; + }); + } +}); + +// node_modules/router/index.js +var require_router = __commonJS({ + "node_modules/router/index.js"(exports2, module2) { + "use strict"; + var isPromise2 = require_is_promise(); + var Layer = require_layer(); + var { METHODS } = require("node:http"); + var parseUrl = require_parseurl(); + var Route = require_route(); + var debug = require_src()("router"); + var deprecate = require_depd()("router"); + var slice = Array.prototype.slice; + var flatten = Array.prototype.flat; + var methods = METHODS.map((method) => method.toLowerCase()); + module2.exports = Router; + module2.exports.Route = Route; + function Router(options) { + if (!(this instanceof Router)) { + return new Router(options); + } + const opts = options || {}; + function router(req, res, next) { + router.handle(req, res, next); + } + Object.setPrototypeOf(router, this); + router.caseSensitive = opts.caseSensitive; + router.mergeParams = opts.mergeParams; + router.params = {}; + router.strict = opts.strict; + router.stack = []; + return router; + } + Router.prototype = function() { + }; + Router.prototype.param = function param(name5, fn) { + if (!name5) { + throw new TypeError("argument name is required"); + } + if (typeof name5 !== "string") { + throw new TypeError("argument name must be a string"); + } + if (!fn) { + throw new TypeError("argument fn is required"); + } + if (typeof fn !== "function") { + throw new TypeError("argument fn must be a function"); + } + let params = this.params[name5]; + if (!params) { + params = this.params[name5] = []; + } + params.push(fn); + return this; + }; + Router.prototype.handle = function handle(req, res, callback) { + if (!callback) { + throw new TypeError("argument callback is required"); + } + debug("dispatching %s %s", req.method, req.url); + let idx = 0; + let methods2; + const protohost = getProtohost(req.url) || ""; + let removed = ""; + const self2 = this; + let slashAdded = false; + let sync = 0; + const paramcalled = {}; + const stack = this.stack; + const parentParams = req.params; + const parentUrl = req.baseUrl || ""; + let done = restore(callback, req, "baseUrl", "next", "params"); + req.next = next; + if (req.method === "OPTIONS") { + methods2 = []; + done = wrap(done, generateOptionsResponder(res, methods2)); + } + req.baseUrl = parentUrl; + req.originalUrl = req.originalUrl || req.url; + next(); + function next(err) { + let layerError = err === "route" ? null : err; + if (slashAdded) { + req.url = req.url.slice(1); + slashAdded = false; + } + if (removed.length !== 0) { + req.baseUrl = parentUrl; + req.url = protohost + removed + req.url.slice(protohost.length); + removed = ""; + } + if (layerError === "router") { + setImmediate(done, null); + return; + } + if (idx >= stack.length) { + setImmediate(done, layerError); + return; + } + if (++sync > 100) { + return setImmediate(next, err); + } + const path9 = getPathname(req); + if (path9 == null) { + return done(layerError); + } + let layer; + let match; + let route; + while (match !== true && idx < stack.length) { + layer = stack[idx++]; + match = matchLayer(layer, path9); + route = layer.route; + if (typeof match !== "boolean") { + layerError = layerError || match; + } + if (match !== true) { + continue; + } + if (!route) { + continue; + } + if (layerError) { + match = false; + continue; + } + const method = req.method; + const hasMethod = route._handlesMethod(method); + if (!hasMethod && method === "OPTIONS" && methods2) { + methods2.push.apply(methods2, route._methods()); + } + if (!hasMethod && method !== "HEAD") { + match = false; + } + } + if (match !== true) { + return done(layerError); + } + if (route) { + req.route = route; + } + req.params = self2.mergeParams ? mergeParams(layer.params, parentParams) : layer.params; + const layerPath = layer.path; + processParams(self2.params, layer, paramcalled, req, res, function(err2) { + if (err2) { + next(layerError || err2); + } else if (route) { + layer.handleRequest(req, res, next); + } else { + trimPrefix(layer, layerError, layerPath, path9); + } + sync = 0; + }); + } + function trimPrefix(layer, layerError, layerPath, path9) { + if (layerPath.length !== 0) { + if (layerPath !== path9.substring(0, layerPath.length)) { + next(layerError); + return; + } + const c = path9[layerPath.length]; + if (c && c !== "/") { + next(layerError); + return; + } + debug("trim prefix (%s) from url %s", layerPath, req.url); + removed = layerPath; + req.url = protohost + req.url.slice(protohost.length + removed.length); + if (!protohost && req.url[0] !== "/") { + req.url = "/" + req.url; + slashAdded = true; + } + req.baseUrl = parentUrl + (removed[removed.length - 1] === "/" ? removed.substring(0, removed.length - 1) : removed); + } + debug("%s %s : %s", layer.name, layerPath, req.originalUrl); + if (layerError) { + layer.handleError(layerError, req, res, next); + } else { + layer.handleRequest(req, res, next); + } + } + }; + Router.prototype.use = function use(handler) { + let offset = 0; + let path9 = "/"; + if (typeof handler !== "function") { + let arg = handler; + while (Array.isArray(arg) && arg.length !== 0) { + arg = arg[0]; + } + if (typeof arg !== "function") { + offset = 1; + path9 = handler; + } + } + const callbacks = flatten.call(slice.call(arguments, offset), Infinity); + if (callbacks.length === 0) { + throw new TypeError("argument handler is required"); + } + for (let i = 0; i < callbacks.length; i++) { + const fn = callbacks[i]; + if (typeof fn !== "function") { + throw new TypeError("argument handler must be a function"); + } + debug("use %o %s", path9, fn.name || ""); + const layer = new Layer(path9, { + sensitive: this.caseSensitive, + strict: false, + end: false + }, fn); + layer.route = void 0; + this.stack.push(layer); + } + return this; + }; + Router.prototype.route = function route(path9) { + const route2 = new Route(path9); + const layer = new Layer(path9, { + sensitive: this.caseSensitive, + strict: this.strict, + end: true + }, handle); + function handle(req, res, next) { + route2.dispatch(req, res, next); + } + layer.route = route2; + this.stack.push(layer); + return route2; + }; + methods.concat("all").forEach(function(method) { + Router.prototype[method] = function(path9) { + const route = this.route(path9); + route[method].apply(route, slice.call(arguments, 1)); + return this; + }; + }); + function generateOptionsResponder(res, methods2) { + return function onDone(fn, err) { + if (err || methods2.length === 0) { + return fn(err); + } + trySendOptionsResponse(res, methods2, fn); + }; + } + function getPathname(req) { + try { + return parseUrl(req).pathname; + } catch (err) { + return void 0; + } + } + function getProtohost(url2) { + if (typeof url2 !== "string" || url2.length === 0 || url2[0] === "/") { + return void 0; + } + const searchIndex = url2.indexOf("?"); + const pathLength = searchIndex !== -1 ? searchIndex : url2.length; + const fqdnIndex = url2.substring(0, pathLength).indexOf("://"); + return fqdnIndex !== -1 ? url2.substring(0, url2.indexOf("/", 3 + fqdnIndex)) : void 0; + } + function matchLayer(layer, path9) { + try { + return layer.match(path9); + } catch (err) { + return err; + } + } + function mergeParams(params, parent) { + if (typeof parent !== "object" || !parent) { + return params; + } + const obj = Object.assign({}, parent); + if (!(0 in params) || !(0 in parent)) { + return Object.assign(obj, params); + } + let i = 0; + let o = 0; + while (i in params) { + i++; + } + while (o in parent) { + o++; + } + for (i--; i >= 0; i--) { + params[i + o] = params[i]; + if (i < o) { + delete params[i]; + } + } + return Object.assign(obj, params); + } + function processParams(params, layer, called, req, res, done) { + const keys = layer.keys; + if (!keys || keys.length === 0) { + return done(); + } + let i = 0; + let paramIndex = 0; + let key; + let paramVal; + let paramCallbacks; + let paramCalled; + function param(err) { + if (err) { + return done(err); + } + if (i >= keys.length) { + return done(); + } + paramIndex = 0; + key = keys[i++]; + paramVal = req.params[key]; + paramCallbacks = params[key]; + paramCalled = called[key]; + if (paramVal === void 0 || !paramCallbacks) { + return param(); + } + if (paramCalled && (paramCalled.match === paramVal || paramCalled.error && paramCalled.error !== "route")) { + req.params[key] = paramCalled.value; + return param(paramCalled.error); + } + called[key] = paramCalled = { + error: null, + match: paramVal, + value: paramVal + }; + paramCallback(); + } + function paramCallback(err) { + const fn = paramCallbacks[paramIndex++]; + paramCalled.value = req.params[key]; + if (err) { + paramCalled.error = err; + param(err); + return; + } + if (!fn) return param(); + try { + const ret = fn(req, res, paramCallback, paramVal, key); + if (isPromise2(ret)) { + if (!(ret instanceof Promise)) { + deprecate("parameters that are Promise-like are deprecated, use a native Promise instead"); + } + ret.then(null, function(error2) { + paramCallback(error2 || new Error("Rejected promise")); + }); + } + } catch (e) { + paramCallback(e); + } + } + param(); + } + function restore(fn, obj) { + const props = new Array(arguments.length - 2); + const vals = new Array(arguments.length - 2); + for (let i = 0; i < props.length; i++) { + props[i] = arguments[i + 2]; + vals[i] = obj[props[i]]; + } + return function() { + for (let i = 0; i < props.length; i++) { + obj[props[i]] = vals[i]; + } + return fn.apply(this, arguments); + }; + } + function sendOptionsResponse(res, methods2) { + const options = /* @__PURE__ */ Object.create(null); + for (let i = 0; i < methods2.length; i++) { + options[methods2[i]] = true; + } + const allow = Object.keys(options).sort().join(", "); + res.setHeader("Allow", allow); + res.setHeader("Content-Length", Buffer.byteLength(allow)); + res.setHeader("Content-Type", "text/plain"); + res.setHeader("X-Content-Type-Options", "nosniff"); + res.end(allow); + } + function trySendOptionsResponse(res, methods2, next) { + try { + sendOptionsResponse(res, methods2); + } catch (err) { + next(err); + } + } + function wrap(old, fn) { + return function proxy() { + const args = new Array(arguments.length + 1); + args[0] = old; + for (let i = 0, len = arguments.length; i < len; i++) { + args[i + 1] = arguments[i]; + } + fn.apply(this, args); + }; + } + } +}); + +// node_modules/express/lib/application.js +var require_application = __commonJS({ + "node_modules/express/lib/application.js"(exports2, module2) { + "use strict"; + var finalhandler = require_finalhandler(); + var debug = require_src()("express:application"); + var View = require_view(); + var http5 = require("node:http"); + var methods = require_utils4().methods; + var compileETag = require_utils4().compileETag; + var compileQueryParser = require_utils4().compileQueryParser; + var compileTrust = require_utils4().compileTrust; + var resolve = require("node:path").resolve; + var once = require_once2(); + var Router = require_router(); + var slice = Array.prototype.slice; + var flatten = Array.prototype.flat; + var app = exports2 = module2.exports = {}; + var trustProxyDefaultSymbol = "@@symbol:trust_proxy_default"; + app.init = function init() { + var router = null; + this.cache = /* @__PURE__ */ Object.create(null); + this.engines = /* @__PURE__ */ Object.create(null); + this.settings = /* @__PURE__ */ Object.create(null); + this.defaultConfiguration(); + Object.defineProperty(this, "router", { + configurable: true, + enumerable: true, + get: function getrouter() { + if (router === null) { + router = new Router({ + caseSensitive: this.enabled("case sensitive routing"), + strict: this.enabled("strict routing") + }); + } + return router; + } + }); + }; + app.defaultConfiguration = function defaultConfiguration() { + var env = process.env.NODE_ENV || "development"; + this.enable("x-powered-by"); + this.set("etag", "weak"); + this.set("env", env); + this.set("query parser", "simple"); + this.set("subdomain offset", 2); + this.set("trust proxy", false); + Object.defineProperty(this.settings, trustProxyDefaultSymbol, { + configurable: true, + value: true + }); + debug("booting in %s mode", env); + this.on("mount", function onmount(parent) { + if (this.settings[trustProxyDefaultSymbol] === true && typeof parent.settings["trust proxy fn"] === "function") { + delete this.settings["trust proxy"]; + delete this.settings["trust proxy fn"]; + } + Object.setPrototypeOf(this.request, parent.request); + Object.setPrototypeOf(this.response, parent.response); + Object.setPrototypeOf(this.engines, parent.engines); + Object.setPrototypeOf(this.settings, parent.settings); + }); + this.locals = /* @__PURE__ */ Object.create(null); + this.mountpath = "/"; + this.locals.settings = this.settings; + this.set("view", View); + this.set("views", resolve("views")); + this.set("jsonp callback name", "callback"); + if (env === "production") { + this.enable("view cache"); + } + }; + app.handle = function handle(req, res, callback) { + var done = callback || finalhandler(req, res, { + env: this.get("env"), + onerror: logerror.bind(this) + }); + if (this.enabled("x-powered-by")) { + res.setHeader("X-Powered-By", "Express"); + } + req.res = res; + res.req = req; + Object.setPrototypeOf(req, this.request); + Object.setPrototypeOf(res, this.response); + if (!res.locals) { + res.locals = /* @__PURE__ */ Object.create(null); + } + this.router.handle(req, res, done); + }; + app.use = function use(fn) { + var offset = 0; + var path9 = "/"; + if (typeof fn !== "function") { + var arg = fn; + while (Array.isArray(arg) && arg.length !== 0) { + arg = arg[0]; + } + if (typeof arg !== "function") { + offset = 1; + path9 = fn; + } + } + var fns = flatten.call(slice.call(arguments, offset), Infinity); + if (fns.length === 0) { + throw new TypeError("app.use() requires a middleware function"); + } + var router = this.router; + fns.forEach(function(fn2) { + if (!fn2 || !fn2.handle || !fn2.set) { + return router.use(path9, fn2); + } + debug(".use app under %s", path9); + fn2.mountpath = path9; + fn2.parent = this; + router.use(path9, function mounted_app(req, res, next) { + var orig = req.app; + fn2.handle(req, res, function(err) { + Object.setPrototypeOf(req, orig.request); + Object.setPrototypeOf(res, orig.response); + next(err); + }); + }); + fn2.emit("mount", this); + }, this); + return this; + }; + app.route = function route(path9) { + return this.router.route(path9); + }; + app.engine = function engine(ext, fn) { + if (typeof fn !== "function") { + throw new Error("callback function required"); + } + var extension = ext[0] !== "." ? "." + ext : ext; + this.engines[extension] = fn; + return this; + }; + app.param = function param(name5, fn) { + if (Array.isArray(name5)) { + for (var i = 0; i < name5.length; i++) { + this.param(name5[i], fn); + } + return this; + } + this.router.param(name5, fn); + return this; + }; + app.set = function set(setting, val) { + if (arguments.length === 1) { + return this.settings[setting]; + } + debug('set "%s" to %o', setting, val); + this.settings[setting] = val; + switch (setting) { + case "etag": + this.set("etag fn", compileETag(val)); + break; + case "query parser": + this.set("query parser fn", compileQueryParser(val)); + break; + case "trust proxy": + this.set("trust proxy fn", compileTrust(val)); + Object.defineProperty(this.settings, trustProxyDefaultSymbol, { + configurable: true, + value: false + }); + break; + } + return this; + }; + app.path = function path9() { + return this.parent ? this.parent.path() + this.mountpath : ""; + }; + app.enabled = function enabled2(setting) { + return Boolean(this.set(setting)); + }; + app.disabled = function disabled(setting) { + return !this.set(setting); + }; + app.enable = function enable2(setting) { + return this.set(setting, true); + }; + app.disable = function disable2(setting) { + return this.set(setting, false); + }; + methods.forEach(function(method) { + app[method] = function(path9) { + if (method === "get" && arguments.length === 1) { + return this.set(path9); + } + var route = this.route(path9); + route[method].apply(route, slice.call(arguments, 1)); + return this; + }; + }); + app.all = function all(path9) { + var route = this.route(path9); + var args = slice.call(arguments, 1); + for (var i = 0; i < methods.length; i++) { + route[methods[i]].apply(route, args); + } + return this; + }; + app.render = function render(name5, options, callback) { + var cache = this.cache; + var done = callback; + var engines = this.engines; + var opts = options; + var view; + if (typeof options === "function") { + done = options; + opts = {}; + } + var renderOptions = { ...this.locals, ...opts._locals, ...opts }; + if (renderOptions.cache == null) { + renderOptions.cache = this.enabled("view cache"); + } + if (renderOptions.cache) { + view = cache[name5]; + } + if (!view) { + var View2 = this.get("view"); + view = new View2(name5, { + defaultEngine: this.get("view engine"), + root: this.get("views"), + engines + }); + if (!view.path) { + var dirs = Array.isArray(view.root) && view.root.length > 1 ? 'directories "' + view.root.slice(0, -1).join('", "') + '" or "' + view.root[view.root.length - 1] + '"' : 'directory "' + view.root + '"'; + var err = new Error('Failed to lookup view "' + name5 + '" in views ' + dirs); + err.view = view; + return done(err); + } + if (renderOptions.cache) { + cache[name5] = view; + } + } + tryRender(view, renderOptions, done); + }; + app.listen = function listen() { + var server = http5.createServer(this); + var args = slice.call(arguments); + if (typeof args[args.length - 1] === "function") { + var done = args[args.length - 1] = once(args[args.length - 1]); + server.once("error", done); + } + return server.listen.apply(server, args); + }; + function logerror(err) { + if (this.get("env") !== "test") console.error(err.stack || err.toString()); + } + function tryRender(view, options, callback) { + try { + view.render(options, callback); + } catch (err) { + callback(err); + } + } + } +}); + +// node_modules/negotiator/lib/charset.js +var require_charset = __commonJS({ + "node_modules/negotiator/lib/charset.js"(exports2, module2) { + "use strict"; + module2.exports = preferredCharsets; + module2.exports.preferredCharsets = preferredCharsets; + var simpleCharsetRegExp = /^\s*([^\s;]+)\s*(?:;(.*))?$/; + function parseAcceptCharset(accept) { + var accepts = accept.split(","); + for (var i = 0, j = 0; i < accepts.length; i++) { + var charset = parseCharset(accepts[i].trim(), i); + if (charset) { + accepts[j++] = charset; + } + } + accepts.length = j; + return accepts; + } + function parseCharset(str, i) { + var match = simpleCharsetRegExp.exec(str); + if (!match) return null; + var charset = match[1]; + var q = 1; + if (match[2]) { + var params = match[2].split(";"); + for (var j = 0; j < params.length; j++) { + var p = params[j].trim().split("="); + if (p[0] === "q") { + q = parseFloat(p[1]); + break; + } + } + } + return { + charset, + q, + i + }; + } + function getCharsetPriority(charset, accepted, index) { + var priority = { o: -1, q: 0, s: 0 }; + for (var i = 0; i < accepted.length; i++) { + var spec = specify(charset, accepted[i], index); + if (spec && (priority.s - spec.s || priority.q - spec.q || priority.o - spec.o) < 0) { + priority = spec; + } + } + return priority; + } + function specify(charset, spec, index) { + var s = 0; + if (spec.charset.toLowerCase() === charset.toLowerCase()) { + s |= 1; + } else if (spec.charset !== "*") { + return null; + } + return { + i: index, + o: spec.i, + q: spec.q, + s + }; + } + function preferredCharsets(accept, provided) { + var accepts = parseAcceptCharset(accept === void 0 ? "*" : accept || ""); + if (!provided) { + return accepts.filter(isQuality).sort(compareSpecs).map(getFullCharset); + } + var priorities = provided.map(function getPriority(type, index) { + return getCharsetPriority(type, accepts, index); + }); + return priorities.filter(isQuality).sort(compareSpecs).map(function getCharset(priority) { + return provided[priorities.indexOf(priority)]; + }); + } + function compareSpecs(a, b) { + return b.q - a.q || b.s - a.s || a.o - b.o || a.i - b.i || 0; + } + function getFullCharset(spec) { + return spec.charset; + } + function isQuality(spec) { + return spec.q > 0; + } + } +}); + +// node_modules/negotiator/lib/encoding.js +var require_encoding = __commonJS({ + "node_modules/negotiator/lib/encoding.js"(exports2, module2) { + "use strict"; + module2.exports = preferredEncodings; + module2.exports.preferredEncodings = preferredEncodings; + var simpleEncodingRegExp = /^\s*([^\s;]+)\s*(?:;(.*))?$/; + function parseAcceptEncoding(accept) { + var accepts = accept.split(","); + var hasIdentity = false; + var minQuality = 1; + for (var i = 0, j = 0; i < accepts.length; i++) { + var encoding = parseEncoding(accepts[i].trim(), i); + if (encoding) { + accepts[j++] = encoding; + hasIdentity = hasIdentity || specify("identity", encoding); + minQuality = Math.min(minQuality, encoding.q || 1); + } + } + if (!hasIdentity) { + accepts[j++] = { + encoding: "identity", + q: minQuality, + i + }; + } + accepts.length = j; + return accepts; + } + function parseEncoding(str, i) { + var match = simpleEncodingRegExp.exec(str); + if (!match) return null; + var encoding = match[1]; + var q = 1; + if (match[2]) { + var params = match[2].split(";"); + for (var j = 0; j < params.length; j++) { + var p = params[j].trim().split("="); + if (p[0] === "q") { + q = parseFloat(p[1]); + break; + } + } + } + return { + encoding, + q, + i + }; + } + function getEncodingPriority(encoding, accepted, index) { + var priority = { encoding, o: -1, q: 0, s: 0 }; + for (var i = 0; i < accepted.length; i++) { + var spec = specify(encoding, accepted[i], index); + if (spec && (priority.s - spec.s || priority.q - spec.q || priority.o - spec.o) < 0) { + priority = spec; + } + } + return priority; + } + function specify(encoding, spec, index) { + var s = 0; + if (spec.encoding.toLowerCase() === encoding.toLowerCase()) { + s |= 1; + } else if (spec.encoding !== "*") { + return null; + } + return { + encoding, + i: index, + o: spec.i, + q: spec.q, + s + }; + } + function preferredEncodings(accept, provided, preferred) { + var accepts = parseAcceptEncoding(accept || ""); + var comparator = preferred ? function comparator2(a, b) { + if (a.q !== b.q) { + return b.q - a.q; + } + var aPreferred = preferred.indexOf(a.encoding); + var bPreferred = preferred.indexOf(b.encoding); + if (aPreferred === -1 && bPreferred === -1) { + return b.s - a.s || a.o - b.o || a.i - b.i; + } + if (aPreferred !== -1 && bPreferred !== -1) { + return aPreferred - bPreferred; + } + return aPreferred === -1 ? 1 : -1; + } : compareSpecs; + if (!provided) { + return accepts.filter(isQuality).sort(comparator).map(getFullEncoding); + } + var priorities = provided.map(function getPriority(type, index) { + return getEncodingPriority(type, accepts, index); + }); + return priorities.filter(isQuality).sort(comparator).map(function getEncoding(priority) { + return provided[priorities.indexOf(priority)]; + }); + } + function compareSpecs(a, b) { + return b.q - a.q || b.s - a.s || a.o - b.o || a.i - b.i; + } + function getFullEncoding(spec) { + return spec.encoding; + } + function isQuality(spec) { + return spec.q > 0; + } + } +}); + +// node_modules/negotiator/lib/language.js +var require_language = __commonJS({ + "node_modules/negotiator/lib/language.js"(exports2, module2) { + "use strict"; + module2.exports = preferredLanguages; + module2.exports.preferredLanguages = preferredLanguages; + var simpleLanguageRegExp = /^\s*([^\s\-;]+)(?:-([^\s;]+))?\s*(?:;(.*))?$/; + function parseAcceptLanguage(accept) { + var accepts = accept.split(","); + for (var i = 0, j = 0; i < accepts.length; i++) { + var language = parseLanguage(accepts[i].trim(), i); + if (language) { + accepts[j++] = language; + } + } + accepts.length = j; + return accepts; + } + function parseLanguage(str, i) { + var match = simpleLanguageRegExp.exec(str); + if (!match) return null; + var prefix = match[1]; + var suffix = match[2]; + var full = prefix; + if (suffix) full += "-" + suffix; + var q = 1; + if (match[3]) { + var params = match[3].split(";"); + for (var j = 0; j < params.length; j++) { + var p = params[j].split("="); + if (p[0] === "q") q = parseFloat(p[1]); + } + } + return { + prefix, + suffix, + q, + i, + full + }; + } + function getLanguagePriority(language, accepted, index) { + var priority = { o: -1, q: 0, s: 0 }; + for (var i = 0; i < accepted.length; i++) { + var spec = specify(language, accepted[i], index); + if (spec && (priority.s - spec.s || priority.q - spec.q || priority.o - spec.o) < 0) { + priority = spec; + } + } + return priority; + } + function specify(language, spec, index) { + var p = parseLanguage(language); + if (!p) return null; + var s = 0; + if (spec.full.toLowerCase() === p.full.toLowerCase()) { + s |= 4; + } else if (spec.prefix.toLowerCase() === p.full.toLowerCase()) { + s |= 2; + } else if (spec.full.toLowerCase() === p.prefix.toLowerCase()) { + s |= 1; + } else if (spec.full !== "*") { + return null; + } + return { + i: index, + o: spec.i, + q: spec.q, + s + }; + } + function preferredLanguages(accept, provided) { + var accepts = parseAcceptLanguage(accept === void 0 ? "*" : accept || ""); + if (!provided) { + return accepts.filter(isQuality).sort(compareSpecs).map(getFullLanguage); + } + var priorities = provided.map(function getPriority(type, index) { + return getLanguagePriority(type, accepts, index); + }); + return priorities.filter(isQuality).sort(compareSpecs).map(function getLanguage(priority) { + return provided[priorities.indexOf(priority)]; + }); + } + function compareSpecs(a, b) { + return b.q - a.q || b.s - a.s || a.o - b.o || a.i - b.i || 0; + } + function getFullLanguage(spec) { + return spec.full; + } + function isQuality(spec) { + return spec.q > 0; + } + } +}); + +// node_modules/negotiator/lib/mediaType.js +var require_mediaType = __commonJS({ + "node_modules/negotiator/lib/mediaType.js"(exports2, module2) { + "use strict"; + module2.exports = preferredMediaTypes; + module2.exports.preferredMediaTypes = preferredMediaTypes; + var simpleMediaTypeRegExp = /^\s*([^\s\/;]+)\/([^;\s]+)\s*(?:;(.*))?$/; + function parseAccept(accept) { + var accepts = splitMediaTypes(accept); + for (var i = 0, j = 0; i < accepts.length; i++) { + var mediaType = parseMediaType(accepts[i].trim(), i); + if (mediaType) { + accepts[j++] = mediaType; + } + } + accepts.length = j; + return accepts; + } + function parseMediaType(str, i) { + var match = simpleMediaTypeRegExp.exec(str); + if (!match) return null; + var params = /* @__PURE__ */ Object.create(null); + var q = 1; + var subtype = match[2]; + var type = match[1]; + if (match[3]) { + var kvps = splitParameters(match[3]).map(splitKeyValuePair); + for (var j = 0; j < kvps.length; j++) { + var pair = kvps[j]; + var key = pair[0].toLowerCase(); + var val = pair[1]; + var value = val && val[0] === '"' && val[val.length - 1] === '"' ? val.slice(1, -1) : val; + if (key === "q") { + q = parseFloat(value); + break; + } + params[key] = value; + } + } + return { + type, + subtype, + params, + q, + i + }; + } + function getMediaTypePriority(type, accepted, index) { + var priority = { o: -1, q: 0, s: 0 }; + for (var i = 0; i < accepted.length; i++) { + var spec = specify(type, accepted[i], index); + if (spec && (priority.s - spec.s || priority.q - spec.q || priority.o - spec.o) < 0) { + priority = spec; + } + } + return priority; + } + function specify(type, spec, index) { + var p = parseMediaType(type); + var s = 0; + if (!p) { + return null; + } + if (spec.type.toLowerCase() == p.type.toLowerCase()) { + s |= 4; + } else if (spec.type != "*") { + return null; + } + if (spec.subtype.toLowerCase() == p.subtype.toLowerCase()) { + s |= 2; + } else if (spec.subtype != "*") { + return null; + } + var keys = Object.keys(spec.params); + if (keys.length > 0) { + if (keys.every(function(k) { + return spec.params[k] == "*" || (spec.params[k] || "").toLowerCase() == (p.params[k] || "").toLowerCase(); + })) { + s |= 1; + } else { + return null; + } + } + return { + i: index, + o: spec.i, + q: spec.q, + s + }; + } + function preferredMediaTypes(accept, provided) { + var accepts = parseAccept(accept === void 0 ? "*/*" : accept || ""); + if (!provided) { + return accepts.filter(isQuality).sort(compareSpecs).map(getFullType); + } + var priorities = provided.map(function getPriority(type, index) { + return getMediaTypePriority(type, accepts, index); + }); + return priorities.filter(isQuality).sort(compareSpecs).map(function getType(priority) { + return provided[priorities.indexOf(priority)]; + }); + } + function compareSpecs(a, b) { + return b.q - a.q || b.s - a.s || a.o - b.o || a.i - b.i || 0; + } + function getFullType(spec) { + return spec.type + "/" + spec.subtype; + } + function isQuality(spec) { + return spec.q > 0; + } + function quoteCount(string4) { + var count = 0; + var index = 0; + while ((index = string4.indexOf('"', index)) !== -1) { + count++; + index++; + } + return count; + } + function splitKeyValuePair(str) { + var index = str.indexOf("="); + var key; + var val; + if (index === -1) { + key = str; + } else { + key = str.slice(0, index); + val = str.slice(index + 1); + } + return [key, val]; + } + function splitMediaTypes(accept) { + var accepts = accept.split(","); + for (var i = 1, j = 0; i < accepts.length; i++) { + if (quoteCount(accepts[j]) % 2 == 0) { + accepts[++j] = accepts[i]; + } else { + accepts[j] += "," + accepts[i]; + } + } + accepts.length = j + 1; + return accepts; + } + function splitParameters(str) { + var parameters = str.split(";"); + for (var i = 1, j = 0; i < parameters.length; i++) { + if (quoteCount(parameters[j]) % 2 == 0) { + parameters[++j] = parameters[i]; + } else { + parameters[j] += ";" + parameters[i]; + } + } + parameters.length = j + 1; + for (var i = 0; i < parameters.length; i++) { + parameters[i] = parameters[i].trim(); + } + return parameters; + } + } +}); + +// node_modules/negotiator/index.js +var require_negotiator = __commonJS({ + "node_modules/negotiator/index.js"(exports2, module2) { + "use strict"; + var preferredCharsets = require_charset(); + var preferredEncodings = require_encoding(); + var preferredLanguages = require_language(); + var preferredMediaTypes = require_mediaType(); + module2.exports = Negotiator; + module2.exports.Negotiator = Negotiator; + function Negotiator(request) { + if (!(this instanceof Negotiator)) { + return new Negotiator(request); + } + this.request = request; + } + Negotiator.prototype.charset = function charset(available) { + var set = this.charsets(available); + return set && set[0]; + }; + Negotiator.prototype.charsets = function charsets(available) { + return preferredCharsets(this.request.headers["accept-charset"], available); + }; + Negotiator.prototype.encoding = function encoding(available, opts) { + var set = this.encodings(available, opts); + return set && set[0]; + }; + Negotiator.prototype.encodings = function encodings(available, options) { + var opts = options || {}; + return preferredEncodings(this.request.headers["accept-encoding"], available, opts.preferred); + }; + Negotiator.prototype.language = function language(available) { + var set = this.languages(available); + return set && set[0]; + }; + Negotiator.prototype.languages = function languages(available) { + return preferredLanguages(this.request.headers["accept-language"], available); + }; + Negotiator.prototype.mediaType = function mediaType(available) { + var set = this.mediaTypes(available); + return set && set[0]; + }; + Negotiator.prototype.mediaTypes = function mediaTypes(available) { + return preferredMediaTypes(this.request.headers.accept, available); + }; + Negotiator.prototype.preferredCharset = Negotiator.prototype.charset; + Negotiator.prototype.preferredCharsets = Negotiator.prototype.charsets; + Negotiator.prototype.preferredEncoding = Negotiator.prototype.encoding; + Negotiator.prototype.preferredEncodings = Negotiator.prototype.encodings; + Negotiator.prototype.preferredLanguage = Negotiator.prototype.language; + Negotiator.prototype.preferredLanguages = Negotiator.prototype.languages; + Negotiator.prototype.preferredMediaType = Negotiator.prototype.mediaType; + Negotiator.prototype.preferredMediaTypes = Negotiator.prototype.mediaTypes; + } +}); + +// node_modules/accepts/index.js +var require_accepts = __commonJS({ + "node_modules/accepts/index.js"(exports2, module2) { + "use strict"; + var Negotiator = require_negotiator(); + var mime = require_mime_types(); + module2.exports = Accepts; + function Accepts(req) { + if (!(this instanceof Accepts)) { + return new Accepts(req); + } + this.headers = req.headers; + this.negotiator = new Negotiator(req); + } + Accepts.prototype.type = Accepts.prototype.types = function(types_) { + var types = types_; + if (types && !Array.isArray(types)) { + types = new Array(arguments.length); + for (var i = 0; i < types.length; i++) { + types[i] = arguments[i]; + } + } + if (!types || types.length === 0) { + return this.negotiator.mediaTypes(); + } + if (!this.headers.accept) { + return types[0]; + } + var mimes = types.map(extToMime); + var accepts = this.negotiator.mediaTypes(mimes.filter(validMime)); + var first = accepts[0]; + return first ? types[mimes.indexOf(first)] : false; + }; + Accepts.prototype.encoding = Accepts.prototype.encodings = function(encodings_) { + var encodings = encodings_; + if (encodings && !Array.isArray(encodings)) { + encodings = new Array(arguments.length); + for (var i = 0; i < encodings.length; i++) { + encodings[i] = arguments[i]; + } + } + if (!encodings || encodings.length === 0) { + return this.negotiator.encodings(); + } + return this.negotiator.encodings(encodings)[0] || false; + }; + Accepts.prototype.charset = Accepts.prototype.charsets = function(charsets_) { + var charsets = charsets_; + if (charsets && !Array.isArray(charsets)) { + charsets = new Array(arguments.length); + for (var i = 0; i < charsets.length; i++) { + charsets[i] = arguments[i]; + } + } + if (!charsets || charsets.length === 0) { + return this.negotiator.charsets(); + } + return this.negotiator.charsets(charsets)[0] || false; + }; + Accepts.prototype.lang = Accepts.prototype.langs = Accepts.prototype.language = Accepts.prototype.languages = function(languages_) { + var languages = languages_; + if (languages && !Array.isArray(languages)) { + languages = new Array(arguments.length); + for (var i = 0; i < languages.length; i++) { + languages[i] = arguments[i]; + } + } + if (!languages || languages.length === 0) { + return this.negotiator.languages(); + } + return this.negotiator.languages(languages)[0] || false; + }; + function extToMime(type) { + return type.indexOf("/") === -1 ? mime.lookup(type) : type; + } + function validMime(type) { + return typeof type === "string"; + } + } +}); + +// node_modules/fresh/index.js +var require_fresh = __commonJS({ + "node_modules/fresh/index.js"(exports2, module2) { + "use strict"; + var CACHE_CONTROL_NO_CACHE_REGEXP = /(?:^|,)\s*?no-cache\s*?(?:,|$)/; + module2.exports = fresh; + function fresh(reqHeaders, resHeaders) { + var modifiedSince = reqHeaders["if-modified-since"]; + var noneMatch = reqHeaders["if-none-match"]; + if (!modifiedSince && !noneMatch) { + return false; + } + var cacheControl = reqHeaders["cache-control"]; + if (cacheControl && CACHE_CONTROL_NO_CACHE_REGEXP.test(cacheControl)) { + return false; + } + if (noneMatch) { + if (noneMatch === "*") { + return true; + } + var etag = resHeaders.etag; + if (!etag) { + return false; + } + var matches = parseTokenList(noneMatch); + for (var i = 0; i < matches.length; i++) { + var match = matches[i]; + if (match === etag || match === "W/" + etag || "W/" + match === etag) { + return true; + } + } + return false; + } + if (modifiedSince) { + var lastModified = resHeaders["last-modified"]; + var modifiedStale = !lastModified || !(parseHttpDate(lastModified) <= parseHttpDate(modifiedSince)); + if (modifiedStale) { + return false; + } + } + return true; + } + function parseHttpDate(date4) { + var timestamp = date4 && Date.parse(date4); + return typeof timestamp === "number" ? timestamp : NaN; + } + function parseTokenList(str) { + var end = 0; + var list = []; + var start = 0; + for (var i = 0, len = str.length; i < len; i++) { + switch (str.charCodeAt(i)) { + case 32: + if (start === end) { + start = end = i + 1; + } + break; + case 44: + list.push(str.substring(start, end)); + start = end = i + 1; + break; + default: + end = i + 1; + break; + } + } + list.push(str.substring(start, end)); + return list; + } + } +}); + +// node_modules/range-parser/index.js +var require_range_parser = __commonJS({ + "node_modules/range-parser/index.js"(exports2, module2) { + "use strict"; + module2.exports = rangeParser; + function rangeParser(size, str, options) { + if (typeof str !== "string") { + throw new TypeError("argument str must be a string"); + } + var index = str.indexOf("="); + if (index === -1) { + return -2; + } + var arr = str.slice(index + 1).split(","); + var ranges = []; + ranges.type = str.slice(0, index); + for (var i = 0; i < arr.length; i++) { + var range = arr[i].split("-"); + var start = parseInt(range[0], 10); + var end = parseInt(range[1], 10); + if (isNaN(start)) { + start = size - end; + end = size - 1; + } else if (isNaN(end)) { + end = size - 1; + } + if (end > size - 1) { + end = size - 1; + } + if (isNaN(start) || isNaN(end) || start > end || start < 0) { + continue; + } + ranges.push({ + start, + end + }); + } + if (ranges.length < 1) { + return -1; + } + return options && options.combine ? combineRanges(ranges) : ranges; + } + function combineRanges(ranges) { + var ordered = ranges.map(mapWithIndex).sort(sortByRangeStart); + for (var j = 0, i = 1; i < ordered.length; i++) { + var range = ordered[i]; + var current = ordered[j]; + if (range.start > current.end + 1) { + ordered[++j] = range; + } else if (range.end > current.end) { + current.end = range.end; + current.index = Math.min(current.index, range.index); + } + } + ordered.length = j + 1; + var combined = ordered.sort(sortByRangeIndex).map(mapWithoutIndex); + combined.type = ranges.type; + return combined; + } + function mapWithIndex(range, index) { + return { + start: range.start, + end: range.end, + index + }; + } + function mapWithoutIndex(range) { + return { + start: range.start, + end: range.end + }; + } + function sortByRangeIndex(a, b) { + return a.index - b.index; + } + function sortByRangeStart(a, b) { + return a.start - b.start; + } + } +}); + +// node_modules/express/lib/request.js +var require_request = __commonJS({ + "node_modules/express/lib/request.js"(exports2, module2) { + "use strict"; + var accepts = require_accepts(); + var isIP2 = require("node:net").isIP; + var typeis = require_type_is(); + var http5 = require("node:http"); + var fresh = require_fresh(); + var parseRange = require_range_parser(); + var parse4 = require_parseurl(); + var proxyaddr = require_proxy_addr(); + var req = Object.create(http5.IncomingMessage.prototype); + module2.exports = req; + req.get = req.header = function header(name5) { + if (!name5) { + throw new TypeError("name argument is required to req.get"); + } + if (typeof name5 !== "string") { + throw new TypeError("name must be a string to req.get"); + } + var lc = name5.toLowerCase(); + switch (lc) { + case "referer": + case "referrer": + return this.headers.referrer || this.headers.referer; + default: + return this.headers[lc]; + } + }; + req.accepts = function() { + var accept = accepts(this); + return accept.types.apply(accept, arguments); + }; + req.acceptsEncodings = function() { + var accept = accepts(this); + return accept.encodings.apply(accept, arguments); + }; + req.acceptsCharsets = function() { + var accept = accepts(this); + return accept.charsets.apply(accept, arguments); + }; + req.acceptsLanguages = function(...languages) { + return accepts(this).languages(...languages); + }; + req.range = function range(size, options) { + var range2 = this.get("Range"); + if (!range2) return; + return parseRange(size, range2, options); + }; + defineGetter(req, "query", function query() { + var queryparse = this.app.get("query parser fn"); + if (!queryparse) { + return /* @__PURE__ */ Object.create(null); + } + var querystring = parse4(this).query; + return queryparse(querystring); + }); + req.is = function is(types) { + var arr = types; + if (!Array.isArray(types)) { + arr = new Array(arguments.length); + for (var i = 0; i < arr.length; i++) { + arr[i] = arguments[i]; + } + } + return typeis(this, arr); + }; + defineGetter(req, "protocol", function protocol() { + var proto = this.socket.encrypted ? "https" : "http"; + var trust = this.app.get("trust proxy fn"); + if (!trust(this.socket.remoteAddress, 0)) { + return proto; + } + var header = this.get("X-Forwarded-Proto") || proto; + var index = header.indexOf(","); + return index !== -1 ? header.substring(0, index).trim() : header.trim(); + }); + defineGetter(req, "secure", function secure() { + return this.protocol === "https"; + }); + defineGetter(req, "ip", function ip() { + var trust = this.app.get("trust proxy fn"); + return proxyaddr(this, trust); + }); + defineGetter(req, "ips", function ips() { + var trust = this.app.get("trust proxy fn"); + var addrs = proxyaddr.all(this, trust); + addrs.reverse().pop(); + return addrs; + }); + defineGetter(req, "subdomains", function subdomains() { + var hostname2 = this.hostname; + if (!hostname2) return []; + var offset = this.app.get("subdomain offset"); + var subdomains2 = !isIP2(hostname2) ? hostname2.split(".").reverse() : [hostname2]; + return subdomains2.slice(offset); + }); + defineGetter(req, "path", function path9() { + return parse4(this).pathname; + }); + defineGetter(req, "host", function host() { + var trust = this.app.get("trust proxy fn"); + var val = this.get("X-Forwarded-Host"); + if (!val || !trust(this.socket.remoteAddress, 0)) { + val = this.get("Host"); + } else if (val.indexOf(",") !== -1) { + val = val.substring(0, val.indexOf(",")).trimRight(); + } + return val || void 0; + }); + defineGetter(req, "hostname", function hostname2() { + var host = this.host; + if (!host) return; + var offset = host[0] === "[" ? host.indexOf("]") + 1 : 0; + var index = host.indexOf(":", offset); + return index !== -1 ? host.substring(0, index) : host; + }); + defineGetter(req, "fresh", function() { + var method = this.method; + var res = this.res; + var status = res.statusCode; + if ("GET" !== method && "HEAD" !== method) return false; + if (status >= 200 && status < 300 || 304 === status) { + return fresh(this.headers, { + "etag": res.get("ETag"), + "last-modified": res.get("Last-Modified") + }); + } + return false; + }); + defineGetter(req, "stale", function stale() { + return !this.fresh; + }); + defineGetter(req, "xhr", function xhr() { + var val = this.get("X-Requested-With") || ""; + return val.toLowerCase() === "xmlhttprequest"; + }); + function defineGetter(obj, name5, getter) { + Object.defineProperty(obj, name5, { + configurable: true, + enumerable: true, + get: getter + }); + } + } +}); + +// node_modules/content-disposition/index.js +var require_content_disposition = __commonJS({ + "node_modules/content-disposition/index.js"(exports2, module2) { + "use strict"; + module2.exports = contentDisposition; + module2.exports.parse = parse4; + var utf8Decoder = new TextDecoder("utf-8"); + var ENCODE_URL_ATTR_CHAR_REGEXP = /[\x00-\x20"'()*,/:;<=>?@[\\\]{}\x7f]/g; + var NON_LATIN1_REGEXP = /[^\x20-\x7e\xa0-\xff]/g; + var QESC_REGEXP = /\\([\u0000-\u007f])/g; + var QUOTE_REGEXP = /([\\"])/g; + var PARAM_REGEXP = /;[\x09\x20]*([!#$%&'*+.0-9A-Z^_`a-z|~-]+)[\x09\x20]*=[\x09\x20]*("(?:[\x20!\x23-\x5b\x5d-\x7e\x80-\xff]|\\[\x20-\x7e])*"|[!#$%&'*+.0-9A-Z^_`a-z|~-]+)[\x09\x20]*/g; + var TEXT_REGEXP = /^[\x20-\x7e\x80-\xff]+$/; + var TOKEN_REGEXP = /^[!#$%&'*+.0-9A-Z^_`a-z|~-]+$/; + var EXT_VALUE_REGEXP = /^([A-Za-z0-9!#$%&+\-^_`{}~]+)'(?:[A-Za-z]{2,3}(?:-[A-Za-z]{3}){0,3}|[A-Za-z]{4,8}|)'((?:%[0-9A-Fa-f]{2}|[A-Za-z0-9!#$&+.^_`|~-])+)$/; + var DISPOSITION_TYPE_REGEXP = /^([!#$%&'*+.0-9A-Z^_`a-z|~-]+)[\x09\x20]*(?:$|;)/; + function contentDisposition(filename, options) { + var opts = options || {}; + var type = opts.type || "attachment"; + var params = createparams(filename, opts.fallback); + return format(new ContentDisposition(type, params)); + } + function createparams(filename, fallback) { + if (filename === void 0) { + return; + } + var params = {}; + if (typeof filename !== "string") { + throw new TypeError("filename must be a string"); + } + if (fallback === void 0) { + fallback = true; + } + if (typeof fallback !== "string" && typeof fallback !== "boolean") { + throw new TypeError("fallback must be a string or boolean"); + } + if (typeof fallback === "string" && NON_LATIN1_REGEXP.test(fallback)) { + throw new TypeError("fallback must be ISO-8859-1 string"); + } + var name5 = basename(filename); + var isQuotedString = TEXT_REGEXP.test(name5); + var fallbackName = typeof fallback !== "string" ? fallback && getlatin1(name5) : basename(fallback); + var hasFallback = typeof fallbackName === "string" && fallbackName !== name5; + if (hasFallback || !isQuotedString || hasHexEscape(name5)) { + params["filename*"] = name5; + } + if (isQuotedString || hasFallback) { + params.filename = hasFallback ? fallbackName : name5; + } + return params; + } + function format(obj) { + var parameters = obj.parameters; + var type = obj.type; + if (!type || typeof type !== "string" || !TOKEN_REGEXP.test(type)) { + throw new TypeError("invalid type"); + } + var string4 = String(type).toLowerCase(); + if (parameters && typeof parameters === "object") { + var param; + var params = Object.keys(parameters).sort(); + for (var i = 0; i < params.length; i++) { + param = params[i]; + var val = param.slice(-1) === "*" ? ustring(parameters[param]) : qstring(parameters[param]); + string4 += "; " + param + "=" + val; + } + } + return string4; + } + function decodefield(str) { + const match = EXT_VALUE_REGEXP.exec(str); + if (!match) { + throw new TypeError("invalid extended field value"); + } + const charset = match[1].toLowerCase(); + const encoded = match[2]; + switch (charset) { + case "iso-8859-1": { + const binary = decodeHexEscapes(encoded); + return getlatin1(binary); + } + case "utf-8": + case "utf8": { + try { + return decodeURIComponent(encoded); + } catch { + const binary = decodeHexEscapes(encoded); + const bytes = new Uint8Array(binary.length); + for (let idx = 0; idx < binary.length; idx++) { + bytes[idx] = binary.charCodeAt(idx); + } + return utf8Decoder.decode(bytes); + } + } + } + throw new TypeError("unsupported charset in extended field"); + } + function getlatin1(val) { + return String(val).replace(NON_LATIN1_REGEXP, "?"); + } + function parse4(string4) { + if (!string4 || typeof string4 !== "string") { + throw new TypeError("argument string is required"); + } + var match = DISPOSITION_TYPE_REGEXP.exec(string4); + if (!match) { + throw new TypeError("invalid type format"); + } + var index = match[0].length; + var type = match[1].toLowerCase(); + var key; + var names = []; + var params = {}; + var value; + index = PARAM_REGEXP.lastIndex = match[0].slice(-1) === ";" ? index - 1 : index; + while (match = PARAM_REGEXP.exec(string4)) { + if (match.index !== index) { + throw new TypeError("invalid parameter format"); + } + index += match[0].length; + key = match[1].toLowerCase(); + value = match[2]; + if (names.indexOf(key) !== -1) { + throw new TypeError("invalid duplicate parameter"); + } + names.push(key); + if (key.indexOf("*") + 1 === key.length) { + key = key.slice(0, -1); + value = decodefield(value); + params[key] = value; + continue; + } + if (typeof params[key] === "string") { + continue; + } + if (value[0] === '"') { + value = value.slice(1, -1).replace(QESC_REGEXP, "$1"); + } + params[key] = value; + } + if (index !== -1 && index !== string4.length) { + throw new TypeError("invalid parameter format"); + } + return new ContentDisposition(type, params); + } + function pencode(char) { + return "%" + String(char).charCodeAt(0).toString(16).toUpperCase(); + } + function qstring(val) { + var str = String(val); + return '"' + str.replace(QUOTE_REGEXP, "\\$1") + '"'; + } + function ustring(val) { + var str = String(val); + var encoded = encodeURIComponent(str).replace(ENCODE_URL_ATTR_CHAR_REGEXP, pencode); + return "UTF-8''" + encoded; + } + function ContentDisposition(type, parameters) { + this.type = type; + this.parameters = parameters; + } + function basename(path9) { + const normalized = path9.replaceAll("\\", "/"); + let end = normalized.length; + while (end > 0 && normalized[end - 1] === "/") { + end--; + } + if (end === 0) { + return ""; + } + let start = end - 1; + while (start >= 0 && normalized[start] !== "/") { + start--; + } + return normalized.slice(start + 1, end); + } + function isHexDigit(char) { + const code = char.charCodeAt(0); + return code >= 48 && code <= 57 || // 0-9 + code >= 65 && code <= 70 || // A-F + code >= 97 && code <= 102; + } + function hasHexEscape(str) { + const maxIndex = str.length - 3; + let lastIndex = -1; + while ((lastIndex = str.indexOf("%", lastIndex + 1)) !== -1 && lastIndex <= maxIndex) { + if (isHexDigit(str[lastIndex + 1]) && isHexDigit(str[lastIndex + 2])) { + return true; + } + } + return false; + } + function decodeHexEscapes(str) { + const firstEscape = str.indexOf("%"); + if (firstEscape === -1) return str; + let result = str.slice(0, firstEscape); + for (let idx = firstEscape; idx < str.length; idx++) { + if (str[idx] === "%" && idx + 2 < str.length && isHexDigit(str[idx + 1]) && isHexDigit(str[idx + 2])) { + result += String.fromCharCode(Number.parseInt(str[idx + 1] + str[idx + 2], 16)); + idx += 2; + } else { + result += str[idx]; + } + } + return result; + } + } +}); + +// node_modules/cookie-signature/index.js +var require_cookie_signature = __commonJS({ + "node_modules/cookie-signature/index.js"(exports2) { + var crypto11 = require("crypto"); + exports2.sign = function(val, secret) { + if ("string" != typeof val) throw new TypeError("Cookie value must be provided as a string."); + if (null == secret) throw new TypeError("Secret key must be provided."); + return val + "." + crypto11.createHmac("sha256", secret).update(val).digest("base64").replace(/\=+$/, ""); + }; + exports2.unsign = function(input, secret) { + if ("string" != typeof input) throw new TypeError("Signed cookie string must be provided."); + if (null == secret) throw new TypeError("Secret key must be provided."); + var tentativeValue = input.slice(0, input.lastIndexOf(".")), expectedInput = exports2.sign(tentativeValue, secret), expectedBuffer = Buffer.from(expectedInput), inputBuffer = Buffer.from(input); + return expectedBuffer.length === inputBuffer.length && crypto11.timingSafeEqual(expectedBuffer, inputBuffer) ? tentativeValue : false; + }; + } +}); + +// node_modules/cookie/index.js +var require_cookie = __commonJS({ + "node_modules/cookie/index.js"(exports2) { + "use strict"; + exports2.parse = parse4; + exports2.serialize = serialize; + var __toString = Object.prototype.toString; + var __hasOwnProperty = Object.prototype.hasOwnProperty; + var cookieNameRegExp = /^[!#$%&'*+\-.^_`|~0-9A-Za-z]+$/; + var cookieValueRegExp = /^("?)[\u0021\u0023-\u002B\u002D-\u003A\u003C-\u005B\u005D-\u007E]*\1$/; + var domainValueRegExp = /^([.]?[a-z0-9]([a-z0-9-]{0,61}[a-z0-9])?)([.][a-z0-9]([a-z0-9-]{0,61}[a-z0-9])?)*$/i; + var pathValueRegExp = /^[\u0020-\u003A\u003D-\u007E]*$/; + function parse4(str, opt) { + if (typeof str !== "string") { + throw new TypeError("argument str must be a string"); + } + var obj = {}; + var len = str.length; + if (len < 2) return obj; + var dec = opt && opt.decode || decode; + var index = 0; + var eqIdx = 0; + var endIdx = 0; + do { + eqIdx = str.indexOf("=", index); + if (eqIdx === -1) break; + endIdx = str.indexOf(";", index); + if (endIdx === -1) { + endIdx = len; + } else if (eqIdx > endIdx) { + index = str.lastIndexOf(";", eqIdx - 1) + 1; + continue; + } + var keyStartIdx = startIndex(str, index, eqIdx); + var keyEndIdx = endIndex(str, eqIdx, keyStartIdx); + var key = str.slice(keyStartIdx, keyEndIdx); + if (!__hasOwnProperty.call(obj, key)) { + var valStartIdx = startIndex(str, eqIdx + 1, endIdx); + var valEndIdx = endIndex(str, endIdx, valStartIdx); + if (str.charCodeAt(valStartIdx) === 34 && str.charCodeAt(valEndIdx - 1) === 34) { + valStartIdx++; + valEndIdx--; + } + var val = str.slice(valStartIdx, valEndIdx); + obj[key] = tryDecode(val, dec); + } + index = endIdx + 1; + } while (index < len); + return obj; + } + function startIndex(str, index, max) { + do { + var code = str.charCodeAt(index); + if (code !== 32 && code !== 9) return index; + } while (++index < max); + return max; + } + function endIndex(str, index, min) { + while (index > min) { + var code = str.charCodeAt(--index); + if (code !== 32 && code !== 9) return index + 1; + } + return min; + } + function serialize(name5, val, opt) { + var enc = opt && opt.encode || encodeURIComponent; + if (typeof enc !== "function") { + throw new TypeError("option encode is invalid"); + } + if (!cookieNameRegExp.test(name5)) { + throw new TypeError("argument name is invalid"); + } + var value = enc(val); + if (!cookieValueRegExp.test(value)) { + throw new TypeError("argument val is invalid"); + } + var str = name5 + "=" + value; + if (!opt) return str; + if (null != opt.maxAge) { + var maxAge = Math.floor(opt.maxAge); + if (!isFinite(maxAge)) { + throw new TypeError("option maxAge is invalid"); + } + str += "; Max-Age=" + maxAge; + } + if (opt.domain) { + if (!domainValueRegExp.test(opt.domain)) { + throw new TypeError("option domain is invalid"); + } + str += "; Domain=" + opt.domain; + } + if (opt.path) { + if (!pathValueRegExp.test(opt.path)) { + throw new TypeError("option path is invalid"); + } + str += "; Path=" + opt.path; + } + if (opt.expires) { + var expires = opt.expires; + if (!isDate(expires) || isNaN(expires.valueOf())) { + throw new TypeError("option expires is invalid"); + } + str += "; Expires=" + expires.toUTCString(); + } + if (opt.httpOnly) { + str += "; HttpOnly"; + } + if (opt.secure) { + str += "; Secure"; + } + if (opt.partitioned) { + str += "; Partitioned"; + } + if (opt.priority) { + var priority = typeof opt.priority === "string" ? opt.priority.toLowerCase() : opt.priority; + switch (priority) { + case "low": + str += "; Priority=Low"; + break; + case "medium": + str += "; Priority=Medium"; + break; + case "high": + str += "; Priority=High"; + break; + default: + throw new TypeError("option priority is invalid"); + } + } + if (opt.sameSite) { + var sameSite = typeof opt.sameSite === "string" ? opt.sameSite.toLowerCase() : opt.sameSite; + switch (sameSite) { + case true: + str += "; SameSite=Strict"; + break; + case "lax": + str += "; SameSite=Lax"; + break; + case "strict": + str += "; SameSite=Strict"; + break; + case "none": + str += "; SameSite=None"; + break; + default: + throw new TypeError("option sameSite is invalid"); + } + } + return str; + } + function decode(str) { + return str.indexOf("%") !== -1 ? decodeURIComponent(str) : str; + } + function isDate(val) { + return __toString.call(val) === "[object Date]"; + } + function tryDecode(str, decode2) { + try { + return decode2(str); + } catch (e) { + return str; + } + } + } +}); + +// node_modules/send/index.js +var require_send = __commonJS({ + "node_modules/send/index.js"(exports2, module2) { + "use strict"; + var createError = require_http_errors(); + var debug = require_src()("send"); + var encodeUrl = require_encodeurl(); + var escapeHtml = require_escape_html(); + var etag = require_etag(); + var fresh = require_fresh(); + var fs10 = require("fs"); + var mime = require_mime_types(); + var ms = require_ms(); + var onFinished = require_on_finished(); + var parseRange = require_range_parser(); + var path9 = require("path"); + var statuses = require_statuses(); + var Stream = require("stream"); + var util3 = require("util"); + var extname = path9.extname; + var join = path9.join; + var normalize = path9.normalize; + var resolve = path9.resolve; + var sep = path9.sep; + var BYTES_RANGE_REGEXP = /^ *bytes=/; + var MAX_MAXAGE = 60 * 60 * 24 * 365 * 1e3; + var UP_PATH_REGEXP = /(?:^|[\\/])\.\.(?:[\\/]|$)/; + module2.exports = send; + function send(req, path10, options) { + return new SendStream(req, path10, options); + } + function SendStream(req, path10, options) { + Stream.call(this); + var opts = options || {}; + this.options = opts; + this.path = path10; + this.req = req; + this._acceptRanges = opts.acceptRanges !== void 0 ? Boolean(opts.acceptRanges) : true; + this._cacheControl = opts.cacheControl !== void 0 ? Boolean(opts.cacheControl) : true; + this._etag = opts.etag !== void 0 ? Boolean(opts.etag) : true; + this._dotfiles = opts.dotfiles !== void 0 ? opts.dotfiles : "ignore"; + if (this._dotfiles !== "ignore" && this._dotfiles !== "allow" && this._dotfiles !== "deny") { + throw new TypeError('dotfiles option must be "allow", "deny", or "ignore"'); + } + this._extensions = opts.extensions !== void 0 ? normalizeList(opts.extensions, "extensions option") : []; + this._immutable = opts.immutable !== void 0 ? Boolean(opts.immutable) : false; + this._index = opts.index !== void 0 ? normalizeList(opts.index, "index option") : ["index.html"]; + this._lastModified = opts.lastModified !== void 0 ? Boolean(opts.lastModified) : true; + this._maxage = opts.maxAge || opts.maxage; + this._maxage = typeof this._maxage === "string" ? ms(this._maxage) : Number(this._maxage); + this._maxage = !isNaN(this._maxage) ? Math.min(Math.max(0, this._maxage), MAX_MAXAGE) : 0; + this._root = opts.root ? resolve(opts.root) : null; + } + util3.inherits(SendStream, Stream); + SendStream.prototype.error = function error2(status, err) { + if (hasListeners(this, "error")) { + return this.emit("error", createHttpError(status, err)); + } + var res = this.res; + var msg = statuses.message[status] || String(status); + var doc = createHtmlDocument("Error", escapeHtml(msg)); + clearHeaders(res); + if (err && err.headers) { + setHeaders(res, err.headers); + } + res.statusCode = status; + res.setHeader("Content-Type", "text/html; charset=UTF-8"); + res.setHeader("Content-Length", Buffer.byteLength(doc)); + res.setHeader("Content-Security-Policy", "default-src 'none'"); + res.setHeader("X-Content-Type-Options", "nosniff"); + res.end(doc); + }; + SendStream.prototype.hasTrailingSlash = function hasTrailingSlash() { + return this.path[this.path.length - 1] === "/"; + }; + SendStream.prototype.isConditionalGET = function isConditionalGET() { + return this.req.headers["if-match"] || this.req.headers["if-unmodified-since"] || this.req.headers["if-none-match"] || this.req.headers["if-modified-since"]; + }; + SendStream.prototype.isPreconditionFailure = function isPreconditionFailure() { + var req = this.req; + var res = this.res; + var match = req.headers["if-match"]; + if (match) { + var etag2 = res.getHeader("ETag"); + return !etag2 || match !== "*" && parseTokenList(match).every(function(match2) { + return match2 !== etag2 && match2 !== "W/" + etag2 && "W/" + match2 !== etag2; + }); + } + var unmodifiedSince = parseHttpDate(req.headers["if-unmodified-since"]); + if (!isNaN(unmodifiedSince)) { + var lastModified = parseHttpDate(res.getHeader("Last-Modified")); + return isNaN(lastModified) || lastModified > unmodifiedSince; + } + return false; + }; + SendStream.prototype.removeContentHeaderFields = function removeContentHeaderFields() { + var res = this.res; + res.removeHeader("Content-Encoding"); + res.removeHeader("Content-Language"); + res.removeHeader("Content-Length"); + res.removeHeader("Content-Range"); + res.removeHeader("Content-Type"); + }; + SendStream.prototype.notModified = function notModified() { + var res = this.res; + debug("not modified"); + this.removeContentHeaderFields(); + res.statusCode = 304; + res.end(); + }; + SendStream.prototype.headersAlreadySent = function headersAlreadySent() { + var err = new Error("Can't set headers after they are sent."); + debug("headers already sent"); + this.error(500, err); + }; + SendStream.prototype.isCachable = function isCachable() { + var statusCode = this.res.statusCode; + return statusCode >= 200 && statusCode < 300 || statusCode === 304; + }; + SendStream.prototype.onStatError = function onStatError(error2) { + switch (error2.code) { + case "ENAMETOOLONG": + case "ENOENT": + case "ENOTDIR": + this.error(404, error2); + break; + default: + this.error(500, error2); + break; + } + }; + SendStream.prototype.isFresh = function isFresh() { + return fresh(this.req.headers, { + etag: this.res.getHeader("ETag"), + "last-modified": this.res.getHeader("Last-Modified") + }); + }; + SendStream.prototype.isRangeFresh = function isRangeFresh() { + var ifRange = this.req.headers["if-range"]; + if (!ifRange) { + return true; + } + if (ifRange.indexOf('"') !== -1) { + var etag2 = this.res.getHeader("ETag"); + return Boolean(etag2 && ifRange.indexOf(etag2) !== -1); + } + var lastModified = this.res.getHeader("Last-Modified"); + return parseHttpDate(lastModified) <= parseHttpDate(ifRange); + }; + SendStream.prototype.redirect = function redirect(path10) { + var res = this.res; + if (hasListeners(this, "directory")) { + this.emit("directory", res, path10); + return; + } + if (this.hasTrailingSlash()) { + this.error(403); + return; + } + var loc = encodeUrl(collapseLeadingSlashes(this.path + "/")); + var doc = createHtmlDocument("Redirecting", "Redirecting to " + escapeHtml(loc)); + res.statusCode = 301; + res.setHeader("Content-Type", "text/html; charset=UTF-8"); + res.setHeader("Content-Length", Buffer.byteLength(doc)); + res.setHeader("Content-Security-Policy", "default-src 'none'"); + res.setHeader("X-Content-Type-Options", "nosniff"); + res.setHeader("Location", loc); + res.end(doc); + }; + SendStream.prototype.pipe = function pipe2(res) { + var root = this._root; + this.res = res; + var path10 = decode(this.path); + if (path10 === -1) { + this.error(400); + return res; + } + if (~path10.indexOf("\0")) { + this.error(400); + return res; + } + var parts; + if (root !== null) { + if (path10) { + path10 = normalize("." + sep + path10); + } + if (UP_PATH_REGEXP.test(path10)) { + debug('malicious path "%s"', path10); + this.error(403); + return res; + } + parts = path10.split(sep); + path10 = normalize(join(root, path10)); + } else { + if (UP_PATH_REGEXP.test(path10)) { + debug('malicious path "%s"', path10); + this.error(403); + return res; + } + parts = normalize(path10).split(sep); + path10 = resolve(path10); + } + if (containsDotFile(parts)) { + debug('%s dotfile "%s"', this._dotfiles, path10); + switch (this._dotfiles) { + case "allow": + break; + case "deny": + this.error(403); + return res; + case "ignore": + default: + this.error(404); + return res; + } + } + if (this._index.length && this.hasTrailingSlash()) { + this.sendIndex(path10); + return res; + } + this.sendFile(path10); + return res; + }; + SendStream.prototype.send = function send2(path10, stat) { + var len = stat.size; + var options = this.options; + var opts = {}; + var res = this.res; + var req = this.req; + var ranges = req.headers.range; + var offset = options.start || 0; + if (res.headersSent) { + this.headersAlreadySent(); + return; + } + debug('pipe "%s"', path10); + this.setHeader(path10, stat); + this.type(path10); + if (this.isConditionalGET()) { + if (this.isPreconditionFailure()) { + this.error(412); + return; + } + if (this.isCachable() && this.isFresh()) { + this.notModified(); + return; + } + } + len = Math.max(0, len - offset); + if (options.end !== void 0) { + var bytes = options.end - offset + 1; + if (len > bytes) len = bytes; + } + if (this._acceptRanges && BYTES_RANGE_REGEXP.test(ranges)) { + ranges = parseRange(len, ranges, { + combine: true + }); + if (!this.isRangeFresh()) { + debug("range stale"); + ranges = -2; + } + if (ranges === -1) { + debug("range unsatisfiable"); + res.setHeader("Content-Range", contentRange("bytes", len)); + return this.error(416, { + headers: { "Content-Range": res.getHeader("Content-Range") } + }); + } + if (ranges !== -2 && ranges.length === 1) { + debug("range %j", ranges); + res.statusCode = 206; + res.setHeader("Content-Range", contentRange("bytes", len, ranges[0])); + offset += ranges[0].start; + len = ranges[0].end - ranges[0].start + 1; + } + } + for (var prop in options) { + opts[prop] = options[prop]; + } + opts.start = offset; + opts.end = Math.max(offset, offset + len - 1); + res.setHeader("Content-Length", len); + if (req.method === "HEAD") { + res.end(); + return; + } + this.stream(path10, opts); + }; + SendStream.prototype.sendFile = function sendFile(path10) { + var i = 0; + var self2 = this; + debug('stat "%s"', path10); + fs10.stat(path10, function onstat(err, stat) { + var pathEndsWithSep = path10[path10.length - 1] === sep; + if (err && err.code === "ENOENT" && !extname(path10) && !pathEndsWithSep) { + return next(err); + } + if (err) return self2.onStatError(err); + if (stat.isDirectory()) return self2.redirect(path10); + if (pathEndsWithSep) return self2.error(404); + self2.emit("file", path10, stat); + self2.send(path10, stat); + }); + function next(err) { + if (self2._extensions.length <= i) { + return err ? self2.onStatError(err) : self2.error(404); + } + var p = path10 + "." + self2._extensions[i++]; + debug('stat "%s"', p); + fs10.stat(p, function(err2, stat) { + if (err2) return next(err2); + if (stat.isDirectory()) return next(); + self2.emit("file", p, stat); + self2.send(p, stat); + }); + } + }; + SendStream.prototype.sendIndex = function sendIndex(path10) { + var i = -1; + var self2 = this; + function next(err) { + if (++i >= self2._index.length) { + if (err) return self2.onStatError(err); + return self2.error(404); + } + var p = join(path10, self2._index[i]); + debug('stat "%s"', p); + fs10.stat(p, function(err2, stat) { + if (err2) return next(err2); + if (stat.isDirectory()) return next(); + self2.emit("file", p, stat); + self2.send(p, stat); + }); + } + next(); + }; + SendStream.prototype.stream = function stream(path10, options) { + var self2 = this; + var res = this.res; + var stream2 = fs10.createReadStream(path10, options); + this.emit("stream", stream2); + stream2.pipe(res); + function cleanup() { + stream2.destroy(); + } + onFinished(res, cleanup); + stream2.on("error", function onerror(err) { + cleanup(); + self2.onStatError(err); + }); + stream2.on("end", function onend() { + self2.emit("end"); + }); + }; + SendStream.prototype.type = function type(path10) { + var res = this.res; + if (res.getHeader("Content-Type")) return; + var ext = extname(path10); + var type2 = mime.contentType(ext) || "application/octet-stream"; + debug("content-type %s", type2); + res.setHeader("Content-Type", type2); + }; + SendStream.prototype.setHeader = function setHeader(path10, stat) { + var res = this.res; + this.emit("headers", res, path10, stat); + if (this._acceptRanges && !res.getHeader("Accept-Ranges")) { + debug("accept ranges"); + res.setHeader("Accept-Ranges", "bytes"); + } + if (this._cacheControl && !res.getHeader("Cache-Control")) { + var cacheControl = "public, max-age=" + Math.floor(this._maxage / 1e3); + if (this._immutable) { + cacheControl += ", immutable"; + } + debug("cache-control %s", cacheControl); + res.setHeader("Cache-Control", cacheControl); + } + if (this._lastModified && !res.getHeader("Last-Modified")) { + var modified = stat.mtime.toUTCString(); + debug("modified %s", modified); + res.setHeader("Last-Modified", modified); + } + if (this._etag && !res.getHeader("ETag")) { + var val = etag(stat); + debug("etag %s", val); + res.setHeader("ETag", val); + } + }; + function clearHeaders(res) { + for (const header of res.getHeaderNames()) { + res.removeHeader(header); + } + } + function collapseLeadingSlashes(str) { + for (var i = 0; i < str.length; i++) { + if (str[i] !== "/") { + break; + } + } + return i > 1 ? "/" + str.substr(i) : str; + } + function containsDotFile(parts) { + for (var i = 0; i < parts.length; i++) { + var part = parts[i]; + if (part.length > 1 && part[0] === ".") { + return true; + } + } + return false; + } + function contentRange(type, size, range) { + return type + " " + (range ? range.start + "-" + range.end : "*") + "/" + size; + } + function createHtmlDocument(title, body) { + return '\n\n\n\n' + title + "\n\n\n
" + body + "
\n\n\n"; + } + function createHttpError(status, err) { + if (!err) { + return createError(status); + } + return err instanceof Error ? createError(status, err, { expose: false }) : createError(status, err); + } + function decode(path10) { + try { + return decodeURIComponent(path10); + } catch (err) { + return -1; + } + } + function hasListeners(emitter, type) { + var count = typeof emitter.listenerCount !== "function" ? emitter.listeners(type).length : emitter.listenerCount(type); + return count > 0; + } + function normalizeList(val, name5) { + var list = [].concat(val || []); + for (var i = 0; i < list.length; i++) { + if (typeof list[i] !== "string") { + throw new TypeError(name5 + " must be array of strings or false"); + } + } + return list; + } + function parseHttpDate(date4) { + var timestamp = date4 && Date.parse(date4); + return typeof timestamp === "number" ? timestamp : NaN; + } + function parseTokenList(str) { + var end = 0; + var list = []; + var start = 0; + for (var i = 0, len = str.length; i < len; i++) { + switch (str.charCodeAt(i)) { + case 32: + if (start === end) { + start = end = i + 1; + } + break; + case 44: + if (start !== end) { + list.push(str.substring(start, end)); + } + start = end = i + 1; + break; + default: + end = i + 1; + break; + } + } + if (start !== end) { + list.push(str.substring(start, end)); + } + return list; + } + function setHeaders(res, headers) { + var keys = Object.keys(headers); + for (var i = 0; i < keys.length; i++) { + var key = keys[i]; + res.setHeader(key, headers[key]); + } + } + } +}); + +// node_modules/vary/index.js +var require_vary = __commonJS({ + "node_modules/vary/index.js"(exports2, module2) { + "use strict"; + module2.exports = vary; + module2.exports.append = append; + var FIELD_NAME_REGEXP = /^[!#$%&'*+\-.^_`|~0-9A-Za-z]+$/; + function append(header, field) { + if (typeof header !== "string") { + throw new TypeError("header argument is required"); + } + if (!field) { + throw new TypeError("field argument is required"); + } + var fields = !Array.isArray(field) ? parse4(String(field)) : field; + for (var j = 0; j < fields.length; j++) { + if (!FIELD_NAME_REGEXP.test(fields[j])) { + throw new TypeError("field argument contains an invalid header name"); + } + } + if (header === "*") { + return header; + } + var val = header; + var vals = parse4(header.toLowerCase()); + if (fields.indexOf("*") !== -1 || vals.indexOf("*") !== -1) { + return "*"; + } + for (var i = 0; i < fields.length; i++) { + var fld = fields[i].toLowerCase(); + if (vals.indexOf(fld) === -1) { + vals.push(fld); + val = val ? val + ", " + fields[i] : fields[i]; + } + } + return val; + } + function parse4(header) { + var end = 0; + var list = []; + var start = 0; + for (var i = 0, len = header.length; i < len; i++) { + switch (header.charCodeAt(i)) { + case 32: + if (start === end) { + start = end = i + 1; + } + break; + case 44: + list.push(header.substring(start, end)); + start = end = i + 1; + break; + default: + end = i + 1; + break; + } + } + list.push(header.substring(start, end)); + return list; + } + function vary(res, field) { + if (!res || !res.getHeader || !res.setHeader) { + throw new TypeError("res argument is required"); + } + var val = res.getHeader("Vary") || ""; + var header = Array.isArray(val) ? val.join(", ") : String(val); + if (val = append(header, field)) { + res.setHeader("Vary", val); + } + } + } +}); + +// node_modules/express/lib/response.js +var require_response = __commonJS({ + "node_modules/express/lib/response.js"(exports2, module2) { + "use strict"; + var contentDisposition = require_content_disposition(); + var createError = require_http_errors(); + var deprecate = require_depd()("express"); + var encodeUrl = require_encodeurl(); + var escapeHtml = require_escape_html(); + var http5 = require("node:http"); + var onFinished = require_on_finished(); + var mime = require_mime_types(); + var path9 = require("node:path"); + var pathIsAbsolute = require("node:path").isAbsolute; + var statuses = require_statuses(); + var sign = require_cookie_signature().sign; + var normalizeType = require_utils4().normalizeType; + var normalizeTypes = require_utils4().normalizeTypes; + var setCharset = require_utils4().setCharset; + var cookie = require_cookie(); + var send = require_send(); + var extname = path9.extname; + var resolve = path9.resolve; + var vary = require_vary(); + var { Buffer: Buffer5 } = require("node:buffer"); + var res = Object.create(http5.ServerResponse.prototype); + module2.exports = res; + res.status = function status(code) { + if (!Number.isInteger(code)) { + throw new TypeError(`Invalid status code: ${JSON.stringify(code)}. Status code must be an integer.`); + } + if (code < 100 || code > 999) { + throw new RangeError(`Invalid status code: ${JSON.stringify(code)}. Status code must be greater than 99 and less than 1000.`); + } + this.statusCode = code; + return this; + }; + res.links = function(links) { + var link = this.get("Link") || ""; + if (link) link += ", "; + return this.set("Link", link + Object.keys(links).map(function(rel) { + if (Array.isArray(links[rel])) { + return links[rel].map(function(singleLink) { + return `<${singleLink}>; rel="${rel}"`; + }).join(", "); + } else { + return `<${links[rel]}>; rel="${rel}"`; + } + }).join(", ")); + }; + res.send = function send2(body) { + var chunk = body; + var encoding; + var req = this.req; + var type; + var app = this.app; + switch (typeof chunk) { + // string defaulting to html + case "string": + if (!this.get("Content-Type")) { + this.type("html"); + } + break; + case "boolean": + case "number": + case "object": + if (chunk === null) { + chunk = ""; + } else if (ArrayBuffer.isView(chunk)) { + if (!this.get("Content-Type")) { + this.type("bin"); + } + } else { + return this.json(chunk); + } + break; + } + if (typeof chunk === "string") { + encoding = "utf8"; + type = this.get("Content-Type"); + if (typeof type === "string") { + this.set("Content-Type", setCharset(type, "utf-8")); + } + } + var etagFn = app.get("etag fn"); + var generateETag = !this.get("ETag") && typeof etagFn === "function"; + var len; + if (chunk !== void 0) { + if (Buffer5.isBuffer(chunk)) { + len = chunk.length; + } else if (!generateETag && chunk.length < 1e3) { + len = Buffer5.byteLength(chunk, encoding); + } else { + chunk = Buffer5.from(chunk, encoding); + encoding = void 0; + len = chunk.length; + } + this.set("Content-Length", len); + } + var etag; + if (generateETag && len !== void 0) { + if (etag = etagFn(chunk, encoding)) { + this.set("ETag", etag); + } + } + if (req.fresh) this.status(304); + if (204 === this.statusCode || 304 === this.statusCode) { + this.removeHeader("Content-Type"); + this.removeHeader("Content-Length"); + this.removeHeader("Transfer-Encoding"); + chunk = ""; + } + if (this.statusCode === 205) { + this.set("Content-Length", "0"); + this.removeHeader("Transfer-Encoding"); + chunk = ""; + } + if (req.method === "HEAD") { + this.end(); + } else { + this.end(chunk, encoding); + } + return this; + }; + res.json = function json(obj) { + var app = this.app; + var escape2 = app.get("json escape"); + var replacer = app.get("json replacer"); + var spaces = app.get("json spaces"); + var body = stringify2(obj, replacer, spaces, escape2); + if (!this.get("Content-Type")) { + this.set("Content-Type", "application/json"); + } + return this.send(body); + }; + res.jsonp = function jsonp(obj) { + var app = this.app; + var escape2 = app.get("json escape"); + var replacer = app.get("json replacer"); + var spaces = app.get("json spaces"); + var body = stringify2(obj, replacer, spaces, escape2); + var callback = this.req.query[app.get("jsonp callback name")]; + if (!this.get("Content-Type")) { + this.set("X-Content-Type-Options", "nosniff"); + this.set("Content-Type", "application/json"); + } + if (Array.isArray(callback)) { + callback = callback[0]; + } + if (typeof callback === "string" && callback.length !== 0) { + this.set("X-Content-Type-Options", "nosniff"); + this.set("Content-Type", "text/javascript"); + callback = callback.replace(/[^\[\]\w$.]/g, ""); + if (body === void 0) { + body = ""; + } else if (typeof body === "string") { + body = body.replace(/\u2028/g, "\\u2028").replace(/\u2029/g, "\\u2029"); + } + body = "/**/ typeof " + callback + " === 'function' && " + callback + "(" + body + ");"; + } + return this.send(body); + }; + res.sendStatus = function sendStatus(statusCode) { + var body = statuses.message[statusCode] || String(statusCode); + this.status(statusCode); + this.type("txt"); + return this.send(body); + }; + res.sendFile = function sendFile(path10, options, callback) { + var done = callback; + var req = this.req; + var res2 = this; + var next = req.next; + var opts = options || {}; + if (!path10) { + throw new TypeError("path argument is required to res.sendFile"); + } + if (typeof path10 !== "string") { + throw new TypeError("path must be a string to res.sendFile"); + } + if (typeof options === "function") { + done = options; + opts = {}; + } + if (!opts.root && !pathIsAbsolute(path10)) { + throw new TypeError("path must be absolute or specify root to res.sendFile"); + } + var pathname = encodeURI(path10); + opts.etag = this.app.enabled("etag"); + var file = send(req, pathname, opts); + sendfile(res2, file, opts, function(err) { + if (done) return done(err); + if (err && err.code === "EISDIR") return next(); + if (err && err.code !== "ECONNABORTED" && err.syscall !== "write") { + next(err); + } + }); + }; + res.download = function download(path10, filename, options, callback) { + var done = callback; + var name5 = filename; + var opts = options || null; + if (typeof filename === "function") { + done = filename; + name5 = null; + opts = null; + } else if (typeof options === "function") { + done = options; + opts = null; + } + if (typeof filename === "object" && (typeof options === "function" || options === void 0)) { + name5 = null; + opts = filename; + } + var headers = { + "Content-Disposition": contentDisposition(name5 || path10) + }; + if (opts && opts.headers) { + var keys = Object.keys(opts.headers); + for (var i = 0; i < keys.length; i++) { + var key = keys[i]; + if (key.toLowerCase() !== "content-disposition") { + headers[key] = opts.headers[key]; + } + } + } + opts = Object.create(opts); + opts.headers = headers; + var fullPath = !opts.root ? resolve(path10) : path10; + return this.sendFile(fullPath, opts, done); + }; + res.contentType = res.type = function contentType(type) { + var ct = type.indexOf("/") === -1 ? mime.contentType(type) || "application/octet-stream" : type; + return this.set("Content-Type", ct); + }; + res.format = function(obj) { + var req = this.req; + var next = req.next; + var keys = Object.keys(obj).filter(function(v) { + return v !== "default"; + }); + var key = keys.length > 0 ? req.accepts(keys) : false; + this.vary("Accept"); + if (key) { + this.set("Content-Type", normalizeType(key).value); + obj[key](req, this, next); + } else if (obj.default) { + obj.default(req, this, next); + } else { + next(createError(406, { + types: normalizeTypes(keys).map(function(o) { + return o.value; + }) + })); + } + return this; + }; + res.attachment = function attachment(filename) { + if (filename) { + this.type(extname(filename)); + } + this.set("Content-Disposition", contentDisposition(filename)); + return this; + }; + res.append = function append(field, val) { + var prev = this.get(field); + var value = val; + if (prev) { + value = Array.isArray(prev) ? prev.concat(val) : Array.isArray(val) ? [prev].concat(val) : [prev, val]; + } + return this.set(field, value); + }; + res.set = res.header = function header(field, val) { + if (arguments.length === 2) { + var value = Array.isArray(val) ? val.map(String) : String(val); + if (field.toLowerCase() === "content-type") { + if (Array.isArray(value)) { + throw new TypeError("Content-Type cannot be set to an Array"); + } + value = mime.contentType(value); + } + this.setHeader(field, value); + } else { + for (var key in field) { + this.set(key, field[key]); + } + } + return this; + }; + res.get = function(field) { + return this.getHeader(field); + }; + res.clearCookie = function clearCookie(name5, options) { + const opts = { path: "/", ...options, expires: /* @__PURE__ */ new Date(1) }; + delete opts.maxAge; + return this.cookie(name5, "", opts); + }; + res.cookie = function(name5, value, options) { + var opts = { ...options }; + var secret = this.req.secret; + var signed = opts.signed; + if (signed && !secret) { + throw new Error('cookieParser("secret") required for signed cookies'); + } + var val = typeof value === "object" ? "j:" + JSON.stringify(value) : String(value); + if (signed) { + val = "s:" + sign(val, secret); + } + if (opts.maxAge != null) { + var maxAge = opts.maxAge - 0; + if (!isNaN(maxAge)) { + opts.expires = new Date(Date.now() + maxAge); + opts.maxAge = Math.floor(maxAge / 1e3); + } + } + if (opts.path == null) { + opts.path = "/"; + } + this.append("Set-Cookie", cookie.serialize(name5, String(val), opts)); + return this; + }; + res.location = function location(url2) { + return this.set("Location", encodeUrl(url2)); + }; + res.redirect = function redirect(url2) { + var address = url2; + var body; + var status = 302; + if (arguments.length === 2) { + status = arguments[0]; + address = arguments[1]; + } + if (!address) { + deprecate("Provide a url argument"); + } + if (typeof address !== "string") { + deprecate("Url must be a string"); + } + if (typeof status !== "number") { + deprecate("Status must be a number"); + } + address = this.location(address).get("Location"); + this.format({ + text: function() { + body = statuses.message[status] + ". Redirecting to " + address; + }, + html: function() { + var u = escapeHtml(address); + body = "

" + statuses.message[status] + ". Redirecting to " + u + "

"; + }, + default: function() { + body = ""; + } + }); + this.status(status); + this.set("Content-Length", Buffer5.byteLength(body)); + if (this.req.method === "HEAD") { + this.end(); + } else { + this.end(body); + } + }; + res.vary = function(field) { + vary(this, field); + return this; + }; + res.render = function render(view, options, callback) { + var app = this.req.app; + var done = callback; + var opts = options || {}; + var req = this.req; + var self2 = this; + if (typeof options === "function") { + done = options; + opts = {}; + } + opts._locals = self2.locals; + done = done || function(err, str) { + if (err) return req.next(err); + self2.send(str); + }; + app.render(view, opts, done); + }; + function sendfile(res2, file, options, callback) { + var done = false; + var streaming; + function onaborted() { + if (done) return; + done = true; + var err = new Error("Request aborted"); + err.code = "ECONNABORTED"; + callback(err); + } + function ondirectory() { + if (done) return; + done = true; + var err = new Error("EISDIR, read"); + err.code = "EISDIR"; + callback(err); + } + function onerror(err) { + if (done) return; + done = true; + callback(err); + } + function onend() { + if (done) return; + done = true; + callback(); + } + function onfile() { + streaming = false; + } + function onfinish(err) { + if (err && err.code === "ECONNRESET") return onaborted(); + if (err) return onerror(err); + if (done) return; + setImmediate(function() { + if (streaming !== false && !done) { + onaborted(); + return; + } + if (done) return; + done = true; + callback(); + }); + } + function onstream() { + streaming = true; + } + file.on("directory", ondirectory); + file.on("end", onend); + file.on("error", onerror); + file.on("file", onfile); + file.on("stream", onstream); + onFinished(res2, onfinish); + if (options.headers) { + file.on("headers", function headers(res3) { + var obj = options.headers; + var keys = Object.keys(obj); + for (var i = 0; i < keys.length; i++) { + var k = keys[i]; + res3.setHeader(k, obj[k]); + } + }); + } + file.pipe(res2); + } + function stringify2(value, replacer, spaces, escape2) { + var json = replacer || spaces ? JSON.stringify(value, replacer, spaces) : JSON.stringify(value); + if (escape2 && typeof json === "string") { + json = json.replace(/[<>&]/g, function(c) { + switch (c.charCodeAt(0)) { + case 60: + return "\\u003c"; + case 62: + return "\\u003e"; + case 38: + return "\\u0026"; + /* istanbul ignore next: unreachable default */ + default: + return c; + } + }); + } + return json; + } + } +}); + +// node_modules/serve-static/index.js +var require_serve_static = __commonJS({ + "node_modules/serve-static/index.js"(exports2, module2) { + "use strict"; + var encodeUrl = require_encodeurl(); + var escapeHtml = require_escape_html(); + var parseUrl = require_parseurl(); + var resolve = require("path").resolve; + var send = require_send(); + var url2 = require("url"); + module2.exports = serveStatic; + function serveStatic(root, options) { + if (!root) { + throw new TypeError("root path required"); + } + if (typeof root !== "string") { + throw new TypeError("root path must be a string"); + } + var opts = Object.create(options || null); + var fallthrough = opts.fallthrough !== false; + var redirect = opts.redirect !== false; + var setHeaders = opts.setHeaders; + if (setHeaders && typeof setHeaders !== "function") { + throw new TypeError("option setHeaders must be function"); + } + opts.maxage = opts.maxage || opts.maxAge || 0; + opts.root = resolve(root); + var onDirectory = redirect ? createRedirectDirectoryListener() : createNotFoundDirectoryListener(); + return function serveStatic2(req, res, next) { + if (req.method !== "GET" && req.method !== "HEAD") { + if (fallthrough) { + return next(); + } + res.statusCode = 405; + res.setHeader("Allow", "GET, HEAD"); + res.setHeader("Content-Length", "0"); + res.end(); + return; + } + var forwardError = !fallthrough; + var originalUrl = parseUrl.original(req); + var path9 = parseUrl(req).pathname; + if (path9 === "/" && originalUrl.pathname.substr(-1) !== "/") { + path9 = ""; + } + var stream = send(req, path9, opts); + stream.on("directory", onDirectory); + if (setHeaders) { + stream.on("headers", setHeaders); + } + if (fallthrough) { + stream.on("file", function onFile() { + forwardError = true; + }); + } + stream.on("error", function error2(err) { + if (forwardError || !(err.statusCode < 500)) { + next(err); + return; + } + next(); + }); + stream.pipe(res); + }; + } + function collapseLeadingSlashes(str) { + for (var i = 0; i < str.length; i++) { + if (str.charCodeAt(i) !== 47) { + break; + } + } + return i > 1 ? "/" + str.substr(i) : str; + } + function createHtmlDocument(title, body) { + return '\n\n\n\n' + title + "\n\n\n
" + body + "
\n\n\n"; + } + function createNotFoundDirectoryListener() { + return function notFound() { + this.error(404); + }; + } + function createRedirectDirectoryListener() { + return function redirect(res) { + if (this.hasTrailingSlash()) { + this.error(404); + return; + } + var originalUrl = parseUrl.original(this.req); + originalUrl.path = null; + originalUrl.pathname = collapseLeadingSlashes(originalUrl.pathname + "/"); + var loc = encodeUrl(url2.format(originalUrl)); + var doc = createHtmlDocument("Redirecting", "Redirecting to " + escapeHtml(loc)); + res.statusCode = 301; + res.setHeader("Content-Type", "text/html; charset=UTF-8"); + res.setHeader("Content-Length", Buffer.byteLength(doc)); + res.setHeader("Content-Security-Policy", "default-src 'none'"); + res.setHeader("X-Content-Type-Options", "nosniff"); + res.setHeader("Location", loc); + res.end(doc); + }; + } + } +}); + +// node_modules/express/lib/express.js +var require_express = __commonJS({ + "node_modules/express/lib/express.js"(exports2, module2) { + "use strict"; + var bodyParser = require_body_parser(); + var EventEmitter = require("node:events").EventEmitter; + var mixin = require_merge_descriptors(); + var proto = require_application(); + var Router = require_router(); + var req = require_request(); + var res = require_response(); + exports2 = module2.exports = createApplication; + function createApplication() { + var app = function(req2, res2, next) { + app.handle(req2, res2, next); + }; + mixin(app, EventEmitter.prototype, false); + mixin(app, proto, false); + app.request = Object.create(req, { + app: { configurable: true, enumerable: true, writable: true, value: app } + }); + app.response = Object.create(res, { + app: { configurable: true, enumerable: true, writable: true, value: app } + }); + app.init(); + return app; + } + exports2.application = proto; + exports2.request = req; + exports2.response = res; + exports2.Route = Router.Route; + exports2.Router = Router; + exports2.json = bodyParser.json; + exports2.raw = bodyParser.raw; + exports2.static = require_serve_static(); + exports2.text = bodyParser.text; + exports2.urlencoded = bodyParser.urlencoded; + } +}); + +// node_modules/express/index.js +var require_express2 = __commonJS({ + "node_modules/express/index.js"(exports2, module2) { + "use strict"; + module2.exports = require_express(); + } +}); + +// node_modules/object-assign/index.js +var require_object_assign = __commonJS({ + "node_modules/object-assign/index.js"(exports2, module2) { + "use strict"; + var getOwnPropertySymbols = Object.getOwnPropertySymbols; + var hasOwnProperty = Object.prototype.hasOwnProperty; + var propIsEnumerable = Object.prototype.propertyIsEnumerable; + function toObject(val) { + if (val === null || val === void 0) { + throw new TypeError("Object.assign cannot be called with null or undefined"); + } + return Object(val); + } + function shouldUseNative() { + try { + if (!Object.assign) { + return false; + } + var test1 = new String("abc"); + test1[5] = "de"; + if (Object.getOwnPropertyNames(test1)[0] === "5") { + return false; + } + var test2 = {}; + for (var i = 0; i < 10; i++) { + test2["_" + String.fromCharCode(i)] = i; + } + var order2 = Object.getOwnPropertyNames(test2).map(function(n) { + return test2[n]; + }); + if (order2.join("") !== "0123456789") { + return false; + } + var test3 = {}; + "abcdefghijklmnopqrst".split("").forEach(function(letter) { + test3[letter] = letter; + }); + if (Object.keys(Object.assign({}, test3)).join("") !== "abcdefghijklmnopqrst") { + return false; + } + return true; + } catch (err) { + return false; + } + } + module2.exports = shouldUseNative() ? Object.assign : function(target, source) { + var from; + var to = toObject(target); + var symbols; + for (var s = 1; s < arguments.length; s++) { + from = Object(arguments[s]); + for (var key in from) { + if (hasOwnProperty.call(from, key)) { + to[key] = from[key]; + } + } + if (getOwnPropertySymbols) { + symbols = getOwnPropertySymbols(from); + for (var i = 0; i < symbols.length; i++) { + if (propIsEnumerable.call(from, symbols[i])) { + to[symbols[i]] = from[symbols[i]]; + } + } + } + } + return to; + }; + } +}); + +// node_modules/cors/lib/index.js +var require_lib3 = __commonJS({ + "node_modules/cors/lib/index.js"(exports2, module2) { + (function() { + "use strict"; + var assign = require_object_assign(); + var vary = require_vary(); + var defaults = { + origin: "*", + methods: "GET,HEAD,PUT,PATCH,POST,DELETE", + preflightContinue: false, + optionsSuccessStatus: 204 + }; + function isString(s) { + return typeof s === "string" || s instanceof String; + } + function isOriginAllowed(origin, allowedOrigin) { + if (Array.isArray(allowedOrigin)) { + for (var i = 0; i < allowedOrigin.length; ++i) { + if (isOriginAllowed(origin, allowedOrigin[i])) { + return true; + } + } + return false; + } else if (isString(allowedOrigin)) { + return origin === allowedOrigin; + } else if (allowedOrigin instanceof RegExp) { + return allowedOrigin.test(origin); + } else { + return !!allowedOrigin; + } + } + function configureOrigin(options, req) { + var requestOrigin = req.headers.origin, headers = [], isAllowed; + if (!options.origin || options.origin === "*") { + headers.push([{ + key: "Access-Control-Allow-Origin", + value: "*" + }]); + } else if (isString(options.origin)) { + headers.push([{ + key: "Access-Control-Allow-Origin", + value: options.origin + }]); + headers.push([{ + key: "Vary", + value: "Origin" + }]); + } else { + isAllowed = isOriginAllowed(requestOrigin, options.origin); + headers.push([{ + key: "Access-Control-Allow-Origin", + value: isAllowed ? requestOrigin : false + }]); + headers.push([{ + key: "Vary", + value: "Origin" + }]); + } + return headers; + } + function configureMethods(options) { + var methods = options.methods; + if (methods.join) { + methods = options.methods.join(","); + } + return { + key: "Access-Control-Allow-Methods", + value: methods + }; + } + function configureCredentials(options) { + if (options.credentials === true) { + return { + key: "Access-Control-Allow-Credentials", + value: "true" + }; + } + return null; + } + function configureAllowedHeaders(options, req) { + var allowedHeaders = options.allowedHeaders || options.headers; + var headers = []; + if (!allowedHeaders) { + allowedHeaders = req.headers["access-control-request-headers"]; + headers.push([{ + key: "Vary", + value: "Access-Control-Request-Headers" + }]); + } else if (allowedHeaders.join) { + allowedHeaders = allowedHeaders.join(","); + } + if (allowedHeaders && allowedHeaders.length) { + headers.push([{ + key: "Access-Control-Allow-Headers", + value: allowedHeaders + }]); + } + return headers; + } + function configureExposedHeaders(options) { + var headers = options.exposedHeaders; + if (!headers) { + return null; + } else if (headers.join) { + headers = headers.join(","); + } + if (headers && headers.length) { + return { + key: "Access-Control-Expose-Headers", + value: headers + }; + } + return null; + } + function configureMaxAge(options) { + var maxAge = (typeof options.maxAge === "number" || options.maxAge) && options.maxAge.toString(); + if (maxAge && maxAge.length) { + return { + key: "Access-Control-Max-Age", + value: maxAge + }; + } + return null; + } + function applyHeaders(headers, res) { + for (var i = 0, n = headers.length; i < n; i++) { + var header = headers[i]; + if (header) { + if (Array.isArray(header)) { + applyHeaders(header, res); + } else if (header.key === "Vary" && header.value) { + vary(res, header.value); + } else if (header.value) { + res.setHeader(header.key, header.value); + } + } + } + } + function cors5(options, req, res, next) { + var headers = [], method = req.method && req.method.toUpperCase && req.method.toUpperCase(); + if (method === "OPTIONS") { + headers.push(configureOrigin(options, req)); + headers.push(configureCredentials(options)); + headers.push(configureMethods(options)); + headers.push(configureAllowedHeaders(options, req)); + headers.push(configureMaxAge(options)); + headers.push(configureExposedHeaders(options)); + applyHeaders(headers, res); + if (options.preflightContinue) { + next(); + } else { + res.statusCode = options.optionsSuccessStatus; + res.setHeader("Content-Length", "0"); + res.end(); + } + } else { + headers.push(configureOrigin(options, req)); + headers.push(configureCredentials(options)); + headers.push(configureExposedHeaders(options)); + applyHeaders(headers, res); + next(); + } + } + function middlewareWrapper(o) { + var optionsCallback = null; + if (typeof o === "function") { + optionsCallback = o; + } else { + optionsCallback = function(req, cb) { + cb(null, o); + }; + } + return function corsMiddleware(req, res, next) { + optionsCallback(req, function(err, options) { + if (err) { + next(err); + } else { + var corsOptions = assign({}, defaults, options); + var originCallback = null; + if (corsOptions.origin && typeof corsOptions.origin === "function") { + originCallback = corsOptions.origin; + } else if (corsOptions.origin) { + originCallback = function(origin, cb) { + cb(null, corsOptions.origin); + }; + } + if (originCallback) { + originCallback(req.headers.origin, function(err2, origin) { + if (err2 || !origin) { + next(err2); + } else { + corsOptions.origin = origin; + cors5(corsOptions, req, res, next); + } + }); + } else { + next(); + } + } + }); + }; + } + module2.exports = middlewareWrapper; + })(); + } +}); + +// node_modules/ip-address/dist/common.js +var require_common3 = __commonJS({ + "node_modules/ip-address/dist/common.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { value: true }); + exports2.isInSubnet = isInSubnet; + exports2.isCorrect = isCorrect; + exports2.numberToPaddedHex = numberToPaddedHex; + exports2.stringToPaddedHex = stringToPaddedHex; + exports2.testBit = testBit; + function isInSubnet(address) { + if (this.subnetMask < address.subnetMask) { + return false; + } + if (this.mask(address.subnetMask) === address.mask()) { + return true; + } + return false; + } + function isCorrect(defaultBits) { + return function() { + if (this.addressMinusSuffix !== this.correctForm()) { + return false; + } + if (this.subnetMask === defaultBits && !this.parsedSubnet) { + return true; + } + return this.parsedSubnet === String(this.subnetMask); + }; + } + function numberToPaddedHex(number4) { + return number4.toString(16).padStart(2, "0"); + } + function stringToPaddedHex(numberString) { + return numberToPaddedHex(parseInt(numberString, 10)); + } + function testBit(binaryValue, position) { + const { length } = binaryValue; + if (position > length) { + return false; + } + const positionInString = length - position; + return binaryValue.substring(positionInString, positionInString + 1) === "1"; + } + } +}); + +// node_modules/ip-address/dist/v4/constants.js +var require_constants2 = __commonJS({ + "node_modules/ip-address/dist/v4/constants.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { value: true }); + exports2.RE_SUBNET_STRING = exports2.RE_ADDRESS = exports2.GROUPS = exports2.BITS = void 0; + exports2.BITS = 32; + exports2.GROUPS = 4; + exports2.RE_ADDRESS = /^(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$/g; + exports2.RE_SUBNET_STRING = /\/\d{1,2}$/; + } +}); + +// node_modules/ip-address/dist/address-error.js +var require_address_error = __commonJS({ + "node_modules/ip-address/dist/address-error.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { value: true }); + exports2.AddressError = void 0; + var AddressError = class extends Error { + constructor(message, parseMessage) { + super(message); + this.name = "AddressError"; + this.parseMessage = parseMessage; + } + }; + exports2.AddressError = AddressError; + } +}); + +// node_modules/ip-address/dist/ipv4.js +var require_ipv4 = __commonJS({ + "node_modules/ip-address/dist/ipv4.js"(exports2) { + "use strict"; + var __createBinding = exports2 && exports2.__createBinding || (Object.create ? (function(o, m, k, k2) { + if (k2 === void 0) k2 = k; + var desc = Object.getOwnPropertyDescriptor(m, k); + if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { + desc = { enumerable: true, get: function() { + return m[k]; + } }; + } + Object.defineProperty(o, k2, desc); + }) : (function(o, m, k, k2) { + if (k2 === void 0) k2 = k; + o[k2] = m[k]; + })); + var __setModuleDefault = exports2 && exports2.__setModuleDefault || (Object.create ? (function(o, v) { + Object.defineProperty(o, "default", { enumerable: true, value: v }); + }) : function(o, v) { + o["default"] = v; + }); + var __importStar = exports2 && exports2.__importStar || function(mod) { + if (mod && mod.__esModule) return mod; + var result = {}; + if (mod != null) { + for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); + } + __setModuleDefault(result, mod); + return result; + }; + Object.defineProperty(exports2, "__esModule", { value: true }); + exports2.Address4 = void 0; + var common = __importStar(require_common3()); + var constants2 = __importStar(require_constants2()); + var address_error_1 = require_address_error(); + var Address4 = class _Address4 { + constructor(address) { + this.groups = constants2.GROUPS; + this.parsedAddress = []; + this.parsedSubnet = ""; + this.subnet = "/32"; + this.subnetMask = 32; + this.v4 = true; + this.isCorrect = common.isCorrect(constants2.BITS); + this.isInSubnet = common.isInSubnet; + this.address = address; + const subnet = constants2.RE_SUBNET_STRING.exec(address); + if (subnet) { + this.parsedSubnet = subnet[0].replace("/", ""); + this.subnetMask = parseInt(this.parsedSubnet, 10); + this.subnet = `/${this.subnetMask}`; + if (this.subnetMask < 0 || this.subnetMask > constants2.BITS) { + throw new address_error_1.AddressError("Invalid subnet mask."); + } + address = address.replace(constants2.RE_SUBNET_STRING, ""); + } + this.addressMinusSuffix = address; + this.parsedAddress = this.parse(address); + } + static isValid(address) { + try { + new _Address4(address); + return true; + } catch (e) { + return false; + } + } + /* + * Parses a v4 address + */ + parse(address) { + const groups = address.split("."); + if (!address.match(constants2.RE_ADDRESS)) { + throw new address_error_1.AddressError("Invalid IPv4 address."); + } + return groups; + } + /** + * Returns the correct form of an address + * @memberof Address4 + * @instance + * @returns {String} + */ + correctForm() { + return this.parsedAddress.map((part) => parseInt(part, 10)).join("."); + } + /** + * Converts a hex string to an IPv4 address object + * @memberof Address4 + * @static + * @param {string} hex - a hex string to convert + * @returns {Address4} + */ + static fromHex(hex) { + const padded = hex.replace(/:/g, "").padStart(8, "0"); + const groups = []; + let i; + for (i = 0; i < 8; i += 2) { + const h = padded.slice(i, i + 2); + groups.push(parseInt(h, 16)); + } + return new _Address4(groups.join(".")); + } + /** + * Converts an integer into a IPv4 address object + * @memberof Address4 + * @static + * @param {integer} integer - a number to convert + * @returns {Address4} + */ + static fromInteger(integer2) { + return _Address4.fromHex(integer2.toString(16)); + } + /** + * Return an address from in-addr.arpa form + * @memberof Address4 + * @static + * @param {string} arpaFormAddress - an 'in-addr.arpa' form ipv4 address + * @returns {Adress4} + * @example + * var address = Address4.fromArpa(42.2.0.192.in-addr.arpa.) + * address.correctForm(); // '192.0.2.42' + */ + static fromArpa(arpaFormAddress) { + const leader = arpaFormAddress.replace(/(\.in-addr\.arpa)?\.$/, ""); + const address = leader.split(".").reverse().join("."); + return new _Address4(address); + } + /** + * Converts an IPv4 address object to a hex string + * @memberof Address4 + * @instance + * @returns {String} + */ + toHex() { + return this.parsedAddress.map((part) => common.stringToPaddedHex(part)).join(":"); + } + /** + * Converts an IPv4 address object to an array of bytes + * @memberof Address4 + * @instance + * @returns {Array} + */ + toArray() { + return this.parsedAddress.map((part) => parseInt(part, 10)); + } + /** + * Converts an IPv4 address object to an IPv6 address group + * @memberof Address4 + * @instance + * @returns {String} + */ + toGroup6() { + const output = []; + let i; + for (i = 0; i < constants2.GROUPS; i += 2) { + output.push(`${common.stringToPaddedHex(this.parsedAddress[i])}${common.stringToPaddedHex(this.parsedAddress[i + 1])}`); + } + return output.join(":"); + } + /** + * Returns the address as a `bigint` + * @memberof Address4 + * @instance + * @returns {bigint} + */ + bigInt() { + return BigInt(`0x${this.parsedAddress.map((n) => common.stringToPaddedHex(n)).join("")}`); + } + /** + * Helper function getting start address. + * @memberof Address4 + * @instance + * @returns {bigint} + */ + _startAddress() { + return BigInt(`0b${this.mask() + "0".repeat(constants2.BITS - this.subnetMask)}`); + } + /** + * The first address in the range given by this address' subnet. + * Often referred to as the Network Address. + * @memberof Address4 + * @instance + * @returns {Address4} + */ + startAddress() { + return _Address4.fromBigInt(this._startAddress()); + } + /** + * The first host address in the range given by this address's subnet ie + * the first address after the Network Address + * @memberof Address4 + * @instance + * @returns {Address4} + */ + startAddressExclusive() { + const adjust = BigInt("1"); + return _Address4.fromBigInt(this._startAddress() + adjust); + } + /** + * Helper function getting end address. + * @memberof Address4 + * @instance + * @returns {bigint} + */ + _endAddress() { + return BigInt(`0b${this.mask() + "1".repeat(constants2.BITS - this.subnetMask)}`); + } + /** + * The last address in the range given by this address' subnet + * Often referred to as the Broadcast + * @memberof Address4 + * @instance + * @returns {Address4} + */ + endAddress() { + return _Address4.fromBigInt(this._endAddress()); + } + /** + * The last host address in the range given by this address's subnet ie + * the last address prior to the Broadcast Address + * @memberof Address4 + * @instance + * @returns {Address4} + */ + endAddressExclusive() { + const adjust = BigInt("1"); + return _Address4.fromBigInt(this._endAddress() - adjust); + } + /** + * Converts a BigInt to a v4 address object + * @memberof Address4 + * @static + * @param {bigint} bigInt - a BigInt to convert + * @returns {Address4} + */ + static fromBigInt(bigInt) { + return _Address4.fromHex(bigInt.toString(16)); + } + /** + * Convert a byte array to an Address4 object + * @memberof Address4 + * @static + * @param {Array} bytes - an array of 4 bytes (0-255) + * @returns {Address4} + */ + static fromByteArray(bytes) { + if (bytes.length !== 4) { + throw new address_error_1.AddressError("IPv4 addresses require exactly 4 bytes"); + } + for (let i = 0; i < bytes.length; i++) { + if (!Number.isInteger(bytes[i]) || bytes[i] < 0 || bytes[i] > 255) { + throw new address_error_1.AddressError("All bytes must be integers between 0 and 255"); + } + } + return this.fromUnsignedByteArray(bytes); + } + /** + * Convert an unsigned byte array to an Address4 object + * @memberof Address4 + * @static + * @param {Array} bytes - an array of 4 unsigned bytes (0-255) + * @returns {Address4} + */ + static fromUnsignedByteArray(bytes) { + if (bytes.length !== 4) { + throw new address_error_1.AddressError("IPv4 addresses require exactly 4 bytes"); + } + const address = bytes.join("."); + return new _Address4(address); + } + /** + * Returns the first n bits of the address, defaulting to the + * subnet mask + * @memberof Address4 + * @instance + * @returns {String} + */ + mask(mask) { + if (mask === void 0) { + mask = this.subnetMask; + } + return this.getBitsBase2(0, mask); + } + /** + * Returns the bits in the given range as a base-2 string + * @memberof Address4 + * @instance + * @returns {string} + */ + getBitsBase2(start, end) { + return this.binaryZeroPad().slice(start, end); + } + /** + * Return the reversed ip6.arpa form of the address + * @memberof Address4 + * @param {Object} options + * @param {boolean} options.omitSuffix - omit the "in-addr.arpa" suffix + * @instance + * @returns {String} + */ + reverseForm(options) { + if (!options) { + options = {}; + } + const reversed = this.correctForm().split(".").reverse().join("."); + if (options.omitSuffix) { + return reversed; + } + return `${reversed}.in-addr.arpa.`; + } + /** + * Returns true if the given address is a multicast address + * @memberof Address4 + * @instance + * @returns {boolean} + */ + isMulticast() { + return this.isInSubnet(new _Address4("224.0.0.0/4")); + } + /** + * Returns a zero-padded base-2 string representation of the address + * @memberof Address4 + * @instance + * @returns {string} + */ + binaryZeroPad() { + return this.bigInt().toString(2).padStart(constants2.BITS, "0"); + } + /** + * Groups an IPv4 address for inclusion at the end of an IPv6 address + * @returns {String} + */ + groupForV6() { + const segments = this.parsedAddress; + return this.address.replace(constants2.RE_ADDRESS, `${segments.slice(0, 2).join(".")}.${segments.slice(2, 4).join(".")}`); + } + }; + exports2.Address4 = Address4; + } +}); + +// node_modules/ip-address/dist/v6/constants.js +var require_constants3 = __commonJS({ + "node_modules/ip-address/dist/v6/constants.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { value: true }); + exports2.RE_URL_WITH_PORT = exports2.RE_URL = exports2.RE_ZONE_STRING = exports2.RE_SUBNET_STRING = exports2.RE_BAD_ADDRESS = exports2.RE_BAD_CHARACTERS = exports2.TYPES = exports2.SCOPES = exports2.GROUPS = exports2.BITS = void 0; + exports2.BITS = 128; + exports2.GROUPS = 8; + exports2.SCOPES = { + 0: "Reserved", + 1: "Interface local", + 2: "Link local", + 4: "Admin local", + 5: "Site local", + 8: "Organization local", + 14: "Global", + 15: "Reserved" + }; + exports2.TYPES = { + "ff01::1/128": "Multicast (All nodes on this interface)", + "ff01::2/128": "Multicast (All routers on this interface)", + "ff02::1/128": "Multicast (All nodes on this link)", + "ff02::2/128": "Multicast (All routers on this link)", + "ff05::2/128": "Multicast (All routers in this site)", + "ff02::5/128": "Multicast (OSPFv3 AllSPF routers)", + "ff02::6/128": "Multicast (OSPFv3 AllDR routers)", + "ff02::9/128": "Multicast (RIP routers)", + "ff02::a/128": "Multicast (EIGRP routers)", + "ff02::d/128": "Multicast (PIM routers)", + "ff02::16/128": "Multicast (MLDv2 reports)", + "ff01::fb/128": "Multicast (mDNSv6)", + "ff02::fb/128": "Multicast (mDNSv6)", + "ff05::fb/128": "Multicast (mDNSv6)", + "ff02::1:2/128": "Multicast (All DHCP servers and relay agents on this link)", + "ff05::1:2/128": "Multicast (All DHCP servers and relay agents in this site)", + "ff02::1:3/128": "Multicast (All DHCP servers on this link)", + "ff05::1:3/128": "Multicast (All DHCP servers in this site)", + "::/128": "Unspecified", + "::1/128": "Loopback", + "ff00::/8": "Multicast", + "fe80::/10": "Link-local unicast" + }; + exports2.RE_BAD_CHARACTERS = /([^0-9a-f:/%])/gi; + exports2.RE_BAD_ADDRESS = /([0-9a-f]{5,}|:{3,}|[^:]:$|^:[^:]|\/$)/gi; + exports2.RE_SUBNET_STRING = /\/\d{1,3}(?=%|$)/; + exports2.RE_ZONE_STRING = /%.*$/; + exports2.RE_URL = /^\[{0,1}([0-9a-f:]+)\]{0,1}/; + exports2.RE_URL_WITH_PORT = /\[([0-9a-f:]+)\]:([0-9]{1,5})/; + } +}); + +// node_modules/ip-address/dist/v6/helpers.js +var require_helpers2 = __commonJS({ + "node_modules/ip-address/dist/v6/helpers.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { value: true }); + exports2.spanAllZeroes = spanAllZeroes; + exports2.spanAll = spanAll; + exports2.spanLeadingZeroes = spanLeadingZeroes; + exports2.simpleGroup = simpleGroup; + function spanAllZeroes(s) { + return s.replace(/(0+)/g, '$1'); + } + function spanAll(s, offset = 0) { + const letters = s.split(""); + return letters.map((n, i) => `${spanAllZeroes(n)}`).join(""); + } + function spanLeadingZeroesSimple(group) { + return group.replace(/^(0+)/, '$1'); + } + function spanLeadingZeroes(address) { + const groups = address.split(":"); + return groups.map((g) => spanLeadingZeroesSimple(g)).join(":"); + } + function simpleGroup(addressString, offset = 0) { + const groups = addressString.split(":"); + return groups.map((g, i) => { + if (/group-v4/.test(g)) { + return g; + } + return `${spanLeadingZeroesSimple(g)}`; + }); + } + } +}); + +// node_modules/ip-address/dist/v6/regular-expressions.js +var require_regular_expressions = __commonJS({ + "node_modules/ip-address/dist/v6/regular-expressions.js"(exports2) { + "use strict"; + var __createBinding = exports2 && exports2.__createBinding || (Object.create ? (function(o, m, k, k2) { + if (k2 === void 0) k2 = k; + var desc = Object.getOwnPropertyDescriptor(m, k); + if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { + desc = { enumerable: true, get: function() { + return m[k]; + } }; + } + Object.defineProperty(o, k2, desc); + }) : (function(o, m, k, k2) { + if (k2 === void 0) k2 = k; + o[k2] = m[k]; + })); + var __setModuleDefault = exports2 && exports2.__setModuleDefault || (Object.create ? (function(o, v) { + Object.defineProperty(o, "default", { enumerable: true, value: v }); + }) : function(o, v) { + o["default"] = v; + }); + var __importStar = exports2 && exports2.__importStar || function(mod) { + if (mod && mod.__esModule) return mod; + var result = {}; + if (mod != null) { + for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); + } + __setModuleDefault(result, mod); + return result; + }; + Object.defineProperty(exports2, "__esModule", { value: true }); + exports2.ADDRESS_BOUNDARY = void 0; + exports2.groupPossibilities = groupPossibilities; + exports2.padGroup = padGroup; + exports2.simpleRegularExpression = simpleRegularExpression; + exports2.possibleElisions = possibleElisions; + var v6 = __importStar(require_constants3()); + function groupPossibilities(possibilities) { + return `(${possibilities.join("|")})`; + } + function padGroup(group) { + if (group.length < 4) { + return `0{0,${4 - group.length}}${group}`; + } + return group; + } + exports2.ADDRESS_BOUNDARY = "[^A-Fa-f0-9:]"; + function simpleRegularExpression(groups) { + const zeroIndexes = []; + groups.forEach((group, i) => { + const groupInteger = parseInt(group, 16); + if (groupInteger === 0) { + zeroIndexes.push(i); + } + }); + const possibilities = zeroIndexes.map((zeroIndex) => groups.map((group, i) => { + if (i === zeroIndex) { + const elision = i === 0 || i === v6.GROUPS - 1 ? ":" : ""; + return groupPossibilities([padGroup(group), elision]); + } + return padGroup(group); + }).join(":")); + possibilities.push(groups.map(padGroup).join(":")); + return groupPossibilities(possibilities); + } + function possibleElisions(elidedGroups, moreLeft, moreRight) { + const left = moreLeft ? "" : ":"; + const right = moreRight ? "" : ":"; + const possibilities = []; + if (!moreLeft && !moreRight) { + possibilities.push("::"); + } + if (moreLeft && moreRight) { + possibilities.push(""); + } + if (moreRight && !moreLeft || !moreRight && moreLeft) { + possibilities.push(":"); + } + possibilities.push(`${left}(:0{1,4}){1,${elidedGroups - 1}}`); + possibilities.push(`(0{1,4}:){1,${elidedGroups - 1}}${right}`); + possibilities.push(`(0{1,4}:){${elidedGroups - 1}}0{1,4}`); + for (let groups = 1; groups < elidedGroups - 1; groups++) { + for (let position = 1; position < elidedGroups - groups; position++) { + possibilities.push(`(0{1,4}:){${position}}:(0{1,4}:){${elidedGroups - position - groups - 1}}0{1,4}`); + } + } + return groupPossibilities(possibilities); + } + } +}); + +// node_modules/ip-address/dist/ipv6.js +var require_ipv6 = __commonJS({ + "node_modules/ip-address/dist/ipv6.js"(exports2) { + "use strict"; + var __createBinding = exports2 && exports2.__createBinding || (Object.create ? (function(o, m, k, k2) { + if (k2 === void 0) k2 = k; + var desc = Object.getOwnPropertyDescriptor(m, k); + if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { + desc = { enumerable: true, get: function() { + return m[k]; + } }; + } + Object.defineProperty(o, k2, desc); + }) : (function(o, m, k, k2) { + if (k2 === void 0) k2 = k; + o[k2] = m[k]; + })); + var __setModuleDefault = exports2 && exports2.__setModuleDefault || (Object.create ? (function(o, v) { + Object.defineProperty(o, "default", { enumerable: true, value: v }); + }) : function(o, v) { + o["default"] = v; + }); + var __importStar = exports2 && exports2.__importStar || function(mod) { + if (mod && mod.__esModule) return mod; + var result = {}; + if (mod != null) { + for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); + } + __setModuleDefault(result, mod); + return result; + }; + Object.defineProperty(exports2, "__esModule", { value: true }); + exports2.Address6 = void 0; + var common = __importStar(require_common3()); + var constants4 = __importStar(require_constants2()); + var constants6 = __importStar(require_constants3()); + var helpers = __importStar(require_helpers2()); + var ipv4_1 = require_ipv4(); + var regular_expressions_1 = require_regular_expressions(); + var address_error_1 = require_address_error(); + var common_1 = require_common3(); + function assert2(condition) { + if (!condition) { + throw new Error("Assertion failed."); + } + } + function addCommas(number4) { + const r = /(\d+)(\d{3})/; + while (r.test(number4)) { + number4 = number4.replace(r, "$1,$2"); + } + return number4; + } + function spanLeadingZeroes4(n) { + n = n.replace(/^(0{1,})([1-9]+)$/, '$1$2'); + n = n.replace(/^(0{1,})(0)$/, '$1$2'); + return n; + } + function compact(address, slice) { + const s1 = []; + const s2 = []; + let i; + for (i = 0; i < address.length; i++) { + if (i < slice[0]) { + s1.push(address[i]); + } else if (i > slice[1]) { + s2.push(address[i]); + } + } + return s1.concat(["compact"]).concat(s2); + } + function paddedHex(octet) { + return parseInt(octet, 16).toString(16).padStart(4, "0"); + } + function unsignByte(b) { + return b & 255; + } + var Address62 = class _Address6 { + constructor(address, optionalGroups) { + this.addressMinusSuffix = ""; + this.parsedSubnet = ""; + this.subnet = "/128"; + this.subnetMask = 128; + this.v4 = false; + this.zone = ""; + this.isInSubnet = common.isInSubnet; + this.isCorrect = common.isCorrect(constants6.BITS); + if (optionalGroups === void 0) { + this.groups = constants6.GROUPS; + } else { + this.groups = optionalGroups; + } + this.address = address; + const subnet = constants6.RE_SUBNET_STRING.exec(address); + if (subnet) { + this.parsedSubnet = subnet[0].replace("/", ""); + this.subnetMask = parseInt(this.parsedSubnet, 10); + this.subnet = `/${this.subnetMask}`; + if (Number.isNaN(this.subnetMask) || this.subnetMask < 0 || this.subnetMask > constants6.BITS) { + throw new address_error_1.AddressError("Invalid subnet mask."); + } + address = address.replace(constants6.RE_SUBNET_STRING, ""); + } else if (/\//.test(address)) { + throw new address_error_1.AddressError("Invalid subnet mask."); + } + const zone = constants6.RE_ZONE_STRING.exec(address); + if (zone) { + this.zone = zone[0]; + address = address.replace(constants6.RE_ZONE_STRING, ""); + } + this.addressMinusSuffix = address; + this.parsedAddress = this.parse(this.addressMinusSuffix); + } + static isValid(address) { + try { + new _Address6(address); + return true; + } catch (e) { + return false; + } + } + /** + * Convert a BigInt to a v6 address object + * @memberof Address6 + * @static + * @param {bigint} bigInt - a BigInt to convert + * @returns {Address6} + * @example + * var bigInt = BigInt('1000000000000'); + * var address = Address6.fromBigInt(bigInt); + * address.correctForm(); // '::e8:d4a5:1000' + */ + static fromBigInt(bigInt) { + const hex = bigInt.toString(16).padStart(32, "0"); + const groups = []; + let i; + for (i = 0; i < constants6.GROUPS; i++) { + groups.push(hex.slice(i * 4, (i + 1) * 4)); + } + return new _Address6(groups.join(":")); + } + /** + * Convert a URL (with optional port number) to an address object + * @memberof Address6 + * @static + * @param {string} url - a URL with optional port number + * @example + * var addressAndPort = Address6.fromURL('http://[ffff::]:8080/foo/'); + * addressAndPort.address.correctForm(); // 'ffff::' + * addressAndPort.port; // 8080 + */ + static fromURL(url2) { + let host; + let port = null; + let result; + if (url2.indexOf("[") !== -1 && url2.indexOf("]:") !== -1) { + result = constants6.RE_URL_WITH_PORT.exec(url2); + if (result === null) { + return { + error: "failed to parse address with port", + address: null, + port: null + }; + } + host = result[1]; + port = result[2]; + } else if (url2.indexOf("/") !== -1) { + url2 = url2.replace(/^[a-z0-9]+:\/\//, ""); + result = constants6.RE_URL.exec(url2); + if (result === null) { + return { + error: "failed to parse address from URL", + address: null, + port: null + }; + } + host = result[1]; + } else { + host = url2; + } + if (port) { + port = parseInt(port, 10); + if (port < 0 || port > 65536) { + port = null; + } + } else { + port = null; + } + return { + address: new _Address6(host), + port + }; + } + /** + * Create an IPv6-mapped address given an IPv4 address + * @memberof Address6 + * @static + * @param {string} address - An IPv4 address string + * @returns {Address6} + * @example + * var address = Address6.fromAddress4('192.168.0.1'); + * address.correctForm(); // '::ffff:c0a8:1' + * address.to4in6(); // '::ffff:192.168.0.1' + */ + static fromAddress4(address) { + const address4 = new ipv4_1.Address4(address); + const mask6 = constants6.BITS - (constants4.BITS - address4.subnetMask); + return new _Address6(`::ffff:${address4.correctForm()}/${mask6}`); + } + /** + * Return an address from ip6.arpa form + * @memberof Address6 + * @static + * @param {string} arpaFormAddress - an 'ip6.arpa' form address + * @returns {Adress6} + * @example + * var address = Address6.fromArpa(e.f.f.f.3.c.2.6.f.f.f.e.6.6.8.e.1.0.6.7.9.4.e.c.0.0.0.0.1.0.0.2.ip6.arpa.) + * address.correctForm(); // '2001:0:ce49:7601:e866:efff:62c3:fffe' + */ + static fromArpa(arpaFormAddress) { + let address = arpaFormAddress.replace(/(\.ip6\.arpa)?\.$/, ""); + const semicolonAmount = 7; + if (address.length !== 63) { + throw new address_error_1.AddressError("Invalid 'ip6.arpa' form."); + } + const parts = address.split(".").reverse(); + for (let i = semicolonAmount; i > 0; i--) { + const insertIndex = i * 4; + parts.splice(insertIndex, 0, ":"); + } + address = parts.join(""); + return new _Address6(address); + } + /** + * Return the Microsoft UNC transcription of the address + * @memberof Address6 + * @instance + * @returns {String} the Microsoft UNC transcription of the address + */ + microsoftTranscription() { + return `${this.correctForm().replace(/:/g, "-")}.ipv6-literal.net`; + } + /** + * Return the first n bits of the address, defaulting to the subnet mask + * @memberof Address6 + * @instance + * @param {number} [mask=subnet] - the number of bits to mask + * @returns {String} the first n bits of the address as a string + */ + mask(mask = this.subnetMask) { + return this.getBitsBase2(0, mask); + } + /** + * Return the number of possible subnets of a given size in the address + * @memberof Address6 + * @instance + * @param {number} [subnetSize=128] - the subnet size + * @returns {String} + */ + // TODO: probably useful to have a numeric version of this too + possibleSubnets(subnetSize = 128) { + const availableBits = constants6.BITS - this.subnetMask; + const subnetBits = Math.abs(subnetSize - constants6.BITS); + const subnetPowers = availableBits - subnetBits; + if (subnetPowers < 0) { + return "0"; + } + return addCommas((BigInt("2") ** BigInt(subnetPowers)).toString(10)); + } + /** + * Helper function getting start address. + * @memberof Address6 + * @instance + * @returns {bigint} + */ + _startAddress() { + return BigInt(`0b${this.mask() + "0".repeat(constants6.BITS - this.subnetMask)}`); + } + /** + * The first address in the range given by this address' subnet + * Often referred to as the Network Address. + * @memberof Address6 + * @instance + * @returns {Address6} + */ + startAddress() { + return _Address6.fromBigInt(this._startAddress()); + } + /** + * The first host address in the range given by this address's subnet ie + * the first address after the Network Address + * @memberof Address6 + * @instance + * @returns {Address6} + */ + startAddressExclusive() { + const adjust = BigInt("1"); + return _Address6.fromBigInt(this._startAddress() + adjust); + } + /** + * Helper function getting end address. + * @memberof Address6 + * @instance + * @returns {bigint} + */ + _endAddress() { + return BigInt(`0b${this.mask() + "1".repeat(constants6.BITS - this.subnetMask)}`); + } + /** + * The last address in the range given by this address' subnet + * Often referred to as the Broadcast + * @memberof Address6 + * @instance + * @returns {Address6} + */ + endAddress() { + return _Address6.fromBigInt(this._endAddress()); + } + /** + * The last host address in the range given by this address's subnet ie + * the last address prior to the Broadcast Address + * @memberof Address6 + * @instance + * @returns {Address6} + */ + endAddressExclusive() { + const adjust = BigInt("1"); + return _Address6.fromBigInt(this._endAddress() - adjust); + } + /** + * Return the scope of the address + * @memberof Address6 + * @instance + * @returns {String} + */ + getScope() { + let scope = constants6.SCOPES[parseInt(this.getBits(12, 16).toString(10), 10)]; + if (this.getType() === "Global unicast" && scope !== "Link local") { + scope = "Global"; + } + return scope || "Unknown"; + } + /** + * Return the type of the address + * @memberof Address6 + * @instance + * @returns {String} + */ + getType() { + for (const subnet of Object.keys(constants6.TYPES)) { + if (this.isInSubnet(new _Address6(subnet))) { + return constants6.TYPES[subnet]; + } + } + return "Global unicast"; + } + /** + * Return the bits in the given range as a BigInt + * @memberof Address6 + * @instance + * @returns {bigint} + */ + getBits(start, end) { + return BigInt(`0b${this.getBitsBase2(start, end)}`); + } + /** + * Return the bits in the given range as a base-2 string + * @memberof Address6 + * @instance + * @returns {String} + */ + getBitsBase2(start, end) { + return this.binaryZeroPad().slice(start, end); + } + /** + * Return the bits in the given range as a base-16 string + * @memberof Address6 + * @instance + * @returns {String} + */ + getBitsBase16(start, end) { + const length = end - start; + if (length % 4 !== 0) { + throw new Error("Length of bits to retrieve must be divisible by four"); + } + return this.getBits(start, end).toString(16).padStart(length / 4, "0"); + } + /** + * Return the bits that are set past the subnet mask length + * @memberof Address6 + * @instance + * @returns {String} + */ + getBitsPastSubnet() { + return this.getBitsBase2(this.subnetMask, constants6.BITS); + } + /** + * Return the reversed ip6.arpa form of the address + * @memberof Address6 + * @param {Object} options + * @param {boolean} options.omitSuffix - omit the "ip6.arpa" suffix + * @instance + * @returns {String} + */ + reverseForm(options) { + if (!options) { + options = {}; + } + const characters = Math.floor(this.subnetMask / 4); + const reversed = this.canonicalForm().replace(/:/g, "").split("").slice(0, characters).reverse().join("."); + if (characters > 0) { + if (options.omitSuffix) { + return reversed; + } + return `${reversed}.ip6.arpa.`; + } + if (options.omitSuffix) { + return ""; + } + return "ip6.arpa."; + } + /** + * Return the correct form of the address + * @memberof Address6 + * @instance + * @returns {String} + */ + correctForm() { + let i; + let groups = []; + let zeroCounter = 0; + const zeroes = []; + for (i = 0; i < this.parsedAddress.length; i++) { + const value = parseInt(this.parsedAddress[i], 16); + if (value === 0) { + zeroCounter++; + } + if (value !== 0 && zeroCounter > 0) { + if (zeroCounter > 1) { + zeroes.push([i - zeroCounter, i - 1]); + } + zeroCounter = 0; + } + } + if (zeroCounter > 1) { + zeroes.push([this.parsedAddress.length - zeroCounter, this.parsedAddress.length - 1]); + } + const zeroLengths = zeroes.map((n) => n[1] - n[0] + 1); + if (zeroes.length > 0) { + const index = zeroLengths.indexOf(Math.max(...zeroLengths)); + groups = compact(this.parsedAddress, zeroes[index]); + } else { + groups = this.parsedAddress; + } + for (i = 0; i < groups.length; i++) { + if (groups[i] !== "compact") { + groups[i] = parseInt(groups[i], 16).toString(16); + } + } + let correct = groups.join(":"); + correct = correct.replace(/^compact$/, "::"); + correct = correct.replace(/(^compact)|(compact$)/, ":"); + correct = correct.replace(/compact/, ""); + return correct; + } + /** + * Return a zero-padded base-2 string representation of the address + * @memberof Address6 + * @instance + * @returns {String} + * @example + * var address = new Address6('2001:4860:4001:803::1011'); + * address.binaryZeroPad(); + * // '0010000000000001010010000110000001000000000000010000100000000011 + * // 0000000000000000000000000000000000000000000000000001000000010001' + */ + binaryZeroPad() { + return this.bigInt().toString(2).padStart(constants6.BITS, "0"); + } + // TODO: Improve the semantics of this helper function + parse4in6(address) { + const groups = address.split(":"); + const lastGroup = groups.slice(-1)[0]; + const address4 = lastGroup.match(constants4.RE_ADDRESS); + if (address4) { + this.parsedAddress4 = address4[0]; + this.address4 = new ipv4_1.Address4(this.parsedAddress4); + for (let i = 0; i < this.address4.groups; i++) { + if (/^0[0-9]+/.test(this.address4.parsedAddress[i])) { + throw new address_error_1.AddressError("IPv4 addresses can't have leading zeroes.", address.replace(constants4.RE_ADDRESS, this.address4.parsedAddress.map(spanLeadingZeroes4).join("."))); + } + } + this.v4 = true; + groups[groups.length - 1] = this.address4.toGroup6(); + address = groups.join(":"); + } + return address; + } + // TODO: Make private? + parse(address) { + address = this.parse4in6(address); + const badCharacters = address.match(constants6.RE_BAD_CHARACTERS); + if (badCharacters) { + throw new address_error_1.AddressError(`Bad character${badCharacters.length > 1 ? "s" : ""} detected in address: ${badCharacters.join("")}`, address.replace(constants6.RE_BAD_CHARACTERS, '$1')); + } + const badAddress = address.match(constants6.RE_BAD_ADDRESS); + if (badAddress) { + throw new address_error_1.AddressError(`Address failed regex: ${badAddress.join("")}`, address.replace(constants6.RE_BAD_ADDRESS, '$1')); + } + let groups = []; + const halves = address.split("::"); + if (halves.length === 2) { + let first = halves[0].split(":"); + let last = halves[1].split(":"); + if (first.length === 1 && first[0] === "") { + first = []; + } + if (last.length === 1 && last[0] === "") { + last = []; + } + const remaining = this.groups - (first.length + last.length); + if (!remaining) { + throw new address_error_1.AddressError("Error parsing groups"); + } + this.elidedGroups = remaining; + this.elisionBegin = first.length; + this.elisionEnd = first.length + this.elidedGroups; + groups = groups.concat(first); + for (let i = 0; i < remaining; i++) { + groups.push("0"); + } + groups = groups.concat(last); + } else if (halves.length === 1) { + groups = address.split(":"); + this.elidedGroups = 0; + } else { + throw new address_error_1.AddressError("Too many :: groups found"); + } + groups = groups.map((group) => parseInt(group, 16).toString(16)); + if (groups.length !== this.groups) { + throw new address_error_1.AddressError("Incorrect number of groups found"); + } + return groups; + } + /** + * Return the canonical form of the address + * @memberof Address6 + * @instance + * @returns {String} + */ + canonicalForm() { + return this.parsedAddress.map(paddedHex).join(":"); + } + /** + * Return the decimal form of the address + * @memberof Address6 + * @instance + * @returns {String} + */ + decimal() { + return this.parsedAddress.map((n) => parseInt(n, 16).toString(10).padStart(5, "0")).join(":"); + } + /** + * Return the address as a BigInt + * @memberof Address6 + * @instance + * @returns {bigint} + */ + bigInt() { + return BigInt(`0x${this.parsedAddress.map(paddedHex).join("")}`); + } + /** + * Return the last two groups of this address as an IPv4 address string + * @memberof Address6 + * @instance + * @returns {Address4} + * @example + * var address = new Address6('2001:4860:4001::1825:bf11'); + * address.to4().correctForm(); // '24.37.191.17' + */ + to4() { + const binary = this.binaryZeroPad().split(""); + return ipv4_1.Address4.fromHex(BigInt(`0b${binary.slice(96, 128).join("")}`).toString(16)); + } + /** + * Return the v4-in-v6 form of the address + * @memberof Address6 + * @instance + * @returns {String} + */ + to4in6() { + const address4 = this.to4(); + const address6 = new _Address6(this.parsedAddress.slice(0, 6).join(":"), 6); + const correct = address6.correctForm(); + let infix = ""; + if (!/:$/.test(correct)) { + infix = ":"; + } + return correct + infix + address4.address; + } + /** + * Return an object containing the Teredo properties of the address + * @memberof Address6 + * @instance + * @returns {Object} + */ + inspectTeredo() { + const prefix = this.getBitsBase16(0, 32); + const bitsForUdpPort = this.getBits(80, 96); + const udpPort = (bitsForUdpPort ^ BigInt("0xffff")).toString(); + const server4 = ipv4_1.Address4.fromHex(this.getBitsBase16(32, 64)); + const bitsForClient4 = this.getBits(96, 128); + const client4 = ipv4_1.Address4.fromHex((bitsForClient4 ^ BigInt("0xffffffff")).toString(16)); + const flagsBase2 = this.getBitsBase2(64, 80); + const coneNat = (0, common_1.testBit)(flagsBase2, 15); + const reserved = (0, common_1.testBit)(flagsBase2, 14); + const groupIndividual = (0, common_1.testBit)(flagsBase2, 8); + const universalLocal = (0, common_1.testBit)(flagsBase2, 9); + const nonce = BigInt(`0b${flagsBase2.slice(2, 6) + flagsBase2.slice(8, 16)}`).toString(10); + return { + prefix: `${prefix.slice(0, 4)}:${prefix.slice(4, 8)}`, + server4: server4.address, + client4: client4.address, + flags: flagsBase2, + coneNat, + microsoft: { + reserved, + universalLocal, + groupIndividual, + nonce + }, + udpPort + }; + } + /** + * Return an object containing the 6to4 properties of the address + * @memberof Address6 + * @instance + * @returns {Object} + */ + inspect6to4() { + const prefix = this.getBitsBase16(0, 16); + const gateway = ipv4_1.Address4.fromHex(this.getBitsBase16(16, 48)); + return { + prefix: prefix.slice(0, 4), + gateway: gateway.address + }; + } + /** + * Return a v6 6to4 address from a v6 v4inv6 address + * @memberof Address6 + * @instance + * @returns {Address6} + */ + to6to4() { + if (!this.is4()) { + return null; + } + const addr6to4 = [ + "2002", + this.getBitsBase16(96, 112), + this.getBitsBase16(112, 128), + "", + "/16" + ].join(":"); + return new _Address6(addr6to4); + } + /** + * Return a byte array + * @memberof Address6 + * @instance + * @returns {Array} + */ + toByteArray() { + const valueWithoutPadding = this.bigInt().toString(16); + const leadingPad = "0".repeat(valueWithoutPadding.length % 2); + const value = `${leadingPad}${valueWithoutPadding}`; + const bytes = []; + for (let i = 0, length = value.length; i < length; i += 2) { + bytes.push(parseInt(value.substring(i, i + 2), 16)); + } + return bytes; + } + /** + * Return an unsigned byte array + * @memberof Address6 + * @instance + * @returns {Array} + */ + toUnsignedByteArray() { + return this.toByteArray().map(unsignByte); + } + /** + * Convert a byte array to an Address6 object + * @memberof Address6 + * @static + * @returns {Address6} + */ + static fromByteArray(bytes) { + return this.fromUnsignedByteArray(bytes.map(unsignByte)); + } + /** + * Convert an unsigned byte array to an Address6 object + * @memberof Address6 + * @static + * @returns {Address6} + */ + static fromUnsignedByteArray(bytes) { + const BYTE_MAX = BigInt("256"); + let result = BigInt("0"); + let multiplier = BigInt("1"); + for (let i = bytes.length - 1; i >= 0; i--) { + result += multiplier * BigInt(bytes[i].toString(10)); + multiplier *= BYTE_MAX; + } + return _Address6.fromBigInt(result); + } + /** + * Returns true if the address is in the canonical form, false otherwise + * @memberof Address6 + * @instance + * @returns {boolean} + */ + isCanonical() { + return this.addressMinusSuffix === this.canonicalForm(); + } + /** + * Returns true if the address is a link local address, false otherwise + * @memberof Address6 + * @instance + * @returns {boolean} + */ + isLinkLocal() { + if (this.getBitsBase2(0, 64) === "1111111010000000000000000000000000000000000000000000000000000000") { + return true; + } + return false; + } + /** + * Returns true if the address is a multicast address, false otherwise + * @memberof Address6 + * @instance + * @returns {boolean} + */ + isMulticast() { + return this.getType() === "Multicast"; + } + /** + * Returns true if the address is a v4-in-v6 address, false otherwise + * @memberof Address6 + * @instance + * @returns {boolean} + */ + is4() { + return this.v4; + } + /** + * Returns true if the address is a Teredo address, false otherwise + * @memberof Address6 + * @instance + * @returns {boolean} + */ + isTeredo() { + return this.isInSubnet(new _Address6("2001::/32")); + } + /** + * Returns true if the address is a 6to4 address, false otherwise + * @memberof Address6 + * @instance + * @returns {boolean} + */ + is6to4() { + return this.isInSubnet(new _Address6("2002::/16")); + } + /** + * Returns true if the address is a loopback address, false otherwise + * @memberof Address6 + * @instance + * @returns {boolean} + */ + isLoopback() { + return this.getType() === "Loopback"; + } + // #endregion + // #region HTML + /** + * @returns {String} the address in link form with a default port of 80 + */ + href(optionalPort) { + if (optionalPort === void 0) { + optionalPort = ""; + } else { + optionalPort = `:${optionalPort}`; + } + return `http://[${this.correctForm()}]${optionalPort}/`; + } + /** + * @returns {String} a link suitable for conveying the address via a URL hash + */ + link(options) { + if (!options) { + options = {}; + } + if (options.className === void 0) { + options.className = ""; + } + if (options.prefix === void 0) { + options.prefix = "/#address="; + } + if (options.v4 === void 0) { + options.v4 = false; + } + let formFunction = this.correctForm; + if (options.v4) { + formFunction = this.to4in6; + } + const form = formFunction.call(this); + if (options.className) { + return `${form}`; + } + return `${form}`; + } + /** + * Groups an address + * @returns {String} + */ + group() { + if (this.elidedGroups === 0) { + return helpers.simpleGroup(this.address).join(":"); + } + assert2(typeof this.elidedGroups === "number"); + assert2(typeof this.elisionBegin === "number"); + const output = []; + const [left, right] = this.address.split("::"); + if (left.length) { + output.push(...helpers.simpleGroup(left)); + } else { + output.push(""); + } + const classes = ["hover-group"]; + for (let i = this.elisionBegin; i < this.elisionBegin + this.elidedGroups; i++) { + classes.push(`group-${i}`); + } + output.push(``); + if (right.length) { + output.push(...helpers.simpleGroup(right, this.elisionEnd)); + } else { + output.push(""); + } + if (this.is4()) { + assert2(this.address4 instanceof ipv4_1.Address4); + output.pop(); + output.push(this.address4.groupForV6()); + } + return output.join(":"); + } + // #endregion + // #region Regular expressions + /** + * Generate a regular expression string that can be used to find or validate + * all variations of this address + * @memberof Address6 + * @instance + * @param {boolean} substringSearch + * @returns {string} + */ + regularExpressionString(substringSearch = false) { + let output = []; + const address6 = new _Address6(this.correctForm()); + if (address6.elidedGroups === 0) { + output.push((0, regular_expressions_1.simpleRegularExpression)(address6.parsedAddress)); + } else if (address6.elidedGroups === constants6.GROUPS) { + output.push((0, regular_expressions_1.possibleElisions)(constants6.GROUPS)); + } else { + const halves = address6.address.split("::"); + if (halves[0].length) { + output.push((0, regular_expressions_1.simpleRegularExpression)(halves[0].split(":"))); + } + assert2(typeof address6.elidedGroups === "number"); + output.push((0, regular_expressions_1.possibleElisions)(address6.elidedGroups, halves[0].length !== 0, halves[1].length !== 0)); + if (halves[1].length) { + output.push((0, regular_expressions_1.simpleRegularExpression)(halves[1].split(":"))); + } + output = [output.join(":")]; + } + if (!substringSearch) { + output = [ + "(?=^|", + regular_expressions_1.ADDRESS_BOUNDARY, + "|[^\\w\\:])(", + ...output, + ")(?=[^\\w\\:]|", + regular_expressions_1.ADDRESS_BOUNDARY, + "|$)" + ]; + } + return output.join(""); + } + /** + * Generate a regular expression that can be used to find or validate all + * variations of this address. + * @memberof Address6 + * @instance + * @param {boolean} substringSearch + * @returns {RegExp} + */ + regularExpression(substringSearch = false) { + return new RegExp(this.regularExpressionString(substringSearch), "i"); + } + }; + exports2.Address6 = Address62; + } +}); + +// node_modules/ip-address/dist/ip-address.js +var require_ip_address = __commonJS({ + "node_modules/ip-address/dist/ip-address.js"(exports2) { + "use strict"; + var __createBinding = exports2 && exports2.__createBinding || (Object.create ? (function(o, m, k, k2) { + if (k2 === void 0) k2 = k; + var desc = Object.getOwnPropertyDescriptor(m, k); + if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { + desc = { enumerable: true, get: function() { + return m[k]; + } }; + } + Object.defineProperty(o, k2, desc); + }) : (function(o, m, k, k2) { + if (k2 === void 0) k2 = k; + o[k2] = m[k]; + })); + var __setModuleDefault = exports2 && exports2.__setModuleDefault || (Object.create ? (function(o, v) { + Object.defineProperty(o, "default", { enumerable: true, value: v }); + }) : function(o, v) { + o["default"] = v; + }); + var __importStar = exports2 && exports2.__importStar || function(mod) { + if (mod && mod.__esModule) return mod; + var result = {}; + if (mod != null) { + for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); + } + __setModuleDefault(result, mod); + return result; + }; + Object.defineProperty(exports2, "__esModule", { value: true }); + exports2.v6 = exports2.AddressError = exports2.Address6 = exports2.Address4 = void 0; + var ipv4_1 = require_ipv4(); + Object.defineProperty(exports2, "Address4", { enumerable: true, get: function() { + return ipv4_1.Address4; + } }); + var ipv6_1 = require_ipv6(); + Object.defineProperty(exports2, "Address6", { enumerable: true, get: function() { + return ipv6_1.Address6; + } }); + var address_error_1 = require_address_error(); + Object.defineProperty(exports2, "AddressError", { enumerable: true, get: function() { + return address_error_1.AddressError; + } }); + var helpers = __importStar(require_helpers2()); + exports2.v6 = { helpers }; + } +}); + +// node_modules/dotenv/config.js +(function() { + require_main().config( + Object.assign( + {}, + require_env_options(), + require_cli_options()(process.argv) + ) + ); +})(); + +// node_modules/commander/esm.mjs +var import_index = __toESM(require_commander(), 1); +var { + program, + createCommand, + createArgument, + createOption, + CommanderError, + InvalidArgumentError, + InvalidOptionArgumentError, + // deprecated old name + Command, + Argument, + Option, + Help +} = import_index.default; + +// node_modules/@softeria/ms-365-mcp-server/dist/cli.js +var import_fs = require("fs"); +var import_path = __toESM(require("path"), 1); +var import_url = require("url"); + +// node_modules/@softeria/ms-365-mcp-server/dist/tool-categories.js +var TOOL_CATEGORIES = { + mail: { + name: "mail", + pattern: /mail|attachment|draft/i, + description: "Email operations (read, send, manage folders, attachments)" + }, + calendar: { + name: "calendar", + pattern: /calendar|event/i, + description: "Calendar and event management" + }, + files: { + name: "files", + pattern: /drive|file|upload|download|folder|item/i, + description: "OneDrive file and folder operations" + }, + personal: { + name: "personal", + pattern: /mail|calendar|drive|contact|todo|onenote|attachment|draft|event|file|folder|search|query/i, + description: "Personal productivity tools (mail, calendar, files, contacts, tasks, notes, search)" + }, + work: { + name: "work", + pattern: /team|channel|chat|sharepoint|planner|site|list|shared|search|query/i, + description: "Organization/work tools (Teams, SharePoint, shared mailboxes, search)", + requiresOrgMode: true + }, + excel: { + name: "excel", + pattern: /excel|worksheet|workbook|range|chart/i, + description: "Excel spreadsheet operations" + }, + contacts: { + name: "contacts", + pattern: /contact/i, + description: "Outlook contacts management" + }, + tasks: { + name: "tasks", + pattern: /todo|planner|task/i, + description: "Task and planning tools (To Do, Planner)" + }, + onenote: { + name: "onenote", + pattern: /onenote|notebook|section|page/i, + description: "OneNote notebook operations" + }, + search: { + name: "search", + pattern: /search|query/i, + description: "Microsoft Search capabilities" + }, + users: { + name: "users", + pattern: /user|list-users/i, + description: "User directory access", + requiresOrgMode: true + }, + all: { + name: "all", + pattern: /.*/, + description: "All available tools" + } +}; +function getCombinedPresetPattern(presets) { + const patterns = presets.map((preset) => { + const category = TOOL_CATEGORIES[preset]; + if (!category) { + throw new Error( + `Unknown preset: ${preset}. Available presets: ${Object.keys(TOOL_CATEGORIES).join(", ")}` + ); + } + return category.pattern.source; + }); + return patterns.join("|"); +} +function listPresets() { + return Object.values(TOOL_CATEGORIES).map((category) => ({ + name: category.name, + description: category.description, + requiresOrgMode: category.requiresOrgMode + })); +} +function presetRequiresOrgMode(preset) { + const category = TOOL_CATEGORIES[preset]; + return category?.requiresOrgMode || false; +} + +// node_modules/@softeria/ms-365-mcp-server/dist/cli.js +var __dirname = import_path.default.dirname((0, import_url.fileURLToPath)(__OPENSWARM_IMPORT_META_URL__)); +var packageJsonPath = import_path.default.join(__dirname, "..", "package.json"); +var packageJson = JSON.parse((0, import_fs.readFileSync)(packageJsonPath, "utf8")); +var version = packageJson.version; +var program2 = new Command(); +program2.name("ms-365-mcp-server").description("Microsoft 365 MCP Server").version(version).option("-v", "Enable verbose logging").option("--login", "Login to Microsoft account").option("--logout", "Log out and clear saved credentials").option("--verify-login", "Verify login without starting the server").option("--list-accounts", "List all cached accounts").option("--select-account ", "Select a specific account by ID").option("--remove-account ", "Remove a specific account by ID").option("--read-only", "Start server in read-only mode, disabling write operations").option( + "--http [address]", + 'Use Streamable HTTP transport instead of stdio. Format: [host:]port (e.g., "localhost:3000", ":3000", "3000"). Default: all interfaces on port 3000' +).option( + "--enable-auth-tools", + "Enable login/logout tools when using HTTP mode (disabled by default in HTTP mode)" +).option( + "--enabled-tools ", + 'Filter tools using regex pattern (e.g., "excel|contact" to enable Excel and Contact tools)' +).option( + "--preset ", + "Use preset tool categories (comma-separated). Available: mail, calendar, files, personal, work, excel, contacts, tasks, onenote, search, users, all" +).option("--list-presets", "List all available presets and exit").option("--list-permissions", "List all required Graph API permissions and exit").option( + "--org-mode", + "Enable organization/work mode from start (includes Teams, SharePoint, etc.)" +).option("--work-mode", "Alias for --org-mode").option("--force-work-scopes", "Backwards compatibility alias for --org-mode (deprecated)").option("--toon", "(experimental) Enable TOON output format for 30-60% token reduction").option("--discovery", "Enable runtime tool discovery and loading (experimental feature)").option("--cloud ", "Microsoft cloud environment: global (default) or china (21Vianet)").option( + "--enable-dynamic-registration", + "Enable OAuth Dynamic Client Registration endpoint (kept for backwards compatibility, now enabled by default in HTTP mode)" +).option( + "--no-dynamic-registration", + "Disable OAuth Dynamic Client Registration endpoint in HTTP mode" +).option( + "--auth-browser", + "Use browser-based interactive OAuth flow instead of device code for stdio mode. Opens system browser with localhost callback for seamless sign-in." +).option( + "--public-url ", + "Public base URL (e.g. https://mcp.example.com) used in browser-facing OAuth redirects when running behind a reverse proxy. Server-to-server endpoints (token, register) stay on the request host." +).addOption( + // DEPRECATED: kept only so existing deployments that set --base-url or + // MS365_MCP_BASE_URL do not crash at startup. Use --public-url / + // MS365_MCP_PUBLIC_URL instead. Hidden from --help; undocumented. + new Option("--base-url ", "deprecated: use --public-url").hideHelp() +); +function parseArgs() { + program2.parse(); + const options = program2.opts(); + if (options.listPresets) { + const presets = listPresets(); + console.log(JSON.stringify({ presets }, null, 2)); + process.exit(0); + } + if (options.preset) { + const presetNames = options.preset.split(",").map((p) => p.trim()); + try { + options.enabledTools = getCombinedPresetPattern(presetNames); + const requiresOrgMode = presetNames.some((preset) => presetRequiresOrgMode(preset)); + if (requiresOrgMode && !options.orgMode) { + console.warn( + `Warning: Preset(s) [${presetNames.filter((p) => presetRequiresOrgMode(p)).join(", ")}] require --org-mode to function properly` + ); + } + } catch (error2) { + console.error(`Error: ${error2.message}`); + process.exit(1); + } + } + if (process.env.READ_ONLY === "true" || process.env.READ_ONLY === "1") { + options.readOnly = true; + } + if (process.env.ENABLED_TOOLS) { + options.enabledTools = process.env.ENABLED_TOOLS; + } + if (options.enabledTools) { + try { + new RegExp(options.enabledTools, "i"); + } catch { + console.error( + `Error: invalid --enabled-tools regex pattern: "${options.enabledTools}". Without a valid filter, all tools would be exposed.` + ); + process.exit(1); + } + } + if (process.env.MS365_MCP_ORG_MODE === "true" || process.env.MS365_MCP_ORG_MODE === "1") { + options.orgMode = true; + } + if (process.env.MS365_MCP_FORCE_WORK_SCOPES === "true" || process.env.MS365_MCP_FORCE_WORK_SCOPES === "1") { + options.forceWorkScopes = true; + } + if (options.workMode || options.forceWorkScopes) { + options.orgMode = true; + } + if (process.env.MS365_MCP_OUTPUT_FORMAT === "toon") { + options.toon = true; + } + if (options.http) { + if (options.dynamicRegistration === false) { + options.enableDynamicRegistration = false; + } else { + options.enableDynamicRegistration = true; + } + } + if (options.cloud) { + process.env.MS365_MCP_CLOUD_TYPE = options.cloud; + } + return options; +} + +// node_modules/@softeria/ms-365-mcp-server/dist/logger.js +var import_winston = __toESM(require_winston(), 1); +var import_path2 = __toESM(require("path"), 1); +var import_url2 = require("url"); +var import_fs2 = __toESM(require("fs"), 1); +var import_os = __toESM(require("os"), 1); +var __dirname2 = import_path2.default.dirname((0, import_url2.fileURLToPath)(__OPENSWARM_IMPORT_META_URL__)); +var logsDir = process.env.MS365_MCP_LOG_DIR || import_path2.default.join(import_os.default.homedir(), ".ms-365-mcp-server", "logs"); +if (!import_fs2.default.existsSync(logsDir)) { + import_fs2.default.mkdirSync(logsDir, { recursive: true, mode: 448 }); +} +var logger = import_winston.default.createLogger({ + level: process.env.LOG_LEVEL || "info", + format: import_winston.default.format.combine( + import_winston.default.format.timestamp({ + format: "YYYY-MM-DD HH:mm:ss" + }), + import_winston.default.format.printf(({ level, message, timestamp }) => { + return `${timestamp} ${level.toUpperCase()}: ${message}`; + }) + ), + transports: [ + new import_winston.default.transports.File({ + filename: import_path2.default.join(logsDir, "error.log"), + level: "error" + }), + new import_winston.default.transports.File({ + filename: import_path2.default.join(logsDir, "mcp-server.log") + }) + ] +}); +var enableConsoleLogging = () => { + logger.add( + new import_winston.default.transports.Console({ + format: import_winston.default.format.combine(import_winston.default.format.colorize(), import_winston.default.format.simple()), + silent: process.env.SILENT === "true" || process.env.SILENT === "1" + }) + ); +}; +var logger_default = logger; + +// node_modules/@azure/msal-node/dist/cache/serializer/Serializer.mjs +var Serializer = class { + /** + * serialize the JSON blob + * @param data - JSON blob cache + */ + static serializeJSONBlob(data) { + return JSON.stringify(data); + } + /** + * Serialize Accounts + * @param accCache - cache of accounts + */ + static serializeAccounts(accCache) { + const accounts = {}; + Object.keys(accCache).map(function(key) { + const accountEntity = accCache[key]; + accounts[key] = { + home_account_id: accountEntity.homeAccountId, + environment: accountEntity.environment, + realm: accountEntity.realm, + local_account_id: accountEntity.localAccountId, + username: accountEntity.username, + authority_type: accountEntity.authorityType, + name: accountEntity.name, + client_info: accountEntity.clientInfo, + last_modification_time: accountEntity.lastModificationTime, + last_modification_app: accountEntity.lastModificationApp, + tenantProfiles: accountEntity.tenantProfiles?.map((tenantProfile) => { + return JSON.stringify(tenantProfile); + }) + }; + }); + return accounts; + } + /** + * Serialize IdTokens + * @param idTCache - cache of ID tokens + */ + static serializeIdTokens(idTCache) { + const idTokens = {}; + Object.keys(idTCache).map(function(key) { + const idTEntity = idTCache[key]; + idTokens[key] = { + home_account_id: idTEntity.homeAccountId, + environment: idTEntity.environment, + credential_type: idTEntity.credentialType, + client_id: idTEntity.clientId, + secret: idTEntity.secret, + realm: idTEntity.realm + }; + }); + return idTokens; + } + /** + * Serializes AccessTokens + * @param atCache - cache of access tokens + */ + static serializeAccessTokens(atCache) { + const accessTokens = {}; + Object.keys(atCache).map(function(key) { + const atEntity = atCache[key]; + accessTokens[key] = { + home_account_id: atEntity.homeAccountId, + environment: atEntity.environment, + credential_type: atEntity.credentialType, + client_id: atEntity.clientId, + secret: atEntity.secret, + realm: atEntity.realm, + target: atEntity.target, + cached_at: atEntity.cachedAt, + expires_on: atEntity.expiresOn, + extended_expires_on: atEntity.extendedExpiresOn, + refresh_on: atEntity.refreshOn, + key_id: atEntity.keyId, + token_type: atEntity.tokenType, + requestedClaims: atEntity.requestedClaims, + requestedClaimsHash: atEntity.requestedClaimsHash, + userAssertionHash: atEntity.userAssertionHash + }; + }); + return accessTokens; + } + /** + * Serialize refreshTokens + * @param rtCache - cache of refresh tokens + */ + static serializeRefreshTokens(rtCache) { + const refreshTokens = {}; + Object.keys(rtCache).map(function(key) { + const rtEntity = rtCache[key]; + refreshTokens[key] = { + home_account_id: rtEntity.homeAccountId, + environment: rtEntity.environment, + credential_type: rtEntity.credentialType, + client_id: rtEntity.clientId, + secret: rtEntity.secret, + family_id: rtEntity.familyId, + target: rtEntity.target, + realm: rtEntity.realm + }; + }); + return refreshTokens; + } + /** + * Serialize amdtCache + * @param amdtCache - cache of app metadata + */ + static serializeAppMetadata(amdtCache) { + const appMetadata = {}; + Object.keys(amdtCache).map(function(key) { + const amdtEntity = amdtCache[key]; + appMetadata[key] = { + client_id: amdtEntity.clientId, + environment: amdtEntity.environment, + family_id: amdtEntity.familyId + }; + }); + return appMetadata; + } + /** + * Serialize the cache + * @param inMemCache - itemised cache read from the JSON + */ + static serializeAllCache(inMemCache) { + return { + Account: this.serializeAccounts(inMemCache.accounts), + IdToken: this.serializeIdTokens(inMemCache.idTokens), + AccessToken: this.serializeAccessTokens(inMemCache.accessTokens), + RefreshToken: this.serializeRefreshTokens(inMemCache.refreshTokens), + AppMetadata: this.serializeAppMetadata(inMemCache.appMetadata) + }; + } +}; + +// node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/utils/Constants.mjs +var Constants = { + LIBRARY_NAME: "MSAL.JS", + SKU: "msal.js.common", + // default authority + DEFAULT_AUTHORITY: "https://login.microsoftonline.com/common/", + DEFAULT_AUTHORITY_HOST: "login.microsoftonline.com", + DEFAULT_COMMON_TENANT: "common", + // ADFS String + ADFS: "adfs", + DSTS: "dstsv2", + // Default AAD Instance Discovery Endpoint + AAD_INSTANCE_DISCOVERY_ENDPT: "https://login.microsoftonline.com/common/discovery/instance?api-version=1.1&authorization_endpoint=", + // CIAM URL + CIAM_AUTH_URL: ".ciamlogin.com", + AAD_TENANT_DOMAIN_SUFFIX: ".onmicrosoft.com", + // Resource delimiter - used for certain cache entries + RESOURCE_DELIM: "|", + // Placeholder for non-existent account ids/objects + NO_ACCOUNT: "NO_ACCOUNT", + // Claims + CLAIMS: "claims", + // Consumer UTID + CONSUMER_UTID: "9188040d-6c67-4c5b-b112-36a304b66dad", + // Default scopes + OPENID_SCOPE: "openid", + PROFILE_SCOPE: "profile", + OFFLINE_ACCESS_SCOPE: "offline_access", + EMAIL_SCOPE: "email", + CODE_GRANT_TYPE: "authorization_code", + RT_GRANT_TYPE: "refresh_token", + S256_CODE_CHALLENGE_METHOD: "S256", + URL_FORM_CONTENT_TYPE: "application/x-www-form-urlencoded;charset=utf-8", + AUTHORIZATION_PENDING: "authorization_pending", + NOT_DEFINED: "not_defined", + EMPTY_STRING: "", + NOT_APPLICABLE: "N/A", + NOT_AVAILABLE: "Not Available", + FORWARD_SLASH: "/", + IMDS_ENDPOINT: "http://169.254.169.254/metadata/instance/compute/location", + IMDS_VERSION: "2020-06-01", + IMDS_TIMEOUT: 2e3, + AZURE_REGION_AUTO_DISCOVER_FLAG: "TryAutoDetect", + REGIONAL_AUTH_PUBLIC_CLOUD_SUFFIX: "login.microsoft.com", + KNOWN_PUBLIC_CLOUDS: [ + "login.microsoftonline.com", + "login.windows.net", + "login.microsoft.com", + "sts.windows.net" + ], + SHR_NONCE_VALIDITY: 240, + INVALID_INSTANCE: "invalid_instance" +}; +var HttpStatus = { + SUCCESS: 200, + SUCCESS_RANGE_START: 200, + SUCCESS_RANGE_END: 299, + REDIRECT: 302, + CLIENT_ERROR: 400, + CLIENT_ERROR_RANGE_START: 400, + BAD_REQUEST: 400, + UNAUTHORIZED: 401, + NOT_FOUND: 404, + REQUEST_TIMEOUT: 408, + GONE: 410, + TOO_MANY_REQUESTS: 429, + CLIENT_ERROR_RANGE_END: 499, + SERVER_ERROR: 500, + SERVER_ERROR_RANGE_START: 500, + SERVICE_UNAVAILABLE: 503, + GATEWAY_TIMEOUT: 504, + SERVER_ERROR_RANGE_END: 599, + MULTI_SIDED_ERROR: 600 +}; +var OIDC_DEFAULT_SCOPES = [ + Constants.OPENID_SCOPE, + Constants.PROFILE_SCOPE, + Constants.OFFLINE_ACCESS_SCOPE +]; +var OIDC_SCOPES = [...OIDC_DEFAULT_SCOPES, Constants.EMAIL_SCOPE]; +var HeaderNames = { + CONTENT_TYPE: "Content-Type", + CONTENT_LENGTH: "Content-Length", + RETRY_AFTER: "Retry-After", + CCS_HEADER: "X-AnchorMailbox", + WWWAuthenticate: "WWW-Authenticate", + AuthenticationInfo: "Authentication-Info", + X_MS_REQUEST_ID: "x-ms-request-id", + X_MS_HTTP_VERSION: "x-ms-httpver" +}; +var AADAuthorityConstants = { + COMMON: "common", + ORGANIZATIONS: "organizations", + CONSUMERS: "consumers" +}; +var ClaimsRequestKeys = { + ACCESS_TOKEN: "access_token", + XMS_CC: "xms_cc" +}; +var PromptValue = { + LOGIN: "login", + SELECT_ACCOUNT: "select_account", + CONSENT: "consent", + NONE: "none", + CREATE: "create", + NO_SESSION: "no_session" +}; +var CodeChallengeMethodValues = { + PLAIN: "plain", + S256: "S256" +}; +var OAuthResponseType = { + CODE: "code", + IDTOKEN_TOKEN: "id_token token", + IDTOKEN_TOKEN_REFRESHTOKEN: "id_token token refresh_token" +}; +var ResponseMode = { + QUERY: "query", + FRAGMENT: "fragment", + FORM_POST: "form_post" +}; +var GrantType = { + IMPLICIT_GRANT: "implicit", + AUTHORIZATION_CODE_GRANT: "authorization_code", + CLIENT_CREDENTIALS_GRANT: "client_credentials", + RESOURCE_OWNER_PASSWORD_GRANT: "password", + REFRESH_TOKEN_GRANT: "refresh_token", + DEVICE_CODE_GRANT: "device_code", + JWT_BEARER: "urn:ietf:params:oauth:grant-type:jwt-bearer" +}; +var CacheAccountType = { + MSSTS_ACCOUNT_TYPE: "MSSTS", + ADFS_ACCOUNT_TYPE: "ADFS", + MSAV1_ACCOUNT_TYPE: "MSA", + GENERIC_ACCOUNT_TYPE: "Generic" + // NTLM, Kerberos, FBA, Basic etc +}; +var Separators = { + CACHE_KEY_SEPARATOR: "-", + CLIENT_INFO_SEPARATOR: "." +}; +var CredentialType = { + ID_TOKEN: "IdToken", + ACCESS_TOKEN: "AccessToken", + ACCESS_TOKEN_WITH_AUTH_SCHEME: "AccessToken_With_AuthScheme", + REFRESH_TOKEN: "RefreshToken" +}; +var APP_METADATA = "appmetadata"; +var CLIENT_INFO = "client_info"; +var THE_FAMILY_ID = "1"; +var AUTHORITY_METADATA_CONSTANTS = { + CACHE_KEY: "authority-metadata", + REFRESH_TIME_SECONDS: 3600 * 24 + // 24 Hours +}; +var AuthorityMetadataSource = { + CONFIG: "config", + CACHE: "cache", + NETWORK: "network", + HARDCODED_VALUES: "hardcoded_values" +}; +var SERVER_TELEM_CONSTANTS = { + SCHEMA_VERSION: 5, + MAX_LAST_HEADER_BYTES: 330, + MAX_CACHED_ERRORS: 50, + CACHE_KEY: "server-telemetry", + CATEGORY_SEPARATOR: "|", + VALUE_SEPARATOR: ",", + OVERFLOW_TRUE: "1", + OVERFLOW_FALSE: "0", + UNKNOWN_ERROR: "unknown_error" +}; +var AuthenticationScheme = { + BEARER: "Bearer", + POP: "pop", + SSH: "ssh-cert" +}; +var ThrottlingConstants = { + // Default time to throttle RequestThumbprint in seconds + DEFAULT_THROTTLE_TIME_SECONDS: 60, + // Default maximum time to throttle in seconds, overrides what the server sends back + DEFAULT_MAX_THROTTLE_TIME_SECONDS: 3600, + // Prefix for storing throttling entries + THROTTLING_PREFIX: "throttling", + // Value assigned to the x-ms-lib-capability header to indicate to the server the library supports throttling + X_MS_LIB_CAPABILITY_VALUE: "retry-after, h429" +}; +var Errors = { + INVALID_GRANT_ERROR: "invalid_grant", + CLIENT_MISMATCH_ERROR: "client_mismatch" +}; +var PasswordGrantConstants = { + username: "username", + password: "password" +}; +var RegionDiscoverySources = { + FAILED_AUTO_DETECTION: "1", + INTERNAL_CACHE: "2", + ENVIRONMENT_VARIABLE: "3", + IMDS: "4" +}; +var RegionDiscoveryOutcomes = { + CONFIGURED_NO_AUTO_DETECTION: "2", + AUTO_DETECTION_REQUESTED_SUCCESSFUL: "4", + AUTO_DETECTION_REQUESTED_FAILED: "5" +}; +var CacheOutcome = { + // When a token is found in the cache or the cache is not supposed to be hit when making the request + NOT_APPLICABLE: "0", + // When the token request goes to the identity provider because force_refresh was set to true. Also occurs if claims were requested + FORCE_REFRESH_OR_CLAIMS: "1", + // When the token request goes to the identity provider because no cached access token exists + NO_CACHED_ACCESS_TOKEN: "2", + // When the token request goes to the identity provider because cached access token expired + CACHED_ACCESS_TOKEN_EXPIRED: "3", + // When the token request goes to the identity provider because refresh_in was used and the existing token needs to be refreshed + PROACTIVELY_REFRESHED: "4" +}; +var DEFAULT_TOKEN_RENEWAL_OFFSET_SEC = 300; +var EncodingTypes = { + BASE64: "base64", + HEX: "hex", + UTF8: "utf-8" +}; + +// node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/error/AuthErrorCodes.mjs +var AuthErrorCodes_exports = {}; +__export(AuthErrorCodes_exports, { + postRequestFailed: () => postRequestFailed, + unexpectedError: () => unexpectedError +}); +var unexpectedError = "unexpected_error"; +var postRequestFailed = "post_request_failed"; + +// node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/error/AuthError.mjs +var AuthErrorMessages = { + [unexpectedError]: "Unexpected error in authentication.", + [postRequestFailed]: "Post request failed from the network, could be a 4xx/5xx or a network unavailability. Please check the exact error code for details." +}; +var AuthErrorMessage = { + unexpectedError: { + code: unexpectedError, + desc: AuthErrorMessages[unexpectedError] + }, + postRequestFailed: { + code: postRequestFailed, + desc: AuthErrorMessages[postRequestFailed] + } +}; +var AuthError = class _AuthError extends Error { + constructor(errorCode, errorMessage, suberror) { + const errorString = errorMessage ? `${errorCode}: ${errorMessage}` : errorCode; + super(errorString); + Object.setPrototypeOf(this, _AuthError.prototype); + this.errorCode = errorCode || Constants.EMPTY_STRING; + this.errorMessage = errorMessage || Constants.EMPTY_STRING; + this.subError = suberror || Constants.EMPTY_STRING; + this.name = "AuthError"; + } + setCorrelationId(correlationId) { + this.correlationId = correlationId; + } +}; +function createAuthError(code, additionalMessage) { + return new AuthError(code, additionalMessage ? `${AuthErrorMessages[code]} ${additionalMessage}` : AuthErrorMessages[code]); +} + +// node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/error/ClientAuthErrorCodes.mjs +var ClientAuthErrorCodes_exports = {}; +__export(ClientAuthErrorCodes_exports, { + authTimeNotFound: () => authTimeNotFound, + authorizationCodeMissingFromServerResponse: () => authorizationCodeMissingFromServerResponse, + bindingKeyNotRemoved: () => bindingKeyNotRemoved, + cannotAppendScopeSet: () => cannotAppendScopeSet, + cannotRemoveEmptyScope: () => cannotRemoveEmptyScope, + clientInfoDecodingError: () => clientInfoDecodingError, + clientInfoEmptyError: () => clientInfoEmptyError, + deviceCodeExpired: () => deviceCodeExpired, + deviceCodePollingCancelled: () => deviceCodePollingCancelled, + deviceCodeUnknownError: () => deviceCodeUnknownError, + emptyInputScopeSet: () => emptyInputScopeSet, + endSessionEndpointNotSupported: () => endSessionEndpointNotSupported, + endpointResolutionError: () => endpointResolutionError, + hashNotDeserialized: () => hashNotDeserialized, + invalidAssertion: () => invalidAssertion, + invalidCacheEnvironment: () => invalidCacheEnvironment, + invalidCacheRecord: () => invalidCacheRecord, + invalidClientCredential: () => invalidClientCredential, + invalidState: () => invalidState, + keyIdMissing: () => keyIdMissing, + maxAgeTranspired: () => maxAgeTranspired, + methodNotImplemented: () => methodNotImplemented, + missingTenantIdError: () => missingTenantIdError, + multipleMatchingAccounts: () => multipleMatchingAccounts, + multipleMatchingAppMetadata: () => multipleMatchingAppMetadata, + multipleMatchingTokens: () => multipleMatchingTokens, + nestedAppAuthBridgeDisabled: () => nestedAppAuthBridgeDisabled, + networkError: () => networkError, + noAccountFound: () => noAccountFound, + noAccountInSilentRequest: () => noAccountInSilentRequest, + noCryptoObject: () => noCryptoObject, + noNetworkConnectivity: () => noNetworkConnectivity, + nonceMismatch: () => nonceMismatch, + nullOrEmptyToken: () => nullOrEmptyToken, + openIdConfigError: () => openIdConfigError, + platformBrokerError: () => platformBrokerError, + requestCannotBeMade: () => requestCannotBeMade, + stateMismatch: () => stateMismatch, + stateNotFound: () => stateNotFound, + tokenClaimsCnfRequiredForSignedJwt: () => tokenClaimsCnfRequiredForSignedJwt, + tokenParsingError: () => tokenParsingError, + tokenRefreshRequired: () => tokenRefreshRequired, + unexpectedCredentialType: () => unexpectedCredentialType, + userCanceled: () => userCanceled, + userTimeoutReached: () => userTimeoutReached +}); +var clientInfoDecodingError = "client_info_decoding_error"; +var clientInfoEmptyError = "client_info_empty_error"; +var tokenParsingError = "token_parsing_error"; +var nullOrEmptyToken = "null_or_empty_token"; +var endpointResolutionError = "endpoints_resolution_error"; +var networkError = "network_error"; +var openIdConfigError = "openid_config_error"; +var hashNotDeserialized = "hash_not_deserialized"; +var invalidState = "invalid_state"; +var stateMismatch = "state_mismatch"; +var stateNotFound = "state_not_found"; +var nonceMismatch = "nonce_mismatch"; +var authTimeNotFound = "auth_time_not_found"; +var maxAgeTranspired = "max_age_transpired"; +var multipleMatchingTokens = "multiple_matching_tokens"; +var multipleMatchingAccounts = "multiple_matching_accounts"; +var multipleMatchingAppMetadata = "multiple_matching_appMetadata"; +var requestCannotBeMade = "request_cannot_be_made"; +var cannotRemoveEmptyScope = "cannot_remove_empty_scope"; +var cannotAppendScopeSet = "cannot_append_scopeset"; +var emptyInputScopeSet = "empty_input_scopeset"; +var deviceCodePollingCancelled = "device_code_polling_cancelled"; +var deviceCodeExpired = "device_code_expired"; +var deviceCodeUnknownError = "device_code_unknown_error"; +var noAccountInSilentRequest = "no_account_in_silent_request"; +var invalidCacheRecord = "invalid_cache_record"; +var invalidCacheEnvironment = "invalid_cache_environment"; +var noAccountFound = "no_account_found"; +var noCryptoObject = "no_crypto_object"; +var unexpectedCredentialType = "unexpected_credential_type"; +var invalidAssertion = "invalid_assertion"; +var invalidClientCredential = "invalid_client_credential"; +var tokenRefreshRequired = "token_refresh_required"; +var userTimeoutReached = "user_timeout_reached"; +var tokenClaimsCnfRequiredForSignedJwt = "token_claims_cnf_required_for_signedjwt"; +var authorizationCodeMissingFromServerResponse = "authorization_code_missing_from_server_response"; +var bindingKeyNotRemoved = "binding_key_not_removed"; +var endSessionEndpointNotSupported = "end_session_endpoint_not_supported"; +var keyIdMissing = "key_id_missing"; +var noNetworkConnectivity = "no_network_connectivity"; +var userCanceled = "user_canceled"; +var missingTenantIdError = "missing_tenant_id_error"; +var methodNotImplemented = "method_not_implemented"; +var nestedAppAuthBridgeDisabled = "nested_app_auth_bridge_disabled"; +var platformBrokerError = "platform_broker_error"; + +// node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/error/ClientAuthError.mjs +var ClientAuthErrorMessages = { + [clientInfoDecodingError]: "The client info could not be parsed/decoded correctly", + [clientInfoEmptyError]: "The client info was empty", + [tokenParsingError]: "Token cannot be parsed", + [nullOrEmptyToken]: "The token is null or empty", + [endpointResolutionError]: "Endpoints cannot be resolved", + [networkError]: "Network request failed", + [openIdConfigError]: "Could not retrieve endpoints. Check your authority and verify the .well-known/openid-configuration endpoint returns the required endpoints.", + [hashNotDeserialized]: "The hash parameters could not be deserialized", + [invalidState]: "State was not the expected format", + [stateMismatch]: "State mismatch error", + [stateNotFound]: "State not found", + [nonceMismatch]: "Nonce mismatch error", + [authTimeNotFound]: "Max Age was requested and the ID token is missing the auth_time variable. auth_time is an optional claim and is not enabled by default - it must be enabled. See https://aka.ms/msaljs/optional-claims for more information.", + [maxAgeTranspired]: "Max Age is set to 0, or too much time has elapsed since the last end-user authentication.", + [multipleMatchingTokens]: "The cache contains multiple tokens satisfying the requirements. Call AcquireToken again providing more requirements such as authority or account.", + [multipleMatchingAccounts]: "The cache contains multiple accounts satisfying the given parameters. Please pass more info to obtain the correct account", + [multipleMatchingAppMetadata]: "The cache contains multiple appMetadata satisfying the given parameters. Please pass more info to obtain the correct appMetadata", + [requestCannotBeMade]: "Token request cannot be made without authorization code or refresh token.", + [cannotRemoveEmptyScope]: "Cannot remove null or empty scope from ScopeSet", + [cannotAppendScopeSet]: "Cannot append ScopeSet", + [emptyInputScopeSet]: "Empty input ScopeSet cannot be processed", + [deviceCodePollingCancelled]: "Caller has cancelled token endpoint polling during device code flow by setting DeviceCodeRequest.cancel = true.", + [deviceCodeExpired]: "Device code is expired.", + [deviceCodeUnknownError]: "Device code stopped polling for unknown reasons.", + [noAccountInSilentRequest]: "Please pass an account object, silent flow is not supported without account information", + [invalidCacheRecord]: "Cache record object was null or undefined.", + [invalidCacheEnvironment]: "Invalid environment when attempting to create cache entry", + [noAccountFound]: "No account found in cache for given key.", + [noCryptoObject]: "No crypto object detected.", + [unexpectedCredentialType]: "Unexpected credential type.", + [invalidAssertion]: "Client assertion must meet requirements described in https://tools.ietf.org/html/rfc7515", + [invalidClientCredential]: "Client credential (secret, certificate, or assertion) must not be empty when creating a confidential client. An application should at most have one credential", + [tokenRefreshRequired]: "Cannot return token from cache because it must be refreshed. This may be due to one of the following reasons: forceRefresh parameter is set to true, claims have been requested, there is no cached access token or it is expired.", + [userTimeoutReached]: "User defined timeout for device code polling reached", + [tokenClaimsCnfRequiredForSignedJwt]: "Cannot generate a POP jwt if the token_claims are not populated", + [authorizationCodeMissingFromServerResponse]: "Server response does not contain an authorization code to proceed", + [bindingKeyNotRemoved]: "Could not remove the credential's binding key from storage.", + [endSessionEndpointNotSupported]: "The provided authority does not support logout", + [keyIdMissing]: "A keyId value is missing from the requested bound token's cache record and is required to match the token to it's stored binding key.", + [noNetworkConnectivity]: "No network connectivity. Check your internet connection.", + [userCanceled]: "User cancelled the flow.", + [missingTenantIdError]: "A tenant id - not common, organizations, or consumers - must be specified when using the client_credentials flow.", + [methodNotImplemented]: "This method has not been implemented", + [nestedAppAuthBridgeDisabled]: "The nested app auth bridge is disabled", + [platformBrokerError]: "An error occurred in the native broker. See the platformBrokerError property for details." +}; +var ClientAuthErrorMessage = { + clientInfoDecodingError: { + code: clientInfoDecodingError, + desc: ClientAuthErrorMessages[clientInfoDecodingError] + }, + clientInfoEmptyError: { + code: clientInfoEmptyError, + desc: ClientAuthErrorMessages[clientInfoEmptyError] + }, + tokenParsingError: { + code: tokenParsingError, + desc: ClientAuthErrorMessages[tokenParsingError] + }, + nullOrEmptyToken: { + code: nullOrEmptyToken, + desc: ClientAuthErrorMessages[nullOrEmptyToken] + }, + endpointResolutionError: { + code: endpointResolutionError, + desc: ClientAuthErrorMessages[endpointResolutionError] + }, + networkError: { + code: networkError, + desc: ClientAuthErrorMessages[networkError] + }, + unableToGetOpenidConfigError: { + code: openIdConfigError, + desc: ClientAuthErrorMessages[openIdConfigError] + }, + hashNotDeserialized: { + code: hashNotDeserialized, + desc: ClientAuthErrorMessages[hashNotDeserialized] + }, + invalidStateError: { + code: invalidState, + desc: ClientAuthErrorMessages[invalidState] + }, + stateMismatchError: { + code: stateMismatch, + desc: ClientAuthErrorMessages[stateMismatch] + }, + stateNotFoundError: { + code: stateNotFound, + desc: ClientAuthErrorMessages[stateNotFound] + }, + nonceMismatchError: { + code: nonceMismatch, + desc: ClientAuthErrorMessages[nonceMismatch] + }, + authTimeNotFoundError: { + code: authTimeNotFound, + desc: ClientAuthErrorMessages[authTimeNotFound] + }, + maxAgeTranspired: { + code: maxAgeTranspired, + desc: ClientAuthErrorMessages[maxAgeTranspired] + }, + multipleMatchingTokens: { + code: multipleMatchingTokens, + desc: ClientAuthErrorMessages[multipleMatchingTokens] + }, + multipleMatchingAccounts: { + code: multipleMatchingAccounts, + desc: ClientAuthErrorMessages[multipleMatchingAccounts] + }, + multipleMatchingAppMetadata: { + code: multipleMatchingAppMetadata, + desc: ClientAuthErrorMessages[multipleMatchingAppMetadata] + }, + tokenRequestCannotBeMade: { + code: requestCannotBeMade, + desc: ClientAuthErrorMessages[requestCannotBeMade] + }, + removeEmptyScopeError: { + code: cannotRemoveEmptyScope, + desc: ClientAuthErrorMessages[cannotRemoveEmptyScope] + }, + appendScopeSetError: { + code: cannotAppendScopeSet, + desc: ClientAuthErrorMessages[cannotAppendScopeSet] + }, + emptyInputScopeSetError: { + code: emptyInputScopeSet, + desc: ClientAuthErrorMessages[emptyInputScopeSet] + }, + DeviceCodePollingCancelled: { + code: deviceCodePollingCancelled, + desc: ClientAuthErrorMessages[deviceCodePollingCancelled] + }, + DeviceCodeExpired: { + code: deviceCodeExpired, + desc: ClientAuthErrorMessages[deviceCodeExpired] + }, + DeviceCodeUnknownError: { + code: deviceCodeUnknownError, + desc: ClientAuthErrorMessages[deviceCodeUnknownError] + }, + NoAccountInSilentRequest: { + code: noAccountInSilentRequest, + desc: ClientAuthErrorMessages[noAccountInSilentRequest] + }, + invalidCacheRecord: { + code: invalidCacheRecord, + desc: ClientAuthErrorMessages[invalidCacheRecord] + }, + invalidCacheEnvironment: { + code: invalidCacheEnvironment, + desc: ClientAuthErrorMessages[invalidCacheEnvironment] + }, + noAccountFound: { + code: noAccountFound, + desc: ClientAuthErrorMessages[noAccountFound] + }, + noCryptoObj: { + code: noCryptoObject, + desc: ClientAuthErrorMessages[noCryptoObject] + }, + unexpectedCredentialType: { + code: unexpectedCredentialType, + desc: ClientAuthErrorMessages[unexpectedCredentialType] + }, + invalidAssertion: { + code: invalidAssertion, + desc: ClientAuthErrorMessages[invalidAssertion] + }, + invalidClientCredential: { + code: invalidClientCredential, + desc: ClientAuthErrorMessages[invalidClientCredential] + }, + tokenRefreshRequired: { + code: tokenRefreshRequired, + desc: ClientAuthErrorMessages[tokenRefreshRequired] + }, + userTimeoutReached: { + code: userTimeoutReached, + desc: ClientAuthErrorMessages[userTimeoutReached] + }, + tokenClaimsRequired: { + code: tokenClaimsCnfRequiredForSignedJwt, + desc: ClientAuthErrorMessages[tokenClaimsCnfRequiredForSignedJwt] + }, + noAuthorizationCodeFromServer: { + code: authorizationCodeMissingFromServerResponse, + desc: ClientAuthErrorMessages[authorizationCodeMissingFromServerResponse] + }, + bindingKeyNotRemovedError: { + code: bindingKeyNotRemoved, + desc: ClientAuthErrorMessages[bindingKeyNotRemoved] + }, + logoutNotSupported: { + code: endSessionEndpointNotSupported, + desc: ClientAuthErrorMessages[endSessionEndpointNotSupported] + }, + keyIdMissing: { + code: keyIdMissing, + desc: ClientAuthErrorMessages[keyIdMissing] + }, + noNetworkConnectivity: { + code: noNetworkConnectivity, + desc: ClientAuthErrorMessages[noNetworkConnectivity] + }, + userCanceledError: { + code: userCanceled, + desc: ClientAuthErrorMessages[userCanceled] + }, + missingTenantIdError: { + code: missingTenantIdError, + desc: ClientAuthErrorMessages[missingTenantIdError] + }, + nestedAppAuthBridgeDisabled: { + code: nestedAppAuthBridgeDisabled, + desc: ClientAuthErrorMessages[nestedAppAuthBridgeDisabled] + }, + platformBrokerError: { + code: platformBrokerError, + desc: ClientAuthErrorMessages[platformBrokerError] + } +}; +var ClientAuthError = class _ClientAuthError extends AuthError { + constructor(errorCode, additionalMessage) { + super(errorCode, additionalMessage ? `${ClientAuthErrorMessages[errorCode]}: ${additionalMessage}` : ClientAuthErrorMessages[errorCode]); + this.name = "ClientAuthError"; + Object.setPrototypeOf(this, _ClientAuthError.prototype); + } +}; +function createClientAuthError(errorCode, additionalMessage) { + return new ClientAuthError(errorCode, additionalMessage); +} + +// node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/crypto/ICrypto.mjs +var DEFAULT_CRYPTO_IMPLEMENTATION = { + createNewGuid: () => { + throw createClientAuthError(methodNotImplemented); + }, + base64Decode: () => { + throw createClientAuthError(methodNotImplemented); + }, + base64Encode: () => { + throw createClientAuthError(methodNotImplemented); + }, + base64UrlEncode: () => { + throw createClientAuthError(methodNotImplemented); + }, + encodeKid: () => { + throw createClientAuthError(methodNotImplemented); + }, + async getPublicKeyThumbprint() { + throw createClientAuthError(methodNotImplemented); + }, + async removeTokenBindingKey() { + throw createClientAuthError(methodNotImplemented); + }, + async clearKeystore() { + throw createClientAuthError(methodNotImplemented); + }, + async signJwt() { + throw createClientAuthError(methodNotImplemented); + }, + async hashString() { + throw createClientAuthError(methodNotImplemented); + } +}; + +// node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/logger/Logger.mjs +var LogLevel; +(function(LogLevel3) { + LogLevel3[LogLevel3["Error"] = 0] = "Error"; + LogLevel3[LogLevel3["Warning"] = 1] = "Warning"; + LogLevel3[LogLevel3["Info"] = 2] = "Info"; + LogLevel3[LogLevel3["Verbose"] = 3] = "Verbose"; + LogLevel3[LogLevel3["Trace"] = 4] = "Trace"; +})(LogLevel || (LogLevel = {})); +var Logger = class _Logger { + constructor(loggerOptions, packageName, packageVersion) { + this.level = LogLevel.Info; + const defaultLoggerCallback2 = () => { + return; + }; + const setLoggerOptions = loggerOptions || _Logger.createDefaultLoggerOptions(); + this.localCallback = setLoggerOptions.loggerCallback || defaultLoggerCallback2; + this.piiLoggingEnabled = setLoggerOptions.piiLoggingEnabled || false; + this.level = typeof setLoggerOptions.logLevel === "number" ? setLoggerOptions.logLevel : LogLevel.Info; + this.correlationId = setLoggerOptions.correlationId || Constants.EMPTY_STRING; + this.packageName = packageName || Constants.EMPTY_STRING; + this.packageVersion = packageVersion || Constants.EMPTY_STRING; + } + static createDefaultLoggerOptions() { + return { + loggerCallback: () => { + }, + piiLoggingEnabled: false, + logLevel: LogLevel.Info + }; + } + /** + * Create new Logger with existing configurations. + */ + clone(packageName, packageVersion, correlationId) { + return new _Logger({ + loggerCallback: this.localCallback, + piiLoggingEnabled: this.piiLoggingEnabled, + logLevel: this.level, + correlationId: correlationId || this.correlationId + }, packageName, packageVersion); + } + /** + * Log message with required options. + */ + logMessage(logMessage, options) { + if (options.logLevel > this.level || !this.piiLoggingEnabled && options.containsPii) { + return; + } + const timestamp = (/* @__PURE__ */ new Date()).toUTCString(); + const logHeader = `[${timestamp}] : [${options.correlationId || this.correlationId || ""}]`; + const log2 = `${logHeader} : ${this.packageName}@${this.packageVersion} : ${LogLevel[options.logLevel]} - ${logMessage}`; + this.executeCallback(options.logLevel, log2, options.containsPii || false); + } + /** + * Execute callback with message. + */ + executeCallback(level, message, containsPii) { + if (this.localCallback) { + this.localCallback(level, message, containsPii); + } + } + /** + * Logs error messages. + */ + error(message, correlationId) { + this.logMessage(message, { + logLevel: LogLevel.Error, + containsPii: false, + correlationId: correlationId || Constants.EMPTY_STRING + }); + } + /** + * Logs error messages with PII. + */ + errorPii(message, correlationId) { + this.logMessage(message, { + logLevel: LogLevel.Error, + containsPii: true, + correlationId: correlationId || Constants.EMPTY_STRING + }); + } + /** + * Logs warning messages. + */ + warning(message, correlationId) { + this.logMessage(message, { + logLevel: LogLevel.Warning, + containsPii: false, + correlationId: correlationId || Constants.EMPTY_STRING + }); + } + /** + * Logs warning messages with PII. + */ + warningPii(message, correlationId) { + this.logMessage(message, { + logLevel: LogLevel.Warning, + containsPii: true, + correlationId: correlationId || Constants.EMPTY_STRING + }); + } + /** + * Logs info messages. + */ + info(message, correlationId) { + this.logMessage(message, { + logLevel: LogLevel.Info, + containsPii: false, + correlationId: correlationId || Constants.EMPTY_STRING + }); + } + /** + * Logs info messages with PII. + */ + infoPii(message, correlationId) { + this.logMessage(message, { + logLevel: LogLevel.Info, + containsPii: true, + correlationId: correlationId || Constants.EMPTY_STRING + }); + } + /** + * Logs verbose messages. + */ + verbose(message, correlationId) { + this.logMessage(message, { + logLevel: LogLevel.Verbose, + containsPii: false, + correlationId: correlationId || Constants.EMPTY_STRING + }); + } + /** + * Logs verbose messages with PII. + */ + verbosePii(message, correlationId) { + this.logMessage(message, { + logLevel: LogLevel.Verbose, + containsPii: true, + correlationId: correlationId || Constants.EMPTY_STRING + }); + } + /** + * Logs trace messages. + */ + trace(message, correlationId) { + this.logMessage(message, { + logLevel: LogLevel.Trace, + containsPii: false, + correlationId: correlationId || Constants.EMPTY_STRING + }); + } + /** + * Logs trace messages with PII. + */ + tracePii(message, correlationId) { + this.logMessage(message, { + logLevel: LogLevel.Trace, + containsPii: true, + correlationId: correlationId || Constants.EMPTY_STRING + }); + } + /** + * Returns whether PII Logging is enabled or not. + */ + isPiiLoggingEnabled() { + return this.piiLoggingEnabled || false; + } +}; + +// node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/packageMetadata.mjs +var name = "@azure/msal-common"; +var version2 = "15.17.0"; + +// node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/authority/AuthorityOptions.mjs +var AzureCloudInstance = { + // AzureCloudInstance is not specified. + None: "none", + // Microsoft Azure public cloud + AzurePublic: "https://login.microsoftonline.com", + // Microsoft PPE + AzurePpe: "https://login.windows-ppe.net", + // Microsoft Chinese national/regional cloud + AzureChina: "https://login.chinacloudapi.cn", + // Microsoft German national/regional cloud ("Black Forest") + AzureGermany: "https://login.microsoftonline.de", + // US Government cloud + AzureUsGovernment: "https://login.microsoftonline.us" +}; + +// node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/error/ClientConfigurationErrorCodes.mjs +var redirectUriEmpty = "redirect_uri_empty"; +var claimsRequestParsingError = "claims_request_parsing_error"; +var authorityUriInsecure = "authority_uri_insecure"; +var urlParseError = "url_parse_error"; +var urlEmptyError = "empty_url_error"; +var emptyInputScopesError = "empty_input_scopes_error"; +var invalidClaims = "invalid_claims"; +var tokenRequestEmpty = "token_request_empty"; +var logoutRequestEmpty = "logout_request_empty"; +var invalidCodeChallengeMethod = "invalid_code_challenge_method"; +var pkceParamsMissing = "pkce_params_missing"; +var invalidCloudDiscoveryMetadata = "invalid_cloud_discovery_metadata"; +var invalidAuthorityMetadata = "invalid_authority_metadata"; +var untrustedAuthority = "untrusted_authority"; +var missingSshJwk = "missing_ssh_jwk"; +var missingSshKid = "missing_ssh_kid"; +var missingNonceAuthenticationHeader = "missing_nonce_authentication_header"; +var invalidAuthenticationHeader = "invalid_authentication_header"; +var cannotSetOIDCOptions = "cannot_set_OIDCOptions"; +var cannotAllowPlatformBroker = "cannot_allow_platform_broker"; +var authorityMismatch = "authority_mismatch"; +var invalidRequestMethodForEAR = "invalid_request_method_for_EAR"; +var invalidAuthorizePostBodyParameters = "invalid_authorize_post_body_parameters"; +var invalidPlatformBrokerConfiguration = "invalid_platform_broker_configuration"; + +// node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/error/ClientConfigurationError.mjs +var ClientConfigurationErrorMessages = { + [redirectUriEmpty]: "A redirect URI is required for all calls, and none has been set.", + [claimsRequestParsingError]: "Could not parse the given claims request object.", + [authorityUriInsecure]: "Authority URIs must use https. Please see here for valid authority configuration options: https://docs.microsoft.com/en-us/azure/active-directory/develop/msal-js-initializing-client-applications#configuration-options", + [urlParseError]: "URL could not be parsed into appropriate segments.", + [urlEmptyError]: "URL was empty or null.", + [emptyInputScopesError]: "Scopes cannot be passed as null, undefined or empty array because they are required to obtain an access token.", + [invalidClaims]: "Given claims parameter must be a stringified JSON object.", + [tokenRequestEmpty]: "Token request was empty and not found in cache.", + [logoutRequestEmpty]: "The logout request was null or undefined.", + [invalidCodeChallengeMethod]: 'code_challenge_method passed is invalid. Valid values are "plain" and "S256".', + [pkceParamsMissing]: "Both params: code_challenge and code_challenge_method are to be passed if to be sent in the request", + [invalidCloudDiscoveryMetadata]: "Invalid cloudDiscoveryMetadata provided. Must be a stringified JSON object containing tenant_discovery_endpoint and metadata fields", + [invalidAuthorityMetadata]: "Invalid authorityMetadata provided. Must by a stringified JSON object containing authorization_endpoint, token_endpoint, issuer fields.", + [untrustedAuthority]: "The provided authority is not a trusted authority. Please include this authority in the knownAuthorities config parameter.", + [missingSshJwk]: "Missing sshJwk in SSH certificate request. A stringified JSON Web Key is required when using the SSH authentication scheme.", + [missingSshKid]: "Missing sshKid in SSH certificate request. A string that uniquely identifies the public SSH key is required when using the SSH authentication scheme.", + [missingNonceAuthenticationHeader]: "Unable to find an authentication header containing server nonce. Either the Authentication-Info or WWW-Authenticate headers must be present in order to obtain a server nonce.", + [invalidAuthenticationHeader]: "Invalid authentication header provided", + [cannotSetOIDCOptions]: "Cannot set OIDCOptions parameter. Please change the protocol mode to OIDC or use a non-Microsoft authority.", + [cannotAllowPlatformBroker]: "Cannot set allowPlatformBroker parameter to true when not in AAD protocol mode.", + [authorityMismatch]: "Authority mismatch error. Authority provided in login request or PublicClientApplication config does not match the environment of the provided account. Please use a matching account or make an interactive request to login to this authority.", + [invalidAuthorizePostBodyParameters]: "Invalid authorize post body parameters provided. If you are using authorizePostBodyParameters, the request method must be POST. Please check the request method and parameters.", + [invalidRequestMethodForEAR]: "Invalid request method for EAR protocol mode. The request method cannot be GET when using EAR protocol mode. Please change the request method to POST.", + [invalidPlatformBrokerConfiguration]: "Invalid platform broker configuration. `allowPlatformBrokerWithDOM` can only be enabled when `allowPlatformBroker` is enabled." +}; +var ClientConfigurationErrorMessage = { + redirectUriNotSet: { + code: redirectUriEmpty, + desc: ClientConfigurationErrorMessages[redirectUriEmpty] + }, + claimsRequestParsingError: { + code: claimsRequestParsingError, + desc: ClientConfigurationErrorMessages[claimsRequestParsingError] + }, + authorityUriInsecure: { + code: authorityUriInsecure, + desc: ClientConfigurationErrorMessages[authorityUriInsecure] + }, + urlParseError: { + code: urlParseError, + desc: ClientConfigurationErrorMessages[urlParseError] + }, + urlEmptyError: { + code: urlEmptyError, + desc: ClientConfigurationErrorMessages[urlEmptyError] + }, + emptyScopesError: { + code: emptyInputScopesError, + desc: ClientConfigurationErrorMessages[emptyInputScopesError] + }, + invalidClaimsRequest: { + code: invalidClaims, + desc: ClientConfigurationErrorMessages[invalidClaims] + }, + tokenRequestEmptyError: { + code: tokenRequestEmpty, + desc: ClientConfigurationErrorMessages[tokenRequestEmpty] + }, + logoutRequestEmptyError: { + code: logoutRequestEmpty, + desc: ClientConfigurationErrorMessages[logoutRequestEmpty] + }, + invalidCodeChallengeMethod: { + code: invalidCodeChallengeMethod, + desc: ClientConfigurationErrorMessages[invalidCodeChallengeMethod] + }, + invalidCodeChallengeParams: { + code: pkceParamsMissing, + desc: ClientConfigurationErrorMessages[pkceParamsMissing] + }, + invalidCloudDiscoveryMetadata: { + code: invalidCloudDiscoveryMetadata, + desc: ClientConfigurationErrorMessages[invalidCloudDiscoveryMetadata] + }, + invalidAuthorityMetadata: { + code: invalidAuthorityMetadata, + desc: ClientConfigurationErrorMessages[invalidAuthorityMetadata] + }, + untrustedAuthority: { + code: untrustedAuthority, + desc: ClientConfigurationErrorMessages[untrustedAuthority] + }, + missingSshJwk: { + code: missingSshJwk, + desc: ClientConfigurationErrorMessages[missingSshJwk] + }, + missingSshKid: { + code: missingSshKid, + desc: ClientConfigurationErrorMessages[missingSshKid] + }, + missingNonceAuthenticationHeader: { + code: missingNonceAuthenticationHeader, + desc: ClientConfigurationErrorMessages[missingNonceAuthenticationHeader] + }, + invalidAuthenticationHeader: { + code: invalidAuthenticationHeader, + desc: ClientConfigurationErrorMessages[invalidAuthenticationHeader] + }, + cannotSetOIDCOptions: { + code: cannotSetOIDCOptions, + desc: ClientConfigurationErrorMessages[cannotSetOIDCOptions] + }, + cannotAllowPlatformBroker: { + code: cannotAllowPlatformBroker, + desc: ClientConfigurationErrorMessages[cannotAllowPlatformBroker] + }, + authorityMismatch: { + code: authorityMismatch, + desc: ClientConfigurationErrorMessages[authorityMismatch] + }, + invalidAuthorizePostBodyParameters: { + code: invalidAuthorizePostBodyParameters, + desc: ClientConfigurationErrorMessages[invalidAuthorizePostBodyParameters] + }, + invalidRequestMethodForEAR: { + code: invalidRequestMethodForEAR, + desc: ClientConfigurationErrorMessages[invalidRequestMethodForEAR] + }, + invalidPlatformBrokerConfiguration: { + code: invalidPlatformBrokerConfiguration, + desc: ClientConfigurationErrorMessages[invalidPlatformBrokerConfiguration] + } +}; +var ClientConfigurationError = class _ClientConfigurationError extends AuthError { + constructor(errorCode) { + super(errorCode, ClientConfigurationErrorMessages[errorCode]); + this.name = "ClientConfigurationError"; + Object.setPrototypeOf(this, _ClientConfigurationError.prototype); + } +}; +function createClientConfigurationError(errorCode) { + return new ClientConfigurationError(errorCode); +} + +// node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/utils/StringUtils.mjs +var StringUtils = class { + /** + * Check if stringified object is empty + * @param strObj + */ + static isEmptyObj(strObj) { + if (strObj) { + try { + const obj = JSON.parse(strObj); + return Object.keys(obj).length === 0; + } catch (e) { + } + } + return true; + } + static startsWith(str, search) { + return str.indexOf(search) === 0; + } + static endsWith(str, search) { + return str.length >= search.length && str.lastIndexOf(search) === str.length - search.length; + } + /** + * Parses string into an object. + * + * @param query + */ + static queryStringToObject(query) { + const obj = {}; + const params = query.split("&"); + const decode = (s) => decodeURIComponent(s.replace(/\+/g, " ")); + params.forEach((pair) => { + if (pair.trim()) { + const [key, value] = pair.split(/=(.+)/g, 2); + if (key && value) { + obj[decode(key)] = decode(value); + } + } + }); + return obj; + } + /** + * Trims entries in an array. + * + * @param arr + */ + static trimArrayEntries(arr) { + return arr.map((entry) => entry.trim()); + } + /** + * Removes empty strings from array + * @param arr + */ + static removeEmptyStringsFromArray(arr) { + return arr.filter((entry) => { + return !!entry; + }); + } + /** + * Attempts to parse a string into JSON + * @param str + */ + static jsonParseHelper(str) { + try { + return JSON.parse(str); + } catch (e) { + return null; + } + } + /** + * Tests if a given string matches a given pattern, with support for wildcards and queries. + * @param pattern Wildcard pattern to string match. Supports "*" for wildcards and "?" for queries + * @param input String to match against + */ + static matchPattern(pattern, input) { + const regex = new RegExp(pattern.replace(/\\/g, "\\\\").replace(/\*/g, "[^ ]*").replace(/\?/g, "\\?")); + return regex.test(input); + } + /** + * Tests if a given string matches a given pattern using stricter, anchored matching semantics. + * + * Differences from `matchPattern` (legacy): + * - All regex metacharacters (including `.`) in the pattern are treated as literals, + * so `example.com` matches only `example.com` and not `exampleXcom`. + * - The generated regex is anchored with `^` and `$` so partial/substring matches + * are not allowed. + * - `*` is the only supported wildcard. Its behaviour depends on the URL component: + * - `host` component: `*` matches any sequence of characters that does NOT include + * a dot (`.`), keeping wildcards within a single DNS label boundary. + * - All other components: `*` matches any sequence of characters (including `/`). + * + * @param pattern - The `protectedResourceMap` key pattern to match against. `*` is a + * multi-character wildcard; all other characters are treated as literals. + * @param input - The URL component value (e.g. host, pathname) extracted from the + * outgoing request URL to test against the pattern. + * @param options - Optional. Provide `component` to enable component-aware wildcard + * semantics. Accepted values: `"host"`, `"path"`, `"protocol"`, `"search"`, + * `"hash"`. Defaults to path-style (permissive) matching when omitted. + * @returns `true` if the full input string matches the pattern; `false` otherwise. + */ + static matchPatternStrict(pattern, input, options) { + const component = options?.component; + let regexBody = pattern.replace(/[.+^${}()|[\]\\*?]/g, "\\$&"); + if (component === "host") { + regexBody = regexBody.replace(/\\\*/g, "[^.]*"); + } else { + regexBody = regexBody.replace(/\\\*/g, ".*"); + } + const regex = new RegExp(`^${regexBody}$`); + return regex.test(input); + } +}; + +// node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/request/ScopeSet.mjs +var ScopeSet = class _ScopeSet { + constructor(inputScopes) { + const scopeArr = inputScopes ? StringUtils.trimArrayEntries([...inputScopes]) : []; + const filteredInput = scopeArr ? StringUtils.removeEmptyStringsFromArray(scopeArr) : []; + if (!filteredInput || !filteredInput.length) { + throw createClientConfigurationError(emptyInputScopesError); + } + this.scopes = /* @__PURE__ */ new Set(); + filteredInput.forEach((scope) => this.scopes.add(scope)); + } + /** + * Factory method to create ScopeSet from space-delimited string + * @param inputScopeString + * @param appClientId + * @param scopesRequired + */ + static fromString(inputScopeString) { + const scopeString = inputScopeString || Constants.EMPTY_STRING; + const inputScopes = scopeString.split(" "); + return new _ScopeSet(inputScopes); + } + /** + * Creates the set of scopes to search for in cache lookups + * @param inputScopeString + * @returns + */ + static createSearchScopes(inputScopeString) { + const scopesToUse = inputScopeString && inputScopeString.length > 0 ? inputScopeString : [...OIDC_DEFAULT_SCOPES]; + const scopeSet = new _ScopeSet(scopesToUse); + if (!scopeSet.containsOnlyOIDCScopes()) { + scopeSet.removeOIDCScopes(); + } else { + scopeSet.removeScope(Constants.OFFLINE_ACCESS_SCOPE); + } + return scopeSet; + } + /** + * Check if a given scope is present in this set of scopes. + * @param scope + */ + containsScope(scope) { + const lowerCaseScopes = this.printScopesLowerCase().split(" "); + const lowerCaseScopesSet = new _ScopeSet(lowerCaseScopes); + return scope ? lowerCaseScopesSet.scopes.has(scope.toLowerCase()) : false; + } + /** + * Check if a set of scopes is present in this set of scopes. + * @param scopeSet + */ + containsScopeSet(scopeSet) { + if (!scopeSet || scopeSet.scopes.size <= 0) { + return false; + } + return this.scopes.size >= scopeSet.scopes.size && scopeSet.asArray().every((scope) => this.containsScope(scope)); + } + /** + * Check if set of scopes contains only the defaults + */ + containsOnlyOIDCScopes() { + let defaultScopeCount = 0; + OIDC_SCOPES.forEach((defaultScope) => { + if (this.containsScope(defaultScope)) { + defaultScopeCount += 1; + } + }); + return this.scopes.size === defaultScopeCount; + } + /** + * Appends single scope if passed + * @param newScope + */ + appendScope(newScope) { + if (newScope) { + this.scopes.add(newScope.trim()); + } + } + /** + * Appends multiple scopes if passed + * @param newScopes + */ + appendScopes(newScopes) { + try { + newScopes.forEach((newScope) => this.appendScope(newScope)); + } catch (e) { + throw createClientAuthError(cannotAppendScopeSet); + } + } + /** + * Removes element from set of scopes. + * @param scope + */ + removeScope(scope) { + if (!scope) { + throw createClientAuthError(cannotRemoveEmptyScope); + } + this.scopes.delete(scope.trim()); + } + /** + * Removes default scopes from set of scopes + * Primarily used to prevent cache misses if the default scopes are not returned from the server + */ + removeOIDCScopes() { + OIDC_SCOPES.forEach((defaultScope) => { + this.scopes.delete(defaultScope); + }); + } + /** + * Combines an array of scopes with the current set of scopes. + * @param otherScopes + */ + unionScopeSets(otherScopes) { + if (!otherScopes) { + throw createClientAuthError(emptyInputScopeSet); + } + const unionScopes = /* @__PURE__ */ new Set(); + otherScopes.scopes.forEach((scope) => unionScopes.add(scope.toLowerCase())); + this.scopes.forEach((scope) => unionScopes.add(scope.toLowerCase())); + return unionScopes; + } + /** + * Check if scopes intersect between this set and another. + * @param otherScopes + */ + intersectingScopeSets(otherScopes) { + if (!otherScopes) { + throw createClientAuthError(emptyInputScopeSet); + } + if (!otherScopes.containsOnlyOIDCScopes()) { + otherScopes.removeOIDCScopes(); + } + const unionScopes = this.unionScopeSets(otherScopes); + const sizeOtherScopes = otherScopes.getScopeCount(); + const sizeThisScopes = this.getScopeCount(); + const sizeUnionScopes = unionScopes.size; + return sizeUnionScopes < sizeThisScopes + sizeOtherScopes; + } + /** + * Returns size of set of scopes. + */ + getScopeCount() { + return this.scopes.size; + } + /** + * Returns the scopes as an array of string values + */ + asArray() { + const array2 = []; + this.scopes.forEach((val) => array2.push(val)); + return array2; + } + /** + * Prints scopes into a space-delimited string + */ + printScopes() { + if (this.scopes) { + const scopeArr = this.asArray(); + return scopeArr.join(" "); + } + return Constants.EMPTY_STRING; + } + /** + * Prints scopes into a space-delimited lower-case string (used for caching) + */ + printScopesLowerCase() { + return this.printScopes().toLowerCase(); + } +}; + +// node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/account/ClientInfo.mjs +function buildClientInfo(rawClientInfo, base64Decode) { + if (!rawClientInfo) { + throw createClientAuthError(clientInfoEmptyError); + } + try { + const decodedClientInfo = base64Decode(rawClientInfo); + return JSON.parse(decodedClientInfo); + } catch (e) { + throw createClientAuthError(clientInfoDecodingError); + } +} +function buildClientInfoFromHomeAccountId(homeAccountId) { + if (!homeAccountId) { + throw createClientAuthError(clientInfoDecodingError); + } + const clientInfoParts = homeAccountId.split(Separators.CLIENT_INFO_SEPARATOR, 2); + return { + uid: clientInfoParts[0], + utid: clientInfoParts.length < 2 ? Constants.EMPTY_STRING : clientInfoParts[1] + }; +} + +// node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/account/AccountInfo.mjs +function tenantIdMatchesHomeTenant(tenantId, homeAccountId) { + return !!tenantId && !!homeAccountId && tenantId === homeAccountId.split(".")[1]; +} +function buildTenantProfile(homeAccountId, localAccountId, tenantId, idTokenClaims) { + if (idTokenClaims) { + const { oid, sub, tid, name: name5, tfp, acr, preferred_username, upn, login_hint } = idTokenClaims; + const tenantId2 = tid || tfp || acr || ""; + return { + tenantId: tenantId2, + localAccountId: oid || sub || "", + name: name5, + username: preferred_username || upn || "", + loginHint: login_hint, + isHomeTenant: tenantIdMatchesHomeTenant(tenantId2, homeAccountId) + }; + } else { + return { + tenantId, + localAccountId, + username: "", + isHomeTenant: tenantIdMatchesHomeTenant(tenantId, homeAccountId) + }; + } +} +function updateAccountTenantProfileData(baseAccountInfo, tenantProfile, idTokenClaims, idTokenSecret) { + let updatedAccountInfo = baseAccountInfo; + if (tenantProfile) { + const { isHomeTenant, ...tenantProfileOverride } = tenantProfile; + updatedAccountInfo = { ...baseAccountInfo, ...tenantProfileOverride }; + } + if (idTokenClaims) { + const { isHomeTenant, ...claimsSourcedTenantProfile } = buildTenantProfile(baseAccountInfo.homeAccountId, baseAccountInfo.localAccountId, baseAccountInfo.tenantId, idTokenClaims); + updatedAccountInfo = { + ...updatedAccountInfo, + ...claimsSourcedTenantProfile, + idTokenClaims, + idToken: idTokenSecret + }; + return updatedAccountInfo; + } + return updatedAccountInfo; +} + +// node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/authority/AuthorityType.mjs +var AuthorityType = { + Default: 0, + Adfs: 1, + Dsts: 2, + Ciam: 3 +}; + +// node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/account/TokenClaims.mjs +function getTenantIdFromIdTokenClaims(idTokenClaims) { + if (idTokenClaims) { + const tenantId = idTokenClaims.tid || idTokenClaims.tfp || idTokenClaims.acr; + return tenantId || null; + } + return null; +} + +// node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/authority/ProtocolMode.mjs +var ProtocolMode = { + /** + * Auth Code + PKCE with Entra ID (formerly AAD) specific optimizations and features + */ + AAD: "AAD", + /** + * Auth Code + PKCE without Entra ID specific optimizations and features. For use only with non-Microsoft owned authorities. + * Support is limited for this mode. + */ + OIDC: "OIDC", + /** + * Encrypted Authorize Response (EAR) with Entra ID specific optimizations and features + */ + EAR: "EAR" +}; + +// node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/cache/entities/AccountEntity.mjs +var AccountEntity = class _AccountEntity { + /** + * Returns the AccountInfo interface for this account. + */ + static getAccountInfo(accountEntity) { + const tenantProfiles = accountEntity.tenantProfiles || []; + if (tenantProfiles.length === 0 && accountEntity.realm && accountEntity.localAccountId) { + tenantProfiles.push(buildTenantProfile(accountEntity.homeAccountId, accountEntity.localAccountId, accountEntity.realm)); + } + return { + homeAccountId: accountEntity.homeAccountId, + environment: accountEntity.environment, + tenantId: accountEntity.realm, + username: accountEntity.username, + localAccountId: accountEntity.localAccountId, + loginHint: accountEntity.loginHint, + name: accountEntity.name, + nativeAccountId: accountEntity.nativeAccountId, + authorityType: accountEntity.authorityType, + // Deserialize tenant profiles array into a Map + tenantProfiles: new Map(tenantProfiles.map((tenantProfile) => { + return [tenantProfile.tenantId, tenantProfile]; + })), + dataBoundary: accountEntity.dataBoundary + }; + } + /** + * Returns true if the account entity is in single tenant format (outdated), false otherwise + */ + isSingleTenant() { + return !this.tenantProfiles; + } + /** + * Build Account cache from IdToken, clientInfo and authority/policy. Associated with AAD. + * @param accountDetails + */ + static createAccount(accountDetails, authority, base64Decode) { + const account = new _AccountEntity(); + if (authority.authorityType === AuthorityType.Adfs) { + account.authorityType = CacheAccountType.ADFS_ACCOUNT_TYPE; + } else if (authority.protocolMode === ProtocolMode.OIDC) { + account.authorityType = CacheAccountType.GENERIC_ACCOUNT_TYPE; + } else { + account.authorityType = CacheAccountType.MSSTS_ACCOUNT_TYPE; + } + let clientInfo; + if (accountDetails.clientInfo && base64Decode) { + clientInfo = buildClientInfo(accountDetails.clientInfo, base64Decode); + if (clientInfo.xms_tdbr) { + account.dataBoundary = clientInfo.xms_tdbr === "EU" ? "EU" : "None"; + } + } + account.clientInfo = accountDetails.clientInfo; + account.homeAccountId = accountDetails.homeAccountId; + account.nativeAccountId = accountDetails.nativeAccountId; + const env = accountDetails.environment || authority && authority.getPreferredCache(); + if (!env) { + throw createClientAuthError(invalidCacheEnvironment); + } + account.environment = env; + account.realm = clientInfo?.utid || getTenantIdFromIdTokenClaims(accountDetails.idTokenClaims) || ""; + account.localAccountId = clientInfo?.uid || accountDetails.idTokenClaims?.oid || accountDetails.idTokenClaims?.sub || ""; + const preferredUsername = accountDetails.idTokenClaims?.preferred_username || accountDetails.idTokenClaims?.upn; + const email2 = accountDetails.idTokenClaims?.emails ? accountDetails.idTokenClaims.emails[0] : null; + account.username = preferredUsername || email2 || ""; + account.loginHint = accountDetails.idTokenClaims?.login_hint; + account.name = accountDetails.idTokenClaims?.name || ""; + account.cloudGraphHostName = accountDetails.cloudGraphHostName; + account.msGraphHost = accountDetails.msGraphHost; + if (accountDetails.tenantProfiles) { + account.tenantProfiles = accountDetails.tenantProfiles; + } else { + const tenantProfile = buildTenantProfile(accountDetails.homeAccountId, account.localAccountId, account.realm, accountDetails.idTokenClaims); + account.tenantProfiles = [tenantProfile]; + } + return account; + } + /** + * Creates an AccountEntity object from AccountInfo + * @param accountInfo + * @param cloudGraphHostName + * @param msGraphHost + * @returns + */ + static createFromAccountInfo(accountInfo, cloudGraphHostName, msGraphHost) { + const account = new _AccountEntity(); + account.authorityType = accountInfo.authorityType || CacheAccountType.GENERIC_ACCOUNT_TYPE; + account.homeAccountId = accountInfo.homeAccountId; + account.localAccountId = accountInfo.localAccountId; + account.nativeAccountId = accountInfo.nativeAccountId; + account.realm = accountInfo.tenantId; + account.environment = accountInfo.environment; + account.username = accountInfo.username; + account.name = accountInfo.name; + account.loginHint = accountInfo.loginHint; + account.cloudGraphHostName = cloudGraphHostName; + account.msGraphHost = msGraphHost; + const tenantProfiles = Array.from(accountInfo.tenantProfiles?.values() || []); + if (tenantProfiles.length === 0 && accountInfo.tenantId && accountInfo.localAccountId) { + tenantProfiles.push(buildTenantProfile(accountInfo.homeAccountId, accountInfo.localAccountId, accountInfo.tenantId, accountInfo.idTokenClaims)); + } + account.tenantProfiles = tenantProfiles; + account.dataBoundary = accountInfo.dataBoundary; + return account; + } + /** + * Generate HomeAccountId from server response + * @param serverClientInfo + * @param authType + */ + static generateHomeAccountId(serverClientInfo, authType, logger31, cryptoObj, idTokenClaims) { + if (!(authType === AuthorityType.Adfs || authType === AuthorityType.Dsts)) { + if (serverClientInfo) { + try { + const clientInfo = buildClientInfo(serverClientInfo, cryptoObj.base64Decode); + if (clientInfo.uid && clientInfo.utid) { + return `${clientInfo.uid}.${clientInfo.utid}`; + } + } catch (e) { + } + } + logger31.warning("No client info in response"); + } + return idTokenClaims?.sub || ""; + } + /** + * Validates an entity: checks for all expected params + * @param entity + */ + static isAccountEntity(entity) { + if (!entity) { + return false; + } + return entity.hasOwnProperty("homeAccountId") && entity.hasOwnProperty("environment") && entity.hasOwnProperty("realm") && entity.hasOwnProperty("localAccountId") && entity.hasOwnProperty("username") && entity.hasOwnProperty("authorityType"); + } + /** + * Helper function to determine whether 2 accountInfo objects represent the same account + * @param accountA + * @param accountB + * @param compareClaims - If set to true idTokenClaims will also be compared to determine account equality + */ + static accountInfoIsEqual(accountA, accountB, compareClaims) { + if (!accountA || !accountB) { + return false; + } + let claimsMatch = true; + if (compareClaims) { + const accountAClaims = accountA.idTokenClaims || {}; + const accountBClaims = accountB.idTokenClaims || {}; + claimsMatch = accountAClaims.iat === accountBClaims.iat && accountAClaims.nonce === accountBClaims.nonce; + } + return accountA.homeAccountId === accountB.homeAccountId && accountA.localAccountId === accountB.localAccountId && accountA.username === accountB.username && accountA.tenantId === accountB.tenantId && accountA.loginHint === accountB.loginHint && accountA.environment === accountB.environment && accountA.nativeAccountId === accountB.nativeAccountId && claimsMatch; + } +}; + +// node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/account/AuthToken.mjs +function extractTokenClaims(encodedToken, base64Decode) { + const jswPayload = getJWSPayload(encodedToken); + try { + const base64Decoded = base64Decode(jswPayload); + return JSON.parse(base64Decoded); + } catch (err) { + throw createClientAuthError(tokenParsingError); + } +} +function isKmsi(idTokenClaims) { + if (!idTokenClaims.signin_state) { + return false; + } + const kmsiClaims = ["kmsi", "dvc_dmjd"]; + const kmsi = idTokenClaims.signin_state.some((value) => kmsiClaims.includes(value.trim().toLowerCase())); + return kmsi; +} +function getJWSPayload(authToken) { + if (!authToken) { + throw createClientAuthError(nullOrEmptyToken); + } + const tokenPartsRegex = /^([^\.\s]*)\.([^\.\s]+)\.([^\.\s]*)$/; + const matches = tokenPartsRegex.exec(authToken); + if (!matches || matches.length < 4) { + throw createClientAuthError(tokenParsingError); + } + return matches[2]; +} +function checkMaxAge(authTime, maxAge) { + const fiveMinuteSkew = 3e5; + if (maxAge === 0 || Date.now() - fiveMinuteSkew > authTime + maxAge) { + throw createClientAuthError(maxAgeTranspired); + } +} + +// node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/utils/UrlUtils.mjs +var UrlUtils_exports = {}; +__export(UrlUtils_exports, { + getDeserializedResponse: () => getDeserializedResponse, + mapToQueryString: () => mapToQueryString, + normalizeUrlForComparison: () => normalizeUrlForComparison, + stripLeadingHashOrQuery: () => stripLeadingHashOrQuery +}); +function canonicalizeUrl(url2) { + if (!url2) { + return url2; + } + let lowerCaseUrl = url2.toLowerCase(); + if (StringUtils.endsWith(lowerCaseUrl, "?")) { + lowerCaseUrl = lowerCaseUrl.slice(0, -1); + } else if (StringUtils.endsWith(lowerCaseUrl, "?/")) { + lowerCaseUrl = lowerCaseUrl.slice(0, -2); + } + if (!StringUtils.endsWith(lowerCaseUrl, "/")) { + lowerCaseUrl += "/"; + } + return lowerCaseUrl; +} +function stripLeadingHashOrQuery(responseString) { + if (responseString.startsWith("#/")) { + return responseString.substring(2); + } else if (responseString.startsWith("#") || responseString.startsWith("?")) { + return responseString.substring(1); + } + return responseString; +} +function getDeserializedResponse(responseString) { + if (!responseString || responseString.indexOf("=") < 0) { + return null; + } + try { + const normalizedResponse = stripLeadingHashOrQuery(responseString); + const deserializedHash = Object.fromEntries(new URLSearchParams(normalizedResponse)); + if (deserializedHash.code || deserializedHash.ear_jwe || deserializedHash.error || deserializedHash.error_description || deserializedHash.state) { + return deserializedHash; + } + } catch (e) { + throw createClientAuthError(hashNotDeserialized); + } + return null; +} +function mapToQueryString(parameters, encodeExtraParams = true, extraQueryParameters) { + const queryParameterArray = new Array(); + parameters.forEach((value, key) => { + if (!encodeExtraParams && extraQueryParameters && key in extraQueryParameters) { + queryParameterArray.push(`${key}=${value}`); + } else { + queryParameterArray.push(`${key}=${encodeURIComponent(value)}`); + } + }); + return queryParameterArray.join("&"); +} +function normalizeUrlForComparison(url2) { + if (!url2) { + return url2; + } + const urlWithoutHash = url2.split("#")[0]; + try { + const urlObj = new URL(urlWithoutHash); + const normalizedUrl = urlObj.origin + urlObj.pathname + urlObj.search; + return canonicalizeUrl(normalizedUrl); + } catch (e) { + return canonicalizeUrl(urlWithoutHash); + } +} + +// node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/url/UrlString.mjs +var UrlString = class _UrlString { + get urlString() { + return this._urlString; + } + constructor(url2) { + this._urlString = url2; + if (!this._urlString) { + throw createClientConfigurationError(urlEmptyError); + } + if (!url2.includes("#")) { + this._urlString = _UrlString.canonicalizeUri(url2); + } + } + /** + * Ensure urls are lower case and end with a / character. + * @param url + */ + static canonicalizeUri(url2) { + if (url2) { + let lowerCaseUrl = url2.toLowerCase(); + if (StringUtils.endsWith(lowerCaseUrl, "?")) { + lowerCaseUrl = lowerCaseUrl.slice(0, -1); + } else if (StringUtils.endsWith(lowerCaseUrl, "?/")) { + lowerCaseUrl = lowerCaseUrl.slice(0, -2); + } + if (!StringUtils.endsWith(lowerCaseUrl, "/")) { + lowerCaseUrl += "/"; + } + return lowerCaseUrl; + } + return url2; + } + /** + * Throws if urlString passed is not a valid authority URI string. + */ + validateAsUri() { + let components; + try { + components = this.getUrlComponents(); + } catch (e) { + throw createClientConfigurationError(urlParseError); + } + if (!components.HostNameAndPort || !components.PathSegments) { + throw createClientConfigurationError(urlParseError); + } + if (!components.Protocol || components.Protocol.toLowerCase() !== "https:") { + throw createClientConfigurationError(authorityUriInsecure); + } + } + /** + * Given a url and a query string return the url with provided query string appended + * @param url + * @param queryString + */ + static appendQueryString(url2, queryString) { + if (!queryString) { + return url2; + } + return url2.indexOf("?") < 0 ? `${url2}?${queryString}` : `${url2}&${queryString}`; + } + /** + * Returns a url with the hash removed + * @param url + */ + static removeHashFromUrl(url2) { + return _UrlString.canonicalizeUri(url2.split("#")[0]); + } + /** + * Given a url like https://a:b/common/d?e=f#g, and a tenantId, returns https://a:b/tenantId/d + * @param href The url + * @param tenantId The tenant id to replace + */ + replaceTenantPath(tenantId) { + const urlObject = this.getUrlComponents(); + const pathArray = urlObject.PathSegments; + if (tenantId && pathArray.length !== 0 && (pathArray[0] === AADAuthorityConstants.COMMON || pathArray[0] === AADAuthorityConstants.ORGANIZATIONS)) { + pathArray[0] = tenantId; + } + return _UrlString.constructAuthorityUriFromObject(urlObject); + } + /** + * Parses out the components from a url string. + * @returns An object with the various components. Please cache this value insted of calling this multiple times on the same url. + */ + getUrlComponents() { + const regEx = RegExp("^(([^:/?#]+):)?(//([^/?#]*))?([^?#]*)(\\?([^#]*))?(#(.*))?"); + const match = this.urlString.match(regEx); + if (!match) { + throw createClientConfigurationError(urlParseError); + } + const urlComponents = { + Protocol: match[1], + HostNameAndPort: match[4], + AbsolutePath: match[5], + QueryString: match[7] + }; + let pathSegments = urlComponents.AbsolutePath.split("/"); + pathSegments = pathSegments.filter((val) => val && val.length > 0); + urlComponents.PathSegments = pathSegments; + if (urlComponents.QueryString && urlComponents.QueryString.endsWith("/")) { + urlComponents.QueryString = urlComponents.QueryString.substring(0, urlComponents.QueryString.length - 1); + } + return urlComponents; + } + static getDomainFromUrl(url2) { + const regEx = RegExp("^([^:/?#]+://)?([^/?#]*)"); + const match = url2.match(regEx); + if (!match) { + throw createClientConfigurationError(urlParseError); + } + return match[2]; + } + static getAbsoluteUrl(relativeUrl, baseUrl) { + if (relativeUrl[0] === Constants.FORWARD_SLASH) { + const url2 = new _UrlString(baseUrl); + const baseComponents = url2.getUrlComponents(); + return baseComponents.Protocol + "//" + baseComponents.HostNameAndPort + relativeUrl; + } + return relativeUrl; + } + static constructAuthorityUriFromObject(urlObject) { + return new _UrlString(urlObject.Protocol + "//" + urlObject.HostNameAndPort + "/" + urlObject.PathSegments.join("/")); + } + /** + * Check if the hash of the URL string contains known properties + * @deprecated This API will be removed in a future version + */ + static hashContainsKnownProperties(response) { + return !!getDeserializedResponse(response); + } +}; + +// node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/authority/AuthorityMetadata.mjs +var rawMetdataJSON = { + endpointMetadata: { + "login.microsoftonline.com": { + token_endpoint: "https://login.microsoftonline.com/{tenantid}/oauth2/v2.0/token", + jwks_uri: "https://login.microsoftonline.com/{tenantid}/discovery/v2.0/keys", + issuer: "https://login.microsoftonline.com/{tenantid}/v2.0", + authorization_endpoint: "https://login.microsoftonline.com/{tenantid}/oauth2/v2.0/authorize", + end_session_endpoint: "https://login.microsoftonline.com/{tenantid}/oauth2/v2.0/logout" + }, + "login.chinacloudapi.cn": { + token_endpoint: "https://login.chinacloudapi.cn/{tenantid}/oauth2/v2.0/token", + jwks_uri: "https://login.chinacloudapi.cn/{tenantid}/discovery/v2.0/keys", + issuer: "https://login.partner.microsoftonline.cn/{tenantid}/v2.0", + authorization_endpoint: "https://login.chinacloudapi.cn/{tenantid}/oauth2/v2.0/authorize", + end_session_endpoint: "https://login.chinacloudapi.cn/{tenantid}/oauth2/v2.0/logout" + }, + "login.microsoftonline.us": { + token_endpoint: "https://login.microsoftonline.us/{tenantid}/oauth2/v2.0/token", + jwks_uri: "https://login.microsoftonline.us/{tenantid}/discovery/v2.0/keys", + issuer: "https://login.microsoftonline.us/{tenantid}/v2.0", + authorization_endpoint: "https://login.microsoftonline.us/{tenantid}/oauth2/v2.0/authorize", + end_session_endpoint: "https://login.microsoftonline.us/{tenantid}/oauth2/v2.0/logout" + }, + "login.sovcloud-identity.fr": { + token_endpoint: "https://login.sovcloud-identity.fr/{tenantid}/oauth2/v2.0/token", + jwks_uri: "https://login.sovcloud-identity.fr/{tenantid}/discovery/v2.0/keys", + issuer: "https://login.sovcloud-identity.fr/{tenantid}/v2.0", + authorization_endpoint: "https://login.sovcloud-identity.fr/{tenantid}/oauth2/v2.0/authorize", + end_session_endpoint: "https://login.sovcloud-identity.fr/{tenantid}/oauth2/v2.0/logout" + }, + "login.sovcloud-identity.de": { + token_endpoint: "https://login.sovcloud-identity.de/{tenantid}/oauth2/v2.0/token", + jwks_uri: "https://login.sovcloud-identity.de/{tenantid}/discovery/v2.0/keys", + issuer: "https://login.sovcloud-identity.de/{tenantid}/v2.0", + authorization_endpoint: "https://login.sovcloud-identity.de/{tenantid}/oauth2/v2.0/authorize", + end_session_endpoint: "https://login.sovcloud-identity.de/{tenantid}/oauth2/v2.0/logout" + }, + "login.sovcloud-identity.sg": { + token_endpoint: "https://login.sovcloud-identity.sg/common/oauth2/v2.0/token", + jwks_uri: "https://login.sovcloud-identity.sg/common/discovery/v2.0/keys", + issuer: "https://login.sovcloud-identity.sg/{tenantid}/v2.0", + authorization_endpoint: "https://login.sovcloud-identity.sg/common/oauth2/v2.0/authorize", + end_session_endpoint: "https://login.sovcloud-identity.sg/common/oauth2/v2.0/logout" + } + }, + instanceDiscoveryMetadata: { + metadata: [ + { + preferred_network: "login.microsoftonline.com", + preferred_cache: "login.windows.net", + aliases: [ + "login.microsoftonline.com", + "login.windows.net", + "login.microsoft.com", + "sts.windows.net" + ] + }, + { + preferred_network: "login.partner.microsoftonline.cn", + preferred_cache: "login.partner.microsoftonline.cn", + aliases: [ + "login.partner.microsoftonline.cn", + "login.chinacloudapi.cn" + ] + }, + { + preferred_network: "login.microsoftonline.de", + preferred_cache: "login.microsoftonline.de", + aliases: ["login.microsoftonline.de"] + }, + { + preferred_network: "login.microsoftonline.us", + preferred_cache: "login.microsoftonline.us", + aliases: [ + "login.microsoftonline.us", + "login.usgovcloudapi.net" + ] + }, + { + preferred_network: "login-us.microsoftonline.com", + preferred_cache: "login-us.microsoftonline.com", + aliases: ["login-us.microsoftonline.com"] + }, + { + preferred_network: "login.sovcloud-identity.fr", + preferred_cache: "login.sovcloud-identity.fr", + aliases: ["login.sovcloud-identity.fr"] + }, + { + preferred_network: "login.sovcloud-identity.de", + preferred_cache: "login.sovcloud-identity.de", + aliases: ["login.sovcloud-identity.de"] + }, + { + preferred_network: "login.sovcloud-identity.sg", + preferred_cache: "login.sovcloud-identity.sg", + aliases: ["login.sovcloud-identity.sg"] + } + ] + } +}; +var EndpointMetadata = rawMetdataJSON.endpointMetadata; +var InstanceDiscoveryMetadata = rawMetdataJSON.instanceDiscoveryMetadata; +var InstanceDiscoveryMetadataAliases = /* @__PURE__ */ new Set(); +InstanceDiscoveryMetadata.metadata.forEach((metadataEntry) => { + metadataEntry.aliases.forEach((alias) => { + InstanceDiscoveryMetadataAliases.add(alias); + }); +}); +function getAliasesFromStaticSources(staticAuthorityOptions, logger31) { + let staticAliases; + const canonicalAuthority = staticAuthorityOptions.canonicalAuthority; + if (canonicalAuthority) { + const authorityHost = new UrlString(canonicalAuthority).getUrlComponents().HostNameAndPort; + staticAliases = getAliasesFromMetadata(authorityHost, staticAuthorityOptions.cloudDiscoveryMetadata?.metadata, AuthorityMetadataSource.CONFIG, logger31) || getAliasesFromMetadata(authorityHost, InstanceDiscoveryMetadata.metadata, AuthorityMetadataSource.HARDCODED_VALUES, logger31) || staticAuthorityOptions.knownAuthorities; + } + return staticAliases || []; +} +function getAliasesFromMetadata(authorityHost, cloudDiscoveryMetadata, source, logger31) { + logger31?.trace(`getAliasesFromMetadata called with source: ${source}`); + if (authorityHost && cloudDiscoveryMetadata) { + const metadata = getCloudDiscoveryMetadataFromNetworkResponse(cloudDiscoveryMetadata, authorityHost); + if (metadata) { + logger31?.trace(`getAliasesFromMetadata: found cloud discovery metadata in ${source}, returning aliases`); + return metadata.aliases; + } else { + logger31?.trace(`getAliasesFromMetadata: did not find cloud discovery metadata in ${source}`); + } + } + return null; +} +function getCloudDiscoveryMetadataFromHardcodedValues(authorityHost) { + const metadata = getCloudDiscoveryMetadataFromNetworkResponse(InstanceDiscoveryMetadata.metadata, authorityHost); + return metadata; +} +function getCloudDiscoveryMetadataFromNetworkResponse(response, authorityHost) { + for (let i = 0; i < response.length; i++) { + const metadata = response[i]; + if (metadata.aliases.includes(authorityHost)) { + return metadata; + } + } + return null; +} + +// node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/error/CacheErrorCodes.mjs +var cacheQuotaExceeded = "cache_quota_exceeded"; +var cacheErrorUnknown = "cache_error_unknown"; + +// node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/error/CacheError.mjs +var CacheErrorMessages = { + [cacheQuotaExceeded]: "Exceeded cache storage capacity.", + [cacheErrorUnknown]: "Unexpected error occurred when using cache storage." +}; +var CacheError = class _CacheError extends AuthError { + constructor(errorCode, errorMessage) { + const message = errorMessage || (CacheErrorMessages[errorCode] ? CacheErrorMessages[errorCode] : CacheErrorMessages[cacheErrorUnknown]); + super(`${errorCode}: ${message}`); + Object.setPrototypeOf(this, _CacheError.prototype); + this.name = "CacheError"; + this.errorCode = errorCode; + this.errorMessage = message; + } +}; +function createCacheError(e) { + if (!(e instanceof Error)) { + return new CacheError(cacheErrorUnknown); + } + if (e.name === "QuotaExceededError" || e.name === "NS_ERROR_DOM_QUOTA_REACHED" || e.message.includes("exceeded the quota")) { + return new CacheError(cacheQuotaExceeded); + } else { + return new CacheError(e.name, e.message); + } +} + +// node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/cache/CacheManager.mjs +var CacheManager = class { + constructor(clientId, cryptoImpl, logger31, performanceClient, staticAuthorityOptions) { + this.clientId = clientId; + this.cryptoImpl = cryptoImpl; + this.commonLogger = logger31.clone(name, version2); + this.staticAuthorityOptions = staticAuthorityOptions; + this.performanceClient = performanceClient; + } + /** + * Returns all the accounts in the cache that match the optional filter. If no filter is provided, all accounts are returned. + * @param accountFilter - (Optional) filter to narrow down the accounts returned + * @returns Array of AccountInfo objects in cache + */ + getAllAccounts(accountFilter, correlationId) { + return this.buildTenantProfiles(this.getAccountsFilteredBy(accountFilter, correlationId), correlationId, accountFilter); + } + /** + * Gets first tenanted AccountInfo object found based on provided filters + */ + getAccountInfoFilteredBy(accountFilter, correlationId) { + if (Object.keys(accountFilter).length === 0 || Object.values(accountFilter).every((value) => !value)) { + this.commonLogger.warning("getAccountInfoFilteredBy: Account filter is empty or invalid, returning null"); + return null; + } + const allAccounts = this.getAllAccounts(accountFilter, correlationId); + if (allAccounts.length > 1) { + const sortedAccounts = allAccounts.sort((account) => { + return account.idTokenClaims ? -1 : 1; + }); + return sortedAccounts[0]; + } else if (allAccounts.length === 1) { + return allAccounts[0]; + } else { + return null; + } + } + /** + * Returns a single matching + * @param accountFilter + * @returns + */ + getBaseAccountInfo(accountFilter, correlationId) { + const accountEntities = this.getAccountsFilteredBy(accountFilter, correlationId); + if (accountEntities.length > 0) { + return AccountEntity.getAccountInfo(accountEntities[0]); + } else { + return null; + } + } + /** + * Matches filtered account entities with cached ID tokens that match the tenant profile-specific account filters + * and builds the account info objects from the matching ID token's claims + * @param cachedAccounts + * @param accountFilter + * @returns Array of AccountInfo objects that match account and tenant profile filters + */ + buildTenantProfiles(cachedAccounts, correlationId, accountFilter) { + return cachedAccounts.flatMap((accountEntity) => { + return this.getTenantProfilesFromAccountEntity(accountEntity, correlationId, accountFilter?.tenantId, accountFilter); + }); + } + getTenantedAccountInfoByFilter(accountInfo, tokenKeys, tenantProfile, correlationId, tenantProfileFilter) { + let tenantedAccountInfo = null; + let idTokenClaims; + if (tenantProfileFilter) { + if (!this.tenantProfileMatchesFilter(tenantProfile, tenantProfileFilter)) { + return null; + } + } + const idToken = this.getIdToken(accountInfo, correlationId, tokenKeys, tenantProfile.tenantId); + if (idToken) { + idTokenClaims = extractTokenClaims(idToken.secret, this.cryptoImpl.base64Decode); + if (!this.idTokenClaimsMatchTenantProfileFilter(idTokenClaims, tenantProfileFilter)) { + return null; + } + } + tenantedAccountInfo = updateAccountTenantProfileData(accountInfo, tenantProfile, idTokenClaims, idToken?.secret); + return tenantedAccountInfo; + } + getTenantProfilesFromAccountEntity(accountEntity, correlationId, targetTenantId, tenantProfileFilter) { + const accountInfo = AccountEntity.getAccountInfo(accountEntity); + let searchTenantProfiles = accountInfo.tenantProfiles || /* @__PURE__ */ new Map(); + const tokenKeys = this.getTokenKeys(); + if (targetTenantId) { + const tenantProfile = searchTenantProfiles.get(targetTenantId); + if (tenantProfile) { + searchTenantProfiles = /* @__PURE__ */ new Map([ + [targetTenantId, tenantProfile] + ]); + } else { + return []; + } + } + const matchingTenantProfiles = []; + searchTenantProfiles.forEach((tenantProfile) => { + const tenantedAccountInfo = this.getTenantedAccountInfoByFilter(accountInfo, tokenKeys, tenantProfile, correlationId, tenantProfileFilter); + if (tenantedAccountInfo) { + matchingTenantProfiles.push(tenantedAccountInfo); + } + }); + return matchingTenantProfiles; + } + tenantProfileMatchesFilter(tenantProfile, tenantProfileFilter) { + if (!!tenantProfileFilter.localAccountId && !this.matchLocalAccountIdFromTenantProfile(tenantProfile, tenantProfileFilter.localAccountId)) { + return false; + } + if (!!tenantProfileFilter.name && !(tenantProfile.name === tenantProfileFilter.name)) { + return false; + } + if (tenantProfileFilter.isHomeTenant !== void 0 && !(tenantProfile.isHomeTenant === tenantProfileFilter.isHomeTenant)) { + return false; + } + return true; + } + idTokenClaimsMatchTenantProfileFilter(idTokenClaims, tenantProfileFilter) { + if (tenantProfileFilter) { + if (!!tenantProfileFilter.localAccountId && !this.matchLocalAccountIdFromTokenClaims(idTokenClaims, tenantProfileFilter.localAccountId)) { + return false; + } + if (!!tenantProfileFilter.loginHint && !this.matchLoginHintFromTokenClaims(idTokenClaims, tenantProfileFilter.loginHint)) { + return false; + } + if (!!tenantProfileFilter.username && !this.matchUsername(idTokenClaims.preferred_username, tenantProfileFilter.username)) { + return false; + } + if (!!tenantProfileFilter.name && !this.matchName(idTokenClaims, tenantProfileFilter.name)) { + return false; + } + if (!!tenantProfileFilter.sid && !this.matchSid(idTokenClaims, tenantProfileFilter.sid)) { + return false; + } + } + return true; + } + /** + * saves a cache record + * @param cacheRecord {CacheRecord} + * @param correlationId {?string} correlation id + * @param kmsi - Keep Me Signed In + * @param apiId - API identifier for telemetry tracking + * @param storeInCache {?StoreInCache} + */ + async saveCacheRecord(cacheRecord, correlationId, kmsi, apiId, storeInCache) { + if (!cacheRecord) { + throw createClientAuthError(invalidCacheRecord); + } + try { + if (!!cacheRecord.account) { + await this.setAccount(cacheRecord.account, correlationId, kmsi, apiId); + } + if (!!cacheRecord.idToken && storeInCache?.idToken !== false) { + await this.setIdTokenCredential(cacheRecord.idToken, correlationId, kmsi); + } + if (!!cacheRecord.accessToken && storeInCache?.accessToken !== false) { + await this.saveAccessToken(cacheRecord.accessToken, correlationId, kmsi); + } + if (!!cacheRecord.refreshToken && storeInCache?.refreshToken !== false) { + await this.setRefreshTokenCredential(cacheRecord.refreshToken, correlationId, kmsi); + } + if (!!cacheRecord.appMetadata) { + this.setAppMetadata(cacheRecord.appMetadata, correlationId); + } + } catch (e) { + this.commonLogger?.error(`CacheManager.saveCacheRecord: failed`); + if (e instanceof AuthError) { + throw e; + } else { + throw createCacheError(e); + } + } + } + /** + * saves access token credential + * @param credential + */ + async saveAccessToken(credential, correlationId, kmsi) { + const accessTokenFilter = { + clientId: credential.clientId, + credentialType: credential.credentialType, + environment: credential.environment, + homeAccountId: credential.homeAccountId, + realm: credential.realm, + tokenType: credential.tokenType, + requestedClaimsHash: credential.requestedClaimsHash + }; + const tokenKeys = this.getTokenKeys(); + const currentScopes = ScopeSet.fromString(credential.target); + tokenKeys.accessToken.forEach((key) => { + if (!this.accessTokenKeyMatchesFilter(key, accessTokenFilter, false)) { + return; + } + const tokenEntity = this.getAccessTokenCredential(key, correlationId); + if (tokenEntity && this.credentialMatchesFilter(tokenEntity, accessTokenFilter)) { + const tokenScopeSet = ScopeSet.fromString(tokenEntity.target); + if (tokenScopeSet.intersectingScopeSets(currentScopes)) { + this.removeAccessToken(key, correlationId); + } + } + }); + await this.setAccessTokenCredential(credential, correlationId, kmsi); + } + /** + * Retrieve account entities matching all provided tenant-agnostic filters; if no filter is set, get all account entities in the cache + * Not checking for casing as keys are all generated in lower case, remember to convert to lower case if object properties are compared + * @param accountFilter - An object containing Account properties to filter by + */ + getAccountsFilteredBy(accountFilter, correlationId) { + const allAccountKeys = this.getAccountKeys(); + const matchingAccounts = []; + allAccountKeys.forEach((cacheKey2) => { + const entity = this.getAccount(cacheKey2, correlationId); + if (!entity) { + return; + } + if (!!accountFilter.homeAccountId && !this.matchHomeAccountId(entity, accountFilter.homeAccountId)) { + return; + } + if (!!accountFilter.username && !this.matchUsername(entity.username, accountFilter.username)) { + return; + } + if (!!accountFilter.environment && !this.matchEnvironment(entity, accountFilter.environment)) { + return; + } + if (!!accountFilter.realm && !this.matchRealm(entity, accountFilter.realm)) { + return; + } + if (!!accountFilter.nativeAccountId && !this.matchNativeAccountId(entity, accountFilter.nativeAccountId)) { + return; + } + if (!!accountFilter.authorityType && !this.matchAuthorityType(entity, accountFilter.authorityType)) { + return; + } + const tenantProfileFilter = { + localAccountId: accountFilter?.localAccountId, + name: accountFilter?.name + }; + const matchingTenantProfiles = entity.tenantProfiles?.filter((tenantProfile) => { + return this.tenantProfileMatchesFilter(tenantProfile, tenantProfileFilter); + }); + if (matchingTenantProfiles && matchingTenantProfiles.length === 0) { + return; + } + matchingAccounts.push(entity); + }); + return matchingAccounts; + } + /** + * Returns whether or not the given credential entity matches the filter + * @param entity + * @param filter + * @returns + */ + credentialMatchesFilter(entity, filter) { + if (!!filter.clientId && !this.matchClientId(entity, filter.clientId)) { + return false; + } + if (!!filter.userAssertionHash && !this.matchUserAssertionHash(entity, filter.userAssertionHash)) { + return false; + } + if (typeof filter.homeAccountId === "string" && !this.matchHomeAccountId(entity, filter.homeAccountId)) { + return false; + } + if (!!filter.environment && !this.matchEnvironment(entity, filter.environment)) { + return false; + } + if (!!filter.realm && !this.matchRealm(entity, filter.realm)) { + return false; + } + if (!!filter.credentialType && !this.matchCredentialType(entity, filter.credentialType)) { + return false; + } + if (!!filter.familyId && !this.matchFamilyId(entity, filter.familyId)) { + return false; + } + if (!!filter.target && !this.matchTarget(entity, filter.target)) { + return false; + } + if (filter.requestedClaimsHash || entity.requestedClaimsHash) { + if (entity.requestedClaimsHash !== filter.requestedClaimsHash) { + return false; + } + } + if (entity.credentialType === CredentialType.ACCESS_TOKEN_WITH_AUTH_SCHEME) { + if (!!filter.tokenType && !this.matchTokenType(entity, filter.tokenType)) { + return false; + } + if (filter.tokenType === AuthenticationScheme.SSH) { + if (filter.keyId && !this.matchKeyId(entity, filter.keyId)) { + return false; + } + } + } + return true; + } + /** + * retrieve appMetadata matching all provided filters; if no filter is set, get all appMetadata + * @param filter + */ + getAppMetadataFilteredBy(filter) { + const allCacheKeys = this.getKeys(); + const matchingAppMetadata = {}; + allCacheKeys.forEach((cacheKey2) => { + if (!this.isAppMetadata(cacheKey2)) { + return; + } + const entity = this.getAppMetadata(cacheKey2); + if (!entity) { + return; + } + if (!!filter.environment && !this.matchEnvironment(entity, filter.environment)) { + return; + } + if (!!filter.clientId && !this.matchClientId(entity, filter.clientId)) { + return; + } + matchingAppMetadata[cacheKey2] = entity; + }); + return matchingAppMetadata; + } + /** + * retrieve authorityMetadata that contains a matching alias + * @param filter + */ + getAuthorityMetadataByAlias(host) { + const allCacheKeys = this.getAuthorityMetadataKeys(); + let matchedEntity = null; + allCacheKeys.forEach((cacheKey2) => { + if (!this.isAuthorityMetadata(cacheKey2) || cacheKey2.indexOf(this.clientId) === -1) { + return; + } + const entity = this.getAuthorityMetadata(cacheKey2); + if (!entity) { + return; + } + if (entity.aliases.indexOf(host) === -1) { + return; + } + matchedEntity = entity; + }); + return matchedEntity; + } + /** + * Removes all accounts and related tokens from cache. + */ + removeAllAccounts(correlationId) { + const accounts = this.getAllAccounts({}, correlationId); + accounts.forEach((account) => { + this.removeAccount(account, correlationId); + }); + } + /** + * Removes the account and related tokens for a given account key + * @param account + */ + removeAccount(account, correlationId) { + this.removeAccountContext(account, correlationId); + const accountKeys = this.getAccountKeys(); + const keyFilter = (key) => { + return key.includes(account.homeAccountId) && key.includes(account.environment); + }; + accountKeys.filter(keyFilter).forEach((key) => { + this.removeItem(key, correlationId); + this.performanceClient.incrementFields({ accountsRemoved: 1 }, correlationId); + }); + } + /** + * Removes credentials associated with the provided account + * @param account + */ + removeAccountContext(account, correlationId) { + const allTokenKeys = this.getTokenKeys(); + const keyFilter = (key) => { + return key.includes(account.homeAccountId) && key.includes(account.environment); + }; + allTokenKeys.idToken.filter(keyFilter).forEach((key) => { + this.removeIdToken(key, correlationId); + }); + allTokenKeys.accessToken.filter(keyFilter).forEach((key) => { + this.removeAccessToken(key, correlationId); + }); + allTokenKeys.refreshToken.filter(keyFilter).forEach((key) => { + this.removeRefreshToken(key, correlationId); + }); + } + /** + * Removes accessToken from the cache + * @param key + * @param correlationId + */ + removeAccessToken(key, correlationId) { + const credential = this.getAccessTokenCredential(key, correlationId); + this.removeItem(key, correlationId); + this.performanceClient.incrementFields({ accessTokensRemoved: 1 }, correlationId); + if (!credential || credential.credentialType.toLowerCase() !== CredentialType.ACCESS_TOKEN_WITH_AUTH_SCHEME.toLowerCase() || credential.tokenType !== AuthenticationScheme.POP) { + return; + } + const kid = credential.keyId; + if (kid) { + void this.cryptoImpl.removeTokenBindingKey(kid).catch(() => { + this.commonLogger.error(`Failed to remove token binding key ${kid}`, correlationId); + this.performanceClient?.incrementFields({ removeTokenBindingKeyFailure: 1 }, correlationId); + }); + } + } + /** + * Removes all app metadata objects from cache. + */ + removeAppMetadata(correlationId) { + const allCacheKeys = this.getKeys(); + allCacheKeys.forEach((cacheKey2) => { + if (this.isAppMetadata(cacheKey2)) { + this.removeItem(cacheKey2, correlationId); + } + }); + return true; + } + /** + * Retrieve IdTokenEntity from cache + * @param account {AccountInfo} + * @param tokenKeys {?TokenKeys} + * @param targetRealm {?string} + * @param performanceClient {?IPerformanceClient} + * @param correlationId {?string} + */ + getIdToken(account, correlationId, tokenKeys, targetRealm, performanceClient) { + this.commonLogger.trace("CacheManager - getIdToken called"); + const idTokenFilter = { + homeAccountId: account.homeAccountId, + environment: account.environment, + credentialType: CredentialType.ID_TOKEN, + clientId: this.clientId, + realm: targetRealm + }; + const idTokenMap = this.getIdTokensByFilter(idTokenFilter, correlationId, tokenKeys); + const numIdTokens = idTokenMap.size; + if (numIdTokens < 1) { + this.commonLogger.info("CacheManager:getIdToken - No token found"); + return null; + } else if (numIdTokens > 1) { + let tokensToBeRemoved = idTokenMap; + if (!targetRealm) { + const homeIdTokenMap = /* @__PURE__ */ new Map(); + idTokenMap.forEach((idToken, key) => { + if (idToken.realm === account.tenantId) { + homeIdTokenMap.set(key, idToken); + } + }); + const numHomeIdTokens = homeIdTokenMap.size; + if (numHomeIdTokens < 1) { + this.commonLogger.info("CacheManager:getIdToken - Multiple ID tokens found for account but none match account entity tenant id, returning first result"); + return idTokenMap.values().next().value; + } else if (numHomeIdTokens === 1) { + this.commonLogger.info("CacheManager:getIdToken - Multiple ID tokens found for account, defaulting to home tenant profile"); + return homeIdTokenMap.values().next().value; + } else { + tokensToBeRemoved = homeIdTokenMap; + } + } + this.commonLogger.info("CacheManager:getIdToken - Multiple matching ID tokens found, clearing them"); + tokensToBeRemoved.forEach((idToken, key) => { + this.removeIdToken(key, correlationId); + }); + if (performanceClient && correlationId) { + performanceClient.addFields({ multiMatchedID: idTokenMap.size }, correlationId); + } + return null; + } + this.commonLogger.info("CacheManager:getIdToken - Returning ID token"); + return idTokenMap.values().next().value; + } + /** + * Gets all idTokens matching the given filter + * @param filter + * @returns + */ + getIdTokensByFilter(filter, correlationId, tokenKeys) { + const idTokenKeys = tokenKeys && tokenKeys.idToken || this.getTokenKeys().idToken; + const idTokens = /* @__PURE__ */ new Map(); + idTokenKeys.forEach((key) => { + if (!this.idTokenKeyMatchesFilter(key, { + clientId: this.clientId, + ...filter + })) { + return; + } + const idToken = this.getIdTokenCredential(key, correlationId); + if (idToken && this.credentialMatchesFilter(idToken, filter)) { + idTokens.set(key, idToken); + } + }); + return idTokens; + } + /** + * Validate the cache key against filter before retrieving and parsing cache value + * @param key + * @param filter + * @returns + */ + idTokenKeyMatchesFilter(inputKey, filter) { + const key = inputKey.toLowerCase(); + if (filter.clientId && key.indexOf(filter.clientId.toLowerCase()) === -1) { + return false; + } + if (filter.homeAccountId && key.indexOf(filter.homeAccountId.toLowerCase()) === -1) { + return false; + } + return true; + } + /** + * Removes idToken from the cache + * @param key + */ + removeIdToken(key, correlationId) { + this.removeItem(key, correlationId); + } + /** + * Removes refresh token from the cache + * @param key + */ + removeRefreshToken(key, correlationId) { + this.removeItem(key, correlationId); + } + /** + * Retrieve AccessTokenEntity from cache + * @param account {AccountInfo} + * @param request {BaseAuthRequest} + * @param correlationId {?string} + * @param tokenKeys {?TokenKeys} + * @param performanceClient {?IPerformanceClient} + */ + getAccessToken(account, request, tokenKeys, targetRealm) { + const correlationId = request.correlationId; + this.commonLogger.trace("CacheManager - getAccessToken called", correlationId); + const scopes = ScopeSet.createSearchScopes(request.scopes); + const authScheme = request.authenticationScheme || AuthenticationScheme.BEARER; + const credentialType = authScheme && authScheme.toLowerCase() !== AuthenticationScheme.BEARER.toLowerCase() ? CredentialType.ACCESS_TOKEN_WITH_AUTH_SCHEME : CredentialType.ACCESS_TOKEN; + const accessTokenFilter = { + homeAccountId: account.homeAccountId, + environment: account.environment, + credentialType, + clientId: this.clientId, + realm: targetRealm || account.tenantId, + target: scopes, + tokenType: authScheme, + keyId: request.sshKid, + requestedClaimsHash: request.requestedClaimsHash + }; + const accessTokenKeys = tokenKeys && tokenKeys.accessToken || this.getTokenKeys().accessToken; + const accessTokens = []; + accessTokenKeys.forEach((key) => { + if (this.accessTokenKeyMatchesFilter(key, accessTokenFilter, true)) { + const accessToken = this.getAccessTokenCredential(key, correlationId); + if (accessToken && this.credentialMatchesFilter(accessToken, accessTokenFilter)) { + accessTokens.push(accessToken); + } + } + }); + const numAccessTokens = accessTokens.length; + if (numAccessTokens < 1) { + this.commonLogger.info("CacheManager:getAccessToken - No token found", correlationId); + return null; + } else if (numAccessTokens > 1) { + this.commonLogger.info("CacheManager:getAccessToken - Multiple access tokens found, clearing them", correlationId); + accessTokens.forEach((accessToken) => { + this.removeAccessToken(this.generateCredentialKey(accessToken), correlationId); + }); + this.performanceClient.addFields({ multiMatchedAT: accessTokens.length }, correlationId); + return null; + } + this.commonLogger.info("CacheManager:getAccessToken - Returning access token", correlationId); + return accessTokens[0]; + } + /** + * Validate the cache key against filter before retrieving and parsing cache value + * @param key + * @param filter + * @param keyMustContainAllScopes + * @returns + */ + accessTokenKeyMatchesFilter(inputKey, filter, keyMustContainAllScopes) { + const key = inputKey.toLowerCase(); + if (filter.clientId && key.indexOf(filter.clientId.toLowerCase()) === -1) { + return false; + } + if (filter.homeAccountId && key.indexOf(filter.homeAccountId.toLowerCase()) === -1) { + return false; + } + if (filter.realm && key.indexOf(filter.realm.toLowerCase()) === -1) { + return false; + } + if (filter.requestedClaimsHash && key.indexOf(filter.requestedClaimsHash.toLowerCase()) === -1) { + return false; + } + if (filter.target) { + const scopes = filter.target.asArray(); + for (let i = 0; i < scopes.length; i++) { + if (keyMustContainAllScopes && !key.includes(scopes[i].toLowerCase())) { + return false; + } else if (!keyMustContainAllScopes && key.includes(scopes[i].toLowerCase())) { + return true; + } + } + } + return true; + } + /** + * Gets all access tokens matching the filter + * @param filter + * @returns + */ + getAccessTokensByFilter(filter, correlationId) { + const tokenKeys = this.getTokenKeys(); + const accessTokens = []; + tokenKeys.accessToken.forEach((key) => { + if (!this.accessTokenKeyMatchesFilter(key, filter, true)) { + return; + } + const accessToken = this.getAccessTokenCredential(key, correlationId); + if (accessToken && this.credentialMatchesFilter(accessToken, filter)) { + accessTokens.push(accessToken); + } + }); + return accessTokens; + } + /** + * Helper to retrieve the appropriate refresh token from cache + * @param account {AccountInfo} + * @param familyRT {boolean} + * @param correlationId {?string} + * @param tokenKeys {?TokenKeys} + * @param performanceClient {?IPerformanceClient} + */ + getRefreshToken(account, familyRT, correlationId, tokenKeys, performanceClient) { + this.commonLogger.trace("CacheManager - getRefreshToken called"); + const id = familyRT ? THE_FAMILY_ID : void 0; + const refreshTokenFilter = { + homeAccountId: account.homeAccountId, + environment: account.environment, + credentialType: CredentialType.REFRESH_TOKEN, + clientId: this.clientId, + familyId: id + }; + const refreshTokenKeys = tokenKeys && tokenKeys.refreshToken || this.getTokenKeys().refreshToken; + const refreshTokens = []; + refreshTokenKeys.forEach((key) => { + if (this.refreshTokenKeyMatchesFilter(key, refreshTokenFilter)) { + const refreshToken = this.getRefreshTokenCredential(key, correlationId); + if (refreshToken && this.credentialMatchesFilter(refreshToken, refreshTokenFilter)) { + refreshTokens.push(refreshToken); + } + } + }); + const numRefreshTokens = refreshTokens.length; + if (numRefreshTokens < 1) { + this.commonLogger.info("CacheManager:getRefreshToken - No refresh token found."); + return null; + } + if (numRefreshTokens > 1 && performanceClient && correlationId) { + performanceClient.addFields({ multiMatchedRT: numRefreshTokens }, correlationId); + } + this.commonLogger.info("CacheManager:getRefreshToken - returning refresh token"); + return refreshTokens[0]; + } + /** + * Validate the cache key against filter before retrieving and parsing cache value + * @param key + * @param filter + */ + refreshTokenKeyMatchesFilter(inputKey, filter) { + const key = inputKey.toLowerCase(); + if (filter.familyId && key.indexOf(filter.familyId.toLowerCase()) === -1) { + return false; + } + if (!filter.familyId && filter.clientId && key.indexOf(filter.clientId.toLowerCase()) === -1) { + return false; + } + if (filter.homeAccountId && key.indexOf(filter.homeAccountId.toLowerCase()) === -1) { + return false; + } + return true; + } + /** + * Retrieve AppMetadataEntity from cache + */ + readAppMetadataFromCache(environment) { + const appMetadataFilter = { + environment, + clientId: this.clientId + }; + const appMetadata = this.getAppMetadataFilteredBy(appMetadataFilter); + const appMetadataEntries = Object.keys(appMetadata).map((key) => appMetadata[key]); + const numAppMetadata = appMetadataEntries.length; + if (numAppMetadata < 1) { + return null; + } else if (numAppMetadata > 1) { + throw createClientAuthError(multipleMatchingAppMetadata); + } + return appMetadataEntries[0]; + } + /** + * Return the family_id value associated with FOCI + * @param environment + * @param clientId + */ + isAppMetadataFOCI(environment) { + const appMetadata = this.readAppMetadataFromCache(environment); + return !!(appMetadata && appMetadata.familyId === THE_FAMILY_ID); + } + /** + * helper to match account ids + * @param value + * @param homeAccountId + */ + matchHomeAccountId(entity, homeAccountId) { + return !!(typeof entity.homeAccountId === "string" && homeAccountId === entity.homeAccountId); + } + /** + * helper to match account ids + * @param entity + * @param localAccountId + * @returns + */ + matchLocalAccountIdFromTokenClaims(tokenClaims, localAccountId) { + const idTokenLocalAccountId = tokenClaims.oid || tokenClaims.sub; + return localAccountId === idTokenLocalAccountId; + } + matchLocalAccountIdFromTenantProfile(tenantProfile, localAccountId) { + return tenantProfile.localAccountId === localAccountId; + } + /** + * helper to match names + * @param entity + * @param name + * @returns true if the downcased name properties are present and match in the filter and the entity + */ + matchName(claims, name5) { + return !!(name5.toLowerCase() === claims.name?.toLowerCase()); + } + /** + * helper to match usernames + * @param entity + * @param username + * @returns + */ + matchUsername(cachedUsername, filterUsername) { + return !!(cachedUsername && typeof cachedUsername === "string" && filterUsername?.toLowerCase() === cachedUsername.toLowerCase()); + } + /** + * helper to match assertion + * @param value + * @param oboAssertion + */ + matchUserAssertionHash(entity, userAssertionHash) { + return !!(entity.userAssertionHash && userAssertionHash === entity.userAssertionHash); + } + /** + * helper to match environment + * @param value + * @param environment + */ + matchEnvironment(entity, environment) { + if (this.staticAuthorityOptions) { + const staticAliases = getAliasesFromStaticSources(this.staticAuthorityOptions, this.commonLogger); + if (staticAliases.includes(environment) && staticAliases.includes(entity.environment)) { + return true; + } + } + const cloudMetadata = this.getAuthorityMetadataByAlias(environment); + if (cloudMetadata && cloudMetadata.aliases.indexOf(entity.environment) > -1) { + return true; + } + return false; + } + /** + * helper to match credential type + * @param entity + * @param credentialType + */ + matchCredentialType(entity, credentialType) { + return entity.credentialType && credentialType.toLowerCase() === entity.credentialType.toLowerCase(); + } + /** + * helper to match client ids + * @param entity + * @param clientId + */ + matchClientId(entity, clientId) { + return !!(entity.clientId && clientId === entity.clientId); + } + /** + * helper to match family ids + * @param entity + * @param familyId + */ + matchFamilyId(entity, familyId) { + return !!(entity.familyId && familyId === entity.familyId); + } + /** + * helper to match realm + * @param entity + * @param realm + */ + matchRealm(entity, realm) { + return !!(entity.realm?.toLowerCase() === realm.toLowerCase()); + } + /** + * helper to match nativeAccountId + * @param entity + * @param nativeAccountId + * @returns boolean indicating the match result + */ + matchNativeAccountId(entity, nativeAccountId) { + return !!(entity.nativeAccountId && nativeAccountId === entity.nativeAccountId); + } + /** + * helper to match loginHint which can be either: + * 1. login_hint ID token claim + * 2. username in cached account object + * 3. upn in ID token claims + * @param entity + * @param loginHint + * @returns + */ + matchLoginHintFromTokenClaims(tokenClaims, loginHint) { + if (tokenClaims.login_hint === loginHint) { + return true; + } + if (tokenClaims.preferred_username === loginHint) { + return true; + } + if (tokenClaims.upn === loginHint) { + return true; + } + return false; + } + /** + * Helper to match sid + * @param entity + * @param sid + * @returns true if the sid claim is present and matches the filter + */ + matchSid(idTokenClaims, sid) { + return idTokenClaims.sid === sid; + } + matchAuthorityType(entity, authorityType) { + return !!(entity.authorityType && authorityType.toLowerCase() === entity.authorityType.toLowerCase()); + } + /** + * Returns true if the target scopes are a subset of the current entity's scopes, false otherwise. + * @param entity + * @param target + */ + matchTarget(entity, target) { + const isNotAccessTokenCredential = entity.credentialType !== CredentialType.ACCESS_TOKEN && entity.credentialType !== CredentialType.ACCESS_TOKEN_WITH_AUTH_SCHEME; + if (isNotAccessTokenCredential || !entity.target) { + return false; + } + const entityScopeSet = ScopeSet.fromString(entity.target); + return entityScopeSet.containsScopeSet(target); + } + /** + * Returns true if the credential's tokenType or Authentication Scheme matches the one in the request, false otherwise + * @param entity + * @param tokenType + */ + matchTokenType(entity, tokenType) { + return !!(entity.tokenType && entity.tokenType === tokenType); + } + /** + * Returns true if the credential's keyId matches the one in the request, false otherwise + * @param entity + * @param keyId + */ + matchKeyId(entity, keyId) { + return !!(entity.keyId && entity.keyId === keyId); + } + /** + * returns if a given cache entity is of the type appmetadata + * @param key + */ + isAppMetadata(key) { + return key.indexOf(APP_METADATA) !== -1; + } + /** + * returns if a given cache entity is of the type authoritymetadata + * @param key + */ + isAuthorityMetadata(key) { + return key.indexOf(AUTHORITY_METADATA_CONSTANTS.CACHE_KEY) !== -1; + } + /** + * returns cache key used for cloud instance metadata + */ + generateAuthorityMetadataCacheKey(authority) { + return `${AUTHORITY_METADATA_CONSTANTS.CACHE_KEY}-${this.clientId}-${authority}`; + } + /** + * Helper to convert serialized data to object + * @param obj + * @param json + */ + static toObject(obj, json) { + for (const propertyName in json) { + obj[propertyName] = json[propertyName]; + } + return obj; + } +}; +var DefaultStorageClass = class extends CacheManager { + async setAccount() { + throw createClientAuthError(methodNotImplemented); + } + getAccount() { + throw createClientAuthError(methodNotImplemented); + } + async setIdTokenCredential() { + throw createClientAuthError(methodNotImplemented); + } + getIdTokenCredential() { + throw createClientAuthError(methodNotImplemented); + } + async setAccessTokenCredential() { + throw createClientAuthError(methodNotImplemented); + } + getAccessTokenCredential() { + throw createClientAuthError(methodNotImplemented); + } + async setRefreshTokenCredential() { + throw createClientAuthError(methodNotImplemented); + } + getRefreshTokenCredential() { + throw createClientAuthError(methodNotImplemented); + } + setAppMetadata() { + throw createClientAuthError(methodNotImplemented); + } + getAppMetadata() { + throw createClientAuthError(methodNotImplemented); + } + setServerTelemetry() { + throw createClientAuthError(methodNotImplemented); + } + getServerTelemetry() { + throw createClientAuthError(methodNotImplemented); + } + setAuthorityMetadata() { + throw createClientAuthError(methodNotImplemented); + } + getAuthorityMetadata() { + throw createClientAuthError(methodNotImplemented); + } + getAuthorityMetadataKeys() { + throw createClientAuthError(methodNotImplemented); + } + setThrottlingCache() { + throw createClientAuthError(methodNotImplemented); + } + getThrottlingCache() { + throw createClientAuthError(methodNotImplemented); + } + removeItem() { + throw createClientAuthError(methodNotImplemented); + } + getKeys() { + throw createClientAuthError(methodNotImplemented); + } + getAccountKeys() { + throw createClientAuthError(methodNotImplemented); + } + getTokenKeys() { + throw createClientAuthError(methodNotImplemented); + } + generateCredentialKey() { + throw createClientAuthError(methodNotImplemented); + } + generateAccountKey() { + throw createClientAuthError(methodNotImplemented); + } +}; + +// node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/telemetry/performance/PerformanceEvent.mjs +var PerformanceEvents = { + /** + * acquireTokenByCode API (msal-browser and msal-node). + * Used to acquire tokens by trading an authorization code against the token endpoint. + */ + AcquireTokenByCode: "acquireTokenByCode", + /** + * acquireTokenByRefreshToken API (msal-browser and msal-node). + * Used to renew an access token using a refresh token against the token endpoint. + */ + AcquireTokenByRefreshToken: "acquireTokenByRefreshToken", + /** + * acquireTokenSilent API (msal-browser and msal-node). + * Used to silently acquire a new access token (from the cache or the network). + */ + AcquireTokenSilent: "acquireTokenSilent", + /** + * acquireTokenSilentAsync (msal-browser). + * Internal API for acquireTokenSilent. + */ + AcquireTokenSilentAsync: "acquireTokenSilentAsync", + /** + * acquireTokenPopup (msal-browser). + * Used to acquire a new access token interactively through pop ups + */ + AcquireTokenPopup: "acquireTokenPopup", + /** + * acquireTokenPreRedirect (msal-browser). + * First part of the redirect flow. + * Used to acquire a new access token interactively through redirects. + */ + AcquireTokenPreRedirect: "acquireTokenPreRedirect", + /** + * acquireTokenRedirect (msal-browser). + * Second part of the redirect flow. + * Used to acquire a new access token interactively through redirects. + */ + AcquireTokenRedirect: "acquireTokenRedirect", + /** + * getPublicKeyThumbprint API in CryptoOpts class (msal-browser). + * Used to generate a public/private keypair and generate a public key thumbprint for pop requests. + */ + CryptoOptsGetPublicKeyThumbprint: "cryptoOptsGetPublicKeyThumbprint", + /** + * signJwt API in CryptoOpts class (msal-browser). + * Used to signed a pop token. + */ + CryptoOptsSignJwt: "cryptoOptsSignJwt", + /** + * acquireToken API in the SilentCacheClient class (msal-browser). + * Used to read access tokens from the cache. + */ + SilentCacheClientAcquireToken: "silentCacheClientAcquireToken", + /** + * acquireToken API in the SilentIframeClient class (msal-browser). + * Used to acquire a new set of tokens from the authorize endpoint in a hidden iframe. + */ + SilentIframeClientAcquireToken: "silentIframeClientAcquireToken", + AwaitConcurrentIframe: "awaitConcurrentIframe", + /** + * acquireToken API in SilentRereshClient (msal-browser). + * Used to acquire a new set of tokens from the token endpoint using a refresh token. + */ + SilentRefreshClientAcquireToken: "silentRefreshClientAcquireToken", + /** + * ssoSilent API (msal-browser). + * Used to silently acquire an authorization code and set of tokens using a hidden iframe. + */ + SsoSilent: "ssoSilent", + /** + * getDiscoveredAuthority API in StandardInteractionClient class (msal-browser). + * Used to load authority metadata for a request. + */ + StandardInteractionClientGetDiscoveredAuthority: "standardInteractionClientGetDiscoveredAuthority", + /** + * acquireToken APIs in msal-browser. + * Used to make an /authorize endpoint call with native brokering enabled. + */ + FetchAccountIdWithNativeBroker: "fetchAccountIdWithNativeBroker", + /** + * acquireToken API in NativeInteractionClient class (msal-browser). + * Used to acquire a token from Native component when native brokering is enabled. + */ + NativeInteractionClientAcquireToken: "nativeInteractionClientAcquireToken", + /** + * Time spent creating default headers for requests to token endpoint + */ + BaseClientCreateTokenRequestHeaders: "baseClientCreateTokenRequestHeaders", + /** + * Time spent sending/waiting for the response of a request to the token endpoint + */ + NetworkClientSendPostRequestAsync: "networkClientSendPostRequestAsync", + RefreshTokenClientExecutePostToTokenEndpoint: "refreshTokenClientExecutePostToTokenEndpoint", + AuthorizationCodeClientExecutePostToTokenEndpoint: "authorizationCodeClientExecutePostToTokenEndpoint", + /** + * Used to measure the time taken for completing embedded-broker handshake (PW-Broker). + */ + BrokerHandhshake: "brokerHandshake", + /** + * acquireTokenByRefreshToken API in BrokerClientApplication (PW-Broker) . + */ + AcquireTokenByRefreshTokenInBroker: "acquireTokenByRefreshTokenInBroker", + /** + * Time taken for token acquisition by broker + */ + AcquireTokenByBroker: "acquireTokenByBroker", + /** + * Time spent on the network for refresh token acquisition + */ + RefreshTokenClientExecuteTokenRequest: "refreshTokenClientExecuteTokenRequest", + /** + * Time taken for acquiring refresh token , records RT size + */ + RefreshTokenClientAcquireToken: "refreshTokenClientAcquireToken", + /** + * Time taken for acquiring cached refresh token + */ + RefreshTokenClientAcquireTokenWithCachedRefreshToken: "refreshTokenClientAcquireTokenWithCachedRefreshToken", + /** + * acquireTokenByRefreshToken API in RefreshTokenClient (msal-common). + */ + RefreshTokenClientAcquireTokenByRefreshToken: "refreshTokenClientAcquireTokenByRefreshToken", + /** + * Helper function to create token request body in RefreshTokenClient (msal-common). + */ + RefreshTokenClientCreateTokenRequestBody: "refreshTokenClientCreateTokenRequestBody", + /** + * acquireTokenFromCache (msal-browser). + * Internal API for acquiring token from cache + */ + AcquireTokenFromCache: "acquireTokenFromCache", + SilentFlowClientAcquireCachedToken: "silentFlowClientAcquireCachedToken", + SilentFlowClientGenerateResultFromCacheRecord: "silentFlowClientGenerateResultFromCacheRecord", + /** + * acquireTokenBySilentIframe (msal-browser). + * Internal API for acquiring token by silent Iframe + */ + AcquireTokenBySilentIframe: "acquireTokenBySilentIframe", + /** + * Internal API for initializing base request in BaseInteractionClient (msal-browser) + */ + InitializeBaseRequest: "initializeBaseRequest", + /** + * Internal API for initializing silent request in SilentCacheClient (msal-browser) + */ + InitializeSilentRequest: "initializeSilentRequest", + InitializeClientApplication: "initializeClientApplication", + InitializeCache: "initializeCache", + /** + * Helper function in SilentIframeClient class (msal-browser). + */ + SilentIframeClientTokenHelper: "silentIframeClientTokenHelper", + /** + * SilentHandler + */ + SilentHandlerInitiateAuthRequest: "silentHandlerInitiateAuthRequest", + SilentHandlerMonitorIframeForHash: "silentHandlerMonitorIframeForHash", + SilentHandlerLoadFrame: "silentHandlerLoadFrame", + SilentHandlerLoadFrameSync: "silentHandlerLoadFrameSync", + /** + * Helper functions in StandardInteractionClient class (msal-browser) + */ + StandardInteractionClientCreateAuthCodeClient: "standardInteractionClientCreateAuthCodeClient", + StandardInteractionClientGetClientConfiguration: "standardInteractionClientGetClientConfiguration", + StandardInteractionClientInitializeAuthorizationRequest: "standardInteractionClientInitializeAuthorizationRequest", + /** + * getAuthCodeUrl API (msal-browser and msal-node). + */ + GetAuthCodeUrl: "getAuthCodeUrl", + GetStandardParams: "getStandardParams", + /** + * Functions from InteractionHandler (msal-browser) + */ + HandleCodeResponseFromServer: "handleCodeResponseFromServer", + HandleCodeResponse: "handleCodeResponse", + HandleResponseEar: "handleResponseEar", + HandleResponsePlatformBroker: "handleResponsePlatformBroker", + HandleResponseCode: "handleResponseCode", + UpdateTokenEndpointAuthority: "updateTokenEndpointAuthority", + /** + * APIs in Authorization Code Client (msal-common) + */ + AuthClientAcquireToken: "authClientAcquireToken", + AuthClientExecuteTokenRequest: "authClientExecuteTokenRequest", + AuthClientCreateTokenRequestBody: "authClientCreateTokenRequestBody", + /** + * Generate functions in PopTokenGenerator (msal-common) + */ + PopTokenGenerateCnf: "popTokenGenerateCnf", + PopTokenGenerateKid: "popTokenGenerateKid", + /** + * handleServerTokenResponse API in ResponseHandler (msal-common) + */ + HandleServerTokenResponse: "handleServerTokenResponse", + DeserializeResponse: "deserializeResponse", + /** + * Authority functions + */ + AuthorityFactoryCreateDiscoveredInstance: "authorityFactoryCreateDiscoveredInstance", + AuthorityResolveEndpointsAsync: "authorityResolveEndpointsAsync", + AuthorityResolveEndpointsFromLocalSources: "authorityResolveEndpointsFromLocalSources", + AuthorityGetCloudDiscoveryMetadataFromNetwork: "authorityGetCloudDiscoveryMetadataFromNetwork", + AuthorityUpdateCloudDiscoveryMetadata: "authorityUpdateCloudDiscoveryMetadata", + AuthorityGetEndpointMetadataFromNetwork: "authorityGetEndpointMetadataFromNetwork", + AuthorityUpdateEndpointMetadata: "authorityUpdateEndpointMetadata", + AuthorityUpdateMetadataWithRegionalInformation: "authorityUpdateMetadataWithRegionalInformation", + /** + * Region Discovery functions + */ + RegionDiscoveryDetectRegion: "regionDiscoveryDetectRegion", + RegionDiscoveryGetRegionFromIMDS: "regionDiscoveryGetRegionFromIMDS", + RegionDiscoveryGetCurrentVersion: "regionDiscoveryGetCurrentVersion", + AcquireTokenByCodeAsync: "acquireTokenByCodeAsync", + GetEndpointMetadataFromNetwork: "getEndpointMetadataFromNetwork", + GetCloudDiscoveryMetadataFromNetworkMeasurement: "getCloudDiscoveryMetadataFromNetworkMeasurement", + HandleRedirectPromiseMeasurement: "handleRedirectPromise", + HandleNativeRedirectPromiseMeasurement: "handleNativeRedirectPromise", + UpdateCloudDiscoveryMetadataMeasurement: "updateCloudDiscoveryMetadataMeasurement", + UsernamePasswordClientAcquireToken: "usernamePasswordClientAcquireToken", + NativeMessageHandlerHandshake: "nativeMessageHandlerHandshake", + NativeGenerateAuthResult: "nativeGenerateAuthResult", + RemoveHiddenIframe: "removeHiddenIframe", + /** + * Cache operations + */ + ClearTokensAndKeysWithClaims: "clearTokensAndKeysWithClaims", + CacheManagerGetRefreshToken: "cacheManagerGetRefreshToken", + ImportExistingCache: "importExistingCache", + SetUserData: "setUserData", + LocalStorageUpdated: "localStorageUpdated", + /** + * Crypto Operations + */ + GeneratePkceCodes: "generatePkceCodes", + GenerateCodeVerifier: "generateCodeVerifier", + GenerateCodeChallengeFromVerifier: "generateCodeChallengeFromVerifier", + Sha256Digest: "sha256Digest", + GetRandomValues: "getRandomValues", + GenerateHKDF: "generateHKDF", + GenerateBaseKey: "generateBaseKey", + Base64Decode: "base64Decode", + UrlEncodeArr: "urlEncodeArr", + Encrypt: "encrypt", + Decrypt: "decrypt", + GenerateEarKey: "generateEarKey", + DecryptEarResponse: "decryptEarResponse", + LoadExternalTokens: "LoadExternalTokens", + LoadAccount: "loadAccount", + LoadIdToken: "loadIdToken", + LoadAccessToken: "loadAccessToken", + LoadRefreshToken: "loadRefreshToken", + /** + * SSO capability verification call (msal-browser). + * Fire-and-forget SSO verification call made after interactive authentication completes. + */ + SsoCapable: "ssoCapable" +}; +var PerformanceEventAbbreviations = /* @__PURE__ */ new Map([ + [PerformanceEvents.AcquireTokenByCode, "ATByCode"], + [PerformanceEvents.AcquireTokenByRefreshToken, "ATByRT"], + [PerformanceEvents.AcquireTokenSilent, "ATS"], + [PerformanceEvents.AcquireTokenSilentAsync, "ATSAsync"], + [PerformanceEvents.AcquireTokenPopup, "ATPopup"], + [PerformanceEvents.AcquireTokenRedirect, "ATRedirect"], + [ + PerformanceEvents.CryptoOptsGetPublicKeyThumbprint, + "CryptoGetPKThumb" + ], + [PerformanceEvents.CryptoOptsSignJwt, "CryptoSignJwt"], + [PerformanceEvents.SilentCacheClientAcquireToken, "SltCacheClientAT"], + [PerformanceEvents.SilentIframeClientAcquireToken, "SltIframeClientAT"], + [PerformanceEvents.SilentRefreshClientAcquireToken, "SltRClientAT"], + [PerformanceEvents.SsoSilent, "SsoSlt"], + [ + PerformanceEvents.StandardInteractionClientGetDiscoveredAuthority, + "StdIntClientGetDiscAuth" + ], + [ + PerformanceEvents.FetchAccountIdWithNativeBroker, + "FetchAccIdWithNtvBroker" + ], + [ + PerformanceEvents.NativeInteractionClientAcquireToken, + "NtvIntClientAT" + ], + [ + PerformanceEvents.BaseClientCreateTokenRequestHeaders, + "BaseClientCreateTReqHead" + ], + [ + PerformanceEvents.NetworkClientSendPostRequestAsync, + "NetClientSendPost" + ], + [ + PerformanceEvents.RefreshTokenClientExecutePostToTokenEndpoint, + "RTClientExecPost" + ], + [ + PerformanceEvents.AuthorizationCodeClientExecutePostToTokenEndpoint, + "AuthCodeClientExecPost" + ], + [PerformanceEvents.BrokerHandhshake, "BrokerHandshake"], + [ + PerformanceEvents.AcquireTokenByRefreshTokenInBroker, + "ATByRTInBroker" + ], + [PerformanceEvents.AcquireTokenByBroker, "ATByBroker"], + [ + PerformanceEvents.RefreshTokenClientExecuteTokenRequest, + "RTClientExecTReq" + ], + [PerformanceEvents.RefreshTokenClientAcquireToken, "RTClientAT"], + [ + PerformanceEvents.RefreshTokenClientAcquireTokenWithCachedRefreshToken, + "RTClientATWithCachedRT" + ], + [ + PerformanceEvents.RefreshTokenClientAcquireTokenByRefreshToken, + "RTClientATByRT" + ], + [ + PerformanceEvents.RefreshTokenClientCreateTokenRequestBody, + "RTClientCreateTReqBody" + ], + [PerformanceEvents.AcquireTokenFromCache, "ATFromCache"], + [ + PerformanceEvents.SilentFlowClientAcquireCachedToken, + "SltFlowClientATCached" + ], + [ + PerformanceEvents.SilentFlowClientGenerateResultFromCacheRecord, + "SltFlowClientGenResFromCache" + ], + [PerformanceEvents.AcquireTokenBySilentIframe, "ATBySltIframe"], + [PerformanceEvents.InitializeBaseRequest, "InitBaseReq"], + [PerformanceEvents.InitializeSilentRequest, "InitSltReq"], + [ + PerformanceEvents.InitializeClientApplication, + "InitClientApplication" + ], + [PerformanceEvents.InitializeCache, "InitCache"], + [PerformanceEvents.ImportExistingCache, "importCache"], + [PerformanceEvents.SetUserData, "setUserData"], + [PerformanceEvents.LocalStorageUpdated, "localStorageUpdated"], + [PerformanceEvents.SilentIframeClientTokenHelper, "SIClientTHelper"], + [ + PerformanceEvents.SilentHandlerInitiateAuthRequest, + "SHandlerInitAuthReq" + ], + [ + PerformanceEvents.SilentHandlerMonitorIframeForHash, + "SltHandlerMonitorIframeForHash" + ], + [PerformanceEvents.SilentHandlerLoadFrame, "SHandlerLoadFrame"], + [PerformanceEvents.SilentHandlerLoadFrameSync, "SHandlerLoadFrameSync"], + [ + PerformanceEvents.StandardInteractionClientCreateAuthCodeClient, + "StdIntClientCreateAuthCodeClient" + ], + [ + PerformanceEvents.StandardInteractionClientGetClientConfiguration, + "StdIntClientGetClientConf" + ], + [ + PerformanceEvents.StandardInteractionClientInitializeAuthorizationRequest, + "StdIntClientInitAuthReq" + ], + [PerformanceEvents.GetAuthCodeUrl, "GetAuthCodeUrl"], + [ + PerformanceEvents.HandleCodeResponseFromServer, + "HandleCodeResFromServer" + ], + [PerformanceEvents.HandleCodeResponse, "HandleCodeResp"], + [PerformanceEvents.HandleResponseEar, "HandleRespEar"], + [PerformanceEvents.HandleResponseCode, "HandleRespCode"], + [ + PerformanceEvents.HandleResponsePlatformBroker, + "HandleRespPlatBroker" + ], + [PerformanceEvents.UpdateTokenEndpointAuthority, "UpdTEndpointAuth"], + [PerformanceEvents.AuthClientAcquireToken, "AuthClientAT"], + [PerformanceEvents.AuthClientExecuteTokenRequest, "AuthClientExecTReq"], + [ + PerformanceEvents.AuthClientCreateTokenRequestBody, + "AuthClientCreateTReqBody" + ], + [PerformanceEvents.PopTokenGenerateCnf, "PopTGenCnf"], + [PerformanceEvents.PopTokenGenerateKid, "PopTGenKid"], + [PerformanceEvents.HandleServerTokenResponse, "HandleServerTRes"], + [PerformanceEvents.DeserializeResponse, "DeserializeRes"], + [ + PerformanceEvents.AuthorityFactoryCreateDiscoveredInstance, + "AuthFactCreateDiscInst" + ], + [ + PerformanceEvents.AuthorityResolveEndpointsAsync, + "AuthResolveEndpointsAsync" + ], + [ + PerformanceEvents.AuthorityResolveEndpointsFromLocalSources, + "AuthResolveEndpointsFromLocal" + ], + [ + PerformanceEvents.AuthorityGetCloudDiscoveryMetadataFromNetwork, + "AuthGetCDMetaFromNet" + ], + [ + PerformanceEvents.AuthorityUpdateCloudDiscoveryMetadata, + "AuthUpdCDMeta" + ], + [ + PerformanceEvents.AuthorityGetEndpointMetadataFromNetwork, + "AuthUpdCDMetaFromNet" + ], + [ + PerformanceEvents.AuthorityUpdateEndpointMetadata, + "AuthUpdEndpointMeta" + ], + [ + PerformanceEvents.AuthorityUpdateMetadataWithRegionalInformation, + "AuthUpdMetaWithRegInfo" + ], + [PerformanceEvents.RegionDiscoveryDetectRegion, "RegDiscDetectReg"], + [ + PerformanceEvents.RegionDiscoveryGetRegionFromIMDS, + "RegDiscGetRegFromIMDS" + ], + [ + PerformanceEvents.RegionDiscoveryGetCurrentVersion, + "RegDiscGetCurrentVer" + ], + [PerformanceEvents.AcquireTokenByCodeAsync, "ATByCodeAsync"], + [ + PerformanceEvents.GetEndpointMetadataFromNetwork, + "GetEndpointMetaFromNet" + ], + [ + PerformanceEvents.GetCloudDiscoveryMetadataFromNetworkMeasurement, + "GetCDMetaFromNet" + ], + [ + PerformanceEvents.HandleRedirectPromiseMeasurement, + "HandleRedirectPromise" + ], + [ + PerformanceEvents.HandleNativeRedirectPromiseMeasurement, + "HandleNtvRedirectPromise" + ], + [ + PerformanceEvents.UpdateCloudDiscoveryMetadataMeasurement, + "UpdateCDMeta" + ], + [ + PerformanceEvents.UsernamePasswordClientAcquireToken, + "UserPassClientAT" + ], + [ + PerformanceEvents.NativeMessageHandlerHandshake, + "NtvMsgHandlerHandshake" + ], + [PerformanceEvents.NativeGenerateAuthResult, "NtvGenAuthRes"], + [PerformanceEvents.RemoveHiddenIframe, "RemoveHiddenIframe"], + [ + PerformanceEvents.ClearTokensAndKeysWithClaims, + "ClearTAndKeysWithClaims" + ], + [PerformanceEvents.CacheManagerGetRefreshToken, "CacheManagerGetRT"], + [PerformanceEvents.GeneratePkceCodes, "GenPkceCodes"], + [PerformanceEvents.GenerateCodeVerifier, "GenCodeVerifier"], + [ + PerformanceEvents.GenerateCodeChallengeFromVerifier, + "GenCodeChallengeFromVerifier" + ], + [PerformanceEvents.Sha256Digest, "Sha256Digest"], + [PerformanceEvents.GetRandomValues, "GetRandomValues"], + [PerformanceEvents.GenerateHKDF, "genHKDF"], + [PerformanceEvents.GenerateBaseKey, "genBaseKey"], + [PerformanceEvents.Base64Decode, "b64Decode"], + [PerformanceEvents.UrlEncodeArr, "urlEncArr"], + [PerformanceEvents.Encrypt, "encrypt"], + [PerformanceEvents.Decrypt, "decrypt"], + [PerformanceEvents.GenerateEarKey, "genEarKey"], + [PerformanceEvents.DecryptEarResponse, "decryptEarResp"], + [PerformanceEvents.SsoCapable, "SsoCapable"] +]); +var PerformanceEventStatus = { + NotStarted: 0, + InProgress: 1, + Completed: 2 +}; + +// node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/telemetry/performance/StubPerformanceClient.mjs +var StubPerformanceMeasurement = class { + startMeasurement() { + return; + } + endMeasurement() { + return; + } + flushMeasurement() { + return null; + } +}; +var StubPerformanceClient = class { + generateId() { + return "callback-id"; + } + startMeasurement(measureName, correlationId) { + return { + end: () => null, + discard: () => { + }, + add: () => { + }, + increment: () => { + }, + event: { + eventId: this.generateId(), + status: PerformanceEventStatus.InProgress, + authority: "", + libraryName: "", + libraryVersion: "", + clientId: "", + name: measureName, + startTimeMs: Date.now(), + correlationId: correlationId || "" + }, + measurement: new StubPerformanceMeasurement() + }; + } + startPerformanceMeasurement() { + return new StubPerformanceMeasurement(); + } + calculateQueuedTime() { + return 0; + } + addQueueMeasurement() { + return; + } + setPreQueueTime() { + return; + } + endMeasurement() { + return null; + } + discardMeasurements() { + return; + } + removePerformanceCallback() { + return true; + } + addPerformanceCallback() { + return ""; + } + emitEvents() { + return; + } + addFields() { + return; + } + incrementFields() { + return; + } + cacheEventByCorrelationId() { + return; + } +}; + +// node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/config/ClientConfiguration.mjs +var DEFAULT_SYSTEM_OPTIONS = { + tokenRenewalOffsetSeconds: DEFAULT_TOKEN_RENEWAL_OFFSET_SEC, + preventCorsPreflight: false +}; +var DEFAULT_LOGGER_IMPLEMENTATION = { + loggerCallback: () => { + }, + piiLoggingEnabled: false, + logLevel: LogLevel.Info, + correlationId: Constants.EMPTY_STRING +}; +var DEFAULT_CACHE_OPTIONS = { + claimsBasedCachingEnabled: false +}; +var DEFAULT_NETWORK_IMPLEMENTATION = { + async sendGetRequestAsync() { + throw createClientAuthError(methodNotImplemented); + }, + async sendPostRequestAsync() { + throw createClientAuthError(methodNotImplemented); + } +}; +var DEFAULT_LIBRARY_INFO = { + sku: Constants.SKU, + version: version2, + cpu: Constants.EMPTY_STRING, + os: Constants.EMPTY_STRING +}; +var DEFAULT_CLIENT_CREDENTIALS = { + clientSecret: Constants.EMPTY_STRING, + clientAssertion: void 0 +}; +var DEFAULT_AZURE_CLOUD_OPTIONS = { + azureCloudInstance: AzureCloudInstance.None, + tenant: `${Constants.DEFAULT_COMMON_TENANT}` +}; +var DEFAULT_TELEMETRY_OPTIONS = { + application: { + appName: "", + appVersion: "" + } +}; +function buildClientConfiguration({ authOptions: userAuthOptions, systemOptions: userSystemOptions, loggerOptions: userLoggerOption, cacheOptions: userCacheOptions, storageInterface: storageImplementation, networkInterface: networkImplementation, cryptoInterface: cryptoImplementation, clientCredentials, libraryInfo, telemetry, serverTelemetryManager, persistencePlugin, serializableCache }) { + const loggerOptions = { + ...DEFAULT_LOGGER_IMPLEMENTATION, + ...userLoggerOption + }; + return { + authOptions: buildAuthOptions(userAuthOptions), + systemOptions: { ...DEFAULT_SYSTEM_OPTIONS, ...userSystemOptions }, + loggerOptions, + cacheOptions: { ...DEFAULT_CACHE_OPTIONS, ...userCacheOptions }, + storageInterface: storageImplementation || new DefaultStorageClass(userAuthOptions.clientId, DEFAULT_CRYPTO_IMPLEMENTATION, new Logger(loggerOptions), new StubPerformanceClient()), + networkInterface: networkImplementation || DEFAULT_NETWORK_IMPLEMENTATION, + cryptoInterface: cryptoImplementation || DEFAULT_CRYPTO_IMPLEMENTATION, + clientCredentials: clientCredentials || DEFAULT_CLIENT_CREDENTIALS, + libraryInfo: { ...DEFAULT_LIBRARY_INFO, ...libraryInfo }, + telemetry: { ...DEFAULT_TELEMETRY_OPTIONS, ...telemetry }, + serverTelemetryManager: serverTelemetryManager || null, + persistencePlugin: persistencePlugin || null, + serializableCache: serializableCache || null + }; +} +function buildAuthOptions(authOptions) { + return { + clientCapabilities: [], + azureCloudOptions: DEFAULT_AZURE_CLOUD_OPTIONS, + skipAuthorityMetadataCache: false, + instanceAware: false, + encodeExtraQueryParams: false, + ...authOptions + }; +} +function isOidcProtocolMode(config2) { + return config2.authOptions.authority.options.protocolMode === ProtocolMode.OIDC; +} + +// node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/account/CcsCredential.mjs +var CcsCredentialType = { + HOME_ACCOUNT_ID: "home_account_id", + UPN: "UPN" +}; + +// node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/request/RequestParameterBuilder.mjs +var RequestParameterBuilder_exports = {}; +__export(RequestParameterBuilder_exports, { + addApplicationTelemetry: () => addApplicationTelemetry, + addAuthorizationCode: () => addAuthorizationCode, + addBrokerParameters: () => addBrokerParameters, + addCcsOid: () => addCcsOid, + addCcsUpn: () => addCcsUpn, + addClaims: () => addClaims, + addCliData: () => addCliData, + addClientAssertion: () => addClientAssertion, + addClientAssertionType: () => addClientAssertionType, + addClientCapabilitiesToClaims: () => addClientCapabilitiesToClaims, + addClientId: () => addClientId, + addClientInfo: () => addClientInfo, + addClientSecret: () => addClientSecret, + addCodeChallengeParams: () => addCodeChallengeParams, + addCodeVerifier: () => addCodeVerifier, + addCorrelationId: () => addCorrelationId, + addDeviceCode: () => addDeviceCode, + addDomainHint: () => addDomainHint, + addEARParameters: () => addEARParameters, + addExtraQueryParameters: () => addExtraQueryParameters, + addGrantType: () => addGrantType, + addIdTokenHint: () => addIdTokenHint, + addInstanceAware: () => addInstanceAware, + addLibraryInfo: () => addLibraryInfo, + addLoginHint: () => addLoginHint, + addLogoutHint: () => addLogoutHint, + addNativeBroker: () => addNativeBroker, + addNonce: () => addNonce, + addOboAssertion: () => addOboAssertion, + addPassword: () => addPassword, + addPopToken: () => addPopToken, + addPostBodyParameters: () => addPostBodyParameters, + addPostLogoutRedirectUri: () => addPostLogoutRedirectUri, + addPrompt: () => addPrompt, + addRedirectUri: () => addRedirectUri, + addRefreshToken: () => addRefreshToken, + addRequestTokenUse: () => addRequestTokenUse, + addResponseMode: () => addResponseMode, + addResponseType: () => addResponseType, + addScopes: () => addScopes, + addServerTelemetry: () => addServerTelemetry, + addSid: () => addSid, + addSshJwk: () => addSshJwk, + addState: () => addState, + addThrottling: () => addThrottling, + addUsername: () => addUsername, + instrumentBrokerParams: () => instrumentBrokerParams +}); + +// node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/constants/AADServerParamKeys.mjs +var AADServerParamKeys_exports = {}; +__export(AADServerParamKeys_exports, { + ACCESS_TOKEN: () => ACCESS_TOKEN, + BROKER_CLIENT_ID: () => BROKER_CLIENT_ID, + BROKER_REDIRECT_URI: () => BROKER_REDIRECT_URI, + CCS_HEADER: () => CCS_HEADER, + CLAIMS: () => CLAIMS, + CLIENT_ASSERTION: () => CLIENT_ASSERTION, + CLIENT_ASSERTION_TYPE: () => CLIENT_ASSERTION_TYPE, + CLIENT_ID: () => CLIENT_ID, + CLIENT_INFO: () => CLIENT_INFO2, + CLIENT_REQUEST_ID: () => CLIENT_REQUEST_ID, + CLIENT_SECRET: () => CLIENT_SECRET, + CLI_DATA: () => CLI_DATA, + CODE: () => CODE, + CODE_CHALLENGE: () => CODE_CHALLENGE, + CODE_CHALLENGE_METHOD: () => CODE_CHALLENGE_METHOD, + CODE_VERIFIER: () => CODE_VERIFIER, + DEVICE_CODE: () => DEVICE_CODE, + DOMAIN_HINT: () => DOMAIN_HINT, + EAR_JWE_CRYPTO: () => EAR_JWE_CRYPTO, + EAR_JWK: () => EAR_JWK, + ERROR: () => ERROR, + ERROR_DESCRIPTION: () => ERROR_DESCRIPTION, + EXPIRES_IN: () => EXPIRES_IN, + FOCI: () => FOCI, + GRANT_TYPE: () => GRANT_TYPE, + ID_TOKEN: () => ID_TOKEN, + ID_TOKEN_HINT: () => ID_TOKEN_HINT, + INSTANCE_AWARE: () => INSTANCE_AWARE, + LOGIN_HINT: () => LOGIN_HINT, + LOGOUT_HINT: () => LOGOUT_HINT, + NATIVE_BROKER: () => NATIVE_BROKER, + NONCE: () => NONCE, + OBO_ASSERTION: () => OBO_ASSERTION, + ON_BEHALF_OF: () => ON_BEHALF_OF, + POST_LOGOUT_URI: () => POST_LOGOUT_URI, + PROMPT: () => PROMPT, + REDIRECT_URI: () => REDIRECT_URI, + REFRESH_TOKEN: () => REFRESH_TOKEN, + REFRESH_TOKEN_EXPIRES_IN: () => REFRESH_TOKEN_EXPIRES_IN, + REQUESTED_TOKEN_USE: () => REQUESTED_TOKEN_USE, + REQ_CNF: () => REQ_CNF, + RESPONSE_MODE: () => RESPONSE_MODE, + RESPONSE_TYPE: () => RESPONSE_TYPE, + RETURN_SPA_CODE: () => RETURN_SPA_CODE, + SCOPE: () => SCOPE, + SESSION_STATE: () => SESSION_STATE, + SID: () => SID, + STATE: () => STATE, + TOKEN_TYPE: () => TOKEN_TYPE, + X_APP_NAME: () => X_APP_NAME, + X_APP_VER: () => X_APP_VER, + X_CLIENT_CPU: () => X_CLIENT_CPU, + X_CLIENT_CURR_TELEM: () => X_CLIENT_CURR_TELEM, + X_CLIENT_EXTRA_SKU: () => X_CLIENT_EXTRA_SKU, + X_CLIENT_LAST_TELEM: () => X_CLIENT_LAST_TELEM, + X_CLIENT_OS: () => X_CLIENT_OS, + X_CLIENT_SKU: () => X_CLIENT_SKU, + X_CLIENT_VER: () => X_CLIENT_VER, + X_MS_LIB_CAPABILITY: () => X_MS_LIB_CAPABILITY +}); +var CLIENT_ID = "client_id"; +var REDIRECT_URI = "redirect_uri"; +var RESPONSE_TYPE = "response_type"; +var RESPONSE_MODE = "response_mode"; +var GRANT_TYPE = "grant_type"; +var CLAIMS = "claims"; +var SCOPE = "scope"; +var ERROR = "error"; +var ERROR_DESCRIPTION = "error_description"; +var ACCESS_TOKEN = "access_token"; +var ID_TOKEN = "id_token"; +var REFRESH_TOKEN = "refresh_token"; +var EXPIRES_IN = "expires_in"; +var REFRESH_TOKEN_EXPIRES_IN = "refresh_token_expires_in"; +var STATE = "state"; +var NONCE = "nonce"; +var PROMPT = "prompt"; +var SESSION_STATE = "session_state"; +var CLIENT_INFO2 = "client_info"; +var CODE = "code"; +var CODE_CHALLENGE = "code_challenge"; +var CODE_CHALLENGE_METHOD = "code_challenge_method"; +var CODE_VERIFIER = "code_verifier"; +var CLIENT_REQUEST_ID = "client-request-id"; +var X_CLIENT_SKU = "x-client-SKU"; +var X_CLIENT_VER = "x-client-VER"; +var X_CLIENT_OS = "x-client-OS"; +var X_CLIENT_CPU = "x-client-CPU"; +var X_CLIENT_CURR_TELEM = "x-client-current-telemetry"; +var X_CLIENT_LAST_TELEM = "x-client-last-telemetry"; +var X_MS_LIB_CAPABILITY = "x-ms-lib-capability"; +var X_APP_NAME = "x-app-name"; +var X_APP_VER = "x-app-ver"; +var POST_LOGOUT_URI = "post_logout_redirect_uri"; +var ID_TOKEN_HINT = "id_token_hint"; +var DEVICE_CODE = "device_code"; +var CLIENT_SECRET = "client_secret"; +var CLIENT_ASSERTION = "client_assertion"; +var CLIENT_ASSERTION_TYPE = "client_assertion_type"; +var TOKEN_TYPE = "token_type"; +var REQ_CNF = "req_cnf"; +var OBO_ASSERTION = "assertion"; +var REQUESTED_TOKEN_USE = "requested_token_use"; +var ON_BEHALF_OF = "on_behalf_of"; +var FOCI = "foci"; +var CCS_HEADER = "X-AnchorMailbox"; +var RETURN_SPA_CODE = "return_spa_code"; +var NATIVE_BROKER = "nativebroker"; +var LOGOUT_HINT = "logout_hint"; +var SID = "sid"; +var LOGIN_HINT = "login_hint"; +var DOMAIN_HINT = "domain_hint"; +var X_CLIENT_EXTRA_SKU = "x-client-xtra-sku"; +var BROKER_CLIENT_ID = "brk_client_id"; +var BROKER_REDIRECT_URI = "brk_redirect_uri"; +var INSTANCE_AWARE = "instance_aware"; +var EAR_JWK = "ear_jwk"; +var EAR_JWE_CRYPTO = "ear_jwe_crypto"; +var CLI_DATA = "clidata"; + +// node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/request/RequestParameterBuilder.mjs +function instrumentBrokerParams(parameters, correlationId, performanceClient) { + if (!correlationId) { + return; + } + const clientId = parameters.get(CLIENT_ID); + if (clientId && parameters.has(BROKER_CLIENT_ID)) { + performanceClient?.addFields({ + embeddedClientId: clientId, + embeddedRedirectUri: parameters.get(REDIRECT_URI) + }, correlationId); + } +} +function addResponseType(parameters, responseType) { + parameters.set(RESPONSE_TYPE, responseType); +} +function addResponseMode(parameters, responseMode) { + parameters.set(RESPONSE_MODE, responseMode ? responseMode : ResponseMode.QUERY); +} +function addNativeBroker(parameters) { + parameters.set(NATIVE_BROKER, "1"); +} +function addScopes(parameters, scopes, addOidcScopes = true, defaultScopes = OIDC_DEFAULT_SCOPES) { + if (addOidcScopes && !defaultScopes.includes("openid") && !scopes.includes("openid")) { + defaultScopes.push("openid"); + } + const requestScopes = addOidcScopes ? [...scopes || [], ...defaultScopes] : scopes || []; + const scopeSet = new ScopeSet(requestScopes); + parameters.set(SCOPE, scopeSet.printScopes()); +} +function addClientId(parameters, clientId) { + parameters.set(CLIENT_ID, clientId); +} +function addRedirectUri(parameters, redirectUri) { + parameters.set(REDIRECT_URI, redirectUri); +} +function addPostLogoutRedirectUri(parameters, redirectUri) { + parameters.set(POST_LOGOUT_URI, redirectUri); +} +function addIdTokenHint(parameters, idTokenHint) { + parameters.set(ID_TOKEN_HINT, idTokenHint); +} +function addDomainHint(parameters, domainHint) { + parameters.set(DOMAIN_HINT, domainHint); +} +function addLoginHint(parameters, loginHint) { + parameters.set(LOGIN_HINT, loginHint); +} +function addCcsUpn(parameters, loginHint) { + parameters.set(HeaderNames.CCS_HEADER, `UPN:${loginHint}`); +} +function addCcsOid(parameters, clientInfo) { + parameters.set(HeaderNames.CCS_HEADER, `Oid:${clientInfo.uid}@${clientInfo.utid}`); +} +function addSid(parameters, sid) { + parameters.set(SID, sid); +} +function addClaims(parameters, claims, clientCapabilities) { + const mergedClaims = addClientCapabilitiesToClaims(claims, clientCapabilities); + try { + JSON.parse(mergedClaims); + } catch (e) { + throw createClientConfigurationError(invalidClaims); + } + parameters.set(CLAIMS, mergedClaims); +} +function addCorrelationId(parameters, correlationId) { + parameters.set(CLIENT_REQUEST_ID, correlationId); +} +function addLibraryInfo(parameters, libraryInfo) { + parameters.set(X_CLIENT_SKU, libraryInfo.sku); + parameters.set(X_CLIENT_VER, libraryInfo.version); + if (libraryInfo.os) { + parameters.set(X_CLIENT_OS, libraryInfo.os); + } + if (libraryInfo.cpu) { + parameters.set(X_CLIENT_CPU, libraryInfo.cpu); + } +} +function addApplicationTelemetry(parameters, appTelemetry) { + if (appTelemetry?.appName) { + parameters.set(X_APP_NAME, appTelemetry.appName); + } + if (appTelemetry?.appVersion) { + parameters.set(X_APP_VER, appTelemetry.appVersion); + } +} +function addPrompt(parameters, prompt) { + parameters.set(PROMPT, prompt); +} +function addState(parameters, state3) { + if (state3) { + parameters.set(STATE, state3); + } +} +function addNonce(parameters, nonce) { + parameters.set(NONCE, nonce); +} +function addCodeChallengeParams(parameters, codeChallenge, codeChallengeMethod) { + if (codeChallenge && codeChallengeMethod) { + parameters.set(CODE_CHALLENGE, codeChallenge); + parameters.set(CODE_CHALLENGE_METHOD, codeChallengeMethod); + } else { + throw createClientConfigurationError(pkceParamsMissing); + } +} +function addAuthorizationCode(parameters, code) { + parameters.set(CODE, code); +} +function addDeviceCode(parameters, code) { + parameters.set(DEVICE_CODE, code); +} +function addRefreshToken(parameters, refreshToken) { + parameters.set(REFRESH_TOKEN, refreshToken); +} +function addCodeVerifier(parameters, codeVerifier) { + parameters.set(CODE_VERIFIER, codeVerifier); +} +function addClientSecret(parameters, clientSecret) { + parameters.set(CLIENT_SECRET, clientSecret); +} +function addClientAssertion(parameters, clientAssertion) { + if (clientAssertion) { + parameters.set(CLIENT_ASSERTION, clientAssertion); + } +} +function addClientAssertionType(parameters, clientAssertionType) { + if (clientAssertionType) { + parameters.set(CLIENT_ASSERTION_TYPE, clientAssertionType); + } +} +function addOboAssertion(parameters, oboAssertion) { + parameters.set(OBO_ASSERTION, oboAssertion); +} +function addRequestTokenUse(parameters, tokenUse) { + parameters.set(REQUESTED_TOKEN_USE, tokenUse); +} +function addGrantType(parameters, grantType) { + parameters.set(GRANT_TYPE, grantType); +} +function addClientInfo(parameters) { + parameters.set(CLIENT_INFO, "1"); +} +function addCliData(parameters) { + parameters.set(CLI_DATA, "1"); +} +function addInstanceAware(parameters) { + if (!parameters.has(INSTANCE_AWARE)) { + parameters.set(INSTANCE_AWARE, "true"); + } +} +function addExtraQueryParameters(parameters, eQParams) { + Object.entries(eQParams).forEach(([key, value]) => { + if (!parameters.has(key) && value) { + parameters.set(key, value); + } + }); +} +function addClientCapabilitiesToClaims(claims, clientCapabilities) { + let mergedClaims; + if (!claims) { + mergedClaims = {}; + } else { + try { + mergedClaims = JSON.parse(claims); + } catch (e) { + throw createClientConfigurationError(invalidClaims); + } + } + if (clientCapabilities && clientCapabilities.length > 0) { + if (!mergedClaims.hasOwnProperty(ClaimsRequestKeys.ACCESS_TOKEN)) { + mergedClaims[ClaimsRequestKeys.ACCESS_TOKEN] = {}; + } + mergedClaims[ClaimsRequestKeys.ACCESS_TOKEN][ClaimsRequestKeys.XMS_CC] = { + values: clientCapabilities + }; + } + return JSON.stringify(mergedClaims); +} +function addUsername(parameters, username) { + parameters.set(PasswordGrantConstants.username, username); +} +function addPassword(parameters, password) { + parameters.set(PasswordGrantConstants.password, password); +} +function addPopToken(parameters, cnfString) { + if (cnfString) { + parameters.set(TOKEN_TYPE, AuthenticationScheme.POP); + parameters.set(REQ_CNF, cnfString); + } +} +function addSshJwk(parameters, sshJwkString) { + if (sshJwkString) { + parameters.set(TOKEN_TYPE, AuthenticationScheme.SSH); + parameters.set(REQ_CNF, sshJwkString); + } +} +function addServerTelemetry(parameters, serverTelemetryManager) { + parameters.set(X_CLIENT_CURR_TELEM, serverTelemetryManager.generateCurrentRequestHeaderValue()); + parameters.set(X_CLIENT_LAST_TELEM, serverTelemetryManager.generateLastRequestHeaderValue()); +} +function addThrottling(parameters) { + parameters.set(X_MS_LIB_CAPABILITY, ThrottlingConstants.X_MS_LIB_CAPABILITY_VALUE); +} +function addLogoutHint(parameters, logoutHint) { + parameters.set(LOGOUT_HINT, logoutHint); +} +function addBrokerParameters(parameters, brokerClientId, brokerRedirectUri) { + if (!parameters.has(BROKER_CLIENT_ID)) { + parameters.set(BROKER_CLIENT_ID, brokerClientId); + } + if (!parameters.has(BROKER_REDIRECT_URI)) { + parameters.set(BROKER_REDIRECT_URI, brokerRedirectUri); + } +} +function addEARParameters(parameters, jwk) { + parameters.set(EAR_JWK, encodeURIComponent(jwk)); + const jweCryptoB64Encoded = "eyJhbGciOiJkaXIiLCJlbmMiOiJBMjU2R0NNIn0"; + parameters.set(EAR_JWE_CRYPTO, jweCryptoB64Encoded); +} +function addPostBodyParameters(parameters, bodyParameters) { + Object.entries(bodyParameters).forEach(([key, value]) => { + if (value) { + parameters.set(key, value); + } + }); +} + +// node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/authority/AuthorityFactory.mjs +var AuthorityFactory_exports = {}; +__export(AuthorityFactory_exports, { + createDiscoveredInstance: () => createDiscoveredInstance +}); + +// node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/authority/OpenIdConfigResponse.mjs +function isOpenIdConfigResponse(response) { + return response.hasOwnProperty("authorization_endpoint") && response.hasOwnProperty("token_endpoint") && response.hasOwnProperty("issuer") && response.hasOwnProperty("jwks_uri"); +} + +// node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/authority/CloudInstanceDiscoveryResponse.mjs +function isCloudInstanceDiscoveryResponse(response) { + return response.hasOwnProperty("tenant_discovery_endpoint") && response.hasOwnProperty("metadata"); +} + +// node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/authority/CloudInstanceDiscoveryErrorResponse.mjs +function isCloudInstanceDiscoveryErrorResponse(response) { + return response.hasOwnProperty("error") && response.hasOwnProperty("error_description"); +} + +// node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/utils/FunctionWrappers.mjs +var invoke = (callback, eventName, logger31, telemetryClient, correlationId) => { + return (...args) => { + logger31.trace(`Executing function ${eventName}`); + const inProgressEvent = telemetryClient?.startMeasurement(eventName, correlationId); + if (correlationId) { + const eventCount = eventName + "CallCount"; + telemetryClient?.incrementFields({ [eventCount]: 1 }, correlationId); + } + try { + const result = callback(...args); + inProgressEvent?.end({ + success: true + }); + logger31.trace(`Returning result from ${eventName}`); + return result; + } catch (e) { + logger31.trace(`Error occurred in ${eventName}`); + try { + logger31.trace(JSON.stringify(e)); + } catch (e2) { + logger31.trace("Unable to print error message."); + } + inProgressEvent?.end({ + success: false + }, e); + throw e; + } + }; +}; +var invokeAsync = (callback, eventName, logger31, telemetryClient, correlationId) => { + return (...args) => { + logger31.trace(`Executing function ${eventName}`); + const inProgressEvent = telemetryClient?.startMeasurement(eventName, correlationId); + if (correlationId) { + const eventCount = eventName + "CallCount"; + telemetryClient?.incrementFields({ [eventCount]: 1 }, correlationId); + } + telemetryClient?.setPreQueueTime(eventName, correlationId); + return callback(...args).then((response) => { + logger31.trace(`Returning result from ${eventName}`); + inProgressEvent?.end({ + success: true + }); + return response; + }).catch((e) => { + logger31.trace(`Error occurred in ${eventName}`); + try { + logger31.trace(JSON.stringify(e)); + } catch (e2) { + logger31.trace("Unable to print error message."); + } + inProgressEvent?.end({ + success: false + }, e); + throw e; + }); + }; +}; + +// node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/authority/RegionDiscovery.mjs +var RegionDiscovery = class _RegionDiscovery { + constructor(networkInterface, logger31, performanceClient, correlationId) { + this.networkInterface = networkInterface; + this.logger = logger31; + this.performanceClient = performanceClient; + this.correlationId = correlationId; + } + /** + * Detect the region from the application's environment. + * + * @returns Promise + */ + async detectRegion(environmentRegion, regionDiscoveryMetadata) { + this.performanceClient?.addQueueMeasurement(PerformanceEvents.RegionDiscoveryDetectRegion, this.correlationId); + let autodetectedRegionName = environmentRegion; + if (!autodetectedRegionName) { + const options = _RegionDiscovery.IMDS_OPTIONS; + try { + const localIMDSVersionResponse = await invokeAsync(this.getRegionFromIMDS.bind(this), PerformanceEvents.RegionDiscoveryGetRegionFromIMDS, this.logger, this.performanceClient, this.correlationId)(Constants.IMDS_VERSION, options); + if (localIMDSVersionResponse.status === HttpStatus.SUCCESS) { + autodetectedRegionName = localIMDSVersionResponse.body; + regionDiscoveryMetadata.region_source = RegionDiscoverySources.IMDS; + } + if (localIMDSVersionResponse.status === HttpStatus.BAD_REQUEST) { + const currentIMDSVersion = await invokeAsync(this.getCurrentVersion.bind(this), PerformanceEvents.RegionDiscoveryGetCurrentVersion, this.logger, this.performanceClient, this.correlationId)(options); + if (!currentIMDSVersion) { + regionDiscoveryMetadata.region_source = RegionDiscoverySources.FAILED_AUTO_DETECTION; + return null; + } + const currentIMDSVersionResponse = await invokeAsync(this.getRegionFromIMDS.bind(this), PerformanceEvents.RegionDiscoveryGetRegionFromIMDS, this.logger, this.performanceClient, this.correlationId)(currentIMDSVersion, options); + if (currentIMDSVersionResponse.status === HttpStatus.SUCCESS) { + autodetectedRegionName = currentIMDSVersionResponse.body; + regionDiscoveryMetadata.region_source = RegionDiscoverySources.IMDS; + } + } + } catch (e) { + regionDiscoveryMetadata.region_source = RegionDiscoverySources.FAILED_AUTO_DETECTION; + return null; + } + } else { + regionDiscoveryMetadata.region_source = RegionDiscoverySources.ENVIRONMENT_VARIABLE; + } + if (!autodetectedRegionName) { + regionDiscoveryMetadata.region_source = RegionDiscoverySources.FAILED_AUTO_DETECTION; + } + return autodetectedRegionName || null; + } + /** + * Make the call to the IMDS endpoint + * + * @param imdsEndpointUrl + * @returns Promise> + */ + async getRegionFromIMDS(version8, options) { + this.performanceClient?.addQueueMeasurement(PerformanceEvents.RegionDiscoveryGetRegionFromIMDS, this.correlationId); + return this.networkInterface.sendGetRequestAsync(`${Constants.IMDS_ENDPOINT}?api-version=${version8}&format=text`, options, Constants.IMDS_TIMEOUT); + } + /** + * Get the most recent version of the IMDS endpoint available + * + * @returns Promise + */ + async getCurrentVersion(options) { + this.performanceClient?.addQueueMeasurement(PerformanceEvents.RegionDiscoveryGetCurrentVersion, this.correlationId); + try { + const response = await this.networkInterface.sendGetRequestAsync(`${Constants.IMDS_ENDPOINT}?format=json`, options); + if (response.status === HttpStatus.BAD_REQUEST && response.body && response.body["newest-versions"] && response.body["newest-versions"].length > 0) { + return response.body["newest-versions"][0]; + } + return null; + } catch (e) { + return null; + } + } +}; +RegionDiscovery.IMDS_OPTIONS = { + headers: { + Metadata: "true" + } +}; + +// node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/cache/utils/CacheHelpers.mjs +var CacheHelpers_exports = {}; +__export(CacheHelpers_exports, { + createAccessTokenEntity: () => createAccessTokenEntity, + createIdTokenEntity: () => createIdTokenEntity, + createRefreshTokenEntity: () => createRefreshTokenEntity, + generateAppMetadataKey: () => generateAppMetadataKey, + generateAuthorityMetadataExpiresAt: () => generateAuthorityMetadataExpiresAt, + isAccessTokenEntity: () => isAccessTokenEntity, + isAppMetadataEntity: () => isAppMetadataEntity, + isAuthorityMetadataEntity: () => isAuthorityMetadataEntity, + isAuthorityMetadataExpired: () => isAuthorityMetadataExpired, + isCredentialEntity: () => isCredentialEntity, + isIdTokenEntity: () => isIdTokenEntity, + isRefreshTokenEntity: () => isRefreshTokenEntity, + isServerTelemetryEntity: () => isServerTelemetryEntity, + isThrottlingEntity: () => isThrottlingEntity, + updateAuthorityEndpointMetadata: () => updateAuthorityEndpointMetadata, + updateCloudDiscoveryMetadata: () => updateCloudDiscoveryMetadata +}); + +// node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/utils/TimeUtils.mjs +var TimeUtils_exports = {}; +__export(TimeUtils_exports, { + delay: () => delay, + isCacheExpired: () => isCacheExpired, + isTokenExpired: () => isTokenExpired, + nowSeconds: () => nowSeconds, + toDateFromSeconds: () => toDateFromSeconds, + toSecondsFromDate: () => toSecondsFromDate, + wasClockTurnedBack: () => wasClockTurnedBack +}); +function nowSeconds() { + return Math.round((/* @__PURE__ */ new Date()).getTime() / 1e3); +} +function toSecondsFromDate(date4) { + return date4.getTime() / 1e3; +} +function toDateFromSeconds(seconds) { + if (seconds) { + return new Date(Number(seconds) * 1e3); + } + return /* @__PURE__ */ new Date(); +} +function isTokenExpired(expiresOn, offset) { + const expirationSec = Number(expiresOn) || 0; + const offsetCurrentTimeSec = nowSeconds() + offset; + return offsetCurrentTimeSec > expirationSec; +} +function isCacheExpired(lastUpdatedAt, cacheRetentionDays) { + const cacheExpirationTimestamp = Number(lastUpdatedAt) + cacheRetentionDays * 24 * 60 * 60 * 1e3; + return Date.now() > cacheExpirationTimestamp; +} +function wasClockTurnedBack(cachedAt) { + const cachedAtSec = Number(cachedAt); + return cachedAtSec > nowSeconds(); +} +function delay(t, value) { + return new Promise((resolve) => setTimeout(() => resolve(value), t)); +} + +// node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/cache/utils/CacheHelpers.mjs +function createIdTokenEntity(homeAccountId, environment, idToken, clientId, tenantId) { + const idTokenEntity = { + credentialType: CredentialType.ID_TOKEN, + homeAccountId, + environment, + clientId, + secret: idToken, + realm: tenantId, + lastUpdatedAt: Date.now().toString() + // Set the last updated time to now + }; + return idTokenEntity; +} +function createAccessTokenEntity(homeAccountId, environment, accessToken, clientId, tenantId, scopes, expiresOn, extExpiresOn, base64Decode, refreshOn, tokenType, userAssertionHash, keyId, requestedClaims, requestedClaimsHash) { + const atEntity = { + homeAccountId, + credentialType: CredentialType.ACCESS_TOKEN, + secret: accessToken, + cachedAt: nowSeconds().toString(), + expiresOn: expiresOn.toString(), + extendedExpiresOn: extExpiresOn.toString(), + environment, + clientId, + realm: tenantId, + target: scopes, + tokenType: tokenType || AuthenticationScheme.BEARER, + lastUpdatedAt: Date.now().toString() + // Set the last updated time to now + }; + if (userAssertionHash) { + atEntity.userAssertionHash = userAssertionHash; + } + if (refreshOn) { + atEntity.refreshOn = refreshOn.toString(); + } + if (requestedClaims) { + atEntity.requestedClaims = requestedClaims; + atEntity.requestedClaimsHash = requestedClaimsHash; + } + if (atEntity.tokenType?.toLowerCase() !== AuthenticationScheme.BEARER.toLowerCase()) { + atEntity.credentialType = CredentialType.ACCESS_TOKEN_WITH_AUTH_SCHEME; + switch (atEntity.tokenType) { + case AuthenticationScheme.POP: + const tokenClaims = extractTokenClaims(accessToken, base64Decode); + if (!tokenClaims?.cnf?.kid) { + throw createClientAuthError(tokenClaimsCnfRequiredForSignedJwt); + } + atEntity.keyId = tokenClaims.cnf.kid; + break; + case AuthenticationScheme.SSH: + atEntity.keyId = keyId; + } + } + return atEntity; +} +function createRefreshTokenEntity(homeAccountId, environment, refreshToken, clientId, familyId, userAssertionHash, expiresOn) { + const rtEntity = { + credentialType: CredentialType.REFRESH_TOKEN, + homeAccountId, + environment, + clientId, + secret: refreshToken, + lastUpdatedAt: Date.now().toString() + }; + if (userAssertionHash) { + rtEntity.userAssertionHash = userAssertionHash; + } + if (familyId) { + rtEntity.familyId = familyId; + } + if (expiresOn) { + rtEntity.expiresOn = expiresOn.toString(); + } + return rtEntity; +} +function isCredentialEntity(entity) { + return entity.hasOwnProperty("homeAccountId") && entity.hasOwnProperty("environment") && entity.hasOwnProperty("credentialType") && entity.hasOwnProperty("clientId") && entity.hasOwnProperty("secret"); +} +function isAccessTokenEntity(entity) { + if (!entity) { + return false; + } + return isCredentialEntity(entity) && entity.hasOwnProperty("realm") && entity.hasOwnProperty("target") && (entity["credentialType"] === CredentialType.ACCESS_TOKEN || entity["credentialType"] === CredentialType.ACCESS_TOKEN_WITH_AUTH_SCHEME); +} +function isIdTokenEntity(entity) { + if (!entity) { + return false; + } + return isCredentialEntity(entity) && entity.hasOwnProperty("realm") && entity["credentialType"] === CredentialType.ID_TOKEN; +} +function isRefreshTokenEntity(entity) { + if (!entity) { + return false; + } + return isCredentialEntity(entity) && entity["credentialType"] === CredentialType.REFRESH_TOKEN; +} +function isServerTelemetryEntity(key, entity) { + const validateKey = key.indexOf(SERVER_TELEM_CONSTANTS.CACHE_KEY) === 0; + let validateEntity = true; + if (entity) { + validateEntity = entity.hasOwnProperty("failedRequests") && entity.hasOwnProperty("errors") && entity.hasOwnProperty("cacheHits"); + } + return validateKey && validateEntity; +} +function isThrottlingEntity(key, entity) { + let validateKey = false; + if (key) { + validateKey = key.indexOf(ThrottlingConstants.THROTTLING_PREFIX) === 0; + } + let validateEntity = true; + if (entity) { + validateEntity = entity.hasOwnProperty("throttleTime"); + } + return validateKey && validateEntity; +} +function generateAppMetadataKey({ environment, clientId }) { + const appMetaDataKeyArray = [ + APP_METADATA, + environment, + clientId + ]; + return appMetaDataKeyArray.join(Separators.CACHE_KEY_SEPARATOR).toLowerCase(); +} +function isAppMetadataEntity(key, entity) { + if (!entity) { + return false; + } + return key.indexOf(APP_METADATA) === 0 && entity.hasOwnProperty("clientId") && entity.hasOwnProperty("environment"); +} +function isAuthorityMetadataEntity(key, entity) { + if (!entity) { + return false; + } + return key.indexOf(AUTHORITY_METADATA_CONSTANTS.CACHE_KEY) === 0 && entity.hasOwnProperty("aliases") && entity.hasOwnProperty("preferred_cache") && entity.hasOwnProperty("preferred_network") && entity.hasOwnProperty("canonical_authority") && entity.hasOwnProperty("authorization_endpoint") && entity.hasOwnProperty("token_endpoint") && entity.hasOwnProperty("issuer") && entity.hasOwnProperty("aliasesFromNetwork") && entity.hasOwnProperty("endpointsFromNetwork") && entity.hasOwnProperty("expiresAt") && entity.hasOwnProperty("jwks_uri"); +} +function generateAuthorityMetadataExpiresAt() { + return nowSeconds() + AUTHORITY_METADATA_CONSTANTS.REFRESH_TIME_SECONDS; +} +function updateAuthorityEndpointMetadata(authorityMetadata, updatedValues, fromNetwork) { + authorityMetadata.authorization_endpoint = updatedValues.authorization_endpoint; + authorityMetadata.token_endpoint = updatedValues.token_endpoint; + authorityMetadata.end_session_endpoint = updatedValues.end_session_endpoint; + authorityMetadata.issuer = updatedValues.issuer; + authorityMetadata.endpointsFromNetwork = fromNetwork; + authorityMetadata.jwks_uri = updatedValues.jwks_uri; +} +function updateCloudDiscoveryMetadata(authorityMetadata, updatedValues, fromNetwork) { + authorityMetadata.aliases = updatedValues.aliases; + authorityMetadata.preferred_cache = updatedValues.preferred_cache; + authorityMetadata.preferred_network = updatedValues.preferred_network; + authorityMetadata.aliasesFromNetwork = fromNetwork; +} +function isAuthorityMetadataExpired(metadata) { + return metadata.expiresAt <= nowSeconds(); +} + +// node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/authority/Authority.mjs +var Authority = class _Authority { + constructor(authority, networkInterface, cacheManager, authorityOptions, logger31, correlationId, performanceClient, managedIdentity) { + this.canonicalAuthority = authority; + this._canonicalAuthority.validateAsUri(); + this.networkInterface = networkInterface; + this.cacheManager = cacheManager; + this.authorityOptions = authorityOptions; + this.regionDiscoveryMetadata = { + region_used: void 0, + region_source: void 0, + region_outcome: void 0 + }; + this.logger = logger31; + this.performanceClient = performanceClient; + this.correlationId = correlationId; + this.managedIdentity = managedIdentity || false; + this.regionDiscovery = new RegionDiscovery(networkInterface, this.logger, this.performanceClient, this.correlationId); + } + /** + * Get {@link AuthorityType} + * @param authorityUri {@link IUri} + * @private + */ + getAuthorityType(authorityUri) { + if (authorityUri.HostNameAndPort.endsWith(Constants.CIAM_AUTH_URL)) { + return AuthorityType.Ciam; + } + const pathSegments = authorityUri.PathSegments; + if (pathSegments.length) { + switch (pathSegments[0].toLowerCase()) { + case Constants.ADFS: + return AuthorityType.Adfs; + case Constants.DSTS: + return AuthorityType.Dsts; + } + } + return AuthorityType.Default; + } + // See above for AuthorityType + get authorityType() { + return this.getAuthorityType(this.canonicalAuthorityUrlComponents); + } + /** + * ProtocolMode enum representing the way endpoints are constructed. + */ + get protocolMode() { + return this.authorityOptions.protocolMode; + } + /** + * Returns authorityOptions which can be used to reinstantiate a new authority instance + */ + get options() { + return this.authorityOptions; + } + /** + * A URL that is the authority set by the developer + */ + get canonicalAuthority() { + return this._canonicalAuthority.urlString; + } + /** + * Sets canonical authority. + */ + set canonicalAuthority(url2) { + this._canonicalAuthority = new UrlString(url2); + this._canonicalAuthority.validateAsUri(); + this._canonicalAuthorityUrlComponents = null; + } + /** + * Get authority components. + */ + get canonicalAuthorityUrlComponents() { + if (!this._canonicalAuthorityUrlComponents) { + this._canonicalAuthorityUrlComponents = this._canonicalAuthority.getUrlComponents(); + } + return this._canonicalAuthorityUrlComponents; + } + /** + * Get hostname and port i.e. login.microsoftonline.com + */ + get hostnameAndPort() { + return this.canonicalAuthorityUrlComponents.HostNameAndPort.toLowerCase(); + } + /** + * Get tenant for authority. + */ + get tenant() { + return this.canonicalAuthorityUrlComponents.PathSegments[0]; + } + /** + * OAuth /authorize endpoint for requests + */ + get authorizationEndpoint() { + if (this.discoveryComplete()) { + return this.replacePath(this.metadata.authorization_endpoint); + } else { + throw createClientAuthError(endpointResolutionError); + } + } + /** + * OAuth /token endpoint for requests + */ + get tokenEndpoint() { + if (this.discoveryComplete()) { + return this.replacePath(this.metadata.token_endpoint); + } else { + throw createClientAuthError(endpointResolutionError); + } + } + get deviceCodeEndpoint() { + if (this.discoveryComplete()) { + return this.replacePath(this.metadata.token_endpoint.replace("/token", "/devicecode")); + } else { + throw createClientAuthError(endpointResolutionError); + } + } + /** + * OAuth logout endpoint for requests + */ + get endSessionEndpoint() { + if (this.discoveryComplete()) { + if (!this.metadata.end_session_endpoint) { + throw createClientAuthError(endSessionEndpointNotSupported); + } + return this.replacePath(this.metadata.end_session_endpoint); + } else { + throw createClientAuthError(endpointResolutionError); + } + } + /** + * OAuth issuer for requests + */ + get selfSignedJwtAudience() { + if (this.discoveryComplete()) { + return this.replacePath(this.metadata.issuer); + } else { + throw createClientAuthError(endpointResolutionError); + } + } + /** + * Jwks_uri for token signing keys + */ + get jwksUri() { + if (this.discoveryComplete()) { + return this.replacePath(this.metadata.jwks_uri); + } else { + throw createClientAuthError(endpointResolutionError); + } + } + /** + * Returns a flag indicating that tenant name can be replaced in authority {@link IUri} + * @param authorityUri {@link IUri} + * @private + */ + canReplaceTenant(authorityUri) { + return authorityUri.PathSegments.length === 1 && !_Authority.reservedTenantDomains.has(authorityUri.PathSegments[0]) && this.getAuthorityType(authorityUri) === AuthorityType.Default && this.protocolMode !== ProtocolMode.OIDC; + } + /** + * Replaces tenant in url path with current tenant. Defaults to common. + * @param urlString + */ + replaceTenant(urlString) { + return urlString.replace(/{tenant}|{tenantid}/g, this.tenant); + } + /** + * Replaces path such as tenant or policy with the current tenant or policy. + * @param urlString + */ + replacePath(urlString) { + let endpoint = urlString; + const cachedAuthorityUrl = new UrlString(this.metadata.canonical_authority); + const cachedAuthorityUrlComponents = cachedAuthorityUrl.getUrlComponents(); + const cachedAuthorityParts = cachedAuthorityUrlComponents.PathSegments; + const currentAuthorityParts = this.canonicalAuthorityUrlComponents.PathSegments; + currentAuthorityParts.forEach((currentPart, index) => { + let cachedPart = cachedAuthorityParts[index]; + if (index === 0 && this.canReplaceTenant(cachedAuthorityUrlComponents)) { + const tenantId = new UrlString(this.metadata.authorization_endpoint).getUrlComponents().PathSegments[0]; + if (cachedPart !== tenantId) { + this.logger.verbose(`Replacing tenant domain name ${cachedPart} with id ${tenantId}`); + cachedPart = tenantId; + } + } + if (currentPart !== cachedPart) { + endpoint = endpoint.replace(`/${cachedPart}/`, `/${currentPart}/`); + } + }); + return this.replaceTenant(endpoint); + } + /** + * The default open id configuration endpoint for any canonical authority. + */ + get defaultOpenIdConfigurationEndpoint() { + const canonicalAuthorityHost = this.hostnameAndPort; + if (this.canonicalAuthority.endsWith("v2.0/") || this.authorityType === AuthorityType.Adfs || this.protocolMode === ProtocolMode.OIDC && !this.isAliasOfKnownMicrosoftAuthority(canonicalAuthorityHost)) { + return `${this.canonicalAuthority}.well-known/openid-configuration`; + } + return `${this.canonicalAuthority}v2.0/.well-known/openid-configuration`; + } + /** + * Boolean that returns whether or not tenant discovery has been completed. + */ + discoveryComplete() { + return !!this.metadata; + } + /** + * Perform endpoint discovery to discover aliases, preferred_cache, preferred_network + * and the /authorize, /token and logout endpoints. + */ + async resolveEndpointsAsync() { + this.performanceClient?.addQueueMeasurement(PerformanceEvents.AuthorityResolveEndpointsAsync, this.correlationId); + const metadataEntity = this.getCurrentMetadataEntity(); + const cloudDiscoverySource = await invokeAsync(this.updateCloudDiscoveryMetadata.bind(this), PerformanceEvents.AuthorityUpdateCloudDiscoveryMetadata, this.logger, this.performanceClient, this.correlationId)(metadataEntity); + this.canonicalAuthority = this.canonicalAuthority.replace(this.hostnameAndPort, metadataEntity.preferred_network); + const endpointSource = await invokeAsync(this.updateEndpointMetadata.bind(this), PerformanceEvents.AuthorityUpdateEndpointMetadata, this.logger, this.performanceClient, this.correlationId)(metadataEntity); + this.updateCachedMetadata(metadataEntity, cloudDiscoverySource, { + source: endpointSource + }); + this.performanceClient?.addFields({ + cloudDiscoverySource, + authorityEndpointSource: endpointSource + }, this.correlationId); + } + /** + * Returns metadata entity from cache if it exists, otherwiser returns a new metadata entity built + * from the configured canonical authority + * @returns + */ + getCurrentMetadataEntity() { + let metadataEntity = this.cacheManager.getAuthorityMetadataByAlias(this.hostnameAndPort); + if (!metadataEntity) { + metadataEntity = { + aliases: [], + preferred_cache: this.hostnameAndPort, + preferred_network: this.hostnameAndPort, + canonical_authority: this.canonicalAuthority, + authorization_endpoint: "", + token_endpoint: "", + end_session_endpoint: "", + issuer: "", + aliasesFromNetwork: false, + endpointsFromNetwork: false, + expiresAt: generateAuthorityMetadataExpiresAt(), + jwks_uri: "" + }; + } + return metadataEntity; + } + /** + * Updates cached metadata based on metadata source and sets the instance's metadata + * property to the same value + * @param metadataEntity + * @param cloudDiscoverySource + * @param endpointMetadataResult + */ + updateCachedMetadata(metadataEntity, cloudDiscoverySource, endpointMetadataResult) { + if (cloudDiscoverySource !== AuthorityMetadataSource.CACHE && endpointMetadataResult?.source !== AuthorityMetadataSource.CACHE) { + metadataEntity.expiresAt = generateAuthorityMetadataExpiresAt(); + metadataEntity.canonical_authority = this.canonicalAuthority; + } + const cacheKey2 = this.cacheManager.generateAuthorityMetadataCacheKey(metadataEntity.preferred_cache); + this.cacheManager.setAuthorityMetadata(cacheKey2, metadataEntity); + this.metadata = metadataEntity; + } + /** + * Update AuthorityMetadataEntity with new endpoints and return where the information came from + * @param metadataEntity + */ + async updateEndpointMetadata(metadataEntity) { + this.performanceClient?.addQueueMeasurement(PerformanceEvents.AuthorityUpdateEndpointMetadata, this.correlationId); + const localMetadata = this.updateEndpointMetadataFromLocalSources(metadataEntity); + if (localMetadata) { + if (localMetadata.source === AuthorityMetadataSource.HARDCODED_VALUES) { + if (this.authorityOptions.azureRegionConfiguration?.azureRegion) { + if (localMetadata.metadata) { + const hardcodedMetadata = await invokeAsync(this.updateMetadataWithRegionalInformation.bind(this), PerformanceEvents.AuthorityUpdateMetadataWithRegionalInformation, this.logger, this.performanceClient, this.correlationId)(localMetadata.metadata); + updateAuthorityEndpointMetadata(metadataEntity, hardcodedMetadata, false); + metadataEntity.canonical_authority = this.canonicalAuthority; + } + } + } + return localMetadata.source; + } + let metadata = await invokeAsync(this.getEndpointMetadataFromNetwork.bind(this), PerformanceEvents.AuthorityGetEndpointMetadataFromNetwork, this.logger, this.performanceClient, this.correlationId)(); + if (metadata) { + if (this.authorityOptions.azureRegionConfiguration?.azureRegion) { + metadata = await invokeAsync(this.updateMetadataWithRegionalInformation.bind(this), PerformanceEvents.AuthorityUpdateMetadataWithRegionalInformation, this.logger, this.performanceClient, this.correlationId)(metadata); + } + updateAuthorityEndpointMetadata(metadataEntity, metadata, true); + return AuthorityMetadataSource.NETWORK; + } else { + throw createClientAuthError(openIdConfigError, this.defaultOpenIdConfigurationEndpoint); + } + } + /** + * Updates endpoint metadata from local sources and returns where the information was retrieved from and the metadata config + * response if the source is hardcoded metadata + * @param metadataEntity + * @returns + */ + updateEndpointMetadataFromLocalSources(metadataEntity) { + this.logger.verbose("Attempting to get endpoint metadata from authority configuration"); + const configMetadata = this.getEndpointMetadataFromConfig(); + if (configMetadata) { + this.logger.verbose("Found endpoint metadata in authority configuration"); + updateAuthorityEndpointMetadata(metadataEntity, configMetadata, false); + return { + source: AuthorityMetadataSource.CONFIG + }; + } + this.logger.verbose("Did not find endpoint metadata in the config... Attempting to get endpoint metadata from the hardcoded values."); + if (this.authorityOptions.skipAuthorityMetadataCache) { + this.logger.verbose("Skipping hardcoded metadata cache since skipAuthorityMetadataCache is set to true. Attempting to get endpoint metadata from the network metadata cache."); + } else { + const hardcodedMetadata = this.getEndpointMetadataFromHardcodedValues(); + if (hardcodedMetadata) { + updateAuthorityEndpointMetadata(metadataEntity, hardcodedMetadata, false); + return { + source: AuthorityMetadataSource.HARDCODED_VALUES, + metadata: hardcodedMetadata + }; + } else { + this.logger.verbose("Did not find endpoint metadata in hardcoded values... Attempting to get endpoint metadata from the network metadata cache."); + } + } + const metadataEntityExpired = isAuthorityMetadataExpired(metadataEntity); + if (this.isAuthoritySameType(metadataEntity) && metadataEntity.endpointsFromNetwork && !metadataEntityExpired) { + this.logger.verbose("Found endpoint metadata in the cache."); + return { source: AuthorityMetadataSource.CACHE }; + } else if (metadataEntityExpired) { + this.logger.verbose("The metadata entity is expired."); + } + return null; + } + /** + * Compares the number of url components after the domain to determine if the cached + * authority metadata can be used for the requested authority. Protects against same domain different + * authority such as login.microsoftonline.com/tenant and login.microsoftonline.com/tfp/tenant/policy + * @param metadataEntity + */ + isAuthoritySameType(metadataEntity) { + const cachedAuthorityUrl = new UrlString(metadataEntity.canonical_authority); + const cachedParts = cachedAuthorityUrl.getUrlComponents().PathSegments; + return cachedParts.length === this.canonicalAuthorityUrlComponents.PathSegments.length; + } + /** + * Parse authorityMetadata config option + */ + getEndpointMetadataFromConfig() { + if (this.authorityOptions.authorityMetadata) { + try { + return JSON.parse(this.authorityOptions.authorityMetadata); + } catch (e) { + throw createClientConfigurationError(invalidAuthorityMetadata); + } + } + return null; + } + /** + * Gets OAuth endpoints from the given OpenID configuration endpoint. + * + * @param hasHardcodedMetadata boolean + */ + async getEndpointMetadataFromNetwork() { + this.performanceClient?.addQueueMeasurement(PerformanceEvents.AuthorityGetEndpointMetadataFromNetwork, this.correlationId); + const options = {}; + const openIdConfigurationEndpoint = this.defaultOpenIdConfigurationEndpoint; + this.logger.verbose(`Authority.getEndpointMetadataFromNetwork: attempting to retrieve OAuth endpoints from ${openIdConfigurationEndpoint}`); + try { + const response = await this.networkInterface.sendGetRequestAsync(openIdConfigurationEndpoint, options); + const isValidResponse = isOpenIdConfigResponse(response.body); + if (isValidResponse) { + return response.body; + } else { + this.logger.verbose(`Authority.getEndpointMetadataFromNetwork: could not parse response as OpenID configuration`); + return null; + } + } catch (e) { + this.logger.verbose(`Authority.getEndpointMetadataFromNetwork: ${e}`); + return null; + } + } + /** + * Get OAuth endpoints for common authorities. + */ + getEndpointMetadataFromHardcodedValues() { + if (this.hostnameAndPort in EndpointMetadata) { + return EndpointMetadata[this.hostnameAndPort]; + } + return null; + } + /** + * Update the retrieved metadata with regional information. + * User selected Azure region will be used if configured. + */ + async updateMetadataWithRegionalInformation(metadata) { + this.performanceClient?.addQueueMeasurement(PerformanceEvents.AuthorityUpdateMetadataWithRegionalInformation, this.correlationId); + const userConfiguredAzureRegion = this.authorityOptions.azureRegionConfiguration?.azureRegion; + if (userConfiguredAzureRegion) { + if (userConfiguredAzureRegion !== Constants.AZURE_REGION_AUTO_DISCOVER_FLAG) { + this.regionDiscoveryMetadata.region_outcome = RegionDiscoveryOutcomes.CONFIGURED_NO_AUTO_DETECTION; + this.regionDiscoveryMetadata.region_used = userConfiguredAzureRegion; + return _Authority.replaceWithRegionalInformation(metadata, userConfiguredAzureRegion); + } + const autodetectedRegionName = await invokeAsync(this.regionDiscovery.detectRegion.bind(this.regionDiscovery), PerformanceEvents.RegionDiscoveryDetectRegion, this.logger, this.performanceClient, this.correlationId)(this.authorityOptions.azureRegionConfiguration?.environmentRegion, this.regionDiscoveryMetadata); + if (autodetectedRegionName) { + this.regionDiscoveryMetadata.region_outcome = RegionDiscoveryOutcomes.AUTO_DETECTION_REQUESTED_SUCCESSFUL; + this.regionDiscoveryMetadata.region_used = autodetectedRegionName; + return _Authority.replaceWithRegionalInformation(metadata, autodetectedRegionName); + } + this.regionDiscoveryMetadata.region_outcome = RegionDiscoveryOutcomes.AUTO_DETECTION_REQUESTED_FAILED; + } + return metadata; + } + /** + * Updates the AuthorityMetadataEntity with new aliases, preferred_network and preferred_cache + * and returns where the information was retrieved from + * @param metadataEntity + * @returns AuthorityMetadataSource + */ + async updateCloudDiscoveryMetadata(metadataEntity) { + this.performanceClient?.addQueueMeasurement(PerformanceEvents.AuthorityUpdateCloudDiscoveryMetadata, this.correlationId); + const localMetadataSource = this.updateCloudDiscoveryMetadataFromLocalSources(metadataEntity); + if (localMetadataSource) { + return localMetadataSource; + } + const metadata = await invokeAsync(this.getCloudDiscoveryMetadataFromNetwork.bind(this), PerformanceEvents.AuthorityGetCloudDiscoveryMetadataFromNetwork, this.logger, this.performanceClient, this.correlationId)(); + if (metadata) { + updateCloudDiscoveryMetadata(metadataEntity, metadata, true); + return AuthorityMetadataSource.NETWORK; + } + throw createClientConfigurationError(untrustedAuthority); + } + updateCloudDiscoveryMetadataFromLocalSources(metadataEntity) { + this.logger.verbose("Attempting to get cloud discovery metadata from authority configuration"); + this.logger.verbosePii(`Known Authorities: ${this.authorityOptions.knownAuthorities || Constants.NOT_APPLICABLE}`); + this.logger.verbosePii(`Authority Metadata: ${this.authorityOptions.authorityMetadata || Constants.NOT_APPLICABLE}`); + this.logger.verbosePii(`Canonical Authority: ${metadataEntity.canonical_authority || Constants.NOT_APPLICABLE}`); + const metadata = this.getCloudDiscoveryMetadataFromConfig(); + if (metadata) { + this.logger.verbose("Found cloud discovery metadata in authority configuration"); + updateCloudDiscoveryMetadata(metadataEntity, metadata, false); + return AuthorityMetadataSource.CONFIG; + } + this.logger.verbose("Did not find cloud discovery metadata in the config... Attempting to get cloud discovery metadata from the hardcoded values."); + if (this.options.skipAuthorityMetadataCache) { + this.logger.verbose("Skipping hardcoded cloud discovery metadata cache since skipAuthorityMetadataCache is set to true. Attempting to get cloud discovery metadata from the network metadata cache."); + } else { + const hardcodedMetadata = getCloudDiscoveryMetadataFromHardcodedValues(this.hostnameAndPort); + if (hardcodedMetadata) { + this.logger.verbose("Found cloud discovery metadata from hardcoded values."); + updateCloudDiscoveryMetadata(metadataEntity, hardcodedMetadata, false); + return AuthorityMetadataSource.HARDCODED_VALUES; + } + this.logger.verbose("Did not find cloud discovery metadata in hardcoded values... Attempting to get cloud discovery metadata from the network metadata cache."); + } + const metadataEntityExpired = isAuthorityMetadataExpired(metadataEntity); + if (this.isAuthoritySameType(metadataEntity) && metadataEntity.aliasesFromNetwork && !metadataEntityExpired) { + this.logger.verbose("Found cloud discovery metadata in the cache."); + return AuthorityMetadataSource.CACHE; + } else if (metadataEntityExpired) { + this.logger.verbose("The metadata entity is expired."); + } + return null; + } + /** + * Parse cloudDiscoveryMetadata config or check knownAuthorities + */ + getCloudDiscoveryMetadataFromConfig() { + if (this.authorityType === AuthorityType.Ciam) { + this.logger.verbose("CIAM authorities do not support cloud discovery metadata, generate the aliases from authority host."); + return _Authority.createCloudDiscoveryMetadataFromHost(this.hostnameAndPort); + } + if (this.authorityOptions.cloudDiscoveryMetadata) { + this.logger.verbose("The cloud discovery metadata has been provided as a network response, in the config."); + try { + this.logger.verbose("Attempting to parse the cloud discovery metadata."); + const parsedResponse = JSON.parse(this.authorityOptions.cloudDiscoveryMetadata); + const metadata = getCloudDiscoveryMetadataFromNetworkResponse(parsedResponse.metadata, this.hostnameAndPort); + this.logger.verbose("Parsed the cloud discovery metadata."); + if (metadata) { + this.logger.verbose("There is returnable metadata attached to the parsed cloud discovery metadata."); + return metadata; + } else { + this.logger.verbose("There is no metadata attached to the parsed cloud discovery metadata."); + } + } catch (e) { + this.logger.verbose("Unable to parse the cloud discovery metadata. Throwing Invalid Cloud Discovery Metadata Error."); + throw createClientConfigurationError(invalidCloudDiscoveryMetadata); + } + } + if (this.isInKnownAuthorities()) { + this.logger.verbose("The host is included in knownAuthorities. Creating new cloud discovery metadata from the host."); + return _Authority.createCloudDiscoveryMetadataFromHost(this.hostnameAndPort); + } + return null; + } + /** + * Called to get metadata from network if CloudDiscoveryMetadata was not populated by config + * + * @param hasHardcodedMetadata boolean + */ + async getCloudDiscoveryMetadataFromNetwork() { + this.performanceClient?.addQueueMeasurement(PerformanceEvents.AuthorityGetCloudDiscoveryMetadataFromNetwork, this.correlationId); + const instanceDiscoveryEndpoint = `${Constants.AAD_INSTANCE_DISCOVERY_ENDPT}${this.canonicalAuthority}oauth2/v2.0/authorize`; + const options = {}; + let match = null; + try { + const response = await this.networkInterface.sendGetRequestAsync(instanceDiscoveryEndpoint, options); + let typedResponseBody; + let metadata; + if (isCloudInstanceDiscoveryResponse(response.body)) { + typedResponseBody = response.body; + metadata = typedResponseBody.metadata; + this.logger.verbosePii(`tenant_discovery_endpoint is: ${typedResponseBody.tenant_discovery_endpoint}`); + } else if (isCloudInstanceDiscoveryErrorResponse(response.body)) { + this.logger.warning(`A CloudInstanceDiscoveryErrorResponse was returned. The cloud instance discovery network request's status code is: ${response.status}`); + typedResponseBody = response.body; + if (typedResponseBody.error === Constants.INVALID_INSTANCE) { + this.logger.error("The CloudInstanceDiscoveryErrorResponse error is invalid_instance."); + return null; + } + this.logger.warning(`The CloudInstanceDiscoveryErrorResponse error is ${typedResponseBody.error}`); + this.logger.warning(`The CloudInstanceDiscoveryErrorResponse error description is ${typedResponseBody.error_description}`); + this.logger.warning("Setting the value of the CloudInstanceDiscoveryMetadata (returned from the network) to []"); + metadata = []; + } else { + this.logger.error("AAD did not return a CloudInstanceDiscoveryResponse or CloudInstanceDiscoveryErrorResponse"); + return null; + } + this.logger.verbose("Attempting to find a match between the developer's authority and the CloudInstanceDiscoveryMetadata returned from the network request."); + match = getCloudDiscoveryMetadataFromNetworkResponse(metadata, this.hostnameAndPort); + } catch (error2) { + if (error2 instanceof AuthError) { + this.logger.error(`There was a network error while attempting to get the cloud discovery instance metadata. +Error: ${error2.errorCode} +Error Description: ${error2.errorMessage}`); + } else { + const typedError = error2; + this.logger.error(`A non-MSALJS error was thrown while attempting to get the cloud instance discovery metadata. +Error: ${typedError.name} +Error Description: ${typedError.message}`); + } + return null; + } + if (!match) { + this.logger.warning("The developer's authority was not found within the CloudInstanceDiscoveryMetadata returned from the network request."); + this.logger.verbose("Creating custom Authority for custom domain scenario."); + match = _Authority.createCloudDiscoveryMetadataFromHost(this.hostnameAndPort); + } + return match; + } + /** + * Helper function to determine if this host is included in the knownAuthorities config option + */ + isInKnownAuthorities() { + const matches = this.authorityOptions.knownAuthorities.filter((authority) => { + return authority && UrlString.getDomainFromUrl(authority).toLowerCase() === this.hostnameAndPort; + }); + return matches.length > 0; + } + /** + * helper function to populate the authority based on azureCloudOptions + * @param authorityString + * @param azureCloudOptions + */ + static generateAuthority(authorityString, azureCloudOptions) { + let authorityAzureCloudInstance; + if (azureCloudOptions && azureCloudOptions.azureCloudInstance !== AzureCloudInstance.None) { + const tenant = azureCloudOptions.tenant ? azureCloudOptions.tenant : Constants.DEFAULT_COMMON_TENANT; + authorityAzureCloudInstance = `${azureCloudOptions.azureCloudInstance}/${tenant}/`; + } + return authorityAzureCloudInstance ? authorityAzureCloudInstance : authorityString; + } + /** + * Creates cloud discovery metadata object from a given host + * @param host + */ + static createCloudDiscoveryMetadataFromHost(host) { + return { + preferred_network: host, + preferred_cache: host, + aliases: [host] + }; + } + /** + * helper function to generate environment from authority object + */ + getPreferredCache() { + if (this.managedIdentity) { + return Constants.DEFAULT_AUTHORITY_HOST; + } else if (this.discoveryComplete()) { + return this.metadata.preferred_cache; + } else { + throw createClientAuthError(endpointResolutionError); + } + } + /** + * Returns whether or not the provided host is an alias of this authority instance + * @param host + */ + isAlias(host) { + return this.metadata.aliases.indexOf(host) > -1; + } + /** + * Returns whether or not the provided host is an alias of a known Microsoft authority for purposes of endpoint discovery + * @param host + */ + isAliasOfKnownMicrosoftAuthority(host) { + return InstanceDiscoveryMetadataAliases.has(host); + } + /** + * Checks whether the provided host is that of a public cloud authority + * + * @param authority string + * @returns bool + */ + static isPublicCloudAuthority(host) { + return Constants.KNOWN_PUBLIC_CLOUDS.indexOf(host) >= 0; + } + /** + * Rebuild the authority string with the region + * + * @param host string + * @param region string + */ + static buildRegionalAuthorityString(host, region, queryString) { + const authorityUrlInstance = new UrlString(host); + authorityUrlInstance.validateAsUri(); + const authorityUrlParts = authorityUrlInstance.getUrlComponents(); + let hostNameAndPort = `${region}.${authorityUrlParts.HostNameAndPort}`; + if (this.isPublicCloudAuthority(authorityUrlParts.HostNameAndPort)) { + hostNameAndPort = `${region}.${Constants.REGIONAL_AUTH_PUBLIC_CLOUD_SUFFIX}`; + } + const url2 = UrlString.constructAuthorityUriFromObject({ + ...authorityUrlInstance.getUrlComponents(), + HostNameAndPort: hostNameAndPort + }).urlString; + if (queryString) + return `${url2}?${queryString}`; + return url2; + } + /** + * Replace the endpoints in the metadata object with their regional equivalents. + * + * @param metadata OpenIdConfigResponse + * @param azureRegion string + */ + static replaceWithRegionalInformation(metadata, azureRegion) { + const regionalMetadata = { ...metadata }; + regionalMetadata.authorization_endpoint = _Authority.buildRegionalAuthorityString(regionalMetadata.authorization_endpoint, azureRegion); + regionalMetadata.token_endpoint = _Authority.buildRegionalAuthorityString(regionalMetadata.token_endpoint, azureRegion); + if (regionalMetadata.end_session_endpoint) { + regionalMetadata.end_session_endpoint = _Authority.buildRegionalAuthorityString(regionalMetadata.end_session_endpoint, azureRegion); + } + return regionalMetadata; + } + /** + * Transform CIAM_AUTHORIY as per the below rules: + * If no path segments found and it is a CIAM authority (hostname ends with .ciamlogin.com), then transform it + * + * NOTE: The transformation path should go away once STS supports CIAM with the format: `tenantIdorDomain.ciamlogin.com` + * `ciamlogin.com` can also change in the future and we should accommodate the same + * + * @param authority + */ + static transformCIAMAuthority(authority) { + let ciamAuthority = authority; + const authorityUrl = new UrlString(authority); + const authorityUrlComponents = authorityUrl.getUrlComponents(); + if (authorityUrlComponents.PathSegments.length === 0 && authorityUrlComponents.HostNameAndPort.endsWith(Constants.CIAM_AUTH_URL)) { + const tenantIdOrDomain = authorityUrlComponents.HostNameAndPort.split(".")[0]; + ciamAuthority = `${ciamAuthority}${tenantIdOrDomain}${Constants.AAD_TENANT_DOMAIN_SUFFIX}`; + } + return ciamAuthority; + } +}; +Authority.reservedTenantDomains = /* @__PURE__ */ new Set([ + "{tenant}", + "{tenantid}", + AADAuthorityConstants.COMMON, + AADAuthorityConstants.CONSUMERS, + AADAuthorityConstants.ORGANIZATIONS +]); +function getTenantFromAuthorityString(authority) { + const authorityUrl = new UrlString(authority); + const authorityUrlComponents = authorityUrl.getUrlComponents(); + const tenantId = authorityUrlComponents.PathSegments.slice(-1)[0]?.toLowerCase(); + switch (tenantId) { + case AADAuthorityConstants.COMMON: + case AADAuthorityConstants.ORGANIZATIONS: + case AADAuthorityConstants.CONSUMERS: + return void 0; + default: + return tenantId; + } +} +function formatAuthorityUri(authorityUri) { + return authorityUri.endsWith(Constants.FORWARD_SLASH) ? authorityUri : `${authorityUri}${Constants.FORWARD_SLASH}`; +} +function buildStaticAuthorityOptions(authOptions) { + const rawCloudDiscoveryMetadata = authOptions.cloudDiscoveryMetadata; + let cloudDiscoveryMetadata = void 0; + if (rawCloudDiscoveryMetadata) { + try { + cloudDiscoveryMetadata = JSON.parse(rawCloudDiscoveryMetadata); + } catch (e) { + throw createClientConfigurationError(invalidCloudDiscoveryMetadata); + } + } + return { + canonicalAuthority: authOptions.authority ? formatAuthorityUri(authOptions.authority) : void 0, + knownAuthorities: authOptions.knownAuthorities, + cloudDiscoveryMetadata + }; +} + +// node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/authority/AuthorityFactory.mjs +async function createDiscoveredInstance(authorityUri, networkClient, cacheManager, authorityOptions, logger31, correlationId, performanceClient) { + performanceClient?.addQueueMeasurement(PerformanceEvents.AuthorityFactoryCreateDiscoveredInstance, correlationId); + const authorityUriFinal = Authority.transformCIAMAuthority(formatAuthorityUri(authorityUri)); + const acquireTokenAuthority = new Authority(authorityUriFinal, networkClient, cacheManager, authorityOptions, logger31, correlationId, performanceClient); + try { + await invokeAsync(acquireTokenAuthority.resolveEndpointsAsync.bind(acquireTokenAuthority), PerformanceEvents.AuthorityResolveEndpointsAsync, logger31, performanceClient, correlationId)(); + return acquireTokenAuthority; + } catch (e) { + throw createClientAuthError(endpointResolutionError); + } +} + +// node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/error/ServerError.mjs +var ServerError = class _ServerError extends AuthError { + constructor(errorCode, errorMessage, subError, errorNo, status) { + super(errorCode, errorMessage, subError); + this.name = "ServerError"; + this.errorNo = errorNo; + this.status = status; + Object.setPrototypeOf(this, _ServerError.prototype); + } +}; + +// node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/network/RequestThumbprint.mjs +function getRequestThumbprint(clientId, request, homeAccountId) { + return { + clientId, + authority: request.authority, + scopes: request.scopes, + homeAccountIdentifier: homeAccountId, + claims: request.claims, + authenticationScheme: request.authenticationScheme, + resourceRequestMethod: request.resourceRequestMethod, + resourceRequestUri: request.resourceRequestUri, + shrClaims: request.shrClaims, + sshKid: request.sshKid, + embeddedClientId: request.embeddedClientId || request.tokenBodyParameters?.clientId + }; +} + +// node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/network/ThrottlingUtils.mjs +var ThrottlingUtils = class _ThrottlingUtils { + /** + * Prepares a RequestThumbprint to be stored as a key. + * @param thumbprint + */ + static generateThrottlingStorageKey(thumbprint) { + return `${ThrottlingConstants.THROTTLING_PREFIX}.${JSON.stringify(thumbprint)}`; + } + /** + * Performs necessary throttling checks before a network request. + * @param cacheManager + * @param thumbprint + */ + static preProcess(cacheManager, thumbprint, correlationId) { + const key = _ThrottlingUtils.generateThrottlingStorageKey(thumbprint); + const value = cacheManager.getThrottlingCache(key); + if (value) { + if (value.throttleTime < Date.now()) { + cacheManager.removeItem(key, correlationId); + return; + } + throw new ServerError(value.errorCodes?.join(" ") || Constants.EMPTY_STRING, value.errorMessage, value.subError); + } + } + /** + * Performs necessary throttling checks after a network request. + * @param cacheManager + * @param thumbprint + * @param response + */ + static postProcess(cacheManager, thumbprint, response, correlationId) { + if (_ThrottlingUtils.checkResponseStatus(response) || _ThrottlingUtils.checkResponseForRetryAfter(response)) { + const thumbprintValue = { + throttleTime: _ThrottlingUtils.calculateThrottleTime(parseInt(response.headers[HeaderNames.RETRY_AFTER])), + error: response.body.error, + errorCodes: response.body.error_codes, + errorMessage: response.body.error_description, + subError: response.body.suberror + }; + cacheManager.setThrottlingCache(_ThrottlingUtils.generateThrottlingStorageKey(thumbprint), thumbprintValue, correlationId); + } + } + /** + * Checks a NetworkResponse object's status codes against 429 or 5xx + * @param response + */ + static checkResponseStatus(response) { + return response.status === 429 || response.status >= 500 && response.status < 600; + } + /** + * Checks a NetworkResponse object's RetryAfter header + * @param response + */ + static checkResponseForRetryAfter(response) { + if (response.headers) { + return response.headers.hasOwnProperty(HeaderNames.RETRY_AFTER) && (response.status < 200 || response.status >= 300); + } + return false; + } + /** + * Calculates the Unix-time value for a throttle to expire given throttleTime in seconds. + * @param throttleTime + */ + static calculateThrottleTime(throttleTime) { + const time3 = throttleTime <= 0 ? 0 : throttleTime; + const currentSeconds = Date.now() / 1e3; + return Math.floor(Math.min(currentSeconds + (time3 || ThrottlingConstants.DEFAULT_THROTTLE_TIME_SECONDS), currentSeconds + ThrottlingConstants.DEFAULT_MAX_THROTTLE_TIME_SECONDS) * 1e3); + } + static removeThrottle(cacheManager, clientId, request, homeAccountIdentifier) { + const thumbprint = getRequestThumbprint(clientId, request, homeAccountIdentifier); + const key = this.generateThrottlingStorageKey(thumbprint); + cacheManager.removeItem(key, request.correlationId); + } +}; + +// node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/error/NetworkError.mjs +var NetworkError = class _NetworkError extends AuthError { + constructor(error2, httpStatus, responseHeaders) { + super(error2.errorCode, error2.errorMessage, error2.subError); + Object.setPrototypeOf(this, _NetworkError.prototype); + this.name = "NetworkError"; + this.error = error2; + this.httpStatus = httpStatus; + this.responseHeaders = responseHeaders; + } +}; + +// node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/client/BaseClient.mjs +var BaseClient = class { + constructor(configuration, performanceClient) { + this.config = buildClientConfiguration(configuration); + this.logger = new Logger(this.config.loggerOptions, name, version2); + this.cryptoUtils = this.config.cryptoInterface; + this.cacheManager = this.config.storageInterface; + this.networkClient = this.config.networkInterface; + this.serverTelemetryManager = this.config.serverTelemetryManager; + this.authority = this.config.authOptions.authority; + this.performanceClient = performanceClient; + } + /** + * Creates default headers for requests to token endpoint + */ + createTokenRequestHeaders(ccsCred) { + const headers = {}; + headers[HeaderNames.CONTENT_TYPE] = Constants.URL_FORM_CONTENT_TYPE; + if (!this.config.systemOptions.preventCorsPreflight && ccsCred) { + switch (ccsCred.type) { + case CcsCredentialType.HOME_ACCOUNT_ID: + try { + const clientInfo = buildClientInfoFromHomeAccountId(ccsCred.credential); + headers[HeaderNames.CCS_HEADER] = `Oid:${clientInfo.uid}@${clientInfo.utid}`; + } catch (e) { + this.logger.verbose("Could not parse home account ID for CCS Header: " + e); + } + break; + case CcsCredentialType.UPN: + headers[HeaderNames.CCS_HEADER] = `UPN: ${ccsCred.credential}`; + break; + } + } + return headers; + } + /** + * Http post to token endpoint + * @param tokenEndpoint + * @param queryString + * @param headers + * @param thumbprint + */ + async executePostToTokenEndpoint(tokenEndpoint, queryString, headers, thumbprint, correlationId, queuedEvent) { + if (queuedEvent) { + this.performanceClient?.addQueueMeasurement(queuedEvent, correlationId); + } + const response = await this.sendPostRequest(thumbprint, tokenEndpoint, { body: queryString, headers }, correlationId); + if (this.config.serverTelemetryManager && response.status < 500 && response.status !== 429) { + this.config.serverTelemetryManager.clearTelemetryCache(); + } + return response; + } + /** + * Wraps sendPostRequestAsync with necessary preflight and postflight logic + * @param thumbprint - Request thumbprint for throttling + * @param tokenEndpoint - Endpoint to make the POST to + * @param options - Body and Headers to include on the POST request + * @param correlationId - CorrelationId for telemetry + */ + async sendPostRequest(thumbprint, tokenEndpoint, options, correlationId) { + ThrottlingUtils.preProcess(this.cacheManager, thumbprint, correlationId); + let response; + try { + response = await invokeAsync(this.networkClient.sendPostRequestAsync.bind(this.networkClient), PerformanceEvents.NetworkClientSendPostRequestAsync, this.logger, this.performanceClient, correlationId)(tokenEndpoint, options); + const responseHeaders = response.headers || {}; + this.performanceClient?.addFields({ + refreshTokenSize: response.body.refresh_token?.length || 0, + httpVerToken: responseHeaders[HeaderNames.X_MS_HTTP_VERSION] || "", + requestId: responseHeaders[HeaderNames.X_MS_REQUEST_ID] || "" + }, correlationId); + } catch (e) { + if (e instanceof NetworkError) { + const responseHeaders = e.responseHeaders; + if (responseHeaders) { + this.performanceClient?.addFields({ + httpVerToken: responseHeaders[HeaderNames.X_MS_HTTP_VERSION] || "", + requestId: responseHeaders[HeaderNames.X_MS_REQUEST_ID] || "", + contentTypeHeader: responseHeaders[HeaderNames.CONTENT_TYPE] || void 0, + contentLengthHeader: responseHeaders[HeaderNames.CONTENT_LENGTH] || void 0, + httpStatus: e.httpStatus + }, correlationId); + } + throw e.error; + } + if (e instanceof AuthError) { + throw e; + } else { + throw createClientAuthError(networkError); + } + } + ThrottlingUtils.postProcess(this.cacheManager, thumbprint, response, correlationId); + return response; + } + /** + * Updates the authority object of the client. Endpoint discovery must be completed. + * @param updatedAuthority + */ + async updateAuthority(cloudInstanceHostname, correlationId) { + this.performanceClient?.addQueueMeasurement(PerformanceEvents.UpdateTokenEndpointAuthority, correlationId); + const cloudInstanceAuthorityUri = `https://${cloudInstanceHostname}/${this.authority.tenant}/`; + const cloudInstanceAuthority = await createDiscoveredInstance(cloudInstanceAuthorityUri, this.networkClient, this.cacheManager, this.authority.options, this.logger, correlationId, this.performanceClient); + this.authority = cloudInstanceAuthority; + } + /** + * Creates query string for the /token request + * @param request + */ + createTokenQueryParameters(request) { + const parameters = /* @__PURE__ */ new Map(); + if (request.embeddedClientId) { + addBrokerParameters(parameters, this.config.authOptions.clientId, this.config.authOptions.redirectUri); + } + if (request.tokenQueryParameters) { + addExtraQueryParameters(parameters, request.tokenQueryParameters); + } + addCorrelationId(parameters, request.correlationId); + instrumentBrokerParams(parameters, request.correlationId, this.performanceClient); + return mapToQueryString(parameters); + } +}; + +// node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/error/InteractionRequiredAuthErrorCodes.mjs +var noTokensFound = "no_tokens_found"; +var nativeAccountUnavailable = "native_account_unavailable"; +var refreshTokenExpired = "refresh_token_expired"; +var uxNotAllowed = "ux_not_allowed"; +var interactionRequired = "interaction_required"; +var consentRequired = "consent_required"; +var loginRequired = "login_required"; +var badToken = "bad_token"; +var interruptedUser = "interrupted_user"; + +// node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/error/InteractionRequiredAuthError.mjs +var InteractionRequiredServerErrorMessage = [ + interactionRequired, + consentRequired, + loginRequired, + badToken, + uxNotAllowed, + interruptedUser +]; +var InteractionRequiredAuthSubErrorMessage = [ + "message_only", + "additional_action", + "basic_action", + "user_password_expired", + "consent_required", + "bad_token", + "interrupted_user" +]; +var InteractionRequiredAuthErrorMessages = { + [noTokensFound]: "No refresh token found in the cache. Please sign-in.", + [nativeAccountUnavailable]: "The requested account is not available in the native broker. It may have been deleted or logged out. Please sign-in again using an interactive API.", + [refreshTokenExpired]: "Refresh token has expired.", + [badToken]: "Identity provider returned bad_token due to an expired or invalid refresh token. Please invoke an interactive API to resolve.", + [uxNotAllowed]: "`canShowUI` flag in Edge was set to false. User interaction required on web page. Please invoke an interactive API to resolve.", + [interruptedUser]: "The user could not be authenticated due to an interrupted state. Please invoke an interactive API to resolve." +}; +var InteractionRequiredAuthErrorMessage = { + noTokensFoundError: { + code: noTokensFound, + desc: InteractionRequiredAuthErrorMessages[noTokensFound] + }, + native_account_unavailable: { + code: nativeAccountUnavailable, + desc: InteractionRequiredAuthErrorMessages[nativeAccountUnavailable] + }, + bad_token: { + code: badToken, + desc: InteractionRequiredAuthErrorMessages[badToken] + }, + interrupted_user: { + code: interruptedUser, + desc: InteractionRequiredAuthErrorMessages[interruptedUser] + } +}; +var InteractionRequiredAuthError = class _InteractionRequiredAuthError extends AuthError { + constructor(errorCode, errorMessage, subError, timestamp, traceId, correlationId, claims, errorNo) { + super(errorCode, errorMessage, subError); + Object.setPrototypeOf(this, _InteractionRequiredAuthError.prototype); + this.timestamp = timestamp || Constants.EMPTY_STRING; + this.traceId = traceId || Constants.EMPTY_STRING; + this.correlationId = correlationId || Constants.EMPTY_STRING; + this.claims = claims || Constants.EMPTY_STRING; + this.name = "InteractionRequiredAuthError"; + this.errorNo = errorNo; + } +}; +function isInteractionRequiredError(errorCode, errorString, subError) { + const isInteractionRequiredErrorCode = !!errorCode && InteractionRequiredServerErrorMessage.indexOf(errorCode) > -1; + const isInteractionRequiredSubError = !!subError && InteractionRequiredAuthSubErrorMessage.indexOf(subError) > -1; + const isInteractionRequiredErrorDesc = !!errorString && InteractionRequiredServerErrorMessage.some((irErrorCode) => { + return errorString.indexOf(irErrorCode) > -1; + }); + return isInteractionRequiredErrorCode || isInteractionRequiredErrorDesc || isInteractionRequiredSubError; +} +function createInteractionRequiredAuthError(errorCode) { + return new InteractionRequiredAuthError(errorCode, InteractionRequiredAuthErrorMessages[errorCode]); +} + +// node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/utils/ProtocolUtils.mjs +var ProtocolUtils = class _ProtocolUtils { + /** + * Appends user state with random guid, or returns random guid. + * @param userState + * @param randomGuid + */ + static setRequestState(cryptoObj, userState, meta) { + const libraryState = _ProtocolUtils.generateLibraryState(cryptoObj, meta); + return userState ? `${libraryState}${Constants.RESOURCE_DELIM}${userState}` : libraryState; + } + /** + * Generates the state value used by the common library. + * @param randomGuid + * @param cryptoObj + */ + static generateLibraryState(cryptoObj, meta) { + if (!cryptoObj) { + throw createClientAuthError(noCryptoObject); + } + const stateObj = { + id: cryptoObj.createNewGuid() + }; + if (meta) { + stateObj.meta = meta; + } + const stateString = JSON.stringify(stateObj); + return cryptoObj.base64Encode(stateString); + } + /** + * Parses the state into the RequestStateObject, which contains the LibraryState info and the state passed by the user. + * @param state + * @param cryptoObj + */ + static parseRequestState(cryptoObj, state3) { + if (!cryptoObj) { + throw createClientAuthError(noCryptoObject); + } + if (!state3) { + throw createClientAuthError(invalidState); + } + try { + const splitState = state3.split(Constants.RESOURCE_DELIM); + const libraryState = splitState[0]; + const userState = splitState.length > 1 ? splitState.slice(1).join(Constants.RESOURCE_DELIM) : Constants.EMPTY_STRING; + const libraryStateString = cryptoObj.base64Decode(libraryState); + const libraryStateObj = JSON.parse(libraryStateString); + return { + userRequestState: userState || Constants.EMPTY_STRING, + libraryState: libraryStateObj + }; + } catch (e) { + throw createClientAuthError(invalidState); + } + } +}; + +// node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/crypto/PopTokenGenerator.mjs +var KeyLocation = { + SW: "sw" +}; +var PopTokenGenerator = class { + constructor(cryptoUtils, performanceClient) { + this.cryptoUtils = cryptoUtils; + this.performanceClient = performanceClient; + } + /** + * Generates the req_cnf validated at the RP in the POP protocol for SHR parameters + * and returns an object containing the keyid, the full req_cnf string and the req_cnf string hash + * @param request + * @returns + */ + async generateCnf(request, logger31) { + this.performanceClient?.addQueueMeasurement(PerformanceEvents.PopTokenGenerateCnf, request.correlationId); + const reqCnf = await invokeAsync(this.generateKid.bind(this), PerformanceEvents.PopTokenGenerateCnf, logger31, this.performanceClient, request.correlationId)(request); + const reqCnfString = this.cryptoUtils.base64UrlEncode(JSON.stringify(reqCnf)); + return { + kid: reqCnf.kid, + reqCnfString + }; + } + /** + * Generates key_id for a SHR token request + * @param request + * @returns + */ + async generateKid(request) { + this.performanceClient?.addQueueMeasurement(PerformanceEvents.PopTokenGenerateKid, request.correlationId); + const kidThumbprint = await this.cryptoUtils.getPublicKeyThumbprint(request); + return { + kid: kidThumbprint, + xms_ksl: KeyLocation.SW + }; + } + /** + * Signs the POP access_token with the local generated key-pair + * @param accessToken + * @param request + * @returns + */ + async signPopToken(accessToken, keyId, request) { + return this.signPayload(accessToken, keyId, request); + } + /** + * Utility function to generate the signed JWT for an access_token + * @param payload + * @param kid + * @param request + * @param claims + * @returns + */ + async signPayload(payload, keyId, request, claims) { + const { resourceRequestMethod, resourceRequestUri, shrClaims, shrNonce, shrOptions } = request; + const resourceUrlString = resourceRequestUri ? new UrlString(resourceRequestUri) : void 0; + const resourceUrlComponents = resourceUrlString?.getUrlComponents(); + return this.cryptoUtils.signJwt({ + at: payload, + ts: nowSeconds(), + m: resourceRequestMethod?.toUpperCase(), + u: resourceUrlComponents?.HostNameAndPort, + nonce: shrNonce || this.cryptoUtils.createNewGuid(), + p: resourceUrlComponents?.AbsolutePath, + q: resourceUrlComponents?.QueryString ? [[], resourceUrlComponents.QueryString] : void 0, + client_claims: shrClaims || void 0, + ...claims + }, keyId, shrOptions, request.correlationId); + } +}; + +// node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/cache/persistence/TokenCacheContext.mjs +var TokenCacheContext = class { + constructor(tokenCache, hasChanged) { + this.cache = tokenCache; + this.hasChanged = hasChanged; + } + /** + * boolean which indicates the changes in cache + */ + get cacheHasChanged() { + return this.hasChanged; + } + /** + * function to retrieve the token cache + */ + get tokenCache() { + return this.cache; + } +}; + +// node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/response/ResponseHandler.mjs +var ResponseHandler = class _ResponseHandler { + constructor(clientId, cacheStorage, cryptoObj, logger31, serializableCache, persistencePlugin, performanceClient) { + this.clientId = clientId; + this.cacheStorage = cacheStorage; + this.cryptoObj = cryptoObj; + this.logger = logger31; + this.serializableCache = serializableCache; + this.persistencePlugin = persistencePlugin; + this.performanceClient = performanceClient; + } + /** + * Function which validates server authorization token response. + * @param serverResponse + * @param refreshAccessToken + */ + validateTokenResponse(serverResponse, refreshAccessToken2) { + if (serverResponse.error || serverResponse.error_description || serverResponse.suberror) { + const errString = `Error(s): ${serverResponse.error_codes || Constants.NOT_AVAILABLE} - Timestamp: ${serverResponse.timestamp || Constants.NOT_AVAILABLE} - Description: ${serverResponse.error_description || Constants.NOT_AVAILABLE} - Correlation ID: ${serverResponse.correlation_id || Constants.NOT_AVAILABLE} - Trace ID: ${serverResponse.trace_id || Constants.NOT_AVAILABLE}`; + const serverErrorNo = serverResponse.error_codes?.length ? serverResponse.error_codes[0] : void 0; + const serverError = new ServerError(serverResponse.error, errString, serverResponse.suberror, serverErrorNo, serverResponse.status); + if (refreshAccessToken2 && serverResponse.status && serverResponse.status >= HttpStatus.SERVER_ERROR_RANGE_START && serverResponse.status <= HttpStatus.SERVER_ERROR_RANGE_END) { + this.logger.warning(`executeTokenRequest:validateTokenResponse - AAD is currently unavailable and the access token is unable to be refreshed. +${serverError}`); + return; + } else if (refreshAccessToken2 && serverResponse.status && serverResponse.status >= HttpStatus.CLIENT_ERROR_RANGE_START && serverResponse.status <= HttpStatus.CLIENT_ERROR_RANGE_END) { + this.logger.warning(`executeTokenRequest:validateTokenResponse - AAD is currently available but is unable to refresh the access token. +${serverError}`); + return; + } + if (isInteractionRequiredError(serverResponse.error, serverResponse.error_description, serverResponse.suberror)) { + throw new InteractionRequiredAuthError(serverResponse.error, serverResponse.error_description, serverResponse.suberror, serverResponse.timestamp || Constants.EMPTY_STRING, serverResponse.trace_id || Constants.EMPTY_STRING, serverResponse.correlation_id || Constants.EMPTY_STRING, serverResponse.claims || Constants.EMPTY_STRING, serverErrorNo); + } + throw serverError; + } + } + /** + * Returns a constructed token response based on given string. Also manages the cache updates and cleanups. + * @param serverTokenResponse + * @param authority + */ + async handleServerTokenResponse(serverTokenResponse, authority, reqTimestamp, request, apiId, authCodePayload, userAssertionHash, handlingRefreshTokenResponse, forceCacheRefreshTokenResponse, serverRequestId) { + this.performanceClient?.addQueueMeasurement(PerformanceEvents.HandleServerTokenResponse, serverTokenResponse.correlation_id); + let idTokenClaims; + if (serverTokenResponse.id_token) { + idTokenClaims = extractTokenClaims(serverTokenResponse.id_token || Constants.EMPTY_STRING, this.cryptoObj.base64Decode); + if (authCodePayload && authCodePayload.nonce) { + if (idTokenClaims.nonce !== authCodePayload.nonce) { + throw createClientAuthError(nonceMismatch); + } + } + if (request.maxAge || request.maxAge === 0) { + const authTime = idTokenClaims.auth_time; + if (!authTime) { + throw createClientAuthError(authTimeNotFound); + } + checkMaxAge(authTime, request.maxAge); + } + } + this.homeAccountIdentifier = AccountEntity.generateHomeAccountId(serverTokenResponse.client_info || Constants.EMPTY_STRING, authority.authorityType, this.logger, this.cryptoObj, idTokenClaims); + let requestStateObj; + if (!!authCodePayload && !!authCodePayload.state) { + requestStateObj = ProtocolUtils.parseRequestState(this.cryptoObj, authCodePayload.state); + } + serverTokenResponse.key_id = serverTokenResponse.key_id || request.sshKid || void 0; + const cacheRecord = this.generateCacheRecord(serverTokenResponse, authority, reqTimestamp, request, idTokenClaims, userAssertionHash, authCodePayload); + let cacheContext; + try { + if (this.persistencePlugin && this.serializableCache) { + this.logger.verbose("Persistence enabled, calling beforeCacheAccess"); + cacheContext = new TokenCacheContext(this.serializableCache, true); + await this.persistencePlugin.beforeCacheAccess(cacheContext); + } + if (handlingRefreshTokenResponse && !forceCacheRefreshTokenResponse && cacheRecord.account) { + const cachedAccounts = this.cacheStorage.getAllAccounts({ + homeAccountId: cacheRecord.account.homeAccountId, + environment: cacheRecord.account.environment + }, request.correlationId); + if (cachedAccounts.length < 1) { + this.logger.warning("Account used to refresh tokens not in persistence, refreshed tokens will not be stored in the cache"); + this.performanceClient?.addFields({ + acntLoggedOut: true + }, request.correlationId); + return await _ResponseHandler.generateAuthenticationResult(this.cryptoObj, authority, cacheRecord, false, request, idTokenClaims, requestStateObj, void 0, serverRequestId); + } + } + await this.cacheStorage.saveCacheRecord(cacheRecord, request.correlationId, isKmsi(idTokenClaims || {}), apiId, request.storeInCache); + } finally { + if (this.persistencePlugin && this.serializableCache && cacheContext) { + this.logger.verbose("Persistence enabled, calling afterCacheAccess"); + await this.persistencePlugin.afterCacheAccess(cacheContext); + } + } + return _ResponseHandler.generateAuthenticationResult(this.cryptoObj, authority, cacheRecord, false, request, idTokenClaims, requestStateObj, serverTokenResponse, serverRequestId); + } + /** + * Generates CacheRecord + * @param serverTokenResponse + * @param idTokenObj + * @param authority + */ + generateCacheRecord(serverTokenResponse, authority, reqTimestamp, request, idTokenClaims, userAssertionHash, authCodePayload) { + const env = authority.getPreferredCache(); + if (!env) { + throw createClientAuthError(invalidCacheEnvironment); + } + const claimsTenantId = getTenantIdFromIdTokenClaims(idTokenClaims); + let cachedIdToken; + let cachedAccount; + if (serverTokenResponse.id_token && !!idTokenClaims) { + cachedIdToken = createIdTokenEntity(this.homeAccountIdentifier, env, serverTokenResponse.id_token, this.clientId, claimsTenantId || ""); + cachedAccount = buildAccountToCache( + this.cacheStorage, + authority, + this.homeAccountIdentifier, + this.cryptoObj.base64Decode, + request.correlationId, + idTokenClaims, + serverTokenResponse.client_info, + env, + claimsTenantId, + authCodePayload, + void 0, + // nativeAccountId + this.logger + ); + } + let cachedAccessToken = null; + if (serverTokenResponse.access_token) { + const responseScopes = serverTokenResponse.scope ? ScopeSet.fromString(serverTokenResponse.scope) : new ScopeSet(request.scopes || []); + const expiresIn = (typeof serverTokenResponse.expires_in === "string" ? parseInt(serverTokenResponse.expires_in, 10) : serverTokenResponse.expires_in) || 0; + const extExpiresIn = (typeof serverTokenResponse.ext_expires_in === "string" ? parseInt(serverTokenResponse.ext_expires_in, 10) : serverTokenResponse.ext_expires_in) || 0; + const refreshIn = (typeof serverTokenResponse.refresh_in === "string" ? parseInt(serverTokenResponse.refresh_in, 10) : serverTokenResponse.refresh_in) || void 0; + const tokenExpirationSeconds = reqTimestamp + expiresIn; + const extendedTokenExpirationSeconds = tokenExpirationSeconds + extExpiresIn; + const refreshOnSeconds = refreshIn && refreshIn > 0 ? reqTimestamp + refreshIn : void 0; + cachedAccessToken = createAccessTokenEntity(this.homeAccountIdentifier, env, serverTokenResponse.access_token, this.clientId, claimsTenantId || authority.tenant || "", responseScopes.printScopes(), tokenExpirationSeconds, extendedTokenExpirationSeconds, this.cryptoObj.base64Decode, refreshOnSeconds, serverTokenResponse.token_type, userAssertionHash, serverTokenResponse.key_id, request.claims, request.requestedClaimsHash); + } + let cachedRefreshToken = null; + if (serverTokenResponse.refresh_token) { + let rtExpiresOn; + if (serverTokenResponse.refresh_token_expires_in) { + const rtExpiresIn = typeof serverTokenResponse.refresh_token_expires_in === "string" ? parseInt(serverTokenResponse.refresh_token_expires_in, 10) : serverTokenResponse.refresh_token_expires_in; + rtExpiresOn = reqTimestamp + rtExpiresIn; + this.performanceClient?.addFields({ + ntwkRtExpiresOnSeconds: rtExpiresOn + }, request.correlationId); + } + cachedRefreshToken = createRefreshTokenEntity(this.homeAccountIdentifier, env, serverTokenResponse.refresh_token, this.clientId, serverTokenResponse.foci, userAssertionHash, rtExpiresOn); + } + let cachedAppMetadata = null; + if (serverTokenResponse.foci) { + cachedAppMetadata = { + clientId: this.clientId, + environment: env, + familyId: serverTokenResponse.foci + }; + } + return { + account: cachedAccount, + idToken: cachedIdToken, + accessToken: cachedAccessToken, + refreshToken: cachedRefreshToken, + appMetadata: cachedAppMetadata + }; + } + /** + * Creates an @AuthenticationResult from @CacheRecord , @IdToken , and a boolean that states whether or not the result is from cache. + * + * Optionally takes a state string that is set as-is in the response. + * + * @param cacheRecord + * @param idTokenObj + * @param fromTokenCache + * @param stateString + */ + static async generateAuthenticationResult(cryptoObj, authority, cacheRecord, fromTokenCache, request, idTokenClaims, requestState, serverTokenResponse, requestId) { + let accessToken = Constants.EMPTY_STRING; + let responseScopes = []; + let expiresOn = null; + let extExpiresOn; + let refreshOn; + let familyId = Constants.EMPTY_STRING; + if (cacheRecord.accessToken) { + if (cacheRecord.accessToken.tokenType === AuthenticationScheme.POP && !request.popKid) { + const popTokenGenerator = new PopTokenGenerator(cryptoObj); + const { secret, keyId } = cacheRecord.accessToken; + if (!keyId) { + throw createClientAuthError(keyIdMissing); + } + accessToken = await popTokenGenerator.signPopToken(secret, keyId, request); + } else { + accessToken = cacheRecord.accessToken.secret; + } + responseScopes = ScopeSet.fromString(cacheRecord.accessToken.target).asArray(); + expiresOn = toDateFromSeconds(cacheRecord.accessToken.expiresOn); + extExpiresOn = toDateFromSeconds(cacheRecord.accessToken.extendedExpiresOn); + if (cacheRecord.accessToken.refreshOn) { + refreshOn = toDateFromSeconds(cacheRecord.accessToken.refreshOn); + } + } + if (cacheRecord.appMetadata) { + familyId = cacheRecord.appMetadata.familyId === THE_FAMILY_ID ? THE_FAMILY_ID : ""; + } + const uid = idTokenClaims?.oid || idTokenClaims?.sub || ""; + const tid = idTokenClaims?.tid || ""; + if (serverTokenResponse?.spa_accountid && !!cacheRecord.account) { + cacheRecord.account.nativeAccountId = serverTokenResponse?.spa_accountid; + } + const accountInfo = cacheRecord.account ? updateAccountTenantProfileData( + AccountEntity.getAccountInfo(cacheRecord.account), + void 0, + // tenantProfile optional + idTokenClaims, + cacheRecord.idToken?.secret + ) : null; + return { + authority: authority.canonicalAuthority, + uniqueId: uid, + tenantId: tid, + scopes: responseScopes, + account: accountInfo, + idToken: cacheRecord?.idToken?.secret || "", + idTokenClaims: idTokenClaims || {}, + accessToken, + fromCache: fromTokenCache, + expiresOn, + extExpiresOn, + refreshOn, + correlationId: request.correlationId, + requestId: requestId || Constants.EMPTY_STRING, + familyId, + tokenType: cacheRecord.accessToken?.tokenType || Constants.EMPTY_STRING, + state: requestState ? requestState.userRequestState : Constants.EMPTY_STRING, + cloudGraphHostName: cacheRecord.account?.cloudGraphHostName || Constants.EMPTY_STRING, + msGraphHost: cacheRecord.account?.msGraphHost || Constants.EMPTY_STRING, + code: serverTokenResponse?.spa_code, + fromNativeBroker: false + }; + } +}; +function buildAccountToCache(cacheStorage, authority, homeAccountId, base64Decode, correlationId, idTokenClaims, clientInfo, environment, claimsTenantId, authCodePayload, nativeAccountId, logger31) { + logger31?.verbose("setCachedAccount called"); + const accountKeys = cacheStorage.getAccountKeys(); + const baseAccountKey = accountKeys.find((accountKey) => { + return accountKey.startsWith(homeAccountId); + }); + let cachedAccount = null; + if (baseAccountKey) { + cachedAccount = cacheStorage.getAccount(baseAccountKey, correlationId); + } + const baseAccount = cachedAccount || AccountEntity.createAccount({ + homeAccountId, + idTokenClaims, + clientInfo, + environment, + cloudGraphHostName: authCodePayload?.cloud_graph_host_name, + msGraphHost: authCodePayload?.msgraph_host, + nativeAccountId + }, authority, base64Decode); + const tenantProfiles = baseAccount.tenantProfiles || []; + const tenantId = claimsTenantId || baseAccount.realm; + if (tenantId && !tenantProfiles.find((tenantProfile) => { + return tenantProfile.tenantId === tenantId; + })) { + const newTenantProfile = buildTenantProfile(homeAccountId, baseAccount.localAccountId, tenantId, idTokenClaims); + tenantProfiles.push(newTenantProfile); + } + baseAccount.tenantProfiles = tenantProfiles; + return baseAccount; +} + +// node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/utils/ClientAssertionUtils.mjs +async function getClientAssertion(clientAssertion, clientId, tokenEndpoint) { + if (typeof clientAssertion === "string") { + return clientAssertion; + } else { + const config2 = { + clientId, + tokenEndpoint + }; + return clientAssertion(config2); + } +} + +// node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/client/AuthorizationCodeClient.mjs +var AuthorizationCodeClient = class extends BaseClient { + constructor(configuration, performanceClient) { + super(configuration, performanceClient); + this.includeRedirectUri = true; + this.oidcDefaultScopes = this.config.authOptions.authority.options.OIDCOptions?.defaultScopes; + } + /** + * API to acquire a token in exchange of 'authorization_code` acquired by the user in the first leg of the + * authorization_code_grant + * @param request + * @param apiId - API identifier for telemetry tracking + */ + async acquireToken(request, apiId, authCodePayload) { + this.performanceClient?.addQueueMeasurement(PerformanceEvents.AuthClientAcquireToken, request.correlationId); + if (!request.code) { + throw createClientAuthError(requestCannotBeMade); + } + const reqTimestamp = nowSeconds(); + const response = await invokeAsync(this.executeTokenRequest.bind(this), PerformanceEvents.AuthClientExecuteTokenRequest, this.logger, this.performanceClient, request.correlationId)(this.authority, request); + const requestId = response.headers?.[HeaderNames.X_MS_REQUEST_ID]; + const responseHandler = new ResponseHandler(this.config.authOptions.clientId, this.cacheManager, this.cryptoUtils, this.logger, this.config.serializableCache, this.config.persistencePlugin, this.performanceClient); + responseHandler.validateTokenResponse(response.body); + return invokeAsync(responseHandler.handleServerTokenResponse.bind(responseHandler), PerformanceEvents.HandleServerTokenResponse, this.logger, this.performanceClient, request.correlationId)(response.body, this.authority, reqTimestamp, request, apiId, authCodePayload, void 0, void 0, void 0, requestId); + } + /** + * Used to log out the current user, and redirect the user to the postLogoutRedirectUri. + * Default behaviour is to redirect the user to `window.location.href`. + * @param authorityUri + */ + getLogoutUri(logoutRequest) { + if (!logoutRequest) { + throw createClientConfigurationError(logoutRequestEmpty); + } + const queryString = this.createLogoutUrlQueryString(logoutRequest); + return UrlString.appendQueryString(this.authority.endSessionEndpoint, queryString); + } + /** + * Executes POST request to token endpoint + * @param authority + * @param request + */ + async executeTokenRequest(authority, request) { + this.performanceClient?.addQueueMeasurement(PerformanceEvents.AuthClientExecuteTokenRequest, request.correlationId); + const queryParametersString = this.createTokenQueryParameters(request); + const endpoint = UrlString.appendQueryString(authority.tokenEndpoint, queryParametersString); + const requestBody = await invokeAsync(this.createTokenRequestBody.bind(this), PerformanceEvents.AuthClientCreateTokenRequestBody, this.logger, this.performanceClient, request.correlationId)(request); + let ccsCredential = void 0; + if (request.clientInfo) { + try { + const clientInfo = buildClientInfo(request.clientInfo, this.cryptoUtils.base64Decode); + ccsCredential = { + credential: `${clientInfo.uid}${Separators.CLIENT_INFO_SEPARATOR}${clientInfo.utid}`, + type: CcsCredentialType.HOME_ACCOUNT_ID + }; + } catch (e) { + this.logger.verbose("Could not parse client info for CCS Header: " + e); + } + } + const headers = this.createTokenRequestHeaders(ccsCredential || request.ccsCredential); + const thumbprint = getRequestThumbprint(this.config.authOptions.clientId, request); + return invokeAsync(this.executePostToTokenEndpoint.bind(this), PerformanceEvents.AuthorizationCodeClientExecutePostToTokenEndpoint, this.logger, this.performanceClient, request.correlationId)(endpoint, requestBody, headers, thumbprint, request.correlationId, PerformanceEvents.AuthorizationCodeClientExecutePostToTokenEndpoint); + } + /** + * Generates a map for all the params to be sent to the service + * @param request + */ + async createTokenRequestBody(request) { + this.performanceClient?.addQueueMeasurement(PerformanceEvents.AuthClientCreateTokenRequestBody, request.correlationId); + const parameters = /* @__PURE__ */ new Map(); + addClientId(parameters, request.embeddedClientId || request.tokenBodyParameters?.[CLIENT_ID] || this.config.authOptions.clientId); + if (!this.includeRedirectUri) { + if (!request.redirectUri) { + throw createClientConfigurationError(redirectUriEmpty); + } + } else { + addRedirectUri(parameters, request.redirectUri); + } + addScopes(parameters, request.scopes, true, this.oidcDefaultScopes); + addAuthorizationCode(parameters, request.code); + addLibraryInfo(parameters, this.config.libraryInfo); + addApplicationTelemetry(parameters, this.config.telemetry.application); + addThrottling(parameters); + if (this.serverTelemetryManager && !isOidcProtocolMode(this.config)) { + addServerTelemetry(parameters, this.serverTelemetryManager); + } + if (request.codeVerifier) { + addCodeVerifier(parameters, request.codeVerifier); + } + if (this.config.clientCredentials.clientSecret) { + addClientSecret(parameters, this.config.clientCredentials.clientSecret); + } + if (this.config.clientCredentials.clientAssertion) { + const clientAssertion = this.config.clientCredentials.clientAssertion; + addClientAssertion(parameters, await getClientAssertion(clientAssertion.assertion, this.config.authOptions.clientId, request.resourceRequestUri)); + addClientAssertionType(parameters, clientAssertion.assertionType); + } + addGrantType(parameters, GrantType.AUTHORIZATION_CODE_GRANT); + addClientInfo(parameters); + if (request.authenticationScheme === AuthenticationScheme.POP) { + const popTokenGenerator = new PopTokenGenerator(this.cryptoUtils, this.performanceClient); + let reqCnfData; + if (!request.popKid) { + const generatedReqCnfData = await invokeAsync(popTokenGenerator.generateCnf.bind(popTokenGenerator), PerformanceEvents.PopTokenGenerateCnf, this.logger, this.performanceClient, request.correlationId)(request, this.logger); + reqCnfData = generatedReqCnfData.reqCnfString; + } else { + reqCnfData = this.cryptoUtils.encodeKid(request.popKid); + } + addPopToken(parameters, reqCnfData); + } else if (request.authenticationScheme === AuthenticationScheme.SSH) { + if (request.sshJwk) { + addSshJwk(parameters, request.sshJwk); + } else { + throw createClientConfigurationError(missingSshJwk); + } + } + let ccsCred = void 0; + if (request.clientInfo) { + try { + const clientInfo = buildClientInfo(request.clientInfo, this.cryptoUtils.base64Decode); + ccsCred = { + credential: `${clientInfo.uid}${Separators.CLIENT_INFO_SEPARATOR}${clientInfo.utid}`, + type: CcsCredentialType.HOME_ACCOUNT_ID + }; + } catch (e) { + this.logger.verbose("Could not parse client info for CCS Header: " + e); + } + } else { + ccsCred = request.ccsCredential; + } + if (this.config.systemOptions.preventCorsPreflight && ccsCred) { + switch (ccsCred.type) { + case CcsCredentialType.HOME_ACCOUNT_ID: + try { + const clientInfo = buildClientInfoFromHomeAccountId(ccsCred.credential); + addCcsOid(parameters, clientInfo); + } catch (e) { + this.logger.verbose("Could not parse home account ID for CCS Header: " + e); + } + break; + case CcsCredentialType.UPN: + addCcsUpn(parameters, ccsCred.credential); + break; + } + } + if (request.embeddedClientId) { + addBrokerParameters(parameters, this.config.authOptions.clientId, this.config.authOptions.redirectUri); + } + if (request.tokenBodyParameters) { + addExtraQueryParameters(parameters, request.tokenBodyParameters); + } + if (request.enableSpaAuthorizationCode && (!request.tokenBodyParameters || !request.tokenBodyParameters[RETURN_SPA_CODE])) { + addExtraQueryParameters(parameters, { + [RETURN_SPA_CODE]: "1" + }); + } + instrumentBrokerParams(parameters, request.correlationId, this.performanceClient); + const configClaims = request.skipBrokerClaims && parameters.has(BROKER_CLIENT_ID) ? void 0 : this.config.authOptions.clientCapabilities; + if (!StringUtils.isEmptyObj(request.claims) || configClaims && configClaims.length > 0) { + addClaims(parameters, request.claims, configClaims); + } + return mapToQueryString(parameters); + } + /** + * This API validates the `EndSessionRequest` and creates a URL + * @param request + */ + createLogoutUrlQueryString(request) { + const parameters = /* @__PURE__ */ new Map(); + if (request.postLogoutRedirectUri) { + addPostLogoutRedirectUri(parameters, request.postLogoutRedirectUri); + } + if (request.correlationId) { + addCorrelationId(parameters, request.correlationId); + } + if (request.idTokenHint) { + addIdTokenHint(parameters, request.idTokenHint); + } + if (request.state) { + addState(parameters, request.state); + } + if (request.logoutHint) { + addLogoutHint(parameters, request.logoutHint); + } + if (request.extraQueryParameters) { + addExtraQueryParameters(parameters, request.extraQueryParameters); + } + if (this.config.authOptions.instanceAware) { + addInstanceAware(parameters); + } + return mapToQueryString(parameters, this.config.authOptions.encodeExtraQueryParams, request.extraQueryParameters); + } +}; + +// node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/client/RefreshTokenClient.mjs +var DEFAULT_REFRESH_TOKEN_EXPIRATION_OFFSET_SECONDS = 300; +var RefreshTokenClient = class extends BaseClient { + constructor(configuration, performanceClient) { + super(configuration, performanceClient); + } + async acquireToken(request, apiId) { + this.performanceClient?.addQueueMeasurement(PerformanceEvents.RefreshTokenClientAcquireToken, request.correlationId); + const reqTimestamp = nowSeconds(); + const response = await invokeAsync(this.executeTokenRequest.bind(this), PerformanceEvents.RefreshTokenClientExecuteTokenRequest, this.logger, this.performanceClient, request.correlationId)(request, this.authority); + const requestId = response.headers?.[HeaderNames.X_MS_REQUEST_ID]; + const responseHandler = new ResponseHandler(this.config.authOptions.clientId, this.cacheManager, this.cryptoUtils, this.logger, this.config.serializableCache, this.config.persistencePlugin); + responseHandler.validateTokenResponse(response.body); + return invokeAsync(responseHandler.handleServerTokenResponse.bind(responseHandler), PerformanceEvents.HandleServerTokenResponse, this.logger, this.performanceClient, request.correlationId)(response.body, this.authority, reqTimestamp, request, apiId, void 0, void 0, true, request.forceCache, requestId); + } + /** + * Gets cached refresh token and attaches to request, then calls acquireToken API + * @param request + */ + async acquireTokenByRefreshToken(request, apiId) { + if (!request) { + throw createClientConfigurationError(tokenRequestEmpty); + } + this.performanceClient?.addQueueMeasurement(PerformanceEvents.RefreshTokenClientAcquireTokenByRefreshToken, request.correlationId); + if (!request.account) { + throw createClientAuthError(noAccountInSilentRequest); + } + const isFOCI = this.cacheManager.isAppMetadataFOCI(request.account.environment); + if (isFOCI) { + try { + return await invokeAsync(this.acquireTokenWithCachedRefreshToken.bind(this), PerformanceEvents.RefreshTokenClientAcquireTokenWithCachedRefreshToken, this.logger, this.performanceClient, request.correlationId)(request, true, apiId); + } catch (e) { + const noFamilyRTInCache = e instanceof InteractionRequiredAuthError && e.errorCode === noTokensFound; + const clientMismatchErrorWithFamilyRT = e instanceof ServerError && e.errorCode === Errors.INVALID_GRANT_ERROR && e.subError === Errors.CLIENT_MISMATCH_ERROR; + if (noFamilyRTInCache || clientMismatchErrorWithFamilyRT) { + return invokeAsync(this.acquireTokenWithCachedRefreshToken.bind(this), PerformanceEvents.RefreshTokenClientAcquireTokenWithCachedRefreshToken, this.logger, this.performanceClient, request.correlationId)(request, false, apiId); + } else { + throw e; + } + } + } + return invokeAsync(this.acquireTokenWithCachedRefreshToken.bind(this), PerformanceEvents.RefreshTokenClientAcquireTokenWithCachedRefreshToken, this.logger, this.performanceClient, request.correlationId)(request, false, apiId); + } + /** + * makes a network call to acquire tokens by exchanging RefreshToken available in userCache; throws if refresh token is not cached + * @param request + */ + async acquireTokenWithCachedRefreshToken(request, foci, apiId) { + this.performanceClient?.addQueueMeasurement(PerformanceEvents.RefreshTokenClientAcquireTokenWithCachedRefreshToken, request.correlationId); + const refreshToken = invoke(this.cacheManager.getRefreshToken.bind(this.cacheManager), PerformanceEvents.CacheManagerGetRefreshToken, this.logger, this.performanceClient, request.correlationId)(request.account, foci, request.correlationId, void 0, this.performanceClient); + if (!refreshToken) { + throw createInteractionRequiredAuthError(noTokensFound); + } + if (refreshToken.expiresOn) { + const offset = request.refreshTokenExpirationOffsetSeconds || DEFAULT_REFRESH_TOKEN_EXPIRATION_OFFSET_SECONDS; + this.performanceClient?.addFields({ + cacheRtExpiresOnSeconds: Number(refreshToken.expiresOn), + rtOffsetSeconds: offset + }, request.correlationId); + if (isTokenExpired(refreshToken.expiresOn, offset)) { + throw createInteractionRequiredAuthError(refreshTokenExpired); + } + } + const refreshTokenRequest = { + ...request, + refreshToken: refreshToken.secret, + authenticationScheme: request.authenticationScheme || AuthenticationScheme.BEARER, + ccsCredential: { + credential: request.account.homeAccountId, + type: CcsCredentialType.HOME_ACCOUNT_ID + } + }; + try { + return await invokeAsync(this.acquireToken.bind(this), PerformanceEvents.RefreshTokenClientAcquireToken, this.logger, this.performanceClient, request.correlationId)(refreshTokenRequest, apiId); + } catch (e) { + if (e instanceof InteractionRequiredAuthError) { + if (e.subError === badToken) { + this.logger.verbose("acquireTokenWithRefreshToken: bad refresh token, removing from cache"); + const badRefreshTokenKey = this.cacheManager.generateCredentialKey(refreshToken); + this.cacheManager.removeRefreshToken(badRefreshTokenKey, request.correlationId); + } + } + throw e; + } + } + /** + * Constructs the network message and makes a NW call to the underlying secure token service + * @param request + * @param authority + */ + async executeTokenRequest(request, authority) { + this.performanceClient?.addQueueMeasurement(PerformanceEvents.RefreshTokenClientExecuteTokenRequest, request.correlationId); + const queryParametersString = this.createTokenQueryParameters(request); + const endpoint = UrlString.appendQueryString(authority.tokenEndpoint, queryParametersString); + const requestBody = await invokeAsync(this.createTokenRequestBody.bind(this), PerformanceEvents.RefreshTokenClientCreateTokenRequestBody, this.logger, this.performanceClient, request.correlationId)(request); + const headers = this.createTokenRequestHeaders(request.ccsCredential); + const thumbprint = getRequestThumbprint(this.config.authOptions.clientId, request); + return invokeAsync(this.executePostToTokenEndpoint.bind(this), PerformanceEvents.RefreshTokenClientExecutePostToTokenEndpoint, this.logger, this.performanceClient, request.correlationId)(endpoint, requestBody, headers, thumbprint, request.correlationId, PerformanceEvents.RefreshTokenClientExecutePostToTokenEndpoint); + } + /** + * Helper function to create the token request body + * @param request + */ + async createTokenRequestBody(request) { + this.performanceClient?.addQueueMeasurement(PerformanceEvents.RefreshTokenClientCreateTokenRequestBody, request.correlationId); + const parameters = /* @__PURE__ */ new Map(); + addClientId(parameters, request.embeddedClientId || request.tokenBodyParameters?.[CLIENT_ID] || this.config.authOptions.clientId); + if (request.redirectUri) { + addRedirectUri(parameters, request.redirectUri); + } + addScopes(parameters, request.scopes, true, this.config.authOptions.authority.options.OIDCOptions?.defaultScopes); + addGrantType(parameters, GrantType.REFRESH_TOKEN_GRANT); + addClientInfo(parameters); + addLibraryInfo(parameters, this.config.libraryInfo); + addApplicationTelemetry(parameters, this.config.telemetry.application); + addThrottling(parameters); + if (this.serverTelemetryManager && !isOidcProtocolMode(this.config)) { + addServerTelemetry(parameters, this.serverTelemetryManager); + } + addRefreshToken(parameters, request.refreshToken); + if (this.config.clientCredentials.clientSecret) { + addClientSecret(parameters, this.config.clientCredentials.clientSecret); + } + if (this.config.clientCredentials.clientAssertion) { + const clientAssertion = this.config.clientCredentials.clientAssertion; + addClientAssertion(parameters, await getClientAssertion(clientAssertion.assertion, this.config.authOptions.clientId, request.resourceRequestUri)); + addClientAssertionType(parameters, clientAssertion.assertionType); + } + if (request.authenticationScheme === AuthenticationScheme.POP) { + const popTokenGenerator = new PopTokenGenerator(this.cryptoUtils, this.performanceClient); + let reqCnfData; + if (!request.popKid) { + const generatedReqCnfData = await invokeAsync(popTokenGenerator.generateCnf.bind(popTokenGenerator), PerformanceEvents.PopTokenGenerateCnf, this.logger, this.performanceClient, request.correlationId)(request, this.logger); + reqCnfData = generatedReqCnfData.reqCnfString; + } else { + reqCnfData = this.cryptoUtils.encodeKid(request.popKid); + } + addPopToken(parameters, reqCnfData); + } else if (request.authenticationScheme === AuthenticationScheme.SSH) { + if (request.sshJwk) { + addSshJwk(parameters, request.sshJwk); + } else { + throw createClientConfigurationError(missingSshJwk); + } + } + if (this.config.systemOptions.preventCorsPreflight && request.ccsCredential) { + switch (request.ccsCredential.type) { + case CcsCredentialType.HOME_ACCOUNT_ID: + try { + const clientInfo = buildClientInfoFromHomeAccountId(request.ccsCredential.credential); + addCcsOid(parameters, clientInfo); + } catch (e) { + this.logger.verbose("Could not parse home account ID for CCS Header: " + e); + } + break; + case CcsCredentialType.UPN: + addCcsUpn(parameters, request.ccsCredential.credential); + break; + } + } + if (request.embeddedClientId) { + addBrokerParameters(parameters, this.config.authOptions.clientId, this.config.authOptions.redirectUri); + } + if (request.tokenBodyParameters) { + addExtraQueryParameters(parameters, request.tokenBodyParameters); + } + instrumentBrokerParams(parameters, request.correlationId, this.performanceClient); + const configClaims = request.skipBrokerClaims && parameters.has(BROKER_CLIENT_ID) ? void 0 : this.config.authOptions.clientCapabilities; + if (!StringUtils.isEmptyObj(request.claims) || configClaims && configClaims.length > 0) { + addClaims(parameters, request.claims, configClaims); + } + return mapToQueryString(parameters); + } +}; + +// node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/client/SilentFlowClient.mjs +var SilentFlowClient = class extends BaseClient { + constructor(configuration, performanceClient) { + super(configuration, performanceClient); + } + /** + * Retrieves token from cache or throws an error if it must be refreshed. + * @param request + */ + async acquireCachedToken(request) { + this.performanceClient?.addQueueMeasurement(PerformanceEvents.SilentFlowClientAcquireCachedToken, request.correlationId); + let lastCacheOutcome = CacheOutcome.NOT_APPLICABLE; + if (request.forceRefresh || !this.config.cacheOptions.claimsBasedCachingEnabled && !StringUtils.isEmptyObj(request.claims)) { + this.setCacheOutcome(CacheOutcome.FORCE_REFRESH_OR_CLAIMS, request.correlationId); + throw createClientAuthError(tokenRefreshRequired); + } + if (!request.account) { + throw createClientAuthError(noAccountInSilentRequest); + } + const requestTenantId = request.account.tenantId || getTenantFromAuthorityString(request.authority); + const tokenKeys = this.cacheManager.getTokenKeys(); + const cachedAccessToken = this.cacheManager.getAccessToken(request.account, request, tokenKeys, requestTenantId); + if (!cachedAccessToken) { + this.setCacheOutcome(CacheOutcome.NO_CACHED_ACCESS_TOKEN, request.correlationId); + throw createClientAuthError(tokenRefreshRequired); + } else if (wasClockTurnedBack(cachedAccessToken.cachedAt) || isTokenExpired(cachedAccessToken.expiresOn, this.config.systemOptions.tokenRenewalOffsetSeconds)) { + this.setCacheOutcome(CacheOutcome.CACHED_ACCESS_TOKEN_EXPIRED, request.correlationId); + throw createClientAuthError(tokenRefreshRequired); + } else if (cachedAccessToken.refreshOn && isTokenExpired(cachedAccessToken.refreshOn, 0)) { + lastCacheOutcome = CacheOutcome.PROACTIVELY_REFRESHED; + } + const environment = request.authority || this.authority.getPreferredCache(); + const cacheRecord = { + account: this.cacheManager.getAccount(this.cacheManager.generateAccountKey(request.account), request.correlationId), + accessToken: cachedAccessToken, + idToken: this.cacheManager.getIdToken(request.account, request.correlationId, tokenKeys, requestTenantId, this.performanceClient), + refreshToken: null, + appMetadata: this.cacheManager.readAppMetadataFromCache(environment) + }; + this.setCacheOutcome(lastCacheOutcome, request.correlationId); + if (this.config.serverTelemetryManager) { + this.config.serverTelemetryManager.incrementCacheHits(); + } + return [ + await invokeAsync(this.generateResultFromCacheRecord.bind(this), PerformanceEvents.SilentFlowClientGenerateResultFromCacheRecord, this.logger, this.performanceClient, request.correlationId)(cacheRecord, request), + lastCacheOutcome + ]; + } + setCacheOutcome(cacheOutcome, correlationId) { + this.serverTelemetryManager?.setCacheOutcome(cacheOutcome); + this.performanceClient?.addFields({ + cacheOutcome + }, correlationId); + if (cacheOutcome !== CacheOutcome.NOT_APPLICABLE) { + this.logger.info(`Token refresh is required due to cache outcome: ${cacheOutcome}`); + } + } + /** + * Helper function to build response object from the CacheRecord + * @param cacheRecord + */ + async generateResultFromCacheRecord(cacheRecord, request) { + this.performanceClient?.addQueueMeasurement(PerformanceEvents.SilentFlowClientGenerateResultFromCacheRecord, request.correlationId); + let idTokenClaims; + if (cacheRecord.idToken) { + idTokenClaims = extractTokenClaims(cacheRecord.idToken.secret, this.config.cryptoInterface.base64Decode); + } + if (request.maxAge || request.maxAge === 0) { + const authTime = idTokenClaims?.auth_time; + if (!authTime) { + throw createClientAuthError(authTimeNotFound); + } + checkMaxAge(authTime, request.maxAge); + } + return ResponseHandler.generateAuthenticationResult(this.cryptoUtils, this.authority, cacheRecord, true, request, idTokenClaims); + } +}; + +// node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/protocol/Authorize.mjs +var Authorize_exports = {}; +__export(Authorize_exports, { + getAuthorizationCodePayload: () => getAuthorizationCodePayload, + getAuthorizeUrl: () => getAuthorizeUrl, + getStandardAuthorizeRequestParameters: () => getStandardAuthorizeRequestParameters, + validateAuthorizationResponse: () => validateAuthorizationResponse +}); +function getStandardAuthorizeRequestParameters(authOptions, request, logger31, performanceClient) { + const correlationId = request.correlationId; + const parameters = /* @__PURE__ */ new Map(); + addClientId(parameters, request.embeddedClientId || request.extraQueryParameters?.[CLIENT_ID] || authOptions.clientId); + const requestScopes = [ + ...request.scopes || [], + ...request.extraScopesToConsent || [] + ]; + addScopes(parameters, requestScopes, true, authOptions.authority.options.OIDCOptions?.defaultScopes); + addRedirectUri(parameters, request.redirectUri); + addCorrelationId(parameters, correlationId); + addResponseMode(parameters, request.responseMode); + addClientInfo(parameters); + addCliData(parameters); + if (request.prompt) { + addPrompt(parameters, request.prompt); + performanceClient?.addFields({ prompt: request.prompt }, correlationId); + } + if (request.domainHint) { + addDomainHint(parameters, request.domainHint); + performanceClient?.addFields({ domainHintFromRequest: true }, correlationId); + } + if (request.prompt !== PromptValue.SELECT_ACCOUNT) { + if (request.sid && request.prompt === PromptValue.NONE) { + logger31.verbose("createAuthCodeUrlQueryString: Prompt is none, adding sid from request"); + addSid(parameters, request.sid); + performanceClient?.addFields({ sidFromRequest: true }, correlationId); + } else if (request.account) { + const accountSid = extractAccountSid(request.account); + let accountLoginHintClaim = extractLoginHint(request.account); + if (accountLoginHintClaim && request.domainHint) { + logger31.warning(`AuthorizationCodeClient.createAuthCodeUrlQueryString: "domainHint" param is set, skipping opaque "login_hint" claim. Please consider not passing domainHint`); + accountLoginHintClaim = null; + } + if (accountLoginHintClaim) { + logger31.verbose("createAuthCodeUrlQueryString: login_hint claim present on account"); + addLoginHint(parameters, accountLoginHintClaim); + performanceClient?.addFields({ loginHintFromClaim: true }, correlationId); + try { + const clientInfo = buildClientInfoFromHomeAccountId(request.account.homeAccountId); + addCcsOid(parameters, clientInfo); + } catch (e) { + logger31.verbose("createAuthCodeUrlQueryString: Could not parse home account ID for CCS Header"); + } + } else if (accountSid && request.prompt === PromptValue.NONE) { + logger31.verbose("createAuthCodeUrlQueryString: Prompt is none, adding sid from account"); + addSid(parameters, accountSid); + performanceClient?.addFields({ sidFromClaim: true }, correlationId); + try { + const clientInfo = buildClientInfoFromHomeAccountId(request.account.homeAccountId); + addCcsOid(parameters, clientInfo); + } catch (e) { + logger31.verbose("createAuthCodeUrlQueryString: Could not parse home account ID for CCS Header"); + } + } else if (request.loginHint) { + logger31.verbose("createAuthCodeUrlQueryString: Adding login_hint from request"); + addLoginHint(parameters, request.loginHint); + addCcsUpn(parameters, request.loginHint); + performanceClient?.addFields({ loginHintFromRequest: true }, correlationId); + } else if (request.account.username) { + logger31.verbose("createAuthCodeUrlQueryString: Adding login_hint from account"); + addLoginHint(parameters, request.account.username); + performanceClient?.addFields({ loginHintFromUpn: true }, correlationId); + try { + const clientInfo = buildClientInfoFromHomeAccountId(request.account.homeAccountId); + addCcsOid(parameters, clientInfo); + } catch (e) { + logger31.verbose("createAuthCodeUrlQueryString: Could not parse home account ID for CCS Header"); + } + } + } else if (request.loginHint) { + logger31.verbose("createAuthCodeUrlQueryString: No account, adding login_hint from request"); + addLoginHint(parameters, request.loginHint); + addCcsUpn(parameters, request.loginHint); + performanceClient?.addFields({ loginHintFromRequest: true }, correlationId); + } + } else { + logger31.verbose("createAuthCodeUrlQueryString: Prompt is select_account, ignoring account hints"); + } + if (request.nonce) { + addNonce(parameters, request.nonce); + } + if (request.state) { + addState(parameters, request.state); + } + if (request.embeddedClientId) { + addBrokerParameters(parameters, authOptions.clientId, authOptions.redirectUri); + } + const configClaims = request.skipBrokerClaims && parameters.has(BROKER_CLIENT_ID) ? void 0 : authOptions.clientCapabilities; + if (request.claims || configClaims && configClaims.length > 0) { + addClaims(parameters, request.claims, configClaims); + } + if (authOptions.instanceAware && (!request.extraQueryParameters || !Object.keys(request.extraQueryParameters).includes(INSTANCE_AWARE))) { + addInstanceAware(parameters); + } + return parameters; +} +function getAuthorizeUrl(authority, requestParameters, encodeParams, extraQueryParameters) { + const queryString = mapToQueryString(requestParameters, encodeParams, extraQueryParameters); + return UrlString.appendQueryString(authority.authorizationEndpoint, queryString); +} +function getAuthorizationCodePayload(serverParams, cachedState) { + validateAuthorizationResponse(serverParams, cachedState); + if (!serverParams.code) { + throw createClientAuthError(authorizationCodeMissingFromServerResponse); + } + return serverParams; +} +function validateAuthorizationResponse(serverResponse, requestState) { + if (!serverResponse.state || !requestState) { + throw serverResponse.state ? createClientAuthError(stateNotFound, "Cached State") : createClientAuthError(stateNotFound, "Server State"); + } + let decodedServerResponseState; + let decodedRequestState; + try { + decodedServerResponseState = decodeURIComponent(serverResponse.state); + } catch (e) { + throw createClientAuthError(invalidState, serverResponse.state); + } + try { + decodedRequestState = decodeURIComponent(requestState); + } catch (e) { + throw createClientAuthError(invalidState, serverResponse.state); + } + if (decodedServerResponseState !== decodedRequestState) { + throw createClientAuthError(stateMismatch); + } + if (serverResponse.error || serverResponse.error_description || serverResponse.suberror) { + const serverErrorNo = parseServerErrorNo(serverResponse); + if (isInteractionRequiredError(serverResponse.error, serverResponse.error_description, serverResponse.suberror)) { + throw new InteractionRequiredAuthError(serverResponse.error || "", serverResponse.error_description, serverResponse.suberror, serverResponse.timestamp || "", serverResponse.trace_id || "", serverResponse.correlation_id || "", serverResponse.claims || "", serverErrorNo); + } + throw new ServerError(serverResponse.error || "", serverResponse.error_description, serverResponse.suberror, serverErrorNo); + } +} +function parseServerErrorNo(serverResponse) { + const errorCodePrefix = "code="; + const errorCodePrefixIndex = serverResponse.error_uri?.lastIndexOf(errorCodePrefix); + return errorCodePrefixIndex && errorCodePrefixIndex >= 0 ? serverResponse.error_uri?.substring(errorCodePrefixIndex + errorCodePrefix.length) : void 0; +} +function extractAccountSid(account) { + return account.idTokenClaims?.sid || null; +} +function extractLoginHint(account) { + return account.loginHint || account.idTokenClaims?.login_hint || null; +} + +// node_modules/@azure/msal-node/node_modules/@azure/msal-common/dist/telemetry/server/ServerTelemetryManager.mjs +var skuGroupSeparator = ","; +var skuValueSeparator = "|"; +function makeExtraSkuString(params) { + const { skus, libraryName, libraryVersion, extensionName, extensionVersion } = params; + const skuMap = /* @__PURE__ */ new Map([ + [0, [libraryName, libraryVersion]], + [2, [extensionName, extensionVersion]] + ]); + let skuArr = []; + if (skus?.length) { + skuArr = skus.split(skuGroupSeparator); + if (skuArr.length < 4) { + return skus; + } + } else { + skuArr = Array.from({ length: 4 }, () => skuValueSeparator); + } + skuMap.forEach((value, key) => { + if (value.length === 2 && value[0]?.length && value[1]?.length) { + setSku({ + skuArr, + index: key, + skuName: value[0], + skuVersion: value[1] + }); + } + }); + return skuArr.join(skuGroupSeparator); +} +function setSku(params) { + const { skuArr, index, skuName, skuVersion } = params; + if (index >= skuArr.length) { + return; + } + skuArr[index] = [skuName, skuVersion].join(skuValueSeparator); +} +var ServerTelemetryManager = class _ServerTelemetryManager { + constructor(telemetryRequest, cacheManager) { + this.cacheOutcome = CacheOutcome.NOT_APPLICABLE; + this.cacheManager = cacheManager; + this.apiId = telemetryRequest.apiId; + this.correlationId = telemetryRequest.correlationId; + this.wrapperSKU = telemetryRequest.wrapperSKU || Constants.EMPTY_STRING; + this.wrapperVer = telemetryRequest.wrapperVer || Constants.EMPTY_STRING; + this.telemetryCacheKey = SERVER_TELEM_CONSTANTS.CACHE_KEY + Separators.CACHE_KEY_SEPARATOR + telemetryRequest.clientId; + } + /** + * API to add MSER Telemetry to request + */ + generateCurrentRequestHeaderValue() { + const request = `${this.apiId}${SERVER_TELEM_CONSTANTS.VALUE_SEPARATOR}${this.cacheOutcome}`; + const platformFieldsArr = [this.wrapperSKU, this.wrapperVer]; + const nativeBrokerErrorCode = this.getNativeBrokerErrorCode(); + if (nativeBrokerErrorCode?.length) { + platformFieldsArr.push(`broker_error=${nativeBrokerErrorCode}`); + } + const platformFields = platformFieldsArr.join(SERVER_TELEM_CONSTANTS.VALUE_SEPARATOR); + const regionDiscoveryFields = this.getRegionDiscoveryFields(); + const requestWithRegionDiscoveryFields = [ + request, + regionDiscoveryFields + ].join(SERVER_TELEM_CONSTANTS.VALUE_SEPARATOR); + return [ + SERVER_TELEM_CONSTANTS.SCHEMA_VERSION, + requestWithRegionDiscoveryFields, + platformFields + ].join(SERVER_TELEM_CONSTANTS.CATEGORY_SEPARATOR); + } + /** + * API to add MSER Telemetry for the last failed request + */ + generateLastRequestHeaderValue() { + const lastRequests = this.getLastRequests(); + const maxErrors = _ServerTelemetryManager.maxErrorsToSend(lastRequests); + const failedRequests = lastRequests.failedRequests.slice(0, 2 * maxErrors).join(SERVER_TELEM_CONSTANTS.VALUE_SEPARATOR); + const errors = lastRequests.errors.slice(0, maxErrors).join(SERVER_TELEM_CONSTANTS.VALUE_SEPARATOR); + const errorCount = lastRequests.errors.length; + const overflow = maxErrors < errorCount ? SERVER_TELEM_CONSTANTS.OVERFLOW_TRUE : SERVER_TELEM_CONSTANTS.OVERFLOW_FALSE; + const platformFields = [errorCount, overflow].join(SERVER_TELEM_CONSTANTS.VALUE_SEPARATOR); + return [ + SERVER_TELEM_CONSTANTS.SCHEMA_VERSION, + lastRequests.cacheHits, + failedRequests, + errors, + platformFields + ].join(SERVER_TELEM_CONSTANTS.CATEGORY_SEPARATOR); + } + /** + * API to cache token failures for MSER data capture + * @param error + */ + cacheFailedRequest(error2) { + const lastRequests = this.getLastRequests(); + if (lastRequests.errors.length >= SERVER_TELEM_CONSTANTS.MAX_CACHED_ERRORS) { + lastRequests.failedRequests.shift(); + lastRequests.failedRequests.shift(); + lastRequests.errors.shift(); + } + lastRequests.failedRequests.push(this.apiId, this.correlationId); + if (error2 instanceof Error && !!error2 && error2.toString()) { + if (error2 instanceof AuthError) { + if (error2.subError) { + lastRequests.errors.push(error2.subError); + } else if (error2.errorCode) { + lastRequests.errors.push(error2.errorCode); + } else { + lastRequests.errors.push(error2.toString()); + } + } else { + lastRequests.errors.push(error2.toString()); + } + } else { + lastRequests.errors.push(SERVER_TELEM_CONSTANTS.UNKNOWN_ERROR); + } + this.cacheManager.setServerTelemetry(this.telemetryCacheKey, lastRequests, this.correlationId); + return; + } + /** + * Update server telemetry cache entry by incrementing cache hit counter + */ + incrementCacheHits() { + const lastRequests = this.getLastRequests(); + lastRequests.cacheHits += 1; + this.cacheManager.setServerTelemetry(this.telemetryCacheKey, lastRequests, this.correlationId); + return lastRequests.cacheHits; + } + /** + * Get the server telemetry entity from cache or initialize a new one + */ + getLastRequests() { + const initialValue = { + failedRequests: [], + errors: [], + cacheHits: 0 + }; + const lastRequests = this.cacheManager.getServerTelemetry(this.telemetryCacheKey); + return lastRequests || initialValue; + } + /** + * Remove server telemetry cache entry + */ + clearTelemetryCache() { + const lastRequests = this.getLastRequests(); + const numErrorsFlushed = _ServerTelemetryManager.maxErrorsToSend(lastRequests); + const errorCount = lastRequests.errors.length; + if (numErrorsFlushed === errorCount) { + this.cacheManager.removeItem(this.telemetryCacheKey, this.correlationId); + } else { + const serverTelemEntity = { + failedRequests: lastRequests.failedRequests.slice(numErrorsFlushed * 2), + errors: lastRequests.errors.slice(numErrorsFlushed), + cacheHits: 0 + }; + this.cacheManager.setServerTelemetry(this.telemetryCacheKey, serverTelemEntity, this.correlationId); + } + } + /** + * Returns the maximum number of errors that can be flushed to the server in the next network request + * @param serverTelemetryEntity + */ + static maxErrorsToSend(serverTelemetryEntity) { + let i; + let maxErrors = 0; + let dataSize = 0; + const errorCount = serverTelemetryEntity.errors.length; + for (i = 0; i < errorCount; i++) { + const apiId = serverTelemetryEntity.failedRequests[2 * i] || Constants.EMPTY_STRING; + const correlationId = serverTelemetryEntity.failedRequests[2 * i + 1] || Constants.EMPTY_STRING; + const errorCode = serverTelemetryEntity.errors[i] || Constants.EMPTY_STRING; + dataSize += apiId.toString().length + correlationId.toString().length + errorCode.length + 3; + if (dataSize < SERVER_TELEM_CONSTANTS.MAX_LAST_HEADER_BYTES) { + maxErrors += 1; + } else { + break; + } + } + return maxErrors; + } + /** + * Get the region discovery fields + * + * @returns string + */ + getRegionDiscoveryFields() { + const regionDiscoveryFields = []; + regionDiscoveryFields.push(this.regionUsed || Constants.EMPTY_STRING); + regionDiscoveryFields.push(this.regionSource || Constants.EMPTY_STRING); + regionDiscoveryFields.push(this.regionOutcome || Constants.EMPTY_STRING); + return regionDiscoveryFields.join(","); + } + /** + * Update the region discovery metadata + * + * @param regionDiscoveryMetadata + * @returns void + */ + updateRegionDiscoveryMetadata(regionDiscoveryMetadata) { + this.regionUsed = regionDiscoveryMetadata.region_used; + this.regionSource = regionDiscoveryMetadata.region_source; + this.regionOutcome = regionDiscoveryMetadata.region_outcome; + } + /** + * Set cache outcome + */ + setCacheOutcome(cacheOutcome) { + this.cacheOutcome = cacheOutcome; + } + setNativeBrokerErrorCode(errorCode) { + const lastRequests = this.getLastRequests(); + lastRequests.nativeBrokerErrorCode = errorCode; + this.cacheManager.setServerTelemetry(this.telemetryCacheKey, lastRequests, this.correlationId); + } + getNativeBrokerErrorCode() { + return this.getLastRequests().nativeBrokerErrorCode; + } + clearNativeBrokerErrorCode() { + const lastRequests = this.getLastRequests(); + delete lastRequests.nativeBrokerErrorCode; + this.cacheManager.setServerTelemetry(this.telemetryCacheKey, lastRequests, this.correlationId); + } + static makeExtraSkuString(params) { + return makeExtraSkuString(params); + } +}; + +// node_modules/@azure/msal-node/dist/cache/serializer/Deserializer.mjs +var Deserializer = class { + /** + * Parse the JSON blob in memory and deserialize the content + * @param cachedJson - JSON blob cache + */ + static deserializeJSONBlob(jsonFile) { + const deserializedCache = !jsonFile ? {} : JSON.parse(jsonFile); + return deserializedCache; + } + /** + * Deserializes accounts to AccountEntity objects + * @param accounts - accounts of type SerializedAccountEntity + */ + static deserializeAccounts(accounts) { + const accountObjects = {}; + if (accounts) { + Object.keys(accounts).map(function(key) { + const serializedAcc = accounts[key]; + const mappedAcc = { + homeAccountId: serializedAcc.home_account_id, + environment: serializedAcc.environment, + realm: serializedAcc.realm, + localAccountId: serializedAcc.local_account_id, + username: serializedAcc.username, + authorityType: serializedAcc.authority_type, + name: serializedAcc.name, + clientInfo: serializedAcc.client_info, + lastModificationTime: serializedAcc.last_modification_time, + lastModificationApp: serializedAcc.last_modification_app, + tenantProfiles: serializedAcc.tenantProfiles?.map((serializedTenantProfile) => { + return JSON.parse(serializedTenantProfile); + }), + lastUpdatedAt: Date.now().toString() + }; + const account = new AccountEntity(); + CacheManager.toObject(account, mappedAcc); + accountObjects[key] = account; + }); + } + return accountObjects; + } + /** + * Deserializes id tokens to IdTokenEntity objects + * @param idTokens - credentials of type SerializedIdTokenEntity + */ + static deserializeIdTokens(idTokens) { + const idObjects = {}; + if (idTokens) { + Object.keys(idTokens).map(function(key) { + const serializedIdT = idTokens[key]; + const idToken = { + homeAccountId: serializedIdT.home_account_id, + environment: serializedIdT.environment, + credentialType: serializedIdT.credential_type, + clientId: serializedIdT.client_id, + secret: serializedIdT.secret, + realm: serializedIdT.realm, + lastUpdatedAt: Date.now().toString() + }; + idObjects[key] = idToken; + }); + } + return idObjects; + } + /** + * Deserializes access tokens to AccessTokenEntity objects + * @param accessTokens - access tokens of type SerializedAccessTokenEntity + */ + static deserializeAccessTokens(accessTokens) { + const atObjects = {}; + if (accessTokens) { + Object.keys(accessTokens).map(function(key) { + const serializedAT = accessTokens[key]; + const accessToken = { + homeAccountId: serializedAT.home_account_id, + environment: serializedAT.environment, + credentialType: serializedAT.credential_type, + clientId: serializedAT.client_id, + secret: serializedAT.secret, + realm: serializedAT.realm, + target: serializedAT.target, + cachedAt: serializedAT.cached_at, + expiresOn: serializedAT.expires_on, + extendedExpiresOn: serializedAT.extended_expires_on, + refreshOn: serializedAT.refresh_on, + keyId: serializedAT.key_id, + tokenType: serializedAT.token_type, + requestedClaims: serializedAT.requestedClaims, + requestedClaimsHash: serializedAT.requestedClaimsHash, + userAssertionHash: serializedAT.userAssertionHash, + lastUpdatedAt: Date.now().toString() + }; + atObjects[key] = accessToken; + }); + } + return atObjects; + } + /** + * Deserializes refresh tokens to RefreshTokenEntity objects + * @param refreshTokens - refresh tokens of type SerializedRefreshTokenEntity + */ + static deserializeRefreshTokens(refreshTokens) { + const rtObjects = {}; + if (refreshTokens) { + Object.keys(refreshTokens).map(function(key) { + const serializedRT = refreshTokens[key]; + const refreshToken = { + homeAccountId: serializedRT.home_account_id, + environment: serializedRT.environment, + credentialType: serializedRT.credential_type, + clientId: serializedRT.client_id, + secret: serializedRT.secret, + familyId: serializedRT.family_id, + target: serializedRT.target, + realm: serializedRT.realm, + lastUpdatedAt: Date.now().toString() + }; + rtObjects[key] = refreshToken; + }); + } + return rtObjects; + } + /** + * Deserializes appMetadata to AppMetaData objects + * @param appMetadata - app metadata of type SerializedAppMetadataEntity + */ + static deserializeAppMetadata(appMetadata) { + const appMetadataObjects = {}; + if (appMetadata) { + Object.keys(appMetadata).map(function(key) { + const serializedAmdt = appMetadata[key]; + appMetadataObjects[key] = { + clientId: serializedAmdt.client_id, + environment: serializedAmdt.environment, + familyId: serializedAmdt.family_id + }; + }); + } + return appMetadataObjects; + } + /** + * Deserialize an inMemory Cache + * @param jsonCache - JSON blob cache + */ + static deserializeAllCache(jsonCache) { + return { + accounts: jsonCache.Account ? this.deserializeAccounts(jsonCache.Account) : {}, + idTokens: jsonCache.IdToken ? this.deserializeIdTokens(jsonCache.IdToken) : {}, + accessTokens: jsonCache.AccessToken ? this.deserializeAccessTokens(jsonCache.AccessToken) : {}, + refreshTokens: jsonCache.RefreshToken ? this.deserializeRefreshTokens(jsonCache.RefreshToken) : {}, + appMetadata: jsonCache.AppMetadata ? this.deserializeAppMetadata(jsonCache.AppMetadata) : {} + }; + } +}; + +// node_modules/@azure/msal-node/dist/utils/Constants.mjs +var MANAGED_IDENTITY_DEFAULT_TENANT = "managed_identity"; +var DEFAULT_AUTHORITY_FOR_MANAGED_IDENTITY = `https://login.microsoftonline.com/${MANAGED_IDENTITY_DEFAULT_TENANT}/`; +var ManagedIdentityQueryParameters = { + API_VERSION: "api-version", + RESOURCE: "resource", + SHA256_TOKEN_TO_REFRESH: "token_sha256_to_refresh", + XMS_CC: "xms_cc" +}; +var ManagedIdentityEnvironmentVariableNames = { + AZURE_POD_IDENTITY_AUTHORITY_HOST: "AZURE_POD_IDENTITY_AUTHORITY_HOST", + DEFAULT_IDENTITY_CLIENT_ID: "DEFAULT_IDENTITY_CLIENT_ID", + IDENTITY_ENDPOINT: "IDENTITY_ENDPOINT", + IDENTITY_HEADER: "IDENTITY_HEADER", + IDENTITY_SERVER_THUMBPRINT: "IDENTITY_SERVER_THUMBPRINT", + IMDS_ENDPOINT: "IMDS_ENDPOINT", + MSI_ENDPOINT: "MSI_ENDPOINT", + MSI_SECRET: "MSI_SECRET" +}; +var ManagedIdentitySourceNames = { + APP_SERVICE: "AppService", + AZURE_ARC: "AzureArc", + CLOUD_SHELL: "CloudShell", + DEFAULT_TO_IMDS: "DefaultToImds", + IMDS: "Imds", + MACHINE_LEARNING: "MachineLearning", + SERVICE_FABRIC: "ServiceFabric" +}; +var ManagedIdentityIdType = { + SYSTEM_ASSIGNED: "system-assigned", + USER_ASSIGNED_CLIENT_ID: "user-assigned-client-id", + USER_ASSIGNED_RESOURCE_ID: "user-assigned-resource-id", + USER_ASSIGNED_OBJECT_ID: "user-assigned-object-id" +}; +var HttpMethod2 = { + GET: "get", + POST: "post" +}; +var ProxyStatus = { + SUCCESS_RANGE_START: HttpStatus.SUCCESS_RANGE_START, + SUCCESS_RANGE_END: HttpStatus.SUCCESS_RANGE_END, + SERVER_ERROR: HttpStatus.SERVER_ERROR +}; +var RANDOM_OCTET_SIZE = 32; +var Hash = { + SHA256: "sha256" +}; +var CharSet = { + CV_CHARSET: "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-._~" +}; +var CACHE = { + KEY_SEPARATOR: "-" +}; +var Constants2 = { + MSAL_SKU: "msal.js.node", + JWT_BEARER_ASSERTION_TYPE: "urn:ietf:params:oauth:client-assertion-type:jwt-bearer", + AUTHORIZATION_PENDING: "authorization_pending", + HTTP_PROTOCOL: "http://", + LOCALHOST: "localhost" +}; +var ApiId = { + acquireTokenSilent: 62, + acquireTokenByUsernamePassword: 371, + acquireTokenByDeviceCode: 671, + acquireTokenByClientCredential: 771, + acquireTokenByOBO: 772, + acquireTokenWithManagedIdentity: 773, + acquireTokenByCode: 871, + acquireTokenByRefreshToken: 872 +}; +var JwtConstants = { + RSA_256: "RS256", + PSS_256: "PS256", + X5T_256: "x5t#S256", + X5T: "x5t", + X5C: "x5c", + AUDIENCE: "aud", + EXPIRATION_TIME: "exp", + ISSUER: "iss", + SUBJECT: "sub", + NOT_BEFORE: "nbf", + JWT_ID: "jti" +}; +var LOOPBACK_SERVER_CONSTANTS = { + INTERVAL_MS: 100, + TIMEOUT_MS: 5e3 +}; + +// node_modules/@azure/msal-node/dist/utils/NetworkUtils.mjs +var NetworkUtils = class { + static getNetworkResponse(headers, body, statusCode) { + return { + headers, + body, + status: statusCode + }; + } + /* + * Utility function that converts a URL object into an ordinary options object as expected by the + * http.request and https.request APIs. + * https://github.com/nodejs/node/blob/main/lib/internal/url.js#L1090 + */ + static urlToHttpOptions(url2) { + const options = { + protocol: url2.protocol, + hostname: url2.hostname && url2.hostname.startsWith("[") ? url2.hostname.slice(1, -1) : url2.hostname, + hash: url2.hash, + search: url2.search, + pathname: url2.pathname, + path: `${url2.pathname || ""}${url2.search || ""}`, + href: url2.href + }; + if (url2.port !== "") { + options.port = Number(url2.port); + } + if (url2.username || url2.password) { + options.auth = `${decodeURIComponent(url2.username)}:${decodeURIComponent(url2.password)}`; + } + return options; + } +}; + +// node_modules/@azure/msal-node/dist/packageMetadata.mjs +var name2 = "@azure/msal-node"; +var version3 = "3.8.10"; + +// node_modules/@azure/msal-node/dist/network/HttpClient.mjs +var import_http = __toESM(require("http"), 1); +var import_https = __toESM(require("https"), 1); +var HttpClient = class { + constructor(proxyUrl, customAgentOptions, loggerOptions) { + this.networkRequestViaProxy = (httpMethod, destinationUrlString, options, timeout) => { + const destinationUrl = new URL(destinationUrlString); + const proxyUrl2 = new URL(this.proxyUrl); + const headers = options?.headers || {}; + const tunnelRequestOptions = { + host: proxyUrl2.hostname, + port: proxyUrl2.port, + method: "CONNECT", + path: destinationUrl.hostname, + headers + }; + if (this.customAgentOptions && Object.keys(this.customAgentOptions).length) { + tunnelRequestOptions.agent = new import_http.default.Agent(this.customAgentOptions); + } + let postRequestStringContent = ""; + if (httpMethod === HttpMethod2.POST) { + const body = options?.body || ""; + postRequestStringContent = `Content-Type: application/x-www-form-urlencoded\r +Content-Length: ${body.length}\r +\r +${body}`; + } else { + if (timeout) { + tunnelRequestOptions.timeout = timeout; + } + } + const outgoingRequestString = `${httpMethod.toUpperCase()} ${destinationUrl.href} HTTP/1.1\r +Host: ${destinationUrl.host}\r +Connection: close\r +` + postRequestStringContent + "\r\n"; + return new Promise((resolve, reject) => { + const request = import_http.default.request(tunnelRequestOptions); + if (timeout) { + request.on("timeout", () => { + this.logUrlWithPiiAwareness(`Request timeout after ${timeout}ms for URL`, destinationUrlString); + request.destroy(); + reject(new Error(`Request time out after ${timeout}ms`)); + }); + } + request.end(); + request.on("connect", (response, socket) => { + const proxyStatusCode = response?.statusCode || ProxyStatus.SERVER_ERROR; + if (proxyStatusCode < ProxyStatus.SUCCESS_RANGE_START || proxyStatusCode > ProxyStatus.SUCCESS_RANGE_END) { + request.destroy(); + socket.destroy(); + reject(new Error(`Error connecting to proxy. Http status code: ${response.statusCode}. Http status message: ${response?.statusMessage || "Unknown"}`)); + } + socket.write(outgoingRequestString); + const data = []; + socket.on("data", (chunk) => { + data.push(chunk); + }); + socket.on("end", () => { + const dataString = Buffer.concat([...data]).toString(); + const dataStringArray = dataString.split("\r\n"); + const httpStatusCode = parseInt(dataStringArray[0].split(" ")[1]); + const statusMessage = dataStringArray[0].split(" ").slice(2).join(" "); + const body = dataStringArray[dataStringArray.length - 1]; + const headersArray = dataStringArray.slice(1, dataStringArray.length - 2); + const entries = /* @__PURE__ */ new Map(); + headersArray.forEach((header) => { + const headerKeyValue = header.split(new RegExp(/:\s(.*)/s)); + const headerKey = headerKeyValue[0]; + let headerValue = headerKeyValue[1]; + try { + const object3 = JSON.parse(headerValue); + if (object3 && typeof object3 === "object") { + headerValue = object3; + } + } catch (e) { + } + entries.set(headerKey, headerValue); + }); + const headers2 = Object.fromEntries(entries); + const parsedHeaders = headers2; + const networkResponse = NetworkUtils.getNetworkResponse(parsedHeaders, this.parseBody(httpStatusCode, statusMessage, parsedHeaders, body), httpStatusCode); + if (this.shouldDestroyRequest(httpStatusCode, networkResponse)) { + request.destroy(); + } + resolve(networkResponse); + }); + socket.on("error", (chunk) => { + request.destroy(); + socket.destroy(); + reject(new Error(chunk.toString())); + }); + }); + request.on("error", (chunk) => { + this.logger.error(`HttpClient - Proxy request error: ${chunk.toString()}`, ""); + this.logUrlWithPiiAwareness("Destination URL", destinationUrlString); + this.logUrlWithPiiAwareness("Proxy URL", this.proxyUrl); + this.logger.error(`HttpClient - Method: ${httpMethod}`, ""); + this.logger.errorPii(`HttpClient - Headers: ${JSON.stringify(headers)}`, ""); + request.destroy(); + reject(new Error(chunk.toString())); + }); + }); + }; + this.networkRequestViaHttps = (httpMethod, urlString, options, timeout) => { + const isPostRequest = httpMethod === HttpMethod2.POST; + const body = options?.body || ""; + const url2 = new URL(urlString); + const headers = options?.headers || {}; + const customOptions = { + method: httpMethod, + headers, + ...NetworkUtils.urlToHttpOptions(url2) + }; + if (this.customAgentOptions && Object.keys(this.customAgentOptions).length) { + customOptions.agent = new import_https.default.Agent(this.customAgentOptions); + } + if (isPostRequest) { + customOptions.headers = { + ...customOptions.headers, + "Content-Length": body.length + }; + } else { + if (timeout) { + customOptions.timeout = timeout; + } + } + return new Promise((resolve, reject) => { + let request; + if (customOptions.protocol === "http:") { + request = import_http.default.request(customOptions); + } else { + request = import_https.default.request(customOptions); + } + if (isPostRequest) { + request.write(body); + } + if (timeout) { + request.on("timeout", () => { + this.logUrlWithPiiAwareness(`HTTPS request timeout after ${timeout}ms for URL`, urlString); + request.destroy(); + reject(new Error(`Request time out after ${timeout}ms`)); + }); + } + request.end(); + request.on("response", (response) => { + const headers2 = response.headers; + const statusCode = response.statusCode; + const statusMessage = response.statusMessage; + const data = []; + response.on("data", (chunk) => { + data.push(chunk); + }); + response.on("end", () => { + const body2 = Buffer.concat([...data]).toString(); + const parsedHeaders = headers2; + const networkResponse = NetworkUtils.getNetworkResponse(parsedHeaders, this.parseBody(statusCode, statusMessage, parsedHeaders, body2), statusCode); + if (this.shouldDestroyRequest(statusCode, networkResponse)) { + request.destroy(); + } + resolve(networkResponse); + }); + }); + request.on("error", (chunk) => { + this.logger.error(`HttpClient - HTTPS request error: ${chunk.toString()}`, ""); + this.logUrlWithPiiAwareness("URL", urlString); + this.logger.error(`HttpClient - Method: ${httpMethod}`, ""); + this.logger.errorPii(`HttpClient - Headers: ${JSON.stringify(headers)}`, ""); + request.destroy(); + reject(new Error(chunk.toString())); + }); + }); + }; + this.parseBody = (statusCode, statusMessage, headers, body) => { + let parsedBody; + try { + parsedBody = JSON.parse(body); + } catch (error2) { + let errorType; + let errorDescriptionHelper; + if (statusCode >= HttpStatus.CLIENT_ERROR_RANGE_START && statusCode <= HttpStatus.CLIENT_ERROR_RANGE_END) { + errorType = "client_error"; + errorDescriptionHelper = "A client"; + } else if (statusCode >= HttpStatus.SERVER_ERROR_RANGE_START && statusCode <= HttpStatus.SERVER_ERROR_RANGE_END) { + errorType = "server_error"; + errorDescriptionHelper = "A server"; + } else { + errorType = "unknown_error"; + errorDescriptionHelper = "An unknown"; + } + parsedBody = { + error: errorType, + error_description: `${errorDescriptionHelper} error occured. +Http status code: ${statusCode} +Http status message: ${statusMessage || "Unknown"} +Headers: ${JSON.stringify(headers)}` + }; + } + return parsedBody; + }; + this.logUrlWithPiiAwareness = (label, urlString) => { + if (this.isPiiEnabled) { + this.logger.errorPii(`HttpClient - ${label}: ${urlString}`, ""); + } else { + let urlHelper; + try { + const url2 = new URL(urlString); + urlHelper = `${url2.protocol}//${url2.host}${url2.pathname}`; + } catch { + urlHelper = urlString.split("?")[0] || "unknown"; + } + this.logger.error(`HttpClient - ${label}: ${urlHelper} [Enable PII logging to see additional details]`, ""); + } + }; + this.shouldDestroyRequest = (statusCode, networkResponse) => { + return (statusCode < HttpStatus.SUCCESS_RANGE_START || statusCode > HttpStatus.SUCCESS_RANGE_END) && // do not destroy the request for the device code flow + !(networkResponse.body && typeof networkResponse.body === "object" && "error" in networkResponse.body && networkResponse.body.error === Constants2.AUTHORIZATION_PENDING); + }; + this.proxyUrl = proxyUrl || ""; + this.customAgentOptions = customAgentOptions || {}; + this.logger = new Logger(loggerOptions || {}, name2, version3); + this.isPiiEnabled = this.logger.isPiiLoggingEnabled(); + } + /** + * Http Get request + * @param url + * @param options + */ + async sendGetRequestAsync(url2, options, timeout) { + if (this.proxyUrl) { + return this.networkRequestViaProxy(HttpMethod2.GET, url2, options, timeout); + } else { + return this.networkRequestViaHttps(HttpMethod2.GET, url2, options, timeout); + } + } + /** + * Http Post request + * @param url + * @param options + */ + async sendPostRequestAsync(url2, options) { + if (this.proxyUrl) { + return this.networkRequestViaProxy(HttpMethod2.POST, url2, options); + } else { + return this.networkRequestViaHttps(HttpMethod2.POST, url2, options); + } + } +}; + +// node_modules/@azure/msal-node/dist/error/ManagedIdentityErrorCodes.mjs +var invalidFileExtension = "invalid_file_extension"; +var invalidFilePath = "invalid_file_path"; +var invalidManagedIdentityIdType = "invalid_managed_identity_id_type"; +var invalidSecret = "invalid_secret"; +var missingId = "missing_client_id"; +var networkUnavailable = "network_unavailable"; +var platformNotSupported = "platform_not_supported"; +var unableToCreateAzureArc = "unable_to_create_azure_arc"; +var unableToCreateCloudShell = "unable_to_create_cloud_shell"; +var unableToCreateSource = "unable_to_create_source"; +var unableToReadSecretFile = "unable_to_read_secret_file"; +var userAssignedNotAvailableAtRuntime = "user_assigned_not_available_at_runtime"; +var wwwAuthenticateHeaderMissing = "www_authenticate_header_missing"; +var wwwAuthenticateHeaderUnsupportedFormat = "www_authenticate_header_unsupported_format"; +var MsiEnvironmentVariableUrlMalformedErrorCodes = { + [ManagedIdentityEnvironmentVariableNames.AZURE_POD_IDENTITY_AUTHORITY_HOST]: "azure_pod_identity_authority_host_url_malformed", + [ManagedIdentityEnvironmentVariableNames.IDENTITY_ENDPOINT]: "identity_endpoint_url_malformed", + [ManagedIdentityEnvironmentVariableNames.IMDS_ENDPOINT]: "imds_endpoint_url_malformed", + [ManagedIdentityEnvironmentVariableNames.MSI_ENDPOINT]: "msi_endpoint_url_malformed" +}; + +// node_modules/@azure/msal-node/dist/error/ManagedIdentityError.mjs +var ManagedIdentityErrorMessages = { + [invalidFileExtension]: "The file path in the WWW-Authenticate header does not contain a .key file.", + [invalidFilePath]: "The file path in the WWW-Authenticate header is not in a valid Windows or Linux Format.", + [invalidManagedIdentityIdType]: "More than one ManagedIdentityIdType was provided.", + [invalidSecret]: "The secret in the file on the file path in the WWW-Authenticate header is greater than 4096 bytes.", + [platformNotSupported]: "The platform is not supported by Azure Arc. Azure Arc only supports Windows and Linux.", + [missingId]: "A ManagedIdentityId id was not provided.", + [MsiEnvironmentVariableUrlMalformedErrorCodes.AZURE_POD_IDENTITY_AUTHORITY_HOST]: `The Managed Identity's '${ManagedIdentityEnvironmentVariableNames.AZURE_POD_IDENTITY_AUTHORITY_HOST}' environment variable is malformed.`, + [MsiEnvironmentVariableUrlMalformedErrorCodes.IDENTITY_ENDPOINT]: `The Managed Identity's '${ManagedIdentityEnvironmentVariableNames.IDENTITY_ENDPOINT}' environment variable is malformed.`, + [MsiEnvironmentVariableUrlMalformedErrorCodes.IMDS_ENDPOINT]: `The Managed Identity's '${ManagedIdentityEnvironmentVariableNames.IMDS_ENDPOINT}' environment variable is malformed.`, + [MsiEnvironmentVariableUrlMalformedErrorCodes.MSI_ENDPOINT]: `The Managed Identity's '${ManagedIdentityEnvironmentVariableNames.MSI_ENDPOINT}' environment variable is malformed.`, + [networkUnavailable]: "Authentication unavailable. The request to the managed identity endpoint timed out.", + [unableToCreateAzureArc]: "Azure Arc Managed Identities can only be system assigned.", + [unableToCreateCloudShell]: "Cloud Shell Managed Identities can only be system assigned.", + [unableToCreateSource]: "Unable to create a Managed Identity source based on environment variables.", + [unableToReadSecretFile]: "Unable to read the secret file.", + [userAssignedNotAvailableAtRuntime]: "Service Fabric user assigned managed identity ClientId or ResourceId is not configurable at runtime.", + [wwwAuthenticateHeaderMissing]: "A 401 response was received form the Azure Arc Managed Identity, but the www-authenticate header is missing.", + [wwwAuthenticateHeaderUnsupportedFormat]: "A 401 response was received form the Azure Arc Managed Identity, but the www-authenticate header is in an unsupported format." +}; +var ManagedIdentityError = class _ManagedIdentityError extends AuthError { + constructor(errorCode) { + super(errorCode, ManagedIdentityErrorMessages[errorCode]); + this.name = "ManagedIdentityError"; + Object.setPrototypeOf(this, _ManagedIdentityError.prototype); + } +}; +function createManagedIdentityError(errorCode) { + return new ManagedIdentityError(errorCode); +} + +// node_modules/@azure/msal-node/dist/error/NodeAuthError.mjs +var NodeAuthErrorMessage = { + invalidLoopbackAddressType: { + code: "invalid_loopback_server_address_type", + desc: "Loopback server address is not type string. This is unexpected." + }, + unableToLoadRedirectUri: { + code: "unable_to_load_redirectUrl", + desc: "Loopback server callback was invoked without a url. This is unexpected." + }, + noAuthCodeInResponse: { + code: "no_auth_code_in_response", + desc: "No auth code found in the server response. Please check your network trace to determine what happened." + }, + noLoopbackServerExists: { + code: "no_loopback_server_exists", + desc: "No loopback server exists yet." + }, + loopbackServerAlreadyExists: { + code: "loopback_server_already_exists", + desc: "Loopback server already exists. Cannot create another." + }, + loopbackServerTimeout: { + code: "loopback_server_timeout", + desc: "Timed out waiting for auth code listener to be registered." + }, + stateNotFoundError: { + code: "state_not_found", + desc: "State not found. Please verify that the request originated from msal." + }, + thumbprintMissing: { + code: "thumbprint_missing_from_client_certificate", + desc: "Client certificate does not contain a SHA-1 or SHA-256 thumbprint." + }, + redirectUriNotSupported: { + code: "redirect_uri_not_supported", + desc: "RedirectUri is not supported in this scenario. Please remove redirectUri from the request." + } +}; +var NodeAuthError = class _NodeAuthError extends AuthError { + constructor(errorCode, errorMessage) { + super(errorCode, errorMessage); + this.name = "NodeAuthError"; + } + /** + * Creates an error thrown if loopback server address is of type string. + */ + static createInvalidLoopbackAddressTypeError() { + return new _NodeAuthError(NodeAuthErrorMessage.invalidLoopbackAddressType.code, `${NodeAuthErrorMessage.invalidLoopbackAddressType.desc}`); + } + /** + * Creates an error thrown if the loopback server is unable to get a url. + */ + static createUnableToLoadRedirectUrlError() { + return new _NodeAuthError(NodeAuthErrorMessage.unableToLoadRedirectUri.code, `${NodeAuthErrorMessage.unableToLoadRedirectUri.desc}`); + } + /** + * Creates an error thrown if the server response does not contain an auth code. + */ + static createNoAuthCodeInResponseError() { + return new _NodeAuthError(NodeAuthErrorMessage.noAuthCodeInResponse.code, `${NodeAuthErrorMessage.noAuthCodeInResponse.desc}`); + } + /** + * Creates an error thrown if the loopback server has not been spun up yet. + */ + static createNoLoopbackServerExistsError() { + return new _NodeAuthError(NodeAuthErrorMessage.noLoopbackServerExists.code, `${NodeAuthErrorMessage.noLoopbackServerExists.desc}`); + } + /** + * Creates an error thrown if a loopback server already exists when attempting to create another one. + */ + static createLoopbackServerAlreadyExistsError() { + return new _NodeAuthError(NodeAuthErrorMessage.loopbackServerAlreadyExists.code, `${NodeAuthErrorMessage.loopbackServerAlreadyExists.desc}`); + } + /** + * Creates an error thrown if the loopback server times out registering the auth code listener. + */ + static createLoopbackServerTimeoutError() { + return new _NodeAuthError(NodeAuthErrorMessage.loopbackServerTimeout.code, `${NodeAuthErrorMessage.loopbackServerTimeout.desc}`); + } + /** + * Creates an error thrown when the state is not present. + */ + static createStateNotFoundError() { + return new _NodeAuthError(NodeAuthErrorMessage.stateNotFoundError.code, NodeAuthErrorMessage.stateNotFoundError.desc); + } + /** + * Creates an error thrown when client certificate was provided, but neither the SHA-1 or SHA-256 thumbprints were provided + */ + static createThumbprintMissingError() { + return new _NodeAuthError(NodeAuthErrorMessage.thumbprintMissing.code, NodeAuthErrorMessage.thumbprintMissing.desc); + } + /** + * Creates an error thrown when redirectUri is provided in an unsupported scenario + */ + static createRedirectUriNotSupportedError() { + return new _NodeAuthError(NodeAuthErrorMessage.redirectUriNotSupported.code, NodeAuthErrorMessage.redirectUriNotSupported.desc); + } +}; + +// node_modules/@azure/msal-node/dist/config/Configuration.mjs +var DEFAULT_AUTH_OPTIONS = { + clientId: Constants.EMPTY_STRING, + authority: Constants.DEFAULT_AUTHORITY, + clientSecret: Constants.EMPTY_STRING, + clientAssertion: Constants.EMPTY_STRING, + clientCertificate: { + thumbprint: Constants.EMPTY_STRING, + thumbprintSha256: Constants.EMPTY_STRING, + privateKey: Constants.EMPTY_STRING, + x5c: Constants.EMPTY_STRING + }, + knownAuthorities: [], + cloudDiscoveryMetadata: Constants.EMPTY_STRING, + authorityMetadata: Constants.EMPTY_STRING, + clientCapabilities: [], + protocolMode: ProtocolMode.AAD, + azureCloudOptions: { + azureCloudInstance: AzureCloudInstance.None, + tenant: Constants.EMPTY_STRING + }, + skipAuthorityMetadataCache: false, + encodeExtraQueryParams: false +}; +var DEFAULT_CACHE_OPTIONS2 = { + claimsBasedCachingEnabled: false +}; +var DEFAULT_LOGGER_OPTIONS = { + loggerCallback: () => { + }, + piiLoggingEnabled: false, + logLevel: LogLevel.Info +}; +var DEFAULT_SYSTEM_OPTIONS2 = { + loggerOptions: DEFAULT_LOGGER_OPTIONS, + networkClient: new HttpClient(), + proxyUrl: Constants.EMPTY_STRING, + customAgentOptions: {}, + disableInternalRetries: false +}; +var DEFAULT_TELEMETRY_OPTIONS2 = { + application: { + appName: Constants.EMPTY_STRING, + appVersion: Constants.EMPTY_STRING + } +}; +function buildAppConfiguration({ auth, broker, cache, system, telemetry }) { + const systemOptions = { + ...DEFAULT_SYSTEM_OPTIONS2, + networkClient: new HttpClient(system?.proxyUrl, system?.customAgentOptions), + loggerOptions: system?.loggerOptions || DEFAULT_LOGGER_OPTIONS, + disableInternalRetries: system?.disableInternalRetries || false + }; + if (!!auth.clientCertificate && !!!auth.clientCertificate.thumbprint && !!!auth.clientCertificate.thumbprintSha256) { + throw NodeAuthError.createStateNotFoundError(); + } + return { + auth: { ...DEFAULT_AUTH_OPTIONS, ...auth }, + broker: { ...broker }, + cache: { ...DEFAULT_CACHE_OPTIONS2, ...cache }, + system: { ...systemOptions, ...system }, + telemetry: { ...DEFAULT_TELEMETRY_OPTIONS2, ...telemetry } + }; +} + +// node_modules/@azure/msal-node/dist/crypto/GuidGenerator.mjs +init_esm_node(); +var GuidGenerator = class { + /** + * + * RFC4122: The version 4 UUID is meant for generating UUIDs from truly-random or pseudo-random numbers. + * uuidv4 generates guids from cryprtographically-string random + */ + generateGuid() { + return v4_default(); + } + /** + * verifies if a string is GUID + * @param guid + */ + isGuid(guid2) { + const regexGuid = /^[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/i; + return regexGuid.test(guid2); + } +}; + +// node_modules/@azure/msal-node/dist/utils/EncodingUtils.mjs +var EncodingUtils = class _EncodingUtils { + /** + * 'utf8': Multibyte encoded Unicode characters. Many web pages and other document formats use UTF-8. + * 'base64': Base64 encoding. + * + * @param str text + */ + static base64Encode(str, encoding) { + return Buffer.from(str, encoding).toString(EncodingTypes.BASE64); + } + /** + * encode a URL + * @param str + */ + static base64EncodeUrl(str, encoding) { + return _EncodingUtils.base64Encode(str, encoding).replace(/=/g, Constants.EMPTY_STRING).replace(/\+/g, "-").replace(/\//g, "_"); + } + /** + * 'utf8': Multibyte encoded Unicode characters. Many web pages and other document formats use UTF-8. + * 'base64': Base64 encoding. + * + * @param base64Str Base64 encoded text + */ + static base64Decode(base64Str) { + return Buffer.from(base64Str, EncodingTypes.BASE64).toString("utf8"); + } + /** + * @param base64Str Base64 encoded Url + */ + static base64DecodeUrl(base64Str) { + let str = base64Str.replace(/-/g, "+").replace(/_/g, "/"); + while (str.length % 4) { + str += "="; + } + return _EncodingUtils.base64Decode(str); + } +}; + +// node_modules/@azure/msal-node/dist/crypto/HashUtils.mjs +var import_crypto2 = __toESM(require("crypto"), 1); +var HashUtils = class { + /** + * generate 'SHA256' hash + * @param buffer + */ + sha256(buffer) { + return import_crypto2.default.createHash(Hash.SHA256).update(buffer).digest(); + } +}; + +// node_modules/@azure/msal-node/dist/crypto/PkceGenerator.mjs +var import_crypto3 = __toESM(require("crypto"), 1); +var PkceGenerator = class { + constructor() { + this.hashUtils = new HashUtils(); + } + /** + * generates the codeVerfier and the challenge from the codeVerfier + * reference: https://tools.ietf.org/html/rfc7636#section-4.1 and https://tools.ietf.org/html/rfc7636#section-4.2 + */ + async generatePkceCodes() { + const verifier = this.generateCodeVerifier(); + const challenge = this.generateCodeChallengeFromVerifier(verifier); + return { verifier, challenge }; + } + /** + * generates the codeVerfier; reference: https://tools.ietf.org/html/rfc7636#section-4.1 + */ + generateCodeVerifier() { + const charArr = []; + const maxNumber = 256 - 256 % CharSet.CV_CHARSET.length; + while (charArr.length <= RANDOM_OCTET_SIZE) { + const byte = import_crypto3.default.randomBytes(1)[0]; + if (byte >= maxNumber) { + continue; + } + const index = byte % CharSet.CV_CHARSET.length; + charArr.push(CharSet.CV_CHARSET[index]); + } + const verifier = charArr.join(Constants.EMPTY_STRING); + return EncodingUtils.base64EncodeUrl(verifier); + } + /** + * generate the challenge from the codeVerfier; reference: https://tools.ietf.org/html/rfc7636#section-4.2 + * @param codeVerifier + */ + generateCodeChallengeFromVerifier(codeVerifier) { + return EncodingUtils.base64EncodeUrl(this.hashUtils.sha256(codeVerifier).toString(EncodingTypes.BASE64), EncodingTypes.BASE64); + } +}; + +// node_modules/@azure/msal-node/dist/crypto/CryptoProvider.mjs +var CryptoProvider = class { + constructor() { + this.pkceGenerator = new PkceGenerator(); + this.guidGenerator = new GuidGenerator(); + this.hashUtils = new HashUtils(); + } + /** + * base64 URL safe encoded string + */ + base64UrlEncode() { + throw new Error("Method not implemented."); + } + /** + * Stringifies and base64Url encodes input public key + * @param inputKid - public key id + * @returns Base64Url encoded public key + */ + encodeKid() { + throw new Error("Method not implemented."); + } + /** + * Creates a new random GUID - used to populate state and nonce. + * @returns string (GUID) + */ + createNewGuid() { + return this.guidGenerator.generateGuid(); + } + /** + * Encodes input string to base64. + * @param input - string to be encoded + */ + base64Encode(input) { + return EncodingUtils.base64Encode(input); + } + /** + * Decodes input string from base64. + * @param input - string to be decoded + */ + base64Decode(input) { + return EncodingUtils.base64Decode(input); + } + /** + * Generates PKCE codes used in Authorization Code Flow. + */ + generatePkceCodes() { + return this.pkceGenerator.generatePkceCodes(); + } + /** + * Generates a keypair, stores it and returns a thumbprint - not yet implemented for node + */ + getPublicKeyThumbprint() { + throw new Error("Method not implemented."); + } + /** + * Removes cryptographic keypair from key store matching the keyId passed in + * @param kid - public key id + */ + removeTokenBindingKey() { + throw new Error("Method not implemented."); + } + /** + * Removes all cryptographic keys from Keystore + */ + clearKeystore() { + throw new Error("Method not implemented."); + } + /** + * Signs the given object as a jwt payload with private key retrieved by given kid - currently not implemented for node + */ + signJwt() { + throw new Error("Method not implemented."); + } + /** + * Returns the SHA-256 hash of an input string + */ + async hashString(plainText) { + return EncodingUtils.base64EncodeUrl(this.hashUtils.sha256(plainText).toString(EncodingTypes.BASE64), EncodingTypes.BASE64); + } +}; + +// node_modules/@azure/msal-node/dist/cache/CacheHelpers.mjs +function generateCredentialKey(credential) { + const familyId = credential.credentialType === CredentialType.REFRESH_TOKEN && credential.familyId || credential.clientId; + const scheme = credential.tokenType && credential.tokenType.toLowerCase() !== AuthenticationScheme.BEARER.toLowerCase() ? credential.tokenType.toLowerCase() : ""; + const credentialKey = [ + credential.homeAccountId, + credential.environment, + credential.credentialType, + familyId, + credential.realm || "", + credential.target || "", + credential.requestedClaimsHash || "", + scheme + ]; + return credentialKey.join(CACHE.KEY_SEPARATOR).toLowerCase(); +} +function generateAccountKey(account) { + const homeTenantId = account.homeAccountId.split(".")[1]; + const accountKey = [ + account.homeAccountId, + account.environment, + homeTenantId || account.tenantId || "" + ]; + return accountKey.join(CACHE.KEY_SEPARATOR).toLowerCase(); +} + +// node_modules/@azure/msal-node/dist/cache/NodeStorage.mjs +var NodeStorage = class extends CacheManager { + constructor(logger31, clientId, cryptoImpl, staticAuthorityOptions) { + super(clientId, cryptoImpl, logger31, new StubPerformanceClient(), staticAuthorityOptions); + this.cache = {}; + this.changeEmitters = []; + this.logger = logger31; + } + /** + * Queue up callbacks + * @param func - a callback function for cache change indication + */ + registerChangeEmitter(func) { + this.changeEmitters.push(func); + } + /** + * Invoke the callback when cache changes + */ + emitChange() { + this.changeEmitters.forEach((func) => func.call(null)); + } + /** + * Converts cacheKVStore to InMemoryCache + * @param cache - key value store + */ + cacheToInMemoryCache(cache) { + const inMemoryCache = { + accounts: {}, + idTokens: {}, + accessTokens: {}, + refreshTokens: {}, + appMetadata: {} + }; + for (const key in cache) { + const value = cache[key]; + if (typeof value !== "object") { + continue; + } + if (value instanceof AccountEntity) { + inMemoryCache.accounts[key] = value; + } else if (CacheHelpers_exports.isIdTokenEntity(value)) { + inMemoryCache.idTokens[key] = value; + } else if (CacheHelpers_exports.isAccessTokenEntity(value)) { + inMemoryCache.accessTokens[key] = value; + } else if (CacheHelpers_exports.isRefreshTokenEntity(value)) { + inMemoryCache.refreshTokens[key] = value; + } else if (CacheHelpers_exports.isAppMetadataEntity(key, value)) { + inMemoryCache.appMetadata[key] = value; + } else { + continue; + } + } + return inMemoryCache; + } + /** + * converts inMemoryCache to CacheKVStore + * @param inMemoryCache - kvstore map for inmemory + */ + inMemoryCacheToCache(inMemoryCache) { + let cache = this.getCache(); + cache = { + ...cache, + ...inMemoryCache.accounts, + ...inMemoryCache.idTokens, + ...inMemoryCache.accessTokens, + ...inMemoryCache.refreshTokens, + ...inMemoryCache.appMetadata + }; + return cache; + } + /** + * gets the current in memory cache for the client + */ + getInMemoryCache() { + this.logger.trace("Getting in-memory cache"); + const inMemoryCache = this.cacheToInMemoryCache(this.getCache()); + return inMemoryCache; + } + /** + * sets the current in memory cache for the client + * @param inMemoryCache - key value map in memory + */ + setInMemoryCache(inMemoryCache) { + this.logger.trace("Setting in-memory cache"); + const cache = this.inMemoryCacheToCache(inMemoryCache); + this.setCache(cache); + this.emitChange(); + } + /** + * get the current cache key-value store + */ + getCache() { + this.logger.trace("Getting cache key-value store"); + return this.cache; + } + /** + * sets the current cache (key value store) + * @param cacheMap - key value map + */ + setCache(cache) { + this.logger.trace("Setting cache key value store"); + this.cache = cache; + this.emitChange(); + } + /** + * Gets cache item with given key. + * @param key - lookup key for the cache entry + */ + getItem(key) { + this.logger.tracePii(`Item key: ${key}`); + const cache = this.getCache(); + return cache[key]; + } + /** + * Gets cache item with given key-value + * @param key - lookup key for the cache entry + * @param value - value of the cache entry + */ + setItem(key, value) { + this.logger.tracePii(`Item key: ${key}`); + const cache = this.getCache(); + cache[key] = value; + this.setCache(cache); + } + generateCredentialKey(credential) { + return generateCredentialKey(credential); + } + generateAccountKey(account) { + return generateAccountKey(account); + } + getAccountKeys() { + const inMemoryCache = this.getInMemoryCache(); + const accountKeys = Object.keys(inMemoryCache.accounts); + return accountKeys; + } + getTokenKeys() { + const inMemoryCache = this.getInMemoryCache(); + const tokenKeys = { + idToken: Object.keys(inMemoryCache.idTokens), + accessToken: Object.keys(inMemoryCache.accessTokens), + refreshToken: Object.keys(inMemoryCache.refreshTokens) + }; + return tokenKeys; + } + /** + * Reads account from cache, builds it into an account entity and returns it. + * @param accountKey - lookup key to fetch cache type AccountEntity + * @returns + */ + getAccount(accountKey) { + const cachedAccount = this.getItem(accountKey); + return cachedAccount ? Object.assign(new AccountEntity(), this.getItem(accountKey)) : null; + } + /** + * set account entity + * @param account - cache value to be set of type AccountEntity + */ + async setAccount(account) { + const accountKey = this.generateAccountKey(AccountEntity.getAccountInfo(account)); + this.setItem(accountKey, account); + } + /** + * fetch the idToken credential + * @param idTokenKey - lookup key to fetch cache type IdTokenEntity + */ + getIdTokenCredential(idTokenKey) { + const idToken = this.getItem(idTokenKey); + if (CacheHelpers_exports.isIdTokenEntity(idToken)) { + return idToken; + } + return null; + } + /** + * set idToken credential + * @param idToken - cache value to be set of type IdTokenEntity + */ + async setIdTokenCredential(idToken) { + const idTokenKey = this.generateCredentialKey(idToken); + this.setItem(idTokenKey, idToken); + } + /** + * fetch the accessToken credential + * @param accessTokenKey - lookup key to fetch cache type AccessTokenEntity + */ + getAccessTokenCredential(accessTokenKey) { + const accessToken = this.getItem(accessTokenKey); + if (CacheHelpers_exports.isAccessTokenEntity(accessToken)) { + return accessToken; + } + return null; + } + /** + * set accessToken credential + * @param accessToken - cache value to be set of type AccessTokenEntity + */ + async setAccessTokenCredential(accessToken) { + const accessTokenKey = this.generateCredentialKey(accessToken); + this.setItem(accessTokenKey, accessToken); + } + /** + * fetch the refreshToken credential + * @param refreshTokenKey - lookup key to fetch cache type RefreshTokenEntity + */ + getRefreshTokenCredential(refreshTokenKey) { + const refreshToken = this.getItem(refreshTokenKey); + if (CacheHelpers_exports.isRefreshTokenEntity(refreshToken)) { + return refreshToken; + } + return null; + } + /** + * set refreshToken credential + * @param refreshToken - cache value to be set of type RefreshTokenEntity + */ + async setRefreshTokenCredential(refreshToken) { + const refreshTokenKey = this.generateCredentialKey(refreshToken); + this.setItem(refreshTokenKey, refreshToken); + } + /** + * fetch appMetadata entity from the platform cache + * @param appMetadataKey - lookup key to fetch cache type AppMetadataEntity + */ + getAppMetadata(appMetadataKey) { + const appMetadata = this.getItem(appMetadataKey); + if (CacheHelpers_exports.isAppMetadataEntity(appMetadataKey, appMetadata)) { + return appMetadata; + } + return null; + } + /** + * set appMetadata entity to the platform cache + * @param appMetadata - cache value to be set of type AppMetadataEntity + */ + setAppMetadata(appMetadata) { + const appMetadataKey = CacheHelpers_exports.generateAppMetadataKey(appMetadata); + this.setItem(appMetadataKey, appMetadata); + } + /** + * fetch server telemetry entity from the platform cache + * @param serverTelemetrykey - lookup key to fetch cache type ServerTelemetryEntity + */ + getServerTelemetry(serverTelemetrykey) { + const serverTelemetryEntity = this.getItem(serverTelemetrykey); + if (serverTelemetryEntity && CacheHelpers_exports.isServerTelemetryEntity(serverTelemetrykey, serverTelemetryEntity)) { + return serverTelemetryEntity; + } + return null; + } + /** + * set server telemetry entity to the platform cache + * @param serverTelemetryKey - lookup key to fetch cache type ServerTelemetryEntity + * @param serverTelemetry - cache value to be set of type ServerTelemetryEntity + */ + setServerTelemetry(serverTelemetryKey, serverTelemetry) { + this.setItem(serverTelemetryKey, serverTelemetry); + } + /** + * fetch authority metadata entity from the platform cache + * @param key - lookup key to fetch cache type AuthorityMetadataEntity + */ + getAuthorityMetadata(key) { + const authorityMetadataEntity = this.getItem(key); + if (authorityMetadataEntity && CacheHelpers_exports.isAuthorityMetadataEntity(key, authorityMetadataEntity)) { + return authorityMetadataEntity; + } + return null; + } + /** + * Get all authority metadata keys + */ + getAuthorityMetadataKeys() { + return this.getKeys().filter((key) => { + return this.isAuthorityMetadata(key); + }); + } + /** + * set authority metadata entity to the platform cache + * @param key - lookup key to fetch cache type AuthorityMetadataEntity + * @param metadata - cache value to be set of type AuthorityMetadataEntity + */ + setAuthorityMetadata(key, metadata) { + this.setItem(key, metadata); + } + /** + * fetch throttling entity from the platform cache + * @param throttlingCacheKey - lookup key to fetch cache type ThrottlingEntity + */ + getThrottlingCache(throttlingCacheKey) { + const throttlingCache = this.getItem(throttlingCacheKey); + if (throttlingCache && CacheHelpers_exports.isThrottlingEntity(throttlingCacheKey, throttlingCache)) { + return throttlingCache; + } + return null; + } + /** + * set throttling entity to the platform cache + * @param throttlingCacheKey - lookup key to fetch cache type ThrottlingEntity + * @param throttlingCache - cache value to be set of type ThrottlingEntity + */ + setThrottlingCache(throttlingCacheKey, throttlingCache) { + this.setItem(throttlingCacheKey, throttlingCache); + } + /** + * Removes the cache item from memory with the given key. + * @param key - lookup key to remove a cache entity + * @param inMemory - key value map of the cache + */ + removeItem(key) { + this.logger.tracePii(`Item key: ${key}`); + let result = false; + const cache = this.getCache(); + if (!!cache[key]) { + delete cache[key]; + result = true; + } + if (result) { + this.setCache(cache); + this.emitChange(); + } + return result; + } + /** + * Remove account entity from the platform cache if it's outdated + * @param accountKey - lookup key to fetch cache type AccountEntity + */ + removeOutdatedAccount(accountKey) { + this.removeItem(accountKey); + } + /** + * Checks whether key is in cache. + * @param key - look up key for a cache entity + */ + containsKey(key) { + return this.getKeys().includes(key); + } + /** + * Gets all keys in window. + */ + getKeys() { + this.logger.trace("Retrieving all cache keys"); + const cache = this.getCache(); + return [...Object.keys(cache)]; + } + /** + * Clears all cache entries created by MSAL (except tokens). + */ + clear() { + this.logger.trace("Clearing cache entries created by MSAL"); + const cacheKeys = this.getKeys(); + cacheKeys.forEach((key) => { + this.removeItem(key); + }); + this.emitChange(); + } + /** + * Initialize in memory cache from an exisiting cache vault + * @param cache - blob formatted cache (JSON) + */ + static generateInMemoryCache(cache) { + return Deserializer.deserializeAllCache(Deserializer.deserializeJSONBlob(cache)); + } + /** + * retrieves the final JSON + * @param inMemoryCache - itemised cache read from the JSON + */ + static generateJsonCache(inMemoryCache) { + return Serializer.serializeAllCache(inMemoryCache); + } + /** + * Updates a credential's cache key if the current cache key is outdated + */ + updateCredentialCacheKey(currentCacheKey, credential) { + const updatedCacheKey = this.generateCredentialKey(credential); + if (currentCacheKey !== updatedCacheKey) { + const cacheItem = this.getItem(currentCacheKey); + if (cacheItem) { + this.removeItem(currentCacheKey); + this.setItem(updatedCacheKey, cacheItem); + this.logger.verbose(`Updated an outdated ${credential.credentialType} cache key`); + return updatedCacheKey; + } else { + this.logger.error(`Attempted to update an outdated ${credential.credentialType} cache key but no item matching the outdated key was found in storage`); + } + } + return currentCacheKey; + } +}; + +// node_modules/@azure/msal-node/dist/cache/TokenCache.mjs +var defaultSerializedCache = { + Account: {}, + IdToken: {}, + AccessToken: {}, + RefreshToken: {}, + AppMetadata: {} +}; +var TokenCache = class { + constructor(storage, logger31, cachePlugin) { + this.cacheHasChanged = false; + this.storage = storage; + this.storage.registerChangeEmitter(this.handleChangeEvent.bind(this)); + if (cachePlugin) { + this.persistence = cachePlugin; + } + this.logger = logger31; + } + /** + * Set to true if cache state has changed since last time serialize or writeToPersistence was called + */ + hasChanged() { + return this.cacheHasChanged; + } + /** + * Serializes in memory cache to JSON + */ + serialize() { + this.logger.trace("Serializing in-memory cache"); + let finalState = Serializer.serializeAllCache(this.storage.getInMemoryCache()); + if (this.cacheSnapshot) { + this.logger.trace("Reading cache snapshot from disk"); + finalState = this.mergeState(JSON.parse(this.cacheSnapshot), finalState); + } else { + this.logger.trace("No cache snapshot to merge"); + } + this.cacheHasChanged = false; + return JSON.stringify(finalState); + } + /** + * Deserializes JSON to in-memory cache. JSON should be in MSAL cache schema format + * @param cache - blob formatted cache + */ + deserialize(cache) { + this.logger.trace("Deserializing JSON to in-memory cache"); + this.cacheSnapshot = cache; + if (this.cacheSnapshot) { + this.logger.trace("Reading cache snapshot from disk"); + const deserializedCache = Deserializer.deserializeAllCache(this.overlayDefaults(JSON.parse(this.cacheSnapshot))); + this.storage.setInMemoryCache(deserializedCache); + } else { + this.logger.trace("No cache snapshot to deserialize"); + } + } + /** + * Fetches the cache key-value map + */ + getKVStore() { + return this.storage.getCache(); + } + /** + * Gets cache snapshot in CacheKVStore format + */ + getCacheSnapshot() { + const deserializedPersistentStorage = NodeStorage.generateInMemoryCache(this.cacheSnapshot); + return this.storage.inMemoryCacheToCache(deserializedPersistentStorage); + } + /** + * API that retrieves all accounts currently in cache to the user + */ + async getAllAccounts(correlationId = new CryptoProvider().createNewGuid()) { + this.logger.trace("getAllAccounts called"); + let cacheContext; + try { + if (this.persistence) { + cacheContext = new TokenCacheContext(this, false); + await this.persistence.beforeCacheAccess(cacheContext); + } + return this.storage.getAllAccounts({}, correlationId); + } finally { + if (this.persistence && cacheContext) { + await this.persistence.afterCacheAccess(cacheContext); + } + } + } + /** + * Returns the signed in account matching homeAccountId. + * (the account object is created at the time of successful login) + * or null when no matching account is found + * @param homeAccountId - unique identifier for an account (uid.utid) + */ + async getAccountByHomeId(homeAccountId) { + const allAccounts = await this.getAllAccounts(); + if (homeAccountId && allAccounts && allAccounts.length) { + return allAccounts.filter((accountObj) => accountObj.homeAccountId === homeAccountId)[0] || null; + } else { + return null; + } + } + /** + * Returns the signed in account matching localAccountId. + * (the account object is created at the time of successful login) + * or null when no matching account is found + * @param localAccountId - unique identifier of an account (sub/obj when homeAccountId cannot be populated) + */ + async getAccountByLocalId(localAccountId) { + const allAccounts = await this.getAllAccounts(); + if (localAccountId && allAccounts && allAccounts.length) { + return allAccounts.filter((accountObj) => accountObj.localAccountId === localAccountId)[0] || null; + } else { + return null; + } + } + /** + * API to remove a specific account and the relevant data from cache + * @param account - AccountInfo passed by the user + */ + async removeAccount(account, correlationId) { + this.logger.trace("removeAccount called"); + let cacheContext; + try { + if (this.persistence) { + cacheContext = new TokenCacheContext(this, true); + await this.persistence.beforeCacheAccess(cacheContext); + } + this.storage.removeAccount(account, correlationId || new GuidGenerator().generateGuid()); + } finally { + if (this.persistence && cacheContext) { + await this.persistence.afterCacheAccess(cacheContext); + } + } + } + /** + * Overwrites in-memory cache with persistent cache + */ + async overwriteCache() { + if (!this.persistence) { + this.logger.info("No persistence layer specified, cache cannot be overwritten"); + return; + } + this.logger.info("Overwriting in-memory cache with persistent cache"); + this.storage.clear(); + const cacheContext = new TokenCacheContext(this, false); + await this.persistence.beforeCacheAccess(cacheContext); + const cacheSnapshot = this.getCacheSnapshot(); + this.storage.setCache(cacheSnapshot); + await this.persistence.afterCacheAccess(cacheContext); + } + /** + * Called when the cache has changed state. + */ + handleChangeEvent() { + this.cacheHasChanged = true; + } + /** + * Merge in memory cache with the cache snapshot. + * @param oldState - cache before changes + * @param currentState - current cache state in the library + */ + mergeState(oldState, currentState) { + this.logger.trace("Merging in-memory cache with cache snapshot"); + const stateAfterRemoval = this.mergeRemovals(oldState, currentState); + return this.mergeUpdates(stateAfterRemoval, currentState); + } + /** + * Deep update of oldState based on newState values + * @param oldState - cache before changes + * @param newState - updated cache + */ + mergeUpdates(oldState, newState) { + Object.keys(newState).forEach((newKey) => { + const newValue = newState[newKey]; + if (!oldState.hasOwnProperty(newKey)) { + if (newValue !== null) { + oldState[newKey] = newValue; + } + } else { + const newValueNotNull = newValue !== null; + const newValueIsObject = typeof newValue === "object"; + const newValueIsNotArray = !Array.isArray(newValue); + const oldStateNotUndefinedOrNull = typeof oldState[newKey] !== "undefined" && oldState[newKey] !== null; + if (newValueNotNull && newValueIsObject && newValueIsNotArray && oldStateNotUndefinedOrNull) { + this.mergeUpdates(oldState[newKey], newValue); + } else { + oldState[newKey] = newValue; + } + } + }); + return oldState; + } + /** + * Removes entities in oldState that the were removed from newState. If there are any unknown values in root of + * oldState that are not recognized, they are left untouched. + * @param oldState - cache before changes + * @param newState - updated cache + */ + mergeRemovals(oldState, newState) { + this.logger.trace("Remove updated entries in cache"); + const accounts = oldState.Account ? this.mergeRemovalsDict(oldState.Account, newState.Account) : oldState.Account; + const accessTokens = oldState.AccessToken ? this.mergeRemovalsDict(oldState.AccessToken, newState.AccessToken) : oldState.AccessToken; + const refreshTokens = oldState.RefreshToken ? this.mergeRemovalsDict(oldState.RefreshToken, newState.RefreshToken) : oldState.RefreshToken; + const idTokens = oldState.IdToken ? this.mergeRemovalsDict(oldState.IdToken, newState.IdToken) : oldState.IdToken; + const appMetadata = oldState.AppMetadata ? this.mergeRemovalsDict(oldState.AppMetadata, newState.AppMetadata) : oldState.AppMetadata; + return { + ...oldState, + Account: accounts, + AccessToken: accessTokens, + RefreshToken: refreshTokens, + IdToken: idTokens, + AppMetadata: appMetadata + }; + } + /** + * Helper to merge new cache with the old one + * @param oldState - cache before changes + * @param newState - updated cache + */ + mergeRemovalsDict(oldState, newState) { + const finalState = { ...oldState }; + Object.keys(oldState).forEach((oldKey) => { + if (!newState || !newState.hasOwnProperty(oldKey)) { + delete finalState[oldKey]; + } + }); + return finalState; + } + /** + * Helper to overlay as a part of cache merge + * @param passedInCache - cache read from the blob + */ + overlayDefaults(passedInCache) { + this.logger.trace("Overlaying input cache with the default cache"); + return { + Account: { + ...defaultSerializedCache.Account, + ...passedInCache.Account + }, + IdToken: { + ...defaultSerializedCache.IdToken, + ...passedInCache.IdToken + }, + AccessToken: { + ...defaultSerializedCache.AccessToken, + ...passedInCache.AccessToken + }, + RefreshToken: { + ...defaultSerializedCache.RefreshToken, + ...passedInCache.RefreshToken + }, + AppMetadata: { + ...defaultSerializedCache.AppMetadata, + ...passedInCache.AppMetadata + } + }; + } +}; + +// node_modules/@azure/msal-node/dist/client/ClientAssertion.mjs +var import_jsonwebtoken = __toESM(require_jsonwebtoken(), 1); +var ClientAssertion = class _ClientAssertion { + /** + * Initialize the ClientAssertion class from the clientAssertion passed by the user + * @param assertion - refer https://tools.ietf.org/html/rfc7521 + */ + static fromAssertion(assertion) { + const clientAssertion = new _ClientAssertion(); + clientAssertion.jwt = assertion; + return clientAssertion; + } + /** + * @deprecated Use fromCertificateWithSha256Thumbprint instead, with a SHA-256 thumprint + * Initialize the ClientAssertion class from the certificate passed by the user + * @param thumbprint - identifier of a certificate + * @param privateKey - secret key + * @param publicCertificate - electronic document provided to prove the ownership of the public key + */ + static fromCertificate(thumbprint, privateKey, publicCertificate) { + const clientAssertion = new _ClientAssertion(); + clientAssertion.privateKey = privateKey; + clientAssertion.thumbprint = thumbprint; + clientAssertion.useSha256 = false; + if (publicCertificate) { + clientAssertion.publicCertificate = this.parseCertificate(publicCertificate); + } + return clientAssertion; + } + /** + * Initialize the ClientAssertion class from the certificate passed by the user + * @param thumbprint - identifier of a certificate + * @param privateKey - secret key + * @param publicCertificate - electronic document provided to prove the ownership of the public key + */ + static fromCertificateWithSha256Thumbprint(thumbprint, privateKey, publicCertificate) { + const clientAssertion = new _ClientAssertion(); + clientAssertion.privateKey = privateKey; + clientAssertion.thumbprint = thumbprint; + clientAssertion.useSha256 = true; + if (publicCertificate) { + clientAssertion.publicCertificate = this.parseCertificate(publicCertificate); + } + return clientAssertion; + } + /** + * Update JWT for certificate based clientAssertion, if passed by the user, uses it as is + * @param cryptoProvider - library's crypto helper + * @param issuer - iss claim + * @param jwtAudience - aud claim + */ + getJwt(cryptoProvider, issuer, jwtAudience) { + if (this.privateKey && this.thumbprint) { + if (this.jwt && !this.isExpired() && issuer === this.issuer && jwtAudience === this.jwtAudience) { + return this.jwt; + } + return this.createJwt(cryptoProvider, issuer, jwtAudience); + } + if (this.jwt) { + return this.jwt; + } + throw createClientAuthError(ClientAuthErrorCodes_exports.invalidAssertion); + } + /** + * JWT format and required claims specified: https://tools.ietf.org/html/rfc7523#section-3 + */ + createJwt(cryptoProvider, issuer, jwtAudience) { + this.issuer = issuer; + this.jwtAudience = jwtAudience; + const issuedAt = TimeUtils_exports.nowSeconds(); + this.expirationTime = issuedAt + 600; + const algorithm = this.useSha256 ? JwtConstants.PSS_256 : JwtConstants.RSA_256; + const header = { + alg: algorithm + }; + const thumbprintHeader = this.useSha256 ? JwtConstants.X5T_256 : JwtConstants.X5T; + Object.assign(header, { + [thumbprintHeader]: EncodingUtils.base64EncodeUrl(this.thumbprint, EncodingTypes.HEX) + }); + if (this.publicCertificate) { + Object.assign(header, { + [JwtConstants.X5C]: this.publicCertificate + }); + } + const payload = { + [JwtConstants.AUDIENCE]: this.jwtAudience, + [JwtConstants.EXPIRATION_TIME]: this.expirationTime, + [JwtConstants.ISSUER]: this.issuer, + [JwtConstants.SUBJECT]: this.issuer, + [JwtConstants.NOT_BEFORE]: issuedAt, + [JwtConstants.JWT_ID]: cryptoProvider.createNewGuid() + }; + this.jwt = import_jsonwebtoken.default.sign(payload, this.privateKey, { header }); + return this.jwt; + } + /** + * Utility API to check expiration + */ + isExpired() { + return this.expirationTime < TimeUtils_exports.nowSeconds(); + } + /** + * Extracts the raw certs from a given certificate string and returns them in an array. + * @param publicCertificate - electronic document provided to prove the ownership of the public key + */ + static parseCertificate(publicCertificate) { + const regexToFindCerts = /-----BEGIN CERTIFICATE-----\r*\n(.+?)\r*\n-----END CERTIFICATE-----/gs; + const certs = []; + let matches; + while ((matches = regexToFindCerts.exec(publicCertificate)) !== null) { + certs.push(matches[1].replace(/\r*\n/g, Constants.EMPTY_STRING)); + } + return certs; + } +}; + +// node_modules/@azure/msal-node/dist/client/UsernamePasswordClient.mjs +var UsernamePasswordClient = class extends BaseClient { + constructor(configuration) { + super(configuration); + } + /** + * API to acquire a token by passing the username and password to the service in exchage of credentials + * password_grant + * @param request - CommonUsernamePasswordRequest + */ + async acquireToken(request) { + this.logger.info("in acquireToken call in username-password client"); + const reqTimestamp = TimeUtils_exports.nowSeconds(); + const response = await this.executeTokenRequest(this.authority, request); + const responseHandler = new ResponseHandler(this.config.authOptions.clientId, this.cacheManager, this.cryptoUtils, this.logger, this.config.serializableCache, this.config.persistencePlugin); + responseHandler.validateTokenResponse(response.body); + const tokenResponse = responseHandler.handleServerTokenResponse(response.body, this.authority, reqTimestamp, request, ApiId.acquireTokenByUsernamePassword); + return tokenResponse; + } + /** + * Executes POST request to token endpoint + * @param authority - authority object + * @param request - CommonUsernamePasswordRequest provided by the developer + */ + async executeTokenRequest(authority, request) { + const queryParametersString = this.createTokenQueryParameters(request); + const endpoint = UrlString.appendQueryString(authority.tokenEndpoint, queryParametersString); + const requestBody = await this.createTokenRequestBody(request); + const headers = this.createTokenRequestHeaders({ + credential: request.username, + type: CcsCredentialType.UPN + }); + const thumbprint = { + clientId: this.config.authOptions.clientId, + authority: authority.canonicalAuthority, + scopes: request.scopes, + claims: request.claims, + authenticationScheme: request.authenticationScheme, + resourceRequestMethod: request.resourceRequestMethod, + resourceRequestUri: request.resourceRequestUri, + shrClaims: request.shrClaims, + sshKid: request.sshKid + }; + return this.executePostToTokenEndpoint(endpoint, requestBody, headers, thumbprint, request.correlationId); + } + /** + * Generates a map for all the params to be sent to the service + * @param request - CommonUsernamePasswordRequest provided by the developer + */ + async createTokenRequestBody(request) { + const parameters = /* @__PURE__ */ new Map(); + RequestParameterBuilder_exports.addClientId(parameters, this.config.authOptions.clientId); + RequestParameterBuilder_exports.addUsername(parameters, request.username); + RequestParameterBuilder_exports.addPassword(parameters, request.password); + RequestParameterBuilder_exports.addScopes(parameters, request.scopes); + RequestParameterBuilder_exports.addResponseType(parameters, OAuthResponseType.IDTOKEN_TOKEN); + RequestParameterBuilder_exports.addGrantType(parameters, GrantType.RESOURCE_OWNER_PASSWORD_GRANT); + RequestParameterBuilder_exports.addClientInfo(parameters); + RequestParameterBuilder_exports.addLibraryInfo(parameters, this.config.libraryInfo); + RequestParameterBuilder_exports.addApplicationTelemetry(parameters, this.config.telemetry.application); + RequestParameterBuilder_exports.addThrottling(parameters); + if (this.serverTelemetryManager) { + RequestParameterBuilder_exports.addServerTelemetry(parameters, this.serverTelemetryManager); + } + const correlationId = request.correlationId || this.config.cryptoInterface.createNewGuid(); + RequestParameterBuilder_exports.addCorrelationId(parameters, correlationId); + if (this.config.clientCredentials.clientSecret) { + RequestParameterBuilder_exports.addClientSecret(parameters, this.config.clientCredentials.clientSecret); + } + const clientAssertion = this.config.clientCredentials.clientAssertion; + if (clientAssertion) { + RequestParameterBuilder_exports.addClientAssertion(parameters, await getClientAssertion(clientAssertion.assertion, this.config.authOptions.clientId, request.resourceRequestUri)); + RequestParameterBuilder_exports.addClientAssertionType(parameters, clientAssertion.assertionType); + } + if (!StringUtils.isEmptyObj(request.claims) || this.config.authOptions.clientCapabilities && this.config.authOptions.clientCapabilities.length > 0) { + RequestParameterBuilder_exports.addClaims(parameters, request.claims, this.config.authOptions.clientCapabilities); + } + if (this.config.systemOptions.preventCorsPreflight && request.username) { + RequestParameterBuilder_exports.addCcsUpn(parameters, request.username); + } + return UrlUtils_exports.mapToQueryString(parameters); + } +}; + +// node_modules/@azure/msal-node/dist/protocol/Authorize.mjs +function getAuthCodeRequestUrl(config2, authority, request, logger31) { + const parameters = Authorize_exports.getStandardAuthorizeRequestParameters({ + ...config2.auth, + authority, + redirectUri: request.redirectUri || "" + }, request, logger31); + RequestParameterBuilder_exports.addLibraryInfo(parameters, { + sku: Constants2.MSAL_SKU, + version: version3, + cpu: process.arch || "", + os: process.platform || "" + }); + if (config2.auth.protocolMode !== ProtocolMode.OIDC) { + RequestParameterBuilder_exports.addApplicationTelemetry(parameters, config2.telemetry.application); + } + RequestParameterBuilder_exports.addResponseType(parameters, OAuthResponseType.CODE); + if (request.codeChallenge && request.codeChallengeMethod) { + RequestParameterBuilder_exports.addCodeChallengeParams(parameters, request.codeChallenge, request.codeChallengeMethod); + } + RequestParameterBuilder_exports.addExtraQueryParameters(parameters, request.extraQueryParameters || {}); + return Authorize_exports.getAuthorizeUrl(authority, parameters, config2.auth.encodeExtraQueryParams, request.extraQueryParameters); +} + +// node_modules/@azure/msal-node/dist/client/ClientApplication.mjs +var ClientApplication = class { + /** + * Constructor for the ClientApplication + */ + constructor(configuration) { + this.config = buildAppConfiguration(configuration); + this.cryptoProvider = new CryptoProvider(); + this.logger = new Logger(this.config.system.loggerOptions, name2, version3); + this.storage = new NodeStorage(this.logger, this.config.auth.clientId, this.cryptoProvider, buildStaticAuthorityOptions(this.config.auth)); + this.tokenCache = new TokenCache(this.storage, this.logger, this.config.cache.cachePlugin); + } + /** + * Creates the URL of the authorization request, letting the user input credentials and consent to the + * application. The URL targets the /authorize endpoint of the authority configured in the + * application object. + * + * Once the user inputs their credentials and consents, the authority will send a response to the redirect URI + * sent in the request and should contain an authorization code, which can then be used to acquire tokens via + * `acquireTokenByCode(AuthorizationCodeRequest)`. + */ + async getAuthCodeUrl(request) { + this.logger.info("getAuthCodeUrl called", request.correlationId); + const validRequest = { + ...request, + ...await this.initializeBaseRequest(request), + responseMode: request.responseMode || ResponseMode.QUERY, + authenticationScheme: AuthenticationScheme.BEARER, + state: request.state || "", + nonce: request.nonce || "" + }; + const discoveredAuthority = await this.createAuthority(validRequest.authority, validRequest.correlationId, void 0, request.azureCloudOptions); + return getAuthCodeRequestUrl(this.config, discoveredAuthority, validRequest, this.logger); + } + /** + * Acquires a token by exchanging the Authorization Code received from the first step of OAuth2.0 + * Authorization Code flow. + * + * `getAuthCodeUrl(AuthorizationCodeUrlRequest)` can be used to create the URL for the first step of OAuth2.0 + * Authorization Code flow. Ensure that values for redirectUri and scopes in AuthorizationCodeUrlRequest and + * AuthorizationCodeRequest are the same. + */ + async acquireTokenByCode(request, authCodePayLoad) { + this.logger.info("acquireTokenByCode called"); + if (request.state && authCodePayLoad) { + this.logger.info("acquireTokenByCode - validating state"); + this.validateState(request.state, authCodePayLoad.state || ""); + authCodePayLoad = { ...authCodePayLoad, state: "" }; + } + const validRequest = { + ...request, + ...await this.initializeBaseRequest(request), + authenticationScheme: AuthenticationScheme.BEARER + }; + const serverTelemetryManager = this.initializeServerTelemetryManager(ApiId.acquireTokenByCode, validRequest.correlationId); + try { + const discoveredAuthority = await this.createAuthority(validRequest.authority, validRequest.correlationId, void 0, request.azureCloudOptions); + const authClientConfig = await this.buildOauthClientConfiguration(discoveredAuthority, validRequest.correlationId, validRequest.redirectUri, serverTelemetryManager); + const authorizationCodeClient = new AuthorizationCodeClient(authClientConfig); + this.logger.verbose("Auth code client created", validRequest.correlationId); + return await authorizationCodeClient.acquireToken(validRequest, ApiId.acquireTokenByCode, authCodePayLoad); + } catch (e) { + if (e instanceof AuthError) { + e.setCorrelationId(validRequest.correlationId); + } + serverTelemetryManager.cacheFailedRequest(e); + throw e; + } + } + /** + * Acquires a token by exchanging the refresh token provided for a new set of tokens. + * + * This API is provided only for scenarios where you would like to migrate from ADAL to MSAL. Otherwise, it is + * recommended that you use `acquireTokenSilent()` for silent scenarios. When using `acquireTokenSilent()`, MSAL will + * handle the caching and refreshing of tokens automatically. + */ + async acquireTokenByRefreshToken(request) { + this.logger.info("acquireTokenByRefreshToken called", request.correlationId); + const validRequest = { + ...request, + ...await this.initializeBaseRequest(request), + authenticationScheme: AuthenticationScheme.BEARER + }; + const serverTelemetryManager = this.initializeServerTelemetryManager(ApiId.acquireTokenByRefreshToken, validRequest.correlationId); + try { + const discoveredAuthority = await this.createAuthority(validRequest.authority, validRequest.correlationId, void 0, request.azureCloudOptions); + const refreshTokenClientConfig = await this.buildOauthClientConfiguration(discoveredAuthority, validRequest.correlationId, validRequest.redirectUri || "", serverTelemetryManager); + const refreshTokenClient = new RefreshTokenClient(refreshTokenClientConfig); + this.logger.verbose("Refresh token client created", validRequest.correlationId); + return await refreshTokenClient.acquireToken(validRequest, ApiId.acquireTokenByRefreshToken); + } catch (e) { + if (e instanceof AuthError) { + e.setCorrelationId(validRequest.correlationId); + } + serverTelemetryManager.cacheFailedRequest(e); + throw e; + } + } + /** + * Acquires a token silently when a user specifies the account the token is requested for. + * + * This API expects the user to provide an account object and looks into the cache to retrieve the token if present. + * There is also an optional "forceRefresh" boolean the user can send to bypass the cache for access_token and id_token. + * In case the refresh_token is expired or not found, an error is thrown + * and the guidance is for the user to call any interactive token acquisition API (eg: `acquireTokenByCode()`). + */ + async acquireTokenSilent(request) { + const validRequest = { + ...request, + ...await this.initializeBaseRequest(request), + forceRefresh: request.forceRefresh || false + }; + const serverTelemetryManager = this.initializeServerTelemetryManager(ApiId.acquireTokenSilent, validRequest.correlationId, validRequest.forceRefresh); + try { + const discoveredAuthority = await this.createAuthority(validRequest.authority, validRequest.correlationId, void 0, request.azureCloudOptions); + const clientConfiguration = await this.buildOauthClientConfiguration(discoveredAuthority, validRequest.correlationId, validRequest.redirectUri || "", serverTelemetryManager); + const silentFlowClient = new SilentFlowClient(clientConfiguration); + this.logger.verbose("Silent flow client created", validRequest.correlationId); + try { + await this.tokenCache.overwriteCache(); + return await this.acquireCachedTokenSilent(validRequest, silentFlowClient, clientConfiguration); + } catch (error2) { + if (error2 instanceof ClientAuthError && error2.errorCode === ClientAuthErrorCodes_exports.tokenRefreshRequired) { + const refreshTokenClient = new RefreshTokenClient(clientConfiguration); + return refreshTokenClient.acquireTokenByRefreshToken(validRequest, ApiId.acquireTokenSilent); + } + throw error2; + } + } catch (error2) { + if (error2 instanceof AuthError) { + error2.setCorrelationId(validRequest.correlationId); + } + serverTelemetryManager.cacheFailedRequest(error2); + throw error2; + } + } + async acquireCachedTokenSilent(validRequest, silentFlowClient, clientConfiguration) { + const [authResponse, cacheOutcome] = await silentFlowClient.acquireCachedToken({ + ...validRequest, + scopes: validRequest.scopes?.length ? validRequest.scopes : [...OIDC_DEFAULT_SCOPES] + }); + if (cacheOutcome === CacheOutcome.PROACTIVELY_REFRESHED) { + this.logger.info("ClientApplication:acquireCachedTokenSilent - Cached access token's refreshOn property has been exceeded'. It's not expired, but must be refreshed."); + const refreshTokenClient = new RefreshTokenClient(clientConfiguration); + try { + await refreshTokenClient.acquireTokenByRefreshToken(validRequest, ApiId.acquireTokenSilent); + } catch { + } + } + return authResponse; + } + /** + * Acquires tokens with password grant by exchanging client applications username and password for credentials + * + * The latest OAuth 2.0 Security Best Current Practice disallows the password grant entirely. + * More details on this recommendation at https://tools.ietf.org/html/draft-ietf-oauth-security-topics-13#section-3.4 + * Microsoft's documentation and recommendations are at: + * https://docs.microsoft.com/en-us/azure/active-directory/develop/msal-authentication-flows#usernamepassword + * + * @param request - UsenamePasswordRequest + * @deprecated - Use a more secure flow instead + */ + async acquireTokenByUsernamePassword(request) { + this.logger.info("acquireTokenByUsernamePassword called", request.correlationId); + const validRequest = { + ...request, + ...await this.initializeBaseRequest(request) + }; + const serverTelemetryManager = this.initializeServerTelemetryManager(ApiId.acquireTokenByUsernamePassword, validRequest.correlationId); + try { + const discoveredAuthority = await this.createAuthority(validRequest.authority, validRequest.correlationId, void 0, request.azureCloudOptions); + const usernamePasswordClientConfig = await this.buildOauthClientConfiguration(discoveredAuthority, validRequest.correlationId, "", serverTelemetryManager); + const usernamePasswordClient = new UsernamePasswordClient(usernamePasswordClientConfig); + this.logger.verbose("Username password client created", validRequest.correlationId); + return await usernamePasswordClient.acquireToken(validRequest); + } catch (e) { + if (e instanceof AuthError) { + e.setCorrelationId(validRequest.correlationId); + } + serverTelemetryManager.cacheFailedRequest(e); + throw e; + } + } + /** + * Gets the token cache for the application. + */ + getTokenCache() { + this.logger.info("getTokenCache called"); + return this.tokenCache; + } + /** + * Validates OIDC state by comparing the user cached state with the state received from the server. + * + * This API is provided for scenarios where you would use OAuth2.0 state parameter to mitigate against + * CSRF attacks. + * For more information about state, visit https://datatracker.ietf.org/doc/html/rfc6819#section-3.6. + * @param state - Unique GUID generated by the user that is cached by the user and sent to the server during the first leg of the flow + * @param cachedState - This string is sent back by the server with the authorization code + */ + validateState(state3, cachedState) { + if (!state3) { + throw NodeAuthError.createStateNotFoundError(); + } + if (state3 !== cachedState) { + throw createClientAuthError(ClientAuthErrorCodes_exports.stateMismatch); + } + } + /** + * Returns the logger instance + */ + getLogger() { + return this.logger; + } + /** + * Replaces the default logger set in configurations with new Logger with new configurations + * @param logger - Logger instance + */ + setLogger(logger31) { + this.logger = logger31; + } + /** + * Builds the common configuration to be passed to the common component based on the platform configurarion + * @param authority - user passed authority in configuration + * @param serverTelemetryManager - initializes servertelemetry if passed + */ + async buildOauthClientConfiguration(discoveredAuthority, requestCorrelationId, redirectUri, serverTelemetryManager) { + this.logger.verbose("buildOauthClientConfiguration called", requestCorrelationId); + this.logger.info(`Building oauth client configuration with the following authority: ${discoveredAuthority.tokenEndpoint}.`, requestCorrelationId); + serverTelemetryManager?.updateRegionDiscoveryMetadata(discoveredAuthority.regionDiscoveryMetadata); + const clientConfiguration = { + authOptions: { + clientId: this.config.auth.clientId, + authority: discoveredAuthority, + clientCapabilities: this.config.auth.clientCapabilities, + redirectUri + }, + loggerOptions: { + logLevel: this.config.system.loggerOptions.logLevel, + loggerCallback: this.config.system.loggerOptions.loggerCallback, + piiLoggingEnabled: this.config.system.loggerOptions.piiLoggingEnabled, + correlationId: requestCorrelationId + }, + cacheOptions: { + claimsBasedCachingEnabled: this.config.cache.claimsBasedCachingEnabled + }, + cryptoInterface: this.cryptoProvider, + networkInterface: this.config.system.networkClient, + storageInterface: this.storage, + serverTelemetryManager, + clientCredentials: { + clientSecret: this.clientSecret, + clientAssertion: await this.getClientAssertion(discoveredAuthority) + }, + libraryInfo: { + sku: Constants2.MSAL_SKU, + version: version3, + cpu: process.arch || Constants.EMPTY_STRING, + os: process.platform || Constants.EMPTY_STRING + }, + telemetry: this.config.telemetry, + persistencePlugin: this.config.cache.cachePlugin, + serializableCache: this.tokenCache + }; + return clientConfiguration; + } + async getClientAssertion(authority) { + if (this.developerProvidedClientAssertion) { + this.clientAssertion = ClientAssertion.fromAssertion(await getClientAssertion(this.developerProvidedClientAssertion, this.config.auth.clientId, authority.tokenEndpoint)); + } + return this.clientAssertion && { + assertion: this.clientAssertion.getJwt(this.cryptoProvider, this.config.auth.clientId, authority.tokenEndpoint), + assertionType: Constants2.JWT_BEARER_ASSERTION_TYPE + }; + } + /** + * Generates a request with the default scopes & generates a correlationId. + * @param authRequest - BaseAuthRequest for initialization + */ + async initializeBaseRequest(authRequest) { + this.logger.verbose("initializeRequestScopes called", authRequest.correlationId); + if (authRequest.authenticationScheme && authRequest.authenticationScheme === AuthenticationScheme.POP) { + this.logger.verbose("Authentication Scheme 'pop' is not supported yet, setting Authentication Scheme to 'Bearer' for request", authRequest.correlationId); + } + authRequest.authenticationScheme = AuthenticationScheme.BEARER; + if (this.config.cache.claimsBasedCachingEnabled && authRequest.claims && // Checks for empty stringified object "{}" which doesn't qualify as requested claims + !StringUtils.isEmptyObj(authRequest.claims)) { + authRequest.requestedClaimsHash = await this.cryptoProvider.hashString(authRequest.claims); + } + return { + ...authRequest, + scopes: [ + ...authRequest && authRequest.scopes || [], + ...OIDC_DEFAULT_SCOPES + ], + correlationId: authRequest && authRequest.correlationId || this.cryptoProvider.createNewGuid(), + authority: authRequest.authority || this.config.auth.authority + }; + } + /** + * Initializes the server telemetry payload + * @param apiId - Id for a specific request + * @param correlationId - GUID + * @param forceRefresh - boolean to indicate network call + */ + initializeServerTelemetryManager(apiId, correlationId, forceRefresh) { + const telemetryPayload = { + clientId: this.config.auth.clientId, + correlationId, + apiId, + forceRefresh: forceRefresh || false + }; + return new ServerTelemetryManager(telemetryPayload, this.storage); + } + /** + * Create authority instance. If authority not passed in request, default to authority set on the application + * object. If no authority set in application object, then default to common authority. + * @param authorityString - authority from user configuration + */ + async createAuthority(authorityString, requestCorrelationId, azureRegionConfiguration, azureCloudOptions) { + this.logger.verbose("createAuthority called", requestCorrelationId); + const authorityUrl = Authority.generateAuthority(authorityString, azureCloudOptions || this.config.auth.azureCloudOptions); + const authorityOptions = { + protocolMode: this.config.auth.protocolMode, + knownAuthorities: this.config.auth.knownAuthorities, + cloudDiscoveryMetadata: this.config.auth.cloudDiscoveryMetadata, + authorityMetadata: this.config.auth.authorityMetadata, + azureRegionConfiguration, + skipAuthorityMetadataCache: this.config.auth.skipAuthorityMetadataCache + }; + return AuthorityFactory_exports.createDiscoveredInstance(authorityUrl, this.config.system.networkClient, this.storage, authorityOptions, this.logger, requestCorrelationId); + } + /** + * Clear the cache + */ + clearCache() { + this.storage.clear(); + } +}; + +// node_modules/@azure/msal-node/dist/network/LoopbackClient.mjs +var import_http2 = __toESM(require("http"), 1); +var LoopbackClient = class { + /** + * Spins up a loopback server which returns the server response when the localhost redirectUri is hit + * @param successTemplate + * @param errorTemplate + * @returns + */ + async listenForAuthCode(successTemplate, errorTemplate) { + if (this.server) { + throw NodeAuthError.createLoopbackServerAlreadyExistsError(); + } + return new Promise((resolve, reject) => { + this.server = import_http2.default.createServer((req, res) => { + const url2 = req.url; + if (!url2) { + res.end(errorTemplate || "Error occurred loading redirectUrl"); + reject(NodeAuthError.createUnableToLoadRedirectUrlError()); + return; + } else if (url2 === Constants.FORWARD_SLASH) { + res.end(successTemplate || "Auth code was successfully acquired. You can close this window now."); + return; + } + const redirectUri = this.getRedirectUri(); + const parsedUrl = new URL(url2, redirectUri); + const authCodeResponse = UrlUtils_exports.getDeserializedResponse(parsedUrl.search) || {}; + if (authCodeResponse.code) { + res.writeHead(HttpStatus.REDIRECT, { + location: redirectUri + }); + res.end(); + } + if (authCodeResponse.error) { + res.end(errorTemplate || `Error occurred: ${authCodeResponse.error}`); + } + resolve(authCodeResponse); + }); + this.server.listen(0, "127.0.0.1"); + }); + } + /** + * Get the port that the loopback server is running on + * @returns + */ + getRedirectUri() { + if (!this.server || !this.server.listening) { + throw NodeAuthError.createNoLoopbackServerExistsError(); + } + const address = this.server.address(); + if (!address || typeof address === "string" || !address.port) { + this.closeServer(); + throw NodeAuthError.createInvalidLoopbackAddressTypeError(); + } + const port = address && address.port; + return `${Constants2.HTTP_PROTOCOL}${Constants2.LOCALHOST}:${port}`; + } + /** + * Close the loopback server + */ + closeServer() { + if (this.server) { + this.server.close(); + if (typeof this.server.closeAllConnections === "function") { + this.server.closeAllConnections(); + } + this.server.unref(); + this.server = void 0; + } + } +}; + +// node_modules/@azure/msal-node/dist/client/DeviceCodeClient.mjs +var DeviceCodeClient = class extends BaseClient { + constructor(configuration) { + super(configuration); + } + /** + * Gets device code from device code endpoint, calls back to with device code response, and + * polls token endpoint to exchange device code for tokens + * @param request - developer provided CommonDeviceCodeRequest + */ + async acquireToken(request) { + const deviceCodeResponse = await this.getDeviceCode(request); + request.deviceCodeCallback(deviceCodeResponse); + const reqTimestamp = TimeUtils_exports.nowSeconds(); + const response = await this.acquireTokenWithDeviceCode(request, deviceCodeResponse); + const responseHandler = new ResponseHandler(this.config.authOptions.clientId, this.cacheManager, this.cryptoUtils, this.logger, this.config.serializableCache, this.config.persistencePlugin); + responseHandler.validateTokenResponse(response); + return responseHandler.handleServerTokenResponse(response, this.authority, reqTimestamp, request, ApiId.acquireTokenByDeviceCode); + } + /** + * Creates device code request and executes http GET + * @param request - developer provided CommonDeviceCodeRequest + */ + async getDeviceCode(request) { + const queryParametersString = this.createExtraQueryParameters(request); + const endpoint = UrlString.appendQueryString(this.authority.deviceCodeEndpoint, queryParametersString); + const queryString = this.createQueryString(request); + const headers = this.createTokenRequestHeaders(); + const thumbprint = { + clientId: this.config.authOptions.clientId, + authority: request.authority, + scopes: request.scopes, + claims: request.claims, + authenticationScheme: request.authenticationScheme, + resourceRequestMethod: request.resourceRequestMethod, + resourceRequestUri: request.resourceRequestUri, + shrClaims: request.shrClaims, + sshKid: request.sshKid + }; + return this.executePostRequestToDeviceCodeEndpoint(endpoint, queryString, headers, thumbprint, request.correlationId); + } + /** + * Creates query string for the device code request + * @param request - developer provided CommonDeviceCodeRequest + */ + createExtraQueryParameters(request) { + const parameters = /* @__PURE__ */ new Map(); + if (request.extraQueryParameters) { + RequestParameterBuilder_exports.addExtraQueryParameters(parameters, request.extraQueryParameters); + } + return UrlUtils_exports.mapToQueryString(parameters); + } + /** + * Executes POST request to device code endpoint + * @param deviceCodeEndpoint - token endpoint + * @param queryString - string to be used in the body of the request + * @param headers - headers for the request + * @param thumbprint - unique request thumbprint + * @param correlationId - correlation id to be used in the request + */ + async executePostRequestToDeviceCodeEndpoint(deviceCodeEndpoint, queryString, headers, thumbprint, correlationId) { + const { body: { user_code: userCode, device_code: deviceCode, verification_uri: verificationUri, expires_in: expiresIn, interval, message } } = await this.sendPostRequest(thumbprint, deviceCodeEndpoint, { + body: queryString, + headers + }, correlationId); + return { + userCode, + deviceCode, + verificationUri, + expiresIn, + interval, + message + }; + } + /** + * Create device code endpoint query parameters and returns string + * @param request - developer provided CommonDeviceCodeRequest + */ + createQueryString(request) { + const parameters = /* @__PURE__ */ new Map(); + RequestParameterBuilder_exports.addScopes(parameters, request.scopes); + RequestParameterBuilder_exports.addClientId(parameters, this.config.authOptions.clientId); + if (request.extraQueryParameters) { + RequestParameterBuilder_exports.addExtraQueryParameters(parameters, request.extraQueryParameters); + } + if (request.claims || this.config.authOptions.clientCapabilities && this.config.authOptions.clientCapabilities.length > 0) { + RequestParameterBuilder_exports.addClaims(parameters, request.claims, this.config.authOptions.clientCapabilities); + } + return UrlUtils_exports.mapToQueryString(parameters); + } + /** + * Breaks the polling with specific conditions + * @param deviceCodeExpirationTime - expiration time for the device code request + * @param userSpecifiedTimeout - developer provided timeout, to be compared against deviceCodeExpirationTime + * @param userSpecifiedCancelFlag - boolean indicating the developer would like to cancel the request + */ + continuePolling(deviceCodeExpirationTime, userSpecifiedTimeout, userSpecifiedCancelFlag) { + if (userSpecifiedCancelFlag) { + this.logger.error("Token request cancelled by setting DeviceCodeRequest.cancel = true"); + throw createClientAuthError(ClientAuthErrorCodes_exports.deviceCodePollingCancelled); + } else if (userSpecifiedTimeout && userSpecifiedTimeout < deviceCodeExpirationTime && TimeUtils_exports.nowSeconds() > userSpecifiedTimeout) { + this.logger.error(`User defined timeout for device code polling reached. The timeout was set for ${userSpecifiedTimeout}`); + throw createClientAuthError(ClientAuthErrorCodes_exports.userTimeoutReached); + } else if (TimeUtils_exports.nowSeconds() > deviceCodeExpirationTime) { + if (userSpecifiedTimeout) { + this.logger.verbose(`User specified timeout ignored as the device code has expired before the timeout elapsed. The user specified timeout was set for ${userSpecifiedTimeout}`); + } + this.logger.error(`Device code expired. Expiration time of device code was ${deviceCodeExpirationTime}`); + throw createClientAuthError(ClientAuthErrorCodes_exports.deviceCodeExpired); + } + return true; + } + /** + * Creates token request with device code response and polls token endpoint at interval set by the device code response + * @param request - developer provided CommonDeviceCodeRequest + * @param deviceCodeResponse - DeviceCodeResponse returned by the security token service device code endpoint + */ + async acquireTokenWithDeviceCode(request, deviceCodeResponse) { + const queryParametersString = this.createTokenQueryParameters(request); + const endpoint = UrlString.appendQueryString(this.authority.tokenEndpoint, queryParametersString); + const requestBody = this.createTokenRequestBody(request, deviceCodeResponse); + const headers = this.createTokenRequestHeaders(); + const userSpecifiedTimeout = request.timeout ? TimeUtils_exports.nowSeconds() + request.timeout : void 0; + const deviceCodeExpirationTime = TimeUtils_exports.nowSeconds() + deviceCodeResponse.expiresIn; + const pollingIntervalMilli = deviceCodeResponse.interval * 1e3; + while (this.continuePolling(deviceCodeExpirationTime, userSpecifiedTimeout, request.cancel)) { + const thumbprint = { + clientId: this.config.authOptions.clientId, + authority: request.authority, + scopes: request.scopes, + claims: request.claims, + authenticationScheme: request.authenticationScheme, + resourceRequestMethod: request.resourceRequestMethod, + resourceRequestUri: request.resourceRequestUri, + shrClaims: request.shrClaims, + sshKid: request.sshKid + }; + const response = await this.executePostToTokenEndpoint(endpoint, requestBody, headers, thumbprint, request.correlationId); + if (response.body && response.body.error) { + if (response.body.error === Constants.AUTHORIZATION_PENDING) { + this.logger.info("Authorization pending. Continue polling."); + await TimeUtils_exports.delay(pollingIntervalMilli); + } else { + this.logger.info("Unexpected error in polling from the server"); + throw createAuthError(AuthErrorCodes_exports.postRequestFailed, response.body.error); + } + } else { + this.logger.verbose("Authorization completed successfully. Polling stopped."); + return response.body; + } + } + this.logger.error("Polling stopped for unknown reasons."); + throw createClientAuthError(ClientAuthErrorCodes_exports.deviceCodeUnknownError); + } + /** + * Creates query parameters and converts to string. + * @param request - developer provided CommonDeviceCodeRequest + * @param deviceCodeResponse - DeviceCodeResponse returned by the security token service device code endpoint + */ + createTokenRequestBody(request, deviceCodeResponse) { + const parameters = /* @__PURE__ */ new Map(); + RequestParameterBuilder_exports.addScopes(parameters, request.scopes); + RequestParameterBuilder_exports.addClientId(parameters, this.config.authOptions.clientId); + RequestParameterBuilder_exports.addGrantType(parameters, GrantType.DEVICE_CODE_GRANT); + RequestParameterBuilder_exports.addDeviceCode(parameters, deviceCodeResponse.deviceCode); + const correlationId = request.correlationId || this.config.cryptoInterface.createNewGuid(); + RequestParameterBuilder_exports.addCorrelationId(parameters, correlationId); + RequestParameterBuilder_exports.addClientInfo(parameters); + RequestParameterBuilder_exports.addLibraryInfo(parameters, this.config.libraryInfo); + RequestParameterBuilder_exports.addApplicationTelemetry(parameters, this.config.telemetry.application); + RequestParameterBuilder_exports.addThrottling(parameters); + if (this.serverTelemetryManager) { + RequestParameterBuilder_exports.addServerTelemetry(parameters, this.serverTelemetryManager); + } + if (!StringUtils.isEmptyObj(request.claims) || this.config.authOptions.clientCapabilities && this.config.authOptions.clientCapabilities.length > 0) { + RequestParameterBuilder_exports.addClaims(parameters, request.claims, this.config.authOptions.clientCapabilities); + } + return UrlUtils_exports.mapToQueryString(parameters); + } +}; + +// node_modules/@azure/msal-node/dist/client/PublicClientApplication.mjs +var PublicClientApplication = class extends ClientApplication { + /** + * Important attributes in the Configuration object for auth are: + * - clientID: the application ID of your application. You can obtain one by registering your application with our Application registration portal. + * - authority: the authority URL for your application. + * + * AAD authorities are of the form https://login.microsoftonline.com/\{Enter_the_Tenant_Info_Here\}. + * - If your application supports Accounts in one organizational directory, replace "Enter_the_Tenant_Info_Here" value with the Tenant Id or Tenant name (for example, contoso.microsoft.com). + * - If your application supports Accounts in any organizational directory, replace "Enter_the_Tenant_Info_Here" value with organizations. + * - If your application supports Accounts in any organizational directory and personal Microsoft accounts, replace "Enter_the_Tenant_Info_Here" value with common. + * - To restrict support to Personal Microsoft accounts only, replace "Enter_the_Tenant_Info_Here" value with consumers. + * + * Azure B2C authorities are of the form https://\{instance\}/\{tenant\}/\{policy\}. Each policy is considered + * its own authority. You will have to set the all of the knownAuthorities at the time of the client application + * construction. + * + * ADFS authorities are of the form https://\{instance\}/adfs. + */ + constructor(configuration) { + super(configuration); + if (this.config.broker.nativeBrokerPlugin) { + if (this.config.broker.nativeBrokerPlugin.isBrokerAvailable) { + this.nativeBrokerPlugin = this.config.broker.nativeBrokerPlugin; + this.nativeBrokerPlugin.setLogger(this.config.system.loggerOptions); + } else { + this.logger.warning("NativeBroker implementation was provided but the broker is unavailable."); + } + } + this.skus = ServerTelemetryManager.makeExtraSkuString({ + libraryName: Constants2.MSAL_SKU, + libraryVersion: version3 + }); + } + /** + * Acquires a token from the authority using OAuth2.0 device code flow. + * This flow is designed for devices that do not have access to a browser or have input constraints. + * The authorization server issues a DeviceCode object with a verification code, an end-user code, + * and the end-user verification URI. The DeviceCode object is provided through a callback, and the end-user should be + * instructed to use another device to navigate to the verification URI to input credentials. + * Since the client cannot receive incoming requests, it polls the authorization server repeatedly + * until the end-user completes input of credentials. + */ + async acquireTokenByDeviceCode(request) { + this.logger.info("acquireTokenByDeviceCode called", request.correlationId); + const validRequest = Object.assign(request, await this.initializeBaseRequest(request)); + const serverTelemetryManager = this.initializeServerTelemetryManager(ApiId.acquireTokenByDeviceCode, validRequest.correlationId); + try { + const discoveredAuthority = await this.createAuthority(validRequest.authority, validRequest.correlationId, void 0, request.azureCloudOptions); + const deviceCodeConfig = await this.buildOauthClientConfiguration(discoveredAuthority, validRequest.correlationId, "", serverTelemetryManager); + const deviceCodeClient = new DeviceCodeClient(deviceCodeConfig); + this.logger.verbose("Device code client created", validRequest.correlationId); + return await deviceCodeClient.acquireToken(validRequest); + } catch (e) { + if (e instanceof AuthError) { + e.setCorrelationId(validRequest.correlationId); + } + serverTelemetryManager.cacheFailedRequest(e); + throw e; + } + } + /** + * Acquires a token interactively via the browser by requesting an authorization code then exchanging it for a token. + */ + async acquireTokenInteractive(request) { + const correlationId = request.correlationId || this.cryptoProvider.createNewGuid(); + this.logger.trace("acquireTokenInteractive called", correlationId); + const { openBrowser, successTemplate, errorTemplate, windowHandle, loopbackClient: customLoopbackClient, ...remainingProperties } = request; + if (this.nativeBrokerPlugin) { + const brokerRequest = { + ...remainingProperties, + clientId: this.config.auth.clientId, + scopes: request.scopes || OIDC_DEFAULT_SCOPES, + redirectUri: request.redirectUri || "", + authority: request.authority || this.config.auth.authority, + correlationId, + extraParameters: { + ...remainingProperties.extraQueryParameters, + ...remainingProperties.tokenQueryParameters, + [AADServerParamKeys_exports.X_CLIENT_EXTRA_SKU]: this.skus + }, + accountId: remainingProperties.account?.nativeAccountId + }; + return this.nativeBrokerPlugin.acquireTokenInteractive(brokerRequest, windowHandle); + } + if (request.redirectUri) { + if (!this.config.broker.nativeBrokerPlugin) { + throw NodeAuthError.createRedirectUriNotSupportedError(); + } + request.redirectUri = ""; + } + const { verifier, challenge } = await this.cryptoProvider.generatePkceCodes(); + const loopbackClient = customLoopbackClient || new LoopbackClient(); + let authCodeResponse = {}; + let authCodeListenerError = null; + try { + const authCodeListener = loopbackClient.listenForAuthCode(successTemplate, errorTemplate).then((response) => { + authCodeResponse = response; + }).catch((e) => { + authCodeListenerError = e; + }); + const redirectUri = await this.waitForRedirectUri(loopbackClient); + const validRequest = { + ...remainingProperties, + correlationId, + scopes: request.scopes || OIDC_DEFAULT_SCOPES, + redirectUri, + responseMode: ResponseMode.QUERY, + codeChallenge: challenge, + codeChallengeMethod: CodeChallengeMethodValues.S256 + }; + const authCodeUrl = await this.getAuthCodeUrl(validRequest); + await openBrowser(authCodeUrl); + await authCodeListener; + if (authCodeListenerError) { + throw authCodeListenerError; + } + if (authCodeResponse.error) { + throw new ServerError(authCodeResponse.error, authCodeResponse.error_description, authCodeResponse.suberror); + } else if (!authCodeResponse.code) { + throw NodeAuthError.createNoAuthCodeInResponseError(); + } + const clientInfo = authCodeResponse.client_info; + const tokenRequest = { + code: authCodeResponse.code, + codeVerifier: verifier, + clientInfo: clientInfo || Constants.EMPTY_STRING, + ...validRequest + }; + return await this.acquireTokenByCode(tokenRequest); + } finally { + loopbackClient.closeServer(); + } + } + /** + * Returns a token retrieved either from the cache or by exchanging the refresh token for a fresh access token. If brokering is enabled the token request will be serviced by the broker. + * @param request - developer provided SilentFlowRequest + * @returns + */ + async acquireTokenSilent(request) { + const correlationId = request.correlationId || this.cryptoProvider.createNewGuid(); + this.logger.trace("acquireTokenSilent called", correlationId); + if (this.nativeBrokerPlugin) { + const brokerRequest = { + ...request, + clientId: this.config.auth.clientId, + scopes: request.scopes || OIDC_DEFAULT_SCOPES, + redirectUri: request.redirectUri || "", + authority: request.authority || this.config.auth.authority, + correlationId, + extraParameters: { + ...request.tokenQueryParameters, + [AADServerParamKeys_exports.X_CLIENT_EXTRA_SKU]: this.skus + }, + accountId: request.account.nativeAccountId, + forceRefresh: request.forceRefresh || false + }; + return this.nativeBrokerPlugin.acquireTokenSilent(brokerRequest); + } + if (request.redirectUri) { + if (!this.config.broker.nativeBrokerPlugin) { + throw NodeAuthError.createRedirectUriNotSupportedError(); + } + request.redirectUri = ""; + } + return super.acquireTokenSilent(request); + } + /** + * Removes cache artifacts associated with the given account + * @param request - developer provided SignOutRequest + * @returns + */ + async signOut(request) { + if (this.nativeBrokerPlugin && request.account.nativeAccountId) { + const signoutRequest = { + clientId: this.config.auth.clientId, + accountId: request.account.nativeAccountId, + correlationId: request.correlationId || this.cryptoProvider.createNewGuid() + }; + await this.nativeBrokerPlugin.signOut(signoutRequest); + } + await this.getTokenCache().removeAccount(request.account, request.correlationId); + } + /** + * Returns all cached accounts for this application. If brokering is enabled this request will be serviced by the broker. + * @returns + */ + async getAllAccounts() { + if (this.nativeBrokerPlugin) { + const correlationId = this.cryptoProvider.createNewGuid(); + return this.nativeBrokerPlugin.getAllAccounts(this.config.auth.clientId, correlationId); + } + return this.getTokenCache().getAllAccounts(); + } + /** + * Attempts to retrieve the redirectUri from the loopback server. If the loopback server does not start listening for requests within the timeout this will throw. + * @param loopbackClient - developer provided custom loopback server implementation + * @returns + */ + async waitForRedirectUri(loopbackClient) { + return new Promise((resolve, reject) => { + let ticks = 0; + const id = setInterval(() => { + if (LOOPBACK_SERVER_CONSTANTS.TIMEOUT_MS / LOOPBACK_SERVER_CONSTANTS.INTERVAL_MS < ticks) { + clearInterval(id); + reject(NodeAuthError.createLoopbackServerTimeoutError()); + return; + } + try { + const r = loopbackClient.getRedirectUri(); + clearInterval(id); + resolve(r); + return; + } catch (e) { + if (e instanceof AuthError && e.errorCode === NodeAuthErrorMessage.noLoopbackServerExists.code) { + ticks++; + return; + } + clearInterval(id); + reject(e); + return; + } + }, LOOPBACK_SERVER_CONSTANTS.INTERVAL_MS); + }); + } +}; + +// node_modules/@azure/msal-node/dist/utils/TimeUtils.mjs +function isIso8601(dateString) { + if (typeof dateString !== "string") { + return false; + } + const date4 = new Date(dateString); + return !isNaN(date4.getTime()) && date4.toISOString() === dateString; +} + +// node_modules/@azure/msal-node/dist/network/HttpClientWithRetries.mjs +var HttpClientWithRetries = class { + constructor(httpClientNoRetries, retryPolicy3, logger31) { + this.httpClientNoRetries = httpClientNoRetries; + this.retryPolicy = retryPolicy3; + this.logger = logger31; + } + async sendNetworkRequestAsyncHelper(httpMethod, url2, options) { + if (httpMethod === HttpMethod2.GET) { + return this.httpClientNoRetries.sendGetRequestAsync(url2, options); + } else { + return this.httpClientNoRetries.sendPostRequestAsync(url2, options); + } + } + async sendNetworkRequestAsync(httpMethod, url2, options) { + let response = await this.sendNetworkRequestAsyncHelper(httpMethod, url2, options); + if ("isNewRequest" in this.retryPolicy) { + this.retryPolicy.isNewRequest = true; + } + let currentRetry = 0; + while (await this.retryPolicy.pauseForRetry(response.status, currentRetry, this.logger, response.headers[HeaderNames.RETRY_AFTER])) { + response = await this.sendNetworkRequestAsyncHelper(httpMethod, url2, options); + currentRetry++; + } + return response; + } + async sendGetRequestAsync(url2, options) { + return this.sendNetworkRequestAsync(HttpMethod2.GET, url2, options); + } + async sendPostRequestAsync(url2, options) { + return this.sendNetworkRequestAsync(HttpMethod2.POST, url2, options); + } +}; + +// node_modules/@azure/msal-node/dist/client/ManagedIdentitySources/BaseManagedIdentitySource.mjs +var ManagedIdentityUserAssignedIdQueryParameterNames = { + MANAGED_IDENTITY_CLIENT_ID_2017: "clientid", + MANAGED_IDENTITY_CLIENT_ID: "client_id", + MANAGED_IDENTITY_OBJECT_ID: "object_id", + MANAGED_IDENTITY_RESOURCE_ID_IMDS: "msi_res_id", + MANAGED_IDENTITY_RESOURCE_ID_NON_IMDS: "mi_res_id" +}; +var BaseManagedIdentitySource = class { + /** + * Creates an instance of BaseManagedIdentitySource. + * + * @param logger - Logger instance for diagnostic information + * @param nodeStorage - Storage interface for caching tokens + * @param networkClient - Network client for making HTTP requests + * @param cryptoProvider - Cryptographic provider for token operations + * @param disableInternalRetries - Whether to disable automatic retry logic + */ + constructor(logger31, nodeStorage, networkClient, cryptoProvider, disableInternalRetries) { + this.logger = logger31; + this.nodeStorage = nodeStorage; + this.networkClient = networkClient; + this.cryptoProvider = cryptoProvider; + this.disableInternalRetries = disableInternalRetries; + } + /** + * Processes the network response and converts it to a standardized server token response. + * This async version allows for source-specific response processing logic while maintaining + * backward compatibility with the synchronous version. + * + * @param response - The network response containing the managed identity token + * @param _networkClient - Network client used for the request (unused in base implementation) + * @param _networkRequest - The original network request parameters (unused in base implementation) + * @param _networkRequestOptions - The network request options (unused in base implementation) + * + * @returns Promise resolving to a standardized server authorization token response + */ + async getServerTokenResponseAsync(response, _networkClient, _networkRequest, _networkRequestOptions) { + return this.getServerTokenResponse(response); + } + /** + * Converts a managed identity token response to a standardized server authorization token response. + * Handles time format conversion, expiration calculation, and error mapping to ensure + * compatibility with the MSAL response handling pipeline. + * + * @param response - The network response containing the managed identity token + * + * @returns Standardized server authorization token response with normalized fields + */ + getServerTokenResponse(response) { + let refreshIn, expiresIn; + if (response.body.expires_on) { + if (isIso8601(response.body.expires_on)) { + response.body.expires_on = new Date(response.body.expires_on).getTime() / 1e3; + } + expiresIn = response.body.expires_on - TimeUtils_exports.nowSeconds(); + if (expiresIn > 2 * 3600) { + refreshIn = expiresIn / 2; + } + } + const serverTokenResponse = { + status: response.status, + // success + access_token: response.body.access_token, + expires_in: expiresIn, + scope: response.body.resource, + token_type: response.body.token_type, + refresh_in: refreshIn, + // error + correlation_id: response.body.correlation_id || response.body.correlationId, + error: typeof response.body.error === "string" ? response.body.error : response.body.error?.code, + error_description: response.body.message || (typeof response.body.error === "string" ? response.body.error_description : response.body.error?.message), + error_codes: response.body.error_codes, + timestamp: response.body.timestamp, + trace_id: response.body.trace_id + }; + return serverTokenResponse; + } + /** + * Acquires an access token using the managed identity endpoint for the specified resource. + * This is the primary method for token acquisition, handling the complete flow from + * request creation through response processing and token caching. + * + * @param managedIdentityRequest - The managed identity request containing resource and optional parameters + * @param managedIdentityId - The managed identity configuration (system or user-assigned) + * @param fakeAuthority - Authority instance used for token caching (managed identity uses a placeholder authority) + * @param refreshAccessToken - Whether this is a token refresh operation + * + * @returns Promise resolving to an authentication result containing the access token and metadata + * + * @throws {AuthError} When network requests fail or token validation fails + * @throws {ClientAuthError} When network errors occur during the request + */ + async acquireTokenWithManagedIdentity(managedIdentityRequest, managedIdentityId, fakeAuthority, refreshAccessToken2) { + const networkRequest = this.createRequest(managedIdentityRequest.resource, managedIdentityId); + if (managedIdentityRequest.revokedTokenSha256Hash) { + this.logger.info(`[Managed Identity] The following claims are present in the request: ${managedIdentityRequest.claims}`); + networkRequest.queryParameters[ManagedIdentityQueryParameters.SHA256_TOKEN_TO_REFRESH] = managedIdentityRequest.revokedTokenSha256Hash; + } + if (managedIdentityRequest.clientCapabilities?.length) { + const clientCapabilities = managedIdentityRequest.clientCapabilities.toString(); + this.logger.info(`[Managed Identity] The following client capabilities are present in the request: ${clientCapabilities}`); + networkRequest.queryParameters[ManagedIdentityQueryParameters.XMS_CC] = clientCapabilities; + } + const headers = networkRequest.headers; + headers[HeaderNames.CONTENT_TYPE] = Constants.URL_FORM_CONTENT_TYPE; + const networkRequestOptions = { headers }; + if (Object.keys(networkRequest.bodyParameters).length) { + networkRequestOptions.body = networkRequest.computeParametersBodyString(); + } + const networkClientHelper = this.disableInternalRetries ? this.networkClient : new HttpClientWithRetries(this.networkClient, networkRequest.retryPolicy, this.logger); + const reqTimestamp = TimeUtils_exports.nowSeconds(); + let response; + try { + if (networkRequest.httpMethod === HttpMethod2.POST) { + response = await networkClientHelper.sendPostRequestAsync(networkRequest.computeUri(), networkRequestOptions); + } else { + response = await networkClientHelper.sendGetRequestAsync(networkRequest.computeUri(), networkRequestOptions); + } + } catch (error2) { + if (error2 instanceof AuthError) { + throw error2; + } else { + throw createClientAuthError(ClientAuthErrorCodes_exports.networkError); + } + } + const responseHandler = new ResponseHandler(managedIdentityId.id, this.nodeStorage, this.cryptoProvider, this.logger, null, null); + const serverTokenResponse = await this.getServerTokenResponseAsync(response, networkClientHelper, networkRequest, networkRequestOptions); + responseHandler.validateTokenResponse(serverTokenResponse, refreshAccessToken2); + return responseHandler.handleServerTokenResponse(serverTokenResponse, fakeAuthority, reqTimestamp, managedIdentityRequest, ApiId.acquireTokenWithManagedIdentity); + } + /** + * Determines the appropriate query parameter name for user-assigned managed identity + * based on the identity type, API version, and endpoint characteristics. + * Different Azure services and API versions use different parameter names for the same identity types. + * + * @param managedIdentityIdType - The type of user-assigned managed identity (client ID, object ID, or resource ID) + * @param isImds - Whether the request is being made to the IMDS (Instance Metadata Service) endpoint + * @param usesApi2017 - Whether the endpoint uses the 2017-09-01 API version (affects client ID parameter name) + * + * @returns The correct query parameter name for the specified identity type and endpoint + * + * @throws {ManagedIdentityError} When an invalid managed identity ID type is provided + */ + getManagedIdentityUserAssignedIdQueryParameterKey(managedIdentityIdType, isImds, usesApi2017) { + switch (managedIdentityIdType) { + case ManagedIdentityIdType.USER_ASSIGNED_CLIENT_ID: + this.logger.info(`[Managed Identity] [API version ${usesApi2017 ? "2017+" : "2019+"}] Adding user assigned client id to the request.`); + return usesApi2017 ? ManagedIdentityUserAssignedIdQueryParameterNames.MANAGED_IDENTITY_CLIENT_ID_2017 : ManagedIdentityUserAssignedIdQueryParameterNames.MANAGED_IDENTITY_CLIENT_ID; + case ManagedIdentityIdType.USER_ASSIGNED_RESOURCE_ID: + this.logger.info("[Managed Identity] Adding user assigned resource id to the request."); + return isImds ? ManagedIdentityUserAssignedIdQueryParameterNames.MANAGED_IDENTITY_RESOURCE_ID_IMDS : ManagedIdentityUserAssignedIdQueryParameterNames.MANAGED_IDENTITY_RESOURCE_ID_NON_IMDS; + case ManagedIdentityIdType.USER_ASSIGNED_OBJECT_ID: + this.logger.info("[Managed Identity] Adding user assigned object id to the request."); + return ManagedIdentityUserAssignedIdQueryParameterNames.MANAGED_IDENTITY_OBJECT_ID; + default: + throw createManagedIdentityError(invalidManagedIdentityIdType); + } + } +}; +BaseManagedIdentitySource.getValidatedEnvVariableUrlString = (envVariableStringName, envVariable, sourceName, logger31) => { + try { + return new UrlString(envVariable).urlString; + } catch (error2) { + logger31.info(`[Managed Identity] ${sourceName} managed identity is unavailable because the '${envVariableStringName}' environment variable is malformed.`); + throw createManagedIdentityError(MsiEnvironmentVariableUrlMalformedErrorCodes[envVariableStringName]); + } +}; + +// node_modules/@azure/msal-node/dist/retry/DefaultManagedIdentityRetryPolicy.mjs +var DEFAULT_MANAGED_IDENTITY_HTTP_STATUS_CODES_TO_RETRY_ON = [ + HttpStatus.NOT_FOUND, + HttpStatus.REQUEST_TIMEOUT, + HttpStatus.TOO_MANY_REQUESTS, + HttpStatus.SERVER_ERROR, + HttpStatus.SERVICE_UNAVAILABLE, + HttpStatus.GATEWAY_TIMEOUT +]; + +// node_modules/@azure/msal-node/dist/client/ManagedIdentitySources/AzureArc.mjs +var SUPPORTED_AZURE_ARC_PLATFORMS = { + win32: `${process.env["ProgramData"]}\\AzureConnectedMachineAgent\\Tokens\\`, + linux: "/var/opt/azcmagent/tokens/" +}; +var AZURE_ARC_FILE_DETECTION = { + win32: `${process.env["ProgramFiles"]}\\AzureConnectedMachineAgent\\himds.exe`, + linux: "/opt/azcmagent/bin/himds" +}; + +// node_modules/@azure/msal-node/dist/retry/ImdsRetryPolicy.mjs +var HTTP_STATUS_400_CODES_FOR_EXPONENTIAL_STRATEGY = [ + HttpStatus.NOT_FOUND, + HttpStatus.REQUEST_TIMEOUT, + HttpStatus.GONE, + HttpStatus.TOO_MANY_REQUESTS +]; +var HTTP_STATUS_GONE_RETRY_AFTER_MS = 10 * 1e3; + +// node_modules/@azure/msal-node/dist/client/ManagedIdentitySources/Imds.mjs +var IMDS_TOKEN_PATH = "/metadata/identity/oauth2/token"; +var DEFAULT_IMDS_ENDPOINT = `http://169.254.169.254${IMDS_TOKEN_PATH}`; + +// node_modules/@azure/msal-node/dist/client/ManagedIdentitySources/MachineLearning.mjs +var MANAGED_IDENTITY_MACHINE_LEARNING_UNSUPPORTED_ID_TYPE_ERROR = `Only client id is supported for user-assigned managed identity in ${ManagedIdentitySourceNames.MACHINE_LEARNING}.`; + +// node_modules/@azure/msal-node/dist/client/ManagedIdentityApplication.mjs +var SOURCES_THAT_SUPPORT_TOKEN_REVOCATION = [ManagedIdentitySourceNames.SERVICE_FABRIC]; + +// node_modules/@softeria/ms-365-mcp-server/dist/auth.js +var import_fs4 = __toESM(require("fs"), 1); +var import_url3 = require("url"); +var import_path4 = __toESM(require("path"), 1); + +// node_modules/@softeria/ms-365-mcp-server/dist/cloud-config.js +var CLOUD_ENDPOINTS = { + global: { + authority: "https://login.microsoftonline.com", + graphApi: "https://graph.microsoft.com", + portal: "https://portal.azure.com" + }, + china: { + authority: "https://login.chinacloudapi.cn", + graphApi: "https://microsoftgraph.chinacloudapi.cn", + portal: "https://portal.azure.cn" + } +}; +var DEFAULT_CLIENT_IDS = { + global: "084a3e9f-a9f4-43f7-89f9-d229cf97853e", + china: "f3e61a6e-bc26-4281-8588-2c7359a02141" +}; +function getDefaultClientId(cloudType = "global") { + return DEFAULT_CLIENT_IDS[cloudType]; +} +function getCloudEndpoints(cloudType = "global") { + const endpoints3 = CLOUD_ENDPOINTS[cloudType]; + if (!endpoints3) { + throw new Error( + `Unknown cloud type: ${cloudType}. Valid values: ${Object.keys(CLOUD_ENDPOINTS).join(", ")}` + ); + } + return endpoints3; +} +function isValidCloudType(value) { + return value in CLOUD_ENDPOINTS; +} +function parseCloudType(value) { + if (!value) return "global"; + const normalized = value.toLowerCase().trim(); + if (!isValidCloudType(normalized)) { + throw new Error( + `Invalid cloud type: ${value}. Valid values: ${Object.keys(CLOUD_ENDPOINTS).join(", ")}` + ); + } + return normalized; +} + +// node_modules/@softeria/ms-365-mcp-server/dist/secrets.js +var EnvironmentSecretsProvider = class { + async getSecrets() { + const cloudType = parseCloudType(process.env.MS365_MCP_CLOUD_TYPE); + return { + clientId: process.env.MS365_MCP_CLIENT_ID || getDefaultClientId(cloudType), + tenantId: process.env.MS365_MCP_TENANT_ID || "common", + clientSecret: process.env.MS365_MCP_CLIENT_SECRET, + cloudType + }; + } +}; +var KeyVaultSecretsProvider = class { + constructor(vaultUrl) { + this.vaultUrl = vaultUrl; + } + async getSecrets() { + const { DefaultAzureCredential: DefaultAzureCredential2 } = await Promise.resolve().then(() => (init_esm8(), esm_exports)); + const { SecretClient: SecretClient2 } = await Promise.resolve().then(() => (init_esm13(), esm_exports2)); + const credential = new DefaultAzureCredential2(); + const client = new SecretClient2(this.vaultUrl, credential); + logger_default.info(`Fetching secrets from Key Vault: ${this.vaultUrl}`); + const [clientIdSecret, tenantIdSecret, clientSecretResult, cloudTypeResult] = await Promise.all( + [ + client.getSecret("ms365-mcp-client-id"), + client.getSecret("ms365-mcp-tenant-id").catch(() => null), + client.getSecret("ms365-mcp-client-secret").catch(() => null), + client.getSecret("ms365-mcp-cloud-type").catch(() => null) + ] + ); + if (!clientIdSecret.value) { + throw new Error("Required secret ms365-mcp-client-id not found in Key Vault"); + } + logger_default.info("Successfully retrieved secrets from Key Vault"); + return { + clientId: clientIdSecret.value, + tenantId: tenantIdSecret?.value || "common", + clientSecret: clientSecretResult?.value, + cloudType: parseCloudType(cloudTypeResult?.value) + }; + } +}; +function createSecretsProvider() { + const vaultUrl = process.env.MS365_MCP_KEYVAULT_URL; + if (vaultUrl) { + logger_default.info("Key Vault URL configured, using Azure Key Vault for secrets"); + return new KeyVaultSecretsProvider(vaultUrl); + } + logger_default.info("Using environment variables for secrets"); + return new EnvironmentSecretsProvider(); +} +var cachedSecrets = null; +async function getSecrets2() { + if (cachedSecrets) { + return cachedSecrets; + } + const provider = createSecretsProvider(); + cachedSecrets = await provider.getSecrets(); + return cachedSecrets; +} + +// node_modules/@softeria/ms-365-mcp-server/dist/auth.js +var keytar = null; +async function getKeytar() { + if (keytar === void 0) { + return null; + } + if (keytar === null) { + try { + keytar = await import("keytar"); + return keytar; + } catch (error2) { + logger_default.info("keytar not available, using file-based credential storage"); + keytar = void 0; + return null; + } + } + return keytar; +} +var __filename = (0, import_url3.fileURLToPath)(__OPENSWARM_IMPORT_META_URL__); +var __dirname5 = import_path4.default.dirname(__filename); +var endpointsData = JSON.parse( + (0, import_fs4.readFileSync)(import_path4.default.join(__dirname5, "endpoints.json"), "utf8") +); +var endpoints = { + default: endpointsData +}; +var SERVICE_NAME = "ms-365-mcp-server"; +var TOKEN_CACHE_ACCOUNT = "msal-token-cache"; +var SELECTED_ACCOUNT_KEY = "selected-account"; +var FALLBACK_DIR = import_path4.default.dirname((0, import_url3.fileURLToPath)(__OPENSWARM_IMPORT_META_URL__)); +var DEFAULT_TOKEN_CACHE_PATH = import_path4.default.join(FALLBACK_DIR, "..", ".token-cache.json"); +var DEFAULT_SELECTED_ACCOUNT_PATH = import_path4.default.join(FALLBACK_DIR, "..", ".selected-account.json"); +function getTokenCachePath() { + const envPath = process.env.MS365_MCP_TOKEN_CACHE_PATH?.trim(); + return envPath || DEFAULT_TOKEN_CACHE_PATH; +} +function getSelectedAccountPath() { + const envPath = process.env.MS365_MCP_SELECTED_ACCOUNT_PATH?.trim(); + return envPath || DEFAULT_SELECTED_ACCOUNT_PATH; +} +function ensureParentDir(filePath) { + const dir = import_path4.default.dirname(filePath); + import_fs4.default.mkdirSync(dir, { recursive: true, mode: 448 }); +} +function wrapCache(data) { + return JSON.stringify({ _cacheEnvelope: true, data, savedAt: Date.now() }); +} +function unwrapCache(raw) { + try { + const parsed = JSON.parse(raw); + if (parsed._cacheEnvelope && typeof parsed.data === "string") { + return { data: parsed.data, savedAt: parsed.savedAt }; + } + } catch { + } + return { data: raw }; +} +function pickNewest(keytarRaw, fileRaw) { + if (!keytarRaw && !fileRaw) return void 0; + if (keytarRaw && !fileRaw) return unwrapCache(keytarRaw).data; + if (!keytarRaw && fileRaw) return unwrapCache(fileRaw).data; + const kt = unwrapCache(keytarRaw); + const file = unwrapCache(fileRaw); + if (kt.savedAt === void 0 && file.savedAt === void 0) return kt.data; + if (kt.savedAt !== void 0 && file.savedAt === void 0) return kt.data; + if (kt.savedAt === void 0 && file.savedAt !== void 0) return file.data; + return kt.savedAt >= file.savedAt ? kt.data : file.data; +} +function createMsalConfig(secrets) { + const cloudEndpoints = getCloudEndpoints(secrets.cloudType); + return { + auth: { + clientId: secrets.clientId || getDefaultClientId(secrets.cloudType), + authority: `${cloudEndpoints.authority}/${secrets.tenantId || "common"}` + } + }; +} +var SCOPE_HIERARCHY = { + "Mail.ReadWrite": ["Mail.Read"], + "Calendars.ReadWrite": ["Calendars.Read"], + "Files.ReadWrite": ["Files.Read"], + "Tasks.ReadWrite": ["Tasks.Read"], + "Contacts.ReadWrite": ["Contacts.Read"] +}; +function buildScopesFromEndpoints(includeWorkAccountScopes = false, enabledToolsPattern, readOnly = false) { + const scopesSet = /* @__PURE__ */ new Set(); + let enabledToolsRegex; + if (enabledToolsPattern) { + try { + enabledToolsRegex = new RegExp(enabledToolsPattern, "i"); + logger_default.info(`Building scopes with tool filter pattern: ${enabledToolsPattern}`); + } catch (error2) { + logger_default.error( + `Invalid tool filter regex pattern: ${enabledToolsPattern}. Building scopes without filter.` + ); + } + } + endpoints.default.forEach((endpoint) => { + if (readOnly && endpoint.method.toUpperCase() !== "GET") { + return; + } + if (enabledToolsRegex && !enabledToolsRegex.test(endpoint.toolName)) { + return; + } + if (!includeWorkAccountScopes && !endpoint.scopes && endpoint.workScopes) { + return; + } + if (endpoint.scopes && Array.isArray(endpoint.scopes)) { + endpoint.scopes.forEach((scope) => scopesSet.add(scope)); + } + if (includeWorkAccountScopes && endpoint.workScopes && Array.isArray(endpoint.workScopes)) { + endpoint.workScopes.forEach((scope) => scopesSet.add(scope)); + } + }); + Object.entries(SCOPE_HIERARCHY).forEach(([higherScope, lowerScopes]) => { + if (scopesSet.has(higherScope) && lowerScopes.every((scope) => scopesSet.has(scope))) { + lowerScopes.forEach((scope) => scopesSet.delete(scope)); + } + }); + const scopes = Array.from(scopesSet); + if (enabledToolsPattern) { + logger_default.info(`Built ${scopes.length} scopes for filtered tools: ${scopes.join(", ")}`); + } + return scopes; +} +var AuthManager = class _AuthManager { + constructor(config2, scopes = buildScopesFromEndpoints()) { + logger_default.info(`And scopes are ${scopes.join(", ")}`, scopes); + this.config = config2; + this.scopes = scopes; + this.msalApp = new PublicClientApplication(this.config); + this.accessToken = null; + this.tokenExpiry = null; + this.selectedAccountId = null; + this.useInteractiveAuth = false; + const oauthTokenFromEnv = process.env.MS365_MCP_OAUTH_TOKEN; + this.oauthToken = oauthTokenFromEnv ?? null; + this.isOAuthMode = oauthTokenFromEnv != null; + } + /** + * Creates an AuthManager instance with secrets loaded from the configured provider. + * Uses Key Vault if MS365_MCP_KEYVAULT_URL is set, otherwise environment variables. + */ + static async create(scopes = buildScopesFromEndpoints()) { + const secrets = await getSecrets2(); + const config2 = createMsalConfig(secrets); + return new _AuthManager(config2, scopes); + } + async loadTokenCache() { + try { + let keytarRaw; + try { + const kt = await getKeytar(); + if (kt) { + keytarRaw = await kt.getPassword(SERVICE_NAME, TOKEN_CACHE_ACCOUNT) ?? void 0; + } + } catch (keytarError) { + logger_default.warn(`Keychain access failed: ${keytarError.message}`); + } + let fileRaw; + const cachePath = getTokenCachePath(); + if ((0, import_fs4.existsSync)(cachePath)) { + fileRaw = (0, import_fs4.readFileSync)(cachePath, "utf8"); + } + const cacheData = pickNewest(keytarRaw, fileRaw); + if (cacheData) { + this.msalApp.getTokenCache().deserialize(cacheData); + } + await this.loadSelectedAccount(); + } catch (error2) { + logger_default.error(`Error loading token cache: ${error2.message}`); + } + } + async loadSelectedAccount() { + try { + let keytarRaw; + try { + const kt = await getKeytar(); + if (kt) { + keytarRaw = await kt.getPassword(SERVICE_NAME, SELECTED_ACCOUNT_KEY) ?? void 0; + } + } catch (keytarError) { + logger_default.warn( + `Keychain access failed for selected account: ${keytarError.message}` + ); + } + let fileRaw; + const accountPath = getSelectedAccountPath(); + if ((0, import_fs4.existsSync)(accountPath)) { + fileRaw = (0, import_fs4.readFileSync)(accountPath, "utf8"); + } + const selectedAccountData = pickNewest(keytarRaw, fileRaw); + if (selectedAccountData) { + const parsed = JSON.parse(selectedAccountData); + this.selectedAccountId = parsed.accountId; + logger_default.info(`Loaded selected account: ${this.selectedAccountId}`); + } + } catch (error2) { + logger_default.error(`Error loading selected account: ${error2.message}`); + } + } + async saveTokenCache() { + try { + const stamped = wrapCache(this.msalApp.getTokenCache().serialize()); + try { + const kt = await getKeytar(); + if (kt) { + await kt.setPassword(SERVICE_NAME, TOKEN_CACHE_ACCOUNT, stamped); + } else { + const cachePath = getTokenCachePath(); + ensureParentDir(cachePath); + import_fs4.default.writeFileSync(cachePath, stamped, { mode: 384 }); + } + } catch (keytarError) { + logger_default.warn( + `Keychain save failed, falling back to file storage: ${keytarError.message}` + ); + const cachePath = getTokenCachePath(); + ensureParentDir(cachePath); + import_fs4.default.writeFileSync(cachePath, stamped, { mode: 384 }); + } + } catch (error2) { + logger_default.error(`Error saving token cache: ${error2.message}`); + } + } + async saveSelectedAccount() { + try { + const stamped = wrapCache(JSON.stringify({ accountId: this.selectedAccountId })); + try { + const kt = await getKeytar(); + if (kt) { + await kt.setPassword(SERVICE_NAME, SELECTED_ACCOUNT_KEY, stamped); + } else { + const accountPath = getSelectedAccountPath(); + ensureParentDir(accountPath); + import_fs4.default.writeFileSync(accountPath, stamped, { mode: 384 }); + } + } catch (keytarError) { + logger_default.warn( + `Keychain save failed for selected account, falling back to file storage: ${keytarError.message}` + ); + const accountPath = getSelectedAccountPath(); + ensureParentDir(accountPath); + import_fs4.default.writeFileSync(accountPath, stamped, { mode: 384 }); + } + } catch (error2) { + logger_default.error(`Error saving selected account: ${error2.message}`); + } + } + async setOAuthToken(token) { + this.oauthToken = token; + this.isOAuthMode = true; + } + async getToken(forceRefresh = false) { + if (this.isOAuthMode && this.oauthToken) { + return this.oauthToken; + } + if (this.accessToken && this.tokenExpiry && this.tokenExpiry > Date.now() && !forceRefresh) { + return this.accessToken; + } + const currentAccount = await this.getCurrentAccount(); + if (currentAccount) { + const silentRequest = { + account: currentAccount, + scopes: this.scopes + }; + try { + const response = await this.msalApp.acquireTokenSilent(silentRequest); + this.accessToken = response.accessToken; + this.tokenExpiry = response.expiresOn ? new Date(response.expiresOn).getTime() : null; + await this.saveTokenCache(); + return this.accessToken; + } catch { + logger_default.error("Silent token acquisition failed"); + throw new Error("Silent token acquisition failed"); + } + } + throw new Error("No valid token found"); + } + async getCurrentAccount() { + const accounts = await this.msalApp.getTokenCache().getAllAccounts(); + if (accounts.length === 0) { + return null; + } + if (this.selectedAccountId) { + const selectedAccount = accounts.find( + (account) => account.homeAccountId === this.selectedAccountId + ); + if (selectedAccount) { + return selectedAccount; + } + logger_default.warn( + `Selected account ${this.selectedAccountId} not found, falling back to first account` + ); + } + return accounts[0]; + } + async acquireTokenByDeviceCode(hack) { + const deviceCodeRequest = { + scopes: this.scopes, + deviceCodeCallback: (response) => { + const text = ["\n", response.message, "\n"].join(""); + if (hack) { + hack(text + 'After login run the "verify login" command'); + } else { + console.log(text); + } + logger_default.info("Device code login initiated"); + } + }; + try { + logger_default.info("Requesting device code..."); + logger_default.info(`Requesting scopes: ${this.scopes.join(", ")}`); + const response = await this.msalApp.acquireTokenByDeviceCode(deviceCodeRequest); + logger_default.info(`Granted scopes: ${response?.scopes?.join(", ") || "none"}`); + logger_default.info("Device code login successful"); + this.accessToken = response?.accessToken || null; + this.tokenExpiry = response?.expiresOn ? new Date(response.expiresOn).getTime() : null; + if (!this.selectedAccountId && response?.account) { + this.selectedAccountId = response.account.homeAccountId; + await this.saveSelectedAccount(); + logger_default.info(`Auto-selected new account: ${response.account.username}`); + } + await this.saveTokenCache(); + return this.accessToken; + } catch (error2) { + logger_default.error(`Error in device code flow: ${error2.message}`); + throw error2; + } + } + setUseInteractiveAuth(value) { + this.useInteractiveAuth = value; + } + getUseInteractiveAuth() { + return this.useInteractiveAuth; + } + async acquireTokenInteractive(hack) { + const open3 = (await Promise.resolve().then(() => (init_open2(), open_exports2))).default; + const interactiveRequest = { + scopes: this.scopes, + openBrowser: async (url2) => { + const message = "Opening browser for Microsoft sign-in..."; + if (hack) { + hack(message); + } + logger_default.info(message); + await open3(url2); + }, + successTemplate: "

Authentication successful!

You can close this window and return to your application.

", + errorTemplate: "

Authentication failed

Something went wrong. Please try again.

" + }; + try { + logger_default.info("Requesting interactive browser login..."); + logger_default.info(`Requesting scopes: ${this.scopes.join(", ")}`); + const response = await this.msalApp.acquireTokenInteractive(interactiveRequest); + logger_default.info(`Granted scopes: ${response?.scopes?.join(", ") || "none"}`); + logger_default.info("Interactive browser login successful"); + this.accessToken = response?.accessToken || null; + this.tokenExpiry = response?.expiresOn ? new Date(response.expiresOn).getTime() : null; + if (!this.selectedAccountId && response?.account) { + this.selectedAccountId = response.account.homeAccountId; + await this.saveSelectedAccount(); + logger_default.info(`Auto-selected new account: ${response.account.username}`); + } + await this.saveTokenCache(); + return this.accessToken; + } catch (error2) { + logger_default.error(`Error in interactive browser flow: ${error2.message}`); + throw error2; + } + } + async testLogin() { + try { + logger_default.info("Testing login..."); + const token = await this.getToken(); + if (!token) { + logger_default.error("Login test failed - no token received"); + return { + success: false, + message: "Login failed - no token received" + }; + } + logger_default.info("Token retrieved successfully, testing Graph API access..."); + try { + const secrets = await getSecrets2(); + const cloudEndpoints = getCloudEndpoints(secrets.cloudType); + const response = await fetch(`${cloudEndpoints.graphApi}/v1.0/me`, { + headers: { + Authorization: `Bearer ${token}` + } + }); + if (response.ok) { + const userData = await response.json(); + logger_default.info("Graph API user data fetch successful"); + return { + success: true, + message: "Login successful", + userData: { + displayName: userData.displayName, + userPrincipalName: userData.userPrincipalName + } + }; + } else { + const errorText = await response.text(); + logger_default.error(`Graph API user data fetch failed: ${response.status} - ${errorText}`); + return { + success: false, + message: `Login successful but Graph API access failed: ${response.status}` + }; + } + } catch (graphError) { + logger_default.error(`Error fetching user data: ${graphError.message}`); + return { + success: false, + message: `Login successful but Graph API access failed: ${graphError.message}` + }; + } + } catch (error2) { + logger_default.error(`Login test failed: ${error2.message}`); + return { + success: false, + message: `Login failed: ${error2.message}` + }; + } + } + async logout() { + try { + const accounts = await this.msalApp.getTokenCache().getAllAccounts(); + for (const account of accounts) { + await this.msalApp.getTokenCache().removeAccount(account); + } + this.accessToken = null; + this.tokenExpiry = null; + this.selectedAccountId = null; + try { + const kt = await getKeytar(); + if (kt) { + await kt.deletePassword(SERVICE_NAME, TOKEN_CACHE_ACCOUNT); + await kt.deletePassword(SERVICE_NAME, SELECTED_ACCOUNT_KEY); + } + } catch (keytarError) { + logger_default.warn(`Keychain deletion failed: ${keytarError.message}`); + } + const cachePath = getTokenCachePath(); + if (import_fs4.default.existsSync(cachePath)) { + import_fs4.default.unlinkSync(cachePath); + } + const accountPath = getSelectedAccountPath(); + if (import_fs4.default.existsSync(accountPath)) { + import_fs4.default.unlinkSync(accountPath); + } + return true; + } catch (error2) { + logger_default.error(`Error during logout: ${error2.message}`); + throw error2; + } + } + // Multi-account support methods + async listAccounts() { + return await this.msalApp.getTokenCache().getAllAccounts(); + } + async selectAccount(identifier) { + const account = await this.resolveAccount(identifier); + this.selectedAccountId = account.homeAccountId; + await this.saveSelectedAccount(); + this.accessToken = null; + this.tokenExpiry = null; + logger_default.info(`Selected account: ${account.username} (${account.homeAccountId})`); + return true; + } + async removeAccount(identifier) { + const account = await this.resolveAccount(identifier); + try { + await this.msalApp.getTokenCache().removeAccount(account); + if (this.selectedAccountId === account.homeAccountId) { + this.selectedAccountId = null; + await this.saveSelectedAccount(); + this.accessToken = null; + this.tokenExpiry = null; + } + logger_default.info(`Removed account: ${account.username} (${account.homeAccountId})`); + return true; + } catch (error2) { + logger_default.error(`Failed to remove account ${identifier}: ${error2.message}`); + return false; + } + } + getSelectedAccountId() { + return this.selectedAccountId; + } + /** + * Returns true if auth is in OAuth/HTTP mode (token supplied via env or setOAuthToken). + * In this mode, account resolution should be skipped — the request context drives token selection. + */ + isOAuthModeEnabled() { + return this.isOAuthMode; + } + /** + * Resolves an account by identifier (email or homeAccountId). + * Resolution: username match (case-insensitive) → homeAccountId match → throw. + */ + async resolveAccount(identifier) { + const accounts = await this.msalApp.getTokenCache().getAllAccounts(); + if (accounts.length === 0) { + throw new Error("No accounts found. Please login first."); + } + const lowerIdentifier = identifier.toLowerCase(); + let account = accounts.find((a) => a.username?.toLowerCase() === lowerIdentifier) ?? null; + if (!account) { + account = accounts.find((a) => a.homeAccountId === identifier) ?? null; + } + if (!account) { + const availableAccounts = accounts.map((a) => a.username || a.name || "unknown").join(", "); + throw new Error( + `Account '${identifier}' not found. Available accounts: ${availableAccounts}` + ); + } + return account; + } + /** + * Returns true if the MSAL cache contains more than one account. + * Used to decide whether to inject the `account` parameter into tool schemas. + */ + async isMultiAccount() { + const accounts = await this.msalApp.getTokenCache().getAllAccounts(); + return accounts.length > 1; + } + /** + * Acquires a token for a specific account identified by username (email) or homeAccountId, + * WITHOUT changing the persisted selectedAccountId. + * + * Resolution order: + * 1. Exact match on username (case-insensitive) + * 2. Exact match on homeAccountId + * 3. If identifier is empty/undefined AND only 1 account exists → auto-select + * 4. If identifier is empty/undefined AND multiple accounts → use selectedAccountId or throw + * + * @returns The access token string. + */ + async getTokenForAccount(identifier) { + if (this.isOAuthMode && this.oauthToken) { + return this.oauthToken; + } + let targetAccount = null; + if (identifier) { + targetAccount = await this.resolveAccount(identifier); + } else { + const accounts = await this.msalApp.getTokenCache().getAllAccounts(); + if (accounts.length === 0) { + throw new Error("No accounts found. Please login first."); + } + if (accounts.length === 1) { + targetAccount = accounts[0]; + } else { + if (this.selectedAccountId) { + targetAccount = accounts.find((a) => a.homeAccountId === this.selectedAccountId) ?? null; + } + if (!targetAccount) { + const availableAccounts = accounts.map((a) => a.username || a.name || "unknown").join(", "); + throw new Error( + `Multiple accounts configured but no 'account' parameter provided and no default selected. Available accounts: ${availableAccounts}. Pass account="" in your tool call or use select-account to set a default.` + ); + } + } + } + const silentRequest = { + account: targetAccount, + scopes: this.scopes + }; + try { + const response = await this.msalApp.acquireTokenSilent(silentRequest); + await this.saveTokenCache(); + return response.accessToken; + } catch { + throw new Error( + `Failed to acquire token for account '${targetAccount.username || targetAccount.name || "unknown"}'. The token may have expired. Please re-login with: --login` + ); + } + } +}; +var auth_default = AuthManager; + +// node_modules/zod/v3/external.js +var external_exports = {}; +__export(external_exports, { + BRAND: () => BRAND, + DIRTY: () => DIRTY, + EMPTY_PATH: () => EMPTY_PATH, + INVALID: () => INVALID, + NEVER: () => NEVER, + OK: () => OK, + ParseStatus: () => ParseStatus, + Schema: () => ZodType, + ZodAny: () => ZodAny, + ZodArray: () => ZodArray, + ZodBigInt: () => ZodBigInt, + ZodBoolean: () => ZodBoolean, + ZodBranded: () => ZodBranded, + ZodCatch: () => ZodCatch, + ZodDate: () => ZodDate, + ZodDefault: () => ZodDefault, + ZodDiscriminatedUnion: () => ZodDiscriminatedUnion, + ZodEffects: () => ZodEffects, + ZodEnum: () => ZodEnum, + ZodError: () => ZodError, + ZodFirstPartyTypeKind: () => ZodFirstPartyTypeKind, + ZodFunction: () => ZodFunction, + ZodIntersection: () => ZodIntersection, + ZodIssueCode: () => ZodIssueCode, + ZodLazy: () => ZodLazy, + ZodLiteral: () => ZodLiteral, + ZodMap: () => ZodMap, + ZodNaN: () => ZodNaN, + ZodNativeEnum: () => ZodNativeEnum, + ZodNever: () => ZodNever, + ZodNull: () => ZodNull, + ZodNullable: () => ZodNullable, + ZodNumber: () => ZodNumber, + ZodObject: () => ZodObject, + ZodOptional: () => ZodOptional, + ZodParsedType: () => ZodParsedType, + ZodPipeline: () => ZodPipeline, + ZodPromise: () => ZodPromise, + ZodReadonly: () => ZodReadonly, + ZodRecord: () => ZodRecord, + ZodSchema: () => ZodType, + ZodSet: () => ZodSet, + ZodString: () => ZodString, + ZodSymbol: () => ZodSymbol, + ZodTransformer: () => ZodEffects, + ZodTuple: () => ZodTuple, + ZodType: () => ZodType, + ZodUndefined: () => ZodUndefined, + ZodUnion: () => ZodUnion, + ZodUnknown: () => ZodUnknown, + ZodVoid: () => ZodVoid, + addIssueToContext: () => addIssueToContext, + any: () => anyType, + array: () => arrayType, + bigint: () => bigIntType, + boolean: () => booleanType, + coerce: () => coerce, + custom: () => custom2, + date: () => dateType, + datetimeRegex: () => datetimeRegex, + defaultErrorMap: () => en_default, + discriminatedUnion: () => discriminatedUnionType, + effect: () => effectsType, + enum: () => enumType, + function: () => functionType, + getErrorMap: () => getErrorMap, + getParsedType: () => getParsedType, + instanceof: () => instanceOfType, + intersection: () => intersectionType, + isAborted: () => isAborted, + isAsync: () => isAsync, + isDirty: () => isDirty, + isValid: () => isValid, + late: () => late, + lazy: () => lazyType, + literal: () => literalType, + makeIssue: () => makeIssue, + map: () => mapType, + nan: () => nanType, + nativeEnum: () => nativeEnumType, + never: () => neverType, + null: () => nullType, + nullable: () => nullableType, + number: () => numberType, + object: () => objectType, + objectUtil: () => objectUtil, + oboolean: () => oboolean, + onumber: () => onumber, + optional: () => optionalType, + ostring: () => ostring, + pipeline: () => pipelineType, + preprocess: () => preprocessType, + promise: () => promiseType, + quotelessJson: () => quotelessJson, + record: () => recordType, + set: () => setType, + setErrorMap: () => setErrorMap, + strictObject: () => strictObjectType, + string: () => stringType, + symbol: () => symbolType, + transformer: () => effectsType, + tuple: () => tupleType, + undefined: () => undefinedType, + union: () => unionType, + unknown: () => unknownType, + util: () => util2, + void: () => voidType +}); + +// node_modules/zod/v3/helpers/util.js +var util2; +(function(util3) { + util3.assertEqual = (_) => { + }; + function assertIs2(_arg) { + } + util3.assertIs = assertIs2; + function assertNever2(_x) { + throw new Error(); + } + util3.assertNever = assertNever2; + util3.arrayToEnum = (items) => { + const obj = {}; + for (const item of items) { + obj[item] = item; + } + return obj; + }; + util3.getValidEnumValues = (obj) => { + const validKeys = util3.objectKeys(obj).filter((k) => typeof obj[obj[k]] !== "number"); + const filtered = {}; + for (const k of validKeys) { + filtered[k] = obj[k]; + } + return util3.objectValues(filtered); + }; + util3.objectValues = (obj) => { + return util3.objectKeys(obj).map(function(e) { + return obj[e]; + }); + }; + util3.objectKeys = typeof Object.keys === "function" ? (obj) => Object.keys(obj) : (object3) => { + const keys = []; + for (const key in object3) { + if (Object.prototype.hasOwnProperty.call(object3, key)) { + keys.push(key); + } + } + return keys; + }; + util3.find = (arr, checker) => { + for (const item of arr) { + if (checker(item)) + return item; + } + return void 0; + }; + util3.isInteger = typeof Number.isInteger === "function" ? (val) => Number.isInteger(val) : (val) => typeof val === "number" && Number.isFinite(val) && Math.floor(val) === val; + function joinValues2(array2, separator = " | ") { + return array2.map((val) => typeof val === "string" ? `'${val}'` : val).join(separator); + } + util3.joinValues = joinValues2; + util3.jsonStringifyReplacer = (_, value) => { + if (typeof value === "bigint") { + return value.toString(); + } + return value; + }; +})(util2 || (util2 = {})); +var objectUtil; +(function(objectUtil2) { + objectUtil2.mergeShapes = (first, second) => { + return { + ...first, + ...second + // second overwrites first + }; + }; +})(objectUtil || (objectUtil = {})); +var ZodParsedType = util2.arrayToEnum([ + "string", + "nan", + "number", + "integer", + "float", + "boolean", + "date", + "bigint", + "symbol", + "function", + "undefined", + "null", + "array", + "object", + "unknown", + "promise", + "void", + "never", + "map", + "set" +]); +var getParsedType = (data) => { + const t = typeof data; + switch (t) { + case "undefined": + return ZodParsedType.undefined; + case "string": + return ZodParsedType.string; + case "number": + return Number.isNaN(data) ? ZodParsedType.nan : ZodParsedType.number; + case "boolean": + return ZodParsedType.boolean; + case "function": + return ZodParsedType.function; + case "bigint": + return ZodParsedType.bigint; + case "symbol": + return ZodParsedType.symbol; + case "object": + if (Array.isArray(data)) { + return ZodParsedType.array; + } + if (data === null) { + return ZodParsedType.null; + } + if (data.then && typeof data.then === "function" && data.catch && typeof data.catch === "function") { + return ZodParsedType.promise; + } + if (typeof Map !== "undefined" && data instanceof Map) { + return ZodParsedType.map; + } + if (typeof Set !== "undefined" && data instanceof Set) { + return ZodParsedType.set; + } + if (typeof Date !== "undefined" && data instanceof Date) { + return ZodParsedType.date; + } + return ZodParsedType.object; + default: + return ZodParsedType.unknown; + } +}; + +// node_modules/zod/v3/ZodError.js +var ZodIssueCode = util2.arrayToEnum([ + "invalid_type", + "invalid_literal", + "custom", + "invalid_union", + "invalid_union_discriminator", + "invalid_enum_value", + "unrecognized_keys", + "invalid_arguments", + "invalid_return_type", + "invalid_date", + "invalid_string", + "too_small", + "too_big", + "invalid_intersection_types", + "not_multiple_of", + "not_finite" +]); +var quotelessJson = (obj) => { + const json = JSON.stringify(obj, null, 2); + return json.replace(/"([^"]+)":/g, "$1:"); +}; +var ZodError = class _ZodError extends Error { + get errors() { + return this.issues; + } + constructor(issues) { + super(); + this.issues = []; + this.addIssue = (sub) => { + this.issues = [...this.issues, sub]; + }; + this.addIssues = (subs = []) => { + this.issues = [...this.issues, ...subs]; + }; + const actualProto = new.target.prototype; + if (Object.setPrototypeOf) { + Object.setPrototypeOf(this, actualProto); + } else { + this.__proto__ = actualProto; + } + this.name = "ZodError"; + this.issues = issues; + } + format(_mapper) { + const mapper = _mapper || function(issue2) { + return issue2.message; + }; + const fieldErrors = { _errors: [] }; + const processError = (error2) => { + for (const issue2 of error2.issues) { + if (issue2.code === "invalid_union") { + issue2.unionErrors.map(processError); + } else if (issue2.code === "invalid_return_type") { + processError(issue2.returnTypeError); + } else if (issue2.code === "invalid_arguments") { + processError(issue2.argumentsError); + } else if (issue2.path.length === 0) { + fieldErrors._errors.push(mapper(issue2)); + } else { + let curr = fieldErrors; + let i = 0; + while (i < issue2.path.length) { + const el = issue2.path[i]; + const terminal = i === issue2.path.length - 1; + if (!terminal) { + curr[el] = curr[el] || { _errors: [] }; + } else { + curr[el] = curr[el] || { _errors: [] }; + curr[el]._errors.push(mapper(issue2)); + } + curr = curr[el]; + i++; + } + } + } + }; + processError(this); + return fieldErrors; + } + static assert(value) { + if (!(value instanceof _ZodError)) { + throw new Error(`Not a ZodError: ${value}`); + } + } + toString() { + return this.message; + } + get message() { + return JSON.stringify(this.issues, util2.jsonStringifyReplacer, 2); + } + get isEmpty() { + return this.issues.length === 0; + } + flatten(mapper = (issue2) => issue2.message) { + const fieldErrors = {}; + const formErrors = []; + for (const sub of this.issues) { + if (sub.path.length > 0) { + const firstEl = sub.path[0]; + fieldErrors[firstEl] = fieldErrors[firstEl] || []; + fieldErrors[firstEl].push(mapper(sub)); + } else { + formErrors.push(mapper(sub)); + } + } + return { formErrors, fieldErrors }; + } + get formErrors() { + return this.flatten(); + } +}; +ZodError.create = (issues) => { + const error2 = new ZodError(issues); + return error2; +}; + +// node_modules/zod/v3/locales/en.js +var errorMap = (issue2, _ctx) => { + let message; + switch (issue2.code) { + case ZodIssueCode.invalid_type: + if (issue2.received === ZodParsedType.undefined) { + message = "Required"; + } else { + message = `Expected ${issue2.expected}, received ${issue2.received}`; + } + break; + case ZodIssueCode.invalid_literal: + message = `Invalid literal value, expected ${JSON.stringify(issue2.expected, util2.jsonStringifyReplacer)}`; + break; + case ZodIssueCode.unrecognized_keys: + message = `Unrecognized key(s) in object: ${util2.joinValues(issue2.keys, ", ")}`; + break; + case ZodIssueCode.invalid_union: + message = `Invalid input`; + break; + case ZodIssueCode.invalid_union_discriminator: + message = `Invalid discriminator value. Expected ${util2.joinValues(issue2.options)}`; + break; + case ZodIssueCode.invalid_enum_value: + message = `Invalid enum value. Expected ${util2.joinValues(issue2.options)}, received '${issue2.received}'`; + break; + case ZodIssueCode.invalid_arguments: + message = `Invalid function arguments`; + break; + case ZodIssueCode.invalid_return_type: + message = `Invalid function return type`; + break; + case ZodIssueCode.invalid_date: + message = `Invalid date`; + break; + case ZodIssueCode.invalid_string: + if (typeof issue2.validation === "object") { + if ("includes" in issue2.validation) { + message = `Invalid input: must include "${issue2.validation.includes}"`; + if (typeof issue2.validation.position === "number") { + message = `${message} at one or more positions greater than or equal to ${issue2.validation.position}`; + } + } else if ("startsWith" in issue2.validation) { + message = `Invalid input: must start with "${issue2.validation.startsWith}"`; + } else if ("endsWith" in issue2.validation) { + message = `Invalid input: must end with "${issue2.validation.endsWith}"`; + } else { + util2.assertNever(issue2.validation); + } + } else if (issue2.validation !== "regex") { + message = `Invalid ${issue2.validation}`; + } else { + message = "Invalid"; + } + break; + case ZodIssueCode.too_small: + if (issue2.type === "array") + message = `Array must contain ${issue2.exact ? "exactly" : issue2.inclusive ? `at least` : `more than`} ${issue2.minimum} element(s)`; + else if (issue2.type === "string") + message = `String must contain ${issue2.exact ? "exactly" : issue2.inclusive ? `at least` : `over`} ${issue2.minimum} character(s)`; + else if (issue2.type === "number") + message = `Number must be ${issue2.exact ? `exactly equal to ` : issue2.inclusive ? `greater than or equal to ` : `greater than `}${issue2.minimum}`; + else if (issue2.type === "bigint") + message = `Number must be ${issue2.exact ? `exactly equal to ` : issue2.inclusive ? `greater than or equal to ` : `greater than `}${issue2.minimum}`; + else if (issue2.type === "date") + message = `Date must be ${issue2.exact ? `exactly equal to ` : issue2.inclusive ? `greater than or equal to ` : `greater than `}${new Date(Number(issue2.minimum))}`; + else + message = "Invalid input"; + break; + case ZodIssueCode.too_big: + if (issue2.type === "array") + message = `Array must contain ${issue2.exact ? `exactly` : issue2.inclusive ? `at most` : `less than`} ${issue2.maximum} element(s)`; + else if (issue2.type === "string") + message = `String must contain ${issue2.exact ? `exactly` : issue2.inclusive ? `at most` : `under`} ${issue2.maximum} character(s)`; + else if (issue2.type === "number") + message = `Number must be ${issue2.exact ? `exactly` : issue2.inclusive ? `less than or equal to` : `less than`} ${issue2.maximum}`; + else if (issue2.type === "bigint") + message = `BigInt must be ${issue2.exact ? `exactly` : issue2.inclusive ? `less than or equal to` : `less than`} ${issue2.maximum}`; + else if (issue2.type === "date") + message = `Date must be ${issue2.exact ? `exactly` : issue2.inclusive ? `smaller than or equal to` : `smaller than`} ${new Date(Number(issue2.maximum))}`; + else + message = "Invalid input"; + break; + case ZodIssueCode.custom: + message = `Invalid input`; + break; + case ZodIssueCode.invalid_intersection_types: + message = `Intersection results could not be merged`; + break; + case ZodIssueCode.not_multiple_of: + message = `Number must be a multiple of ${issue2.multipleOf}`; + break; + case ZodIssueCode.not_finite: + message = "Number must be finite"; + break; + default: + message = _ctx.defaultError; + util2.assertNever(issue2); + } + return { message }; +}; +var en_default = errorMap; + +// node_modules/zod/v3/errors.js +var overrideErrorMap = en_default; +function setErrorMap(map) { + overrideErrorMap = map; +} +function getErrorMap() { + return overrideErrorMap; +} + +// node_modules/zod/v3/helpers/parseUtil.js +var makeIssue = (params) => { + const { data, path: path9, errorMaps, issueData } = params; + const fullPath = [...path9, ...issueData.path || []]; + const fullIssue = { + ...issueData, + path: fullPath + }; + if (issueData.message !== void 0) { + return { + ...issueData, + path: fullPath, + message: issueData.message + }; + } + let errorMessage = ""; + const maps = errorMaps.filter((m) => !!m).slice().reverse(); + for (const map of maps) { + errorMessage = map(fullIssue, { data, defaultError: errorMessage }).message; + } + return { + ...issueData, + path: fullPath, + message: errorMessage + }; +}; +var EMPTY_PATH = []; +function addIssueToContext(ctx, issueData) { + const overrideMap = getErrorMap(); + const issue2 = makeIssue({ + issueData, + data: ctx.data, + path: ctx.path, + errorMaps: [ + ctx.common.contextualErrorMap, + // contextual error map is first priority + ctx.schemaErrorMap, + // then schema-bound map if available + overrideMap, + // then global override map + overrideMap === en_default ? void 0 : en_default + // then global default map + ].filter((x) => !!x) + }); + ctx.common.issues.push(issue2); +} +var ParseStatus = class _ParseStatus { + constructor() { + this.value = "valid"; + } + dirty() { + if (this.value === "valid") + this.value = "dirty"; + } + abort() { + if (this.value !== "aborted") + this.value = "aborted"; + } + static mergeArray(status, results) { + const arrayValue = []; + for (const s of results) { + if (s.status === "aborted") + return INVALID; + if (s.status === "dirty") + status.dirty(); + arrayValue.push(s.value); + } + return { status: status.value, value: arrayValue }; + } + static async mergeObjectAsync(status, pairs) { + const syncPairs = []; + for (const pair of pairs) { + const key = await pair.key; + const value = await pair.value; + syncPairs.push({ + key, + value + }); + } + return _ParseStatus.mergeObjectSync(status, syncPairs); + } + static mergeObjectSync(status, pairs) { + const finalObject = {}; + for (const pair of pairs) { + const { key, value } = pair; + if (key.status === "aborted") + return INVALID; + if (value.status === "aborted") + return INVALID; + if (key.status === "dirty") + status.dirty(); + if (value.status === "dirty") + status.dirty(); + if (key.value !== "__proto__" && (typeof value.value !== "undefined" || pair.alwaysSet)) { + finalObject[key.value] = value.value; + } + } + return { status: status.value, value: finalObject }; + } +}; +var INVALID = Object.freeze({ + status: "aborted" +}); +var DIRTY = (value) => ({ status: "dirty", value }); +var OK = (value) => ({ status: "valid", value }); +var isAborted = (x) => x.status === "aborted"; +var isDirty = (x) => x.status === "dirty"; +var isValid = (x) => x.status === "valid"; +var isAsync = (x) => typeof Promise !== "undefined" && x instanceof Promise; + +// node_modules/zod/v3/helpers/errorUtil.js +var errorUtil; +(function(errorUtil2) { + errorUtil2.errToObj = (message) => typeof message === "string" ? { message } : message || {}; + errorUtil2.toString = (message) => typeof message === "string" ? message : message?.message; +})(errorUtil || (errorUtil = {})); + +// node_modules/zod/v3/types.js +var ParseInputLazyPath = class { + constructor(parent, value, path9, key) { + this._cachedPath = []; + this.parent = parent; + this.data = value; + this._path = path9; + this._key = key; + } + get path() { + if (!this._cachedPath.length) { + if (Array.isArray(this._key)) { + this._cachedPath.push(...this._path, ...this._key); + } else { + this._cachedPath.push(...this._path, this._key); + } + } + return this._cachedPath; + } +}; +var handleResult = (ctx, result) => { + if (isValid(result)) { + return { success: true, data: result.value }; + } else { + if (!ctx.common.issues.length) { + throw new Error("Validation failed but no issues detected."); + } + return { + success: false, + get error() { + if (this._error) + return this._error; + const error2 = new ZodError(ctx.common.issues); + this._error = error2; + return this._error; + } + }; + } +}; +function processCreateParams(params) { + if (!params) + return {}; + const { errorMap: errorMap2, invalid_type_error, required_error, description } = params; + if (errorMap2 && (invalid_type_error || required_error)) { + throw new Error(`Can't use "invalid_type_error" or "required_error" in conjunction with custom error map.`); + } + if (errorMap2) + return { errorMap: errorMap2, description }; + const customMap = (iss, ctx) => { + const { message } = params; + if (iss.code === "invalid_enum_value") { + return { message: message ?? ctx.defaultError }; + } + if (typeof ctx.data === "undefined") { + return { message: message ?? required_error ?? ctx.defaultError }; + } + if (iss.code !== "invalid_type") + return { message: ctx.defaultError }; + return { message: message ?? invalid_type_error ?? ctx.defaultError }; + }; + return { errorMap: customMap, description }; +} +var ZodType = class { + get description() { + return this._def.description; + } + _getType(input) { + return getParsedType(input.data); + } + _getOrReturnCtx(input, ctx) { + return ctx || { + common: input.parent.common, + data: input.data, + parsedType: getParsedType(input.data), + schemaErrorMap: this._def.errorMap, + path: input.path, + parent: input.parent + }; + } + _processInputParams(input) { + return { + status: new ParseStatus(), + ctx: { + common: input.parent.common, + data: input.data, + parsedType: getParsedType(input.data), + schemaErrorMap: this._def.errorMap, + path: input.path, + parent: input.parent + } + }; + } + _parseSync(input) { + const result = this._parse(input); + if (isAsync(result)) { + throw new Error("Synchronous parse encountered promise."); + } + return result; + } + _parseAsync(input) { + const result = this._parse(input); + return Promise.resolve(result); + } + parse(data, params) { + const result = this.safeParse(data, params); + if (result.success) + return result.data; + throw result.error; + } + safeParse(data, params) { + const ctx = { + common: { + issues: [], + async: params?.async ?? false, + contextualErrorMap: params?.errorMap + }, + path: params?.path || [], + schemaErrorMap: this._def.errorMap, + parent: null, + data, + parsedType: getParsedType(data) + }; + const result = this._parseSync({ data, path: ctx.path, parent: ctx }); + return handleResult(ctx, result); + } + "~validate"(data) { + const ctx = { + common: { + issues: [], + async: !!this["~standard"].async + }, + path: [], + schemaErrorMap: this._def.errorMap, + parent: null, + data, + parsedType: getParsedType(data) + }; + if (!this["~standard"].async) { + try { + const result = this._parseSync({ data, path: [], parent: ctx }); + return isValid(result) ? { + value: result.value + } : { + issues: ctx.common.issues + }; + } catch (err) { + if (err?.message?.toLowerCase()?.includes("encountered")) { + this["~standard"].async = true; + } + ctx.common = { + issues: [], + async: true + }; + } + } + return this._parseAsync({ data, path: [], parent: ctx }).then((result) => isValid(result) ? { + value: result.value + } : { + issues: ctx.common.issues + }); + } + async parseAsync(data, params) { + const result = await this.safeParseAsync(data, params); + if (result.success) + return result.data; + throw result.error; + } + async safeParseAsync(data, params) { + const ctx = { + common: { + issues: [], + contextualErrorMap: params?.errorMap, + async: true + }, + path: params?.path || [], + schemaErrorMap: this._def.errorMap, + parent: null, + data, + parsedType: getParsedType(data) + }; + const maybeAsyncResult = this._parse({ data, path: ctx.path, parent: ctx }); + const result = await (isAsync(maybeAsyncResult) ? maybeAsyncResult : Promise.resolve(maybeAsyncResult)); + return handleResult(ctx, result); + } + refine(check2, message) { + const getIssueProperties = (val) => { + if (typeof message === "string" || typeof message === "undefined") { + return { message }; + } else if (typeof message === "function") { + return message(val); + } else { + return message; + } + }; + return this._refinement((val, ctx) => { + const result = check2(val); + const setError = () => ctx.addIssue({ + code: ZodIssueCode.custom, + ...getIssueProperties(val) + }); + if (typeof Promise !== "undefined" && result instanceof Promise) { + return result.then((data) => { + if (!data) { + setError(); + return false; + } else { + return true; + } + }); + } + if (!result) { + setError(); + return false; + } else { + return true; + } + }); + } + refinement(check2, refinementData) { + return this._refinement((val, ctx) => { + if (!check2(val)) { + ctx.addIssue(typeof refinementData === "function" ? refinementData(val, ctx) : refinementData); + return false; + } else { + return true; + } + }); + } + _refinement(refinement) { + return new ZodEffects({ + schema: this, + typeName: ZodFirstPartyTypeKind.ZodEffects, + effect: { type: "refinement", refinement } + }); + } + superRefine(refinement) { + return this._refinement(refinement); + } + constructor(def) { + this.spa = this.safeParseAsync; + this._def = def; + this.parse = this.parse.bind(this); + this.safeParse = this.safeParse.bind(this); + this.parseAsync = this.parseAsync.bind(this); + this.safeParseAsync = this.safeParseAsync.bind(this); + this.spa = this.spa.bind(this); + this.refine = this.refine.bind(this); + this.refinement = this.refinement.bind(this); + this.superRefine = this.superRefine.bind(this); + this.optional = this.optional.bind(this); + this.nullable = this.nullable.bind(this); + this.nullish = this.nullish.bind(this); + this.array = this.array.bind(this); + this.promise = this.promise.bind(this); + this.or = this.or.bind(this); + this.and = this.and.bind(this); + this.transform = this.transform.bind(this); + this.brand = this.brand.bind(this); + this.default = this.default.bind(this); + this.catch = this.catch.bind(this); + this.describe = this.describe.bind(this); + this.pipe = this.pipe.bind(this); + this.readonly = this.readonly.bind(this); + this.isNullable = this.isNullable.bind(this); + this.isOptional = this.isOptional.bind(this); + this["~standard"] = { + version: 1, + vendor: "zod", + validate: (data) => this["~validate"](data) + }; + } + optional() { + return ZodOptional.create(this, this._def); + } + nullable() { + return ZodNullable.create(this, this._def); + } + nullish() { + return this.nullable().optional(); + } + array() { + return ZodArray.create(this); + } + promise() { + return ZodPromise.create(this, this._def); + } + or(option) { + return ZodUnion.create([this, option], this._def); + } + and(incoming) { + return ZodIntersection.create(this, incoming, this._def); + } + transform(transform2) { + return new ZodEffects({ + ...processCreateParams(this._def), + schema: this, + typeName: ZodFirstPartyTypeKind.ZodEffects, + effect: { type: "transform", transform: transform2 } + }); + } + default(def) { + const defaultValueFunc = typeof def === "function" ? def : () => def; + return new ZodDefault({ + ...processCreateParams(this._def), + innerType: this, + defaultValue: defaultValueFunc, + typeName: ZodFirstPartyTypeKind.ZodDefault + }); + } + brand() { + return new ZodBranded({ + typeName: ZodFirstPartyTypeKind.ZodBranded, + type: this, + ...processCreateParams(this._def) + }); + } + catch(def) { + const catchValueFunc = typeof def === "function" ? def : () => def; + return new ZodCatch({ + ...processCreateParams(this._def), + innerType: this, + catchValue: catchValueFunc, + typeName: ZodFirstPartyTypeKind.ZodCatch + }); + } + describe(description) { + const This = this.constructor; + return new This({ + ...this._def, + description + }); + } + pipe(target) { + return ZodPipeline.create(this, target); + } + readonly() { + return ZodReadonly.create(this); + } + isOptional() { + return this.safeParse(void 0).success; + } + isNullable() { + return this.safeParse(null).success; + } +}; +var cuidRegex = /^c[^\s-]{8,}$/i; +var cuid2Regex = /^[0-9a-z]+$/; +var ulidRegex = /^[0-9A-HJKMNP-TV-Z]{26}$/i; +var uuidRegex = /^[0-9a-fA-F]{8}\b-[0-9a-fA-F]{4}\b-[0-9a-fA-F]{4}\b-[0-9a-fA-F]{4}\b-[0-9a-fA-F]{12}$/i; +var nanoidRegex = /^[a-z0-9_-]{21}$/i; +var jwtRegex = /^[A-Za-z0-9-_]+\.[A-Za-z0-9-_]+\.[A-Za-z0-9-_]*$/; +var durationRegex = /^[-+]?P(?!$)(?:(?:[-+]?\d+Y)|(?:[-+]?\d+[.,]\d+Y$))?(?:(?:[-+]?\d+M)|(?:[-+]?\d+[.,]\d+M$))?(?:(?:[-+]?\d+W)|(?:[-+]?\d+[.,]\d+W$))?(?:(?:[-+]?\d+D)|(?:[-+]?\d+[.,]\d+D$))?(?:T(?=[\d+-])(?:(?:[-+]?\d+H)|(?:[-+]?\d+[.,]\d+H$))?(?:(?:[-+]?\d+M)|(?:[-+]?\d+[.,]\d+M$))?(?:[-+]?\d+(?:[.,]\d+)?S)?)??$/; +var emailRegex = /^(?!\.)(?!.*\.\.)([A-Z0-9_'+\-\.]*)[A-Z0-9_+-]@([A-Z0-9][A-Z0-9\-]*\.)+[A-Z]{2,}$/i; +var _emojiRegex = `^(\\p{Extended_Pictographic}|\\p{Emoji_Component})+$`; +var emojiRegex; +var ipv4Regex = /^(?:(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\.){3}(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])$/; +var ipv4CidrRegex = /^(?:(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\.){3}(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\/(3[0-2]|[12]?[0-9])$/; +var ipv6Regex = /^(([0-9a-fA-F]{1,4}:){7,7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:)|fe80:(:[0-9a-fA-F]{0,4}){0,4}%[0-9a-zA-Z]{1,}|::(ffff(:0{1,4}){0,1}:){0,1}((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])|([0-9a-fA-F]{1,4}:){1,4}:((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9]))$/; +var ipv6CidrRegex = /^(([0-9a-fA-F]{1,4}:){7,7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:)|fe80:(:[0-9a-fA-F]{0,4}){0,4}%[0-9a-zA-Z]{1,}|::(ffff(:0{1,4}){0,1}:){0,1}((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])|([0-9a-fA-F]{1,4}:){1,4}:((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9]))\/(12[0-8]|1[01][0-9]|[1-9]?[0-9])$/; +var base64Regex = /^([0-9a-zA-Z+/]{4})*(([0-9a-zA-Z+/]{2}==)|([0-9a-zA-Z+/]{3}=))?$/; +var base64urlRegex = /^([0-9a-zA-Z-_]{4})*(([0-9a-zA-Z-_]{2}(==)?)|([0-9a-zA-Z-_]{3}(=)?))?$/; +var dateRegexSource = `((\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-((0[13578]|1[02])-(0[1-9]|[12]\\d|3[01])|(0[469]|11)-(0[1-9]|[12]\\d|30)|(02)-(0[1-9]|1\\d|2[0-8])))`; +var dateRegex = new RegExp(`^${dateRegexSource}$`); +function timeRegexSource(args) { + let secondsRegexSource = `[0-5]\\d`; + if (args.precision) { + secondsRegexSource = `${secondsRegexSource}\\.\\d{${args.precision}}`; + } else if (args.precision == null) { + secondsRegexSource = `${secondsRegexSource}(\\.\\d+)?`; + } + const secondsQuantifier = args.precision ? "+" : "?"; + return `([01]\\d|2[0-3]):[0-5]\\d(:${secondsRegexSource})${secondsQuantifier}`; +} +function timeRegex(args) { + return new RegExp(`^${timeRegexSource(args)}$`); +} +function datetimeRegex(args) { + let regex = `${dateRegexSource}T${timeRegexSource(args)}`; + const opts = []; + opts.push(args.local ? `Z?` : `Z`); + if (args.offset) + opts.push(`([+-]\\d{2}:?\\d{2})`); + regex = `${regex}(${opts.join("|")})`; + return new RegExp(`^${regex}$`); +} +function isValidIP(ip, version8) { + if ((version8 === "v4" || !version8) && ipv4Regex.test(ip)) { + return true; + } + if ((version8 === "v6" || !version8) && ipv6Regex.test(ip)) { + return true; + } + return false; +} +function isValidJWT(jwt3, alg) { + if (!jwtRegex.test(jwt3)) + return false; + try { + const [header] = jwt3.split("."); + if (!header) + return false; + const base642 = header.replace(/-/g, "+").replace(/_/g, "/").padEnd(header.length + (4 - header.length % 4) % 4, "="); + const decoded = JSON.parse(atob(base642)); + if (typeof decoded !== "object" || decoded === null) + return false; + if ("typ" in decoded && decoded?.typ !== "JWT") + return false; + if (!decoded.alg) + return false; + if (alg && decoded.alg !== alg) + return false; + return true; + } catch { + return false; + } +} +function isValidCidr(ip, version8) { + if ((version8 === "v4" || !version8) && ipv4CidrRegex.test(ip)) { + return true; + } + if ((version8 === "v6" || !version8) && ipv6CidrRegex.test(ip)) { + return true; + } + return false; +} +var ZodString = class _ZodString2 extends ZodType { + _parse(input) { + if (this._def.coerce) { + input.data = String(input.data); + } + const parsedType2 = this._getType(input); + if (parsedType2 !== ZodParsedType.string) { + const ctx2 = this._getOrReturnCtx(input); + addIssueToContext(ctx2, { + code: ZodIssueCode.invalid_type, + expected: ZodParsedType.string, + received: ctx2.parsedType + }); + return INVALID; + } + const status = new ParseStatus(); + let ctx = void 0; + for (const check2 of this._def.checks) { + if (check2.kind === "min") { + if (input.data.length < check2.value) { + ctx = this._getOrReturnCtx(input, ctx); + addIssueToContext(ctx, { + code: ZodIssueCode.too_small, + minimum: check2.value, + type: "string", + inclusive: true, + exact: false, + message: check2.message + }); + status.dirty(); + } + } else if (check2.kind === "max") { + if (input.data.length > check2.value) { + ctx = this._getOrReturnCtx(input, ctx); + addIssueToContext(ctx, { + code: ZodIssueCode.too_big, + maximum: check2.value, + type: "string", + inclusive: true, + exact: false, + message: check2.message + }); + status.dirty(); + } + } else if (check2.kind === "length") { + const tooBig = input.data.length > check2.value; + const tooSmall = input.data.length < check2.value; + if (tooBig || tooSmall) { + ctx = this._getOrReturnCtx(input, ctx); + if (tooBig) { + addIssueToContext(ctx, { + code: ZodIssueCode.too_big, + maximum: check2.value, + type: "string", + inclusive: true, + exact: true, + message: check2.message + }); + } else if (tooSmall) { + addIssueToContext(ctx, { + code: ZodIssueCode.too_small, + minimum: check2.value, + type: "string", + inclusive: true, + exact: true, + message: check2.message + }); + } + status.dirty(); + } + } else if (check2.kind === "email") { + if (!emailRegex.test(input.data)) { + ctx = this._getOrReturnCtx(input, ctx); + addIssueToContext(ctx, { + validation: "email", + code: ZodIssueCode.invalid_string, + message: check2.message + }); + status.dirty(); + } + } else if (check2.kind === "emoji") { + if (!emojiRegex) { + emojiRegex = new RegExp(_emojiRegex, "u"); + } + if (!emojiRegex.test(input.data)) { + ctx = this._getOrReturnCtx(input, ctx); + addIssueToContext(ctx, { + validation: "emoji", + code: ZodIssueCode.invalid_string, + message: check2.message + }); + status.dirty(); + } + } else if (check2.kind === "uuid") { + if (!uuidRegex.test(input.data)) { + ctx = this._getOrReturnCtx(input, ctx); + addIssueToContext(ctx, { + validation: "uuid", + code: ZodIssueCode.invalid_string, + message: check2.message + }); + status.dirty(); + } + } else if (check2.kind === "nanoid") { + if (!nanoidRegex.test(input.data)) { + ctx = this._getOrReturnCtx(input, ctx); + addIssueToContext(ctx, { + validation: "nanoid", + code: ZodIssueCode.invalid_string, + message: check2.message + }); + status.dirty(); + } + } else if (check2.kind === "cuid") { + if (!cuidRegex.test(input.data)) { + ctx = this._getOrReturnCtx(input, ctx); + addIssueToContext(ctx, { + validation: "cuid", + code: ZodIssueCode.invalid_string, + message: check2.message + }); + status.dirty(); + } + } else if (check2.kind === "cuid2") { + if (!cuid2Regex.test(input.data)) { + ctx = this._getOrReturnCtx(input, ctx); + addIssueToContext(ctx, { + validation: "cuid2", + code: ZodIssueCode.invalid_string, + message: check2.message + }); + status.dirty(); + } + } else if (check2.kind === "ulid") { + if (!ulidRegex.test(input.data)) { + ctx = this._getOrReturnCtx(input, ctx); + addIssueToContext(ctx, { + validation: "ulid", + code: ZodIssueCode.invalid_string, + message: check2.message + }); + status.dirty(); + } + } else if (check2.kind === "url") { + try { + new URL(input.data); + } catch { + ctx = this._getOrReturnCtx(input, ctx); + addIssueToContext(ctx, { + validation: "url", + code: ZodIssueCode.invalid_string, + message: check2.message + }); + status.dirty(); + } + } else if (check2.kind === "regex") { + check2.regex.lastIndex = 0; + const testResult = check2.regex.test(input.data); + if (!testResult) { + ctx = this._getOrReturnCtx(input, ctx); + addIssueToContext(ctx, { + validation: "regex", + code: ZodIssueCode.invalid_string, + message: check2.message + }); + status.dirty(); + } + } else if (check2.kind === "trim") { + input.data = input.data.trim(); + } else if (check2.kind === "includes") { + if (!input.data.includes(check2.value, check2.position)) { + ctx = this._getOrReturnCtx(input, ctx); + addIssueToContext(ctx, { + code: ZodIssueCode.invalid_string, + validation: { includes: check2.value, position: check2.position }, + message: check2.message + }); + status.dirty(); + } + } else if (check2.kind === "toLowerCase") { + input.data = input.data.toLowerCase(); + } else if (check2.kind === "toUpperCase") { + input.data = input.data.toUpperCase(); + } else if (check2.kind === "startsWith") { + if (!input.data.startsWith(check2.value)) { + ctx = this._getOrReturnCtx(input, ctx); + addIssueToContext(ctx, { + code: ZodIssueCode.invalid_string, + validation: { startsWith: check2.value }, + message: check2.message + }); + status.dirty(); + } + } else if (check2.kind === "endsWith") { + if (!input.data.endsWith(check2.value)) { + ctx = this._getOrReturnCtx(input, ctx); + addIssueToContext(ctx, { + code: ZodIssueCode.invalid_string, + validation: { endsWith: check2.value }, + message: check2.message + }); + status.dirty(); + } + } else if (check2.kind === "datetime") { + const regex = datetimeRegex(check2); + if (!regex.test(input.data)) { + ctx = this._getOrReturnCtx(input, ctx); + addIssueToContext(ctx, { + code: ZodIssueCode.invalid_string, + validation: "datetime", + message: check2.message + }); + status.dirty(); + } + } else if (check2.kind === "date") { + const regex = dateRegex; + if (!regex.test(input.data)) { + ctx = this._getOrReturnCtx(input, ctx); + addIssueToContext(ctx, { + code: ZodIssueCode.invalid_string, + validation: "date", + message: check2.message + }); + status.dirty(); + } + } else if (check2.kind === "time") { + const regex = timeRegex(check2); + if (!regex.test(input.data)) { + ctx = this._getOrReturnCtx(input, ctx); + addIssueToContext(ctx, { + code: ZodIssueCode.invalid_string, + validation: "time", + message: check2.message + }); + status.dirty(); + } + } else if (check2.kind === "duration") { + if (!durationRegex.test(input.data)) { + ctx = this._getOrReturnCtx(input, ctx); + addIssueToContext(ctx, { + validation: "duration", + code: ZodIssueCode.invalid_string, + message: check2.message + }); + status.dirty(); + } + } else if (check2.kind === "ip") { + if (!isValidIP(input.data, check2.version)) { + ctx = this._getOrReturnCtx(input, ctx); + addIssueToContext(ctx, { + validation: "ip", + code: ZodIssueCode.invalid_string, + message: check2.message + }); + status.dirty(); + } + } else if (check2.kind === "jwt") { + if (!isValidJWT(input.data, check2.alg)) { + ctx = this._getOrReturnCtx(input, ctx); + addIssueToContext(ctx, { + validation: "jwt", + code: ZodIssueCode.invalid_string, + message: check2.message + }); + status.dirty(); + } + } else if (check2.kind === "cidr") { + if (!isValidCidr(input.data, check2.version)) { + ctx = this._getOrReturnCtx(input, ctx); + addIssueToContext(ctx, { + validation: "cidr", + code: ZodIssueCode.invalid_string, + message: check2.message + }); + status.dirty(); + } + } else if (check2.kind === "base64") { + if (!base64Regex.test(input.data)) { + ctx = this._getOrReturnCtx(input, ctx); + addIssueToContext(ctx, { + validation: "base64", + code: ZodIssueCode.invalid_string, + message: check2.message + }); + status.dirty(); + } + } else if (check2.kind === "base64url") { + if (!base64urlRegex.test(input.data)) { + ctx = this._getOrReturnCtx(input, ctx); + addIssueToContext(ctx, { + validation: "base64url", + code: ZodIssueCode.invalid_string, + message: check2.message + }); + status.dirty(); + } + } else { + util2.assertNever(check2); + } + } + return { status: status.value, value: input.data }; + } + _regex(regex, validation, message) { + return this.refinement((data) => regex.test(data), { + validation, + code: ZodIssueCode.invalid_string, + ...errorUtil.errToObj(message) + }); + } + _addCheck(check2) { + return new _ZodString2({ + ...this._def, + checks: [...this._def.checks, check2] + }); + } + email(message) { + return this._addCheck({ kind: "email", ...errorUtil.errToObj(message) }); + } + url(message) { + return this._addCheck({ kind: "url", ...errorUtil.errToObj(message) }); + } + emoji(message) { + return this._addCheck({ kind: "emoji", ...errorUtil.errToObj(message) }); + } + uuid(message) { + return this._addCheck({ kind: "uuid", ...errorUtil.errToObj(message) }); + } + nanoid(message) { + return this._addCheck({ kind: "nanoid", ...errorUtil.errToObj(message) }); + } + cuid(message) { + return this._addCheck({ kind: "cuid", ...errorUtil.errToObj(message) }); + } + cuid2(message) { + return this._addCheck({ kind: "cuid2", ...errorUtil.errToObj(message) }); + } + ulid(message) { + return this._addCheck({ kind: "ulid", ...errorUtil.errToObj(message) }); + } + base64(message) { + return this._addCheck({ kind: "base64", ...errorUtil.errToObj(message) }); + } + base64url(message) { + return this._addCheck({ + kind: "base64url", + ...errorUtil.errToObj(message) + }); + } + jwt(options) { + return this._addCheck({ kind: "jwt", ...errorUtil.errToObj(options) }); + } + ip(options) { + return this._addCheck({ kind: "ip", ...errorUtil.errToObj(options) }); + } + cidr(options) { + return this._addCheck({ kind: "cidr", ...errorUtil.errToObj(options) }); + } + datetime(options) { + if (typeof options === "string") { + return this._addCheck({ + kind: "datetime", + precision: null, + offset: false, + local: false, + message: options + }); + } + return this._addCheck({ + kind: "datetime", + precision: typeof options?.precision === "undefined" ? null : options?.precision, + offset: options?.offset ?? false, + local: options?.local ?? false, + ...errorUtil.errToObj(options?.message) + }); + } + date(message) { + return this._addCheck({ kind: "date", message }); + } + time(options) { + if (typeof options === "string") { + return this._addCheck({ + kind: "time", + precision: null, + message: options + }); + } + return this._addCheck({ + kind: "time", + precision: typeof options?.precision === "undefined" ? null : options?.precision, + ...errorUtil.errToObj(options?.message) + }); + } + duration(message) { + return this._addCheck({ kind: "duration", ...errorUtil.errToObj(message) }); + } + regex(regex, message) { + return this._addCheck({ + kind: "regex", + regex, + ...errorUtil.errToObj(message) + }); + } + includes(value, options) { + return this._addCheck({ + kind: "includes", + value, + position: options?.position, + ...errorUtil.errToObj(options?.message) + }); + } + startsWith(value, message) { + return this._addCheck({ + kind: "startsWith", + value, + ...errorUtil.errToObj(message) + }); + } + endsWith(value, message) { + return this._addCheck({ + kind: "endsWith", + value, + ...errorUtil.errToObj(message) + }); + } + min(minLength, message) { + return this._addCheck({ + kind: "min", + value: minLength, + ...errorUtil.errToObj(message) + }); + } + max(maxLength, message) { + return this._addCheck({ + kind: "max", + value: maxLength, + ...errorUtil.errToObj(message) + }); + } + length(len, message) { + return this._addCheck({ + kind: "length", + value: len, + ...errorUtil.errToObj(message) + }); + } + /** + * Equivalent to `.min(1)` + */ + nonempty(message) { + return this.min(1, errorUtil.errToObj(message)); + } + trim() { + return new _ZodString2({ + ...this._def, + checks: [...this._def.checks, { kind: "trim" }] + }); + } + toLowerCase() { + return new _ZodString2({ + ...this._def, + checks: [...this._def.checks, { kind: "toLowerCase" }] + }); + } + toUpperCase() { + return new _ZodString2({ + ...this._def, + checks: [...this._def.checks, { kind: "toUpperCase" }] + }); + } + get isDatetime() { + return !!this._def.checks.find((ch) => ch.kind === "datetime"); + } + get isDate() { + return !!this._def.checks.find((ch) => ch.kind === "date"); + } + get isTime() { + return !!this._def.checks.find((ch) => ch.kind === "time"); + } + get isDuration() { + return !!this._def.checks.find((ch) => ch.kind === "duration"); + } + get isEmail() { + return !!this._def.checks.find((ch) => ch.kind === "email"); + } + get isURL() { + return !!this._def.checks.find((ch) => ch.kind === "url"); + } + get isEmoji() { + return !!this._def.checks.find((ch) => ch.kind === "emoji"); + } + get isUUID() { + return !!this._def.checks.find((ch) => ch.kind === "uuid"); + } + get isNANOID() { + return !!this._def.checks.find((ch) => ch.kind === "nanoid"); + } + get isCUID() { + return !!this._def.checks.find((ch) => ch.kind === "cuid"); + } + get isCUID2() { + return !!this._def.checks.find((ch) => ch.kind === "cuid2"); + } + get isULID() { + return !!this._def.checks.find((ch) => ch.kind === "ulid"); + } + get isIP() { + return !!this._def.checks.find((ch) => ch.kind === "ip"); + } + get isCIDR() { + return !!this._def.checks.find((ch) => ch.kind === "cidr"); + } + get isBase64() { + return !!this._def.checks.find((ch) => ch.kind === "base64"); + } + get isBase64url() { + return !!this._def.checks.find((ch) => ch.kind === "base64url"); + } + get minLength() { + let min = null; + for (const ch of this._def.checks) { + if (ch.kind === "min") { + if (min === null || ch.value > min) + min = ch.value; + } + } + return min; + } + get maxLength() { + let max = null; + for (const ch of this._def.checks) { + if (ch.kind === "max") { + if (max === null || ch.value < max) + max = ch.value; + } + } + return max; + } +}; +ZodString.create = (params) => { + return new ZodString({ + checks: [], + typeName: ZodFirstPartyTypeKind.ZodString, + coerce: params?.coerce ?? false, + ...processCreateParams(params) + }); +}; +function floatSafeRemainder(val, step) { + const valDecCount = (val.toString().split(".")[1] || "").length; + const stepDecCount = (step.toString().split(".")[1] || "").length; + const decCount = valDecCount > stepDecCount ? valDecCount : stepDecCount; + const valInt = Number.parseInt(val.toFixed(decCount).replace(".", "")); + const stepInt = Number.parseInt(step.toFixed(decCount).replace(".", "")); + return valInt % stepInt / 10 ** decCount; +} +var ZodNumber = class _ZodNumber extends ZodType { + constructor() { + super(...arguments); + this.min = this.gte; + this.max = this.lte; + this.step = this.multipleOf; + } + _parse(input) { + if (this._def.coerce) { + input.data = Number(input.data); + } + const parsedType2 = this._getType(input); + if (parsedType2 !== ZodParsedType.number) { + const ctx2 = this._getOrReturnCtx(input); + addIssueToContext(ctx2, { + code: ZodIssueCode.invalid_type, + expected: ZodParsedType.number, + received: ctx2.parsedType + }); + return INVALID; + } + let ctx = void 0; + const status = new ParseStatus(); + for (const check2 of this._def.checks) { + if (check2.kind === "int") { + if (!util2.isInteger(input.data)) { + ctx = this._getOrReturnCtx(input, ctx); + addIssueToContext(ctx, { + code: ZodIssueCode.invalid_type, + expected: "integer", + received: "float", + message: check2.message + }); + status.dirty(); + } + } else if (check2.kind === "min") { + const tooSmall = check2.inclusive ? input.data < check2.value : input.data <= check2.value; + if (tooSmall) { + ctx = this._getOrReturnCtx(input, ctx); + addIssueToContext(ctx, { + code: ZodIssueCode.too_small, + minimum: check2.value, + type: "number", + inclusive: check2.inclusive, + exact: false, + message: check2.message + }); + status.dirty(); + } + } else if (check2.kind === "max") { + const tooBig = check2.inclusive ? input.data > check2.value : input.data >= check2.value; + if (tooBig) { + ctx = this._getOrReturnCtx(input, ctx); + addIssueToContext(ctx, { + code: ZodIssueCode.too_big, + maximum: check2.value, + type: "number", + inclusive: check2.inclusive, + exact: false, + message: check2.message + }); + status.dirty(); + } + } else if (check2.kind === "multipleOf") { + if (floatSafeRemainder(input.data, check2.value) !== 0) { + ctx = this._getOrReturnCtx(input, ctx); + addIssueToContext(ctx, { + code: ZodIssueCode.not_multiple_of, + multipleOf: check2.value, + message: check2.message + }); + status.dirty(); + } + } else if (check2.kind === "finite") { + if (!Number.isFinite(input.data)) { + ctx = this._getOrReturnCtx(input, ctx); + addIssueToContext(ctx, { + code: ZodIssueCode.not_finite, + message: check2.message + }); + status.dirty(); + } + } else { + util2.assertNever(check2); + } + } + return { status: status.value, value: input.data }; + } + gte(value, message) { + return this.setLimit("min", value, true, errorUtil.toString(message)); + } + gt(value, message) { + return this.setLimit("min", value, false, errorUtil.toString(message)); + } + lte(value, message) { + return this.setLimit("max", value, true, errorUtil.toString(message)); + } + lt(value, message) { + return this.setLimit("max", value, false, errorUtil.toString(message)); + } + setLimit(kind, value, inclusive, message) { + return new _ZodNumber({ + ...this._def, + checks: [ + ...this._def.checks, + { + kind, + value, + inclusive, + message: errorUtil.toString(message) + } + ] + }); + } + _addCheck(check2) { + return new _ZodNumber({ + ...this._def, + checks: [...this._def.checks, check2] + }); + } + int(message) { + return this._addCheck({ + kind: "int", + message: errorUtil.toString(message) + }); + } + positive(message) { + return this._addCheck({ + kind: "min", + value: 0, + inclusive: false, + message: errorUtil.toString(message) + }); + } + negative(message) { + return this._addCheck({ + kind: "max", + value: 0, + inclusive: false, + message: errorUtil.toString(message) + }); + } + nonpositive(message) { + return this._addCheck({ + kind: "max", + value: 0, + inclusive: true, + message: errorUtil.toString(message) + }); + } + nonnegative(message) { + return this._addCheck({ + kind: "min", + value: 0, + inclusive: true, + message: errorUtil.toString(message) + }); + } + multipleOf(value, message) { + return this._addCheck({ + kind: "multipleOf", + value, + message: errorUtil.toString(message) + }); + } + finite(message) { + return this._addCheck({ + kind: "finite", + message: errorUtil.toString(message) + }); + } + safe(message) { + return this._addCheck({ + kind: "min", + inclusive: true, + value: Number.MIN_SAFE_INTEGER, + message: errorUtil.toString(message) + })._addCheck({ + kind: "max", + inclusive: true, + value: Number.MAX_SAFE_INTEGER, + message: errorUtil.toString(message) + }); + } + get minValue() { + let min = null; + for (const ch of this._def.checks) { + if (ch.kind === "min") { + if (min === null || ch.value > min) + min = ch.value; + } + } + return min; + } + get maxValue() { + let max = null; + for (const ch of this._def.checks) { + if (ch.kind === "max") { + if (max === null || ch.value < max) + max = ch.value; + } + } + return max; + } + get isInt() { + return !!this._def.checks.find((ch) => ch.kind === "int" || ch.kind === "multipleOf" && util2.isInteger(ch.value)); + } + get isFinite() { + let max = null; + let min = null; + for (const ch of this._def.checks) { + if (ch.kind === "finite" || ch.kind === "int" || ch.kind === "multipleOf") { + return true; + } else if (ch.kind === "min") { + if (min === null || ch.value > min) + min = ch.value; + } else if (ch.kind === "max") { + if (max === null || ch.value < max) + max = ch.value; + } + } + return Number.isFinite(min) && Number.isFinite(max); + } +}; +ZodNumber.create = (params) => { + return new ZodNumber({ + checks: [], + typeName: ZodFirstPartyTypeKind.ZodNumber, + coerce: params?.coerce || false, + ...processCreateParams(params) + }); +}; +var ZodBigInt = class _ZodBigInt extends ZodType { + constructor() { + super(...arguments); + this.min = this.gte; + this.max = this.lte; + } + _parse(input) { + if (this._def.coerce) { + try { + input.data = BigInt(input.data); + } catch { + return this._getInvalidInput(input); + } + } + const parsedType2 = this._getType(input); + if (parsedType2 !== ZodParsedType.bigint) { + return this._getInvalidInput(input); + } + let ctx = void 0; + const status = new ParseStatus(); + for (const check2 of this._def.checks) { + if (check2.kind === "min") { + const tooSmall = check2.inclusive ? input.data < check2.value : input.data <= check2.value; + if (tooSmall) { + ctx = this._getOrReturnCtx(input, ctx); + addIssueToContext(ctx, { + code: ZodIssueCode.too_small, + type: "bigint", + minimum: check2.value, + inclusive: check2.inclusive, + message: check2.message + }); + status.dirty(); + } + } else if (check2.kind === "max") { + const tooBig = check2.inclusive ? input.data > check2.value : input.data >= check2.value; + if (tooBig) { + ctx = this._getOrReturnCtx(input, ctx); + addIssueToContext(ctx, { + code: ZodIssueCode.too_big, + type: "bigint", + maximum: check2.value, + inclusive: check2.inclusive, + message: check2.message + }); + status.dirty(); + } + } else if (check2.kind === "multipleOf") { + if (input.data % check2.value !== BigInt(0)) { + ctx = this._getOrReturnCtx(input, ctx); + addIssueToContext(ctx, { + code: ZodIssueCode.not_multiple_of, + multipleOf: check2.value, + message: check2.message + }); + status.dirty(); + } + } else { + util2.assertNever(check2); + } + } + return { status: status.value, value: input.data }; + } + _getInvalidInput(input) { + const ctx = this._getOrReturnCtx(input); + addIssueToContext(ctx, { + code: ZodIssueCode.invalid_type, + expected: ZodParsedType.bigint, + received: ctx.parsedType + }); + return INVALID; + } + gte(value, message) { + return this.setLimit("min", value, true, errorUtil.toString(message)); + } + gt(value, message) { + return this.setLimit("min", value, false, errorUtil.toString(message)); + } + lte(value, message) { + return this.setLimit("max", value, true, errorUtil.toString(message)); + } + lt(value, message) { + return this.setLimit("max", value, false, errorUtil.toString(message)); + } + setLimit(kind, value, inclusive, message) { + return new _ZodBigInt({ + ...this._def, + checks: [ + ...this._def.checks, + { + kind, + value, + inclusive, + message: errorUtil.toString(message) + } + ] + }); + } + _addCheck(check2) { + return new _ZodBigInt({ + ...this._def, + checks: [...this._def.checks, check2] + }); + } + positive(message) { + return this._addCheck({ + kind: "min", + value: BigInt(0), + inclusive: false, + message: errorUtil.toString(message) + }); + } + negative(message) { + return this._addCheck({ + kind: "max", + value: BigInt(0), + inclusive: false, + message: errorUtil.toString(message) + }); + } + nonpositive(message) { + return this._addCheck({ + kind: "max", + value: BigInt(0), + inclusive: true, + message: errorUtil.toString(message) + }); + } + nonnegative(message) { + return this._addCheck({ + kind: "min", + value: BigInt(0), + inclusive: true, + message: errorUtil.toString(message) + }); + } + multipleOf(value, message) { + return this._addCheck({ + kind: "multipleOf", + value, + message: errorUtil.toString(message) + }); + } + get minValue() { + let min = null; + for (const ch of this._def.checks) { + if (ch.kind === "min") { + if (min === null || ch.value > min) + min = ch.value; + } + } + return min; + } + get maxValue() { + let max = null; + for (const ch of this._def.checks) { + if (ch.kind === "max") { + if (max === null || ch.value < max) + max = ch.value; + } + } + return max; + } +}; +ZodBigInt.create = (params) => { + return new ZodBigInt({ + checks: [], + typeName: ZodFirstPartyTypeKind.ZodBigInt, + coerce: params?.coerce ?? false, + ...processCreateParams(params) + }); +}; +var ZodBoolean = class extends ZodType { + _parse(input) { + if (this._def.coerce) { + input.data = Boolean(input.data); + } + const parsedType2 = this._getType(input); + if (parsedType2 !== ZodParsedType.boolean) { + const ctx = this._getOrReturnCtx(input); + addIssueToContext(ctx, { + code: ZodIssueCode.invalid_type, + expected: ZodParsedType.boolean, + received: ctx.parsedType + }); + return INVALID; + } + return OK(input.data); + } +}; +ZodBoolean.create = (params) => { + return new ZodBoolean({ + typeName: ZodFirstPartyTypeKind.ZodBoolean, + coerce: params?.coerce || false, + ...processCreateParams(params) + }); +}; +var ZodDate = class _ZodDate extends ZodType { + _parse(input) { + if (this._def.coerce) { + input.data = new Date(input.data); + } + const parsedType2 = this._getType(input); + if (parsedType2 !== ZodParsedType.date) { + const ctx2 = this._getOrReturnCtx(input); + addIssueToContext(ctx2, { + code: ZodIssueCode.invalid_type, + expected: ZodParsedType.date, + received: ctx2.parsedType + }); + return INVALID; + } + if (Number.isNaN(input.data.getTime())) { + const ctx2 = this._getOrReturnCtx(input); + addIssueToContext(ctx2, { + code: ZodIssueCode.invalid_date + }); + return INVALID; + } + const status = new ParseStatus(); + let ctx = void 0; + for (const check2 of this._def.checks) { + if (check2.kind === "min") { + if (input.data.getTime() < check2.value) { + ctx = this._getOrReturnCtx(input, ctx); + addIssueToContext(ctx, { + code: ZodIssueCode.too_small, + message: check2.message, + inclusive: true, + exact: false, + minimum: check2.value, + type: "date" + }); + status.dirty(); + } + } else if (check2.kind === "max") { + if (input.data.getTime() > check2.value) { + ctx = this._getOrReturnCtx(input, ctx); + addIssueToContext(ctx, { + code: ZodIssueCode.too_big, + message: check2.message, + inclusive: true, + exact: false, + maximum: check2.value, + type: "date" + }); + status.dirty(); + } + } else { + util2.assertNever(check2); + } + } + return { + status: status.value, + value: new Date(input.data.getTime()) + }; + } + _addCheck(check2) { + return new _ZodDate({ + ...this._def, + checks: [...this._def.checks, check2] + }); + } + min(minDate, message) { + return this._addCheck({ + kind: "min", + value: minDate.getTime(), + message: errorUtil.toString(message) + }); + } + max(maxDate, message) { + return this._addCheck({ + kind: "max", + value: maxDate.getTime(), + message: errorUtil.toString(message) + }); + } + get minDate() { + let min = null; + for (const ch of this._def.checks) { + if (ch.kind === "min") { + if (min === null || ch.value > min) + min = ch.value; + } + } + return min != null ? new Date(min) : null; + } + get maxDate() { + let max = null; + for (const ch of this._def.checks) { + if (ch.kind === "max") { + if (max === null || ch.value < max) + max = ch.value; + } + } + return max != null ? new Date(max) : null; + } +}; +ZodDate.create = (params) => { + return new ZodDate({ + checks: [], + coerce: params?.coerce || false, + typeName: ZodFirstPartyTypeKind.ZodDate, + ...processCreateParams(params) + }); +}; +var ZodSymbol = class extends ZodType { + _parse(input) { + const parsedType2 = this._getType(input); + if (parsedType2 !== ZodParsedType.symbol) { + const ctx = this._getOrReturnCtx(input); + addIssueToContext(ctx, { + code: ZodIssueCode.invalid_type, + expected: ZodParsedType.symbol, + received: ctx.parsedType + }); + return INVALID; + } + return OK(input.data); + } +}; +ZodSymbol.create = (params) => { + return new ZodSymbol({ + typeName: ZodFirstPartyTypeKind.ZodSymbol, + ...processCreateParams(params) + }); +}; +var ZodUndefined = class extends ZodType { + _parse(input) { + const parsedType2 = this._getType(input); + if (parsedType2 !== ZodParsedType.undefined) { + const ctx = this._getOrReturnCtx(input); + addIssueToContext(ctx, { + code: ZodIssueCode.invalid_type, + expected: ZodParsedType.undefined, + received: ctx.parsedType + }); + return INVALID; + } + return OK(input.data); + } +}; +ZodUndefined.create = (params) => { + return new ZodUndefined({ + typeName: ZodFirstPartyTypeKind.ZodUndefined, + ...processCreateParams(params) + }); +}; +var ZodNull = class extends ZodType { + _parse(input) { + const parsedType2 = this._getType(input); + if (parsedType2 !== ZodParsedType.null) { + const ctx = this._getOrReturnCtx(input); + addIssueToContext(ctx, { + code: ZodIssueCode.invalid_type, + expected: ZodParsedType.null, + received: ctx.parsedType + }); + return INVALID; + } + return OK(input.data); + } +}; +ZodNull.create = (params) => { + return new ZodNull({ + typeName: ZodFirstPartyTypeKind.ZodNull, + ...processCreateParams(params) + }); +}; +var ZodAny = class extends ZodType { + constructor() { + super(...arguments); + this._any = true; + } + _parse(input) { + return OK(input.data); + } +}; +ZodAny.create = (params) => { + return new ZodAny({ + typeName: ZodFirstPartyTypeKind.ZodAny, + ...processCreateParams(params) + }); +}; +var ZodUnknown = class extends ZodType { + constructor() { + super(...arguments); + this._unknown = true; + } + _parse(input) { + return OK(input.data); + } +}; +ZodUnknown.create = (params) => { + return new ZodUnknown({ + typeName: ZodFirstPartyTypeKind.ZodUnknown, + ...processCreateParams(params) + }); +}; +var ZodNever = class extends ZodType { + _parse(input) { + const ctx = this._getOrReturnCtx(input); + addIssueToContext(ctx, { + code: ZodIssueCode.invalid_type, + expected: ZodParsedType.never, + received: ctx.parsedType + }); + return INVALID; + } +}; +ZodNever.create = (params) => { + return new ZodNever({ + typeName: ZodFirstPartyTypeKind.ZodNever, + ...processCreateParams(params) + }); +}; +var ZodVoid = class extends ZodType { + _parse(input) { + const parsedType2 = this._getType(input); + if (parsedType2 !== ZodParsedType.undefined) { + const ctx = this._getOrReturnCtx(input); + addIssueToContext(ctx, { + code: ZodIssueCode.invalid_type, + expected: ZodParsedType.void, + received: ctx.parsedType + }); + return INVALID; + } + return OK(input.data); + } +}; +ZodVoid.create = (params) => { + return new ZodVoid({ + typeName: ZodFirstPartyTypeKind.ZodVoid, + ...processCreateParams(params) + }); +}; +var ZodArray = class _ZodArray extends ZodType { + _parse(input) { + const { ctx, status } = this._processInputParams(input); + const def = this._def; + if (ctx.parsedType !== ZodParsedType.array) { + addIssueToContext(ctx, { + code: ZodIssueCode.invalid_type, + expected: ZodParsedType.array, + received: ctx.parsedType + }); + return INVALID; + } + if (def.exactLength !== null) { + const tooBig = ctx.data.length > def.exactLength.value; + const tooSmall = ctx.data.length < def.exactLength.value; + if (tooBig || tooSmall) { + addIssueToContext(ctx, { + code: tooBig ? ZodIssueCode.too_big : ZodIssueCode.too_small, + minimum: tooSmall ? def.exactLength.value : void 0, + maximum: tooBig ? def.exactLength.value : void 0, + type: "array", + inclusive: true, + exact: true, + message: def.exactLength.message + }); + status.dirty(); + } + } + if (def.minLength !== null) { + if (ctx.data.length < def.minLength.value) { + addIssueToContext(ctx, { + code: ZodIssueCode.too_small, + minimum: def.minLength.value, + type: "array", + inclusive: true, + exact: false, + message: def.minLength.message + }); + status.dirty(); + } + } + if (def.maxLength !== null) { + if (ctx.data.length > def.maxLength.value) { + addIssueToContext(ctx, { + code: ZodIssueCode.too_big, + maximum: def.maxLength.value, + type: "array", + inclusive: true, + exact: false, + message: def.maxLength.message + }); + status.dirty(); + } + } + if (ctx.common.async) { + return Promise.all([...ctx.data].map((item, i) => { + return def.type._parseAsync(new ParseInputLazyPath(ctx, item, ctx.path, i)); + })).then((result2) => { + return ParseStatus.mergeArray(status, result2); + }); + } + const result = [...ctx.data].map((item, i) => { + return def.type._parseSync(new ParseInputLazyPath(ctx, item, ctx.path, i)); + }); + return ParseStatus.mergeArray(status, result); + } + get element() { + return this._def.type; + } + min(minLength, message) { + return new _ZodArray({ + ...this._def, + minLength: { value: minLength, message: errorUtil.toString(message) } + }); + } + max(maxLength, message) { + return new _ZodArray({ + ...this._def, + maxLength: { value: maxLength, message: errorUtil.toString(message) } + }); + } + length(len, message) { + return new _ZodArray({ + ...this._def, + exactLength: { value: len, message: errorUtil.toString(message) } + }); + } + nonempty(message) { + return this.min(1, message); + } +}; +ZodArray.create = (schema, params) => { + return new ZodArray({ + type: schema, + minLength: null, + maxLength: null, + exactLength: null, + typeName: ZodFirstPartyTypeKind.ZodArray, + ...processCreateParams(params) + }); +}; +function deepPartialify(schema) { + if (schema instanceof ZodObject) { + const newShape = {}; + for (const key in schema.shape) { + const fieldSchema = schema.shape[key]; + newShape[key] = ZodOptional.create(deepPartialify(fieldSchema)); + } + return new ZodObject({ + ...schema._def, + shape: () => newShape + }); + } else if (schema instanceof ZodArray) { + return new ZodArray({ + ...schema._def, + type: deepPartialify(schema.element) + }); + } else if (schema instanceof ZodOptional) { + return ZodOptional.create(deepPartialify(schema.unwrap())); + } else if (schema instanceof ZodNullable) { + return ZodNullable.create(deepPartialify(schema.unwrap())); + } else if (schema instanceof ZodTuple) { + return ZodTuple.create(schema.items.map((item) => deepPartialify(item))); + } else { + return schema; + } +} +var ZodObject = class _ZodObject extends ZodType { + constructor() { + super(...arguments); + this._cached = null; + this.nonstrict = this.passthrough; + this.augment = this.extend; + } + _getCached() { + if (this._cached !== null) + return this._cached; + const shape = this._def.shape(); + const keys = util2.objectKeys(shape); + this._cached = { shape, keys }; + return this._cached; + } + _parse(input) { + const parsedType2 = this._getType(input); + if (parsedType2 !== ZodParsedType.object) { + const ctx2 = this._getOrReturnCtx(input); + addIssueToContext(ctx2, { + code: ZodIssueCode.invalid_type, + expected: ZodParsedType.object, + received: ctx2.parsedType + }); + return INVALID; + } + const { status, ctx } = this._processInputParams(input); + const { shape, keys: shapeKeys } = this._getCached(); + const extraKeys = []; + if (!(this._def.catchall instanceof ZodNever && this._def.unknownKeys === "strip")) { + for (const key in ctx.data) { + if (!shapeKeys.includes(key)) { + extraKeys.push(key); + } + } + } + const pairs = []; + for (const key of shapeKeys) { + const keyValidator = shape[key]; + const value = ctx.data[key]; + pairs.push({ + key: { status: "valid", value: key }, + value: keyValidator._parse(new ParseInputLazyPath(ctx, value, ctx.path, key)), + alwaysSet: key in ctx.data + }); + } + if (this._def.catchall instanceof ZodNever) { + const unknownKeys = this._def.unknownKeys; + if (unknownKeys === "passthrough") { + for (const key of extraKeys) { + pairs.push({ + key: { status: "valid", value: key }, + value: { status: "valid", value: ctx.data[key] } + }); + } + } else if (unknownKeys === "strict") { + if (extraKeys.length > 0) { + addIssueToContext(ctx, { + code: ZodIssueCode.unrecognized_keys, + keys: extraKeys + }); + status.dirty(); + } + } else if (unknownKeys === "strip") { + } else { + throw new Error(`Internal ZodObject error: invalid unknownKeys value.`); + } + } else { + const catchall = this._def.catchall; + for (const key of extraKeys) { + const value = ctx.data[key]; + pairs.push({ + key: { status: "valid", value: key }, + value: catchall._parse( + new ParseInputLazyPath(ctx, value, ctx.path, key) + //, ctx.child(key), value, getParsedType(value) + ), + alwaysSet: key in ctx.data + }); + } + } + if (ctx.common.async) { + return Promise.resolve().then(async () => { + const syncPairs = []; + for (const pair of pairs) { + const key = await pair.key; + const value = await pair.value; + syncPairs.push({ + key, + value, + alwaysSet: pair.alwaysSet + }); + } + return syncPairs; + }).then((syncPairs) => { + return ParseStatus.mergeObjectSync(status, syncPairs); + }); + } else { + return ParseStatus.mergeObjectSync(status, pairs); + } + } + get shape() { + return this._def.shape(); + } + strict(message) { + errorUtil.errToObj; + return new _ZodObject({ + ...this._def, + unknownKeys: "strict", + ...message !== void 0 ? { + errorMap: (issue2, ctx) => { + const defaultError = this._def.errorMap?.(issue2, ctx).message ?? ctx.defaultError; + if (issue2.code === "unrecognized_keys") + return { + message: errorUtil.errToObj(message).message ?? defaultError + }; + return { + message: defaultError + }; + } + } : {} + }); + } + strip() { + return new _ZodObject({ + ...this._def, + unknownKeys: "strip" + }); + } + passthrough() { + return new _ZodObject({ + ...this._def, + unknownKeys: "passthrough" + }); + } + // const AugmentFactory = + // (def: Def) => + // ( + // augmentation: Augmentation + // ): ZodObject< + // extendShape, Augmentation>, + // Def["unknownKeys"], + // Def["catchall"] + // > => { + // return new ZodObject({ + // ...def, + // shape: () => ({ + // ...def.shape(), + // ...augmentation, + // }), + // }) as any; + // }; + extend(augmentation) { + return new _ZodObject({ + ...this._def, + shape: () => ({ + ...this._def.shape(), + ...augmentation + }) + }); + } + /** + * Prior to zod@1.0.12 there was a bug in the + * inferred type of merged objects. Please + * upgrade if you are experiencing issues. + */ + merge(merging) { + const merged = new _ZodObject({ + unknownKeys: merging._def.unknownKeys, + catchall: merging._def.catchall, + shape: () => ({ + ...this._def.shape(), + ...merging._def.shape() + }), + typeName: ZodFirstPartyTypeKind.ZodObject + }); + return merged; + } + // merge< + // Incoming extends AnyZodObject, + // Augmentation extends Incoming["shape"], + // NewOutput extends { + // [k in keyof Augmentation | keyof Output]: k extends keyof Augmentation + // ? Augmentation[k]["_output"] + // : k extends keyof Output + // ? Output[k] + // : never; + // }, + // NewInput extends { + // [k in keyof Augmentation | keyof Input]: k extends keyof Augmentation + // ? Augmentation[k]["_input"] + // : k extends keyof Input + // ? Input[k] + // : never; + // } + // >( + // merging: Incoming + // ): ZodObject< + // extendShape>, + // Incoming["_def"]["unknownKeys"], + // Incoming["_def"]["catchall"], + // NewOutput, + // NewInput + // > { + // const merged: any = new ZodObject({ + // unknownKeys: merging._def.unknownKeys, + // catchall: merging._def.catchall, + // shape: () => + // objectUtil.mergeShapes(this._def.shape(), merging._def.shape()), + // typeName: ZodFirstPartyTypeKind.ZodObject, + // }) as any; + // return merged; + // } + setKey(key, schema) { + return this.augment({ [key]: schema }); + } + // merge( + // merging: Incoming + // ): //ZodObject = (merging) => { + // ZodObject< + // extendShape>, + // Incoming["_def"]["unknownKeys"], + // Incoming["_def"]["catchall"] + // > { + // // const mergedShape = objectUtil.mergeShapes( + // // this._def.shape(), + // // merging._def.shape() + // // ); + // const merged: any = new ZodObject({ + // unknownKeys: merging._def.unknownKeys, + // catchall: merging._def.catchall, + // shape: () => + // objectUtil.mergeShapes(this._def.shape(), merging._def.shape()), + // typeName: ZodFirstPartyTypeKind.ZodObject, + // }) as any; + // return merged; + // } + catchall(index) { + return new _ZodObject({ + ...this._def, + catchall: index + }); + } + pick(mask) { + const shape = {}; + for (const key of util2.objectKeys(mask)) { + if (mask[key] && this.shape[key]) { + shape[key] = this.shape[key]; + } + } + return new _ZodObject({ + ...this._def, + shape: () => shape + }); + } + omit(mask) { + const shape = {}; + for (const key of util2.objectKeys(this.shape)) { + if (!mask[key]) { + shape[key] = this.shape[key]; + } + } + return new _ZodObject({ + ...this._def, + shape: () => shape + }); + } + /** + * @deprecated + */ + deepPartial() { + return deepPartialify(this); + } + partial(mask) { + const newShape = {}; + for (const key of util2.objectKeys(this.shape)) { + const fieldSchema = this.shape[key]; + if (mask && !mask[key]) { + newShape[key] = fieldSchema; + } else { + newShape[key] = fieldSchema.optional(); + } + } + return new _ZodObject({ + ...this._def, + shape: () => newShape + }); + } + required(mask) { + const newShape = {}; + for (const key of util2.objectKeys(this.shape)) { + if (mask && !mask[key]) { + newShape[key] = this.shape[key]; + } else { + const fieldSchema = this.shape[key]; + let newField = fieldSchema; + while (newField instanceof ZodOptional) { + newField = newField._def.innerType; + } + newShape[key] = newField; + } + } + return new _ZodObject({ + ...this._def, + shape: () => newShape + }); + } + keyof() { + return createZodEnum(util2.objectKeys(this.shape)); + } +}; +ZodObject.create = (shape, params) => { + return new ZodObject({ + shape: () => shape, + unknownKeys: "strip", + catchall: ZodNever.create(), + typeName: ZodFirstPartyTypeKind.ZodObject, + ...processCreateParams(params) + }); +}; +ZodObject.strictCreate = (shape, params) => { + return new ZodObject({ + shape: () => shape, + unknownKeys: "strict", + catchall: ZodNever.create(), + typeName: ZodFirstPartyTypeKind.ZodObject, + ...processCreateParams(params) + }); +}; +ZodObject.lazycreate = (shape, params) => { + return new ZodObject({ + shape, + unknownKeys: "strip", + catchall: ZodNever.create(), + typeName: ZodFirstPartyTypeKind.ZodObject, + ...processCreateParams(params) + }); +}; +var ZodUnion = class extends ZodType { + _parse(input) { + const { ctx } = this._processInputParams(input); + const options = this._def.options; + function handleResults(results) { + for (const result of results) { + if (result.result.status === "valid") { + return result.result; + } + } + for (const result of results) { + if (result.result.status === "dirty") { + ctx.common.issues.push(...result.ctx.common.issues); + return result.result; + } + } + const unionErrors = results.map((result) => new ZodError(result.ctx.common.issues)); + addIssueToContext(ctx, { + code: ZodIssueCode.invalid_union, + unionErrors + }); + return INVALID; + } + if (ctx.common.async) { + return Promise.all(options.map(async (option) => { + const childCtx = { + ...ctx, + common: { + ...ctx.common, + issues: [] + }, + parent: null + }; + return { + result: await option._parseAsync({ + data: ctx.data, + path: ctx.path, + parent: childCtx + }), + ctx: childCtx + }; + })).then(handleResults); + } else { + let dirty = void 0; + const issues = []; + for (const option of options) { + const childCtx = { + ...ctx, + common: { + ...ctx.common, + issues: [] + }, + parent: null + }; + const result = option._parseSync({ + data: ctx.data, + path: ctx.path, + parent: childCtx + }); + if (result.status === "valid") { + return result; + } else if (result.status === "dirty" && !dirty) { + dirty = { result, ctx: childCtx }; + } + if (childCtx.common.issues.length) { + issues.push(childCtx.common.issues); + } + } + if (dirty) { + ctx.common.issues.push(...dirty.ctx.common.issues); + return dirty.result; + } + const unionErrors = issues.map((issues2) => new ZodError(issues2)); + addIssueToContext(ctx, { + code: ZodIssueCode.invalid_union, + unionErrors + }); + return INVALID; + } + } + get options() { + return this._def.options; + } +}; +ZodUnion.create = (types, params) => { + return new ZodUnion({ + options: types, + typeName: ZodFirstPartyTypeKind.ZodUnion, + ...processCreateParams(params) + }); +}; +var getDiscriminator = (type) => { + if (type instanceof ZodLazy) { + return getDiscriminator(type.schema); + } else if (type instanceof ZodEffects) { + return getDiscriminator(type.innerType()); + } else if (type instanceof ZodLiteral) { + return [type.value]; + } else if (type instanceof ZodEnum) { + return type.options; + } else if (type instanceof ZodNativeEnum) { + return util2.objectValues(type.enum); + } else if (type instanceof ZodDefault) { + return getDiscriminator(type._def.innerType); + } else if (type instanceof ZodUndefined) { + return [void 0]; + } else if (type instanceof ZodNull) { + return [null]; + } else if (type instanceof ZodOptional) { + return [void 0, ...getDiscriminator(type.unwrap())]; + } else if (type instanceof ZodNullable) { + return [null, ...getDiscriminator(type.unwrap())]; + } else if (type instanceof ZodBranded) { + return getDiscriminator(type.unwrap()); + } else if (type instanceof ZodReadonly) { + return getDiscriminator(type.unwrap()); + } else if (type instanceof ZodCatch) { + return getDiscriminator(type._def.innerType); + } else { + return []; + } +}; +var ZodDiscriminatedUnion = class _ZodDiscriminatedUnion extends ZodType { + _parse(input) { + const { ctx } = this._processInputParams(input); + if (ctx.parsedType !== ZodParsedType.object) { + addIssueToContext(ctx, { + code: ZodIssueCode.invalid_type, + expected: ZodParsedType.object, + received: ctx.parsedType + }); + return INVALID; + } + const discriminator = this.discriminator; + const discriminatorValue = ctx.data[discriminator]; + const option = this.optionsMap.get(discriminatorValue); + if (!option) { + addIssueToContext(ctx, { + code: ZodIssueCode.invalid_union_discriminator, + options: Array.from(this.optionsMap.keys()), + path: [discriminator] + }); + return INVALID; + } + if (ctx.common.async) { + return option._parseAsync({ + data: ctx.data, + path: ctx.path, + parent: ctx + }); + } else { + return option._parseSync({ + data: ctx.data, + path: ctx.path, + parent: ctx + }); + } + } + get discriminator() { + return this._def.discriminator; + } + get options() { + return this._def.options; + } + get optionsMap() { + return this._def.optionsMap; + } + /** + * The constructor of the discriminated union schema. Its behaviour is very similar to that of the normal z.union() constructor. + * However, it only allows a union of objects, all of which need to share a discriminator property. This property must + * have a different value for each object in the union. + * @param discriminator the name of the discriminator property + * @param types an array of object schemas + * @param params + */ + static create(discriminator, options, params) { + const optionsMap = /* @__PURE__ */ new Map(); + for (const type of options) { + const discriminatorValues = getDiscriminator(type.shape[discriminator]); + if (!discriminatorValues.length) { + throw new Error(`A discriminator value for key \`${discriminator}\` could not be extracted from all schema options`); + } + for (const value of discriminatorValues) { + if (optionsMap.has(value)) { + throw new Error(`Discriminator property ${String(discriminator)} has duplicate value ${String(value)}`); + } + optionsMap.set(value, type); + } + } + return new _ZodDiscriminatedUnion({ + typeName: ZodFirstPartyTypeKind.ZodDiscriminatedUnion, + discriminator, + options, + optionsMap, + ...processCreateParams(params) + }); + } +}; +function mergeValues(a, b) { + const aType = getParsedType(a); + const bType = getParsedType(b); + if (a === b) { + return { valid: true, data: a }; + } else if (aType === ZodParsedType.object && bType === ZodParsedType.object) { + const bKeys = util2.objectKeys(b); + const sharedKeys = util2.objectKeys(a).filter((key) => bKeys.indexOf(key) !== -1); + const newObj = { ...a, ...b }; + for (const key of sharedKeys) { + const sharedValue = mergeValues(a[key], b[key]); + if (!sharedValue.valid) { + return { valid: false }; + } + newObj[key] = sharedValue.data; + } + return { valid: true, data: newObj }; + } else if (aType === ZodParsedType.array && bType === ZodParsedType.array) { + if (a.length !== b.length) { + return { valid: false }; + } + const newArray = []; + for (let index = 0; index < a.length; index++) { + const itemA = a[index]; + const itemB = b[index]; + const sharedValue = mergeValues(itemA, itemB); + if (!sharedValue.valid) { + return { valid: false }; + } + newArray.push(sharedValue.data); + } + return { valid: true, data: newArray }; + } else if (aType === ZodParsedType.date && bType === ZodParsedType.date && +a === +b) { + return { valid: true, data: a }; + } else { + return { valid: false }; + } +} +var ZodIntersection = class extends ZodType { + _parse(input) { + const { status, ctx } = this._processInputParams(input); + const handleParsed = (parsedLeft, parsedRight) => { + if (isAborted(parsedLeft) || isAborted(parsedRight)) { + return INVALID; + } + const merged = mergeValues(parsedLeft.value, parsedRight.value); + if (!merged.valid) { + addIssueToContext(ctx, { + code: ZodIssueCode.invalid_intersection_types + }); + return INVALID; + } + if (isDirty(parsedLeft) || isDirty(parsedRight)) { + status.dirty(); + } + return { status: status.value, value: merged.data }; + }; + if (ctx.common.async) { + return Promise.all([ + this._def.left._parseAsync({ + data: ctx.data, + path: ctx.path, + parent: ctx + }), + this._def.right._parseAsync({ + data: ctx.data, + path: ctx.path, + parent: ctx + }) + ]).then(([left, right]) => handleParsed(left, right)); + } else { + return handleParsed(this._def.left._parseSync({ + data: ctx.data, + path: ctx.path, + parent: ctx + }), this._def.right._parseSync({ + data: ctx.data, + path: ctx.path, + parent: ctx + })); + } + } +}; +ZodIntersection.create = (left, right, params) => { + return new ZodIntersection({ + left, + right, + typeName: ZodFirstPartyTypeKind.ZodIntersection, + ...processCreateParams(params) + }); +}; +var ZodTuple = class _ZodTuple extends ZodType { + _parse(input) { + const { status, ctx } = this._processInputParams(input); + if (ctx.parsedType !== ZodParsedType.array) { + addIssueToContext(ctx, { + code: ZodIssueCode.invalid_type, + expected: ZodParsedType.array, + received: ctx.parsedType + }); + return INVALID; + } + if (ctx.data.length < this._def.items.length) { + addIssueToContext(ctx, { + code: ZodIssueCode.too_small, + minimum: this._def.items.length, + inclusive: true, + exact: false, + type: "array" + }); + return INVALID; + } + const rest = this._def.rest; + if (!rest && ctx.data.length > this._def.items.length) { + addIssueToContext(ctx, { + code: ZodIssueCode.too_big, + maximum: this._def.items.length, + inclusive: true, + exact: false, + type: "array" + }); + status.dirty(); + } + const items = [...ctx.data].map((item, itemIndex) => { + const schema = this._def.items[itemIndex] || this._def.rest; + if (!schema) + return null; + return schema._parse(new ParseInputLazyPath(ctx, item, ctx.path, itemIndex)); + }).filter((x) => !!x); + if (ctx.common.async) { + return Promise.all(items).then((results) => { + return ParseStatus.mergeArray(status, results); + }); + } else { + return ParseStatus.mergeArray(status, items); + } + } + get items() { + return this._def.items; + } + rest(rest) { + return new _ZodTuple({ + ...this._def, + rest + }); + } +}; +ZodTuple.create = (schemas, params) => { + if (!Array.isArray(schemas)) { + throw new Error("You must pass an array of schemas to z.tuple([ ... ])"); + } + return new ZodTuple({ + items: schemas, + typeName: ZodFirstPartyTypeKind.ZodTuple, + rest: null, + ...processCreateParams(params) + }); +}; +var ZodRecord = class _ZodRecord extends ZodType { + get keySchema() { + return this._def.keyType; + } + get valueSchema() { + return this._def.valueType; + } + _parse(input) { + const { status, ctx } = this._processInputParams(input); + if (ctx.parsedType !== ZodParsedType.object) { + addIssueToContext(ctx, { + code: ZodIssueCode.invalid_type, + expected: ZodParsedType.object, + received: ctx.parsedType + }); + return INVALID; + } + const pairs = []; + const keyType = this._def.keyType; + const valueType = this._def.valueType; + for (const key in ctx.data) { + pairs.push({ + key: keyType._parse(new ParseInputLazyPath(ctx, key, ctx.path, key)), + value: valueType._parse(new ParseInputLazyPath(ctx, ctx.data[key], ctx.path, key)), + alwaysSet: key in ctx.data + }); + } + if (ctx.common.async) { + return ParseStatus.mergeObjectAsync(status, pairs); + } else { + return ParseStatus.mergeObjectSync(status, pairs); + } + } + get element() { + return this._def.valueType; + } + static create(first, second, third) { + if (second instanceof ZodType) { + return new _ZodRecord({ + keyType: first, + valueType: second, + typeName: ZodFirstPartyTypeKind.ZodRecord, + ...processCreateParams(third) + }); + } + return new _ZodRecord({ + keyType: ZodString.create(), + valueType: first, + typeName: ZodFirstPartyTypeKind.ZodRecord, + ...processCreateParams(second) + }); + } +}; +var ZodMap = class extends ZodType { + get keySchema() { + return this._def.keyType; + } + get valueSchema() { + return this._def.valueType; + } + _parse(input) { + const { status, ctx } = this._processInputParams(input); + if (ctx.parsedType !== ZodParsedType.map) { + addIssueToContext(ctx, { + code: ZodIssueCode.invalid_type, + expected: ZodParsedType.map, + received: ctx.parsedType + }); + return INVALID; + } + const keyType = this._def.keyType; + const valueType = this._def.valueType; + const pairs = [...ctx.data.entries()].map(([key, value], index) => { + return { + key: keyType._parse(new ParseInputLazyPath(ctx, key, ctx.path, [index, "key"])), + value: valueType._parse(new ParseInputLazyPath(ctx, value, ctx.path, [index, "value"])) + }; + }); + if (ctx.common.async) { + const finalMap = /* @__PURE__ */ new Map(); + return Promise.resolve().then(async () => { + for (const pair of pairs) { + const key = await pair.key; + const value = await pair.value; + if (key.status === "aborted" || value.status === "aborted") { + return INVALID; + } + if (key.status === "dirty" || value.status === "dirty") { + status.dirty(); + } + finalMap.set(key.value, value.value); + } + return { status: status.value, value: finalMap }; + }); + } else { + const finalMap = /* @__PURE__ */ new Map(); + for (const pair of pairs) { + const key = pair.key; + const value = pair.value; + if (key.status === "aborted" || value.status === "aborted") { + return INVALID; + } + if (key.status === "dirty" || value.status === "dirty") { + status.dirty(); + } + finalMap.set(key.value, value.value); + } + return { status: status.value, value: finalMap }; + } + } +}; +ZodMap.create = (keyType, valueType, params) => { + return new ZodMap({ + valueType, + keyType, + typeName: ZodFirstPartyTypeKind.ZodMap, + ...processCreateParams(params) + }); +}; +var ZodSet = class _ZodSet extends ZodType { + _parse(input) { + const { status, ctx } = this._processInputParams(input); + if (ctx.parsedType !== ZodParsedType.set) { + addIssueToContext(ctx, { + code: ZodIssueCode.invalid_type, + expected: ZodParsedType.set, + received: ctx.parsedType + }); + return INVALID; + } + const def = this._def; + if (def.minSize !== null) { + if (ctx.data.size < def.minSize.value) { + addIssueToContext(ctx, { + code: ZodIssueCode.too_small, + minimum: def.minSize.value, + type: "set", + inclusive: true, + exact: false, + message: def.minSize.message + }); + status.dirty(); + } + } + if (def.maxSize !== null) { + if (ctx.data.size > def.maxSize.value) { + addIssueToContext(ctx, { + code: ZodIssueCode.too_big, + maximum: def.maxSize.value, + type: "set", + inclusive: true, + exact: false, + message: def.maxSize.message + }); + status.dirty(); + } + } + const valueType = this._def.valueType; + function finalizeSet(elements2) { + const parsedSet = /* @__PURE__ */ new Set(); + for (const element of elements2) { + if (element.status === "aborted") + return INVALID; + if (element.status === "dirty") + status.dirty(); + parsedSet.add(element.value); + } + return { status: status.value, value: parsedSet }; + } + const elements = [...ctx.data.values()].map((item, i) => valueType._parse(new ParseInputLazyPath(ctx, item, ctx.path, i))); + if (ctx.common.async) { + return Promise.all(elements).then((elements2) => finalizeSet(elements2)); + } else { + return finalizeSet(elements); + } + } + min(minSize, message) { + return new _ZodSet({ + ...this._def, + minSize: { value: minSize, message: errorUtil.toString(message) } + }); + } + max(maxSize, message) { + return new _ZodSet({ + ...this._def, + maxSize: { value: maxSize, message: errorUtil.toString(message) } + }); + } + size(size, message) { + return this.min(size, message).max(size, message); + } + nonempty(message) { + return this.min(1, message); + } +}; +ZodSet.create = (valueType, params) => { + return new ZodSet({ + valueType, + minSize: null, + maxSize: null, + typeName: ZodFirstPartyTypeKind.ZodSet, + ...processCreateParams(params) + }); +}; +var ZodFunction = class _ZodFunction extends ZodType { + constructor() { + super(...arguments); + this.validate = this.implement; + } + _parse(input) { + const { ctx } = this._processInputParams(input); + if (ctx.parsedType !== ZodParsedType.function) { + addIssueToContext(ctx, { + code: ZodIssueCode.invalid_type, + expected: ZodParsedType.function, + received: ctx.parsedType + }); + return INVALID; + } + function makeArgsIssue(args, error2) { + return makeIssue({ + data: args, + path: ctx.path, + errorMaps: [ctx.common.contextualErrorMap, ctx.schemaErrorMap, getErrorMap(), en_default].filter((x) => !!x), + issueData: { + code: ZodIssueCode.invalid_arguments, + argumentsError: error2 + } + }); + } + function makeReturnsIssue(returns, error2) { + return makeIssue({ + data: returns, + path: ctx.path, + errorMaps: [ctx.common.contextualErrorMap, ctx.schemaErrorMap, getErrorMap(), en_default].filter((x) => !!x), + issueData: { + code: ZodIssueCode.invalid_return_type, + returnTypeError: error2 + } + }); + } + const params = { errorMap: ctx.common.contextualErrorMap }; + const fn = ctx.data; + if (this._def.returns instanceof ZodPromise) { + const me = this; + return OK(async function(...args) { + const error2 = new ZodError([]); + const parsedArgs = await me._def.args.parseAsync(args, params).catch((e) => { + error2.addIssue(makeArgsIssue(args, e)); + throw error2; + }); + const result = await Reflect.apply(fn, this, parsedArgs); + const parsedReturns = await me._def.returns._def.type.parseAsync(result, params).catch((e) => { + error2.addIssue(makeReturnsIssue(result, e)); + throw error2; + }); + return parsedReturns; + }); + } else { + const me = this; + return OK(function(...args) { + const parsedArgs = me._def.args.safeParse(args, params); + if (!parsedArgs.success) { + throw new ZodError([makeArgsIssue(args, parsedArgs.error)]); + } + const result = Reflect.apply(fn, this, parsedArgs.data); + const parsedReturns = me._def.returns.safeParse(result, params); + if (!parsedReturns.success) { + throw new ZodError([makeReturnsIssue(result, parsedReturns.error)]); + } + return parsedReturns.data; + }); + } + } + parameters() { + return this._def.args; + } + returnType() { + return this._def.returns; + } + args(...items) { + return new _ZodFunction({ + ...this._def, + args: ZodTuple.create(items).rest(ZodUnknown.create()) + }); + } + returns(returnType) { + return new _ZodFunction({ + ...this._def, + returns: returnType + }); + } + implement(func) { + const validatedFunc = this.parse(func); + return validatedFunc; + } + strictImplement(func) { + const validatedFunc = this.parse(func); + return validatedFunc; + } + static create(args, returns, params) { + return new _ZodFunction({ + args: args ? args : ZodTuple.create([]).rest(ZodUnknown.create()), + returns: returns || ZodUnknown.create(), + typeName: ZodFirstPartyTypeKind.ZodFunction, + ...processCreateParams(params) + }); + } +}; +var ZodLazy = class extends ZodType { + get schema() { + return this._def.getter(); + } + _parse(input) { + const { ctx } = this._processInputParams(input); + const lazySchema = this._def.getter(); + return lazySchema._parse({ data: ctx.data, path: ctx.path, parent: ctx }); + } +}; +ZodLazy.create = (getter, params) => { + return new ZodLazy({ + getter, + typeName: ZodFirstPartyTypeKind.ZodLazy, + ...processCreateParams(params) + }); +}; +var ZodLiteral = class extends ZodType { + _parse(input) { + if (input.data !== this._def.value) { + const ctx = this._getOrReturnCtx(input); + addIssueToContext(ctx, { + received: ctx.data, + code: ZodIssueCode.invalid_literal, + expected: this._def.value + }); + return INVALID; + } + return { status: "valid", value: input.data }; + } + get value() { + return this._def.value; + } +}; +ZodLiteral.create = (value, params) => { + return new ZodLiteral({ + value, + typeName: ZodFirstPartyTypeKind.ZodLiteral, + ...processCreateParams(params) + }); +}; +function createZodEnum(values, params) { + return new ZodEnum({ + values, + typeName: ZodFirstPartyTypeKind.ZodEnum, + ...processCreateParams(params) + }); +} +var ZodEnum = class _ZodEnum extends ZodType { + _parse(input) { + if (typeof input.data !== "string") { + const ctx = this._getOrReturnCtx(input); + const expectedValues = this._def.values; + addIssueToContext(ctx, { + expected: util2.joinValues(expectedValues), + received: ctx.parsedType, + code: ZodIssueCode.invalid_type + }); + return INVALID; + } + if (!this._cache) { + this._cache = new Set(this._def.values); + } + if (!this._cache.has(input.data)) { + const ctx = this._getOrReturnCtx(input); + const expectedValues = this._def.values; + addIssueToContext(ctx, { + received: ctx.data, + code: ZodIssueCode.invalid_enum_value, + options: expectedValues + }); + return INVALID; + } + return OK(input.data); + } + get options() { + return this._def.values; + } + get enum() { + const enumValues = {}; + for (const val of this._def.values) { + enumValues[val] = val; + } + return enumValues; + } + get Values() { + const enumValues = {}; + for (const val of this._def.values) { + enumValues[val] = val; + } + return enumValues; + } + get Enum() { + const enumValues = {}; + for (const val of this._def.values) { + enumValues[val] = val; + } + return enumValues; + } + extract(values, newDef = this._def) { + return _ZodEnum.create(values, { + ...this._def, + ...newDef + }); + } + exclude(values, newDef = this._def) { + return _ZodEnum.create(this.options.filter((opt) => !values.includes(opt)), { + ...this._def, + ...newDef + }); + } +}; +ZodEnum.create = createZodEnum; +var ZodNativeEnum = class extends ZodType { + _parse(input) { + const nativeEnumValues = util2.getValidEnumValues(this._def.values); + const ctx = this._getOrReturnCtx(input); + if (ctx.parsedType !== ZodParsedType.string && ctx.parsedType !== ZodParsedType.number) { + const expectedValues = util2.objectValues(nativeEnumValues); + addIssueToContext(ctx, { + expected: util2.joinValues(expectedValues), + received: ctx.parsedType, + code: ZodIssueCode.invalid_type + }); + return INVALID; + } + if (!this._cache) { + this._cache = new Set(util2.getValidEnumValues(this._def.values)); + } + if (!this._cache.has(input.data)) { + const expectedValues = util2.objectValues(nativeEnumValues); + addIssueToContext(ctx, { + received: ctx.data, + code: ZodIssueCode.invalid_enum_value, + options: expectedValues + }); + return INVALID; + } + return OK(input.data); + } + get enum() { + return this._def.values; + } +}; +ZodNativeEnum.create = (values, params) => { + return new ZodNativeEnum({ + values, + typeName: ZodFirstPartyTypeKind.ZodNativeEnum, + ...processCreateParams(params) + }); +}; +var ZodPromise = class extends ZodType { + unwrap() { + return this._def.type; + } + _parse(input) { + const { ctx } = this._processInputParams(input); + if (ctx.parsedType !== ZodParsedType.promise && ctx.common.async === false) { + addIssueToContext(ctx, { + code: ZodIssueCode.invalid_type, + expected: ZodParsedType.promise, + received: ctx.parsedType + }); + return INVALID; + } + const promisified = ctx.parsedType === ZodParsedType.promise ? ctx.data : Promise.resolve(ctx.data); + return OK(promisified.then((data) => { + return this._def.type.parseAsync(data, { + path: ctx.path, + errorMap: ctx.common.contextualErrorMap + }); + })); + } +}; +ZodPromise.create = (schema, params) => { + return new ZodPromise({ + type: schema, + typeName: ZodFirstPartyTypeKind.ZodPromise, + ...processCreateParams(params) + }); +}; +var ZodEffects = class extends ZodType { + innerType() { + return this._def.schema; + } + sourceType() { + return this._def.schema._def.typeName === ZodFirstPartyTypeKind.ZodEffects ? this._def.schema.sourceType() : this._def.schema; + } + _parse(input) { + const { status, ctx } = this._processInputParams(input); + const effect = this._def.effect || null; + const checkCtx = { + addIssue: (arg) => { + addIssueToContext(ctx, arg); + if (arg.fatal) { + status.abort(); + } else { + status.dirty(); + } + }, + get path() { + return ctx.path; + } + }; + checkCtx.addIssue = checkCtx.addIssue.bind(checkCtx); + if (effect.type === "preprocess") { + const processed = effect.transform(ctx.data, checkCtx); + if (ctx.common.async) { + return Promise.resolve(processed).then(async (processed2) => { + if (status.value === "aborted") + return INVALID; + const result = await this._def.schema._parseAsync({ + data: processed2, + path: ctx.path, + parent: ctx + }); + if (result.status === "aborted") + return INVALID; + if (result.status === "dirty") + return DIRTY(result.value); + if (status.value === "dirty") + return DIRTY(result.value); + return result; + }); + } else { + if (status.value === "aborted") + return INVALID; + const result = this._def.schema._parseSync({ + data: processed, + path: ctx.path, + parent: ctx + }); + if (result.status === "aborted") + return INVALID; + if (result.status === "dirty") + return DIRTY(result.value); + if (status.value === "dirty") + return DIRTY(result.value); + return result; + } + } + if (effect.type === "refinement") { + const executeRefinement = (acc) => { + const result = effect.refinement(acc, checkCtx); + if (ctx.common.async) { + return Promise.resolve(result); + } + if (result instanceof Promise) { + throw new Error("Async refinement encountered during synchronous parse operation. Use .parseAsync instead."); + } + return acc; + }; + if (ctx.common.async === false) { + const inner = this._def.schema._parseSync({ + data: ctx.data, + path: ctx.path, + parent: ctx + }); + if (inner.status === "aborted") + return INVALID; + if (inner.status === "dirty") + status.dirty(); + executeRefinement(inner.value); + return { status: status.value, value: inner.value }; + } else { + return this._def.schema._parseAsync({ data: ctx.data, path: ctx.path, parent: ctx }).then((inner) => { + if (inner.status === "aborted") + return INVALID; + if (inner.status === "dirty") + status.dirty(); + return executeRefinement(inner.value).then(() => { + return { status: status.value, value: inner.value }; + }); + }); + } + } + if (effect.type === "transform") { + if (ctx.common.async === false) { + const base = this._def.schema._parseSync({ + data: ctx.data, + path: ctx.path, + parent: ctx + }); + if (!isValid(base)) + return INVALID; + const result = effect.transform(base.value, checkCtx); + if (result instanceof Promise) { + throw new Error(`Asynchronous transform encountered during synchronous parse operation. Use .parseAsync instead.`); + } + return { status: status.value, value: result }; + } else { + return this._def.schema._parseAsync({ data: ctx.data, path: ctx.path, parent: ctx }).then((base) => { + if (!isValid(base)) + return INVALID; + return Promise.resolve(effect.transform(base.value, checkCtx)).then((result) => ({ + status: status.value, + value: result + })); + }); + } + } + util2.assertNever(effect); + } +}; +ZodEffects.create = (schema, effect, params) => { + return new ZodEffects({ + schema, + typeName: ZodFirstPartyTypeKind.ZodEffects, + effect, + ...processCreateParams(params) + }); +}; +ZodEffects.createWithPreprocess = (preprocess2, schema, params) => { + return new ZodEffects({ + schema, + effect: { type: "preprocess", transform: preprocess2 }, + typeName: ZodFirstPartyTypeKind.ZodEffects, + ...processCreateParams(params) + }); +}; +var ZodOptional = class extends ZodType { + _parse(input) { + const parsedType2 = this._getType(input); + if (parsedType2 === ZodParsedType.undefined) { + return OK(void 0); + } + return this._def.innerType._parse(input); + } + unwrap() { + return this._def.innerType; + } +}; +ZodOptional.create = (type, params) => { + return new ZodOptional({ + innerType: type, + typeName: ZodFirstPartyTypeKind.ZodOptional, + ...processCreateParams(params) + }); +}; +var ZodNullable = class extends ZodType { + _parse(input) { + const parsedType2 = this._getType(input); + if (parsedType2 === ZodParsedType.null) { + return OK(null); + } + return this._def.innerType._parse(input); + } + unwrap() { + return this._def.innerType; + } +}; +ZodNullable.create = (type, params) => { + return new ZodNullable({ + innerType: type, + typeName: ZodFirstPartyTypeKind.ZodNullable, + ...processCreateParams(params) + }); +}; +var ZodDefault = class extends ZodType { + _parse(input) { + const { ctx } = this._processInputParams(input); + let data = ctx.data; + if (ctx.parsedType === ZodParsedType.undefined) { + data = this._def.defaultValue(); + } + return this._def.innerType._parse({ + data, + path: ctx.path, + parent: ctx + }); + } + removeDefault() { + return this._def.innerType; + } +}; +ZodDefault.create = (type, params) => { + return new ZodDefault({ + innerType: type, + typeName: ZodFirstPartyTypeKind.ZodDefault, + defaultValue: typeof params.default === "function" ? params.default : () => params.default, + ...processCreateParams(params) + }); +}; +var ZodCatch = class extends ZodType { + _parse(input) { + const { ctx } = this._processInputParams(input); + const newCtx = { + ...ctx, + common: { + ...ctx.common, + issues: [] + } + }; + const result = this._def.innerType._parse({ + data: newCtx.data, + path: newCtx.path, + parent: { + ...newCtx + } + }); + if (isAsync(result)) { + return result.then((result2) => { + return { + status: "valid", + value: result2.status === "valid" ? result2.value : this._def.catchValue({ + get error() { + return new ZodError(newCtx.common.issues); + }, + input: newCtx.data + }) + }; + }); + } else { + return { + status: "valid", + value: result.status === "valid" ? result.value : this._def.catchValue({ + get error() { + return new ZodError(newCtx.common.issues); + }, + input: newCtx.data + }) + }; + } + } + removeCatch() { + return this._def.innerType; + } +}; +ZodCatch.create = (type, params) => { + return new ZodCatch({ + innerType: type, + typeName: ZodFirstPartyTypeKind.ZodCatch, + catchValue: typeof params.catch === "function" ? params.catch : () => params.catch, + ...processCreateParams(params) + }); +}; +var ZodNaN = class extends ZodType { + _parse(input) { + const parsedType2 = this._getType(input); + if (parsedType2 !== ZodParsedType.nan) { + const ctx = this._getOrReturnCtx(input); + addIssueToContext(ctx, { + code: ZodIssueCode.invalid_type, + expected: ZodParsedType.nan, + received: ctx.parsedType + }); + return INVALID; + } + return { status: "valid", value: input.data }; + } +}; +ZodNaN.create = (params) => { + return new ZodNaN({ + typeName: ZodFirstPartyTypeKind.ZodNaN, + ...processCreateParams(params) + }); +}; +var BRAND = /* @__PURE__ */ Symbol("zod_brand"); +var ZodBranded = class extends ZodType { + _parse(input) { + const { ctx } = this._processInputParams(input); + const data = ctx.data; + return this._def.type._parse({ + data, + path: ctx.path, + parent: ctx + }); + } + unwrap() { + return this._def.type; + } +}; +var ZodPipeline = class _ZodPipeline extends ZodType { + _parse(input) { + const { status, ctx } = this._processInputParams(input); + if (ctx.common.async) { + const handleAsync = async () => { + const inResult = await this._def.in._parseAsync({ + data: ctx.data, + path: ctx.path, + parent: ctx + }); + if (inResult.status === "aborted") + return INVALID; + if (inResult.status === "dirty") { + status.dirty(); + return DIRTY(inResult.value); + } else { + return this._def.out._parseAsync({ + data: inResult.value, + path: ctx.path, + parent: ctx + }); + } + }; + return handleAsync(); + } else { + const inResult = this._def.in._parseSync({ + data: ctx.data, + path: ctx.path, + parent: ctx + }); + if (inResult.status === "aborted") + return INVALID; + if (inResult.status === "dirty") { + status.dirty(); + return { + status: "dirty", + value: inResult.value + }; + } else { + return this._def.out._parseSync({ + data: inResult.value, + path: ctx.path, + parent: ctx + }); + } + } + } + static create(a, b) { + return new _ZodPipeline({ + in: a, + out: b, + typeName: ZodFirstPartyTypeKind.ZodPipeline + }); + } +}; +var ZodReadonly = class extends ZodType { + _parse(input) { + const result = this._def.innerType._parse(input); + const freeze = (data) => { + if (isValid(data)) { + data.value = Object.freeze(data.value); + } + return data; + }; + return isAsync(result) ? result.then((data) => freeze(data)) : freeze(result); + } + unwrap() { + return this._def.innerType; + } +}; +ZodReadonly.create = (type, params) => { + return new ZodReadonly({ + innerType: type, + typeName: ZodFirstPartyTypeKind.ZodReadonly, + ...processCreateParams(params) + }); +}; +function cleanParams(params, data) { + const p = typeof params === "function" ? params(data) : typeof params === "string" ? { message: params } : params; + const p2 = typeof p === "string" ? { message: p } : p; + return p2; +} +function custom2(check2, _params = {}, fatal) { + if (check2) + return ZodAny.create().superRefine((data, ctx) => { + const r = check2(data); + if (r instanceof Promise) { + return r.then((r2) => { + if (!r2) { + const params = cleanParams(_params, data); + const _fatal = params.fatal ?? fatal ?? true; + ctx.addIssue({ code: "custom", ...params, fatal: _fatal }); + } + }); + } + if (!r) { + const params = cleanParams(_params, data); + const _fatal = params.fatal ?? fatal ?? true; + ctx.addIssue({ code: "custom", ...params, fatal: _fatal }); + } + return; + }); + return ZodAny.create(); +} +var late = { + object: ZodObject.lazycreate +}; +var ZodFirstPartyTypeKind; +(function(ZodFirstPartyTypeKind2) { + ZodFirstPartyTypeKind2["ZodString"] = "ZodString"; + ZodFirstPartyTypeKind2["ZodNumber"] = "ZodNumber"; + ZodFirstPartyTypeKind2["ZodNaN"] = "ZodNaN"; + ZodFirstPartyTypeKind2["ZodBigInt"] = "ZodBigInt"; + ZodFirstPartyTypeKind2["ZodBoolean"] = "ZodBoolean"; + ZodFirstPartyTypeKind2["ZodDate"] = "ZodDate"; + ZodFirstPartyTypeKind2["ZodSymbol"] = "ZodSymbol"; + ZodFirstPartyTypeKind2["ZodUndefined"] = "ZodUndefined"; + ZodFirstPartyTypeKind2["ZodNull"] = "ZodNull"; + ZodFirstPartyTypeKind2["ZodAny"] = "ZodAny"; + ZodFirstPartyTypeKind2["ZodUnknown"] = "ZodUnknown"; + ZodFirstPartyTypeKind2["ZodNever"] = "ZodNever"; + ZodFirstPartyTypeKind2["ZodVoid"] = "ZodVoid"; + ZodFirstPartyTypeKind2["ZodArray"] = "ZodArray"; + ZodFirstPartyTypeKind2["ZodObject"] = "ZodObject"; + ZodFirstPartyTypeKind2["ZodUnion"] = "ZodUnion"; + ZodFirstPartyTypeKind2["ZodDiscriminatedUnion"] = "ZodDiscriminatedUnion"; + ZodFirstPartyTypeKind2["ZodIntersection"] = "ZodIntersection"; + ZodFirstPartyTypeKind2["ZodTuple"] = "ZodTuple"; + ZodFirstPartyTypeKind2["ZodRecord"] = "ZodRecord"; + ZodFirstPartyTypeKind2["ZodMap"] = "ZodMap"; + ZodFirstPartyTypeKind2["ZodSet"] = "ZodSet"; + ZodFirstPartyTypeKind2["ZodFunction"] = "ZodFunction"; + ZodFirstPartyTypeKind2["ZodLazy"] = "ZodLazy"; + ZodFirstPartyTypeKind2["ZodLiteral"] = "ZodLiteral"; + ZodFirstPartyTypeKind2["ZodEnum"] = "ZodEnum"; + ZodFirstPartyTypeKind2["ZodEffects"] = "ZodEffects"; + ZodFirstPartyTypeKind2["ZodNativeEnum"] = "ZodNativeEnum"; + ZodFirstPartyTypeKind2["ZodOptional"] = "ZodOptional"; + ZodFirstPartyTypeKind2["ZodNullable"] = "ZodNullable"; + ZodFirstPartyTypeKind2["ZodDefault"] = "ZodDefault"; + ZodFirstPartyTypeKind2["ZodCatch"] = "ZodCatch"; + ZodFirstPartyTypeKind2["ZodPromise"] = "ZodPromise"; + ZodFirstPartyTypeKind2["ZodBranded"] = "ZodBranded"; + ZodFirstPartyTypeKind2["ZodPipeline"] = "ZodPipeline"; + ZodFirstPartyTypeKind2["ZodReadonly"] = "ZodReadonly"; +})(ZodFirstPartyTypeKind || (ZodFirstPartyTypeKind = {})); +var instanceOfType = (cls, params = { + message: `Input not instance of ${cls.name}` +}) => custom2((data) => data instanceof cls, params); +var stringType = ZodString.create; +var numberType = ZodNumber.create; +var nanType = ZodNaN.create; +var bigIntType = ZodBigInt.create; +var booleanType = ZodBoolean.create; +var dateType = ZodDate.create; +var symbolType = ZodSymbol.create; +var undefinedType = ZodUndefined.create; +var nullType = ZodNull.create; +var anyType = ZodAny.create; +var unknownType = ZodUnknown.create; +var neverType = ZodNever.create; +var voidType = ZodVoid.create; +var arrayType = ZodArray.create; +var objectType = ZodObject.create; +var strictObjectType = ZodObject.strictCreate; +var unionType = ZodUnion.create; +var discriminatedUnionType = ZodDiscriminatedUnion.create; +var intersectionType = ZodIntersection.create; +var tupleType = ZodTuple.create; +var recordType = ZodRecord.create; +var mapType = ZodMap.create; +var setType = ZodSet.create; +var functionType = ZodFunction.create; +var lazyType = ZodLazy.create; +var literalType = ZodLiteral.create; +var enumType = ZodEnum.create; +var nativeEnumType = ZodNativeEnum.create; +var promiseType = ZodPromise.create; +var effectsType = ZodEffects.create; +var optionalType = ZodOptional.create; +var nullableType = ZodNullable.create; +var preprocessType = ZodEffects.createWithPreprocess; +var pipelineType = ZodPipeline.create; +var ostring = () => stringType().optional(); +var onumber = () => numberType().optional(); +var oboolean = () => booleanType().optional(); +var coerce = { + string: ((arg) => ZodString.create({ ...arg, coerce: true })), + number: ((arg) => ZodNumber.create({ ...arg, coerce: true })), + boolean: ((arg) => ZodBoolean.create({ + ...arg, + coerce: true + })), + bigint: ((arg) => ZodBigInt.create({ ...arg, coerce: true })), + date: ((arg) => ZodDate.create({ ...arg, coerce: true })) +}; +var NEVER = INVALID; + +// node_modules/zod/v4/core/core.js +var NEVER2 = Object.freeze({ + status: "aborted" +}); +// @__NO_SIDE_EFFECTS__ +function $constructor(name5, initializer3, params) { + function init(inst, def) { + var _a; + Object.defineProperty(inst, "_zod", { + value: inst._zod ?? {}, + enumerable: false + }); + (_a = inst._zod).traits ?? (_a.traits = /* @__PURE__ */ new Set()); + inst._zod.traits.add(name5); + initializer3(inst, def); + for (const k in _.prototype) { + if (!(k in inst)) + Object.defineProperty(inst, k, { value: _.prototype[k].bind(inst) }); + } + inst._zod.constr = _; + inst._zod.def = def; + } + const Parent = params?.Parent ?? Object; + class Definition extends Parent { + } + Object.defineProperty(Definition, "name", { value: name5 }); + function _(def) { + var _a; + const inst = params?.Parent ? new Definition() : this; + init(inst, def); + (_a = inst._zod).deferred ?? (_a.deferred = []); + for (const fn of inst._zod.deferred) { + fn(); + } + return inst; + } + Object.defineProperty(_, "init", { value: init }); + Object.defineProperty(_, Symbol.hasInstance, { + value: (inst) => { + if (params?.Parent && inst instanceof params.Parent) + return true; + return inst?._zod?.traits?.has(name5); + } + }); + Object.defineProperty(_, "name", { value: name5 }); + return _; +} +var $ZodAsyncError = class extends Error { + constructor() { + super(`Encountered Promise during synchronous parse. Use .parseAsync() instead.`); + } +}; +var globalConfig = {}; +function config(newConfig) { + if (newConfig) + Object.assign(globalConfig, newConfig); + return globalConfig; +} + +// node_modules/zod/v4/core/util.js +var util_exports = {}; +__export(util_exports, { + BIGINT_FORMAT_RANGES: () => BIGINT_FORMAT_RANGES, + Class: () => Class, + NUMBER_FORMAT_RANGES: () => NUMBER_FORMAT_RANGES, + aborted: () => aborted, + allowsEval: () => allowsEval, + assert: () => assert, + assertEqual: () => assertEqual, + assertIs: () => assertIs, + assertNever: () => assertNever, + assertNotEqual: () => assertNotEqual, + assignProp: () => assignProp, + cached: () => cached, + captureStackTrace: () => captureStackTrace, + cleanEnum: () => cleanEnum, + cleanRegex: () => cleanRegex, + clone: () => clone, + createTransparentProxy: () => createTransparentProxy, + defineLazy: () => defineLazy, + esc: () => esc, + escapeRegex: () => escapeRegex, + extend: () => extend2, + finalizeIssue: () => finalizeIssue, + floatSafeRemainder: () => floatSafeRemainder2, + getElementAtPath: () => getElementAtPath, + getEnumValues: () => getEnumValues, + getLengthableOrigin: () => getLengthableOrigin, + getParsedType: () => getParsedType2, + getSizableOrigin: () => getSizableOrigin, + isObject: () => isObject2, + isPlainObject: () => isPlainObject, + issue: () => issue, + joinValues: () => joinValues, + jsonStringifyReplacer: () => jsonStringifyReplacer, + merge: () => merge, + normalizeParams: () => normalizeParams, + nullish: () => nullish, + numKeys: () => numKeys, + omit: () => omit, + optionalKeys: () => optionalKeys, + partial: () => partial, + pick: () => pick, + prefixIssues: () => prefixIssues, + primitiveTypes: () => primitiveTypes, + promiseAllObject: () => promiseAllObject, + propertyKeyTypes: () => propertyKeyTypes, + randomString: () => randomString, + required: () => required, + stringifyPrimitive: () => stringifyPrimitive, + unwrapMessage: () => unwrapMessage +}); +function assertEqual(val) { + return val; +} +function assertNotEqual(val) { + return val; +} +function assertIs(_arg) { +} +function assertNever(_x) { + throw new Error(); +} +function assert(_) { +} +function getEnumValues(entries) { + const numericValues = Object.values(entries).filter((v) => typeof v === "number"); + const values = Object.entries(entries).filter(([k, _]) => numericValues.indexOf(+k) === -1).map(([_, v]) => v); + return values; +} +function joinValues(array2, separator = "|") { + return array2.map((val) => stringifyPrimitive(val)).join(separator); +} +function jsonStringifyReplacer(_, value) { + if (typeof value === "bigint") + return value.toString(); + return value; +} +function cached(getter) { + const set = false; + return { + get value() { + if (!set) { + const value = getter(); + Object.defineProperty(this, "value", { value }); + return value; + } + throw new Error("cached value already set"); + } + }; +} +function nullish(input) { + return input === null || input === void 0; +} +function cleanRegex(source) { + const start = source.startsWith("^") ? 1 : 0; + const end = source.endsWith("$") ? source.length - 1 : source.length; + return source.slice(start, end); +} +function floatSafeRemainder2(val, step) { + const valDecCount = (val.toString().split(".")[1] || "").length; + const stepDecCount = (step.toString().split(".")[1] || "").length; + const decCount = valDecCount > stepDecCount ? valDecCount : stepDecCount; + const valInt = Number.parseInt(val.toFixed(decCount).replace(".", "")); + const stepInt = Number.parseInt(step.toFixed(decCount).replace(".", "")); + return valInt % stepInt / 10 ** decCount; +} +function defineLazy(object3, key, getter) { + const set = false; + Object.defineProperty(object3, key, { + get() { + if (!set) { + const value = getter(); + object3[key] = value; + return value; + } + throw new Error("cached value already set"); + }, + set(v) { + Object.defineProperty(object3, key, { + value: v + // configurable: true, + }); + }, + configurable: true + }); +} +function assignProp(target, prop, value) { + Object.defineProperty(target, prop, { + value, + writable: true, + enumerable: true, + configurable: true + }); +} +function getElementAtPath(obj, path9) { + if (!path9) + return obj; + return path9.reduce((acc, key) => acc?.[key], obj); +} +function promiseAllObject(promisesObj) { + const keys = Object.keys(promisesObj); + const promises = keys.map((key) => promisesObj[key]); + return Promise.all(promises).then((results) => { + const resolvedObj = {}; + for (let i = 0; i < keys.length; i++) { + resolvedObj[keys[i]] = results[i]; + } + return resolvedObj; + }); +} +function randomString(length = 10) { + const chars = "abcdefghijklmnopqrstuvwxyz"; + let str = ""; + for (let i = 0; i < length; i++) { + str += chars[Math.floor(Math.random() * chars.length)]; + } + return str; +} +function esc(str) { + return JSON.stringify(str); +} +var captureStackTrace = Error.captureStackTrace ? Error.captureStackTrace : (..._args) => { +}; +function isObject2(data) { + return typeof data === "object" && data !== null && !Array.isArray(data); +} +var allowsEval = cached(() => { + if (typeof navigator !== "undefined" && navigator?.userAgent?.includes("Cloudflare")) { + return false; + } + try { + const F = Function; + new F(""); + return true; + } catch (_) { + return false; + } +}); +function isPlainObject(o) { + if (isObject2(o) === false) + return false; + const ctor = o.constructor; + if (ctor === void 0) + return true; + const prot = ctor.prototype; + if (isObject2(prot) === false) + return false; + if (Object.prototype.hasOwnProperty.call(prot, "isPrototypeOf") === false) { + return false; + } + return true; +} +function numKeys(data) { + let keyCount = 0; + for (const key in data) { + if (Object.prototype.hasOwnProperty.call(data, key)) { + keyCount++; + } + } + return keyCount; +} +var getParsedType2 = (data) => { + const t = typeof data; + switch (t) { + case "undefined": + return "undefined"; + case "string": + return "string"; + case "number": + return Number.isNaN(data) ? "nan" : "number"; + case "boolean": + return "boolean"; + case "function": + return "function"; + case "bigint": + return "bigint"; + case "symbol": + return "symbol"; + case "object": + if (Array.isArray(data)) { + return "array"; + } + if (data === null) { + return "null"; + } + if (data.then && typeof data.then === "function" && data.catch && typeof data.catch === "function") { + return "promise"; + } + if (typeof Map !== "undefined" && data instanceof Map) { + return "map"; + } + if (typeof Set !== "undefined" && data instanceof Set) { + return "set"; + } + if (typeof Date !== "undefined" && data instanceof Date) { + return "date"; + } + if (typeof File !== "undefined" && data instanceof File) { + return "file"; + } + return "object"; + default: + throw new Error(`Unknown data type: ${t}`); + } +}; +var propertyKeyTypes = /* @__PURE__ */ new Set(["string", "number", "symbol"]); +var primitiveTypes = /* @__PURE__ */ new Set(["string", "number", "bigint", "boolean", "symbol", "undefined"]); +function escapeRegex(str) { + return str.replace(/[.*+?^${}()|[\]\\]/g, "\\$&"); +} +function clone(inst, def, params) { + const cl = new inst._zod.constr(def ?? inst._zod.def); + if (!def || params?.parent) + cl._zod.parent = inst; + return cl; +} +function normalizeParams(_params) { + const params = _params; + if (!params) + return {}; + if (typeof params === "string") + return { error: () => params }; + if (params?.message !== void 0) { + if (params?.error !== void 0) + throw new Error("Cannot specify both `message` and `error` params"); + params.error = params.message; + } + delete params.message; + if (typeof params.error === "string") + return { ...params, error: () => params.error }; + return params; +} +function createTransparentProxy(getter) { + let target; + return new Proxy({}, { + get(_, prop, receiver) { + target ?? (target = getter()); + return Reflect.get(target, prop, receiver); + }, + set(_, prop, value, receiver) { + target ?? (target = getter()); + return Reflect.set(target, prop, value, receiver); + }, + has(_, prop) { + target ?? (target = getter()); + return Reflect.has(target, prop); + }, + deleteProperty(_, prop) { + target ?? (target = getter()); + return Reflect.deleteProperty(target, prop); + }, + ownKeys(_) { + target ?? (target = getter()); + return Reflect.ownKeys(target); + }, + getOwnPropertyDescriptor(_, prop) { + target ?? (target = getter()); + return Reflect.getOwnPropertyDescriptor(target, prop); + }, + defineProperty(_, prop, descriptor) { + target ?? (target = getter()); + return Reflect.defineProperty(target, prop, descriptor); + } + }); +} +function stringifyPrimitive(value) { + if (typeof value === "bigint") + return value.toString() + "n"; + if (typeof value === "string") + return `"${value}"`; + return `${value}`; +} +function optionalKeys(shape) { + return Object.keys(shape).filter((k) => { + return shape[k]._zod.optin === "optional" && shape[k]._zod.optout === "optional"; + }); +} +var NUMBER_FORMAT_RANGES = { + safeint: [Number.MIN_SAFE_INTEGER, Number.MAX_SAFE_INTEGER], + int32: [-2147483648, 2147483647], + uint32: [0, 4294967295], + float32: [-34028234663852886e22, 34028234663852886e22], + float64: [-Number.MAX_VALUE, Number.MAX_VALUE] +}; +var BIGINT_FORMAT_RANGES = { + int64: [/* @__PURE__ */ BigInt("-9223372036854775808"), /* @__PURE__ */ BigInt("9223372036854775807")], + uint64: [/* @__PURE__ */ BigInt(0), /* @__PURE__ */ BigInt("18446744073709551615")] +}; +function pick(schema, mask) { + const newShape = {}; + const currDef = schema._zod.def; + for (const key in mask) { + if (!(key in currDef.shape)) { + throw new Error(`Unrecognized key: "${key}"`); + } + if (!mask[key]) + continue; + newShape[key] = currDef.shape[key]; + } + return clone(schema, { + ...schema._zod.def, + shape: newShape, + checks: [] + }); +} +function omit(schema, mask) { + const newShape = { ...schema._zod.def.shape }; + const currDef = schema._zod.def; + for (const key in mask) { + if (!(key in currDef.shape)) { + throw new Error(`Unrecognized key: "${key}"`); + } + if (!mask[key]) + continue; + delete newShape[key]; + } + return clone(schema, { + ...schema._zod.def, + shape: newShape, + checks: [] + }); +} +function extend2(schema, shape) { + if (!isPlainObject(shape)) { + throw new Error("Invalid input to extend: expected a plain object"); + } + const def = { + ...schema._zod.def, + get shape() { + const _shape = { ...schema._zod.def.shape, ...shape }; + assignProp(this, "shape", _shape); + return _shape; + }, + checks: [] + // delete existing checks + }; + return clone(schema, def); +} +function merge(a, b) { + return clone(a, { + ...a._zod.def, + get shape() { + const _shape = { ...a._zod.def.shape, ...b._zod.def.shape }; + assignProp(this, "shape", _shape); + return _shape; + }, + catchall: b._zod.def.catchall, + checks: [] + // delete existing checks + }); +} +function partial(Class2, schema, mask) { + const oldShape = schema._zod.def.shape; + const shape = { ...oldShape }; + if (mask) { + for (const key in mask) { + if (!(key in oldShape)) { + throw new Error(`Unrecognized key: "${key}"`); + } + if (!mask[key]) + continue; + shape[key] = Class2 ? new Class2({ + type: "optional", + innerType: oldShape[key] + }) : oldShape[key]; + } + } else { + for (const key in oldShape) { + shape[key] = Class2 ? new Class2({ + type: "optional", + innerType: oldShape[key] + }) : oldShape[key]; + } + } + return clone(schema, { + ...schema._zod.def, + shape, + checks: [] + }); +} +function required(Class2, schema, mask) { + const oldShape = schema._zod.def.shape; + const shape = { ...oldShape }; + if (mask) { + for (const key in mask) { + if (!(key in shape)) { + throw new Error(`Unrecognized key: "${key}"`); + } + if (!mask[key]) + continue; + shape[key] = new Class2({ + type: "nonoptional", + innerType: oldShape[key] + }); + } + } else { + for (const key in oldShape) { + shape[key] = new Class2({ + type: "nonoptional", + innerType: oldShape[key] + }); + } + } + return clone(schema, { + ...schema._zod.def, + shape, + // optional: [], + checks: [] + }); +} +function aborted(x, startIndex = 0) { + for (let i = startIndex; i < x.issues.length; i++) { + if (x.issues[i]?.continue !== true) + return true; + } + return false; +} +function prefixIssues(path9, issues) { + return issues.map((iss) => { + var _a; + (_a = iss).path ?? (_a.path = []); + iss.path.unshift(path9); + return iss; + }); +} +function unwrapMessage(message) { + return typeof message === "string" ? message : message?.message; +} +function finalizeIssue(iss, ctx, config2) { + const full = { ...iss, path: iss.path ?? [] }; + if (!iss.message) { + const message = unwrapMessage(iss.inst?._zod.def?.error?.(iss)) ?? unwrapMessage(ctx?.error?.(iss)) ?? unwrapMessage(config2.customError?.(iss)) ?? unwrapMessage(config2.localeError?.(iss)) ?? "Invalid input"; + full.message = message; + } + delete full.inst; + delete full.continue; + if (!ctx?.reportInput) { + delete full.input; + } + return full; +} +function getSizableOrigin(input) { + if (input instanceof Set) + return "set"; + if (input instanceof Map) + return "map"; + if (input instanceof File) + return "file"; + return "unknown"; +} +function getLengthableOrigin(input) { + if (Array.isArray(input)) + return "array"; + if (typeof input === "string") + return "string"; + return "unknown"; +} +function issue(...args) { + const [iss, input, inst] = args; + if (typeof iss === "string") { + return { + message: iss, + code: "custom", + input, + inst + }; + } + return { ...iss }; +} +function cleanEnum(obj) { + return Object.entries(obj).filter(([k, _]) => { + return Number.isNaN(Number.parseInt(k, 10)); + }).map((el) => el[1]); +} +var Class = class { + constructor(..._args) { + } +}; + +// node_modules/zod/v4/core/errors.js +var initializer = (inst, def) => { + inst.name = "$ZodError"; + Object.defineProperty(inst, "_zod", { + value: inst._zod, + enumerable: false + }); + Object.defineProperty(inst, "issues", { + value: def, + enumerable: false + }); + Object.defineProperty(inst, "message", { + get() { + return JSON.stringify(def, jsonStringifyReplacer, 2); + }, + enumerable: true + // configurable: false, + }); + Object.defineProperty(inst, "toString", { + value: () => inst.message, + enumerable: false + }); +}; +var $ZodError = $constructor("$ZodError", initializer); +var $ZodRealError = $constructor("$ZodError", initializer, { Parent: Error }); +function flattenError(error2, mapper = (issue2) => issue2.message) { + const fieldErrors = {}; + const formErrors = []; + for (const sub of error2.issues) { + if (sub.path.length > 0) { + fieldErrors[sub.path[0]] = fieldErrors[sub.path[0]] || []; + fieldErrors[sub.path[0]].push(mapper(sub)); + } else { + formErrors.push(mapper(sub)); + } + } + return { formErrors, fieldErrors }; +} +function formatError2(error2, _mapper) { + const mapper = _mapper || function(issue2) { + return issue2.message; + }; + const fieldErrors = { _errors: [] }; + const processError = (error3) => { + for (const issue2 of error3.issues) { + if (issue2.code === "invalid_union" && issue2.errors.length) { + issue2.errors.map((issues) => processError({ issues })); + } else if (issue2.code === "invalid_key") { + processError({ issues: issue2.issues }); + } else if (issue2.code === "invalid_element") { + processError({ issues: issue2.issues }); + } else if (issue2.path.length === 0) { + fieldErrors._errors.push(mapper(issue2)); + } else { + let curr = fieldErrors; + let i = 0; + while (i < issue2.path.length) { + const el = issue2.path[i]; + const terminal = i === issue2.path.length - 1; + if (!terminal) { + curr[el] = curr[el] || { _errors: [] }; + } else { + curr[el] = curr[el] || { _errors: [] }; + curr[el]._errors.push(mapper(issue2)); + } + curr = curr[el]; + i++; + } + } + } + }; + processError(error2); + return fieldErrors; +} + +// node_modules/zod/v4/core/parse.js +var _parse = (_Err) => (schema, value, _ctx, _params) => { + const ctx = _ctx ? Object.assign(_ctx, { async: false }) : { async: false }; + const result = schema._zod.run({ value, issues: [] }, ctx); + if (result instanceof Promise) { + throw new $ZodAsyncError(); + } + if (result.issues.length) { + const e = new (_params?.Err ?? _Err)(result.issues.map((iss) => finalizeIssue(iss, ctx, config()))); + captureStackTrace(e, _params?.callee); + throw e; + } + return result.value; +}; +var parse2 = /* @__PURE__ */ _parse($ZodRealError); +var _parseAsync = (_Err) => async (schema, value, _ctx, params) => { + const ctx = _ctx ? Object.assign(_ctx, { async: true }) : { async: true }; + let result = schema._zod.run({ value, issues: [] }, ctx); + if (result instanceof Promise) + result = await result; + if (result.issues.length) { + const e = new (params?.Err ?? _Err)(result.issues.map((iss) => finalizeIssue(iss, ctx, config()))); + captureStackTrace(e, params?.callee); + throw e; + } + return result.value; +}; +var parseAsync = /* @__PURE__ */ _parseAsync($ZodRealError); +var _safeParse = (_Err) => (schema, value, _ctx) => { + const ctx = _ctx ? { ..._ctx, async: false } : { async: false }; + const result = schema._zod.run({ value, issues: [] }, ctx); + if (result instanceof Promise) { + throw new $ZodAsyncError(); + } + return result.issues.length ? { + success: false, + error: new (_Err ?? $ZodError)(result.issues.map((iss) => finalizeIssue(iss, ctx, config()))) + } : { success: true, data: result.value }; +}; +var safeParse = /* @__PURE__ */ _safeParse($ZodRealError); +var _safeParseAsync = (_Err) => async (schema, value, _ctx) => { + const ctx = _ctx ? Object.assign(_ctx, { async: true }) : { async: true }; + let result = schema._zod.run({ value, issues: [] }, ctx); + if (result instanceof Promise) + result = await result; + return result.issues.length ? { + success: false, + error: new _Err(result.issues.map((iss) => finalizeIssue(iss, ctx, config()))) + } : { success: true, data: result.value }; +}; +var safeParseAsync = /* @__PURE__ */ _safeParseAsync($ZodRealError); + +// node_modules/zod/v4/core/regexes.js +var cuid = /^[cC][^\s-]{8,}$/; +var cuid2 = /^[0-9a-z]+$/; +var ulid = /^[0-9A-HJKMNP-TV-Za-hjkmnp-tv-z]{26}$/; +var xid = /^[0-9a-vA-V]{20}$/; +var ksuid = /^[A-Za-z0-9]{27}$/; +var nanoid = /^[a-zA-Z0-9_-]{21}$/; +var duration = /^P(?:(\d+W)|(?!.*W)(?=\d|T\d)(\d+Y)?(\d+M)?(\d+D)?(T(?=\d)(\d+H)?(\d+M)?(\d+([.,]\d+)?S)?)?)$/; +var guid = /^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$/; +var uuid = (version8) => { + if (!version8) + return /^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000)$/; + return new RegExp(`^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-${version8}[0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12})$`); +}; +var email = /^(?!\.)(?!.*\.\.)([A-Za-z0-9_'+\-\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\-]*\.)+[A-Za-z]{2,}$/; +var _emoji = `^(\\p{Extended_Pictographic}|\\p{Emoji_Component})+$`; +function emoji() { + return new RegExp(_emoji, "u"); +} +var ipv4 = /^(?:(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\.){3}(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])$/; +var ipv6 = /^(([0-9a-fA-F]{1,4}:){7}[0-9a-fA-F]{1,4}|::|([0-9a-fA-F]{1,4})?::([0-9a-fA-F]{1,4}:?){0,6})$/; +var cidrv4 = /^((25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\.){3}(25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\/([0-9]|[1-2][0-9]|3[0-2])$/; +var cidrv6 = /^(([0-9a-fA-F]{1,4}:){7}[0-9a-fA-F]{1,4}|::|([0-9a-fA-F]{1,4})?::([0-9a-fA-F]{1,4}:?){0,6})\/(12[0-8]|1[01][0-9]|[1-9]?[0-9])$/; +var base64 = /^$|^(?:[0-9a-zA-Z+/]{4})*(?:(?:[0-9a-zA-Z+/]{2}==)|(?:[0-9a-zA-Z+/]{3}=))?$/; +var base64url = /^[A-Za-z0-9_-]*$/; +var hostname = /^([a-zA-Z0-9-]+\.)*[a-zA-Z0-9-]+$/; +var e164 = /^\+(?:[0-9]){6,14}[0-9]$/; +var dateSource = `(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))`; +var date = /* @__PURE__ */ new RegExp(`^${dateSource}$`); +function timeSource(args) { + const hhmm = `(?:[01]\\d|2[0-3]):[0-5]\\d`; + const regex = typeof args.precision === "number" ? args.precision === -1 ? `${hhmm}` : args.precision === 0 ? `${hhmm}:[0-5]\\d` : `${hhmm}:[0-5]\\d\\.\\d{${args.precision}}` : `${hhmm}(?::[0-5]\\d(?:\\.\\d+)?)?`; + return regex; +} +function time(args) { + return new RegExp(`^${timeSource(args)}$`); +} +function datetime(args) { + const time3 = timeSource({ precision: args.precision }); + const opts = ["Z"]; + if (args.local) + opts.push(""); + if (args.offset) + opts.push(`([+-]\\d{2}:\\d{2})`); + const timeRegex2 = `${time3}(?:${opts.join("|")})`; + return new RegExp(`^${dateSource}T(?:${timeRegex2})$`); +} +var string = (params) => { + const regex = params ? `[\\s\\S]{${params?.minimum ?? 0},${params?.maximum ?? ""}}` : `[\\s\\S]*`; + return new RegExp(`^${regex}$`); +}; +var bigint = /^\d+n?$/; +var integer = /^\d+$/; +var number = /^-?\d+(?:\.\d+)?/i; +var boolean = /true|false/i; +var _null = /null/i; +var lowercase = /^[^A-Z]*$/; +var uppercase = /^[^a-z]*$/; + +// node_modules/zod/v4/core/checks.js +var $ZodCheck = /* @__PURE__ */ $constructor("$ZodCheck", (inst, def) => { + var _a; + inst._zod ?? (inst._zod = {}); + inst._zod.def = def; + (_a = inst._zod).onattach ?? (_a.onattach = []); +}); +var numericOriginMap = { + number: "number", + bigint: "bigint", + object: "date" +}; +var $ZodCheckLessThan = /* @__PURE__ */ $constructor("$ZodCheckLessThan", (inst, def) => { + $ZodCheck.init(inst, def); + const origin = numericOriginMap[typeof def.value]; + inst._zod.onattach.push((inst2) => { + const bag = inst2._zod.bag; + const curr = (def.inclusive ? bag.maximum : bag.exclusiveMaximum) ?? Number.POSITIVE_INFINITY; + if (def.value < curr) { + if (def.inclusive) + bag.maximum = def.value; + else + bag.exclusiveMaximum = def.value; + } + }); + inst._zod.check = (payload) => { + if (def.inclusive ? payload.value <= def.value : payload.value < def.value) { + return; + } + payload.issues.push({ + origin, + code: "too_big", + maximum: def.value, + input: payload.value, + inclusive: def.inclusive, + inst, + continue: !def.abort + }); + }; +}); +var $ZodCheckGreaterThan = /* @__PURE__ */ $constructor("$ZodCheckGreaterThan", (inst, def) => { + $ZodCheck.init(inst, def); + const origin = numericOriginMap[typeof def.value]; + inst._zod.onattach.push((inst2) => { + const bag = inst2._zod.bag; + const curr = (def.inclusive ? bag.minimum : bag.exclusiveMinimum) ?? Number.NEGATIVE_INFINITY; + if (def.value > curr) { + if (def.inclusive) + bag.minimum = def.value; + else + bag.exclusiveMinimum = def.value; + } + }); + inst._zod.check = (payload) => { + if (def.inclusive ? payload.value >= def.value : payload.value > def.value) { + return; + } + payload.issues.push({ + origin, + code: "too_small", + minimum: def.value, + input: payload.value, + inclusive: def.inclusive, + inst, + continue: !def.abort + }); + }; +}); +var $ZodCheckMultipleOf = /* @__PURE__ */ $constructor("$ZodCheckMultipleOf", (inst, def) => { + $ZodCheck.init(inst, def); + inst._zod.onattach.push((inst2) => { + var _a; + (_a = inst2._zod.bag).multipleOf ?? (_a.multipleOf = def.value); + }); + inst._zod.check = (payload) => { + if (typeof payload.value !== typeof def.value) + throw new Error("Cannot mix number and bigint in multiple_of check."); + const isMultiple = typeof payload.value === "bigint" ? payload.value % def.value === BigInt(0) : floatSafeRemainder2(payload.value, def.value) === 0; + if (isMultiple) + return; + payload.issues.push({ + origin: typeof payload.value, + code: "not_multiple_of", + divisor: def.value, + input: payload.value, + inst, + continue: !def.abort + }); + }; +}); +var $ZodCheckNumberFormat = /* @__PURE__ */ $constructor("$ZodCheckNumberFormat", (inst, def) => { + $ZodCheck.init(inst, def); + def.format = def.format || "float64"; + const isInt = def.format?.includes("int"); + const origin = isInt ? "int" : "number"; + const [minimum, maximum] = NUMBER_FORMAT_RANGES[def.format]; + inst._zod.onattach.push((inst2) => { + const bag = inst2._zod.bag; + bag.format = def.format; + bag.minimum = minimum; + bag.maximum = maximum; + if (isInt) + bag.pattern = integer; + }); + inst._zod.check = (payload) => { + const input = payload.value; + if (isInt) { + if (!Number.isInteger(input)) { + payload.issues.push({ + expected: origin, + format: def.format, + code: "invalid_type", + input, + inst + }); + return; + } + if (!Number.isSafeInteger(input)) { + if (input > 0) { + payload.issues.push({ + input, + code: "too_big", + maximum: Number.MAX_SAFE_INTEGER, + note: "Integers must be within the safe integer range.", + inst, + origin, + continue: !def.abort + }); + } else { + payload.issues.push({ + input, + code: "too_small", + minimum: Number.MIN_SAFE_INTEGER, + note: "Integers must be within the safe integer range.", + inst, + origin, + continue: !def.abort + }); + } + return; + } + } + if (input < minimum) { + payload.issues.push({ + origin: "number", + input, + code: "too_small", + minimum, + inclusive: true, + inst, + continue: !def.abort + }); + } + if (input > maximum) { + payload.issues.push({ + origin: "number", + input, + code: "too_big", + maximum, + inst + }); + } + }; +}); +var $ZodCheckMaxLength = /* @__PURE__ */ $constructor("$ZodCheckMaxLength", (inst, def) => { + var _a; + $ZodCheck.init(inst, def); + (_a = inst._zod.def).when ?? (_a.when = (payload) => { + const val = payload.value; + return !nullish(val) && val.length !== void 0; + }); + inst._zod.onattach.push((inst2) => { + const curr = inst2._zod.bag.maximum ?? Number.POSITIVE_INFINITY; + if (def.maximum < curr) + inst2._zod.bag.maximum = def.maximum; + }); + inst._zod.check = (payload) => { + const input = payload.value; + const length = input.length; + if (length <= def.maximum) + return; + const origin = getLengthableOrigin(input); + payload.issues.push({ + origin, + code: "too_big", + maximum: def.maximum, + inclusive: true, + input, + inst, + continue: !def.abort + }); + }; +}); +var $ZodCheckMinLength = /* @__PURE__ */ $constructor("$ZodCheckMinLength", (inst, def) => { + var _a; + $ZodCheck.init(inst, def); + (_a = inst._zod.def).when ?? (_a.when = (payload) => { + const val = payload.value; + return !nullish(val) && val.length !== void 0; + }); + inst._zod.onattach.push((inst2) => { + const curr = inst2._zod.bag.minimum ?? Number.NEGATIVE_INFINITY; + if (def.minimum > curr) + inst2._zod.bag.minimum = def.minimum; + }); + inst._zod.check = (payload) => { + const input = payload.value; + const length = input.length; + if (length >= def.minimum) + return; + const origin = getLengthableOrigin(input); + payload.issues.push({ + origin, + code: "too_small", + minimum: def.minimum, + inclusive: true, + input, + inst, + continue: !def.abort + }); + }; +}); +var $ZodCheckLengthEquals = /* @__PURE__ */ $constructor("$ZodCheckLengthEquals", (inst, def) => { + var _a; + $ZodCheck.init(inst, def); + (_a = inst._zod.def).when ?? (_a.when = (payload) => { + const val = payload.value; + return !nullish(val) && val.length !== void 0; + }); + inst._zod.onattach.push((inst2) => { + const bag = inst2._zod.bag; + bag.minimum = def.length; + bag.maximum = def.length; + bag.length = def.length; + }); + inst._zod.check = (payload) => { + const input = payload.value; + const length = input.length; + if (length === def.length) + return; + const origin = getLengthableOrigin(input); + const tooBig = length > def.length; + payload.issues.push({ + origin, + ...tooBig ? { code: "too_big", maximum: def.length } : { code: "too_small", minimum: def.length }, + inclusive: true, + exact: true, + input: payload.value, + inst, + continue: !def.abort + }); + }; +}); +var $ZodCheckStringFormat = /* @__PURE__ */ $constructor("$ZodCheckStringFormat", (inst, def) => { + var _a, _b; + $ZodCheck.init(inst, def); + inst._zod.onattach.push((inst2) => { + const bag = inst2._zod.bag; + bag.format = def.format; + if (def.pattern) { + bag.patterns ?? (bag.patterns = /* @__PURE__ */ new Set()); + bag.patterns.add(def.pattern); + } + }); + if (def.pattern) + (_a = inst._zod).check ?? (_a.check = (payload) => { + def.pattern.lastIndex = 0; + if (def.pattern.test(payload.value)) + return; + payload.issues.push({ + origin: "string", + code: "invalid_format", + format: def.format, + input: payload.value, + ...def.pattern ? { pattern: def.pattern.toString() } : {}, + inst, + continue: !def.abort + }); + }); + else + (_b = inst._zod).check ?? (_b.check = () => { + }); +}); +var $ZodCheckRegex = /* @__PURE__ */ $constructor("$ZodCheckRegex", (inst, def) => { + $ZodCheckStringFormat.init(inst, def); + inst._zod.check = (payload) => { + def.pattern.lastIndex = 0; + if (def.pattern.test(payload.value)) + return; + payload.issues.push({ + origin: "string", + code: "invalid_format", + format: "regex", + input: payload.value, + pattern: def.pattern.toString(), + inst, + continue: !def.abort + }); + }; +}); +var $ZodCheckLowerCase = /* @__PURE__ */ $constructor("$ZodCheckLowerCase", (inst, def) => { + def.pattern ?? (def.pattern = lowercase); + $ZodCheckStringFormat.init(inst, def); +}); +var $ZodCheckUpperCase = /* @__PURE__ */ $constructor("$ZodCheckUpperCase", (inst, def) => { + def.pattern ?? (def.pattern = uppercase); + $ZodCheckStringFormat.init(inst, def); +}); +var $ZodCheckIncludes = /* @__PURE__ */ $constructor("$ZodCheckIncludes", (inst, def) => { + $ZodCheck.init(inst, def); + const escapedRegex = escapeRegex(def.includes); + const pattern = new RegExp(typeof def.position === "number" ? `^.{${def.position}}${escapedRegex}` : escapedRegex); + def.pattern = pattern; + inst._zod.onattach.push((inst2) => { + const bag = inst2._zod.bag; + bag.patterns ?? (bag.patterns = /* @__PURE__ */ new Set()); + bag.patterns.add(pattern); + }); + inst._zod.check = (payload) => { + if (payload.value.includes(def.includes, def.position)) + return; + payload.issues.push({ + origin: "string", + code: "invalid_format", + format: "includes", + includes: def.includes, + input: payload.value, + inst, + continue: !def.abort + }); + }; +}); +var $ZodCheckStartsWith = /* @__PURE__ */ $constructor("$ZodCheckStartsWith", (inst, def) => { + $ZodCheck.init(inst, def); + const pattern = new RegExp(`^${escapeRegex(def.prefix)}.*`); + def.pattern ?? (def.pattern = pattern); + inst._zod.onattach.push((inst2) => { + const bag = inst2._zod.bag; + bag.patterns ?? (bag.patterns = /* @__PURE__ */ new Set()); + bag.patterns.add(pattern); + }); + inst._zod.check = (payload) => { + if (payload.value.startsWith(def.prefix)) + return; + payload.issues.push({ + origin: "string", + code: "invalid_format", + format: "starts_with", + prefix: def.prefix, + input: payload.value, + inst, + continue: !def.abort + }); + }; +}); +var $ZodCheckEndsWith = /* @__PURE__ */ $constructor("$ZodCheckEndsWith", (inst, def) => { + $ZodCheck.init(inst, def); + const pattern = new RegExp(`.*${escapeRegex(def.suffix)}$`); + def.pattern ?? (def.pattern = pattern); + inst._zod.onattach.push((inst2) => { + const bag = inst2._zod.bag; + bag.patterns ?? (bag.patterns = /* @__PURE__ */ new Set()); + bag.patterns.add(pattern); + }); + inst._zod.check = (payload) => { + if (payload.value.endsWith(def.suffix)) + return; + payload.issues.push({ + origin: "string", + code: "invalid_format", + format: "ends_with", + suffix: def.suffix, + input: payload.value, + inst, + continue: !def.abort + }); + }; +}); +var $ZodCheckOverwrite = /* @__PURE__ */ $constructor("$ZodCheckOverwrite", (inst, def) => { + $ZodCheck.init(inst, def); + inst._zod.check = (payload) => { + payload.value = def.tx(payload.value); + }; +}); + +// node_modules/zod/v4/core/doc.js +var Doc = class { + constructor(args = []) { + this.content = []; + this.indent = 0; + if (this) + this.args = args; + } + indented(fn) { + this.indent += 1; + fn(this); + this.indent -= 1; + } + write(arg) { + if (typeof arg === "function") { + arg(this, { execution: "sync" }); + arg(this, { execution: "async" }); + return; + } + const content = arg; + const lines = content.split("\n").filter((x) => x); + const minIndent = Math.min(...lines.map((x) => x.length - x.trimStart().length)); + const dedented = lines.map((x) => x.slice(minIndent)).map((x) => " ".repeat(this.indent * 2) + x); + for (const line of dedented) { + this.content.push(line); + } + } + compile() { + const F = Function; + const args = this?.args; + const content = this?.content ?? [``]; + const lines = [...content.map((x) => ` ${x}`)]; + return new F(...args, lines.join("\n")); + } +}; + +// node_modules/zod/v4/core/versions.js +var version6 = { + major: 4, + minor: 0, + patch: 0 +}; + +// node_modules/zod/v4/core/schemas.js +var $ZodType = /* @__PURE__ */ $constructor("$ZodType", (inst, def) => { + var _a; + inst ?? (inst = {}); + inst._zod.def = def; + inst._zod.bag = inst._zod.bag || {}; + inst._zod.version = version6; + const checks = [...inst._zod.def.checks ?? []]; + if (inst._zod.traits.has("$ZodCheck")) { + checks.unshift(inst); + } + for (const ch of checks) { + for (const fn of ch._zod.onattach) { + fn(inst); + } + } + if (checks.length === 0) { + (_a = inst._zod).deferred ?? (_a.deferred = []); + inst._zod.deferred?.push(() => { + inst._zod.run = inst._zod.parse; + }); + } else { + const runChecks = (payload, checks2, ctx) => { + let isAborted2 = aborted(payload); + let asyncResult; + for (const ch of checks2) { + if (ch._zod.def.when) { + const shouldRun = ch._zod.def.when(payload); + if (!shouldRun) + continue; + } else if (isAborted2) { + continue; + } + const currLen = payload.issues.length; + const _ = ch._zod.check(payload); + if (_ instanceof Promise && ctx?.async === false) { + throw new $ZodAsyncError(); + } + if (asyncResult || _ instanceof Promise) { + asyncResult = (asyncResult ?? Promise.resolve()).then(async () => { + await _; + const nextLen = payload.issues.length; + if (nextLen === currLen) + return; + if (!isAborted2) + isAborted2 = aborted(payload, currLen); + }); + } else { + const nextLen = payload.issues.length; + if (nextLen === currLen) + continue; + if (!isAborted2) + isAborted2 = aborted(payload, currLen); + } + } + if (asyncResult) { + return asyncResult.then(() => { + return payload; + }); + } + return payload; + }; + inst._zod.run = (payload, ctx) => { + const result = inst._zod.parse(payload, ctx); + if (result instanceof Promise) { + if (ctx.async === false) + throw new $ZodAsyncError(); + return result.then((result2) => runChecks(result2, checks, ctx)); + } + return runChecks(result, checks, ctx); + }; + } + inst["~standard"] = { + validate: (value) => { + try { + const r = safeParse(inst, value); + return r.success ? { value: r.data } : { issues: r.error?.issues }; + } catch (_) { + return safeParseAsync(inst, value).then((r) => r.success ? { value: r.data } : { issues: r.error?.issues }); + } + }, + vendor: "zod", + version: 1 + }; +}); +var $ZodString = /* @__PURE__ */ $constructor("$ZodString", (inst, def) => { + $ZodType.init(inst, def); + inst._zod.pattern = [...inst?._zod.bag?.patterns ?? []].pop() ?? string(inst._zod.bag); + inst._zod.parse = (payload, _) => { + if (def.coerce) + try { + payload.value = String(payload.value); + } catch (_2) { + } + if (typeof payload.value === "string") + return payload; + payload.issues.push({ + expected: "string", + code: "invalid_type", + input: payload.value, + inst + }); + return payload; + }; +}); +var $ZodStringFormat = /* @__PURE__ */ $constructor("$ZodStringFormat", (inst, def) => { + $ZodCheckStringFormat.init(inst, def); + $ZodString.init(inst, def); +}); +var $ZodGUID = /* @__PURE__ */ $constructor("$ZodGUID", (inst, def) => { + def.pattern ?? (def.pattern = guid); + $ZodStringFormat.init(inst, def); +}); +var $ZodUUID = /* @__PURE__ */ $constructor("$ZodUUID", (inst, def) => { + if (def.version) { + const versionMap = { + v1: 1, + v2: 2, + v3: 3, + v4: 4, + v5: 5, + v6: 6, + v7: 7, + v8: 8 + }; + const v = versionMap[def.version]; + if (v === void 0) + throw new Error(`Invalid UUID version: "${def.version}"`); + def.pattern ?? (def.pattern = uuid(v)); + } else + def.pattern ?? (def.pattern = uuid()); + $ZodStringFormat.init(inst, def); +}); +var $ZodEmail = /* @__PURE__ */ $constructor("$ZodEmail", (inst, def) => { + def.pattern ?? (def.pattern = email); + $ZodStringFormat.init(inst, def); +}); +var $ZodURL = /* @__PURE__ */ $constructor("$ZodURL", (inst, def) => { + $ZodStringFormat.init(inst, def); + inst._zod.check = (payload) => { + try { + const orig = payload.value; + const url2 = new URL(orig); + const href = url2.href; + if (def.hostname) { + def.hostname.lastIndex = 0; + if (!def.hostname.test(url2.hostname)) { + payload.issues.push({ + code: "invalid_format", + format: "url", + note: "Invalid hostname", + pattern: hostname.source, + input: payload.value, + inst, + continue: !def.abort + }); + } + } + if (def.protocol) { + def.protocol.lastIndex = 0; + if (!def.protocol.test(url2.protocol.endsWith(":") ? url2.protocol.slice(0, -1) : url2.protocol)) { + payload.issues.push({ + code: "invalid_format", + format: "url", + note: "Invalid protocol", + pattern: def.protocol.source, + input: payload.value, + inst, + continue: !def.abort + }); + } + } + if (!orig.endsWith("/") && href.endsWith("/")) { + payload.value = href.slice(0, -1); + } else { + payload.value = href; + } + return; + } catch (_) { + payload.issues.push({ + code: "invalid_format", + format: "url", + input: payload.value, + inst, + continue: !def.abort + }); + } + }; +}); +var $ZodEmoji = /* @__PURE__ */ $constructor("$ZodEmoji", (inst, def) => { + def.pattern ?? (def.pattern = emoji()); + $ZodStringFormat.init(inst, def); +}); +var $ZodNanoID = /* @__PURE__ */ $constructor("$ZodNanoID", (inst, def) => { + def.pattern ?? (def.pattern = nanoid); + $ZodStringFormat.init(inst, def); +}); +var $ZodCUID = /* @__PURE__ */ $constructor("$ZodCUID", (inst, def) => { + def.pattern ?? (def.pattern = cuid); + $ZodStringFormat.init(inst, def); +}); +var $ZodCUID2 = /* @__PURE__ */ $constructor("$ZodCUID2", (inst, def) => { + def.pattern ?? (def.pattern = cuid2); + $ZodStringFormat.init(inst, def); +}); +var $ZodULID = /* @__PURE__ */ $constructor("$ZodULID", (inst, def) => { + def.pattern ?? (def.pattern = ulid); + $ZodStringFormat.init(inst, def); +}); +var $ZodXID = /* @__PURE__ */ $constructor("$ZodXID", (inst, def) => { + def.pattern ?? (def.pattern = xid); + $ZodStringFormat.init(inst, def); +}); +var $ZodKSUID = /* @__PURE__ */ $constructor("$ZodKSUID", (inst, def) => { + def.pattern ?? (def.pattern = ksuid); + $ZodStringFormat.init(inst, def); +}); +var $ZodISODateTime = /* @__PURE__ */ $constructor("$ZodISODateTime", (inst, def) => { + def.pattern ?? (def.pattern = datetime(def)); + $ZodStringFormat.init(inst, def); +}); +var $ZodISODate = /* @__PURE__ */ $constructor("$ZodISODate", (inst, def) => { + def.pattern ?? (def.pattern = date); + $ZodStringFormat.init(inst, def); +}); +var $ZodISOTime = /* @__PURE__ */ $constructor("$ZodISOTime", (inst, def) => { + def.pattern ?? (def.pattern = time(def)); + $ZodStringFormat.init(inst, def); +}); +var $ZodISODuration = /* @__PURE__ */ $constructor("$ZodISODuration", (inst, def) => { + def.pattern ?? (def.pattern = duration); + $ZodStringFormat.init(inst, def); +}); +var $ZodIPv4 = /* @__PURE__ */ $constructor("$ZodIPv4", (inst, def) => { + def.pattern ?? (def.pattern = ipv4); + $ZodStringFormat.init(inst, def); + inst._zod.onattach.push((inst2) => { + const bag = inst2._zod.bag; + bag.format = `ipv4`; + }); +}); +var $ZodIPv6 = /* @__PURE__ */ $constructor("$ZodIPv6", (inst, def) => { + def.pattern ?? (def.pattern = ipv6); + $ZodStringFormat.init(inst, def); + inst._zod.onattach.push((inst2) => { + const bag = inst2._zod.bag; + bag.format = `ipv6`; + }); + inst._zod.check = (payload) => { + try { + new URL(`http://[${payload.value}]`); + } catch { + payload.issues.push({ + code: "invalid_format", + format: "ipv6", + input: payload.value, + inst, + continue: !def.abort + }); + } + }; +}); +var $ZodCIDRv4 = /* @__PURE__ */ $constructor("$ZodCIDRv4", (inst, def) => { + def.pattern ?? (def.pattern = cidrv4); + $ZodStringFormat.init(inst, def); +}); +var $ZodCIDRv6 = /* @__PURE__ */ $constructor("$ZodCIDRv6", (inst, def) => { + def.pattern ?? (def.pattern = cidrv6); + $ZodStringFormat.init(inst, def); + inst._zod.check = (payload) => { + const [address, prefix] = payload.value.split("/"); + try { + if (!prefix) + throw new Error(); + const prefixNum = Number(prefix); + if (`${prefixNum}` !== prefix) + throw new Error(); + if (prefixNum < 0 || prefixNum > 128) + throw new Error(); + new URL(`http://[${address}]`); + } catch { + payload.issues.push({ + code: "invalid_format", + format: "cidrv6", + input: payload.value, + inst, + continue: !def.abort + }); + } + }; +}); +function isValidBase64(data) { + if (data === "") + return true; + if (data.length % 4 !== 0) + return false; + try { + atob(data); + return true; + } catch { + return false; + } +} +var $ZodBase64 = /* @__PURE__ */ $constructor("$ZodBase64", (inst, def) => { + def.pattern ?? (def.pattern = base64); + $ZodStringFormat.init(inst, def); + inst._zod.onattach.push((inst2) => { + inst2._zod.bag.contentEncoding = "base64"; + }); + inst._zod.check = (payload) => { + if (isValidBase64(payload.value)) + return; + payload.issues.push({ + code: "invalid_format", + format: "base64", + input: payload.value, + inst, + continue: !def.abort + }); + }; +}); +function isValidBase64URL(data) { + if (!base64url.test(data)) + return false; + const base642 = data.replace(/[-_]/g, (c) => c === "-" ? "+" : "/"); + const padded = base642.padEnd(Math.ceil(base642.length / 4) * 4, "="); + return isValidBase64(padded); +} +var $ZodBase64URL = /* @__PURE__ */ $constructor("$ZodBase64URL", (inst, def) => { + def.pattern ?? (def.pattern = base64url); + $ZodStringFormat.init(inst, def); + inst._zod.onattach.push((inst2) => { + inst2._zod.bag.contentEncoding = "base64url"; + }); + inst._zod.check = (payload) => { + if (isValidBase64URL(payload.value)) + return; + payload.issues.push({ + code: "invalid_format", + format: "base64url", + input: payload.value, + inst, + continue: !def.abort + }); + }; +}); +var $ZodE164 = /* @__PURE__ */ $constructor("$ZodE164", (inst, def) => { + def.pattern ?? (def.pattern = e164); + $ZodStringFormat.init(inst, def); +}); +function isValidJWT2(token, algorithm = null) { + try { + const tokensParts = token.split("."); + if (tokensParts.length !== 3) + return false; + const [header] = tokensParts; + if (!header) + return false; + const parsedHeader = JSON.parse(atob(header)); + if ("typ" in parsedHeader && parsedHeader?.typ !== "JWT") + return false; + if (!parsedHeader.alg) + return false; + if (algorithm && (!("alg" in parsedHeader) || parsedHeader.alg !== algorithm)) + return false; + return true; + } catch { + return false; + } +} +var $ZodJWT = /* @__PURE__ */ $constructor("$ZodJWT", (inst, def) => { + $ZodStringFormat.init(inst, def); + inst._zod.check = (payload) => { + if (isValidJWT2(payload.value, def.alg)) + return; + payload.issues.push({ + code: "invalid_format", + format: "jwt", + input: payload.value, + inst, + continue: !def.abort + }); + }; +}); +var $ZodNumber = /* @__PURE__ */ $constructor("$ZodNumber", (inst, def) => { + $ZodType.init(inst, def); + inst._zod.pattern = inst._zod.bag.pattern ?? number; + inst._zod.parse = (payload, _ctx) => { + if (def.coerce) + try { + payload.value = Number(payload.value); + } catch (_) { + } + const input = payload.value; + if (typeof input === "number" && !Number.isNaN(input) && Number.isFinite(input)) { + return payload; + } + const received = typeof input === "number" ? Number.isNaN(input) ? "NaN" : !Number.isFinite(input) ? "Infinity" : void 0 : void 0; + payload.issues.push({ + expected: "number", + code: "invalid_type", + input, + inst, + ...received ? { received } : {} + }); + return payload; + }; +}); +var $ZodNumberFormat = /* @__PURE__ */ $constructor("$ZodNumber", (inst, def) => { + $ZodCheckNumberFormat.init(inst, def); + $ZodNumber.init(inst, def); +}); +var $ZodBoolean = /* @__PURE__ */ $constructor("$ZodBoolean", (inst, def) => { + $ZodType.init(inst, def); + inst._zod.pattern = boolean; + inst._zod.parse = (payload, _ctx) => { + if (def.coerce) + try { + payload.value = Boolean(payload.value); + } catch (_) { + } + const input = payload.value; + if (typeof input === "boolean") + return payload; + payload.issues.push({ + expected: "boolean", + code: "invalid_type", + input, + inst + }); + return payload; + }; +}); +var $ZodBigInt = /* @__PURE__ */ $constructor("$ZodBigInt", (inst, def) => { + $ZodType.init(inst, def); + inst._zod.pattern = bigint; + inst._zod.parse = (payload, _ctx) => { + if (def.coerce) + try { + payload.value = BigInt(payload.value); + } catch (_) { + } + if (typeof payload.value === "bigint") + return payload; + payload.issues.push({ + expected: "bigint", + code: "invalid_type", + input: payload.value, + inst + }); + return payload; + }; +}); +var $ZodNull = /* @__PURE__ */ $constructor("$ZodNull", (inst, def) => { + $ZodType.init(inst, def); + inst._zod.pattern = _null; + inst._zod.values = /* @__PURE__ */ new Set([null]); + inst._zod.parse = (payload, _ctx) => { + const input = payload.value; + if (input === null) + return payload; + payload.issues.push({ + expected: "null", + code: "invalid_type", + input, + inst + }); + return payload; + }; +}); +var $ZodAny = /* @__PURE__ */ $constructor("$ZodAny", (inst, def) => { + $ZodType.init(inst, def); + inst._zod.parse = (payload) => payload; +}); +var $ZodUnknown = /* @__PURE__ */ $constructor("$ZodUnknown", (inst, def) => { + $ZodType.init(inst, def); + inst._zod.parse = (payload) => payload; +}); +var $ZodNever = /* @__PURE__ */ $constructor("$ZodNever", (inst, def) => { + $ZodType.init(inst, def); + inst._zod.parse = (payload, _ctx) => { + payload.issues.push({ + expected: "never", + code: "invalid_type", + input: payload.value, + inst + }); + return payload; + }; +}); +var $ZodDate = /* @__PURE__ */ $constructor("$ZodDate", (inst, def) => { + $ZodType.init(inst, def); + inst._zod.parse = (payload, _ctx) => { + if (def.coerce) { + try { + payload.value = new Date(payload.value); + } catch (_err) { + } + } + const input = payload.value; + const isDate = input instanceof Date; + const isValidDate = isDate && !Number.isNaN(input.getTime()); + if (isValidDate) + return payload; + payload.issues.push({ + expected: "date", + code: "invalid_type", + input, + ...isDate ? { received: "Invalid Date" } : {}, + inst + }); + return payload; + }; +}); +function handleArrayResult(result, final, index) { + if (result.issues.length) { + final.issues.push(...prefixIssues(index, result.issues)); + } + final.value[index] = result.value; +} +var $ZodArray = /* @__PURE__ */ $constructor("$ZodArray", (inst, def) => { + $ZodType.init(inst, def); + inst._zod.parse = (payload, ctx) => { + const input = payload.value; + if (!Array.isArray(input)) { + payload.issues.push({ + expected: "array", + code: "invalid_type", + input, + inst + }); + return payload; + } + payload.value = Array(input.length); + const proms = []; + for (let i = 0; i < input.length; i++) { + const item = input[i]; + const result = def.element._zod.run({ + value: item, + issues: [] + }, ctx); + if (result instanceof Promise) { + proms.push(result.then((result2) => handleArrayResult(result2, payload, i))); + } else { + handleArrayResult(result, payload, i); + } + } + if (proms.length) { + return Promise.all(proms).then(() => payload); + } + return payload; + }; +}); +function handleObjectResult(result, final, key) { + if (result.issues.length) { + final.issues.push(...prefixIssues(key, result.issues)); + } + final.value[key] = result.value; +} +function handleOptionalObjectResult(result, final, key, input) { + if (result.issues.length) { + if (input[key] === void 0) { + if (key in input) { + final.value[key] = void 0; + } else { + final.value[key] = result.value; + } + } else { + final.issues.push(...prefixIssues(key, result.issues)); + } + } else if (result.value === void 0) { + if (key in input) + final.value[key] = void 0; + } else { + final.value[key] = result.value; + } +} +var $ZodObject = /* @__PURE__ */ $constructor("$ZodObject", (inst, def) => { + $ZodType.init(inst, def); + const _normalized = cached(() => { + const keys = Object.keys(def.shape); + for (const k of keys) { + if (!(def.shape[k] instanceof $ZodType)) { + throw new Error(`Invalid element at key "${k}": expected a Zod schema`); + } + } + const okeys = optionalKeys(def.shape); + return { + shape: def.shape, + keys, + keySet: new Set(keys), + numKeys: keys.length, + optionalKeys: new Set(okeys) + }; + }); + defineLazy(inst._zod, "propValues", () => { + const shape = def.shape; + const propValues = {}; + for (const key in shape) { + const field = shape[key]._zod; + if (field.values) { + propValues[key] ?? (propValues[key] = /* @__PURE__ */ new Set()); + for (const v of field.values) + propValues[key].add(v); + } + } + return propValues; + }); + const generateFastpass = (shape) => { + const doc = new Doc(["shape", "payload", "ctx"]); + const normalized = _normalized.value; + const parseStr = (key) => { + const k = esc(key); + return `shape[${k}]._zod.run({ value: input[${k}], issues: [] }, ctx)`; + }; + doc.write(`const input = payload.value;`); + const ids = /* @__PURE__ */ Object.create(null); + let counter = 0; + for (const key of normalized.keys) { + ids[key] = `key_${counter++}`; + } + doc.write(`const newResult = {}`); + for (const key of normalized.keys) { + if (normalized.optionalKeys.has(key)) { + const id = ids[key]; + doc.write(`const ${id} = ${parseStr(key)};`); + const k = esc(key); + doc.write(` + if (${id}.issues.length) { + if (input[${k}] === undefined) { + if (${k} in input) { + newResult[${k}] = undefined; + } + } else { + payload.issues = payload.issues.concat( + ${id}.issues.map((iss) => ({ + ...iss, + path: iss.path ? [${k}, ...iss.path] : [${k}], + })) + ); + } + } else if (${id}.value === undefined) { + if (${k} in input) newResult[${k}] = undefined; + } else { + newResult[${k}] = ${id}.value; + } + `); + } else { + const id = ids[key]; + doc.write(`const ${id} = ${parseStr(key)};`); + doc.write(` + if (${id}.issues.length) payload.issues = payload.issues.concat(${id}.issues.map(iss => ({ + ...iss, + path: iss.path ? [${esc(key)}, ...iss.path] : [${esc(key)}] + })));`); + doc.write(`newResult[${esc(key)}] = ${id}.value`); + } + } + doc.write(`payload.value = newResult;`); + doc.write(`return payload;`); + const fn = doc.compile(); + return (payload, ctx) => fn(shape, payload, ctx); + }; + let fastpass; + const isObject3 = isObject2; + const jit = !globalConfig.jitless; + const allowsEval2 = allowsEval; + const fastEnabled = jit && allowsEval2.value; + const catchall = def.catchall; + let value; + inst._zod.parse = (payload, ctx) => { + value ?? (value = _normalized.value); + const input = payload.value; + if (!isObject3(input)) { + payload.issues.push({ + expected: "object", + code: "invalid_type", + input, + inst + }); + return payload; + } + const proms = []; + if (jit && fastEnabled && ctx?.async === false && ctx.jitless !== true) { + if (!fastpass) + fastpass = generateFastpass(def.shape); + payload = fastpass(payload, ctx); + } else { + payload.value = {}; + const shape = value.shape; + for (const key of value.keys) { + const el = shape[key]; + const r = el._zod.run({ value: input[key], issues: [] }, ctx); + const isOptional = el._zod.optin === "optional" && el._zod.optout === "optional"; + if (r instanceof Promise) { + proms.push(r.then((r2) => isOptional ? handleOptionalObjectResult(r2, payload, key, input) : handleObjectResult(r2, payload, key))); + } else if (isOptional) { + handleOptionalObjectResult(r, payload, key, input); + } else { + handleObjectResult(r, payload, key); + } + } + } + if (!catchall) { + return proms.length ? Promise.all(proms).then(() => payload) : payload; + } + const unrecognized = []; + const keySet = value.keySet; + const _catchall = catchall._zod; + const t = _catchall.def.type; + for (const key of Object.keys(input)) { + if (keySet.has(key)) + continue; + if (t === "never") { + unrecognized.push(key); + continue; + } + const r = _catchall.run({ value: input[key], issues: [] }, ctx); + if (r instanceof Promise) { + proms.push(r.then((r2) => handleObjectResult(r2, payload, key))); + } else { + handleObjectResult(r, payload, key); + } + } + if (unrecognized.length) { + payload.issues.push({ + code: "unrecognized_keys", + keys: unrecognized, + input, + inst + }); + } + if (!proms.length) + return payload; + return Promise.all(proms).then(() => { + return payload; + }); + }; +}); +function handleUnionResults(results, final, inst, ctx) { + for (const result of results) { + if (result.issues.length === 0) { + final.value = result.value; + return final; + } + } + final.issues.push({ + code: "invalid_union", + input: final.value, + inst, + errors: results.map((result) => result.issues.map((iss) => finalizeIssue(iss, ctx, config()))) + }); + return final; +} +var $ZodUnion = /* @__PURE__ */ $constructor("$ZodUnion", (inst, def) => { + $ZodType.init(inst, def); + defineLazy(inst._zod, "optin", () => def.options.some((o) => o._zod.optin === "optional") ? "optional" : void 0); + defineLazy(inst._zod, "optout", () => def.options.some((o) => o._zod.optout === "optional") ? "optional" : void 0); + defineLazy(inst._zod, "values", () => { + if (def.options.every((o) => o._zod.values)) { + return new Set(def.options.flatMap((option) => Array.from(option._zod.values))); + } + return void 0; + }); + defineLazy(inst._zod, "pattern", () => { + if (def.options.every((o) => o._zod.pattern)) { + const patterns = def.options.map((o) => o._zod.pattern); + return new RegExp(`^(${patterns.map((p) => cleanRegex(p.source)).join("|")})$`); + } + return void 0; + }); + inst._zod.parse = (payload, ctx) => { + let async = false; + const results = []; + for (const option of def.options) { + const result = option._zod.run({ + value: payload.value, + issues: [] + }, ctx); + if (result instanceof Promise) { + results.push(result); + async = true; + } else { + if (result.issues.length === 0) + return result; + results.push(result); + } + } + if (!async) + return handleUnionResults(results, payload, inst, ctx); + return Promise.all(results).then((results2) => { + return handleUnionResults(results2, payload, inst, ctx); + }); + }; +}); +var $ZodDiscriminatedUnion = /* @__PURE__ */ $constructor("$ZodDiscriminatedUnion", (inst, def) => { + $ZodUnion.init(inst, def); + const _super = inst._zod.parse; + defineLazy(inst._zod, "propValues", () => { + const propValues = {}; + for (const option of def.options) { + const pv = option._zod.propValues; + if (!pv || Object.keys(pv).length === 0) + throw new Error(`Invalid discriminated union option at index "${def.options.indexOf(option)}"`); + for (const [k, v] of Object.entries(pv)) { + if (!propValues[k]) + propValues[k] = /* @__PURE__ */ new Set(); + for (const val of v) { + propValues[k].add(val); + } + } + } + return propValues; + }); + const disc = cached(() => { + const opts = def.options; + const map = /* @__PURE__ */ new Map(); + for (const o of opts) { + const values = o._zod.propValues[def.discriminator]; + if (!values || values.size === 0) + throw new Error(`Invalid discriminated union option at index "${def.options.indexOf(o)}"`); + for (const v of values) { + if (map.has(v)) { + throw new Error(`Duplicate discriminator value "${String(v)}"`); + } + map.set(v, o); + } + } + return map; + }); + inst._zod.parse = (payload, ctx) => { + const input = payload.value; + if (!isObject2(input)) { + payload.issues.push({ + code: "invalid_type", + expected: "object", + input, + inst + }); + return payload; + } + const opt = disc.value.get(input?.[def.discriminator]); + if (opt) { + return opt._zod.run(payload, ctx); + } + if (def.unionFallback) { + return _super(payload, ctx); + } + payload.issues.push({ + code: "invalid_union", + errors: [], + note: "No matching discriminator", + input, + path: [def.discriminator], + inst + }); + return payload; + }; +}); +var $ZodIntersection = /* @__PURE__ */ $constructor("$ZodIntersection", (inst, def) => { + $ZodType.init(inst, def); + inst._zod.parse = (payload, ctx) => { + const input = payload.value; + const left = def.left._zod.run({ value: input, issues: [] }, ctx); + const right = def.right._zod.run({ value: input, issues: [] }, ctx); + const async = left instanceof Promise || right instanceof Promise; + if (async) { + return Promise.all([left, right]).then(([left2, right2]) => { + return handleIntersectionResults(payload, left2, right2); + }); + } + return handleIntersectionResults(payload, left, right); + }; +}); +function mergeValues2(a, b) { + if (a === b) { + return { valid: true, data: a }; + } + if (a instanceof Date && b instanceof Date && +a === +b) { + return { valid: true, data: a }; + } + if (isPlainObject(a) && isPlainObject(b)) { + const bKeys = Object.keys(b); + const sharedKeys = Object.keys(a).filter((key) => bKeys.indexOf(key) !== -1); + const newObj = { ...a, ...b }; + for (const key of sharedKeys) { + const sharedValue = mergeValues2(a[key], b[key]); + if (!sharedValue.valid) { + return { + valid: false, + mergeErrorPath: [key, ...sharedValue.mergeErrorPath] + }; + } + newObj[key] = sharedValue.data; + } + return { valid: true, data: newObj }; + } + if (Array.isArray(a) && Array.isArray(b)) { + if (a.length !== b.length) { + return { valid: false, mergeErrorPath: [] }; + } + const newArray = []; + for (let index = 0; index < a.length; index++) { + const itemA = a[index]; + const itemB = b[index]; + const sharedValue = mergeValues2(itemA, itemB); + if (!sharedValue.valid) { + return { + valid: false, + mergeErrorPath: [index, ...sharedValue.mergeErrorPath] + }; + } + newArray.push(sharedValue.data); + } + return { valid: true, data: newArray }; + } + return { valid: false, mergeErrorPath: [] }; +} +function handleIntersectionResults(result, left, right) { + if (left.issues.length) { + result.issues.push(...left.issues); + } + if (right.issues.length) { + result.issues.push(...right.issues); + } + if (aborted(result)) + return result; + const merged = mergeValues2(left.value, right.value); + if (!merged.valid) { + throw new Error(`Unmergable intersection. Error path: ${JSON.stringify(merged.mergeErrorPath)}`); + } + result.value = merged.data; + return result; +} +var $ZodRecord = /* @__PURE__ */ $constructor("$ZodRecord", (inst, def) => { + $ZodType.init(inst, def); + inst._zod.parse = (payload, ctx) => { + const input = payload.value; + if (!isPlainObject(input)) { + payload.issues.push({ + expected: "record", + code: "invalid_type", + input, + inst + }); + return payload; + } + const proms = []; + if (def.keyType._zod.values) { + const values = def.keyType._zod.values; + payload.value = {}; + for (const key of values) { + if (typeof key === "string" || typeof key === "number" || typeof key === "symbol") { + const result = def.valueType._zod.run({ value: input[key], issues: [] }, ctx); + if (result instanceof Promise) { + proms.push(result.then((result2) => { + if (result2.issues.length) { + payload.issues.push(...prefixIssues(key, result2.issues)); + } + payload.value[key] = result2.value; + })); + } else { + if (result.issues.length) { + payload.issues.push(...prefixIssues(key, result.issues)); + } + payload.value[key] = result.value; + } + } + } + let unrecognized; + for (const key in input) { + if (!values.has(key)) { + unrecognized = unrecognized ?? []; + unrecognized.push(key); + } + } + if (unrecognized && unrecognized.length > 0) { + payload.issues.push({ + code: "unrecognized_keys", + input, + inst, + keys: unrecognized + }); + } + } else { + payload.value = {}; + for (const key of Reflect.ownKeys(input)) { + if (key === "__proto__") + continue; + const keyResult = def.keyType._zod.run({ value: key, issues: [] }, ctx); + if (keyResult instanceof Promise) { + throw new Error("Async schemas not supported in object keys currently"); + } + if (keyResult.issues.length) { + payload.issues.push({ + origin: "record", + code: "invalid_key", + issues: keyResult.issues.map((iss) => finalizeIssue(iss, ctx, config())), + input: key, + path: [key], + inst + }); + payload.value[keyResult.value] = keyResult.value; + continue; + } + const result = def.valueType._zod.run({ value: input[key], issues: [] }, ctx); + if (result instanceof Promise) { + proms.push(result.then((result2) => { + if (result2.issues.length) { + payload.issues.push(...prefixIssues(key, result2.issues)); + } + payload.value[keyResult.value] = result2.value; + })); + } else { + if (result.issues.length) { + payload.issues.push(...prefixIssues(key, result.issues)); + } + payload.value[keyResult.value] = result.value; + } + } + } + if (proms.length) { + return Promise.all(proms).then(() => payload); + } + return payload; + }; +}); +var $ZodEnum = /* @__PURE__ */ $constructor("$ZodEnum", (inst, def) => { + $ZodType.init(inst, def); + const values = getEnumValues(def.entries); + inst._zod.values = new Set(values); + inst._zod.pattern = new RegExp(`^(${values.filter((k) => propertyKeyTypes.has(typeof k)).map((o) => typeof o === "string" ? escapeRegex(o) : o.toString()).join("|")})$`); + inst._zod.parse = (payload, _ctx) => { + const input = payload.value; + if (inst._zod.values.has(input)) { + return payload; + } + payload.issues.push({ + code: "invalid_value", + values, + input, + inst + }); + return payload; + }; +}); +var $ZodLiteral = /* @__PURE__ */ $constructor("$ZodLiteral", (inst, def) => { + $ZodType.init(inst, def); + inst._zod.values = new Set(def.values); + inst._zod.pattern = new RegExp(`^(${def.values.map((o) => typeof o === "string" ? escapeRegex(o) : o ? o.toString() : String(o)).join("|")})$`); + inst._zod.parse = (payload, _ctx) => { + const input = payload.value; + if (inst._zod.values.has(input)) { + return payload; + } + payload.issues.push({ + code: "invalid_value", + values: def.values, + input, + inst + }); + return payload; + }; +}); +var $ZodTransform = /* @__PURE__ */ $constructor("$ZodTransform", (inst, def) => { + $ZodType.init(inst, def); + inst._zod.parse = (payload, _ctx) => { + const _out = def.transform(payload.value, payload); + if (_ctx.async) { + const output = _out instanceof Promise ? _out : Promise.resolve(_out); + return output.then((output2) => { + payload.value = output2; + return payload; + }); + } + if (_out instanceof Promise) { + throw new $ZodAsyncError(); + } + payload.value = _out; + return payload; + }; +}); +var $ZodOptional = /* @__PURE__ */ $constructor("$ZodOptional", (inst, def) => { + $ZodType.init(inst, def); + inst._zod.optin = "optional"; + inst._zod.optout = "optional"; + defineLazy(inst._zod, "values", () => { + return def.innerType._zod.values ? /* @__PURE__ */ new Set([...def.innerType._zod.values, void 0]) : void 0; + }); + defineLazy(inst._zod, "pattern", () => { + const pattern = def.innerType._zod.pattern; + return pattern ? new RegExp(`^(${cleanRegex(pattern.source)})?$`) : void 0; + }); + inst._zod.parse = (payload, ctx) => { + if (def.innerType._zod.optin === "optional") { + return def.innerType._zod.run(payload, ctx); + } + if (payload.value === void 0) { + return payload; + } + return def.innerType._zod.run(payload, ctx); + }; +}); +var $ZodNullable = /* @__PURE__ */ $constructor("$ZodNullable", (inst, def) => { + $ZodType.init(inst, def); + defineLazy(inst._zod, "optin", () => def.innerType._zod.optin); + defineLazy(inst._zod, "optout", () => def.innerType._zod.optout); + defineLazy(inst._zod, "pattern", () => { + const pattern = def.innerType._zod.pattern; + return pattern ? new RegExp(`^(${cleanRegex(pattern.source)}|null)$`) : void 0; + }); + defineLazy(inst._zod, "values", () => { + return def.innerType._zod.values ? /* @__PURE__ */ new Set([...def.innerType._zod.values, null]) : void 0; + }); + inst._zod.parse = (payload, ctx) => { + if (payload.value === null) + return payload; + return def.innerType._zod.run(payload, ctx); + }; +}); +var $ZodDefault = /* @__PURE__ */ $constructor("$ZodDefault", (inst, def) => { + $ZodType.init(inst, def); + inst._zod.optin = "optional"; + defineLazy(inst._zod, "values", () => def.innerType._zod.values); + inst._zod.parse = (payload, ctx) => { + if (payload.value === void 0) { + payload.value = def.defaultValue; + return payload; + } + const result = def.innerType._zod.run(payload, ctx); + if (result instanceof Promise) { + return result.then((result2) => handleDefaultResult(result2, def)); + } + return handleDefaultResult(result, def); + }; +}); +function handleDefaultResult(payload, def) { + if (payload.value === void 0) { + payload.value = def.defaultValue; + } + return payload; +} +var $ZodPrefault = /* @__PURE__ */ $constructor("$ZodPrefault", (inst, def) => { + $ZodType.init(inst, def); + inst._zod.optin = "optional"; + defineLazy(inst._zod, "values", () => def.innerType._zod.values); + inst._zod.parse = (payload, ctx) => { + if (payload.value === void 0) { + payload.value = def.defaultValue; + } + return def.innerType._zod.run(payload, ctx); + }; +}); +var $ZodNonOptional = /* @__PURE__ */ $constructor("$ZodNonOptional", (inst, def) => { + $ZodType.init(inst, def); + defineLazy(inst._zod, "values", () => { + const v = def.innerType._zod.values; + return v ? new Set([...v].filter((x) => x !== void 0)) : void 0; + }); + inst._zod.parse = (payload, ctx) => { + const result = def.innerType._zod.run(payload, ctx); + if (result instanceof Promise) { + return result.then((result2) => handleNonOptionalResult(result2, inst)); + } + return handleNonOptionalResult(result, inst); + }; +}); +function handleNonOptionalResult(payload, inst) { + if (!payload.issues.length && payload.value === void 0) { + payload.issues.push({ + code: "invalid_type", + expected: "nonoptional", + input: payload.value, + inst + }); + } + return payload; +} +var $ZodCatch = /* @__PURE__ */ $constructor("$ZodCatch", (inst, def) => { + $ZodType.init(inst, def); + inst._zod.optin = "optional"; + defineLazy(inst._zod, "optout", () => def.innerType._zod.optout); + defineLazy(inst._zod, "values", () => def.innerType._zod.values); + inst._zod.parse = (payload, ctx) => { + const result = def.innerType._zod.run(payload, ctx); + if (result instanceof Promise) { + return result.then((result2) => { + payload.value = result2.value; + if (result2.issues.length) { + payload.value = def.catchValue({ + ...payload, + error: { + issues: result2.issues.map((iss) => finalizeIssue(iss, ctx, config())) + }, + input: payload.value + }); + payload.issues = []; + } + return payload; + }); + } + payload.value = result.value; + if (result.issues.length) { + payload.value = def.catchValue({ + ...payload, + error: { + issues: result.issues.map((iss) => finalizeIssue(iss, ctx, config())) + }, + input: payload.value + }); + payload.issues = []; + } + return payload; + }; +}); +var $ZodPipe = /* @__PURE__ */ $constructor("$ZodPipe", (inst, def) => { + $ZodType.init(inst, def); + defineLazy(inst._zod, "values", () => def.in._zod.values); + defineLazy(inst._zod, "optin", () => def.in._zod.optin); + defineLazy(inst._zod, "optout", () => def.out._zod.optout); + inst._zod.parse = (payload, ctx) => { + const left = def.in._zod.run(payload, ctx); + if (left instanceof Promise) { + return left.then((left2) => handlePipeResult(left2, def, ctx)); + } + return handlePipeResult(left, def, ctx); + }; +}); +function handlePipeResult(left, def, ctx) { + if (aborted(left)) { + return left; + } + return def.out._zod.run({ value: left.value, issues: left.issues }, ctx); +} +var $ZodReadonly = /* @__PURE__ */ $constructor("$ZodReadonly", (inst, def) => { + $ZodType.init(inst, def); + defineLazy(inst._zod, "propValues", () => def.innerType._zod.propValues); + defineLazy(inst._zod, "values", () => def.innerType._zod.values); + defineLazy(inst._zod, "optin", () => def.innerType._zod.optin); + defineLazy(inst._zod, "optout", () => def.innerType._zod.optout); + inst._zod.parse = (payload, ctx) => { + const result = def.innerType._zod.run(payload, ctx); + if (result instanceof Promise) { + return result.then(handleReadonlyResult); + } + return handleReadonlyResult(result); + }; +}); +function handleReadonlyResult(payload) { + payload.value = Object.freeze(payload.value); + return payload; +} +var $ZodCustom = /* @__PURE__ */ $constructor("$ZodCustom", (inst, def) => { + $ZodCheck.init(inst, def); + $ZodType.init(inst, def); + inst._zod.parse = (payload, _) => { + return payload; + }; + inst._zod.check = (payload) => { + const input = payload.value; + const r = def.fn(input); + if (r instanceof Promise) { + return r.then((r2) => handleRefineResult(r2, payload, input, inst)); + } + handleRefineResult(r, payload, input, inst); + return; + }; +}); +function handleRefineResult(result, payload, input, inst) { + if (!result) { + const _iss = { + code: "custom", + input, + inst, + // incorporates params.error into issue reporting + path: [...inst._zod.def.path ?? []], + // incorporates params.error into issue reporting + continue: !inst._zod.def.abort + // params: inst._zod.def.params, + }; + if (inst._zod.def.params) + _iss.params = inst._zod.def.params; + payload.issues.push(issue(_iss)); + } +} + +// node_modules/zod/v4/locales/en.js +var parsedType = (data) => { + const t = typeof data; + switch (t) { + case "number": { + return Number.isNaN(data) ? "NaN" : "number"; + } + case "object": { + if (Array.isArray(data)) { + return "array"; + } + if (data === null) { + return "null"; + } + if (Object.getPrototypeOf(data) !== Object.prototype && data.constructor) { + return data.constructor.name; + } + } + } + return t; +}; +var error = () => { + const Sizable = { + string: { unit: "characters", verb: "to have" }, + file: { unit: "bytes", verb: "to have" }, + array: { unit: "items", verb: "to have" }, + set: { unit: "items", verb: "to have" } + }; + function getSizing(origin) { + return Sizable[origin] ?? null; + } + const Nouns = { + regex: "input", + email: "email address", + url: "URL", + emoji: "emoji", + uuid: "UUID", + uuidv4: "UUIDv4", + uuidv6: "UUIDv6", + nanoid: "nanoid", + guid: "GUID", + cuid: "cuid", + cuid2: "cuid2", + ulid: "ULID", + xid: "XID", + ksuid: "KSUID", + datetime: "ISO datetime", + date: "ISO date", + time: "ISO time", + duration: "ISO duration", + ipv4: "IPv4 address", + ipv6: "IPv6 address", + cidrv4: "IPv4 range", + cidrv6: "IPv6 range", + base64: "base64-encoded string", + base64url: "base64url-encoded string", + json_string: "JSON string", + e164: "E.164 number", + jwt: "JWT", + template_literal: "input" + }; + return (issue2) => { + switch (issue2.code) { + case "invalid_type": + return `Invalid input: expected ${issue2.expected}, received ${parsedType(issue2.input)}`; + case "invalid_value": + if (issue2.values.length === 1) + return `Invalid input: expected ${stringifyPrimitive(issue2.values[0])}`; + return `Invalid option: expected one of ${joinValues(issue2.values, "|")}`; + case "too_big": { + const adj = issue2.inclusive ? "<=" : "<"; + const sizing = getSizing(issue2.origin); + if (sizing) + return `Too big: expected ${issue2.origin ?? "value"} to have ${adj}${issue2.maximum.toString()} ${sizing.unit ?? "elements"}`; + return `Too big: expected ${issue2.origin ?? "value"} to be ${adj}${issue2.maximum.toString()}`; + } + case "too_small": { + const adj = issue2.inclusive ? ">=" : ">"; + const sizing = getSizing(issue2.origin); + if (sizing) { + return `Too small: expected ${issue2.origin} to have ${adj}${issue2.minimum.toString()} ${sizing.unit}`; + } + return `Too small: expected ${issue2.origin} to be ${adj}${issue2.minimum.toString()}`; + } + case "invalid_format": { + const _issue = issue2; + if (_issue.format === "starts_with") { + return `Invalid string: must start with "${_issue.prefix}"`; + } + if (_issue.format === "ends_with") + return `Invalid string: must end with "${_issue.suffix}"`; + if (_issue.format === "includes") + return `Invalid string: must include "${_issue.includes}"`; + if (_issue.format === "regex") + return `Invalid string: must match pattern ${_issue.pattern}`; + return `Invalid ${Nouns[_issue.format] ?? issue2.format}`; + } + case "not_multiple_of": + return `Invalid number: must be a multiple of ${issue2.divisor}`; + case "unrecognized_keys": + return `Unrecognized key${issue2.keys.length > 1 ? "s" : ""}: ${joinValues(issue2.keys, ", ")}`; + case "invalid_key": + return `Invalid key in ${issue2.origin}`; + case "invalid_union": + return "Invalid input"; + case "invalid_element": + return `Invalid value in ${issue2.origin}`; + default: + return `Invalid input`; + } + }; +}; +function en_default2() { + return { + localeError: error() + }; +} + +// node_modules/zod/v4/core/registries.js +var $ZodRegistry = class { + constructor() { + this._map = /* @__PURE__ */ new Map(); + this._idmap = /* @__PURE__ */ new Map(); + } + add(schema, ..._meta) { + const meta = _meta[0]; + this._map.set(schema, meta); + if (meta && typeof meta === "object" && "id" in meta) { + if (this._idmap.has(meta.id)) { + throw new Error(`ID ${meta.id} already exists in the registry`); + } + this._idmap.set(meta.id, schema); + } + return this; + } + clear() { + this._map = /* @__PURE__ */ new Map(); + this._idmap = /* @__PURE__ */ new Map(); + return this; + } + remove(schema) { + const meta = this._map.get(schema); + if (meta && typeof meta === "object" && "id" in meta) { + this._idmap.delete(meta.id); + } + this._map.delete(schema); + return this; + } + get(schema) { + const p = schema._zod.parent; + if (p) { + const pm = { ...this.get(p) ?? {} }; + delete pm.id; + return { ...pm, ...this._map.get(schema) }; + } + return this._map.get(schema); + } + has(schema) { + return this._map.has(schema); + } +}; +function registry() { + return new $ZodRegistry(); +} +var globalRegistry = /* @__PURE__ */ registry(); + +// node_modules/zod/v4/core/api.js +function _string(Class2, params) { + return new Class2({ + type: "string", + ...normalizeParams(params) + }); +} +function _coercedString(Class2, params) { + return new Class2({ + type: "string", + coerce: true, + ...normalizeParams(params) + }); +} +function _email(Class2, params) { + return new Class2({ + type: "string", + format: "email", + check: "string_format", + abort: false, + ...normalizeParams(params) + }); +} +function _guid(Class2, params) { + return new Class2({ + type: "string", + format: "guid", + check: "string_format", + abort: false, + ...normalizeParams(params) + }); +} +function _uuid(Class2, params) { + return new Class2({ + type: "string", + format: "uuid", + check: "string_format", + abort: false, + ...normalizeParams(params) + }); +} +function _uuidv4(Class2, params) { + return new Class2({ + type: "string", + format: "uuid", + check: "string_format", + abort: false, + version: "v4", + ...normalizeParams(params) + }); +} +function _uuidv6(Class2, params) { + return new Class2({ + type: "string", + format: "uuid", + check: "string_format", + abort: false, + version: "v6", + ...normalizeParams(params) + }); +} +function _uuidv7(Class2, params) { + return new Class2({ + type: "string", + format: "uuid", + check: "string_format", + abort: false, + version: "v7", + ...normalizeParams(params) + }); +} +function _url(Class2, params) { + return new Class2({ + type: "string", + format: "url", + check: "string_format", + abort: false, + ...normalizeParams(params) + }); +} +function _emoji2(Class2, params) { + return new Class2({ + type: "string", + format: "emoji", + check: "string_format", + abort: false, + ...normalizeParams(params) + }); +} +function _nanoid(Class2, params) { + return new Class2({ + type: "string", + format: "nanoid", + check: "string_format", + abort: false, + ...normalizeParams(params) + }); +} +function _cuid(Class2, params) { + return new Class2({ + type: "string", + format: "cuid", + check: "string_format", + abort: false, + ...normalizeParams(params) + }); +} +function _cuid2(Class2, params) { + return new Class2({ + type: "string", + format: "cuid2", + check: "string_format", + abort: false, + ...normalizeParams(params) + }); +} +function _ulid(Class2, params) { + return new Class2({ + type: "string", + format: "ulid", + check: "string_format", + abort: false, + ...normalizeParams(params) + }); +} +function _xid(Class2, params) { + return new Class2({ + type: "string", + format: "xid", + check: "string_format", + abort: false, + ...normalizeParams(params) + }); +} +function _ksuid(Class2, params) { + return new Class2({ + type: "string", + format: "ksuid", + check: "string_format", + abort: false, + ...normalizeParams(params) + }); +} +function _ipv4(Class2, params) { + return new Class2({ + type: "string", + format: "ipv4", + check: "string_format", + abort: false, + ...normalizeParams(params) + }); +} +function _ipv6(Class2, params) { + return new Class2({ + type: "string", + format: "ipv6", + check: "string_format", + abort: false, + ...normalizeParams(params) + }); +} +function _cidrv4(Class2, params) { + return new Class2({ + type: "string", + format: "cidrv4", + check: "string_format", + abort: false, + ...normalizeParams(params) + }); +} +function _cidrv6(Class2, params) { + return new Class2({ + type: "string", + format: "cidrv6", + check: "string_format", + abort: false, + ...normalizeParams(params) + }); +} +function _base64(Class2, params) { + return new Class2({ + type: "string", + format: "base64", + check: "string_format", + abort: false, + ...normalizeParams(params) + }); +} +function _base64url(Class2, params) { + return new Class2({ + type: "string", + format: "base64url", + check: "string_format", + abort: false, + ...normalizeParams(params) + }); +} +function _e164(Class2, params) { + return new Class2({ + type: "string", + format: "e164", + check: "string_format", + abort: false, + ...normalizeParams(params) + }); +} +function _jwt(Class2, params) { + return new Class2({ + type: "string", + format: "jwt", + check: "string_format", + abort: false, + ...normalizeParams(params) + }); +} +function _isoDateTime(Class2, params) { + return new Class2({ + type: "string", + format: "datetime", + check: "string_format", + offset: false, + local: false, + precision: null, + ...normalizeParams(params) + }); +} +function _isoDate(Class2, params) { + return new Class2({ + type: "string", + format: "date", + check: "string_format", + ...normalizeParams(params) + }); +} +function _isoTime(Class2, params) { + return new Class2({ + type: "string", + format: "time", + check: "string_format", + precision: null, + ...normalizeParams(params) + }); +} +function _isoDuration(Class2, params) { + return new Class2({ + type: "string", + format: "duration", + check: "string_format", + ...normalizeParams(params) + }); +} +function _number(Class2, params) { + return new Class2({ + type: "number", + checks: [], + ...normalizeParams(params) + }); +} +function _coercedNumber(Class2, params) { + return new Class2({ + type: "number", + coerce: true, + checks: [], + ...normalizeParams(params) + }); +} +function _int(Class2, params) { + return new Class2({ + type: "number", + check: "number_format", + abort: false, + format: "safeint", + ...normalizeParams(params) + }); +} +function _boolean(Class2, params) { + return new Class2({ + type: "boolean", + ...normalizeParams(params) + }); +} +function _coercedBoolean(Class2, params) { + return new Class2({ + type: "boolean", + coerce: true, + ...normalizeParams(params) + }); +} +function _coercedBigint(Class2, params) { + return new Class2({ + type: "bigint", + coerce: true, + ...normalizeParams(params) + }); +} +function _null2(Class2, params) { + return new Class2({ + type: "null", + ...normalizeParams(params) + }); +} +function _any(Class2) { + return new Class2({ + type: "any" + }); +} +function _unknown(Class2) { + return new Class2({ + type: "unknown" + }); +} +function _never(Class2, params) { + return new Class2({ + type: "never", + ...normalizeParams(params) + }); +} +function _coercedDate(Class2, params) { + return new Class2({ + type: "date", + coerce: true, + ...normalizeParams(params) + }); +} +function _lt(value, params) { + return new $ZodCheckLessThan({ + check: "less_than", + ...normalizeParams(params), + value, + inclusive: false + }); +} +function _lte(value, params) { + return new $ZodCheckLessThan({ + check: "less_than", + ...normalizeParams(params), + value, + inclusive: true + }); +} +function _gt(value, params) { + return new $ZodCheckGreaterThan({ + check: "greater_than", + ...normalizeParams(params), + value, + inclusive: false + }); +} +function _gte(value, params) { + return new $ZodCheckGreaterThan({ + check: "greater_than", + ...normalizeParams(params), + value, + inclusive: true + }); +} +function _multipleOf(value, params) { + return new $ZodCheckMultipleOf({ + check: "multiple_of", + ...normalizeParams(params), + value + }); +} +function _maxLength(maximum, params) { + const ch = new $ZodCheckMaxLength({ + check: "max_length", + ...normalizeParams(params), + maximum + }); + return ch; +} +function _minLength(minimum, params) { + return new $ZodCheckMinLength({ + check: "min_length", + ...normalizeParams(params), + minimum + }); +} +function _length(length, params) { + return new $ZodCheckLengthEquals({ + check: "length_equals", + ...normalizeParams(params), + length + }); +} +function _regex(pattern, params) { + return new $ZodCheckRegex({ + check: "string_format", + format: "regex", + ...normalizeParams(params), + pattern + }); +} +function _lowercase(params) { + return new $ZodCheckLowerCase({ + check: "string_format", + format: "lowercase", + ...normalizeParams(params) + }); +} +function _uppercase(params) { + return new $ZodCheckUpperCase({ + check: "string_format", + format: "uppercase", + ...normalizeParams(params) + }); +} +function _includes(includes, params) { + return new $ZodCheckIncludes({ + check: "string_format", + format: "includes", + ...normalizeParams(params), + includes + }); +} +function _startsWith(prefix, params) { + return new $ZodCheckStartsWith({ + check: "string_format", + format: "starts_with", + ...normalizeParams(params), + prefix + }); +} +function _endsWith(suffix, params) { + return new $ZodCheckEndsWith({ + check: "string_format", + format: "ends_with", + ...normalizeParams(params), + suffix + }); +} +function _overwrite(tx) { + return new $ZodCheckOverwrite({ + check: "overwrite", + tx + }); +} +function _normalize(form) { + return _overwrite((input) => input.normalize(form)); +} +function _trim() { + return _overwrite((input) => input.trim()); +} +function _toLowerCase() { + return _overwrite((input) => input.toLowerCase()); +} +function _toUpperCase() { + return _overwrite((input) => input.toUpperCase()); +} +function _array(Class2, element, params) { + return new Class2({ + type: "array", + element, + // get element() { + // return element; + // }, + ...normalizeParams(params) + }); +} +function _custom(Class2, fn, _params) { + const norm = normalizeParams(_params); + norm.abort ?? (norm.abort = true); + const schema = new Class2({ + type: "custom", + check: "custom", + fn, + ...norm + }); + return schema; +} +function _refine(Class2, fn, _params) { + const schema = new Class2({ + type: "custom", + check: "custom", + fn, + ...normalizeParams(_params) + }); + return schema; +} + +// node_modules/zod/v4/core/to-json-schema.js +var JSONSchemaGenerator = class { + constructor(params) { + this.counter = 0; + this.metadataRegistry = params?.metadata ?? globalRegistry; + this.target = params?.target ?? "draft-2020-12"; + this.unrepresentable = params?.unrepresentable ?? "throw"; + this.override = params?.override ?? (() => { + }); + this.io = params?.io ?? "output"; + this.seen = /* @__PURE__ */ new Map(); + } + process(schema, _params = { path: [], schemaPath: [] }) { + var _a; + const def = schema._zod.def; + const formatMap = { + guid: "uuid", + url: "uri", + datetime: "date-time", + json_string: "json-string", + regex: "" + // do not set + }; + const seen = this.seen.get(schema); + if (seen) { + seen.count++; + const isCycle = _params.schemaPath.includes(schema); + if (isCycle) { + seen.cycle = _params.path; + } + return seen.schema; + } + const result = { schema: {}, count: 1, cycle: void 0, path: _params.path }; + this.seen.set(schema, result); + const overrideSchema = schema._zod.toJSONSchema?.(); + if (overrideSchema) { + result.schema = overrideSchema; + } else { + const params = { + ..._params, + schemaPath: [..._params.schemaPath, schema], + path: _params.path + }; + const parent = schema._zod.parent; + if (parent) { + result.ref = parent; + this.process(parent, params); + this.seen.get(parent).isParent = true; + } else { + const _json = result.schema; + switch (def.type) { + case "string": { + const json = _json; + json.type = "string"; + const { minimum, maximum, format, patterns, contentEncoding } = schema._zod.bag; + if (typeof minimum === "number") + json.minLength = minimum; + if (typeof maximum === "number") + json.maxLength = maximum; + if (format) { + json.format = formatMap[format] ?? format; + if (json.format === "") + delete json.format; + } + if (contentEncoding) + json.contentEncoding = contentEncoding; + if (patterns && patterns.size > 0) { + const regexes = [...patterns]; + if (regexes.length === 1) + json.pattern = regexes[0].source; + else if (regexes.length > 1) { + result.schema.allOf = [ + ...regexes.map((regex) => ({ + ...this.target === "draft-7" ? { type: "string" } : {}, + pattern: regex.source + })) + ]; + } + } + break; + } + case "number": { + const json = _json; + const { minimum, maximum, format, multipleOf, exclusiveMaximum, exclusiveMinimum } = schema._zod.bag; + if (typeof format === "string" && format.includes("int")) + json.type = "integer"; + else + json.type = "number"; + if (typeof exclusiveMinimum === "number") + json.exclusiveMinimum = exclusiveMinimum; + if (typeof minimum === "number") { + json.minimum = minimum; + if (typeof exclusiveMinimum === "number") { + if (exclusiveMinimum >= minimum) + delete json.minimum; + else + delete json.exclusiveMinimum; + } + } + if (typeof exclusiveMaximum === "number") + json.exclusiveMaximum = exclusiveMaximum; + if (typeof maximum === "number") { + json.maximum = maximum; + if (typeof exclusiveMaximum === "number") { + if (exclusiveMaximum <= maximum) + delete json.maximum; + else + delete json.exclusiveMaximum; + } + } + if (typeof multipleOf === "number") + json.multipleOf = multipleOf; + break; + } + case "boolean": { + const json = _json; + json.type = "boolean"; + break; + } + case "bigint": { + if (this.unrepresentable === "throw") { + throw new Error("BigInt cannot be represented in JSON Schema"); + } + break; + } + case "symbol": { + if (this.unrepresentable === "throw") { + throw new Error("Symbols cannot be represented in JSON Schema"); + } + break; + } + case "null": { + _json.type = "null"; + break; + } + case "any": { + break; + } + case "unknown": { + break; + } + case "undefined": { + if (this.unrepresentable === "throw") { + throw new Error("Undefined cannot be represented in JSON Schema"); + } + break; + } + case "void": { + if (this.unrepresentable === "throw") { + throw new Error("Void cannot be represented in JSON Schema"); + } + break; + } + case "never": { + _json.not = {}; + break; + } + case "date": { + if (this.unrepresentable === "throw") { + throw new Error("Date cannot be represented in JSON Schema"); + } + break; + } + case "array": { + const json = _json; + const { minimum, maximum } = schema._zod.bag; + if (typeof minimum === "number") + json.minItems = minimum; + if (typeof maximum === "number") + json.maxItems = maximum; + json.type = "array"; + json.items = this.process(def.element, { ...params, path: [...params.path, "items"] }); + break; + } + case "object": { + const json = _json; + json.type = "object"; + json.properties = {}; + const shape = def.shape; + for (const key in shape) { + json.properties[key] = this.process(shape[key], { + ...params, + path: [...params.path, "properties", key] + }); + } + const allKeys = new Set(Object.keys(shape)); + const requiredKeys = new Set([...allKeys].filter((key) => { + const v = def.shape[key]._zod; + if (this.io === "input") { + return v.optin === void 0; + } else { + return v.optout === void 0; + } + })); + if (requiredKeys.size > 0) { + json.required = Array.from(requiredKeys); + } + if (def.catchall?._zod.def.type === "never") { + json.additionalProperties = false; + } else if (!def.catchall) { + if (this.io === "output") + json.additionalProperties = false; + } else if (def.catchall) { + json.additionalProperties = this.process(def.catchall, { + ...params, + path: [...params.path, "additionalProperties"] + }); + } + break; + } + case "union": { + const json = _json; + json.anyOf = def.options.map((x, i) => this.process(x, { + ...params, + path: [...params.path, "anyOf", i] + })); + break; + } + case "intersection": { + const json = _json; + const a = this.process(def.left, { + ...params, + path: [...params.path, "allOf", 0] + }); + const b = this.process(def.right, { + ...params, + path: [...params.path, "allOf", 1] + }); + const isSimpleIntersection = (val) => "allOf" in val && Object.keys(val).length === 1; + const allOf = [ + ...isSimpleIntersection(a) ? a.allOf : [a], + ...isSimpleIntersection(b) ? b.allOf : [b] + ]; + json.allOf = allOf; + break; + } + case "tuple": { + const json = _json; + json.type = "array"; + const prefixItems = def.items.map((x, i) => this.process(x, { ...params, path: [...params.path, "prefixItems", i] })); + if (this.target === "draft-2020-12") { + json.prefixItems = prefixItems; + } else { + json.items = prefixItems; + } + if (def.rest) { + const rest = this.process(def.rest, { + ...params, + path: [...params.path, "items"] + }); + if (this.target === "draft-2020-12") { + json.items = rest; + } else { + json.additionalItems = rest; + } + } + if (def.rest) { + json.items = this.process(def.rest, { + ...params, + path: [...params.path, "items"] + }); + } + const { minimum, maximum } = schema._zod.bag; + if (typeof minimum === "number") + json.minItems = minimum; + if (typeof maximum === "number") + json.maxItems = maximum; + break; + } + case "record": { + const json = _json; + json.type = "object"; + json.propertyNames = this.process(def.keyType, { ...params, path: [...params.path, "propertyNames"] }); + json.additionalProperties = this.process(def.valueType, { + ...params, + path: [...params.path, "additionalProperties"] + }); + break; + } + case "map": { + if (this.unrepresentable === "throw") { + throw new Error("Map cannot be represented in JSON Schema"); + } + break; + } + case "set": { + if (this.unrepresentable === "throw") { + throw new Error("Set cannot be represented in JSON Schema"); + } + break; + } + case "enum": { + const json = _json; + const values = getEnumValues(def.entries); + if (values.every((v) => typeof v === "number")) + json.type = "number"; + if (values.every((v) => typeof v === "string")) + json.type = "string"; + json.enum = values; + break; + } + case "literal": { + const json = _json; + const vals = []; + for (const val of def.values) { + if (val === void 0) { + if (this.unrepresentable === "throw") { + throw new Error("Literal `undefined` cannot be represented in JSON Schema"); + } else { + } + } else if (typeof val === "bigint") { + if (this.unrepresentable === "throw") { + throw new Error("BigInt literals cannot be represented in JSON Schema"); + } else { + vals.push(Number(val)); + } + } else { + vals.push(val); + } + } + if (vals.length === 0) { + } else if (vals.length === 1) { + const val = vals[0]; + json.type = val === null ? "null" : typeof val; + json.const = val; + } else { + if (vals.every((v) => typeof v === "number")) + json.type = "number"; + if (vals.every((v) => typeof v === "string")) + json.type = "string"; + if (vals.every((v) => typeof v === "boolean")) + json.type = "string"; + if (vals.every((v) => v === null)) + json.type = "null"; + json.enum = vals; + } + break; + } + case "file": { + const json = _json; + const file = { + type: "string", + format: "binary", + contentEncoding: "binary" + }; + const { minimum, maximum, mime } = schema._zod.bag; + if (minimum !== void 0) + file.minLength = minimum; + if (maximum !== void 0) + file.maxLength = maximum; + if (mime) { + if (mime.length === 1) { + file.contentMediaType = mime[0]; + Object.assign(json, file); + } else { + json.anyOf = mime.map((m) => { + const mFile = { ...file, contentMediaType: m }; + return mFile; + }); + } + } else { + Object.assign(json, file); + } + break; + } + case "transform": { + if (this.unrepresentable === "throw") { + throw new Error("Transforms cannot be represented in JSON Schema"); + } + break; + } + case "nullable": { + const inner = this.process(def.innerType, params); + _json.anyOf = [inner, { type: "null" }]; + break; + } + case "nonoptional": { + this.process(def.innerType, params); + result.ref = def.innerType; + break; + } + case "success": { + const json = _json; + json.type = "boolean"; + break; + } + case "default": { + this.process(def.innerType, params); + result.ref = def.innerType; + _json.default = JSON.parse(JSON.stringify(def.defaultValue)); + break; + } + case "prefault": { + this.process(def.innerType, params); + result.ref = def.innerType; + if (this.io === "input") + _json._prefault = JSON.parse(JSON.stringify(def.defaultValue)); + break; + } + case "catch": { + this.process(def.innerType, params); + result.ref = def.innerType; + let catchValue; + try { + catchValue = def.catchValue(void 0); + } catch { + throw new Error("Dynamic catch values are not supported in JSON Schema"); + } + _json.default = catchValue; + break; + } + case "nan": { + if (this.unrepresentable === "throw") { + throw new Error("NaN cannot be represented in JSON Schema"); + } + break; + } + case "template_literal": { + const json = _json; + const pattern = schema._zod.pattern; + if (!pattern) + throw new Error("Pattern not found in template literal"); + json.type = "string"; + json.pattern = pattern.source; + break; + } + case "pipe": { + const innerType = this.io === "input" ? def.in._zod.def.type === "transform" ? def.out : def.in : def.out; + this.process(innerType, params); + result.ref = innerType; + break; + } + case "readonly": { + this.process(def.innerType, params); + result.ref = def.innerType; + _json.readOnly = true; + break; + } + // passthrough types + case "promise": { + this.process(def.innerType, params); + result.ref = def.innerType; + break; + } + case "optional": { + this.process(def.innerType, params); + result.ref = def.innerType; + break; + } + case "lazy": { + const innerType = schema._zod.innerType; + this.process(innerType, params); + result.ref = innerType; + break; + } + case "custom": { + if (this.unrepresentable === "throw") { + throw new Error("Custom types cannot be represented in JSON Schema"); + } + break; + } + default: { + def; + } + } + } + } + const meta = this.metadataRegistry.get(schema); + if (meta) + Object.assign(result.schema, meta); + if (this.io === "input" && isTransforming(schema)) { + delete result.schema.examples; + delete result.schema.default; + } + if (this.io === "input" && result.schema._prefault) + (_a = result.schema).default ?? (_a.default = result.schema._prefault); + delete result.schema._prefault; + const _result = this.seen.get(schema); + return _result.schema; + } + emit(schema, _params) { + const params = { + cycles: _params?.cycles ?? "ref", + reused: _params?.reused ?? "inline", + // unrepresentable: _params?.unrepresentable ?? "throw", + // uri: _params?.uri ?? ((id) => `${id}`), + external: _params?.external ?? void 0 + }; + const root = this.seen.get(schema); + if (!root) + throw new Error("Unprocessed schema. This is a bug in Zod."); + const makeURI = (entry) => { + const defsSegment = this.target === "draft-2020-12" ? "$defs" : "definitions"; + if (params.external) { + const externalId = params.external.registry.get(entry[0])?.id; + const uriGenerator = params.external.uri ?? ((id2) => id2); + if (externalId) { + return { ref: uriGenerator(externalId) }; + } + const id = entry[1].defId ?? entry[1].schema.id ?? `schema${this.counter++}`; + entry[1].defId = id; + return { defId: id, ref: `${uriGenerator("__shared")}#/${defsSegment}/${id}` }; + } + if (entry[1] === root) { + return { ref: "#" }; + } + const uriPrefix = `#`; + const defUriPrefix = `${uriPrefix}/${defsSegment}/`; + const defId = entry[1].schema.id ?? `__schema${this.counter++}`; + return { defId, ref: defUriPrefix + defId }; + }; + const extractToDef = (entry) => { + if (entry[1].schema.$ref) { + return; + } + const seen = entry[1]; + const { ref, defId } = makeURI(entry); + seen.def = { ...seen.schema }; + if (defId) + seen.defId = defId; + const schema2 = seen.schema; + for (const key in schema2) { + delete schema2[key]; + } + schema2.$ref = ref; + }; + if (params.cycles === "throw") { + for (const entry of this.seen.entries()) { + const seen = entry[1]; + if (seen.cycle) { + throw new Error(`Cycle detected: #/${seen.cycle?.join("/")}/ + +Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.`); + } + } + } + for (const entry of this.seen.entries()) { + const seen = entry[1]; + if (schema === entry[0]) { + extractToDef(entry); + continue; + } + if (params.external) { + const ext = params.external.registry.get(entry[0])?.id; + if (schema !== entry[0] && ext) { + extractToDef(entry); + continue; + } + } + const id = this.metadataRegistry.get(entry[0])?.id; + if (id) { + extractToDef(entry); + continue; + } + if (seen.cycle) { + extractToDef(entry); + continue; + } + if (seen.count > 1) { + if (params.reused === "ref") { + extractToDef(entry); + continue; + } + } + } + const flattenRef = (zodSchema, params2) => { + const seen = this.seen.get(zodSchema); + const schema2 = seen.def ?? seen.schema; + const _cached = { ...schema2 }; + if (seen.ref === null) { + return; + } + const ref = seen.ref; + seen.ref = null; + if (ref) { + flattenRef(ref, params2); + const refSchema = this.seen.get(ref).schema; + if (refSchema.$ref && params2.target === "draft-7") { + schema2.allOf = schema2.allOf ?? []; + schema2.allOf.push(refSchema); + } else { + Object.assign(schema2, refSchema); + Object.assign(schema2, _cached); + } + } + if (!seen.isParent) + this.override({ + zodSchema, + jsonSchema: schema2, + path: seen.path ?? [] + }); + }; + for (const entry of [...this.seen.entries()].reverse()) { + flattenRef(entry[0], { target: this.target }); + } + const result = {}; + if (this.target === "draft-2020-12") { + result.$schema = "https://json-schema.org/draft/2020-12/schema"; + } else if (this.target === "draft-7") { + result.$schema = "http://json-schema.org/draft-07/schema#"; + } else { + console.warn(`Invalid target: ${this.target}`); + } + if (params.external?.uri) { + const id = params.external.registry.get(schema)?.id; + if (!id) + throw new Error("Schema is missing an `id` property"); + result.$id = params.external.uri(id); + } + Object.assign(result, root.def); + const defs = params.external?.defs ?? {}; + for (const entry of this.seen.entries()) { + const seen = entry[1]; + if (seen.def && seen.defId) { + defs[seen.defId] = seen.def; + } + } + if (params.external) { + } else { + if (Object.keys(defs).length > 0) { + if (this.target === "draft-2020-12") { + result.$defs = defs; + } else { + result.definitions = defs; + } + } + } + try { + return JSON.parse(JSON.stringify(result)); + } catch (_err) { + throw new Error("Error converting schema to JSON."); + } + } +}; +function toJSONSchema(input, _params) { + if (input instanceof $ZodRegistry) { + const gen2 = new JSONSchemaGenerator(_params); + const defs = {}; + for (const entry of input._idmap.entries()) { + const [_, schema] = entry; + gen2.process(schema); + } + const schemas = {}; + const external = { + registry: input, + uri: _params?.uri, + defs + }; + for (const entry of input._idmap.entries()) { + const [key, schema] = entry; + schemas[key] = gen2.emit(schema, { + ..._params, + external + }); + } + if (Object.keys(defs).length > 0) { + const defsSegment = gen2.target === "draft-2020-12" ? "$defs" : "definitions"; + schemas.__shared = { + [defsSegment]: defs + }; + } + return { schemas }; + } + const gen = new JSONSchemaGenerator(_params); + gen.process(input); + return gen.emit(input, _params); +} +function isTransforming(_schema, _ctx) { + const ctx = _ctx ?? { seen: /* @__PURE__ */ new Set() }; + if (ctx.seen.has(_schema)) + return false; + ctx.seen.add(_schema); + const schema = _schema; + const def = schema._zod.def; + switch (def.type) { + case "string": + case "number": + case "bigint": + case "boolean": + case "date": + case "symbol": + case "undefined": + case "null": + case "any": + case "unknown": + case "never": + case "void": + case "literal": + case "enum": + case "nan": + case "file": + case "template_literal": + return false; + case "array": { + return isTransforming(def.element, ctx); + } + case "object": { + for (const key in def.shape) { + if (isTransforming(def.shape[key], ctx)) + return true; + } + return false; + } + case "union": { + for (const option of def.options) { + if (isTransforming(option, ctx)) + return true; + } + return false; + } + case "intersection": { + return isTransforming(def.left, ctx) || isTransforming(def.right, ctx); + } + case "tuple": { + for (const item of def.items) { + if (isTransforming(item, ctx)) + return true; + } + if (def.rest && isTransforming(def.rest, ctx)) + return true; + return false; + } + case "record": { + return isTransforming(def.keyType, ctx) || isTransforming(def.valueType, ctx); + } + case "map": { + return isTransforming(def.keyType, ctx) || isTransforming(def.valueType, ctx); + } + case "set": { + return isTransforming(def.valueType, ctx); + } + // inner types + case "promise": + case "optional": + case "nonoptional": + case "nullable": + case "readonly": + return isTransforming(def.innerType, ctx); + case "lazy": + return isTransforming(def.getter(), ctx); + case "default": { + return isTransforming(def.innerType, ctx); + } + case "prefault": { + return isTransforming(def.innerType, ctx); + } + case "custom": { + return false; + } + case "transform": { + return true; + } + case "pipe": { + return isTransforming(def.in, ctx) || isTransforming(def.out, ctx); + } + case "success": { + return false; + } + case "catch": { + return false; + } + default: + def; + } + throw new Error(`Unknown schema type: ${def.type}`); +} + +// node_modules/zod/v4/mini/schemas.js +var ZodMiniType = /* @__PURE__ */ $constructor("ZodMiniType", (inst, def) => { + if (!inst._zod) + throw new Error("Uninitialized schema in ZodMiniType."); + $ZodType.init(inst, def); + inst.def = def; + inst.parse = (data, params) => parse2(inst, data, params, { callee: inst.parse }); + inst.safeParse = (data, params) => safeParse(inst, data, params); + inst.parseAsync = async (data, params) => parseAsync(inst, data, params, { callee: inst.parseAsync }); + inst.safeParseAsync = async (data, params) => safeParseAsync(inst, data, params); + inst.check = (...checks) => { + return inst.clone( + { + ...def, + checks: [ + ...def.checks ?? [], + ...checks.map((ch) => typeof ch === "function" ? { _zod: { check: ch, def: { check: "custom" }, onattach: [] } } : ch) + ] + } + // { parent: true } + ); + }; + inst.clone = (_def, params) => clone(inst, _def, params); + inst.brand = () => inst; + inst.register = ((reg, meta) => { + reg.add(inst, meta); + return inst; + }); +}); +var ZodMiniObject = /* @__PURE__ */ $constructor("ZodMiniObject", (inst, def) => { + $ZodObject.init(inst, def); + ZodMiniType.init(inst, def); + util_exports.defineLazy(inst, "shape", () => def.shape); +}); +function object(shape, params) { + const def = { + type: "object", + get shape() { + util_exports.assignProp(this, "shape", { ...shape }); + return this.shape; + }, + ...util_exports.normalizeParams(params) + }; + return new ZodMiniObject(def); +} + +// node_modules/@modelcontextprotocol/sdk/dist/esm/server/zod-compat.js +function isZ4Schema(s) { + const schema = s; + return !!schema._zod; +} +function objectFromShape(shape) { + const values = Object.values(shape); + if (values.length === 0) + return object({}); + const allV4 = values.every(isZ4Schema); + const allV3 = values.every((s) => !isZ4Schema(s)); + if (allV4) + return object(shape); + if (allV3) + return objectType(shape); + throw new Error("Mixed Zod versions detected in object shape."); +} +function safeParse2(schema, data) { + if (isZ4Schema(schema)) { + const result2 = safeParse(schema, data); + return result2; + } + const v3Schema = schema; + const result = v3Schema.safeParse(data); + return result; +} +async function safeParseAsync2(schema, data) { + if (isZ4Schema(schema)) { + const result2 = await safeParseAsync(schema, data); + return result2; + } + const v3Schema = schema; + const result = await v3Schema.safeParseAsync(data); + return result; +} +function getObjectShape(schema) { + if (!schema) + return void 0; + let rawShape; + if (isZ4Schema(schema)) { + const v4Schema = schema; + rawShape = v4Schema._zod?.def?.shape; + } else { + const v3Schema = schema; + rawShape = v3Schema.shape; + } + if (!rawShape) + return void 0; + if (typeof rawShape === "function") { + try { + return rawShape(); + } catch { + return void 0; + } + } + return rawShape; +} +function normalizeObjectSchema(schema) { + if (!schema) + return void 0; + if (typeof schema === "object") { + const asV3 = schema; + const asV4 = schema; + if (!asV3._def && !asV4._zod) { + const values = Object.values(schema); + if (values.length > 0 && values.every((v) => typeof v === "object" && v !== null && (v._def !== void 0 || v._zod !== void 0 || typeof v.parse === "function"))) { + return objectFromShape(schema); + } + } + } + if (isZ4Schema(schema)) { + const v4Schema = schema; + const def = v4Schema._zod?.def; + if (def && (def.type === "object" || def.shape !== void 0)) { + return schema; + } + } else { + const v3Schema = schema; + if (v3Schema.shape !== void 0) { + return schema; + } + } + return void 0; +} +function getParseErrorMessage(error2) { + if (error2 && typeof error2 === "object") { + if ("message" in error2 && typeof error2.message === "string") { + return error2.message; + } + if ("issues" in error2 && Array.isArray(error2.issues) && error2.issues.length > 0) { + const firstIssue = error2.issues[0]; + if (firstIssue && typeof firstIssue === "object" && "message" in firstIssue) { + return String(firstIssue.message); + } + } + try { + return JSON.stringify(error2); + } catch { + return String(error2); + } + } + return String(error2); +} +function getSchemaDescription(schema) { + return schema.description; +} +function isSchemaOptional(schema) { + if (isZ4Schema(schema)) { + const v4Schema = schema; + return v4Schema._zod?.def?.type === "optional"; + } + const v3Schema = schema; + if (typeof schema.isOptional === "function") { + return schema.isOptional(); + } + return v3Schema._def?.typeName === "ZodOptional"; +} +function getLiteralValue(schema) { + if (isZ4Schema(schema)) { + const v4Schema = schema; + const def2 = v4Schema._zod?.def; + if (def2) { + if (def2.value !== void 0) + return def2.value; + if (Array.isArray(def2.values) && def2.values.length > 0) { + return def2.values[0]; + } + } + } + const v3Schema = schema; + const def = v3Schema._def; + if (def) { + if (def.value !== void 0) + return def.value; + if (Array.isArray(def.values) && def.values.length > 0) { + return def.values[0]; + } + } + const directValue = schema.value; + if (directValue !== void 0) + return directValue; + return void 0; +} + +// node_modules/zod/v4/classic/iso.js +var iso_exports2 = {}; +__export(iso_exports2, { + ZodISODate: () => ZodISODate, + ZodISODateTime: () => ZodISODateTime, + ZodISODuration: () => ZodISODuration, + ZodISOTime: () => ZodISOTime, + date: () => date2, + datetime: () => datetime2, + duration: () => duration2, + time: () => time2 +}); +var ZodISODateTime = /* @__PURE__ */ $constructor("ZodISODateTime", (inst, def) => { + $ZodISODateTime.init(inst, def); + ZodStringFormat.init(inst, def); +}); +function datetime2(params) { + return _isoDateTime(ZodISODateTime, params); +} +var ZodISODate = /* @__PURE__ */ $constructor("ZodISODate", (inst, def) => { + $ZodISODate.init(inst, def); + ZodStringFormat.init(inst, def); +}); +function date2(params) { + return _isoDate(ZodISODate, params); +} +var ZodISOTime = /* @__PURE__ */ $constructor("ZodISOTime", (inst, def) => { + $ZodISOTime.init(inst, def); + ZodStringFormat.init(inst, def); +}); +function time2(params) { + return _isoTime(ZodISOTime, params); +} +var ZodISODuration = /* @__PURE__ */ $constructor("ZodISODuration", (inst, def) => { + $ZodISODuration.init(inst, def); + ZodStringFormat.init(inst, def); +}); +function duration2(params) { + return _isoDuration(ZodISODuration, params); +} + +// node_modules/zod/v4/classic/errors.js +var initializer2 = (inst, issues) => { + $ZodError.init(inst, issues); + inst.name = "ZodError"; + Object.defineProperties(inst, { + format: { + value: (mapper) => formatError2(inst, mapper) + // enumerable: false, + }, + flatten: { + value: (mapper) => flattenError(inst, mapper) + // enumerable: false, + }, + addIssue: { + value: (issue2) => inst.issues.push(issue2) + // enumerable: false, + }, + addIssues: { + value: (issues2) => inst.issues.push(...issues2) + // enumerable: false, + }, + isEmpty: { + get() { + return inst.issues.length === 0; + } + // enumerable: false, + } + }); +}; +var ZodError2 = $constructor("ZodError", initializer2); +var ZodRealError = $constructor("ZodError", initializer2, { + Parent: Error +}); + +// node_modules/zod/v4/classic/parse.js +var parse3 = /* @__PURE__ */ _parse(ZodRealError); +var parseAsync2 = /* @__PURE__ */ _parseAsync(ZodRealError); +var safeParse3 = /* @__PURE__ */ _safeParse(ZodRealError); +var safeParseAsync3 = /* @__PURE__ */ _safeParseAsync(ZodRealError); + +// node_modules/zod/v4/classic/schemas.js +var ZodType2 = /* @__PURE__ */ $constructor("ZodType", (inst, def) => { + $ZodType.init(inst, def); + inst.def = def; + Object.defineProperty(inst, "_def", { value: def }); + inst.check = (...checks) => { + return inst.clone( + { + ...def, + checks: [ + ...def.checks ?? [], + ...checks.map((ch) => typeof ch === "function" ? { _zod: { check: ch, def: { check: "custom" }, onattach: [] } } : ch) + ] + } + // { parent: true } + ); + }; + inst.clone = (def2, params) => clone(inst, def2, params); + inst.brand = () => inst; + inst.register = ((reg, meta) => { + reg.add(inst, meta); + return inst; + }); + inst.parse = (data, params) => parse3(inst, data, params, { callee: inst.parse }); + inst.safeParse = (data, params) => safeParse3(inst, data, params); + inst.parseAsync = async (data, params) => parseAsync2(inst, data, params, { callee: inst.parseAsync }); + inst.safeParseAsync = async (data, params) => safeParseAsync3(inst, data, params); + inst.spa = inst.safeParseAsync; + inst.refine = (check2, params) => inst.check(refine(check2, params)); + inst.superRefine = (refinement) => inst.check(superRefine(refinement)); + inst.overwrite = (fn) => inst.check(_overwrite(fn)); + inst.optional = () => optional(inst); + inst.nullable = () => nullable(inst); + inst.nullish = () => optional(nullable(inst)); + inst.nonoptional = (params) => nonoptional(inst, params); + inst.array = () => array(inst); + inst.or = (arg) => union([inst, arg]); + inst.and = (arg) => intersection(inst, arg); + inst.transform = (tx) => pipe(inst, transform(tx)); + inst.default = (def2) => _default(inst, def2); + inst.prefault = (def2) => prefault(inst, def2); + inst.catch = (params) => _catch(inst, params); + inst.pipe = (target) => pipe(inst, target); + inst.readonly = () => readonly(inst); + inst.describe = (description) => { + const cl = inst.clone(); + globalRegistry.add(cl, { description }); + return cl; + }; + Object.defineProperty(inst, "description", { + get() { + return globalRegistry.get(inst)?.description; + }, + configurable: true + }); + inst.meta = (...args) => { + if (args.length === 0) { + return globalRegistry.get(inst); + } + const cl = inst.clone(); + globalRegistry.add(cl, args[0]); + return cl; + }; + inst.isOptional = () => inst.safeParse(void 0).success; + inst.isNullable = () => inst.safeParse(null).success; + return inst; +}); +var _ZodString = /* @__PURE__ */ $constructor("_ZodString", (inst, def) => { + $ZodString.init(inst, def); + ZodType2.init(inst, def); + const bag = inst._zod.bag; + inst.format = bag.format ?? null; + inst.minLength = bag.minimum ?? null; + inst.maxLength = bag.maximum ?? null; + inst.regex = (...args) => inst.check(_regex(...args)); + inst.includes = (...args) => inst.check(_includes(...args)); + inst.startsWith = (...args) => inst.check(_startsWith(...args)); + inst.endsWith = (...args) => inst.check(_endsWith(...args)); + inst.min = (...args) => inst.check(_minLength(...args)); + inst.max = (...args) => inst.check(_maxLength(...args)); + inst.length = (...args) => inst.check(_length(...args)); + inst.nonempty = (...args) => inst.check(_minLength(1, ...args)); + inst.lowercase = (params) => inst.check(_lowercase(params)); + inst.uppercase = (params) => inst.check(_uppercase(params)); + inst.trim = () => inst.check(_trim()); + inst.normalize = (...args) => inst.check(_normalize(...args)); + inst.toLowerCase = () => inst.check(_toLowerCase()); + inst.toUpperCase = () => inst.check(_toUpperCase()); +}); +var ZodString2 = /* @__PURE__ */ $constructor("ZodString", (inst, def) => { + $ZodString.init(inst, def); + _ZodString.init(inst, def); + inst.email = (params) => inst.check(_email(ZodEmail, params)); + inst.url = (params) => inst.check(_url(ZodURL, params)); + inst.jwt = (params) => inst.check(_jwt(ZodJWT, params)); + inst.emoji = (params) => inst.check(_emoji2(ZodEmoji, params)); + inst.guid = (params) => inst.check(_guid(ZodGUID, params)); + inst.uuid = (params) => inst.check(_uuid(ZodUUID, params)); + inst.uuidv4 = (params) => inst.check(_uuidv4(ZodUUID, params)); + inst.uuidv6 = (params) => inst.check(_uuidv6(ZodUUID, params)); + inst.uuidv7 = (params) => inst.check(_uuidv7(ZodUUID, params)); + inst.nanoid = (params) => inst.check(_nanoid(ZodNanoID, params)); + inst.guid = (params) => inst.check(_guid(ZodGUID, params)); + inst.cuid = (params) => inst.check(_cuid(ZodCUID, params)); + inst.cuid2 = (params) => inst.check(_cuid2(ZodCUID2, params)); + inst.ulid = (params) => inst.check(_ulid(ZodULID, params)); + inst.base64 = (params) => inst.check(_base64(ZodBase64, params)); + inst.base64url = (params) => inst.check(_base64url(ZodBase64URL, params)); + inst.xid = (params) => inst.check(_xid(ZodXID, params)); + inst.ksuid = (params) => inst.check(_ksuid(ZodKSUID, params)); + inst.ipv4 = (params) => inst.check(_ipv4(ZodIPv4, params)); + inst.ipv6 = (params) => inst.check(_ipv6(ZodIPv6, params)); + inst.cidrv4 = (params) => inst.check(_cidrv4(ZodCIDRv4, params)); + inst.cidrv6 = (params) => inst.check(_cidrv6(ZodCIDRv6, params)); + inst.e164 = (params) => inst.check(_e164(ZodE164, params)); + inst.datetime = (params) => inst.check(datetime2(params)); + inst.date = (params) => inst.check(date2(params)); + inst.time = (params) => inst.check(time2(params)); + inst.duration = (params) => inst.check(duration2(params)); +}); +function string2(params) { + return _string(ZodString2, params); +} +var ZodStringFormat = /* @__PURE__ */ $constructor("ZodStringFormat", (inst, def) => { + $ZodStringFormat.init(inst, def); + _ZodString.init(inst, def); +}); +var ZodEmail = /* @__PURE__ */ $constructor("ZodEmail", (inst, def) => { + $ZodEmail.init(inst, def); + ZodStringFormat.init(inst, def); +}); +var ZodGUID = /* @__PURE__ */ $constructor("ZodGUID", (inst, def) => { + $ZodGUID.init(inst, def); + ZodStringFormat.init(inst, def); +}); +var ZodUUID = /* @__PURE__ */ $constructor("ZodUUID", (inst, def) => { + $ZodUUID.init(inst, def); + ZodStringFormat.init(inst, def); +}); +var ZodURL = /* @__PURE__ */ $constructor("ZodURL", (inst, def) => { + $ZodURL.init(inst, def); + ZodStringFormat.init(inst, def); +}); +function url(params) { + return _url(ZodURL, params); +} +var ZodEmoji = /* @__PURE__ */ $constructor("ZodEmoji", (inst, def) => { + $ZodEmoji.init(inst, def); + ZodStringFormat.init(inst, def); +}); +var ZodNanoID = /* @__PURE__ */ $constructor("ZodNanoID", (inst, def) => { + $ZodNanoID.init(inst, def); + ZodStringFormat.init(inst, def); +}); +var ZodCUID = /* @__PURE__ */ $constructor("ZodCUID", (inst, def) => { + $ZodCUID.init(inst, def); + ZodStringFormat.init(inst, def); +}); +var ZodCUID2 = /* @__PURE__ */ $constructor("ZodCUID2", (inst, def) => { + $ZodCUID2.init(inst, def); + ZodStringFormat.init(inst, def); +}); +var ZodULID = /* @__PURE__ */ $constructor("ZodULID", (inst, def) => { + $ZodULID.init(inst, def); + ZodStringFormat.init(inst, def); +}); +var ZodXID = /* @__PURE__ */ $constructor("ZodXID", (inst, def) => { + $ZodXID.init(inst, def); + ZodStringFormat.init(inst, def); +}); +var ZodKSUID = /* @__PURE__ */ $constructor("ZodKSUID", (inst, def) => { + $ZodKSUID.init(inst, def); + ZodStringFormat.init(inst, def); +}); +var ZodIPv4 = /* @__PURE__ */ $constructor("ZodIPv4", (inst, def) => { + $ZodIPv4.init(inst, def); + ZodStringFormat.init(inst, def); +}); +var ZodIPv6 = /* @__PURE__ */ $constructor("ZodIPv6", (inst, def) => { + $ZodIPv6.init(inst, def); + ZodStringFormat.init(inst, def); +}); +var ZodCIDRv4 = /* @__PURE__ */ $constructor("ZodCIDRv4", (inst, def) => { + $ZodCIDRv4.init(inst, def); + ZodStringFormat.init(inst, def); +}); +var ZodCIDRv6 = /* @__PURE__ */ $constructor("ZodCIDRv6", (inst, def) => { + $ZodCIDRv6.init(inst, def); + ZodStringFormat.init(inst, def); +}); +var ZodBase64 = /* @__PURE__ */ $constructor("ZodBase64", (inst, def) => { + $ZodBase64.init(inst, def); + ZodStringFormat.init(inst, def); +}); +var ZodBase64URL = /* @__PURE__ */ $constructor("ZodBase64URL", (inst, def) => { + $ZodBase64URL.init(inst, def); + ZodStringFormat.init(inst, def); +}); +var ZodE164 = /* @__PURE__ */ $constructor("ZodE164", (inst, def) => { + $ZodE164.init(inst, def); + ZodStringFormat.init(inst, def); +}); +var ZodJWT = /* @__PURE__ */ $constructor("ZodJWT", (inst, def) => { + $ZodJWT.init(inst, def); + ZodStringFormat.init(inst, def); +}); +var ZodNumber2 = /* @__PURE__ */ $constructor("ZodNumber", (inst, def) => { + $ZodNumber.init(inst, def); + ZodType2.init(inst, def); + inst.gt = (value, params) => inst.check(_gt(value, params)); + inst.gte = (value, params) => inst.check(_gte(value, params)); + inst.min = (value, params) => inst.check(_gte(value, params)); + inst.lt = (value, params) => inst.check(_lt(value, params)); + inst.lte = (value, params) => inst.check(_lte(value, params)); + inst.max = (value, params) => inst.check(_lte(value, params)); + inst.int = (params) => inst.check(int(params)); + inst.safe = (params) => inst.check(int(params)); + inst.positive = (params) => inst.check(_gt(0, params)); + inst.nonnegative = (params) => inst.check(_gte(0, params)); + inst.negative = (params) => inst.check(_lt(0, params)); + inst.nonpositive = (params) => inst.check(_lte(0, params)); + inst.multipleOf = (value, params) => inst.check(_multipleOf(value, params)); + inst.step = (value, params) => inst.check(_multipleOf(value, params)); + inst.finite = () => inst; + const bag = inst._zod.bag; + inst.minValue = Math.max(bag.minimum ?? Number.NEGATIVE_INFINITY, bag.exclusiveMinimum ?? Number.NEGATIVE_INFINITY) ?? null; + inst.maxValue = Math.min(bag.maximum ?? Number.POSITIVE_INFINITY, bag.exclusiveMaximum ?? Number.POSITIVE_INFINITY) ?? null; + inst.isInt = (bag.format ?? "").includes("int") || Number.isSafeInteger(bag.multipleOf ?? 0.5); + inst.isFinite = true; + inst.format = bag.format ?? null; +}); +function number2(params) { + return _number(ZodNumber2, params); +} +var ZodNumberFormat = /* @__PURE__ */ $constructor("ZodNumberFormat", (inst, def) => { + $ZodNumberFormat.init(inst, def); + ZodNumber2.init(inst, def); +}); +function int(params) { + return _int(ZodNumberFormat, params); +} +var ZodBoolean2 = /* @__PURE__ */ $constructor("ZodBoolean", (inst, def) => { + $ZodBoolean.init(inst, def); + ZodType2.init(inst, def); +}); +function boolean2(params) { + return _boolean(ZodBoolean2, params); +} +var ZodBigInt2 = /* @__PURE__ */ $constructor("ZodBigInt", (inst, def) => { + $ZodBigInt.init(inst, def); + ZodType2.init(inst, def); + inst.gte = (value, params) => inst.check(_gte(value, params)); + inst.min = (value, params) => inst.check(_gte(value, params)); + inst.gt = (value, params) => inst.check(_gt(value, params)); + inst.gte = (value, params) => inst.check(_gte(value, params)); + inst.min = (value, params) => inst.check(_gte(value, params)); + inst.lt = (value, params) => inst.check(_lt(value, params)); + inst.lte = (value, params) => inst.check(_lte(value, params)); + inst.max = (value, params) => inst.check(_lte(value, params)); + inst.positive = (params) => inst.check(_gt(BigInt(0), params)); + inst.negative = (params) => inst.check(_lt(BigInt(0), params)); + inst.nonpositive = (params) => inst.check(_lte(BigInt(0), params)); + inst.nonnegative = (params) => inst.check(_gte(BigInt(0), params)); + inst.multipleOf = (value, params) => inst.check(_multipleOf(value, params)); + const bag = inst._zod.bag; + inst.minValue = bag.minimum ?? null; + inst.maxValue = bag.maximum ?? null; + inst.format = bag.format ?? null; +}); +var ZodNull2 = /* @__PURE__ */ $constructor("ZodNull", (inst, def) => { + $ZodNull.init(inst, def); + ZodType2.init(inst, def); +}); +function _null3(params) { + return _null2(ZodNull2, params); +} +var ZodAny2 = /* @__PURE__ */ $constructor("ZodAny", (inst, def) => { + $ZodAny.init(inst, def); + ZodType2.init(inst, def); +}); +function any() { + return _any(ZodAny2); +} +var ZodUnknown2 = /* @__PURE__ */ $constructor("ZodUnknown", (inst, def) => { + $ZodUnknown.init(inst, def); + ZodType2.init(inst, def); +}); +function unknown() { + return _unknown(ZodUnknown2); +} +var ZodNever2 = /* @__PURE__ */ $constructor("ZodNever", (inst, def) => { + $ZodNever.init(inst, def); + ZodType2.init(inst, def); +}); +function never(params) { + return _never(ZodNever2, params); +} +var ZodDate2 = /* @__PURE__ */ $constructor("ZodDate", (inst, def) => { + $ZodDate.init(inst, def); + ZodType2.init(inst, def); + inst.min = (value, params) => inst.check(_gte(value, params)); + inst.max = (value, params) => inst.check(_lte(value, params)); + const c = inst._zod.bag; + inst.minDate = c.minimum ? new Date(c.minimum) : null; + inst.maxDate = c.maximum ? new Date(c.maximum) : null; +}); +var ZodArray2 = /* @__PURE__ */ $constructor("ZodArray", (inst, def) => { + $ZodArray.init(inst, def); + ZodType2.init(inst, def); + inst.element = def.element; + inst.min = (minLength, params) => inst.check(_minLength(minLength, params)); + inst.nonempty = (params) => inst.check(_minLength(1, params)); + inst.max = (maxLength, params) => inst.check(_maxLength(maxLength, params)); + inst.length = (len, params) => inst.check(_length(len, params)); + inst.unwrap = () => inst.element; +}); +function array(element, params) { + return _array(ZodArray2, element, params); +} +var ZodObject2 = /* @__PURE__ */ $constructor("ZodObject", (inst, def) => { + $ZodObject.init(inst, def); + ZodType2.init(inst, def); + util_exports.defineLazy(inst, "shape", () => def.shape); + inst.keyof = () => _enum(Object.keys(inst._zod.def.shape)); + inst.catchall = (catchall) => inst.clone({ ...inst._zod.def, catchall }); + inst.passthrough = () => inst.clone({ ...inst._zod.def, catchall: unknown() }); + inst.loose = () => inst.clone({ ...inst._zod.def, catchall: unknown() }); + inst.strict = () => inst.clone({ ...inst._zod.def, catchall: never() }); + inst.strip = () => inst.clone({ ...inst._zod.def, catchall: void 0 }); + inst.extend = (incoming) => { + return util_exports.extend(inst, incoming); + }; + inst.merge = (other) => util_exports.merge(inst, other); + inst.pick = (mask) => util_exports.pick(inst, mask); + inst.omit = (mask) => util_exports.omit(inst, mask); + inst.partial = (...args) => util_exports.partial(ZodOptional2, inst, args[0]); + inst.required = (...args) => util_exports.required(ZodNonOptional, inst, args[0]); +}); +function object2(shape, params) { + const def = { + type: "object", + get shape() { + util_exports.assignProp(this, "shape", { ...shape }); + return this.shape; + }, + ...util_exports.normalizeParams(params) + }; + return new ZodObject2(def); +} +function looseObject(shape, params) { + return new ZodObject2({ + type: "object", + get shape() { + util_exports.assignProp(this, "shape", { ...shape }); + return this.shape; + }, + catchall: unknown(), + ...util_exports.normalizeParams(params) + }); +} +var ZodUnion2 = /* @__PURE__ */ $constructor("ZodUnion", (inst, def) => { + $ZodUnion.init(inst, def); + ZodType2.init(inst, def); + inst.options = def.options; +}); +function union(options, params) { + return new ZodUnion2({ + type: "union", + options, + ...util_exports.normalizeParams(params) + }); +} +var ZodDiscriminatedUnion2 = /* @__PURE__ */ $constructor("ZodDiscriminatedUnion", (inst, def) => { + ZodUnion2.init(inst, def); + $ZodDiscriminatedUnion.init(inst, def); +}); +function discriminatedUnion(discriminator, options, params) { + return new ZodDiscriminatedUnion2({ + type: "union", + options, + discriminator, + ...util_exports.normalizeParams(params) + }); +} +var ZodIntersection2 = /* @__PURE__ */ $constructor("ZodIntersection", (inst, def) => { + $ZodIntersection.init(inst, def); + ZodType2.init(inst, def); +}); +function intersection(left, right) { + return new ZodIntersection2({ + type: "intersection", + left, + right + }); +} +var ZodRecord2 = /* @__PURE__ */ $constructor("ZodRecord", (inst, def) => { + $ZodRecord.init(inst, def); + ZodType2.init(inst, def); + inst.keyType = def.keyType; + inst.valueType = def.valueType; +}); +function record(keyType, valueType, params) { + return new ZodRecord2({ + type: "record", + keyType, + valueType, + ...util_exports.normalizeParams(params) + }); +} +var ZodEnum2 = /* @__PURE__ */ $constructor("ZodEnum", (inst, def) => { + $ZodEnum.init(inst, def); + ZodType2.init(inst, def); + inst.enum = def.entries; + inst.options = Object.values(def.entries); + const keys = new Set(Object.keys(def.entries)); + inst.extract = (values, params) => { + const newEntries = {}; + for (const value of values) { + if (keys.has(value)) { + newEntries[value] = def.entries[value]; + } else + throw new Error(`Key ${value} not found in enum`); + } + return new ZodEnum2({ + ...def, + checks: [], + ...util_exports.normalizeParams(params), + entries: newEntries + }); + }; + inst.exclude = (values, params) => { + const newEntries = { ...def.entries }; + for (const value of values) { + if (keys.has(value)) { + delete newEntries[value]; + } else + throw new Error(`Key ${value} not found in enum`); + } + return new ZodEnum2({ + ...def, + checks: [], + ...util_exports.normalizeParams(params), + entries: newEntries + }); + }; +}); +function _enum(values, params) { + const entries = Array.isArray(values) ? Object.fromEntries(values.map((v) => [v, v])) : values; + return new ZodEnum2({ + type: "enum", + entries, + ...util_exports.normalizeParams(params) + }); +} +var ZodLiteral2 = /* @__PURE__ */ $constructor("ZodLiteral", (inst, def) => { + $ZodLiteral.init(inst, def); + ZodType2.init(inst, def); + inst.values = new Set(def.values); + Object.defineProperty(inst, "value", { + get() { + if (def.values.length > 1) { + throw new Error("This schema contains multiple valid literal values. Use `.values` instead."); + } + return def.values[0]; + } + }); +}); +function literal(value, params) { + return new ZodLiteral2({ + type: "literal", + values: Array.isArray(value) ? value : [value], + ...util_exports.normalizeParams(params) + }); +} +var ZodTransform = /* @__PURE__ */ $constructor("ZodTransform", (inst, def) => { + $ZodTransform.init(inst, def); + ZodType2.init(inst, def); + inst._zod.parse = (payload, _ctx) => { + payload.addIssue = (issue2) => { + if (typeof issue2 === "string") { + payload.issues.push(util_exports.issue(issue2, payload.value, def)); + } else { + const _issue = issue2; + if (_issue.fatal) + _issue.continue = false; + _issue.code ?? (_issue.code = "custom"); + _issue.input ?? (_issue.input = payload.value); + _issue.inst ?? (_issue.inst = inst); + _issue.continue ?? (_issue.continue = true); + payload.issues.push(util_exports.issue(_issue)); + } + }; + const output = def.transform(payload.value, payload); + if (output instanceof Promise) { + return output.then((output2) => { + payload.value = output2; + return payload; + }); + } + payload.value = output; + return payload; + }; +}); +function transform(fn) { + return new ZodTransform({ + type: "transform", + transform: fn + }); +} +var ZodOptional2 = /* @__PURE__ */ $constructor("ZodOptional", (inst, def) => { + $ZodOptional.init(inst, def); + ZodType2.init(inst, def); + inst.unwrap = () => inst._zod.def.innerType; +}); +function optional(innerType) { + return new ZodOptional2({ + type: "optional", + innerType + }); +} +var ZodNullable2 = /* @__PURE__ */ $constructor("ZodNullable", (inst, def) => { + $ZodNullable.init(inst, def); + ZodType2.init(inst, def); + inst.unwrap = () => inst._zod.def.innerType; +}); +function nullable(innerType) { + return new ZodNullable2({ + type: "nullable", + innerType + }); +} +var ZodDefault2 = /* @__PURE__ */ $constructor("ZodDefault", (inst, def) => { + $ZodDefault.init(inst, def); + ZodType2.init(inst, def); + inst.unwrap = () => inst._zod.def.innerType; + inst.removeDefault = inst.unwrap; +}); +function _default(innerType, defaultValue) { + return new ZodDefault2({ + type: "default", + innerType, + get defaultValue() { + return typeof defaultValue === "function" ? defaultValue() : defaultValue; + } + }); +} +var ZodPrefault = /* @__PURE__ */ $constructor("ZodPrefault", (inst, def) => { + $ZodPrefault.init(inst, def); + ZodType2.init(inst, def); + inst.unwrap = () => inst._zod.def.innerType; +}); +function prefault(innerType, defaultValue) { + return new ZodPrefault({ + type: "prefault", + innerType, + get defaultValue() { + return typeof defaultValue === "function" ? defaultValue() : defaultValue; + } + }); +} +var ZodNonOptional = /* @__PURE__ */ $constructor("ZodNonOptional", (inst, def) => { + $ZodNonOptional.init(inst, def); + ZodType2.init(inst, def); + inst.unwrap = () => inst._zod.def.innerType; +}); +function nonoptional(innerType, params) { + return new ZodNonOptional({ + type: "nonoptional", + innerType, + ...util_exports.normalizeParams(params) + }); +} +var ZodCatch2 = /* @__PURE__ */ $constructor("ZodCatch", (inst, def) => { + $ZodCatch.init(inst, def); + ZodType2.init(inst, def); + inst.unwrap = () => inst._zod.def.innerType; + inst.removeCatch = inst.unwrap; +}); +function _catch(innerType, catchValue) { + return new ZodCatch2({ + type: "catch", + innerType, + catchValue: typeof catchValue === "function" ? catchValue : () => catchValue + }); +} +var ZodPipe = /* @__PURE__ */ $constructor("ZodPipe", (inst, def) => { + $ZodPipe.init(inst, def); + ZodType2.init(inst, def); + inst.in = def.in; + inst.out = def.out; +}); +function pipe(in_, out) { + return new ZodPipe({ + type: "pipe", + in: in_, + out + // ...util.normalizeParams(params), + }); +} +var ZodReadonly2 = /* @__PURE__ */ $constructor("ZodReadonly", (inst, def) => { + $ZodReadonly.init(inst, def); + ZodType2.init(inst, def); +}); +function readonly(innerType) { + return new ZodReadonly2({ + type: "readonly", + innerType + }); +} +var ZodCustom = /* @__PURE__ */ $constructor("ZodCustom", (inst, def) => { + $ZodCustom.init(inst, def); + ZodType2.init(inst, def); +}); +function check(fn) { + const ch = new $ZodCheck({ + check: "custom" + // ...util.normalizeParams(params), + }); + ch._zod.check = fn; + return ch; +} +function custom3(fn, _params) { + return _custom(ZodCustom, fn ?? (() => true), _params); +} +function refine(fn, _params = {}) { + return _refine(ZodCustom, fn, _params); +} +function superRefine(fn) { + const ch = check((payload) => { + payload.addIssue = (issue2) => { + if (typeof issue2 === "string") { + payload.issues.push(util_exports.issue(issue2, payload.value, ch._zod.def)); + } else { + const _issue = issue2; + if (_issue.fatal) + _issue.continue = false; + _issue.code ?? (_issue.code = "custom"); + _issue.input ?? (_issue.input = payload.value); + _issue.inst ?? (_issue.inst = ch); + _issue.continue ?? (_issue.continue = !ch._zod.def.abort); + payload.issues.push(util_exports.issue(_issue)); + } + }; + return fn(payload.value, payload); + }); + return ch; +} +function preprocess(fn, schema) { + return pipe(transform(fn), schema); +} + +// node_modules/zod/v4/classic/compat.js +var ZodIssueCode2 = { + invalid_type: "invalid_type", + too_big: "too_big", + too_small: "too_small", + invalid_format: "invalid_format", + not_multiple_of: "not_multiple_of", + unrecognized_keys: "unrecognized_keys", + invalid_union: "invalid_union", + invalid_key: "invalid_key", + invalid_element: "invalid_element", + invalid_value: "invalid_value", + custom: "custom" +}; + +// node_modules/zod/v4/classic/coerce.js +var coerce_exports2 = {}; +__export(coerce_exports2, { + bigint: () => bigint2, + boolean: () => boolean3, + date: () => date3, + number: () => number3, + string: () => string3 +}); +function string3(params) { + return _coercedString(ZodString2, params); +} +function number3(params) { + return _coercedNumber(ZodNumber2, params); +} +function boolean3(params) { + return _coercedBoolean(ZodBoolean2, params); +} +function bigint2(params) { + return _coercedBigint(ZodBigInt2, params); +} +function date3(params) { + return _coercedDate(ZodDate2, params); +} + +// node_modules/zod/v4/classic/external.js +config(en_default2()); + +// node_modules/@modelcontextprotocol/sdk/dist/esm/types.js +var LATEST_PROTOCOL_VERSION = "2025-11-25"; +var DEFAULT_NEGOTIATED_PROTOCOL_VERSION = "2025-03-26"; +var SUPPORTED_PROTOCOL_VERSIONS = [LATEST_PROTOCOL_VERSION, "2025-06-18", "2025-03-26", "2024-11-05", "2024-10-07"]; +var RELATED_TASK_META_KEY = "io.modelcontextprotocol/related-task"; +var JSONRPC_VERSION = "2.0"; +var AssertObjectSchema = custom3((v) => v !== null && (typeof v === "object" || typeof v === "function")); +var ProgressTokenSchema = union([string2(), number2().int()]); +var CursorSchema = string2(); +var TaskCreationParamsSchema = looseObject({ + /** + * Requested duration in milliseconds to retain task from creation. + */ + ttl: number2().optional(), + /** + * Time in milliseconds to wait between task status requests. + */ + pollInterval: number2().optional() +}); +var TaskMetadataSchema = object2({ + ttl: number2().optional() +}); +var RelatedTaskMetadataSchema = object2({ + taskId: string2() +}); +var RequestMetaSchema = looseObject({ + /** + * If specified, the caller is requesting out-of-band progress notifications for this request (as represented by notifications/progress). The value of this parameter is an opaque token that will be attached to any subsequent notifications. The receiver is not obligated to provide these notifications. + */ + progressToken: ProgressTokenSchema.optional(), + /** + * If specified, this request is related to the provided task. + */ + [RELATED_TASK_META_KEY]: RelatedTaskMetadataSchema.optional() +}); +var BaseRequestParamsSchema = object2({ + /** + * See [General fields: `_meta`](/specification/draft/basic/index#meta) for notes on `_meta` usage. + */ + _meta: RequestMetaSchema.optional() +}); +var TaskAugmentedRequestParamsSchema = BaseRequestParamsSchema.extend({ + /** + * If specified, the caller is requesting task-augmented execution for this request. + * The request will return a CreateTaskResult immediately, and the actual result can be + * retrieved later via tasks/result. + * + * Task augmentation is subject to capability negotiation - receivers MUST declare support + * for task augmentation of specific request types in their capabilities. + */ + task: TaskMetadataSchema.optional() +}); +var isTaskAugmentedRequestParams = (value) => TaskAugmentedRequestParamsSchema.safeParse(value).success; +var RequestSchema = object2({ + method: string2(), + params: BaseRequestParamsSchema.loose().optional() +}); +var NotificationsParamsSchema = object2({ + /** + * See [MCP specification](https://github.com/modelcontextprotocol/modelcontextprotocol/blob/47339c03c143bb4ec01a26e721a1b8fe66634ebe/docs/specification/draft/basic/index.mdx#general-fields) + * for notes on _meta usage. + */ + _meta: RequestMetaSchema.optional() +}); +var NotificationSchema = object2({ + method: string2(), + params: NotificationsParamsSchema.loose().optional() +}); +var ResultSchema = looseObject({ + /** + * See [MCP specification](https://github.com/modelcontextprotocol/modelcontextprotocol/blob/47339c03c143bb4ec01a26e721a1b8fe66634ebe/docs/specification/draft/basic/index.mdx#general-fields) + * for notes on _meta usage. + */ + _meta: RequestMetaSchema.optional() +}); +var RequestIdSchema = union([string2(), number2().int()]); +var JSONRPCRequestSchema = object2({ + jsonrpc: literal(JSONRPC_VERSION), + id: RequestIdSchema, + ...RequestSchema.shape +}).strict(); +var isJSONRPCRequest = (value) => JSONRPCRequestSchema.safeParse(value).success; +var JSONRPCNotificationSchema = object2({ + jsonrpc: literal(JSONRPC_VERSION), + ...NotificationSchema.shape +}).strict(); +var isJSONRPCNotification = (value) => JSONRPCNotificationSchema.safeParse(value).success; +var JSONRPCResultResponseSchema = object2({ + jsonrpc: literal(JSONRPC_VERSION), + id: RequestIdSchema, + result: ResultSchema +}).strict(); +var isJSONRPCResultResponse = (value) => JSONRPCResultResponseSchema.safeParse(value).success; +var ErrorCode; +(function(ErrorCode2) { + ErrorCode2[ErrorCode2["ConnectionClosed"] = -32e3] = "ConnectionClosed"; + ErrorCode2[ErrorCode2["RequestTimeout"] = -32001] = "RequestTimeout"; + ErrorCode2[ErrorCode2["ParseError"] = -32700] = "ParseError"; + ErrorCode2[ErrorCode2["InvalidRequest"] = -32600] = "InvalidRequest"; + ErrorCode2[ErrorCode2["MethodNotFound"] = -32601] = "MethodNotFound"; + ErrorCode2[ErrorCode2["InvalidParams"] = -32602] = "InvalidParams"; + ErrorCode2[ErrorCode2["InternalError"] = -32603] = "InternalError"; + ErrorCode2[ErrorCode2["UrlElicitationRequired"] = -32042] = "UrlElicitationRequired"; +})(ErrorCode || (ErrorCode = {})); +var JSONRPCErrorResponseSchema = object2({ + jsonrpc: literal(JSONRPC_VERSION), + id: RequestIdSchema.optional(), + error: object2({ + /** + * The error type that occurred. + */ + code: number2().int(), + /** + * A short description of the error. The message SHOULD be limited to a concise single sentence. + */ + message: string2(), + /** + * Additional information about the error. The value of this member is defined by the sender (e.g. detailed error information, nested errors etc.). + */ + data: unknown().optional() + }) +}).strict(); +var isJSONRPCErrorResponse = (value) => JSONRPCErrorResponseSchema.safeParse(value).success; +var JSONRPCMessageSchema = union([ + JSONRPCRequestSchema, + JSONRPCNotificationSchema, + JSONRPCResultResponseSchema, + JSONRPCErrorResponseSchema +]); +var JSONRPCResponseSchema = union([JSONRPCResultResponseSchema, JSONRPCErrorResponseSchema]); +var EmptyResultSchema = ResultSchema.strict(); +var CancelledNotificationParamsSchema = NotificationsParamsSchema.extend({ + /** + * The ID of the request to cancel. + * + * This MUST correspond to the ID of a request previously issued in the same direction. + */ + requestId: RequestIdSchema.optional(), + /** + * An optional string describing the reason for the cancellation. This MAY be logged or presented to the user. + */ + reason: string2().optional() +}); +var CancelledNotificationSchema = NotificationSchema.extend({ + method: literal("notifications/cancelled"), + params: CancelledNotificationParamsSchema +}); +var IconSchema = object2({ + /** + * URL or data URI for the icon. + */ + src: string2(), + /** + * Optional MIME type for the icon. + */ + mimeType: string2().optional(), + /** + * Optional array of strings that specify sizes at which the icon can be used. + * Each string should be in WxH format (e.g., `"48x48"`, `"96x96"`) or `"any"` for scalable formats like SVG. + * + * If not provided, the client should assume that the icon can be used at any size. + */ + sizes: array(string2()).optional(), + /** + * Optional specifier for the theme this icon is designed for. `light` indicates + * the icon is designed to be used with a light background, and `dark` indicates + * the icon is designed to be used with a dark background. + * + * If not provided, the client should assume the icon can be used with any theme. + */ + theme: _enum(["light", "dark"]).optional() +}); +var IconsSchema = object2({ + /** + * Optional set of sized icons that the client can display in a user interface. + * + * Clients that support rendering icons MUST support at least the following MIME types: + * - `image/png` - PNG images (safe, universal compatibility) + * - `image/jpeg` (and `image/jpg`) - JPEG images (safe, universal compatibility) + * + * Clients that support rendering icons SHOULD also support: + * - `image/svg+xml` - SVG images (scalable but requires security precautions) + * - `image/webp` - WebP images (modern, efficient format) + */ + icons: array(IconSchema).optional() +}); +var BaseMetadataSchema = object2({ + /** Intended for programmatic or logical use, but used as a display name in past specs or fallback */ + name: string2(), + /** + * Intended for UI and end-user contexts — optimized to be human-readable and easily understood, + * even by those unfamiliar with domain-specific terminology. + * + * If not provided, the name should be used for display (except for Tool, + * where `annotations.title` should be given precedence over using `name`, + * if present). + */ + title: string2().optional() +}); +var ImplementationSchema = BaseMetadataSchema.extend({ + ...BaseMetadataSchema.shape, + ...IconsSchema.shape, + version: string2(), + /** + * An optional URL of the website for this implementation. + */ + websiteUrl: string2().optional(), + /** + * An optional human-readable description of what this implementation does. + * + * This can be used by clients or servers to provide context about their purpose + * and capabilities. For example, a server might describe the types of resources + * or tools it provides, while a client might describe its intended use case. + */ + description: string2().optional() +}); +var FormElicitationCapabilitySchema = intersection(object2({ + applyDefaults: boolean2().optional() +}), record(string2(), unknown())); +var ElicitationCapabilitySchema = preprocess((value) => { + if (value && typeof value === "object" && !Array.isArray(value)) { + if (Object.keys(value).length === 0) { + return { form: {} }; + } + } + return value; +}, intersection(object2({ + form: FormElicitationCapabilitySchema.optional(), + url: AssertObjectSchema.optional() +}), record(string2(), unknown()).optional())); +var ClientTasksCapabilitySchema = looseObject({ + /** + * Present if the client supports listing tasks. + */ + list: AssertObjectSchema.optional(), + /** + * Present if the client supports cancelling tasks. + */ + cancel: AssertObjectSchema.optional(), + /** + * Capabilities for task creation on specific request types. + */ + requests: looseObject({ + /** + * Task support for sampling requests. + */ + sampling: looseObject({ + createMessage: AssertObjectSchema.optional() + }).optional(), + /** + * Task support for elicitation requests. + */ + elicitation: looseObject({ + create: AssertObjectSchema.optional() + }).optional() + }).optional() +}); +var ServerTasksCapabilitySchema = looseObject({ + /** + * Present if the server supports listing tasks. + */ + list: AssertObjectSchema.optional(), + /** + * Present if the server supports cancelling tasks. + */ + cancel: AssertObjectSchema.optional(), + /** + * Capabilities for task creation on specific request types. + */ + requests: looseObject({ + /** + * Task support for tool requests. + */ + tools: looseObject({ + call: AssertObjectSchema.optional() + }).optional() + }).optional() +}); +var ClientCapabilitiesSchema = object2({ + /** + * Experimental, non-standard capabilities that the client supports. + */ + experimental: record(string2(), AssertObjectSchema).optional(), + /** + * Present if the client supports sampling from an LLM. + */ + sampling: object2({ + /** + * Present if the client supports context inclusion via includeContext parameter. + * If not declared, servers SHOULD only use `includeContext: "none"` (or omit it). + */ + context: AssertObjectSchema.optional(), + /** + * Present if the client supports tool use via tools and toolChoice parameters. + */ + tools: AssertObjectSchema.optional() + }).optional(), + /** + * Present if the client supports eliciting user input. + */ + elicitation: ElicitationCapabilitySchema.optional(), + /** + * Present if the client supports listing roots. + */ + roots: object2({ + /** + * Whether the client supports issuing notifications for changes to the roots list. + */ + listChanged: boolean2().optional() + }).optional(), + /** + * Present if the client supports task creation. + */ + tasks: ClientTasksCapabilitySchema.optional(), + /** + * Extensions that the client supports. Keys are extension identifiers (vendor-prefix/extension-name). + */ + extensions: record(string2(), AssertObjectSchema).optional() +}); +var InitializeRequestParamsSchema = BaseRequestParamsSchema.extend({ + /** + * The latest version of the Model Context Protocol that the client supports. The client MAY decide to support older versions as well. + */ + protocolVersion: string2(), + capabilities: ClientCapabilitiesSchema, + clientInfo: ImplementationSchema +}); +var InitializeRequestSchema = RequestSchema.extend({ + method: literal("initialize"), + params: InitializeRequestParamsSchema +}); +var isInitializeRequest = (value) => InitializeRequestSchema.safeParse(value).success; +var ServerCapabilitiesSchema = object2({ + /** + * Experimental, non-standard capabilities that the server supports. + */ + experimental: record(string2(), AssertObjectSchema).optional(), + /** + * Present if the server supports sending log messages to the client. + */ + logging: AssertObjectSchema.optional(), + /** + * Present if the server supports sending completions to the client. + */ + completions: AssertObjectSchema.optional(), + /** + * Present if the server offers any prompt templates. + */ + prompts: object2({ + /** + * Whether this server supports issuing notifications for changes to the prompt list. + */ + listChanged: boolean2().optional() + }).optional(), + /** + * Present if the server offers any resources to read. + */ + resources: object2({ + /** + * Whether this server supports clients subscribing to resource updates. + */ + subscribe: boolean2().optional(), + /** + * Whether this server supports issuing notifications for changes to the resource list. + */ + listChanged: boolean2().optional() + }).optional(), + /** + * Present if the server offers any tools to call. + */ + tools: object2({ + /** + * Whether this server supports issuing notifications for changes to the tool list. + */ + listChanged: boolean2().optional() + }).optional(), + /** + * Present if the server supports task creation. + */ + tasks: ServerTasksCapabilitySchema.optional(), + /** + * Extensions that the server supports. Keys are extension identifiers (vendor-prefix/extension-name). + */ + extensions: record(string2(), AssertObjectSchema).optional() +}); +var InitializeResultSchema = ResultSchema.extend({ + /** + * The version of the Model Context Protocol that the server wants to use. This may not match the version that the client requested. If the client cannot support this version, it MUST disconnect. + */ + protocolVersion: string2(), + capabilities: ServerCapabilitiesSchema, + serverInfo: ImplementationSchema, + /** + * Instructions describing how to use the server and its features. + * + * This can be used by clients to improve the LLM's understanding of available tools, resources, etc. It can be thought of like a "hint" to the model. For example, this information MAY be added to the system prompt. + */ + instructions: string2().optional() +}); +var InitializedNotificationSchema = NotificationSchema.extend({ + method: literal("notifications/initialized"), + params: NotificationsParamsSchema.optional() +}); +var PingRequestSchema = RequestSchema.extend({ + method: literal("ping"), + params: BaseRequestParamsSchema.optional() +}); +var ProgressSchema = object2({ + /** + * The progress thus far. This should increase every time progress is made, even if the total is unknown. + */ + progress: number2(), + /** + * Total number of items to process (or total progress required), if known. + */ + total: optional(number2()), + /** + * An optional message describing the current progress. + */ + message: optional(string2()) +}); +var ProgressNotificationParamsSchema = object2({ + ...NotificationsParamsSchema.shape, + ...ProgressSchema.shape, + /** + * The progress token which was given in the initial request, used to associate this notification with the request that is proceeding. + */ + progressToken: ProgressTokenSchema +}); +var ProgressNotificationSchema = NotificationSchema.extend({ + method: literal("notifications/progress"), + params: ProgressNotificationParamsSchema +}); +var PaginatedRequestParamsSchema = BaseRequestParamsSchema.extend({ + /** + * An opaque token representing the current pagination position. + * If provided, the server should return results starting after this cursor. + */ + cursor: CursorSchema.optional() +}); +var PaginatedRequestSchema = RequestSchema.extend({ + params: PaginatedRequestParamsSchema.optional() +}); +var PaginatedResultSchema = ResultSchema.extend({ + /** + * An opaque token representing the pagination position after the last returned result. + * If present, there may be more results available. + */ + nextCursor: CursorSchema.optional() +}); +var TaskStatusSchema = _enum(["working", "input_required", "completed", "failed", "cancelled"]); +var TaskSchema = object2({ + taskId: string2(), + status: TaskStatusSchema, + /** + * Time in milliseconds to keep task results available after completion. + * If null, the task has unlimited lifetime until manually cleaned up. + */ + ttl: union([number2(), _null3()]), + /** + * ISO 8601 timestamp when the task was created. + */ + createdAt: string2(), + /** + * ISO 8601 timestamp when the task was last updated. + */ + lastUpdatedAt: string2(), + pollInterval: optional(number2()), + /** + * Optional diagnostic message for failed tasks or other status information. + */ + statusMessage: optional(string2()) +}); +var CreateTaskResultSchema = ResultSchema.extend({ + task: TaskSchema +}); +var TaskStatusNotificationParamsSchema = NotificationsParamsSchema.merge(TaskSchema); +var TaskStatusNotificationSchema = NotificationSchema.extend({ + method: literal("notifications/tasks/status"), + params: TaskStatusNotificationParamsSchema +}); +var GetTaskRequestSchema = RequestSchema.extend({ + method: literal("tasks/get"), + params: BaseRequestParamsSchema.extend({ + taskId: string2() + }) +}); +var GetTaskResultSchema = ResultSchema.merge(TaskSchema); +var GetTaskPayloadRequestSchema = RequestSchema.extend({ + method: literal("tasks/result"), + params: BaseRequestParamsSchema.extend({ + taskId: string2() + }) +}); +var GetTaskPayloadResultSchema = ResultSchema.loose(); +var ListTasksRequestSchema = PaginatedRequestSchema.extend({ + method: literal("tasks/list") +}); +var ListTasksResultSchema = PaginatedResultSchema.extend({ + tasks: array(TaskSchema) +}); +var CancelTaskRequestSchema = RequestSchema.extend({ + method: literal("tasks/cancel"), + params: BaseRequestParamsSchema.extend({ + taskId: string2() + }) +}); +var CancelTaskResultSchema = ResultSchema.merge(TaskSchema); +var ResourceContentsSchema = object2({ + /** + * The URI of this resource. + */ + uri: string2(), + /** + * The MIME type of this resource, if known. + */ + mimeType: optional(string2()), + /** + * See [MCP specification](https://github.com/modelcontextprotocol/modelcontextprotocol/blob/47339c03c143bb4ec01a26e721a1b8fe66634ebe/docs/specification/draft/basic/index.mdx#general-fields) + * for notes on _meta usage. + */ + _meta: record(string2(), unknown()).optional() +}); +var TextResourceContentsSchema = ResourceContentsSchema.extend({ + /** + * The text of the item. This must only be set if the item can actually be represented as text (not binary data). + */ + text: string2() +}); +var Base64Schema = string2().refine((val) => { + try { + atob(val); + return true; + } catch { + return false; + } +}, { message: "Invalid Base64 string" }); +var BlobResourceContentsSchema = ResourceContentsSchema.extend({ + /** + * A base64-encoded string representing the binary data of the item. + */ + blob: Base64Schema +}); +var RoleSchema = _enum(["user", "assistant"]); +var AnnotationsSchema = object2({ + /** + * Intended audience(s) for the resource. + */ + audience: array(RoleSchema).optional(), + /** + * Importance hint for the resource, from 0 (least) to 1 (most). + */ + priority: number2().min(0).max(1).optional(), + /** + * ISO 8601 timestamp for the most recent modification. + */ + lastModified: iso_exports2.datetime({ offset: true }).optional() +}); +var ResourceSchema = object2({ + ...BaseMetadataSchema.shape, + ...IconsSchema.shape, + /** + * The URI of this resource. + */ + uri: string2(), + /** + * A description of what this resource represents. + * + * This can be used by clients to improve the LLM's understanding of available resources. It can be thought of like a "hint" to the model. + */ + description: optional(string2()), + /** + * The MIME type of this resource, if known. + */ + mimeType: optional(string2()), + /** + * The size of the raw resource content, in bytes (i.e., before base64 encoding or any tokenization), if known. + * + * This can be used by Hosts to display file sizes and estimate context window usage. + */ + size: optional(number2()), + /** + * Optional annotations for the client. + */ + annotations: AnnotationsSchema.optional(), + /** + * See [MCP specification](https://github.com/modelcontextprotocol/modelcontextprotocol/blob/47339c03c143bb4ec01a26e721a1b8fe66634ebe/docs/specification/draft/basic/index.mdx#general-fields) + * for notes on _meta usage. + */ + _meta: optional(looseObject({})) +}); +var ResourceTemplateSchema = object2({ + ...BaseMetadataSchema.shape, + ...IconsSchema.shape, + /** + * A URI template (according to RFC 6570) that can be used to construct resource URIs. + */ + uriTemplate: string2(), + /** + * A description of what this template is for. + * + * This can be used by clients to improve the LLM's understanding of available resources. It can be thought of like a "hint" to the model. + */ + description: optional(string2()), + /** + * The MIME type for all resources that match this template. This should only be included if all resources matching this template have the same type. + */ + mimeType: optional(string2()), + /** + * Optional annotations for the client. + */ + annotations: AnnotationsSchema.optional(), + /** + * See [MCP specification](https://github.com/modelcontextprotocol/modelcontextprotocol/blob/47339c03c143bb4ec01a26e721a1b8fe66634ebe/docs/specification/draft/basic/index.mdx#general-fields) + * for notes on _meta usage. + */ + _meta: optional(looseObject({})) +}); +var ListResourcesRequestSchema = PaginatedRequestSchema.extend({ + method: literal("resources/list") +}); +var ListResourcesResultSchema = PaginatedResultSchema.extend({ + resources: array(ResourceSchema) +}); +var ListResourceTemplatesRequestSchema = PaginatedRequestSchema.extend({ + method: literal("resources/templates/list") +}); +var ListResourceTemplatesResultSchema = PaginatedResultSchema.extend({ + resourceTemplates: array(ResourceTemplateSchema) +}); +var ResourceRequestParamsSchema = BaseRequestParamsSchema.extend({ + /** + * The URI of the resource to read. The URI can use any protocol; it is up to the server how to interpret it. + * + * @format uri + */ + uri: string2() +}); +var ReadResourceRequestParamsSchema = ResourceRequestParamsSchema; +var ReadResourceRequestSchema = RequestSchema.extend({ + method: literal("resources/read"), + params: ReadResourceRequestParamsSchema +}); +var ReadResourceResultSchema = ResultSchema.extend({ + contents: array(union([TextResourceContentsSchema, BlobResourceContentsSchema])) +}); +var ResourceListChangedNotificationSchema = NotificationSchema.extend({ + method: literal("notifications/resources/list_changed"), + params: NotificationsParamsSchema.optional() +}); +var SubscribeRequestParamsSchema = ResourceRequestParamsSchema; +var SubscribeRequestSchema = RequestSchema.extend({ + method: literal("resources/subscribe"), + params: SubscribeRequestParamsSchema +}); +var UnsubscribeRequestParamsSchema = ResourceRequestParamsSchema; +var UnsubscribeRequestSchema = RequestSchema.extend({ + method: literal("resources/unsubscribe"), + params: UnsubscribeRequestParamsSchema +}); +var ResourceUpdatedNotificationParamsSchema = NotificationsParamsSchema.extend({ + /** + * The URI of the resource that has been updated. This might be a sub-resource of the one that the client actually subscribed to. + */ + uri: string2() +}); +var ResourceUpdatedNotificationSchema = NotificationSchema.extend({ + method: literal("notifications/resources/updated"), + params: ResourceUpdatedNotificationParamsSchema +}); +var PromptArgumentSchema = object2({ + /** + * The name of the argument. + */ + name: string2(), + /** + * A human-readable description of the argument. + */ + description: optional(string2()), + /** + * Whether this argument must be provided. + */ + required: optional(boolean2()) +}); +var PromptSchema = object2({ + ...BaseMetadataSchema.shape, + ...IconsSchema.shape, + /** + * An optional description of what this prompt provides + */ + description: optional(string2()), + /** + * A list of arguments to use for templating the prompt. + */ + arguments: optional(array(PromptArgumentSchema)), + /** + * See [MCP specification](https://github.com/modelcontextprotocol/modelcontextprotocol/blob/47339c03c143bb4ec01a26e721a1b8fe66634ebe/docs/specification/draft/basic/index.mdx#general-fields) + * for notes on _meta usage. + */ + _meta: optional(looseObject({})) +}); +var ListPromptsRequestSchema = PaginatedRequestSchema.extend({ + method: literal("prompts/list") +}); +var ListPromptsResultSchema = PaginatedResultSchema.extend({ + prompts: array(PromptSchema) +}); +var GetPromptRequestParamsSchema = BaseRequestParamsSchema.extend({ + /** + * The name of the prompt or prompt template. + */ + name: string2(), + /** + * Arguments to use for templating the prompt. + */ + arguments: record(string2(), string2()).optional() +}); +var GetPromptRequestSchema = RequestSchema.extend({ + method: literal("prompts/get"), + params: GetPromptRequestParamsSchema +}); +var TextContentSchema = object2({ + type: literal("text"), + /** + * The text content of the message. + */ + text: string2(), + /** + * Optional annotations for the client. + */ + annotations: AnnotationsSchema.optional(), + /** + * See [MCP specification](https://github.com/modelcontextprotocol/modelcontextprotocol/blob/47339c03c143bb4ec01a26e721a1b8fe66634ebe/docs/specification/draft/basic/index.mdx#general-fields) + * for notes on _meta usage. + */ + _meta: record(string2(), unknown()).optional() +}); +var ImageContentSchema = object2({ + type: literal("image"), + /** + * The base64-encoded image data. + */ + data: Base64Schema, + /** + * The MIME type of the image. Different providers may support different image types. + */ + mimeType: string2(), + /** + * Optional annotations for the client. + */ + annotations: AnnotationsSchema.optional(), + /** + * See [MCP specification](https://github.com/modelcontextprotocol/modelcontextprotocol/blob/47339c03c143bb4ec01a26e721a1b8fe66634ebe/docs/specification/draft/basic/index.mdx#general-fields) + * for notes on _meta usage. + */ + _meta: record(string2(), unknown()).optional() +}); +var AudioContentSchema = object2({ + type: literal("audio"), + /** + * The base64-encoded audio data. + */ + data: Base64Schema, + /** + * The MIME type of the audio. Different providers may support different audio types. + */ + mimeType: string2(), + /** + * Optional annotations for the client. + */ + annotations: AnnotationsSchema.optional(), + /** + * See [MCP specification](https://github.com/modelcontextprotocol/modelcontextprotocol/blob/47339c03c143bb4ec01a26e721a1b8fe66634ebe/docs/specification/draft/basic/index.mdx#general-fields) + * for notes on _meta usage. + */ + _meta: record(string2(), unknown()).optional() +}); +var ToolUseContentSchema = object2({ + type: literal("tool_use"), + /** + * The name of the tool to invoke. + * Must match a tool name from the request's tools array. + */ + name: string2(), + /** + * Unique identifier for this tool call. + * Used to correlate with ToolResultContent in subsequent messages. + */ + id: string2(), + /** + * Arguments to pass to the tool. + * Must conform to the tool's inputSchema. + */ + input: record(string2(), unknown()), + /** + * See [MCP specification](https://github.com/modelcontextprotocol/modelcontextprotocol/blob/47339c03c143bb4ec01a26e721a1b8fe66634ebe/docs/specification/draft/basic/index.mdx#general-fields) + * for notes on _meta usage. + */ + _meta: record(string2(), unknown()).optional() +}); +var EmbeddedResourceSchema = object2({ + type: literal("resource"), + resource: union([TextResourceContentsSchema, BlobResourceContentsSchema]), + /** + * Optional annotations for the client. + */ + annotations: AnnotationsSchema.optional(), + /** + * See [MCP specification](https://github.com/modelcontextprotocol/modelcontextprotocol/blob/47339c03c143bb4ec01a26e721a1b8fe66634ebe/docs/specification/draft/basic/index.mdx#general-fields) + * for notes on _meta usage. + */ + _meta: record(string2(), unknown()).optional() +}); +var ResourceLinkSchema = ResourceSchema.extend({ + type: literal("resource_link") +}); +var ContentBlockSchema = union([ + TextContentSchema, + ImageContentSchema, + AudioContentSchema, + ResourceLinkSchema, + EmbeddedResourceSchema +]); +var PromptMessageSchema = object2({ + role: RoleSchema, + content: ContentBlockSchema +}); +var GetPromptResultSchema = ResultSchema.extend({ + /** + * An optional description for the prompt. + */ + description: string2().optional(), + messages: array(PromptMessageSchema) +}); +var PromptListChangedNotificationSchema = NotificationSchema.extend({ + method: literal("notifications/prompts/list_changed"), + params: NotificationsParamsSchema.optional() +}); +var ToolAnnotationsSchema = object2({ + /** + * A human-readable title for the tool. + */ + title: string2().optional(), + /** + * If true, the tool does not modify its environment. + * + * Default: false + */ + readOnlyHint: boolean2().optional(), + /** + * If true, the tool may perform destructive updates to its environment. + * If false, the tool performs only additive updates. + * + * (This property is meaningful only when `readOnlyHint == false`) + * + * Default: true + */ + destructiveHint: boolean2().optional(), + /** + * If true, calling the tool repeatedly with the same arguments + * will have no additional effect on the its environment. + * + * (This property is meaningful only when `readOnlyHint == false`) + * + * Default: false + */ + idempotentHint: boolean2().optional(), + /** + * If true, this tool may interact with an "open world" of external + * entities. If false, the tool's domain of interaction is closed. + * For example, the world of a web search tool is open, whereas that + * of a memory tool is not. + * + * Default: true + */ + openWorldHint: boolean2().optional() +}); +var ToolExecutionSchema = object2({ + /** + * Indicates the tool's preference for task-augmented execution. + * - "required": Clients MUST invoke the tool as a task + * - "optional": Clients MAY invoke the tool as a task or normal request + * - "forbidden": Clients MUST NOT attempt to invoke the tool as a task + * + * If not present, defaults to "forbidden". + */ + taskSupport: _enum(["required", "optional", "forbidden"]).optional() +}); +var ToolSchema = object2({ + ...BaseMetadataSchema.shape, + ...IconsSchema.shape, + /** + * A human-readable description of the tool. + */ + description: string2().optional(), + /** + * A JSON Schema 2020-12 object defining the expected parameters for the tool. + * Must have type: 'object' at the root level per MCP spec. + */ + inputSchema: object2({ + type: literal("object"), + properties: record(string2(), AssertObjectSchema).optional(), + required: array(string2()).optional() + }).catchall(unknown()), + /** + * An optional JSON Schema 2020-12 object defining the structure of the tool's output + * returned in the structuredContent field of a CallToolResult. + * Must have type: 'object' at the root level per MCP spec. + */ + outputSchema: object2({ + type: literal("object"), + properties: record(string2(), AssertObjectSchema).optional(), + required: array(string2()).optional() + }).catchall(unknown()).optional(), + /** + * Optional additional tool information. + */ + annotations: ToolAnnotationsSchema.optional(), + /** + * Execution-related properties for this tool. + */ + execution: ToolExecutionSchema.optional(), + /** + * See [MCP specification](https://github.com/modelcontextprotocol/modelcontextprotocol/blob/47339c03c143bb4ec01a26e721a1b8fe66634ebe/docs/specification/draft/basic/index.mdx#general-fields) + * for notes on _meta usage. + */ + _meta: record(string2(), unknown()).optional() +}); +var ListToolsRequestSchema = PaginatedRequestSchema.extend({ + method: literal("tools/list") +}); +var ListToolsResultSchema = PaginatedResultSchema.extend({ + tools: array(ToolSchema) +}); +var CallToolResultSchema = ResultSchema.extend({ + /** + * A list of content objects that represent the result of the tool call. + * + * If the Tool does not define an outputSchema, this field MUST be present in the result. + * For backwards compatibility, this field is always present, but it may be empty. + */ + content: array(ContentBlockSchema).default([]), + /** + * An object containing structured tool output. + * + * If the Tool defines an outputSchema, this field MUST be present in the result, and contain a JSON object that matches the schema. + */ + structuredContent: record(string2(), unknown()).optional(), + /** + * Whether the tool call ended in an error. + * + * If not set, this is assumed to be false (the call was successful). + * + * Any errors that originate from the tool SHOULD be reported inside the result + * object, with `isError` set to true, _not_ as an MCP protocol-level error + * response. Otherwise, the LLM would not be able to see that an error occurred + * and self-correct. + * + * However, any errors in _finding_ the tool, an error indicating that the + * server does not support tool calls, or any other exceptional conditions, + * should be reported as an MCP error response. + */ + isError: boolean2().optional() +}); +var CompatibilityCallToolResultSchema = CallToolResultSchema.or(ResultSchema.extend({ + toolResult: unknown() +})); +var CallToolRequestParamsSchema = TaskAugmentedRequestParamsSchema.extend({ + /** + * The name of the tool to call. + */ + name: string2(), + /** + * Arguments to pass to the tool. + */ + arguments: record(string2(), unknown()).optional() +}); +var CallToolRequestSchema = RequestSchema.extend({ + method: literal("tools/call"), + params: CallToolRequestParamsSchema +}); +var ToolListChangedNotificationSchema = NotificationSchema.extend({ + method: literal("notifications/tools/list_changed"), + params: NotificationsParamsSchema.optional() +}); +var ListChangedOptionsBaseSchema = object2({ + /** + * If true, the list will be refreshed automatically when a list changed notification is received. + * The callback will be called with the updated list. + * + * If false, the callback will be called with null items, allowing manual refresh. + * + * @default true + */ + autoRefresh: boolean2().default(true), + /** + * Debounce time in milliseconds for list changed notification processing. + * + * Multiple notifications received within this timeframe will only trigger one refresh. + * Set to 0 to disable debouncing. + * + * @default 300 + */ + debounceMs: number2().int().nonnegative().default(300) +}); +var LoggingLevelSchema = _enum(["debug", "info", "notice", "warning", "error", "critical", "alert", "emergency"]); +var SetLevelRequestParamsSchema = BaseRequestParamsSchema.extend({ + /** + * The level of logging that the client wants to receive from the server. The server should send all logs at this level and higher (i.e., more severe) to the client as notifications/logging/message. + */ + level: LoggingLevelSchema +}); +var SetLevelRequestSchema = RequestSchema.extend({ + method: literal("logging/setLevel"), + params: SetLevelRequestParamsSchema +}); +var LoggingMessageNotificationParamsSchema = NotificationsParamsSchema.extend({ + /** + * The severity of this log message. + */ + level: LoggingLevelSchema, + /** + * An optional name of the logger issuing this message. + */ + logger: string2().optional(), + /** + * The data to be logged, such as a string message or an object. Any JSON serializable type is allowed here. + */ + data: unknown() +}); +var LoggingMessageNotificationSchema = NotificationSchema.extend({ + method: literal("notifications/message"), + params: LoggingMessageNotificationParamsSchema +}); +var ModelHintSchema = object2({ + /** + * A hint for a model name. + */ + name: string2().optional() +}); +var ModelPreferencesSchema = object2({ + /** + * Optional hints to use for model selection. + */ + hints: array(ModelHintSchema).optional(), + /** + * How much to prioritize cost when selecting a model. + */ + costPriority: number2().min(0).max(1).optional(), + /** + * How much to prioritize sampling speed (latency) when selecting a model. + */ + speedPriority: number2().min(0).max(1).optional(), + /** + * How much to prioritize intelligence and capabilities when selecting a model. + */ + intelligencePriority: number2().min(0).max(1).optional() +}); +var ToolChoiceSchema = object2({ + /** + * Controls when tools are used: + * - "auto": Model decides whether to use tools (default) + * - "required": Model MUST use at least one tool before completing + * - "none": Model MUST NOT use any tools + */ + mode: _enum(["auto", "required", "none"]).optional() +}); +var ToolResultContentSchema = object2({ + type: literal("tool_result"), + toolUseId: string2().describe("The unique identifier for the corresponding tool call."), + content: array(ContentBlockSchema).default([]), + structuredContent: object2({}).loose().optional(), + isError: boolean2().optional(), + /** + * See [MCP specification](https://github.com/modelcontextprotocol/modelcontextprotocol/blob/47339c03c143bb4ec01a26e721a1b8fe66634ebe/docs/specification/draft/basic/index.mdx#general-fields) + * for notes on _meta usage. + */ + _meta: record(string2(), unknown()).optional() +}); +var SamplingContentSchema = discriminatedUnion("type", [TextContentSchema, ImageContentSchema, AudioContentSchema]); +var SamplingMessageContentBlockSchema = discriminatedUnion("type", [ + TextContentSchema, + ImageContentSchema, + AudioContentSchema, + ToolUseContentSchema, + ToolResultContentSchema +]); +var SamplingMessageSchema = object2({ + role: RoleSchema, + content: union([SamplingMessageContentBlockSchema, array(SamplingMessageContentBlockSchema)]), + /** + * See [MCP specification](https://github.com/modelcontextprotocol/modelcontextprotocol/blob/47339c03c143bb4ec01a26e721a1b8fe66634ebe/docs/specification/draft/basic/index.mdx#general-fields) + * for notes on _meta usage. + */ + _meta: record(string2(), unknown()).optional() +}); +var CreateMessageRequestParamsSchema = TaskAugmentedRequestParamsSchema.extend({ + messages: array(SamplingMessageSchema), + /** + * The server's preferences for which model to select. The client MAY modify or omit this request. + */ + modelPreferences: ModelPreferencesSchema.optional(), + /** + * An optional system prompt the server wants to use for sampling. The client MAY modify or omit this prompt. + */ + systemPrompt: string2().optional(), + /** + * A request to include context from one or more MCP servers (including the caller), to be attached to the prompt. + * The client MAY ignore this request. + * + * Default is "none". Values "thisServer" and "allServers" are soft-deprecated. Servers SHOULD only use these values if the client + * declares ClientCapabilities.sampling.context. These values may be removed in future spec releases. + */ + includeContext: _enum(["none", "thisServer", "allServers"]).optional(), + temperature: number2().optional(), + /** + * The requested maximum number of tokens to sample (to prevent runaway completions). + * + * The client MAY choose to sample fewer tokens than the requested maximum. + */ + maxTokens: number2().int(), + stopSequences: array(string2()).optional(), + /** + * Optional metadata to pass through to the LLM provider. The format of this metadata is provider-specific. + */ + metadata: AssertObjectSchema.optional(), + /** + * Tools that the model may use during generation. + * The client MUST return an error if this field is provided but ClientCapabilities.sampling.tools is not declared. + */ + tools: array(ToolSchema).optional(), + /** + * Controls how the model uses tools. + * The client MUST return an error if this field is provided but ClientCapabilities.sampling.tools is not declared. + * Default is `{ mode: "auto" }`. + */ + toolChoice: ToolChoiceSchema.optional() +}); +var CreateMessageRequestSchema = RequestSchema.extend({ + method: literal("sampling/createMessage"), + params: CreateMessageRequestParamsSchema +}); +var CreateMessageResultSchema = ResultSchema.extend({ + /** + * The name of the model that generated the message. + */ + model: string2(), + /** + * The reason why sampling stopped, if known. + * + * Standard values: + * - "endTurn": Natural end of the assistant's turn + * - "stopSequence": A stop sequence was encountered + * - "maxTokens": Maximum token limit was reached + * + * This field is an open string to allow for provider-specific stop reasons. + */ + stopReason: optional(_enum(["endTurn", "stopSequence", "maxTokens"]).or(string2())), + role: RoleSchema, + /** + * Response content. Single content block (text, image, or audio). + */ + content: SamplingContentSchema +}); +var CreateMessageResultWithToolsSchema = ResultSchema.extend({ + /** + * The name of the model that generated the message. + */ + model: string2(), + /** + * The reason why sampling stopped, if known. + * + * Standard values: + * - "endTurn": Natural end of the assistant's turn + * - "stopSequence": A stop sequence was encountered + * - "maxTokens": Maximum token limit was reached + * - "toolUse": The model wants to use one or more tools + * + * This field is an open string to allow for provider-specific stop reasons. + */ + stopReason: optional(_enum(["endTurn", "stopSequence", "maxTokens", "toolUse"]).or(string2())), + role: RoleSchema, + /** + * Response content. May be a single block or array. May include ToolUseContent if stopReason is "toolUse". + */ + content: union([SamplingMessageContentBlockSchema, array(SamplingMessageContentBlockSchema)]) +}); +var BooleanSchemaSchema = object2({ + type: literal("boolean"), + title: string2().optional(), + description: string2().optional(), + default: boolean2().optional() +}); +var StringSchemaSchema = object2({ + type: literal("string"), + title: string2().optional(), + description: string2().optional(), + minLength: number2().optional(), + maxLength: number2().optional(), + format: _enum(["email", "uri", "date", "date-time"]).optional(), + default: string2().optional() +}); +var NumberSchemaSchema = object2({ + type: _enum(["number", "integer"]), + title: string2().optional(), + description: string2().optional(), + minimum: number2().optional(), + maximum: number2().optional(), + default: number2().optional() +}); +var UntitledSingleSelectEnumSchemaSchema = object2({ + type: literal("string"), + title: string2().optional(), + description: string2().optional(), + enum: array(string2()), + default: string2().optional() +}); +var TitledSingleSelectEnumSchemaSchema = object2({ + type: literal("string"), + title: string2().optional(), + description: string2().optional(), + oneOf: array(object2({ + const: string2(), + title: string2() + })), + default: string2().optional() +}); +var LegacyTitledEnumSchemaSchema = object2({ + type: literal("string"), + title: string2().optional(), + description: string2().optional(), + enum: array(string2()), + enumNames: array(string2()).optional(), + default: string2().optional() +}); +var SingleSelectEnumSchemaSchema = union([UntitledSingleSelectEnumSchemaSchema, TitledSingleSelectEnumSchemaSchema]); +var UntitledMultiSelectEnumSchemaSchema = object2({ + type: literal("array"), + title: string2().optional(), + description: string2().optional(), + minItems: number2().optional(), + maxItems: number2().optional(), + items: object2({ + type: literal("string"), + enum: array(string2()) + }), + default: array(string2()).optional() +}); +var TitledMultiSelectEnumSchemaSchema = object2({ + type: literal("array"), + title: string2().optional(), + description: string2().optional(), + minItems: number2().optional(), + maxItems: number2().optional(), + items: object2({ + anyOf: array(object2({ + const: string2(), + title: string2() + })) + }), + default: array(string2()).optional() +}); +var MultiSelectEnumSchemaSchema = union([UntitledMultiSelectEnumSchemaSchema, TitledMultiSelectEnumSchemaSchema]); +var EnumSchemaSchema = union([LegacyTitledEnumSchemaSchema, SingleSelectEnumSchemaSchema, MultiSelectEnumSchemaSchema]); +var PrimitiveSchemaDefinitionSchema = union([EnumSchemaSchema, BooleanSchemaSchema, StringSchemaSchema, NumberSchemaSchema]); +var ElicitRequestFormParamsSchema = TaskAugmentedRequestParamsSchema.extend({ + /** + * The elicitation mode. + * + * Optional for backward compatibility. Clients MUST treat missing mode as "form". + */ + mode: literal("form").optional(), + /** + * The message to present to the user describing what information is being requested. + */ + message: string2(), + /** + * A restricted subset of JSON Schema. + * Only top-level properties are allowed, without nesting. + */ + requestedSchema: object2({ + type: literal("object"), + properties: record(string2(), PrimitiveSchemaDefinitionSchema), + required: array(string2()).optional() + }) +}); +var ElicitRequestURLParamsSchema = TaskAugmentedRequestParamsSchema.extend({ + /** + * The elicitation mode. + */ + mode: literal("url"), + /** + * The message to present to the user explaining why the interaction is needed. + */ + message: string2(), + /** + * The ID of the elicitation, which must be unique within the context of the server. + * The client MUST treat this ID as an opaque value. + */ + elicitationId: string2(), + /** + * The URL that the user should navigate to. + */ + url: string2().url() +}); +var ElicitRequestParamsSchema = union([ElicitRequestFormParamsSchema, ElicitRequestURLParamsSchema]); +var ElicitRequestSchema = RequestSchema.extend({ + method: literal("elicitation/create"), + params: ElicitRequestParamsSchema +}); +var ElicitationCompleteNotificationParamsSchema = NotificationsParamsSchema.extend({ + /** + * The ID of the elicitation that completed. + */ + elicitationId: string2() +}); +var ElicitationCompleteNotificationSchema = NotificationSchema.extend({ + method: literal("notifications/elicitation/complete"), + params: ElicitationCompleteNotificationParamsSchema +}); +var ElicitResultSchema = ResultSchema.extend({ + /** + * The user action in response to the elicitation. + * - "accept": User submitted the form/confirmed the action + * - "decline": User explicitly decline the action + * - "cancel": User dismissed without making an explicit choice + */ + action: _enum(["accept", "decline", "cancel"]), + /** + * The submitted form data, only present when action is "accept". + * Contains values matching the requested schema. + * Per MCP spec, content is "typically omitted" for decline/cancel actions. + * We normalize null to undefined for leniency while maintaining type compatibility. + */ + content: preprocess((val) => val === null ? void 0 : val, record(string2(), union([string2(), number2(), boolean2(), array(string2())])).optional()) +}); +var ResourceTemplateReferenceSchema = object2({ + type: literal("ref/resource"), + /** + * The URI or URI template of the resource. + */ + uri: string2() +}); +var PromptReferenceSchema = object2({ + type: literal("ref/prompt"), + /** + * The name of the prompt or prompt template + */ + name: string2() +}); +var CompleteRequestParamsSchema = BaseRequestParamsSchema.extend({ + ref: union([PromptReferenceSchema, ResourceTemplateReferenceSchema]), + /** + * The argument's information + */ + argument: object2({ + /** + * The name of the argument + */ + name: string2(), + /** + * The value of the argument to use for completion matching. + */ + value: string2() + }), + context: object2({ + /** + * Previously-resolved variables in a URI template or prompt. + */ + arguments: record(string2(), string2()).optional() + }).optional() +}); +var CompleteRequestSchema = RequestSchema.extend({ + method: literal("completion/complete"), + params: CompleteRequestParamsSchema +}); +function assertCompleteRequestPrompt(request) { + if (request.params.ref.type !== "ref/prompt") { + throw new TypeError(`Expected CompleteRequestPrompt, but got ${request.params.ref.type}`); + } + void request; +} +function assertCompleteRequestResourceTemplate(request) { + if (request.params.ref.type !== "ref/resource") { + throw new TypeError(`Expected CompleteRequestResourceTemplate, but got ${request.params.ref.type}`); + } + void request; +} +var CompleteResultSchema = ResultSchema.extend({ + completion: looseObject({ + /** + * An array of completion values. Must not exceed 100 items. + */ + values: array(string2()).max(100), + /** + * The total number of completion options available. This can exceed the number of values actually sent in the response. + */ + total: optional(number2().int()), + /** + * Indicates whether there are additional completion options beyond those provided in the current response, even if the exact total is unknown. + */ + hasMore: optional(boolean2()) + }) +}); +var RootSchema = object2({ + /** + * The URI identifying the root. This *must* start with file:// for now. + */ + uri: string2().startsWith("file://"), + /** + * An optional name for the root. + */ + name: string2().optional(), + /** + * See [MCP specification](https://github.com/modelcontextprotocol/modelcontextprotocol/blob/47339c03c143bb4ec01a26e721a1b8fe66634ebe/docs/specification/draft/basic/index.mdx#general-fields) + * for notes on _meta usage. + */ + _meta: record(string2(), unknown()).optional() +}); +var ListRootsRequestSchema = RequestSchema.extend({ + method: literal("roots/list"), + params: BaseRequestParamsSchema.optional() +}); +var ListRootsResultSchema = ResultSchema.extend({ + roots: array(RootSchema) +}); +var RootsListChangedNotificationSchema = NotificationSchema.extend({ + method: literal("notifications/roots/list_changed"), + params: NotificationsParamsSchema.optional() +}); +var ClientRequestSchema = union([ + PingRequestSchema, + InitializeRequestSchema, + CompleteRequestSchema, + SetLevelRequestSchema, + GetPromptRequestSchema, + ListPromptsRequestSchema, + ListResourcesRequestSchema, + ListResourceTemplatesRequestSchema, + ReadResourceRequestSchema, + SubscribeRequestSchema, + UnsubscribeRequestSchema, + CallToolRequestSchema, + ListToolsRequestSchema, + GetTaskRequestSchema, + GetTaskPayloadRequestSchema, + ListTasksRequestSchema, + CancelTaskRequestSchema +]); +var ClientNotificationSchema = union([ + CancelledNotificationSchema, + ProgressNotificationSchema, + InitializedNotificationSchema, + RootsListChangedNotificationSchema, + TaskStatusNotificationSchema +]); +var ClientResultSchema = union([ + EmptyResultSchema, + CreateMessageResultSchema, + CreateMessageResultWithToolsSchema, + ElicitResultSchema, + ListRootsResultSchema, + GetTaskResultSchema, + ListTasksResultSchema, + CreateTaskResultSchema +]); +var ServerRequestSchema = union([ + PingRequestSchema, + CreateMessageRequestSchema, + ElicitRequestSchema, + ListRootsRequestSchema, + GetTaskRequestSchema, + GetTaskPayloadRequestSchema, + ListTasksRequestSchema, + CancelTaskRequestSchema +]); +var ServerNotificationSchema = union([ + CancelledNotificationSchema, + ProgressNotificationSchema, + LoggingMessageNotificationSchema, + ResourceUpdatedNotificationSchema, + ResourceListChangedNotificationSchema, + ToolListChangedNotificationSchema, + PromptListChangedNotificationSchema, + TaskStatusNotificationSchema, + ElicitationCompleteNotificationSchema +]); +var ServerResultSchema = union([ + EmptyResultSchema, + InitializeResultSchema, + CompleteResultSchema, + GetPromptResultSchema, + ListPromptsResultSchema, + ListResourcesResultSchema, + ListResourceTemplatesResultSchema, + ReadResourceResultSchema, + CallToolResultSchema, + ListToolsResultSchema, + GetTaskResultSchema, + ListTasksResultSchema, + CreateTaskResultSchema +]); +var McpError = class _McpError extends Error { + constructor(code, message, data) { + super(`MCP error ${code}: ${message}`); + this.code = code; + this.data = data; + this.name = "McpError"; + } + /** + * Factory method to create the appropriate error type based on the error code and data + */ + static fromError(code, message, data) { + if (code === ErrorCode.UrlElicitationRequired && data) { + const errorData = data; + if (errorData.elicitations) { + return new UrlElicitationRequiredError(errorData.elicitations, message); + } + } + return new _McpError(code, message, data); + } +}; +var UrlElicitationRequiredError = class extends McpError { + constructor(elicitations, message = `URL elicitation${elicitations.length > 1 ? "s" : ""} required`) { + super(ErrorCode.UrlElicitationRequired, message, { + elicitations + }); + } + get elicitations() { + return this.data?.elicitations ?? []; + } +}; + +// node_modules/@modelcontextprotocol/sdk/dist/esm/experimental/tasks/interfaces.js +function isTerminal(status) { + return status === "completed" || status === "failed" || status === "cancelled"; +} + +// node_modules/zod-to-json-schema/dist/esm/Options.js +var ignoreOverride = /* @__PURE__ */ Symbol("Let zodToJsonSchema decide on which parser to use"); +var defaultOptions = { + name: void 0, + $refStrategy: "root", + basePath: ["#"], + effectStrategy: "input", + pipeStrategy: "all", + dateStrategy: "format:date-time", + mapStrategy: "entries", + removeAdditionalStrategy: "passthrough", + allowedAdditionalProperties: true, + rejectedAdditionalProperties: false, + definitionPath: "definitions", + target: "jsonSchema7", + strictUnions: false, + definitions: {}, + errorMessages: false, + markdownDescription: false, + patternStrategy: "escape", + applyRegexFlags: false, + emailStrategy: "format:email", + base64Strategy: "contentEncoding:base64", + nameStrategy: "ref", + openAiAnyTypeName: "OpenAiAnyType" +}; +var getDefaultOptions = (options) => typeof options === "string" ? { + ...defaultOptions, + name: options +} : { + ...defaultOptions, + ...options +}; + +// node_modules/zod-to-json-schema/dist/esm/Refs.js +var getRefs = (options) => { + const _options = getDefaultOptions(options); + const currentPath = _options.name !== void 0 ? [..._options.basePath, _options.definitionPath, _options.name] : _options.basePath; + return { + ..._options, + flags: { hasReferencedOpenAiAnyType: false }, + currentPath, + propertyPath: void 0, + seen: new Map(Object.entries(_options.definitions).map(([name5, def]) => [ + def._def, + { + def: def._def, + path: [..._options.basePath, _options.definitionPath, name5], + // Resolution of references will be forced even though seen, so it's ok that the schema is undefined here for now. + jsonSchema: void 0 + } + ])) + }; +}; + +// node_modules/zod-to-json-schema/dist/esm/errorMessages.js +function addErrorMessage(res, key, errorMessage, refs) { + if (!refs?.errorMessages) + return; + if (errorMessage) { + res.errorMessage = { + ...res.errorMessage, + [key]: errorMessage + }; + } +} +function setResponseValueAndErrors(res, key, value, errorMessage, refs) { + res[key] = value; + addErrorMessage(res, key, errorMessage, refs); +} + +// node_modules/zod-to-json-schema/dist/esm/getRelativePath.js +var getRelativePath = (pathA, pathB) => { + let i = 0; + for (; i < pathA.length && i < pathB.length; i++) { + if (pathA[i] !== pathB[i]) + break; + } + return [(pathA.length - i).toString(), ...pathB.slice(i)].join("/"); +}; + +// node_modules/zod-to-json-schema/dist/esm/parsers/any.js +function parseAnyDef(refs) { + if (refs.target !== "openAi") { + return {}; + } + const anyDefinitionPath = [ + ...refs.basePath, + refs.definitionPath, + refs.openAiAnyTypeName + ]; + refs.flags.hasReferencedOpenAiAnyType = true; + return { + $ref: refs.$refStrategy === "relative" ? getRelativePath(anyDefinitionPath, refs.currentPath) : anyDefinitionPath.join("/") + }; +} + +// node_modules/zod-to-json-schema/dist/esm/parsers/array.js +function parseArrayDef(def, refs) { + const res = { + type: "array" + }; + if (def.type?._def && def.type?._def?.typeName !== ZodFirstPartyTypeKind.ZodAny) { + res.items = parseDef(def.type._def, { + ...refs, + currentPath: [...refs.currentPath, "items"] + }); + } + if (def.minLength) { + setResponseValueAndErrors(res, "minItems", def.minLength.value, def.minLength.message, refs); + } + if (def.maxLength) { + setResponseValueAndErrors(res, "maxItems", def.maxLength.value, def.maxLength.message, refs); + } + if (def.exactLength) { + setResponseValueAndErrors(res, "minItems", def.exactLength.value, def.exactLength.message, refs); + setResponseValueAndErrors(res, "maxItems", def.exactLength.value, def.exactLength.message, refs); + } + return res; +} + +// node_modules/zod-to-json-schema/dist/esm/parsers/bigint.js +function parseBigintDef(def, refs) { + const res = { + type: "integer", + format: "int64" + }; + if (!def.checks) + return res; + for (const check2 of def.checks) { + switch (check2.kind) { + case "min": + if (refs.target === "jsonSchema7") { + if (check2.inclusive) { + setResponseValueAndErrors(res, "minimum", check2.value, check2.message, refs); + } else { + setResponseValueAndErrors(res, "exclusiveMinimum", check2.value, check2.message, refs); + } + } else { + if (!check2.inclusive) { + res.exclusiveMinimum = true; + } + setResponseValueAndErrors(res, "minimum", check2.value, check2.message, refs); + } + break; + case "max": + if (refs.target === "jsonSchema7") { + if (check2.inclusive) { + setResponseValueAndErrors(res, "maximum", check2.value, check2.message, refs); + } else { + setResponseValueAndErrors(res, "exclusiveMaximum", check2.value, check2.message, refs); + } + } else { + if (!check2.inclusive) { + res.exclusiveMaximum = true; + } + setResponseValueAndErrors(res, "maximum", check2.value, check2.message, refs); + } + break; + case "multipleOf": + setResponseValueAndErrors(res, "multipleOf", check2.value, check2.message, refs); + break; + } + } + return res; +} + +// node_modules/zod-to-json-schema/dist/esm/parsers/boolean.js +function parseBooleanDef() { + return { + type: "boolean" + }; +} + +// node_modules/zod-to-json-schema/dist/esm/parsers/branded.js +function parseBrandedDef(_def, refs) { + return parseDef(_def.type._def, refs); +} + +// node_modules/zod-to-json-schema/dist/esm/parsers/catch.js +var parseCatchDef = (def, refs) => { + return parseDef(def.innerType._def, refs); +}; + +// node_modules/zod-to-json-schema/dist/esm/parsers/date.js +function parseDateDef(def, refs, overrideDateStrategy) { + const strategy = overrideDateStrategy ?? refs.dateStrategy; + if (Array.isArray(strategy)) { + return { + anyOf: strategy.map((item, i) => parseDateDef(def, refs, item)) + }; + } + switch (strategy) { + case "string": + case "format:date-time": + return { + type: "string", + format: "date-time" + }; + case "format:date": + return { + type: "string", + format: "date" + }; + case "integer": + return integerDateParser(def, refs); + } +} +var integerDateParser = (def, refs) => { + const res = { + type: "integer", + format: "unix-time" + }; + if (refs.target === "openApi3") { + return res; + } + for (const check2 of def.checks) { + switch (check2.kind) { + case "min": + setResponseValueAndErrors( + res, + "minimum", + check2.value, + // This is in milliseconds + check2.message, + refs + ); + break; + case "max": + setResponseValueAndErrors( + res, + "maximum", + check2.value, + // This is in milliseconds + check2.message, + refs + ); + break; + } + } + return res; +}; + +// node_modules/zod-to-json-schema/dist/esm/parsers/default.js +function parseDefaultDef(_def, refs) { + return { + ...parseDef(_def.innerType._def, refs), + default: _def.defaultValue() + }; +} + +// node_modules/zod-to-json-schema/dist/esm/parsers/effects.js +function parseEffectsDef(_def, refs) { + return refs.effectStrategy === "input" ? parseDef(_def.schema._def, refs) : parseAnyDef(refs); +} + +// node_modules/zod-to-json-schema/dist/esm/parsers/enum.js +function parseEnumDef(def) { + return { + type: "string", + enum: Array.from(def.values) + }; +} + +// node_modules/zod-to-json-schema/dist/esm/parsers/intersection.js +var isJsonSchema7AllOfType = (type) => { + if ("type" in type && type.type === "string") + return false; + return "allOf" in type; +}; +function parseIntersectionDef(def, refs) { + const allOf = [ + parseDef(def.left._def, { + ...refs, + currentPath: [...refs.currentPath, "allOf", "0"] + }), + parseDef(def.right._def, { + ...refs, + currentPath: [...refs.currentPath, "allOf", "1"] + }) + ].filter((x) => !!x); + let unevaluatedProperties = refs.target === "jsonSchema2019-09" ? { unevaluatedProperties: false } : void 0; + const mergedAllOf = []; + allOf.forEach((schema) => { + if (isJsonSchema7AllOfType(schema)) { + mergedAllOf.push(...schema.allOf); + if (schema.unevaluatedProperties === void 0) { + unevaluatedProperties = void 0; + } + } else { + let nestedSchema = schema; + if ("additionalProperties" in schema && schema.additionalProperties === false) { + const { additionalProperties, ...rest } = schema; + nestedSchema = rest; + } else { + unevaluatedProperties = void 0; + } + mergedAllOf.push(nestedSchema); + } + }); + return mergedAllOf.length ? { + allOf: mergedAllOf, + ...unevaluatedProperties + } : void 0; +} + +// node_modules/zod-to-json-schema/dist/esm/parsers/literal.js +function parseLiteralDef(def, refs) { + const parsedType2 = typeof def.value; + if (parsedType2 !== "bigint" && parsedType2 !== "number" && parsedType2 !== "boolean" && parsedType2 !== "string") { + return { + type: Array.isArray(def.value) ? "array" : "object" + }; + } + if (refs.target === "openApi3") { + return { + type: parsedType2 === "bigint" ? "integer" : parsedType2, + enum: [def.value] + }; + } + return { + type: parsedType2 === "bigint" ? "integer" : parsedType2, + const: def.value + }; +} + +// node_modules/zod-to-json-schema/dist/esm/parsers/string.js +var emojiRegex2 = void 0; +var zodPatterns = { + /** + * `c` was changed to `[cC]` to replicate /i flag + */ + cuid: /^[cC][^\s-]{8,}$/, + cuid2: /^[0-9a-z]+$/, + ulid: /^[0-9A-HJKMNP-TV-Z]{26}$/, + /** + * `a-z` was added to replicate /i flag + */ + email: /^(?!\.)(?!.*\.\.)([a-zA-Z0-9_'+\-\.]*)[a-zA-Z0-9_+-]@([a-zA-Z0-9][a-zA-Z0-9\-]*\.)+[a-zA-Z]{2,}$/, + /** + * Constructed a valid Unicode RegExp + * + * Lazily instantiate since this type of regex isn't supported + * in all envs (e.g. React Native). + * + * See: + * https://github.com/colinhacks/zod/issues/2433 + * Fix in Zod: + * https://github.com/colinhacks/zod/commit/9340fd51e48576a75adc919bff65dbc4a5d4c99b + */ + emoji: () => { + if (emojiRegex2 === void 0) { + emojiRegex2 = RegExp("^(\\p{Extended_Pictographic}|\\p{Emoji_Component})+$", "u"); + } + return emojiRegex2; + }, + /** + * Unused + */ + uuid: /^[0-9a-fA-F]{8}\b-[0-9a-fA-F]{4}\b-[0-9a-fA-F]{4}\b-[0-9a-fA-F]{4}\b-[0-9a-fA-F]{12}$/, + /** + * Unused + */ + ipv4: /^(?:(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\.){3}(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])$/, + ipv4Cidr: /^(?:(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\.){3}(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\/(3[0-2]|[12]?[0-9])$/, + /** + * Unused + */ + ipv6: /^(([a-f0-9]{1,4}:){7}|::([a-f0-9]{1,4}:){0,6}|([a-f0-9]{1,4}:){1}:([a-f0-9]{1,4}:){0,5}|([a-f0-9]{1,4}:){2}:([a-f0-9]{1,4}:){0,4}|([a-f0-9]{1,4}:){3}:([a-f0-9]{1,4}:){0,3}|([a-f0-9]{1,4}:){4}:([a-f0-9]{1,4}:){0,2}|([a-f0-9]{1,4}:){5}:([a-f0-9]{1,4}:){0,1})([a-f0-9]{1,4}|(((25[0-5])|(2[0-4][0-9])|(1[0-9]{2})|([0-9]{1,2}))\.){3}((25[0-5])|(2[0-4][0-9])|(1[0-9]{2})|([0-9]{1,2})))$/, + ipv6Cidr: /^(([0-9a-fA-F]{1,4}:){7,7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:)|fe80:(:[0-9a-fA-F]{0,4}){0,4}%[0-9a-zA-Z]{1,}|::(ffff(:0{1,4}){0,1}:){0,1}((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])|([0-9a-fA-F]{1,4}:){1,4}:((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9]))\/(12[0-8]|1[01][0-9]|[1-9]?[0-9])$/, + base64: /^([0-9a-zA-Z+/]{4})*(([0-9a-zA-Z+/]{2}==)|([0-9a-zA-Z+/]{3}=))?$/, + base64url: /^([0-9a-zA-Z-_]{4})*(([0-9a-zA-Z-_]{2}(==)?)|([0-9a-zA-Z-_]{3}(=)?))?$/, + nanoid: /^[a-zA-Z0-9_-]{21}$/, + jwt: /^[A-Za-z0-9-_]+\.[A-Za-z0-9-_]+\.[A-Za-z0-9-_]*$/ +}; +function parseStringDef(def, refs) { + const res = { + type: "string" + }; + if (def.checks) { + for (const check2 of def.checks) { + switch (check2.kind) { + case "min": + setResponseValueAndErrors(res, "minLength", typeof res.minLength === "number" ? Math.max(res.minLength, check2.value) : check2.value, check2.message, refs); + break; + case "max": + setResponseValueAndErrors(res, "maxLength", typeof res.maxLength === "number" ? Math.min(res.maxLength, check2.value) : check2.value, check2.message, refs); + break; + case "email": + switch (refs.emailStrategy) { + case "format:email": + addFormat(res, "email", check2.message, refs); + break; + case "format:idn-email": + addFormat(res, "idn-email", check2.message, refs); + break; + case "pattern:zod": + addPattern(res, zodPatterns.email, check2.message, refs); + break; + } + break; + case "url": + addFormat(res, "uri", check2.message, refs); + break; + case "uuid": + addFormat(res, "uuid", check2.message, refs); + break; + case "regex": + addPattern(res, check2.regex, check2.message, refs); + break; + case "cuid": + addPattern(res, zodPatterns.cuid, check2.message, refs); + break; + case "cuid2": + addPattern(res, zodPatterns.cuid2, check2.message, refs); + break; + case "startsWith": + addPattern(res, RegExp(`^${escapeLiteralCheckValue(check2.value, refs)}`), check2.message, refs); + break; + case "endsWith": + addPattern(res, RegExp(`${escapeLiteralCheckValue(check2.value, refs)}$`), check2.message, refs); + break; + case "datetime": + addFormat(res, "date-time", check2.message, refs); + break; + case "date": + addFormat(res, "date", check2.message, refs); + break; + case "time": + addFormat(res, "time", check2.message, refs); + break; + case "duration": + addFormat(res, "duration", check2.message, refs); + break; + case "length": + setResponseValueAndErrors(res, "minLength", typeof res.minLength === "number" ? Math.max(res.minLength, check2.value) : check2.value, check2.message, refs); + setResponseValueAndErrors(res, "maxLength", typeof res.maxLength === "number" ? Math.min(res.maxLength, check2.value) : check2.value, check2.message, refs); + break; + case "includes": { + addPattern(res, RegExp(escapeLiteralCheckValue(check2.value, refs)), check2.message, refs); + break; + } + case "ip": { + if (check2.version !== "v6") { + addFormat(res, "ipv4", check2.message, refs); + } + if (check2.version !== "v4") { + addFormat(res, "ipv6", check2.message, refs); + } + break; + } + case "base64url": + addPattern(res, zodPatterns.base64url, check2.message, refs); + break; + case "jwt": + addPattern(res, zodPatterns.jwt, check2.message, refs); + break; + case "cidr": { + if (check2.version !== "v6") { + addPattern(res, zodPatterns.ipv4Cidr, check2.message, refs); + } + if (check2.version !== "v4") { + addPattern(res, zodPatterns.ipv6Cidr, check2.message, refs); + } + break; + } + case "emoji": + addPattern(res, zodPatterns.emoji(), check2.message, refs); + break; + case "ulid": { + addPattern(res, zodPatterns.ulid, check2.message, refs); + break; + } + case "base64": { + switch (refs.base64Strategy) { + case "format:binary": { + addFormat(res, "binary", check2.message, refs); + break; + } + case "contentEncoding:base64": { + setResponseValueAndErrors(res, "contentEncoding", "base64", check2.message, refs); + break; + } + case "pattern:zod": { + addPattern(res, zodPatterns.base64, check2.message, refs); + break; + } + } + break; + } + case "nanoid": { + addPattern(res, zodPatterns.nanoid, check2.message, refs); + } + case "toLowerCase": + case "toUpperCase": + case "trim": + break; + default: + /* @__PURE__ */ ((_) => { + })(check2); + } + } + } + return res; +} +function escapeLiteralCheckValue(literal2, refs) { + return refs.patternStrategy === "escape" ? escapeNonAlphaNumeric(literal2) : literal2; +} +var ALPHA_NUMERIC = new Set("ABCDEFGHIJKLMNOPQRSTUVXYZabcdefghijklmnopqrstuvxyz0123456789"); +function escapeNonAlphaNumeric(source) { + let result = ""; + for (let i = 0; i < source.length; i++) { + if (!ALPHA_NUMERIC.has(source[i])) { + result += "\\"; + } + result += source[i]; + } + return result; +} +function addFormat(schema, value, message, refs) { + if (schema.format || schema.anyOf?.some((x) => x.format)) { + if (!schema.anyOf) { + schema.anyOf = []; + } + if (schema.format) { + schema.anyOf.push({ + format: schema.format, + ...schema.errorMessage && refs.errorMessages && { + errorMessage: { format: schema.errorMessage.format } + } + }); + delete schema.format; + if (schema.errorMessage) { + delete schema.errorMessage.format; + if (Object.keys(schema.errorMessage).length === 0) { + delete schema.errorMessage; + } + } + } + schema.anyOf.push({ + format: value, + ...message && refs.errorMessages && { errorMessage: { format: message } } + }); + } else { + setResponseValueAndErrors(schema, "format", value, message, refs); + } +} +function addPattern(schema, regex, message, refs) { + if (schema.pattern || schema.allOf?.some((x) => x.pattern)) { + if (!schema.allOf) { + schema.allOf = []; + } + if (schema.pattern) { + schema.allOf.push({ + pattern: schema.pattern, + ...schema.errorMessage && refs.errorMessages && { + errorMessage: { pattern: schema.errorMessage.pattern } + } + }); + delete schema.pattern; + if (schema.errorMessage) { + delete schema.errorMessage.pattern; + if (Object.keys(schema.errorMessage).length === 0) { + delete schema.errorMessage; + } + } + } + schema.allOf.push({ + pattern: stringifyRegExpWithFlags(regex, refs), + ...message && refs.errorMessages && { errorMessage: { pattern: message } } + }); + } else { + setResponseValueAndErrors(schema, "pattern", stringifyRegExpWithFlags(regex, refs), message, refs); + } +} +function stringifyRegExpWithFlags(regex, refs) { + if (!refs.applyRegexFlags || !regex.flags) { + return regex.source; + } + const flags = { + i: regex.flags.includes("i"), + m: regex.flags.includes("m"), + s: regex.flags.includes("s") + // `.` matches newlines + }; + const source = flags.i ? regex.source.toLowerCase() : regex.source; + let pattern = ""; + let isEscaped = false; + let inCharGroup = false; + let inCharRange = false; + for (let i = 0; i < source.length; i++) { + if (isEscaped) { + pattern += source[i]; + isEscaped = false; + continue; + } + if (flags.i) { + if (inCharGroup) { + if (source[i].match(/[a-z]/)) { + if (inCharRange) { + pattern += source[i]; + pattern += `${source[i - 2]}-${source[i]}`.toUpperCase(); + inCharRange = false; + } else if (source[i + 1] === "-" && source[i + 2]?.match(/[a-z]/)) { + pattern += source[i]; + inCharRange = true; + } else { + pattern += `${source[i]}${source[i].toUpperCase()}`; + } + continue; + } + } else if (source[i].match(/[a-z]/)) { + pattern += `[${source[i]}${source[i].toUpperCase()}]`; + continue; + } + } + if (flags.m) { + if (source[i] === "^") { + pattern += `(^|(?<=[\r +]))`; + continue; + } else if (source[i] === "$") { + pattern += `($|(?=[\r +]))`; + continue; + } + } + if (flags.s && source[i] === ".") { + pattern += inCharGroup ? `${source[i]}\r +` : `[${source[i]}\r +]`; + continue; + } + pattern += source[i]; + if (source[i] === "\\") { + isEscaped = true; + } else if (inCharGroup && source[i] === "]") { + inCharGroup = false; + } else if (!inCharGroup && source[i] === "[") { + inCharGroup = true; + } + } + try { + new RegExp(pattern); + } catch { + console.warn(`Could not convert regex pattern at ${refs.currentPath.join("/")} to a flag-independent form! Falling back to the flag-ignorant source`); + return regex.source; + } + return pattern; +} + +// node_modules/zod-to-json-schema/dist/esm/parsers/record.js +function parseRecordDef(def, refs) { + if (refs.target === "openAi") { + console.warn("Warning: OpenAI may not support records in schemas! Try an array of key-value pairs instead."); + } + if (refs.target === "openApi3" && def.keyType?._def.typeName === ZodFirstPartyTypeKind.ZodEnum) { + return { + type: "object", + required: def.keyType._def.values, + properties: def.keyType._def.values.reduce((acc, key) => ({ + ...acc, + [key]: parseDef(def.valueType._def, { + ...refs, + currentPath: [...refs.currentPath, "properties", key] + }) ?? parseAnyDef(refs) + }), {}), + additionalProperties: refs.rejectedAdditionalProperties + }; + } + const schema = { + type: "object", + additionalProperties: parseDef(def.valueType._def, { + ...refs, + currentPath: [...refs.currentPath, "additionalProperties"] + }) ?? refs.allowedAdditionalProperties + }; + if (refs.target === "openApi3") { + return schema; + } + if (def.keyType?._def.typeName === ZodFirstPartyTypeKind.ZodString && def.keyType._def.checks?.length) { + const { type, ...keyType } = parseStringDef(def.keyType._def, refs); + return { + ...schema, + propertyNames: keyType + }; + } else if (def.keyType?._def.typeName === ZodFirstPartyTypeKind.ZodEnum) { + return { + ...schema, + propertyNames: { + enum: def.keyType._def.values + } + }; + } else if (def.keyType?._def.typeName === ZodFirstPartyTypeKind.ZodBranded && def.keyType._def.type._def.typeName === ZodFirstPartyTypeKind.ZodString && def.keyType._def.type._def.checks?.length) { + const { type, ...keyType } = parseBrandedDef(def.keyType._def, refs); + return { + ...schema, + propertyNames: keyType + }; + } + return schema; +} + +// node_modules/zod-to-json-schema/dist/esm/parsers/map.js +function parseMapDef(def, refs) { + if (refs.mapStrategy === "record") { + return parseRecordDef(def, refs); + } + const keys = parseDef(def.keyType._def, { + ...refs, + currentPath: [...refs.currentPath, "items", "items", "0"] + }) || parseAnyDef(refs); + const values = parseDef(def.valueType._def, { + ...refs, + currentPath: [...refs.currentPath, "items", "items", "1"] + }) || parseAnyDef(refs); + return { + type: "array", + maxItems: 125, + items: { + type: "array", + items: [keys, values], + minItems: 2, + maxItems: 2 + } + }; +} + +// node_modules/zod-to-json-schema/dist/esm/parsers/nativeEnum.js +function parseNativeEnumDef(def) { + const object3 = def.values; + const actualKeys = Object.keys(def.values).filter((key) => { + return typeof object3[object3[key]] !== "number"; + }); + const actualValues = actualKeys.map((key) => object3[key]); + const parsedTypes = Array.from(new Set(actualValues.map((values) => typeof values))); + return { + type: parsedTypes.length === 1 ? parsedTypes[0] === "string" ? "string" : "number" : ["string", "number"], + enum: actualValues + }; +} + +// node_modules/zod-to-json-schema/dist/esm/parsers/never.js +function parseNeverDef(refs) { + return refs.target === "openAi" ? void 0 : { + not: parseAnyDef({ + ...refs, + currentPath: [...refs.currentPath, "not"] + }) + }; +} + +// node_modules/zod-to-json-schema/dist/esm/parsers/null.js +function parseNullDef(refs) { + return refs.target === "openApi3" ? { + enum: ["null"], + nullable: true + } : { + type: "null" + }; +} + +// node_modules/zod-to-json-schema/dist/esm/parsers/union.js +var primitiveMappings = { + ZodString: "string", + ZodNumber: "number", + ZodBigInt: "integer", + ZodBoolean: "boolean", + ZodNull: "null" +}; +function parseUnionDef(def, refs) { + if (refs.target === "openApi3") + return asAnyOf(def, refs); + const options = def.options instanceof Map ? Array.from(def.options.values()) : def.options; + if (options.every((x) => x._def.typeName in primitiveMappings && (!x._def.checks || !x._def.checks.length))) { + const types = options.reduce((types2, x) => { + const type = primitiveMappings[x._def.typeName]; + return type && !types2.includes(type) ? [...types2, type] : types2; + }, []); + return { + type: types.length > 1 ? types : types[0] + }; + } else if (options.every((x) => x._def.typeName === "ZodLiteral" && !x.description)) { + const types = options.reduce((acc, x) => { + const type = typeof x._def.value; + switch (type) { + case "string": + case "number": + case "boolean": + return [...acc, type]; + case "bigint": + return [...acc, "integer"]; + case "object": + if (x._def.value === null) + return [...acc, "null"]; + case "symbol": + case "undefined": + case "function": + default: + return acc; + } + }, []); + if (types.length === options.length) { + const uniqueTypes = types.filter((x, i, a) => a.indexOf(x) === i); + return { + type: uniqueTypes.length > 1 ? uniqueTypes : uniqueTypes[0], + enum: options.reduce((acc, x) => { + return acc.includes(x._def.value) ? acc : [...acc, x._def.value]; + }, []) + }; + } + } else if (options.every((x) => x._def.typeName === "ZodEnum")) { + return { + type: "string", + enum: options.reduce((acc, x) => [ + ...acc, + ...x._def.values.filter((x2) => !acc.includes(x2)) + ], []) + }; + } + return asAnyOf(def, refs); +} +var asAnyOf = (def, refs) => { + const anyOf = (def.options instanceof Map ? Array.from(def.options.values()) : def.options).map((x, i) => parseDef(x._def, { + ...refs, + currentPath: [...refs.currentPath, "anyOf", `${i}`] + })).filter((x) => !!x && (!refs.strictUnions || typeof x === "object" && Object.keys(x).length > 0)); + return anyOf.length ? { anyOf } : void 0; +}; + +// node_modules/zod-to-json-schema/dist/esm/parsers/nullable.js +function parseNullableDef(def, refs) { + if (["ZodString", "ZodNumber", "ZodBigInt", "ZodBoolean", "ZodNull"].includes(def.innerType._def.typeName) && (!def.innerType._def.checks || !def.innerType._def.checks.length)) { + if (refs.target === "openApi3") { + return { + type: primitiveMappings[def.innerType._def.typeName], + nullable: true + }; + } + return { + type: [ + primitiveMappings[def.innerType._def.typeName], + "null" + ] + }; + } + if (refs.target === "openApi3") { + const base2 = parseDef(def.innerType._def, { + ...refs, + currentPath: [...refs.currentPath] + }); + if (base2 && "$ref" in base2) + return { allOf: [base2], nullable: true }; + return base2 && { ...base2, nullable: true }; + } + const base = parseDef(def.innerType._def, { + ...refs, + currentPath: [...refs.currentPath, "anyOf", "0"] + }); + return base && { anyOf: [base, { type: "null" }] }; +} + +// node_modules/zod-to-json-schema/dist/esm/parsers/number.js +function parseNumberDef(def, refs) { + const res = { + type: "number" + }; + if (!def.checks) + return res; + for (const check2 of def.checks) { + switch (check2.kind) { + case "int": + res.type = "integer"; + addErrorMessage(res, "type", check2.message, refs); + break; + case "min": + if (refs.target === "jsonSchema7") { + if (check2.inclusive) { + setResponseValueAndErrors(res, "minimum", check2.value, check2.message, refs); + } else { + setResponseValueAndErrors(res, "exclusiveMinimum", check2.value, check2.message, refs); + } + } else { + if (!check2.inclusive) { + res.exclusiveMinimum = true; + } + setResponseValueAndErrors(res, "minimum", check2.value, check2.message, refs); + } + break; + case "max": + if (refs.target === "jsonSchema7") { + if (check2.inclusive) { + setResponseValueAndErrors(res, "maximum", check2.value, check2.message, refs); + } else { + setResponseValueAndErrors(res, "exclusiveMaximum", check2.value, check2.message, refs); + } + } else { + if (!check2.inclusive) { + res.exclusiveMaximum = true; + } + setResponseValueAndErrors(res, "maximum", check2.value, check2.message, refs); + } + break; + case "multipleOf": + setResponseValueAndErrors(res, "multipleOf", check2.value, check2.message, refs); + break; + } + } + return res; +} + +// node_modules/zod-to-json-schema/dist/esm/parsers/object.js +function parseObjectDef(def, refs) { + const forceOptionalIntoNullable = refs.target === "openAi"; + const result = { + type: "object", + properties: {} + }; + const required2 = []; + const shape = def.shape(); + for (const propName in shape) { + let propDef = shape[propName]; + if (propDef === void 0 || propDef._def === void 0) { + continue; + } + let propOptional = safeIsOptional(propDef); + if (propOptional && forceOptionalIntoNullable) { + if (propDef._def.typeName === "ZodOptional") { + propDef = propDef._def.innerType; + } + if (!propDef.isNullable()) { + propDef = propDef.nullable(); + } + propOptional = false; + } + const parsedDef = parseDef(propDef._def, { + ...refs, + currentPath: [...refs.currentPath, "properties", propName], + propertyPath: [...refs.currentPath, "properties", propName] + }); + if (parsedDef === void 0) { + continue; + } + result.properties[propName] = parsedDef; + if (!propOptional) { + required2.push(propName); + } + } + if (required2.length) { + result.required = required2; + } + const additionalProperties = decideAdditionalProperties(def, refs); + if (additionalProperties !== void 0) { + result.additionalProperties = additionalProperties; + } + return result; +} +function decideAdditionalProperties(def, refs) { + if (def.catchall._def.typeName !== "ZodNever") { + return parseDef(def.catchall._def, { + ...refs, + currentPath: [...refs.currentPath, "additionalProperties"] + }); + } + switch (def.unknownKeys) { + case "passthrough": + return refs.allowedAdditionalProperties; + case "strict": + return refs.rejectedAdditionalProperties; + case "strip": + return refs.removeAdditionalStrategy === "strict" ? refs.allowedAdditionalProperties : refs.rejectedAdditionalProperties; + } +} +function safeIsOptional(schema) { + try { + return schema.isOptional(); + } catch { + return true; + } +} + +// node_modules/zod-to-json-schema/dist/esm/parsers/optional.js +var parseOptionalDef = (def, refs) => { + if (refs.currentPath.toString() === refs.propertyPath?.toString()) { + return parseDef(def.innerType._def, refs); + } + const innerSchema = parseDef(def.innerType._def, { + ...refs, + currentPath: [...refs.currentPath, "anyOf", "1"] + }); + return innerSchema ? { + anyOf: [ + { + not: parseAnyDef(refs) + }, + innerSchema + ] + } : parseAnyDef(refs); +}; + +// node_modules/zod-to-json-schema/dist/esm/parsers/pipeline.js +var parsePipelineDef = (def, refs) => { + if (refs.pipeStrategy === "input") { + return parseDef(def.in._def, refs); + } else if (refs.pipeStrategy === "output") { + return parseDef(def.out._def, refs); + } + const a = parseDef(def.in._def, { + ...refs, + currentPath: [...refs.currentPath, "allOf", "0"] + }); + const b = parseDef(def.out._def, { + ...refs, + currentPath: [...refs.currentPath, "allOf", a ? "1" : "0"] + }); + return { + allOf: [a, b].filter((x) => x !== void 0) + }; +}; + +// node_modules/zod-to-json-schema/dist/esm/parsers/promise.js +function parsePromiseDef(def, refs) { + return parseDef(def.type._def, refs); +} + +// node_modules/zod-to-json-schema/dist/esm/parsers/set.js +function parseSetDef(def, refs) { + const items = parseDef(def.valueType._def, { + ...refs, + currentPath: [...refs.currentPath, "items"] + }); + const schema = { + type: "array", + uniqueItems: true, + items + }; + if (def.minSize) { + setResponseValueAndErrors(schema, "minItems", def.minSize.value, def.minSize.message, refs); + } + if (def.maxSize) { + setResponseValueAndErrors(schema, "maxItems", def.maxSize.value, def.maxSize.message, refs); + } + return schema; +} + +// node_modules/zod-to-json-schema/dist/esm/parsers/tuple.js +function parseTupleDef(def, refs) { + if (def.rest) { + return { + type: "array", + minItems: def.items.length, + items: def.items.map((x, i) => parseDef(x._def, { + ...refs, + currentPath: [...refs.currentPath, "items", `${i}`] + })).reduce((acc, x) => x === void 0 ? acc : [...acc, x], []), + additionalItems: parseDef(def.rest._def, { + ...refs, + currentPath: [...refs.currentPath, "additionalItems"] + }) + }; + } else { + return { + type: "array", + minItems: def.items.length, + maxItems: def.items.length, + items: def.items.map((x, i) => parseDef(x._def, { + ...refs, + currentPath: [...refs.currentPath, "items", `${i}`] + })).reduce((acc, x) => x === void 0 ? acc : [...acc, x], []) + }; + } +} + +// node_modules/zod-to-json-schema/dist/esm/parsers/undefined.js +function parseUndefinedDef(refs) { + return { + not: parseAnyDef(refs) + }; +} + +// node_modules/zod-to-json-schema/dist/esm/parsers/unknown.js +function parseUnknownDef(refs) { + return parseAnyDef(refs); +} + +// node_modules/zod-to-json-schema/dist/esm/parsers/readonly.js +var parseReadonlyDef = (def, refs) => { + return parseDef(def.innerType._def, refs); +}; + +// node_modules/zod-to-json-schema/dist/esm/selectParser.js +var selectParser = (def, typeName, refs) => { + switch (typeName) { + case ZodFirstPartyTypeKind.ZodString: + return parseStringDef(def, refs); + case ZodFirstPartyTypeKind.ZodNumber: + return parseNumberDef(def, refs); + case ZodFirstPartyTypeKind.ZodObject: + return parseObjectDef(def, refs); + case ZodFirstPartyTypeKind.ZodBigInt: + return parseBigintDef(def, refs); + case ZodFirstPartyTypeKind.ZodBoolean: + return parseBooleanDef(); + case ZodFirstPartyTypeKind.ZodDate: + return parseDateDef(def, refs); + case ZodFirstPartyTypeKind.ZodUndefined: + return parseUndefinedDef(refs); + case ZodFirstPartyTypeKind.ZodNull: + return parseNullDef(refs); + case ZodFirstPartyTypeKind.ZodArray: + return parseArrayDef(def, refs); + case ZodFirstPartyTypeKind.ZodUnion: + case ZodFirstPartyTypeKind.ZodDiscriminatedUnion: + return parseUnionDef(def, refs); + case ZodFirstPartyTypeKind.ZodIntersection: + return parseIntersectionDef(def, refs); + case ZodFirstPartyTypeKind.ZodTuple: + return parseTupleDef(def, refs); + case ZodFirstPartyTypeKind.ZodRecord: + return parseRecordDef(def, refs); + case ZodFirstPartyTypeKind.ZodLiteral: + return parseLiteralDef(def, refs); + case ZodFirstPartyTypeKind.ZodEnum: + return parseEnumDef(def); + case ZodFirstPartyTypeKind.ZodNativeEnum: + return parseNativeEnumDef(def); + case ZodFirstPartyTypeKind.ZodNullable: + return parseNullableDef(def, refs); + case ZodFirstPartyTypeKind.ZodOptional: + return parseOptionalDef(def, refs); + case ZodFirstPartyTypeKind.ZodMap: + return parseMapDef(def, refs); + case ZodFirstPartyTypeKind.ZodSet: + return parseSetDef(def, refs); + case ZodFirstPartyTypeKind.ZodLazy: + return () => def.getter()._def; + case ZodFirstPartyTypeKind.ZodPromise: + return parsePromiseDef(def, refs); + case ZodFirstPartyTypeKind.ZodNaN: + case ZodFirstPartyTypeKind.ZodNever: + return parseNeverDef(refs); + case ZodFirstPartyTypeKind.ZodEffects: + return parseEffectsDef(def, refs); + case ZodFirstPartyTypeKind.ZodAny: + return parseAnyDef(refs); + case ZodFirstPartyTypeKind.ZodUnknown: + return parseUnknownDef(refs); + case ZodFirstPartyTypeKind.ZodDefault: + return parseDefaultDef(def, refs); + case ZodFirstPartyTypeKind.ZodBranded: + return parseBrandedDef(def, refs); + case ZodFirstPartyTypeKind.ZodReadonly: + return parseReadonlyDef(def, refs); + case ZodFirstPartyTypeKind.ZodCatch: + return parseCatchDef(def, refs); + case ZodFirstPartyTypeKind.ZodPipeline: + return parsePipelineDef(def, refs); + case ZodFirstPartyTypeKind.ZodFunction: + case ZodFirstPartyTypeKind.ZodVoid: + case ZodFirstPartyTypeKind.ZodSymbol: + return void 0; + default: + return /* @__PURE__ */ ((_) => void 0)(typeName); + } +}; + +// node_modules/zod-to-json-schema/dist/esm/parseDef.js +function parseDef(def, refs, forceResolution = false) { + const seenItem = refs.seen.get(def); + if (refs.override) { + const overrideResult = refs.override?.(def, refs, seenItem, forceResolution); + if (overrideResult !== ignoreOverride) { + return overrideResult; + } + } + if (seenItem && !forceResolution) { + const seenSchema = get$ref(seenItem, refs); + if (seenSchema !== void 0) { + return seenSchema; + } + } + const newItem = { def, path: refs.currentPath, jsonSchema: void 0 }; + refs.seen.set(def, newItem); + const jsonSchemaOrGetter = selectParser(def, def.typeName, refs); + const jsonSchema = typeof jsonSchemaOrGetter === "function" ? parseDef(jsonSchemaOrGetter(), refs) : jsonSchemaOrGetter; + if (jsonSchema) { + addMeta(def, refs, jsonSchema); + } + if (refs.postProcess) { + const postProcessResult = refs.postProcess(jsonSchema, def, refs); + newItem.jsonSchema = jsonSchema; + return postProcessResult; + } + newItem.jsonSchema = jsonSchema; + return jsonSchema; +} +var get$ref = (item, refs) => { + switch (refs.$refStrategy) { + case "root": + return { $ref: item.path.join("/") }; + case "relative": + return { $ref: getRelativePath(refs.currentPath, item.path) }; + case "none": + case "seen": { + if (item.path.length < refs.currentPath.length && item.path.every((value, index) => refs.currentPath[index] === value)) { + console.warn(`Recursive reference detected at ${refs.currentPath.join("/")}! Defaulting to any`); + return parseAnyDef(refs); + } + return refs.$refStrategy === "seen" ? parseAnyDef(refs) : void 0; + } + } +}; +var addMeta = (def, refs, jsonSchema) => { + if (def.description) { + jsonSchema.description = def.description; + if (refs.markdownDescription) { + jsonSchema.markdownDescription = def.description; + } + } + return jsonSchema; +}; + +// node_modules/zod-to-json-schema/dist/esm/zodToJsonSchema.js +var zodToJsonSchema = (schema, options) => { + const refs = getRefs(options); + let definitions = typeof options === "object" && options.definitions ? Object.entries(options.definitions).reduce((acc, [name6, schema2]) => ({ + ...acc, + [name6]: parseDef(schema2._def, { + ...refs, + currentPath: [...refs.basePath, refs.definitionPath, name6] + }, true) ?? parseAnyDef(refs) + }), {}) : void 0; + const name5 = typeof options === "string" ? options : options?.nameStrategy === "title" ? void 0 : options?.name; + const main2 = parseDef(schema._def, name5 === void 0 ? refs : { + ...refs, + currentPath: [...refs.basePath, refs.definitionPath, name5] + }, false) ?? parseAnyDef(refs); + const title = typeof options === "object" && options.name !== void 0 && options.nameStrategy === "title" ? options.name : void 0; + if (title !== void 0) { + main2.title = title; + } + if (refs.flags.hasReferencedOpenAiAnyType) { + if (!definitions) { + definitions = {}; + } + if (!definitions[refs.openAiAnyTypeName]) { + definitions[refs.openAiAnyTypeName] = { + // Skipping "object" as no properties can be defined and additionalProperties must be "false" + type: ["string", "number", "integer", "boolean", "array", "null"], + items: { + $ref: refs.$refStrategy === "relative" ? "1" : [ + ...refs.basePath, + refs.definitionPath, + refs.openAiAnyTypeName + ].join("/") + } + }; + } + } + const combined = name5 === void 0 ? definitions ? { + ...main2, + [refs.definitionPath]: definitions + } : main2 : { + $ref: [ + ...refs.$refStrategy === "relative" ? [] : refs.basePath, + refs.definitionPath, + name5 + ].join("/"), + [refs.definitionPath]: { + ...definitions, + [name5]: main2 + } + }; + if (refs.target === "jsonSchema7") { + combined.$schema = "http://json-schema.org/draft-07/schema#"; + } else if (refs.target === "jsonSchema2019-09" || refs.target === "openAi") { + combined.$schema = "https://json-schema.org/draft/2019-09/schema#"; + } + if (refs.target === "openAi" && ("anyOf" in combined || "oneOf" in combined || "allOf" in combined || "type" in combined && Array.isArray(combined.type))) { + console.warn("Warning: OpenAI may not support schemas with unions as roots! Try wrapping it in an object property."); + } + return combined; +}; + +// node_modules/@modelcontextprotocol/sdk/dist/esm/server/zod-json-schema-compat.js +function mapMiniTarget(t) { + if (!t) + return "draft-7"; + if (t === "jsonSchema7" || t === "draft-7") + return "draft-7"; + if (t === "jsonSchema2019-09" || t === "draft-2020-12") + return "draft-2020-12"; + return "draft-7"; +} +function toJsonSchemaCompat(schema, opts) { + if (isZ4Schema(schema)) { + return toJSONSchema(schema, { + target: mapMiniTarget(opts?.target), + io: opts?.pipeStrategy ?? "input" + }); + } + return zodToJsonSchema(schema, { + strictUnions: opts?.strictUnions ?? true, + pipeStrategy: opts?.pipeStrategy ?? "input" + }); +} +function getMethodLiteral(schema) { + const shape = getObjectShape(schema); + const methodSchema = shape?.method; + if (!methodSchema) { + throw new Error("Schema is missing a method literal"); + } + const value = getLiteralValue(methodSchema); + if (typeof value !== "string") { + throw new Error("Schema method literal must be a string"); + } + return value; +} +function parseWithCompat(schema, data) { + const result = safeParse2(schema, data); + if (!result.success) { + throw result.error; + } + return result.data; +} + +// node_modules/@modelcontextprotocol/sdk/dist/esm/shared/protocol.js +var DEFAULT_REQUEST_TIMEOUT_MSEC = 6e4; +var Protocol = class { + constructor(_options) { + this._options = _options; + this._requestMessageId = 0; + this._requestHandlers = /* @__PURE__ */ new Map(); + this._requestHandlerAbortControllers = /* @__PURE__ */ new Map(); + this._notificationHandlers = /* @__PURE__ */ new Map(); + this._responseHandlers = /* @__PURE__ */ new Map(); + this._progressHandlers = /* @__PURE__ */ new Map(); + this._timeoutInfo = /* @__PURE__ */ new Map(); + this._pendingDebouncedNotifications = /* @__PURE__ */ new Set(); + this._taskProgressTokens = /* @__PURE__ */ new Map(); + this._requestResolvers = /* @__PURE__ */ new Map(); + this.setNotificationHandler(CancelledNotificationSchema, (notification) => { + this._oncancel(notification); + }); + this.setNotificationHandler(ProgressNotificationSchema, (notification) => { + this._onprogress(notification); + }); + this.setRequestHandler( + PingRequestSchema, + // Automatic pong by default. + (_request) => ({}) + ); + this._taskStore = _options?.taskStore; + this._taskMessageQueue = _options?.taskMessageQueue; + if (this._taskStore) { + this.setRequestHandler(GetTaskRequestSchema, async (request, extra) => { + const task = await this._taskStore.getTask(request.params.taskId, extra.sessionId); + if (!task) { + throw new McpError(ErrorCode.InvalidParams, "Failed to retrieve task: Task not found"); + } + return { + ...task + }; + }); + this.setRequestHandler(GetTaskPayloadRequestSchema, async (request, extra) => { + const handleTaskResult = async () => { + const taskId = request.params.taskId; + if (this._taskMessageQueue) { + let queuedMessage; + while (queuedMessage = await this._taskMessageQueue.dequeue(taskId, extra.sessionId)) { + if (queuedMessage.type === "response" || queuedMessage.type === "error") { + const message = queuedMessage.message; + const requestId = message.id; + const resolver = this._requestResolvers.get(requestId); + if (resolver) { + this._requestResolvers.delete(requestId); + if (queuedMessage.type === "response") { + resolver(message); + } else { + const errorMessage = message; + const error2 = new McpError(errorMessage.error.code, errorMessage.error.message, errorMessage.error.data); + resolver(error2); + } + } else { + const messageType = queuedMessage.type === "response" ? "Response" : "Error"; + this._onerror(new Error(`${messageType} handler missing for request ${requestId}`)); + } + continue; + } + await this._transport?.send(queuedMessage.message, { relatedRequestId: extra.requestId }); + } + } + const task = await this._taskStore.getTask(taskId, extra.sessionId); + if (!task) { + throw new McpError(ErrorCode.InvalidParams, `Task not found: ${taskId}`); + } + if (!isTerminal(task.status)) { + await this._waitForTaskUpdate(taskId, extra.signal); + return await handleTaskResult(); + } + if (isTerminal(task.status)) { + const result = await this._taskStore.getTaskResult(taskId, extra.sessionId); + this._clearTaskQueue(taskId); + return { + ...result, + _meta: { + ...result._meta, + [RELATED_TASK_META_KEY]: { + taskId + } + } + }; + } + return await handleTaskResult(); + }; + return await handleTaskResult(); + }); + this.setRequestHandler(ListTasksRequestSchema, async (request, extra) => { + try { + const { tasks, nextCursor } = await this._taskStore.listTasks(request.params?.cursor, extra.sessionId); + return { + tasks, + nextCursor, + _meta: {} + }; + } catch (error2) { + throw new McpError(ErrorCode.InvalidParams, `Failed to list tasks: ${error2 instanceof Error ? error2.message : String(error2)}`); + } + }); + this.setRequestHandler(CancelTaskRequestSchema, async (request, extra) => { + try { + const task = await this._taskStore.getTask(request.params.taskId, extra.sessionId); + if (!task) { + throw new McpError(ErrorCode.InvalidParams, `Task not found: ${request.params.taskId}`); + } + if (isTerminal(task.status)) { + throw new McpError(ErrorCode.InvalidParams, `Cannot cancel task in terminal status: ${task.status}`); + } + await this._taskStore.updateTaskStatus(request.params.taskId, "cancelled", "Client cancelled task execution.", extra.sessionId); + this._clearTaskQueue(request.params.taskId); + const cancelledTask = await this._taskStore.getTask(request.params.taskId, extra.sessionId); + if (!cancelledTask) { + throw new McpError(ErrorCode.InvalidParams, `Task not found after cancellation: ${request.params.taskId}`); + } + return { + _meta: {}, + ...cancelledTask + }; + } catch (error2) { + if (error2 instanceof McpError) { + throw error2; + } + throw new McpError(ErrorCode.InvalidRequest, `Failed to cancel task: ${error2 instanceof Error ? error2.message : String(error2)}`); + } + }); + } + } + async _oncancel(notification) { + if (!notification.params.requestId) { + return; + } + const controller = this._requestHandlerAbortControllers.get(notification.params.requestId); + controller?.abort(notification.params.reason); + } + _setupTimeout(messageId, timeout, maxTotalTimeout, onTimeout, resetTimeoutOnProgress = false) { + this._timeoutInfo.set(messageId, { + timeoutId: setTimeout(onTimeout, timeout), + startTime: Date.now(), + timeout, + maxTotalTimeout, + resetTimeoutOnProgress, + onTimeout + }); + } + _resetTimeout(messageId) { + const info = this._timeoutInfo.get(messageId); + if (!info) + return false; + const totalElapsed = Date.now() - info.startTime; + if (info.maxTotalTimeout && totalElapsed >= info.maxTotalTimeout) { + this._timeoutInfo.delete(messageId); + throw McpError.fromError(ErrorCode.RequestTimeout, "Maximum total timeout exceeded", { + maxTotalTimeout: info.maxTotalTimeout, + totalElapsed + }); + } + clearTimeout(info.timeoutId); + info.timeoutId = setTimeout(info.onTimeout, info.timeout); + return true; + } + _cleanupTimeout(messageId) { + const info = this._timeoutInfo.get(messageId); + if (info) { + clearTimeout(info.timeoutId); + this._timeoutInfo.delete(messageId); + } + } + /** + * Attaches to the given transport, starts it, and starts listening for messages. + * + * The Protocol object assumes ownership of the Transport, replacing any callbacks that have already been set, and expects that it is the only user of the Transport instance going forward. + */ + async connect(transport) { + if (this._transport) { + throw new Error("Already connected to a transport. Call close() before connecting to a new transport, or use a separate Protocol instance per connection."); + } + this._transport = transport; + const _onclose = this.transport?.onclose; + this._transport.onclose = () => { + _onclose?.(); + this._onclose(); + }; + const _onerror = this.transport?.onerror; + this._transport.onerror = (error2) => { + _onerror?.(error2); + this._onerror(error2); + }; + const _onmessage = this._transport?.onmessage; + this._transport.onmessage = (message, extra) => { + _onmessage?.(message, extra); + if (isJSONRPCResultResponse(message) || isJSONRPCErrorResponse(message)) { + this._onresponse(message); + } else if (isJSONRPCRequest(message)) { + this._onrequest(message, extra); + } else if (isJSONRPCNotification(message)) { + this._onnotification(message); + } else { + this._onerror(new Error(`Unknown message type: ${JSON.stringify(message)}`)); + } + }; + await this._transport.start(); + } + _onclose() { + const responseHandlers = this._responseHandlers; + this._responseHandlers = /* @__PURE__ */ new Map(); + this._progressHandlers.clear(); + this._taskProgressTokens.clear(); + this._pendingDebouncedNotifications.clear(); + for (const info of this._timeoutInfo.values()) { + clearTimeout(info.timeoutId); + } + this._timeoutInfo.clear(); + for (const controller of this._requestHandlerAbortControllers.values()) { + controller.abort(); + } + this._requestHandlerAbortControllers.clear(); + const error2 = McpError.fromError(ErrorCode.ConnectionClosed, "Connection closed"); + this._transport = void 0; + this.onclose?.(); + for (const handler of responseHandlers.values()) { + handler(error2); + } + } + _onerror(error2) { + this.onerror?.(error2); + } + _onnotification(notification) { + const handler = this._notificationHandlers.get(notification.method) ?? this.fallbackNotificationHandler; + if (handler === void 0) { + return; + } + Promise.resolve().then(() => handler(notification)).catch((error2) => this._onerror(new Error(`Uncaught error in notification handler: ${error2}`))); + } + _onrequest(request, extra) { + const handler = this._requestHandlers.get(request.method) ?? this.fallbackRequestHandler; + const capturedTransport = this._transport; + const relatedTaskId = request.params?._meta?.[RELATED_TASK_META_KEY]?.taskId; + if (handler === void 0) { + const errorResponse = { + jsonrpc: "2.0", + id: request.id, + error: { + code: ErrorCode.MethodNotFound, + message: "Method not found" + } + }; + if (relatedTaskId && this._taskMessageQueue) { + this._enqueueTaskMessage(relatedTaskId, { + type: "error", + message: errorResponse, + timestamp: Date.now() + }, capturedTransport?.sessionId).catch((error2) => this._onerror(new Error(`Failed to enqueue error response: ${error2}`))); + } else { + capturedTransport?.send(errorResponse).catch((error2) => this._onerror(new Error(`Failed to send an error response: ${error2}`))); + } + return; + } + const abortController = new AbortController(); + this._requestHandlerAbortControllers.set(request.id, abortController); + const taskCreationParams = isTaskAugmentedRequestParams(request.params) ? request.params.task : void 0; + const taskStore = this._taskStore ? this.requestTaskStore(request, capturedTransport?.sessionId) : void 0; + const fullExtra = { + signal: abortController.signal, + sessionId: capturedTransport?.sessionId, + _meta: request.params?._meta, + sendNotification: async (notification) => { + if (abortController.signal.aborted) + return; + const notificationOptions = { relatedRequestId: request.id }; + if (relatedTaskId) { + notificationOptions.relatedTask = { taskId: relatedTaskId }; + } + await this.notification(notification, notificationOptions); + }, + sendRequest: async (r, resultSchema, options) => { + if (abortController.signal.aborted) { + throw new McpError(ErrorCode.ConnectionClosed, "Request was cancelled"); + } + const requestOptions = { ...options, relatedRequestId: request.id }; + if (relatedTaskId && !requestOptions.relatedTask) { + requestOptions.relatedTask = { taskId: relatedTaskId }; + } + const effectiveTaskId = requestOptions.relatedTask?.taskId ?? relatedTaskId; + if (effectiveTaskId && taskStore) { + await taskStore.updateTaskStatus(effectiveTaskId, "input_required"); + } + return await this.request(r, resultSchema, requestOptions); + }, + authInfo: extra?.authInfo, + requestId: request.id, + requestInfo: extra?.requestInfo, + taskId: relatedTaskId, + taskStore, + taskRequestedTtl: taskCreationParams?.ttl, + closeSSEStream: extra?.closeSSEStream, + closeStandaloneSSEStream: extra?.closeStandaloneSSEStream + }; + Promise.resolve().then(() => { + if (taskCreationParams) { + this.assertTaskHandlerCapability(request.method); + } + }).then(() => handler(request, fullExtra)).then(async (result) => { + if (abortController.signal.aborted) { + return; + } + const response = { + result, + jsonrpc: "2.0", + id: request.id + }; + if (relatedTaskId && this._taskMessageQueue) { + await this._enqueueTaskMessage(relatedTaskId, { + type: "response", + message: response, + timestamp: Date.now() + }, capturedTransport?.sessionId); + } else { + await capturedTransport?.send(response); + } + }, async (error2) => { + if (abortController.signal.aborted) { + return; + } + const errorResponse = { + jsonrpc: "2.0", + id: request.id, + error: { + code: Number.isSafeInteger(error2["code"]) ? error2["code"] : ErrorCode.InternalError, + message: error2.message ?? "Internal error", + ...error2["data"] !== void 0 && { data: error2["data"] } + } + }; + if (relatedTaskId && this._taskMessageQueue) { + await this._enqueueTaskMessage(relatedTaskId, { + type: "error", + message: errorResponse, + timestamp: Date.now() + }, capturedTransport?.sessionId); + } else { + await capturedTransport?.send(errorResponse); + } + }).catch((error2) => this._onerror(new Error(`Failed to send response: ${error2}`))).finally(() => { + if (this._requestHandlerAbortControllers.get(request.id) === abortController) { + this._requestHandlerAbortControllers.delete(request.id); + } + }); + } + _onprogress(notification) { + const { progressToken, ...params } = notification.params; + const messageId = Number(progressToken); + const handler = this._progressHandlers.get(messageId); + if (!handler) { + this._onerror(new Error(`Received a progress notification for an unknown token: ${JSON.stringify(notification)}`)); + return; + } + const responseHandler = this._responseHandlers.get(messageId); + const timeoutInfo = this._timeoutInfo.get(messageId); + if (timeoutInfo && responseHandler && timeoutInfo.resetTimeoutOnProgress) { + try { + this._resetTimeout(messageId); + } catch (error2) { + this._responseHandlers.delete(messageId); + this._progressHandlers.delete(messageId); + this._cleanupTimeout(messageId); + responseHandler(error2); + return; + } + } + handler(params); + } + _onresponse(response) { + const messageId = Number(response.id); + const resolver = this._requestResolvers.get(messageId); + if (resolver) { + this._requestResolvers.delete(messageId); + if (isJSONRPCResultResponse(response)) { + resolver(response); + } else { + const error2 = new McpError(response.error.code, response.error.message, response.error.data); + resolver(error2); + } + return; + } + const handler = this._responseHandlers.get(messageId); + if (handler === void 0) { + this._onerror(new Error(`Received a response for an unknown message ID: ${JSON.stringify(response)}`)); + return; + } + this._responseHandlers.delete(messageId); + this._cleanupTimeout(messageId); + let isTaskResponse = false; + if (isJSONRPCResultResponse(response) && response.result && typeof response.result === "object") { + const result = response.result; + if (result.task && typeof result.task === "object") { + const task = result.task; + if (typeof task.taskId === "string") { + isTaskResponse = true; + this._taskProgressTokens.set(task.taskId, messageId); + } + } + } + if (!isTaskResponse) { + this._progressHandlers.delete(messageId); + } + if (isJSONRPCResultResponse(response)) { + handler(response); + } else { + const error2 = McpError.fromError(response.error.code, response.error.message, response.error.data); + handler(error2); + } + } + get transport() { + return this._transport; + } + /** + * Closes the connection. + */ + async close() { + await this._transport?.close(); + } + /** + * Sends a request and returns an AsyncGenerator that yields response messages. + * The generator is guaranteed to end with either a 'result' or 'error' message. + * + * @example + * ```typescript + * const stream = protocol.requestStream(request, resultSchema, options); + * for await (const message of stream) { + * switch (message.type) { + * case 'taskCreated': + * console.log('Task created:', message.task.taskId); + * break; + * case 'taskStatus': + * console.log('Task status:', message.task.status); + * break; + * case 'result': + * console.log('Final result:', message.result); + * break; + * case 'error': + * console.error('Error:', message.error); + * break; + * } + * } + * ``` + * + * @experimental Use `client.experimental.tasks.requestStream()` to access this method. + */ + async *requestStream(request, resultSchema, options) { + const { task } = options ?? {}; + if (!task) { + try { + const result = await this.request(request, resultSchema, options); + yield { type: "result", result }; + } catch (error2) { + yield { + type: "error", + error: error2 instanceof McpError ? error2 : new McpError(ErrorCode.InternalError, String(error2)) + }; + } + return; + } + let taskId; + try { + const createResult = await this.request(request, CreateTaskResultSchema, options); + if (createResult.task) { + taskId = createResult.task.taskId; + yield { type: "taskCreated", task: createResult.task }; + } else { + throw new McpError(ErrorCode.InternalError, "Task creation did not return a task"); + } + while (true) { + const task2 = await this.getTask({ taskId }, options); + yield { type: "taskStatus", task: task2 }; + if (isTerminal(task2.status)) { + if (task2.status === "completed") { + const result = await this.getTaskResult({ taskId }, resultSchema, options); + yield { type: "result", result }; + } else if (task2.status === "failed") { + yield { + type: "error", + error: new McpError(ErrorCode.InternalError, `Task ${taskId} failed`) + }; + } else if (task2.status === "cancelled") { + yield { + type: "error", + error: new McpError(ErrorCode.InternalError, `Task ${taskId} was cancelled`) + }; + } + return; + } + if (task2.status === "input_required") { + const result = await this.getTaskResult({ taskId }, resultSchema, options); + yield { type: "result", result }; + return; + } + const pollInterval = task2.pollInterval ?? this._options?.defaultTaskPollInterval ?? 1e3; + await new Promise((resolve) => setTimeout(resolve, pollInterval)); + options?.signal?.throwIfAborted(); + } + } catch (error2) { + yield { + type: "error", + error: error2 instanceof McpError ? error2 : new McpError(ErrorCode.InternalError, String(error2)) + }; + } + } + /** + * Sends a request and waits for a response. + * + * Do not use this method to emit notifications! Use notification() instead. + */ + request(request, resultSchema, options) { + const { relatedRequestId, resumptionToken, onresumptiontoken, task, relatedTask } = options ?? {}; + return new Promise((resolve, reject) => { + const earlyReject = (error2) => { + reject(error2); + }; + if (!this._transport) { + earlyReject(new Error("Not connected")); + return; + } + if (this._options?.enforceStrictCapabilities === true) { + try { + this.assertCapabilityForMethod(request.method); + if (task) { + this.assertTaskCapability(request.method); + } + } catch (e) { + earlyReject(e); + return; + } + } + options?.signal?.throwIfAborted(); + const messageId = this._requestMessageId++; + const jsonrpcRequest = { + ...request, + jsonrpc: "2.0", + id: messageId + }; + if (options?.onprogress) { + this._progressHandlers.set(messageId, options.onprogress); + jsonrpcRequest.params = { + ...request.params, + _meta: { + ...request.params?._meta || {}, + progressToken: messageId + } + }; + } + if (task) { + jsonrpcRequest.params = { + ...jsonrpcRequest.params, + task + }; + } + if (relatedTask) { + jsonrpcRequest.params = { + ...jsonrpcRequest.params, + _meta: { + ...jsonrpcRequest.params?._meta || {}, + [RELATED_TASK_META_KEY]: relatedTask + } + }; + } + const cancel = (reason) => { + this._responseHandlers.delete(messageId); + this._progressHandlers.delete(messageId); + this._cleanupTimeout(messageId); + this._transport?.send({ + jsonrpc: "2.0", + method: "notifications/cancelled", + params: { + requestId: messageId, + reason: String(reason) + } + }, { relatedRequestId, resumptionToken, onresumptiontoken }).catch((error3) => this._onerror(new Error(`Failed to send cancellation: ${error3}`))); + const error2 = reason instanceof McpError ? reason : new McpError(ErrorCode.RequestTimeout, String(reason)); + reject(error2); + }; + this._responseHandlers.set(messageId, (response) => { + if (options?.signal?.aborted) { + return; + } + if (response instanceof Error) { + return reject(response); + } + try { + const parseResult = safeParse2(resultSchema, response.result); + if (!parseResult.success) { + reject(parseResult.error); + } else { + resolve(parseResult.data); + } + } catch (error2) { + reject(error2); + } + }); + options?.signal?.addEventListener("abort", () => { + cancel(options?.signal?.reason); + }); + const timeout = options?.timeout ?? DEFAULT_REQUEST_TIMEOUT_MSEC; + const timeoutHandler = () => cancel(McpError.fromError(ErrorCode.RequestTimeout, "Request timed out", { timeout })); + this._setupTimeout(messageId, timeout, options?.maxTotalTimeout, timeoutHandler, options?.resetTimeoutOnProgress ?? false); + const relatedTaskId = relatedTask?.taskId; + if (relatedTaskId) { + const responseResolver = (response) => { + const handler = this._responseHandlers.get(messageId); + if (handler) { + handler(response); + } else { + this._onerror(new Error(`Response handler missing for side-channeled request ${messageId}`)); + } + }; + this._requestResolvers.set(messageId, responseResolver); + this._enqueueTaskMessage(relatedTaskId, { + type: "request", + message: jsonrpcRequest, + timestamp: Date.now() + }).catch((error2) => { + this._cleanupTimeout(messageId); + reject(error2); + }); + } else { + this._transport.send(jsonrpcRequest, { relatedRequestId, resumptionToken, onresumptiontoken }).catch((error2) => { + this._cleanupTimeout(messageId); + reject(error2); + }); + } + }); + } + /** + * Gets the current status of a task. + * + * @experimental Use `client.experimental.tasks.getTask()` to access this method. + */ + async getTask(params, options) { + return this.request({ method: "tasks/get", params }, GetTaskResultSchema, options); + } + /** + * Retrieves the result of a completed task. + * + * @experimental Use `client.experimental.tasks.getTaskResult()` to access this method. + */ + async getTaskResult(params, resultSchema, options) { + return this.request({ method: "tasks/result", params }, resultSchema, options); + } + /** + * Lists tasks, optionally starting from a pagination cursor. + * + * @experimental Use `client.experimental.tasks.listTasks()` to access this method. + */ + async listTasks(params, options) { + return this.request({ method: "tasks/list", params }, ListTasksResultSchema, options); + } + /** + * Cancels a specific task. + * + * @experimental Use `client.experimental.tasks.cancelTask()` to access this method. + */ + async cancelTask(params, options) { + return this.request({ method: "tasks/cancel", params }, CancelTaskResultSchema, options); + } + /** + * Emits a notification, which is a one-way message that does not expect a response. + */ + async notification(notification, options) { + if (!this._transport) { + throw new Error("Not connected"); + } + this.assertNotificationCapability(notification.method); + const relatedTaskId = options?.relatedTask?.taskId; + if (relatedTaskId) { + const jsonrpcNotification2 = { + ...notification, + jsonrpc: "2.0", + params: { + ...notification.params, + _meta: { + ...notification.params?._meta || {}, + [RELATED_TASK_META_KEY]: options.relatedTask + } + } + }; + await this._enqueueTaskMessage(relatedTaskId, { + type: "notification", + message: jsonrpcNotification2, + timestamp: Date.now() + }); + return; + } + const debouncedMethods = this._options?.debouncedNotificationMethods ?? []; + const canDebounce = debouncedMethods.includes(notification.method) && !notification.params && !options?.relatedRequestId && !options?.relatedTask; + if (canDebounce) { + if (this._pendingDebouncedNotifications.has(notification.method)) { + return; + } + this._pendingDebouncedNotifications.add(notification.method); + Promise.resolve().then(() => { + this._pendingDebouncedNotifications.delete(notification.method); + if (!this._transport) { + return; + } + let jsonrpcNotification2 = { + ...notification, + jsonrpc: "2.0" + }; + if (options?.relatedTask) { + jsonrpcNotification2 = { + ...jsonrpcNotification2, + params: { + ...jsonrpcNotification2.params, + _meta: { + ...jsonrpcNotification2.params?._meta || {}, + [RELATED_TASK_META_KEY]: options.relatedTask + } + } + }; + } + this._transport?.send(jsonrpcNotification2, options).catch((error2) => this._onerror(error2)); + }); + return; + } + let jsonrpcNotification = { + ...notification, + jsonrpc: "2.0" + }; + if (options?.relatedTask) { + jsonrpcNotification = { + ...jsonrpcNotification, + params: { + ...jsonrpcNotification.params, + _meta: { + ...jsonrpcNotification.params?._meta || {}, + [RELATED_TASK_META_KEY]: options.relatedTask + } + } + }; + } + await this._transport.send(jsonrpcNotification, options); + } + /** + * Registers a handler to invoke when this protocol object receives a request with the given method. + * + * Note that this will replace any previous request handler for the same method. + */ + setRequestHandler(requestSchema, handler) { + const method = getMethodLiteral(requestSchema); + this.assertRequestHandlerCapability(method); + this._requestHandlers.set(method, (request, extra) => { + const parsed = parseWithCompat(requestSchema, request); + return Promise.resolve(handler(parsed, extra)); + }); + } + /** + * Removes the request handler for the given method. + */ + removeRequestHandler(method) { + this._requestHandlers.delete(method); + } + /** + * Asserts that a request handler has not already been set for the given method, in preparation for a new one being automatically installed. + */ + assertCanSetRequestHandler(method) { + if (this._requestHandlers.has(method)) { + throw new Error(`A request handler for ${method} already exists, which would be overridden`); + } + } + /** + * Registers a handler to invoke when this protocol object receives a notification with the given method. + * + * Note that this will replace any previous notification handler for the same method. + */ + setNotificationHandler(notificationSchema, handler) { + const method = getMethodLiteral(notificationSchema); + this._notificationHandlers.set(method, (notification) => { + const parsed = parseWithCompat(notificationSchema, notification); + return Promise.resolve(handler(parsed)); + }); + } + /** + * Removes the notification handler for the given method. + */ + removeNotificationHandler(method) { + this._notificationHandlers.delete(method); + } + /** + * Cleans up the progress handler associated with a task. + * This should be called when a task reaches a terminal status. + */ + _cleanupTaskProgressHandler(taskId) { + const progressToken = this._taskProgressTokens.get(taskId); + if (progressToken !== void 0) { + this._progressHandlers.delete(progressToken); + this._taskProgressTokens.delete(taskId); + } + } + /** + * Enqueues a task-related message for side-channel delivery via tasks/result. + * @param taskId The task ID to associate the message with + * @param message The message to enqueue + * @param sessionId Optional session ID for binding the operation to a specific session + * @throws Error if taskStore is not configured or if enqueue fails (e.g., queue overflow) + * + * Note: If enqueue fails, it's the TaskMessageQueue implementation's responsibility to handle + * the error appropriately (e.g., by failing the task, logging, etc.). The Protocol layer + * simply propagates the error. + */ + async _enqueueTaskMessage(taskId, message, sessionId) { + if (!this._taskStore || !this._taskMessageQueue) { + throw new Error("Cannot enqueue task message: taskStore and taskMessageQueue are not configured"); + } + const maxQueueSize = this._options?.maxTaskQueueSize; + await this._taskMessageQueue.enqueue(taskId, message, sessionId, maxQueueSize); + } + /** + * Clears the message queue for a task and rejects any pending request resolvers. + * @param taskId The task ID whose queue should be cleared + * @param sessionId Optional session ID for binding the operation to a specific session + */ + async _clearTaskQueue(taskId, sessionId) { + if (this._taskMessageQueue) { + const messages = await this._taskMessageQueue.dequeueAll(taskId, sessionId); + for (const message of messages) { + if (message.type === "request" && isJSONRPCRequest(message.message)) { + const requestId = message.message.id; + const resolver = this._requestResolvers.get(requestId); + if (resolver) { + resolver(new McpError(ErrorCode.InternalError, "Task cancelled or completed")); + this._requestResolvers.delete(requestId); + } else { + this._onerror(new Error(`Resolver missing for request ${requestId} during task ${taskId} cleanup`)); + } + } + } + } + } + /** + * Waits for a task update (new messages or status change) with abort signal support. + * Uses polling to check for updates at the task's configured poll interval. + * @param taskId The task ID to wait for + * @param signal Abort signal to cancel the wait + * @returns Promise that resolves when an update occurs or rejects if aborted + */ + async _waitForTaskUpdate(taskId, signal) { + let interval = this._options?.defaultTaskPollInterval ?? 1e3; + try { + const task = await this._taskStore?.getTask(taskId); + if (task?.pollInterval) { + interval = task.pollInterval; + } + } catch { + } + return new Promise((resolve, reject) => { + if (signal.aborted) { + reject(new McpError(ErrorCode.InvalidRequest, "Request cancelled")); + return; + } + const timeoutId = setTimeout(resolve, interval); + signal.addEventListener("abort", () => { + clearTimeout(timeoutId); + reject(new McpError(ErrorCode.InvalidRequest, "Request cancelled")); + }, { once: true }); + }); + } + requestTaskStore(request, sessionId) { + const taskStore = this._taskStore; + if (!taskStore) { + throw new Error("No task store configured"); + } + return { + createTask: async (taskParams) => { + if (!request) { + throw new Error("No request provided"); + } + return await taskStore.createTask(taskParams, request.id, { + method: request.method, + params: request.params + }, sessionId); + }, + getTask: async (taskId) => { + const task = await taskStore.getTask(taskId, sessionId); + if (!task) { + throw new McpError(ErrorCode.InvalidParams, "Failed to retrieve task: Task not found"); + } + return task; + }, + storeTaskResult: async (taskId, status, result) => { + await taskStore.storeTaskResult(taskId, status, result, sessionId); + const task = await taskStore.getTask(taskId, sessionId); + if (task) { + const notification = TaskStatusNotificationSchema.parse({ + method: "notifications/tasks/status", + params: task + }); + await this.notification(notification); + if (isTerminal(task.status)) { + this._cleanupTaskProgressHandler(taskId); + } + } + }, + getTaskResult: (taskId) => { + return taskStore.getTaskResult(taskId, sessionId); + }, + updateTaskStatus: async (taskId, status, statusMessage) => { + const task = await taskStore.getTask(taskId, sessionId); + if (!task) { + throw new McpError(ErrorCode.InvalidParams, `Task "${taskId}" not found - it may have been cleaned up`); + } + if (isTerminal(task.status)) { + throw new McpError(ErrorCode.InvalidParams, `Cannot update task "${taskId}" from terminal status "${task.status}" to "${status}". Terminal states (completed, failed, cancelled) cannot transition to other states.`); + } + await taskStore.updateTaskStatus(taskId, status, statusMessage, sessionId); + const updatedTask = await taskStore.getTask(taskId, sessionId); + if (updatedTask) { + const notification = TaskStatusNotificationSchema.parse({ + method: "notifications/tasks/status", + params: updatedTask + }); + await this.notification(notification); + if (isTerminal(updatedTask.status)) { + this._cleanupTaskProgressHandler(taskId); + } + } + }, + listTasks: (cursor) => { + return taskStore.listTasks(cursor, sessionId); + } + }; + } +}; +function isPlainObject2(value) { + return value !== null && typeof value === "object" && !Array.isArray(value); +} +function mergeCapabilities(base, additional) { + const result = { ...base }; + for (const key in additional) { + const k = key; + const addValue = additional[k]; + if (addValue === void 0) + continue; + const baseValue = result[k]; + if (isPlainObject2(baseValue) && isPlainObject2(addValue)) { + result[k] = { ...baseValue, ...addValue }; + } else { + result[k] = addValue; + } + } + return result; +} + +// node_modules/@modelcontextprotocol/sdk/dist/esm/validation/ajv-provider.js +var import_ajv = __toESM(require_ajv(), 1); +var import_ajv_formats = __toESM(require_dist4(), 1); +function createDefaultAjvInstance() { + const ajv = new import_ajv.default({ + strict: false, + validateFormats: true, + validateSchema: false, + allErrors: true + }); + const addFormats = import_ajv_formats.default; + addFormats(ajv); + return ajv; +} +var AjvJsonSchemaValidator = class { + /** + * Create an AJV validator + * + * @param ajv - Optional pre-configured AJV instance. If not provided, a default instance will be created. + * + * @example + * ```typescript + * // Use default configuration (recommended for most cases) + * import { AjvJsonSchemaValidator } from '@modelcontextprotocol/sdk/validation/ajv'; + * const validator = new AjvJsonSchemaValidator(); + * + * // Or provide custom AJV instance for advanced configuration + * import { Ajv } from 'ajv'; + * import addFormats from 'ajv-formats'; + * + * const ajv = new Ajv({ validateFormats: true }); + * addFormats(ajv); + * const validator = new AjvJsonSchemaValidator(ajv); + * ``` + */ + constructor(ajv) { + this._ajv = ajv ?? createDefaultAjvInstance(); + } + /** + * Create a validator for the given JSON Schema + * + * The validator is compiled once and can be reused multiple times. + * If the schema has an $id, it will be cached by AJV automatically. + * + * @param schema - Standard JSON Schema object + * @returns A validator function that validates input data + */ + getValidator(schema) { + const ajvValidator = "$id" in schema && typeof schema.$id === "string" ? this._ajv.getSchema(schema.$id) ?? this._ajv.compile(schema) : this._ajv.compile(schema); + return (input) => { + const valid = ajvValidator(input); + if (valid) { + return { + valid: true, + data: input, + errorMessage: void 0 + }; + } else { + return { + valid: false, + data: void 0, + errorMessage: this._ajv.errorsText(ajvValidator.errors) + }; + } + }; + } +}; + +// node_modules/@modelcontextprotocol/sdk/dist/esm/experimental/tasks/server.js +var ExperimentalServerTasks = class { + constructor(_server) { + this._server = _server; + } + /** + * Sends a request and returns an AsyncGenerator that yields response messages. + * The generator is guaranteed to end with either a 'result' or 'error' message. + * + * This method provides streaming access to request processing, allowing you to + * observe intermediate task status updates for task-augmented requests. + * + * @param request - The request to send + * @param resultSchema - Zod schema for validating the result + * @param options - Optional request options (timeout, signal, task creation params, etc.) + * @returns AsyncGenerator that yields ResponseMessage objects + * + * @experimental + */ + requestStream(request, resultSchema, options) { + return this._server.requestStream(request, resultSchema, options); + } + /** + * Sends a sampling request and returns an AsyncGenerator that yields response messages. + * The generator is guaranteed to end with either a 'result' or 'error' message. + * + * For task-augmented requests, yields 'taskCreated' and 'taskStatus' messages + * before the final result. + * + * @example + * ```typescript + * const stream = server.experimental.tasks.createMessageStream({ + * messages: [{ role: 'user', content: { type: 'text', text: 'Hello' } }], + * maxTokens: 100 + * }, { + * onprogress: (progress) => { + * // Handle streaming tokens via progress notifications + * console.log('Progress:', progress.message); + * } + * }); + * + * for await (const message of stream) { + * switch (message.type) { + * case 'taskCreated': + * console.log('Task created:', message.task.taskId); + * break; + * case 'taskStatus': + * console.log('Task status:', message.task.status); + * break; + * case 'result': + * console.log('Final result:', message.result); + * break; + * case 'error': + * console.error('Error:', message.error); + * break; + * } + * } + * ``` + * + * @param params - The sampling request parameters + * @param options - Optional request options (timeout, signal, task creation params, onprogress, etc.) + * @returns AsyncGenerator that yields ResponseMessage objects + * + * @experimental + */ + createMessageStream(params, options) { + const clientCapabilities = this._server.getClientCapabilities(); + if ((params.tools || params.toolChoice) && !clientCapabilities?.sampling?.tools) { + throw new Error("Client does not support sampling tools capability."); + } + if (params.messages.length > 0) { + const lastMessage = params.messages[params.messages.length - 1]; + const lastContent = Array.isArray(lastMessage.content) ? lastMessage.content : [lastMessage.content]; + const hasToolResults = lastContent.some((c) => c.type === "tool_result"); + const previousMessage = params.messages.length > 1 ? params.messages[params.messages.length - 2] : void 0; + const previousContent = previousMessage ? Array.isArray(previousMessage.content) ? previousMessage.content : [previousMessage.content] : []; + const hasPreviousToolUse = previousContent.some((c) => c.type === "tool_use"); + if (hasToolResults) { + if (lastContent.some((c) => c.type !== "tool_result")) { + throw new Error("The last message must contain only tool_result content if any is present"); + } + if (!hasPreviousToolUse) { + throw new Error("tool_result blocks are not matching any tool_use from the previous message"); + } + } + if (hasPreviousToolUse) { + const toolUseIds = new Set(previousContent.filter((c) => c.type === "tool_use").map((c) => c.id)); + const toolResultIds = new Set(lastContent.filter((c) => c.type === "tool_result").map((c) => c.toolUseId)); + if (toolUseIds.size !== toolResultIds.size || ![...toolUseIds].every((id) => toolResultIds.has(id))) { + throw new Error("ids of tool_result blocks and tool_use blocks from previous message do not match"); + } + } + } + return this.requestStream({ + method: "sampling/createMessage", + params + }, CreateMessageResultSchema, options); + } + /** + * Sends an elicitation request and returns an AsyncGenerator that yields response messages. + * The generator is guaranteed to end with either a 'result' or 'error' message. + * + * For task-augmented requests (especially URL-based elicitation), yields 'taskCreated' + * and 'taskStatus' messages before the final result. + * + * @example + * ```typescript + * const stream = server.experimental.tasks.elicitInputStream({ + * mode: 'url', + * message: 'Please authenticate', + * elicitationId: 'auth-123', + * url: 'https://example.com/auth' + * }, { + * task: { ttl: 300000 } // Task-augmented for long-running auth flow + * }); + * + * for await (const message of stream) { + * switch (message.type) { + * case 'taskCreated': + * console.log('Task created:', message.task.taskId); + * break; + * case 'taskStatus': + * console.log('Task status:', message.task.status); + * break; + * case 'result': + * console.log('User action:', message.result.action); + * break; + * case 'error': + * console.error('Error:', message.error); + * break; + * } + * } + * ``` + * + * @param params - The elicitation request parameters + * @param options - Optional request options (timeout, signal, task creation params, etc.) + * @returns AsyncGenerator that yields ResponseMessage objects + * + * @experimental + */ + elicitInputStream(params, options) { + const clientCapabilities = this._server.getClientCapabilities(); + const mode = params.mode ?? "form"; + switch (mode) { + case "url": { + if (!clientCapabilities?.elicitation?.url) { + throw new Error("Client does not support url elicitation."); + } + break; + } + case "form": { + if (!clientCapabilities?.elicitation?.form) { + throw new Error("Client does not support form elicitation."); + } + break; + } + } + const normalizedParams = mode === "form" && params.mode === void 0 ? { ...params, mode: "form" } : params; + return this.requestStream({ + method: "elicitation/create", + params: normalizedParams + }, ElicitResultSchema, options); + } + /** + * Gets the current status of a task. + * + * @param taskId - The task identifier + * @param options - Optional request options + * @returns The task status + * + * @experimental + */ + async getTask(taskId, options) { + return this._server.getTask({ taskId }, options); + } + /** + * Retrieves the result of a completed task. + * + * @param taskId - The task identifier + * @param resultSchema - Zod schema for validating the result + * @param options - Optional request options + * @returns The task result + * + * @experimental + */ + async getTaskResult(taskId, resultSchema, options) { + return this._server.getTaskResult({ taskId }, resultSchema, options); + } + /** + * Lists tasks with optional pagination. + * + * @param cursor - Optional pagination cursor + * @param options - Optional request options + * @returns List of tasks with optional next cursor + * + * @experimental + */ + async listTasks(cursor, options) { + return this._server.listTasks(cursor ? { cursor } : void 0, options); + } + /** + * Cancels a running task. + * + * @param taskId - The task identifier + * @param options - Optional request options + * + * @experimental + */ + async cancelTask(taskId, options) { + return this._server.cancelTask({ taskId }, options); + } +}; + +// node_modules/@modelcontextprotocol/sdk/dist/esm/experimental/tasks/helpers.js +function assertToolsCallTaskCapability(requests, method, entityName) { + if (!requests) { + throw new Error(`${entityName} does not support task creation (required for ${method})`); + } + switch (method) { + case "tools/call": + if (!requests.tools?.call) { + throw new Error(`${entityName} does not support task creation for tools/call (required for ${method})`); + } + break; + default: + break; + } +} +function assertClientRequestTaskCapability(requests, method, entityName) { + if (!requests) { + throw new Error(`${entityName} does not support task creation (required for ${method})`); + } + switch (method) { + case "sampling/createMessage": + if (!requests.sampling?.createMessage) { + throw new Error(`${entityName} does not support task creation for sampling/createMessage (required for ${method})`); + } + break; + case "elicitation/create": + if (!requests.elicitation?.create) { + throw new Error(`${entityName} does not support task creation for elicitation/create (required for ${method})`); + } + break; + default: + break; + } +} + +// node_modules/@modelcontextprotocol/sdk/dist/esm/server/index.js +var Server = class extends Protocol { + /** + * Initializes this server with the given name and version information. + */ + constructor(_serverInfo, options) { + super(options); + this._serverInfo = _serverInfo; + this._loggingLevels = /* @__PURE__ */ new Map(); + this.LOG_LEVEL_SEVERITY = new Map(LoggingLevelSchema.options.map((level, index) => [level, index])); + this.isMessageIgnored = (level, sessionId) => { + const currentLevel = this._loggingLevels.get(sessionId); + return currentLevel ? this.LOG_LEVEL_SEVERITY.get(level) < this.LOG_LEVEL_SEVERITY.get(currentLevel) : false; + }; + this._capabilities = options?.capabilities ?? {}; + this._instructions = options?.instructions; + this._jsonSchemaValidator = options?.jsonSchemaValidator ?? new AjvJsonSchemaValidator(); + this.setRequestHandler(InitializeRequestSchema, (request) => this._oninitialize(request)); + this.setNotificationHandler(InitializedNotificationSchema, () => this.oninitialized?.()); + if (this._capabilities.logging) { + this.setRequestHandler(SetLevelRequestSchema, async (request, extra) => { + const transportSessionId = extra.sessionId || extra.requestInfo?.headers["mcp-session-id"] || void 0; + const { level } = request.params; + const parseResult = LoggingLevelSchema.safeParse(level); + if (parseResult.success) { + this._loggingLevels.set(transportSessionId, parseResult.data); + } + return {}; + }); + } + } + /** + * Access experimental features. + * + * WARNING: These APIs are experimental and may change without notice. + * + * @experimental + */ + get experimental() { + if (!this._experimental) { + this._experimental = { + tasks: new ExperimentalServerTasks(this) + }; + } + return this._experimental; + } + /** + * Registers new capabilities. This can only be called before connecting to a transport. + * + * The new capabilities will be merged with any existing capabilities previously given (e.g., at initialization). + */ + registerCapabilities(capabilities) { + if (this.transport) { + throw new Error("Cannot register capabilities after connecting to transport"); + } + this._capabilities = mergeCapabilities(this._capabilities, capabilities); + } + /** + * Override request handler registration to enforce server-side validation for tools/call. + */ + setRequestHandler(requestSchema, handler) { + const shape = getObjectShape(requestSchema); + const methodSchema = shape?.method; + if (!methodSchema) { + throw new Error("Schema is missing a method literal"); + } + let methodValue; + if (isZ4Schema(methodSchema)) { + const v4Schema = methodSchema; + const v4Def = v4Schema._zod?.def; + methodValue = v4Def?.value ?? v4Schema.value; + } else { + const v3Schema = methodSchema; + const legacyDef = v3Schema._def; + methodValue = legacyDef?.value ?? v3Schema.value; + } + if (typeof methodValue !== "string") { + throw new Error("Schema method literal must be a string"); + } + const method = methodValue; + if (method === "tools/call") { + const wrappedHandler = async (request, extra) => { + const validatedRequest = safeParse2(CallToolRequestSchema, request); + if (!validatedRequest.success) { + const errorMessage = validatedRequest.error instanceof Error ? validatedRequest.error.message : String(validatedRequest.error); + throw new McpError(ErrorCode.InvalidParams, `Invalid tools/call request: ${errorMessage}`); + } + const { params } = validatedRequest.data; + const result = await Promise.resolve(handler(request, extra)); + if (params.task) { + const taskValidationResult = safeParse2(CreateTaskResultSchema, result); + if (!taskValidationResult.success) { + const errorMessage = taskValidationResult.error instanceof Error ? taskValidationResult.error.message : String(taskValidationResult.error); + throw new McpError(ErrorCode.InvalidParams, `Invalid task creation result: ${errorMessage}`); + } + return taskValidationResult.data; + } + const validationResult = safeParse2(CallToolResultSchema, result); + if (!validationResult.success) { + const errorMessage = validationResult.error instanceof Error ? validationResult.error.message : String(validationResult.error); + throw new McpError(ErrorCode.InvalidParams, `Invalid tools/call result: ${errorMessage}`); + } + return validationResult.data; + }; + return super.setRequestHandler(requestSchema, wrappedHandler); + } + return super.setRequestHandler(requestSchema, handler); + } + assertCapabilityForMethod(method) { + switch (method) { + case "sampling/createMessage": + if (!this._clientCapabilities?.sampling) { + throw new Error(`Client does not support sampling (required for ${method})`); + } + break; + case "elicitation/create": + if (!this._clientCapabilities?.elicitation) { + throw new Error(`Client does not support elicitation (required for ${method})`); + } + break; + case "roots/list": + if (!this._clientCapabilities?.roots) { + throw new Error(`Client does not support listing roots (required for ${method})`); + } + break; + case "ping": + break; + } + } + assertNotificationCapability(method) { + switch (method) { + case "notifications/message": + if (!this._capabilities.logging) { + throw new Error(`Server does not support logging (required for ${method})`); + } + break; + case "notifications/resources/updated": + case "notifications/resources/list_changed": + if (!this._capabilities.resources) { + throw new Error(`Server does not support notifying about resources (required for ${method})`); + } + break; + case "notifications/tools/list_changed": + if (!this._capabilities.tools) { + throw new Error(`Server does not support notifying of tool list changes (required for ${method})`); + } + break; + case "notifications/prompts/list_changed": + if (!this._capabilities.prompts) { + throw new Error(`Server does not support notifying of prompt list changes (required for ${method})`); + } + break; + case "notifications/elicitation/complete": + if (!this._clientCapabilities?.elicitation?.url) { + throw new Error(`Client does not support URL elicitation (required for ${method})`); + } + break; + case "notifications/cancelled": + break; + case "notifications/progress": + break; + } + } + assertRequestHandlerCapability(method) { + if (!this._capabilities) { + return; + } + switch (method) { + case "completion/complete": + if (!this._capabilities.completions) { + throw new Error(`Server does not support completions (required for ${method})`); + } + break; + case "logging/setLevel": + if (!this._capabilities.logging) { + throw new Error(`Server does not support logging (required for ${method})`); + } + break; + case "prompts/get": + case "prompts/list": + if (!this._capabilities.prompts) { + throw new Error(`Server does not support prompts (required for ${method})`); + } + break; + case "resources/list": + case "resources/templates/list": + case "resources/read": + if (!this._capabilities.resources) { + throw new Error(`Server does not support resources (required for ${method})`); + } + break; + case "tools/call": + case "tools/list": + if (!this._capabilities.tools) { + throw new Error(`Server does not support tools (required for ${method})`); + } + break; + case "tasks/get": + case "tasks/list": + case "tasks/result": + case "tasks/cancel": + if (!this._capabilities.tasks) { + throw new Error(`Server does not support tasks capability (required for ${method})`); + } + break; + case "ping": + case "initialize": + break; + } + } + assertTaskCapability(method) { + assertClientRequestTaskCapability(this._clientCapabilities?.tasks?.requests, method, "Client"); + } + assertTaskHandlerCapability(method) { + if (!this._capabilities) { + return; + } + assertToolsCallTaskCapability(this._capabilities.tasks?.requests, method, "Server"); + } + async _oninitialize(request) { + const requestedVersion = request.params.protocolVersion; + this._clientCapabilities = request.params.capabilities; + this._clientVersion = request.params.clientInfo; + const protocolVersion = SUPPORTED_PROTOCOL_VERSIONS.includes(requestedVersion) ? requestedVersion : LATEST_PROTOCOL_VERSION; + return { + protocolVersion, + capabilities: this.getCapabilities(), + serverInfo: this._serverInfo, + ...this._instructions && { instructions: this._instructions } + }; + } + /** + * After initialization has completed, this will be populated with the client's reported capabilities. + */ + getClientCapabilities() { + return this._clientCapabilities; + } + /** + * After initialization has completed, this will be populated with information about the client's name and version. + */ + getClientVersion() { + return this._clientVersion; + } + getCapabilities() { + return this._capabilities; + } + async ping() { + return this.request({ method: "ping" }, EmptyResultSchema); + } + // Implementation + async createMessage(params, options) { + if (params.tools || params.toolChoice) { + if (!this._clientCapabilities?.sampling?.tools) { + throw new Error("Client does not support sampling tools capability."); + } + } + if (params.messages.length > 0) { + const lastMessage = params.messages[params.messages.length - 1]; + const lastContent = Array.isArray(lastMessage.content) ? lastMessage.content : [lastMessage.content]; + const hasToolResults = lastContent.some((c) => c.type === "tool_result"); + const previousMessage = params.messages.length > 1 ? params.messages[params.messages.length - 2] : void 0; + const previousContent = previousMessage ? Array.isArray(previousMessage.content) ? previousMessage.content : [previousMessage.content] : []; + const hasPreviousToolUse = previousContent.some((c) => c.type === "tool_use"); + if (hasToolResults) { + if (lastContent.some((c) => c.type !== "tool_result")) { + throw new Error("The last message must contain only tool_result content if any is present"); + } + if (!hasPreviousToolUse) { + throw new Error("tool_result blocks are not matching any tool_use from the previous message"); + } + } + if (hasPreviousToolUse) { + const toolUseIds = new Set(previousContent.filter((c) => c.type === "tool_use").map((c) => c.id)); + const toolResultIds = new Set(lastContent.filter((c) => c.type === "tool_result").map((c) => c.toolUseId)); + if (toolUseIds.size !== toolResultIds.size || ![...toolUseIds].every((id) => toolResultIds.has(id))) { + throw new Error("ids of tool_result blocks and tool_use blocks from previous message do not match"); + } + } + } + if (params.tools) { + return this.request({ method: "sampling/createMessage", params }, CreateMessageResultWithToolsSchema, options); + } + return this.request({ method: "sampling/createMessage", params }, CreateMessageResultSchema, options); + } + /** + * Creates an elicitation request for the given parameters. + * For backwards compatibility, `mode` may be omitted for form requests and will default to `'form'`. + * @param params The parameters for the elicitation request. + * @param options Optional request options. + * @returns The result of the elicitation request. + */ + async elicitInput(params, options) { + const mode = params.mode ?? "form"; + switch (mode) { + case "url": { + if (!this._clientCapabilities?.elicitation?.url) { + throw new Error("Client does not support url elicitation."); + } + const urlParams = params; + return this.request({ method: "elicitation/create", params: urlParams }, ElicitResultSchema, options); + } + case "form": { + if (!this._clientCapabilities?.elicitation?.form) { + throw new Error("Client does not support form elicitation."); + } + const formParams = params.mode === "form" ? params : { ...params, mode: "form" }; + const result = await this.request({ method: "elicitation/create", params: formParams }, ElicitResultSchema, options); + if (result.action === "accept" && result.content && formParams.requestedSchema) { + try { + const validator = this._jsonSchemaValidator.getValidator(formParams.requestedSchema); + const validationResult = validator(result.content); + if (!validationResult.valid) { + throw new McpError(ErrorCode.InvalidParams, `Elicitation response content does not match requested schema: ${validationResult.errorMessage}`); + } + } catch (error2) { + if (error2 instanceof McpError) { + throw error2; + } + throw new McpError(ErrorCode.InternalError, `Error validating elicitation response: ${error2 instanceof Error ? error2.message : String(error2)}`); + } + } + return result; + } + } + } + /** + * Creates a reusable callback that, when invoked, will send a `notifications/elicitation/complete` + * notification for the specified elicitation ID. + * + * @param elicitationId The ID of the elicitation to mark as complete. + * @param options Optional notification options. Useful when the completion notification should be related to a prior request. + * @returns A function that emits the completion notification when awaited. + */ + createElicitationCompletionNotifier(elicitationId, options) { + if (!this._clientCapabilities?.elicitation?.url) { + throw new Error("Client does not support URL elicitation (required for notifications/elicitation/complete)"); + } + return () => this.notification({ + method: "notifications/elicitation/complete", + params: { + elicitationId + } + }, options); + } + async listRoots(params, options) { + return this.request({ method: "roots/list", params }, ListRootsResultSchema, options); + } + /** + * Sends a logging message to the client, if connected. + * Note: You only need to send the parameters object, not the entire JSON RPC message + * @see LoggingMessageNotification + * @param params + * @param sessionId optional for stateless and backward compatibility + */ + async sendLoggingMessage(params, sessionId) { + if (this._capabilities.logging) { + if (!this.isMessageIgnored(params.level, sessionId)) { + return this.notification({ method: "notifications/message", params }); + } + } + } + async sendResourceUpdated(params) { + return this.notification({ + method: "notifications/resources/updated", + params + }); + } + async sendResourceListChanged() { + return this.notification({ + method: "notifications/resources/list_changed" + }); + } + async sendToolListChanged() { + return this.notification({ method: "notifications/tools/list_changed" }); + } + async sendPromptListChanged() { + return this.notification({ method: "notifications/prompts/list_changed" }); + } +}; + +// node_modules/@modelcontextprotocol/sdk/dist/esm/server/completable.js +var COMPLETABLE_SYMBOL = /* @__PURE__ */ Symbol.for("mcp.completable"); +function isCompletable(schema) { + return !!schema && typeof schema === "object" && COMPLETABLE_SYMBOL in schema; +} +function getCompleter(schema) { + const meta = schema[COMPLETABLE_SYMBOL]; + return meta?.complete; +} +var McpZodTypeKind; +(function(McpZodTypeKind2) { + McpZodTypeKind2["Completable"] = "McpCompletable"; +})(McpZodTypeKind || (McpZodTypeKind = {})); + +// node_modules/@modelcontextprotocol/sdk/dist/esm/shared/toolNameValidation.js +var TOOL_NAME_REGEX = /^[A-Za-z0-9._-]{1,128}$/; +function validateToolName(name5) { + const warnings = []; + if (name5.length === 0) { + return { + isValid: false, + warnings: ["Tool name cannot be empty"] + }; + } + if (name5.length > 128) { + return { + isValid: false, + warnings: [`Tool name exceeds maximum length of 128 characters (current: ${name5.length})`] + }; + } + if (name5.includes(" ")) { + warnings.push("Tool name contains spaces, which may cause parsing issues"); + } + if (name5.includes(",")) { + warnings.push("Tool name contains commas, which may cause parsing issues"); + } + if (name5.startsWith("-") || name5.endsWith("-")) { + warnings.push("Tool name starts or ends with a dash, which may cause parsing issues in some contexts"); + } + if (name5.startsWith(".") || name5.endsWith(".")) { + warnings.push("Tool name starts or ends with a dot, which may cause parsing issues in some contexts"); + } + if (!TOOL_NAME_REGEX.test(name5)) { + const invalidChars = name5.split("").filter((char) => !/[A-Za-z0-9._-]/.test(char)).filter((char, index, arr) => arr.indexOf(char) === index); + warnings.push(`Tool name contains invalid characters: ${invalidChars.map((c) => `"${c}"`).join(", ")}`, "Allowed characters are: A-Z, a-z, 0-9, underscore (_), dash (-), and dot (.)"); + return { + isValid: false, + warnings + }; + } + return { + isValid: true, + warnings + }; +} +function issueToolNameWarning(name5, warnings) { + if (warnings.length > 0) { + console.warn(`Tool name validation warning for "${name5}":`); + for (const warning of warnings) { + console.warn(` - ${warning}`); + } + console.warn("Tool registration will proceed, but this may cause compatibility issues."); + console.warn("Consider updating the tool name to conform to the MCP tool naming standard."); + console.warn("See SEP: Specify Format for Tool Names (https://github.com/modelcontextprotocol/modelcontextprotocol/issues/986) for more details."); + } +} +function validateAndWarnToolName(name5) { + const result = validateToolName(name5); + issueToolNameWarning(name5, result.warnings); + return result.isValid; +} + +// node_modules/@modelcontextprotocol/sdk/dist/esm/experimental/tasks/mcp-server.js +var ExperimentalMcpServerTasks = class { + constructor(_mcpServer) { + this._mcpServer = _mcpServer; + } + registerToolTask(name5, config2, handler) { + const execution = { taskSupport: "required", ...config2.execution }; + if (execution.taskSupport === "forbidden") { + throw new Error(`Cannot register task-based tool '${name5}' with taskSupport 'forbidden'. Use registerTool() instead.`); + } + const mcpServerInternal = this._mcpServer; + return mcpServerInternal._createRegisteredTool(name5, config2.title, config2.description, config2.inputSchema, config2.outputSchema, config2.annotations, execution, config2._meta, handler); + } +}; + +// node_modules/@modelcontextprotocol/sdk/dist/esm/server/mcp.js +var McpServer = class { + constructor(serverInfo, options) { + this._registeredResources = {}; + this._registeredResourceTemplates = {}; + this._registeredTools = {}; + this._registeredPrompts = {}; + this._toolHandlersInitialized = false; + this._completionHandlerInitialized = false; + this._resourceHandlersInitialized = false; + this._promptHandlersInitialized = false; + this.server = new Server(serverInfo, options); + } + /** + * Access experimental features. + * + * WARNING: These APIs are experimental and may change without notice. + * + * @experimental + */ + get experimental() { + if (!this._experimental) { + this._experimental = { + tasks: new ExperimentalMcpServerTasks(this) + }; + } + return this._experimental; + } + /** + * Attaches to the given transport, starts it, and starts listening for messages. + * + * The `server` object assumes ownership of the Transport, replacing any callbacks that have already been set, and expects that it is the only user of the Transport instance going forward. + */ + async connect(transport) { + return await this.server.connect(transport); + } + /** + * Closes the connection. + */ + async close() { + await this.server.close(); + } + setToolRequestHandlers() { + if (this._toolHandlersInitialized) { + return; + } + this.server.assertCanSetRequestHandler(getMethodValue(ListToolsRequestSchema)); + this.server.assertCanSetRequestHandler(getMethodValue(CallToolRequestSchema)); + this.server.registerCapabilities({ + tools: { + listChanged: true + } + }); + this.server.setRequestHandler(ListToolsRequestSchema, () => ({ + tools: Object.entries(this._registeredTools).filter(([, tool]) => tool.enabled).map(([name5, tool]) => { + const toolDefinition = { + name: name5, + title: tool.title, + description: tool.description, + inputSchema: (() => { + const obj = normalizeObjectSchema(tool.inputSchema); + return obj ? toJsonSchemaCompat(obj, { + strictUnions: true, + pipeStrategy: "input" + }) : EMPTY_OBJECT_JSON_SCHEMA; + })(), + annotations: tool.annotations, + execution: tool.execution, + _meta: tool._meta + }; + if (tool.outputSchema) { + const obj = normalizeObjectSchema(tool.outputSchema); + if (obj) { + toolDefinition.outputSchema = toJsonSchemaCompat(obj, { + strictUnions: true, + pipeStrategy: "output" + }); + } + } + return toolDefinition; + }) + })); + this.server.setRequestHandler(CallToolRequestSchema, async (request, extra) => { + try { + const tool = this._registeredTools[request.params.name]; + if (!tool) { + throw new McpError(ErrorCode.InvalidParams, `Tool ${request.params.name} not found`); + } + if (!tool.enabled) { + throw new McpError(ErrorCode.InvalidParams, `Tool ${request.params.name} disabled`); + } + const isTaskRequest = !!request.params.task; + const taskSupport = tool.execution?.taskSupport; + const isTaskHandler = "createTask" in tool.handler; + if ((taskSupport === "required" || taskSupport === "optional") && !isTaskHandler) { + throw new McpError(ErrorCode.InternalError, `Tool ${request.params.name} has taskSupport '${taskSupport}' but was not registered with registerToolTask`); + } + if (taskSupport === "required" && !isTaskRequest) { + throw new McpError(ErrorCode.MethodNotFound, `Tool ${request.params.name} requires task augmentation (taskSupport: 'required')`); + } + if (taskSupport === "optional" && !isTaskRequest && isTaskHandler) { + return await this.handleAutomaticTaskPolling(tool, request, extra); + } + const args = await this.validateToolInput(tool, request.params.arguments, request.params.name); + const result = await this.executeToolHandler(tool, args, extra); + if (isTaskRequest) { + return result; + } + await this.validateToolOutput(tool, result, request.params.name); + return result; + } catch (error2) { + if (error2 instanceof McpError) { + if (error2.code === ErrorCode.UrlElicitationRequired) { + throw error2; + } + } + return this.createToolError(error2 instanceof Error ? error2.message : String(error2)); + } + }); + this._toolHandlersInitialized = true; + } + /** + * Creates a tool error result. + * + * @param errorMessage - The error message. + * @returns The tool error result. + */ + createToolError(errorMessage) { + return { + content: [ + { + type: "text", + text: errorMessage + } + ], + isError: true + }; + } + /** + * Validates tool input arguments against the tool's input schema. + */ + async validateToolInput(tool, args, toolName) { + if (!tool.inputSchema) { + return void 0; + } + const inputObj = normalizeObjectSchema(tool.inputSchema); + const schemaToParse = inputObj ?? tool.inputSchema; + const parseResult = await safeParseAsync2(schemaToParse, args); + if (!parseResult.success) { + const error2 = "error" in parseResult ? parseResult.error : "Unknown error"; + const errorMessage = getParseErrorMessage(error2); + throw new McpError(ErrorCode.InvalidParams, `Input validation error: Invalid arguments for tool ${toolName}: ${errorMessage}`); + } + return parseResult.data; + } + /** + * Validates tool output against the tool's output schema. + */ + async validateToolOutput(tool, result, toolName) { + if (!tool.outputSchema) { + return; + } + if (!("content" in result)) { + return; + } + if (result.isError) { + return; + } + if (!result.structuredContent) { + throw new McpError(ErrorCode.InvalidParams, `Output validation error: Tool ${toolName} has an output schema but no structured content was provided`); + } + const outputObj = normalizeObjectSchema(tool.outputSchema); + const parseResult = await safeParseAsync2(outputObj, result.structuredContent); + if (!parseResult.success) { + const error2 = "error" in parseResult ? parseResult.error : "Unknown error"; + const errorMessage = getParseErrorMessage(error2); + throw new McpError(ErrorCode.InvalidParams, `Output validation error: Invalid structured content for tool ${toolName}: ${errorMessage}`); + } + } + /** + * Executes a tool handler (either regular or task-based). + */ + async executeToolHandler(tool, args, extra) { + const handler = tool.handler; + const isTaskHandler = "createTask" in handler; + if (isTaskHandler) { + if (!extra.taskStore) { + throw new Error("No task store provided."); + } + const taskExtra = { ...extra, taskStore: extra.taskStore }; + if (tool.inputSchema) { + const typedHandler = handler; + return await Promise.resolve(typedHandler.createTask(args, taskExtra)); + } else { + const typedHandler = handler; + return await Promise.resolve(typedHandler.createTask(taskExtra)); + } + } + if (tool.inputSchema) { + const typedHandler = handler; + return await Promise.resolve(typedHandler(args, extra)); + } else { + const typedHandler = handler; + return await Promise.resolve(typedHandler(extra)); + } + } + /** + * Handles automatic task polling for tools with taskSupport 'optional'. + */ + async handleAutomaticTaskPolling(tool, request, extra) { + if (!extra.taskStore) { + throw new Error("No task store provided for task-capable tool."); + } + const args = await this.validateToolInput(tool, request.params.arguments, request.params.name); + const handler = tool.handler; + const taskExtra = { ...extra, taskStore: extra.taskStore }; + const createTaskResult = args ? await Promise.resolve(handler.createTask(args, taskExtra)) : ( + // eslint-disable-next-line @typescript-eslint/no-explicit-any + await Promise.resolve(handler.createTask(taskExtra)) + ); + const taskId = createTaskResult.task.taskId; + let task = createTaskResult.task; + const pollInterval = task.pollInterval ?? 5e3; + while (task.status !== "completed" && task.status !== "failed" && task.status !== "cancelled") { + await new Promise((resolve) => setTimeout(resolve, pollInterval)); + const updatedTask = await extra.taskStore.getTask(taskId); + if (!updatedTask) { + throw new McpError(ErrorCode.InternalError, `Task ${taskId} not found during polling`); + } + task = updatedTask; + } + return await extra.taskStore.getTaskResult(taskId); + } + setCompletionRequestHandler() { + if (this._completionHandlerInitialized) { + return; + } + this.server.assertCanSetRequestHandler(getMethodValue(CompleteRequestSchema)); + this.server.registerCapabilities({ + completions: {} + }); + this.server.setRequestHandler(CompleteRequestSchema, async (request) => { + switch (request.params.ref.type) { + case "ref/prompt": + assertCompleteRequestPrompt(request); + return this.handlePromptCompletion(request, request.params.ref); + case "ref/resource": + assertCompleteRequestResourceTemplate(request); + return this.handleResourceCompletion(request, request.params.ref); + default: + throw new McpError(ErrorCode.InvalidParams, `Invalid completion reference: ${request.params.ref}`); + } + }); + this._completionHandlerInitialized = true; + } + async handlePromptCompletion(request, ref) { + const prompt = this._registeredPrompts[ref.name]; + if (!prompt) { + throw new McpError(ErrorCode.InvalidParams, `Prompt ${ref.name} not found`); + } + if (!prompt.enabled) { + throw new McpError(ErrorCode.InvalidParams, `Prompt ${ref.name} disabled`); + } + if (!prompt.argsSchema) { + return EMPTY_COMPLETION_RESULT; + } + const promptShape = getObjectShape(prompt.argsSchema); + const field = promptShape?.[request.params.argument.name]; + if (!isCompletable(field)) { + return EMPTY_COMPLETION_RESULT; + } + const completer = getCompleter(field); + if (!completer) { + return EMPTY_COMPLETION_RESULT; + } + const suggestions = await completer(request.params.argument.value, request.params.context); + return createCompletionResult(suggestions); + } + async handleResourceCompletion(request, ref) { + const template = Object.values(this._registeredResourceTemplates).find((t) => t.resourceTemplate.uriTemplate.toString() === ref.uri); + if (!template) { + if (this._registeredResources[ref.uri]) { + return EMPTY_COMPLETION_RESULT; + } + throw new McpError(ErrorCode.InvalidParams, `Resource template ${request.params.ref.uri} not found`); + } + const completer = template.resourceTemplate.completeCallback(request.params.argument.name); + if (!completer) { + return EMPTY_COMPLETION_RESULT; + } + const suggestions = await completer(request.params.argument.value, request.params.context); + return createCompletionResult(suggestions); + } + setResourceRequestHandlers() { + if (this._resourceHandlersInitialized) { + return; + } + this.server.assertCanSetRequestHandler(getMethodValue(ListResourcesRequestSchema)); + this.server.assertCanSetRequestHandler(getMethodValue(ListResourceTemplatesRequestSchema)); + this.server.assertCanSetRequestHandler(getMethodValue(ReadResourceRequestSchema)); + this.server.registerCapabilities({ + resources: { + listChanged: true + } + }); + this.server.setRequestHandler(ListResourcesRequestSchema, async (request, extra) => { + const resources = Object.entries(this._registeredResources).filter(([_, resource]) => resource.enabled).map(([uri, resource]) => ({ + uri, + name: resource.name, + ...resource.metadata + })); + const templateResources = []; + for (const template of Object.values(this._registeredResourceTemplates)) { + if (!template.resourceTemplate.listCallback) { + continue; + } + const result = await template.resourceTemplate.listCallback(extra); + for (const resource of result.resources) { + templateResources.push({ + ...template.metadata, + // the defined resource metadata should override the template metadata if present + ...resource + }); + } + } + return { resources: [...resources, ...templateResources] }; + }); + this.server.setRequestHandler(ListResourceTemplatesRequestSchema, async () => { + const resourceTemplates = Object.entries(this._registeredResourceTemplates).map(([name5, template]) => ({ + name: name5, + uriTemplate: template.resourceTemplate.uriTemplate.toString(), + ...template.metadata + })); + return { resourceTemplates }; + }); + this.server.setRequestHandler(ReadResourceRequestSchema, async (request, extra) => { + const uri = new URL(request.params.uri); + const resource = this._registeredResources[uri.toString()]; + if (resource) { + if (!resource.enabled) { + throw new McpError(ErrorCode.InvalidParams, `Resource ${uri} disabled`); + } + return resource.readCallback(uri, extra); + } + for (const template of Object.values(this._registeredResourceTemplates)) { + const variables = template.resourceTemplate.uriTemplate.match(uri.toString()); + if (variables) { + return template.readCallback(uri, variables, extra); + } + } + throw new McpError(ErrorCode.InvalidParams, `Resource ${uri} not found`); + }); + this._resourceHandlersInitialized = true; + } + setPromptRequestHandlers() { + if (this._promptHandlersInitialized) { + return; + } + this.server.assertCanSetRequestHandler(getMethodValue(ListPromptsRequestSchema)); + this.server.assertCanSetRequestHandler(getMethodValue(GetPromptRequestSchema)); + this.server.registerCapabilities({ + prompts: { + listChanged: true + } + }); + this.server.setRequestHandler(ListPromptsRequestSchema, () => ({ + prompts: Object.entries(this._registeredPrompts).filter(([, prompt]) => prompt.enabled).map(([name5, prompt]) => { + return { + name: name5, + title: prompt.title, + description: prompt.description, + arguments: prompt.argsSchema ? promptArgumentsFromSchema(prompt.argsSchema) : void 0 + }; + }) + })); + this.server.setRequestHandler(GetPromptRequestSchema, async (request, extra) => { + const prompt = this._registeredPrompts[request.params.name]; + if (!prompt) { + throw new McpError(ErrorCode.InvalidParams, `Prompt ${request.params.name} not found`); + } + if (!prompt.enabled) { + throw new McpError(ErrorCode.InvalidParams, `Prompt ${request.params.name} disabled`); + } + if (prompt.argsSchema) { + const argsObj = normalizeObjectSchema(prompt.argsSchema); + const parseResult = await safeParseAsync2(argsObj, request.params.arguments); + if (!parseResult.success) { + const error2 = "error" in parseResult ? parseResult.error : "Unknown error"; + const errorMessage = getParseErrorMessage(error2); + throw new McpError(ErrorCode.InvalidParams, `Invalid arguments for prompt ${request.params.name}: ${errorMessage}`); + } + const args = parseResult.data; + const cb = prompt.callback; + return await Promise.resolve(cb(args, extra)); + } else { + const cb = prompt.callback; + return await Promise.resolve(cb(extra)); + } + }); + this._promptHandlersInitialized = true; + } + resource(name5, uriOrTemplate, ...rest) { + let metadata; + if (typeof rest[0] === "object") { + metadata = rest.shift(); + } + const readCallback = rest[0]; + if (typeof uriOrTemplate === "string") { + if (this._registeredResources[uriOrTemplate]) { + throw new Error(`Resource ${uriOrTemplate} is already registered`); + } + const registeredResource = this._createRegisteredResource(name5, void 0, uriOrTemplate, metadata, readCallback); + this.setResourceRequestHandlers(); + this.sendResourceListChanged(); + return registeredResource; + } else { + if (this._registeredResourceTemplates[name5]) { + throw new Error(`Resource template ${name5} is already registered`); + } + const registeredResourceTemplate = this._createRegisteredResourceTemplate(name5, void 0, uriOrTemplate, metadata, readCallback); + this.setResourceRequestHandlers(); + this.sendResourceListChanged(); + return registeredResourceTemplate; + } + } + registerResource(name5, uriOrTemplate, config2, readCallback) { + if (typeof uriOrTemplate === "string") { + if (this._registeredResources[uriOrTemplate]) { + throw new Error(`Resource ${uriOrTemplate} is already registered`); + } + const registeredResource = this._createRegisteredResource(name5, config2.title, uriOrTemplate, config2, readCallback); + this.setResourceRequestHandlers(); + this.sendResourceListChanged(); + return registeredResource; + } else { + if (this._registeredResourceTemplates[name5]) { + throw new Error(`Resource template ${name5} is already registered`); + } + const registeredResourceTemplate = this._createRegisteredResourceTemplate(name5, config2.title, uriOrTemplate, config2, readCallback); + this.setResourceRequestHandlers(); + this.sendResourceListChanged(); + return registeredResourceTemplate; + } + } + _createRegisteredResource(name5, title, uri, metadata, readCallback) { + const registeredResource = { + name: name5, + title, + metadata, + readCallback, + enabled: true, + disable: () => registeredResource.update({ enabled: false }), + enable: () => registeredResource.update({ enabled: true }), + remove: () => registeredResource.update({ uri: null }), + update: (updates) => { + if (typeof updates.uri !== "undefined" && updates.uri !== uri) { + delete this._registeredResources[uri]; + if (updates.uri) + this._registeredResources[updates.uri] = registeredResource; + } + if (typeof updates.name !== "undefined") + registeredResource.name = updates.name; + if (typeof updates.title !== "undefined") + registeredResource.title = updates.title; + if (typeof updates.metadata !== "undefined") + registeredResource.metadata = updates.metadata; + if (typeof updates.callback !== "undefined") + registeredResource.readCallback = updates.callback; + if (typeof updates.enabled !== "undefined") + registeredResource.enabled = updates.enabled; + this.sendResourceListChanged(); + } + }; + this._registeredResources[uri] = registeredResource; + return registeredResource; + } + _createRegisteredResourceTemplate(name5, title, template, metadata, readCallback) { + const registeredResourceTemplate = { + resourceTemplate: template, + title, + metadata, + readCallback, + enabled: true, + disable: () => registeredResourceTemplate.update({ enabled: false }), + enable: () => registeredResourceTemplate.update({ enabled: true }), + remove: () => registeredResourceTemplate.update({ name: null }), + update: (updates) => { + if (typeof updates.name !== "undefined" && updates.name !== name5) { + delete this._registeredResourceTemplates[name5]; + if (updates.name) + this._registeredResourceTemplates[updates.name] = registeredResourceTemplate; + } + if (typeof updates.title !== "undefined") + registeredResourceTemplate.title = updates.title; + if (typeof updates.template !== "undefined") + registeredResourceTemplate.resourceTemplate = updates.template; + if (typeof updates.metadata !== "undefined") + registeredResourceTemplate.metadata = updates.metadata; + if (typeof updates.callback !== "undefined") + registeredResourceTemplate.readCallback = updates.callback; + if (typeof updates.enabled !== "undefined") + registeredResourceTemplate.enabled = updates.enabled; + this.sendResourceListChanged(); + } + }; + this._registeredResourceTemplates[name5] = registeredResourceTemplate; + const variableNames = template.uriTemplate.variableNames; + const hasCompleter = Array.isArray(variableNames) && variableNames.some((v) => !!template.completeCallback(v)); + if (hasCompleter) { + this.setCompletionRequestHandler(); + } + return registeredResourceTemplate; + } + _createRegisteredPrompt(name5, title, description, argsSchema, callback) { + const registeredPrompt = { + title, + description, + argsSchema: argsSchema === void 0 ? void 0 : objectFromShape(argsSchema), + callback, + enabled: true, + disable: () => registeredPrompt.update({ enabled: false }), + enable: () => registeredPrompt.update({ enabled: true }), + remove: () => registeredPrompt.update({ name: null }), + update: (updates) => { + if (typeof updates.name !== "undefined" && updates.name !== name5) { + delete this._registeredPrompts[name5]; + if (updates.name) + this._registeredPrompts[updates.name] = registeredPrompt; + } + if (typeof updates.title !== "undefined") + registeredPrompt.title = updates.title; + if (typeof updates.description !== "undefined") + registeredPrompt.description = updates.description; + if (typeof updates.argsSchema !== "undefined") + registeredPrompt.argsSchema = objectFromShape(updates.argsSchema); + if (typeof updates.callback !== "undefined") + registeredPrompt.callback = updates.callback; + if (typeof updates.enabled !== "undefined") + registeredPrompt.enabled = updates.enabled; + this.sendPromptListChanged(); + } + }; + this._registeredPrompts[name5] = registeredPrompt; + if (argsSchema) { + const hasCompletable = Object.values(argsSchema).some((field) => { + const inner = field instanceof ZodOptional ? field._def?.innerType : field; + return isCompletable(inner); + }); + if (hasCompletable) { + this.setCompletionRequestHandler(); + } + } + return registeredPrompt; + } + _createRegisteredTool(name5, title, description, inputSchema, outputSchema, annotations, execution, _meta, handler) { + validateAndWarnToolName(name5); + const registeredTool = { + title, + description, + inputSchema: getZodSchemaObject(inputSchema), + outputSchema: getZodSchemaObject(outputSchema), + annotations, + execution, + _meta, + handler, + enabled: true, + disable: () => registeredTool.update({ enabled: false }), + enable: () => registeredTool.update({ enabled: true }), + remove: () => registeredTool.update({ name: null }), + update: (updates) => { + if (typeof updates.name !== "undefined" && updates.name !== name5) { + if (typeof updates.name === "string") { + validateAndWarnToolName(updates.name); + } + delete this._registeredTools[name5]; + if (updates.name) + this._registeredTools[updates.name] = registeredTool; + } + if (typeof updates.title !== "undefined") + registeredTool.title = updates.title; + if (typeof updates.description !== "undefined") + registeredTool.description = updates.description; + if (typeof updates.paramsSchema !== "undefined") + registeredTool.inputSchema = objectFromShape(updates.paramsSchema); + if (typeof updates.outputSchema !== "undefined") + registeredTool.outputSchema = objectFromShape(updates.outputSchema); + if (typeof updates.callback !== "undefined") + registeredTool.handler = updates.callback; + if (typeof updates.annotations !== "undefined") + registeredTool.annotations = updates.annotations; + if (typeof updates._meta !== "undefined") + registeredTool._meta = updates._meta; + if (typeof updates.enabled !== "undefined") + registeredTool.enabled = updates.enabled; + this.sendToolListChanged(); + } + }; + this._registeredTools[name5] = registeredTool; + this.setToolRequestHandlers(); + this.sendToolListChanged(); + return registeredTool; + } + /** + * tool() implementation. Parses arguments passed to overrides defined above. + */ + tool(name5, ...rest) { + if (this._registeredTools[name5]) { + throw new Error(`Tool ${name5} is already registered`); + } + let description; + let inputSchema; + let outputSchema; + let annotations; + if (typeof rest[0] === "string") { + description = rest.shift(); + } + if (rest.length > 1) { + const firstArg = rest[0]; + if (isZodRawShapeCompat(firstArg)) { + inputSchema = rest.shift(); + if (rest.length > 1 && typeof rest[0] === "object" && rest[0] !== null && !isZodRawShapeCompat(rest[0])) { + annotations = rest.shift(); + } + } else if (typeof firstArg === "object" && firstArg !== null) { + if (Object.values(firstArg).some((v) => typeof v === "object" && v !== null)) { + throw new Error(`Tool ${name5} expected a Zod schema or ToolAnnotations, but received an unrecognized object`); + } + annotations = rest.shift(); + } + } + const callback = rest[0]; + return this._createRegisteredTool(name5, void 0, description, inputSchema, outputSchema, annotations, { taskSupport: "forbidden" }, void 0, callback); + } + /** + * Registers a tool with a config object and callback. + */ + registerTool(name5, config2, cb) { + if (this._registeredTools[name5]) { + throw new Error(`Tool ${name5} is already registered`); + } + const { title, description, inputSchema, outputSchema, annotations, _meta } = config2; + return this._createRegisteredTool(name5, title, description, inputSchema, outputSchema, annotations, { taskSupport: "forbidden" }, _meta, cb); + } + prompt(name5, ...rest) { + if (this._registeredPrompts[name5]) { + throw new Error(`Prompt ${name5} is already registered`); + } + let description; + if (typeof rest[0] === "string") { + description = rest.shift(); + } + let argsSchema; + if (rest.length > 1) { + argsSchema = rest.shift(); + } + const cb = rest[0]; + const registeredPrompt = this._createRegisteredPrompt(name5, void 0, description, argsSchema, cb); + this.setPromptRequestHandlers(); + this.sendPromptListChanged(); + return registeredPrompt; + } + /** + * Registers a prompt with a config object and callback. + */ + registerPrompt(name5, config2, cb) { + if (this._registeredPrompts[name5]) { + throw new Error(`Prompt ${name5} is already registered`); + } + const { title, description, argsSchema } = config2; + const registeredPrompt = this._createRegisteredPrompt(name5, title, description, argsSchema, cb); + this.setPromptRequestHandlers(); + this.sendPromptListChanged(); + return registeredPrompt; + } + /** + * Checks if the server is connected to a transport. + * @returns True if the server is connected + */ + isConnected() { + return this.server.transport !== void 0; + } + /** + * Sends a logging message to the client, if connected. + * Note: You only need to send the parameters object, not the entire JSON RPC message + * @see LoggingMessageNotification + * @param params + * @param sessionId optional for stateless and backward compatibility + */ + async sendLoggingMessage(params, sessionId) { + return this.server.sendLoggingMessage(params, sessionId); + } + /** + * Sends a resource list changed event to the client, if connected. + */ + sendResourceListChanged() { + if (this.isConnected()) { + this.server.sendResourceListChanged(); + } + } + /** + * Sends a tool list changed event to the client, if connected. + */ + sendToolListChanged() { + if (this.isConnected()) { + this.server.sendToolListChanged(); + } + } + /** + * Sends a prompt list changed event to the client, if connected. + */ + sendPromptListChanged() { + if (this.isConnected()) { + this.server.sendPromptListChanged(); + } + } +}; +var EMPTY_OBJECT_JSON_SCHEMA = { + type: "object", + properties: {} +}; +function isZodTypeLike(value) { + return value !== null && typeof value === "object" && "parse" in value && typeof value.parse === "function" && "safeParse" in value && typeof value.safeParse === "function"; +} +function isZodSchemaInstance(obj) { + return "_def" in obj || "_zod" in obj || isZodTypeLike(obj); +} +function isZodRawShapeCompat(obj) { + if (typeof obj !== "object" || obj === null) { + return false; + } + if (isZodSchemaInstance(obj)) { + return false; + } + if (Object.keys(obj).length === 0) { + return true; + } + return Object.values(obj).some(isZodTypeLike); +} +function getZodSchemaObject(schema) { + if (!schema) { + return void 0; + } + if (isZodRawShapeCompat(schema)) { + return objectFromShape(schema); + } + if (!isZodSchemaInstance(schema)) { + throw new Error("inputSchema must be a Zod schema or raw shape, received an unrecognized object"); + } + return schema; +} +function promptArgumentsFromSchema(schema) { + const shape = getObjectShape(schema); + if (!shape) + return []; + return Object.entries(shape).map(([name5, field]) => { + const description = getSchemaDescription(field); + const isOptional = isSchemaOptional(field); + return { + name: name5, + description, + required: !isOptional + }; + }); +} +function getMethodValue(schema) { + const shape = getObjectShape(schema); + const methodSchema = shape?.method; + if (!methodSchema) { + throw new Error("Schema is missing a method literal"); + } + const value = getLiteralValue(methodSchema); + if (typeof value === "string") { + return value; + } + throw new Error("Schema method literal must be a string"); +} +function createCompletionResult(suggestions) { + return { + completion: { + values: suggestions.slice(0, 100), + total: suggestions.length, + hasMore: suggestions.length > 100 + } + }; +} +var EMPTY_COMPLETION_RESULT = { + completion: { + values: [], + hasMore: false + } +}; + +// node_modules/@modelcontextprotocol/sdk/dist/esm/server/stdio.js +var import_node_process13 = __toESM(require("node:process"), 1); + +// node_modules/@modelcontextprotocol/sdk/dist/esm/shared/stdio.js +var ReadBuffer = class { + append(chunk) { + this._buffer = this._buffer ? Buffer.concat([this._buffer, chunk]) : chunk; + } + readMessage() { + if (!this._buffer) { + return null; + } + const index = this._buffer.indexOf("\n"); + if (index === -1) { + return null; + } + const line = this._buffer.toString("utf8", 0, index).replace(/\r$/, ""); + this._buffer = this._buffer.subarray(index + 1); + return deserializeMessage(line); + } + clear() { + this._buffer = void 0; + } +}; +function deserializeMessage(line) { + return JSONRPCMessageSchema.parse(JSON.parse(line)); +} +function serializeMessage(message) { + return JSON.stringify(message) + "\n"; +} + +// node_modules/@modelcontextprotocol/sdk/dist/esm/server/stdio.js +var StdioServerTransport = class { + constructor(_stdin = import_node_process13.default.stdin, _stdout = import_node_process13.default.stdout) { + this._stdin = _stdin; + this._stdout = _stdout; + this._readBuffer = new ReadBuffer(); + this._started = false; + this._ondata = (chunk) => { + this._readBuffer.append(chunk); + this.processReadBuffer(); + }; + this._onerror = (error2) => { + this.onerror?.(error2); + }; + } + /** + * Starts listening for messages on stdin. + */ + async start() { + if (this._started) { + throw new Error("StdioServerTransport already started! If using Server class, note that connect() calls start() automatically."); + } + this._started = true; + this._stdin.on("data", this._ondata); + this._stdin.on("error", this._onerror); + } + processReadBuffer() { + while (true) { + try { + const message = this._readBuffer.readMessage(); + if (message === null) { + break; + } + this.onmessage?.(message); + } catch (error2) { + this.onerror?.(error2); + } + } + } + async close() { + this._stdin.off("data", this._ondata); + this._stdin.off("error", this._onerror); + const remainingDataListeners = this._stdin.listenerCount("data"); + if (remainingDataListeners === 0) { + this._stdin.pause(); + } + this._readBuffer.clear(); + this.onclose?.(); + } + send(message) { + return new Promise((resolve) => { + const json = serializeMessage(message); + if (this._stdout.write(json)) { + resolve(); + } else { + this._stdout.once("drain", resolve); + } + }); + } +}; + +// node_modules/@hono/node-server/dist/index.mjs +var import_http22 = require("http2"); +var import_http23 = require("http2"); +var import_stream2 = require("stream"); +var import_crypto6 = __toESM(require("crypto"), 1); +var RequestError = class extends Error { + constructor(message, options) { + super(message, options); + this.name = "RequestError"; + } +}; +var toRequestError = (e) => { + if (e instanceof RequestError) { + return e; + } + return new RequestError(e.message, { cause: e }); +}; +var GlobalRequest = global.Request; +var Request = class extends GlobalRequest { + constructor(input, options) { + if (typeof input === "object" && getRequestCache in input) { + input = input[getRequestCache](); + } + if (typeof options?.body?.getReader !== "undefined") { + ; + options.duplex ??= "half"; + } + super(input, options); + } +}; +var newHeadersFromIncoming = (incoming) => { + const headerRecord = []; + const rawHeaders = incoming.rawHeaders; + for (let i = 0; i < rawHeaders.length; i += 2) { + const { [i]: key, [i + 1]: value } = rawHeaders; + if (key.charCodeAt(0) !== /*:*/ + 58) { + headerRecord.push([key, value]); + } + } + return new Headers(headerRecord); +}; +var wrapBodyStream = /* @__PURE__ */ Symbol("wrapBodyStream"); +var newRequestFromIncoming = (method, url2, headers, incoming, abortController) => { + const init = { + method, + headers, + signal: abortController.signal + }; + if (method === "TRACE") { + init.method = "GET"; + const req = new Request(url2, init); + Object.defineProperty(req, "method", { + get() { + return "TRACE"; + } + }); + return req; + } + if (!(method === "GET" || method === "HEAD")) { + if ("rawBody" in incoming && incoming.rawBody instanceof Buffer) { + init.body = new ReadableStream({ + start(controller) { + controller.enqueue(incoming.rawBody); + controller.close(); + } + }); + } else if (incoming[wrapBodyStream]) { + let reader; + init.body = new ReadableStream({ + async pull(controller) { + try { + reader ||= import_stream2.Readable.toWeb(incoming).getReader(); + const { done, value } = await reader.read(); + if (done) { + controller.close(); + } else { + controller.enqueue(value); + } + } catch (error2) { + controller.error(error2); + } + } + }); + } else { + init.body = import_stream2.Readable.toWeb(incoming); + } + } + return new Request(url2, init); +}; +var getRequestCache = /* @__PURE__ */ Symbol("getRequestCache"); +var requestCache = /* @__PURE__ */ Symbol("requestCache"); +var incomingKey = /* @__PURE__ */ Symbol("incomingKey"); +var urlKey = /* @__PURE__ */ Symbol("urlKey"); +var headersKey = /* @__PURE__ */ Symbol("headersKey"); +var abortControllerKey = /* @__PURE__ */ Symbol("abortControllerKey"); +var getAbortController = /* @__PURE__ */ Symbol("getAbortController"); +var requestPrototype = { + get method() { + return this[incomingKey].method || "GET"; + }, + get url() { + return this[urlKey]; + }, + get headers() { + return this[headersKey] ||= newHeadersFromIncoming(this[incomingKey]); + }, + [getAbortController]() { + this[getRequestCache](); + return this[abortControllerKey]; + }, + [getRequestCache]() { + this[abortControllerKey] ||= new AbortController(); + return this[requestCache] ||= newRequestFromIncoming( + this.method, + this[urlKey], + this.headers, + this[incomingKey], + this[abortControllerKey] + ); + } +}; +[ + "body", + "bodyUsed", + "cache", + "credentials", + "destination", + "integrity", + "mode", + "redirect", + "referrer", + "referrerPolicy", + "signal", + "keepalive" +].forEach((k) => { + Object.defineProperty(requestPrototype, k, { + get() { + return this[getRequestCache]()[k]; + } + }); +}); +["arrayBuffer", "blob", "clone", "formData", "json", "text"].forEach((k) => { + Object.defineProperty(requestPrototype, k, { + value: function() { + return this[getRequestCache]()[k](); + } + }); +}); +Object.defineProperty(requestPrototype, /* @__PURE__ */ Symbol.for("nodejs.util.inspect.custom"), { + value: function(depth, options, inspectFn) { + const props = { + method: this.method, + url: this.url, + headers: this.headers, + nativeRequest: this[requestCache] + }; + return `Request (lightweight) ${inspectFn(props, { ...options, depth: depth == null ? null : depth - 1 })}`; + } +}); +Object.setPrototypeOf(requestPrototype, Request.prototype); +var newRequest = (incoming, defaultHostname) => { + const req = Object.create(requestPrototype); + req[incomingKey] = incoming; + const incomingUrl = incoming.url || ""; + if (incomingUrl[0] !== "/" && // short-circuit for performance. most requests are relative URL. + (incomingUrl.startsWith("http://") || incomingUrl.startsWith("https://"))) { + if (incoming instanceof import_http23.Http2ServerRequest) { + throw new RequestError("Absolute URL for :path is not allowed in HTTP/2"); + } + try { + const url22 = new URL(incomingUrl); + req[urlKey] = url22.href; + } catch (e) { + throw new RequestError("Invalid absolute URL", { cause: e }); + } + return req; + } + const host = (incoming instanceof import_http23.Http2ServerRequest ? incoming.authority : incoming.headers.host) || defaultHostname; + if (!host) { + throw new RequestError("Missing host header"); + } + let scheme; + if (incoming instanceof import_http23.Http2ServerRequest) { + scheme = incoming.scheme; + if (!(scheme === "http" || scheme === "https")) { + throw new RequestError("Unsupported scheme"); + } + } else { + scheme = incoming.socket && incoming.socket.encrypted ? "https" : "http"; + } + const url2 = new URL(`${scheme}://${host}${incomingUrl}`); + if (url2.hostname.length !== host.length && url2.hostname !== host.replace(/:\d+$/, "")) { + throw new RequestError("Invalid host header"); + } + req[urlKey] = url2.href; + return req; +}; +var responseCache = /* @__PURE__ */ Symbol("responseCache"); +var getResponseCache = /* @__PURE__ */ Symbol("getResponseCache"); +var cacheKey = /* @__PURE__ */ Symbol("cache"); +var GlobalResponse = global.Response; +var Response2 = class _Response { + #body; + #init; + [getResponseCache]() { + delete this[cacheKey]; + return this[responseCache] ||= new GlobalResponse(this.#body, this.#init); + } + constructor(body, init) { + let headers; + this.#body = body; + if (init instanceof _Response) { + const cachedGlobalResponse = init[responseCache]; + if (cachedGlobalResponse) { + this.#init = cachedGlobalResponse; + this[getResponseCache](); + return; + } else { + this.#init = init.#init; + headers = new Headers(init.#init.headers); + } + } else { + this.#init = init; + } + if (typeof body === "string" || typeof body?.getReader !== "undefined" || body instanceof Blob || body instanceof Uint8Array) { + ; + this[cacheKey] = [init?.status || 200, body, headers || init?.headers]; + } + } + get headers() { + const cache = this[cacheKey]; + if (cache) { + if (!(cache[2] instanceof Headers)) { + cache[2] = new Headers( + cache[2] || { "content-type": "text/plain; charset=UTF-8" } + ); + } + return cache[2]; + } + return this[getResponseCache]().headers; + } + get status() { + return this[cacheKey]?.[0] ?? this[getResponseCache]().status; + } + get ok() { + const status = this.status; + return status >= 200 && status < 300; + } +}; +["body", "bodyUsed", "redirected", "statusText", "trailers", "type", "url"].forEach((k) => { + Object.defineProperty(Response2.prototype, k, { + get() { + return this[getResponseCache]()[k]; + } + }); +}); +["arrayBuffer", "blob", "clone", "formData", "json", "text"].forEach((k) => { + Object.defineProperty(Response2.prototype, k, { + value: function() { + return this[getResponseCache]()[k](); + } + }); +}); +Object.defineProperty(Response2.prototype, /* @__PURE__ */ Symbol.for("nodejs.util.inspect.custom"), { + value: function(depth, options, inspectFn) { + const props = { + status: this.status, + headers: this.headers, + ok: this.ok, + nativeResponse: this[responseCache] + }; + return `Response (lightweight) ${inspectFn(props, { ...options, depth: depth == null ? null : depth - 1 })}`; + } +}); +Object.setPrototypeOf(Response2, GlobalResponse); +Object.setPrototypeOf(Response2.prototype, GlobalResponse.prototype); +async function readWithoutBlocking(readPromise) { + return Promise.race([readPromise, Promise.resolve().then(() => Promise.resolve(void 0))]); +} +function writeFromReadableStreamDefaultReader(reader, writable, currentReadPromise) { + const cancel = (error2) => { + reader.cancel(error2).catch(() => { + }); + }; + writable.on("close", cancel); + writable.on("error", cancel); + (currentReadPromise ?? reader.read()).then(flow, handleStreamError); + return reader.closed.finally(() => { + writable.off("close", cancel); + writable.off("error", cancel); + }); + function handleStreamError(error2) { + if (error2) { + writable.destroy(error2); + } + } + function onDrain() { + reader.read().then(flow, handleStreamError); + } + function flow({ done, value }) { + try { + if (done) { + writable.end(); + } else if (!writable.write(value)) { + writable.once("drain", onDrain); + } else { + return reader.read().then(flow, handleStreamError); + } + } catch (e) { + handleStreamError(e); + } + } +} +function writeFromReadableStream(stream, writable) { + if (stream.locked) { + throw new TypeError("ReadableStream is locked."); + } else if (writable.destroyed) { + return; + } + return writeFromReadableStreamDefaultReader(stream.getReader(), writable); +} +var buildOutgoingHttpHeaders = (headers) => { + const res = {}; + if (!(headers instanceof Headers)) { + headers = new Headers(headers ?? void 0); + } + const cookies = []; + for (const [k, v] of headers) { + if (k === "set-cookie") { + cookies.push(v); + } else { + res[k] = v; + } + } + if (cookies.length > 0) { + res["set-cookie"] = cookies; + } + res["content-type"] ??= "text/plain; charset=UTF-8"; + return res; +}; +var X_ALREADY_SENT = "x-hono-already-sent"; +if (typeof global.crypto === "undefined") { + global.crypto = import_crypto6.default; +} +var outgoingEnded = /* @__PURE__ */ Symbol("outgoingEnded"); +var incomingDraining = /* @__PURE__ */ Symbol("incomingDraining"); +var DRAIN_TIMEOUT_MS = 500; +var MAX_DRAIN_BYTES = 64 * 1024 * 1024; +var drainIncoming = (incoming) => { + const incomingWithDrainState = incoming; + if (incoming.destroyed || incomingWithDrainState[incomingDraining]) { + return; + } + incomingWithDrainState[incomingDraining] = true; + if (incoming instanceof import_http22.Http2ServerRequest) { + try { + ; + incoming.stream?.close?.(import_http22.constants.NGHTTP2_NO_ERROR); + } catch { + } + return; + } + let bytesRead = 0; + const cleanup = () => { + clearTimeout(timer); + incoming.off("data", onData); + incoming.off("end", cleanup); + incoming.off("error", cleanup); + }; + const forceClose = () => { + cleanup(); + const socket = incoming.socket; + if (socket && !socket.destroyed) { + socket.destroySoon(); + } + }; + const timer = setTimeout(forceClose, DRAIN_TIMEOUT_MS); + timer.unref?.(); + const onData = (chunk) => { + bytesRead += chunk.length; + if (bytesRead > MAX_DRAIN_BYTES) { + forceClose(); + } + }; + incoming.on("data", onData); + incoming.on("end", cleanup); + incoming.on("error", cleanup); + incoming.resume(); +}; +var handleRequestError = () => new Response(null, { + status: 400 +}); +var handleFetchError = (e) => new Response(null, { + status: e instanceof Error && (e.name === "TimeoutError" || e.constructor.name === "TimeoutError") ? 504 : 500 +}); +var handleResponseError = (e, outgoing) => { + const err = e instanceof Error ? e : new Error("unknown error", { cause: e }); + if (err.code === "ERR_STREAM_PREMATURE_CLOSE") { + console.info("The user aborted a request."); + } else { + console.error(e); + if (!outgoing.headersSent) { + outgoing.writeHead(500, { "Content-Type": "text/plain" }); + } + outgoing.end(`Error: ${err.message}`); + outgoing.destroy(err); + } +}; +var flushHeaders = (outgoing) => { + if ("flushHeaders" in outgoing && outgoing.writable) { + outgoing.flushHeaders(); + } +}; +var responseViaCache = async (res, outgoing) => { + let [status, body, header] = res[cacheKey]; + let hasContentLength = false; + if (!header) { + header = { "content-type": "text/plain; charset=UTF-8" }; + } else if (header instanceof Headers) { + hasContentLength = header.has("content-length"); + header = buildOutgoingHttpHeaders(header); + } else if (Array.isArray(header)) { + const headerObj = new Headers(header); + hasContentLength = headerObj.has("content-length"); + header = buildOutgoingHttpHeaders(headerObj); + } else { + for (const key in header) { + if (key.length === 14 && key.toLowerCase() === "content-length") { + hasContentLength = true; + break; + } + } + } + if (!hasContentLength) { + if (typeof body === "string") { + header["Content-Length"] = Buffer.byteLength(body); + } else if (body instanceof Uint8Array) { + header["Content-Length"] = body.byteLength; + } else if (body instanceof Blob) { + header["Content-Length"] = body.size; + } + } + outgoing.writeHead(status, header); + if (typeof body === "string" || body instanceof Uint8Array) { + outgoing.end(body); + } else if (body instanceof Blob) { + outgoing.end(new Uint8Array(await body.arrayBuffer())); + } else { + flushHeaders(outgoing); + await writeFromReadableStream(body, outgoing)?.catch( + (e) => handleResponseError(e, outgoing) + ); + } + ; + outgoing[outgoingEnded]?.(); +}; +var isPromise = (res) => typeof res.then === "function"; +var responseViaResponseObject = async (res, outgoing, options = {}) => { + if (isPromise(res)) { + if (options.errorHandler) { + try { + res = await res; + } catch (err) { + const errRes = await options.errorHandler(err); + if (!errRes) { + return; + } + res = errRes; + } + } else { + res = await res.catch(handleFetchError); + } + } + if (cacheKey in res) { + return responseViaCache(res, outgoing); + } + const resHeaderRecord = buildOutgoingHttpHeaders(res.headers); + if (res.body) { + const reader = res.body.getReader(); + const values = []; + let done = false; + let currentReadPromise = void 0; + if (resHeaderRecord["transfer-encoding"] !== "chunked") { + let maxReadCount = 2; + for (let i = 0; i < maxReadCount; i++) { + currentReadPromise ||= reader.read(); + const chunk = await readWithoutBlocking(currentReadPromise).catch((e) => { + console.error(e); + done = true; + }); + if (!chunk) { + if (i === 1) { + await new Promise((resolve) => setTimeout(resolve)); + maxReadCount = 3; + continue; + } + break; + } + currentReadPromise = void 0; + if (chunk.value) { + values.push(chunk.value); + } + if (chunk.done) { + done = true; + break; + } + } + if (done && !("content-length" in resHeaderRecord)) { + resHeaderRecord["content-length"] = values.reduce((acc, value) => acc + value.length, 0); + } + } + outgoing.writeHead(res.status, resHeaderRecord); + values.forEach((value) => { + ; + outgoing.write(value); + }); + if (done) { + outgoing.end(); + } else { + if (values.length === 0) { + flushHeaders(outgoing); + } + await writeFromReadableStreamDefaultReader(reader, outgoing, currentReadPromise); + } + } else if (resHeaderRecord[X_ALREADY_SENT]) { + } else { + outgoing.writeHead(res.status, resHeaderRecord); + outgoing.end(); + } + ; + outgoing[outgoingEnded]?.(); +}; +var getRequestListener = (fetchCallback, options = {}) => { + const autoCleanupIncoming = options.autoCleanupIncoming ?? true; + if (options.overrideGlobalObjects !== false && global.Request !== Request) { + Object.defineProperty(global, "Request", { + value: Request + }); + Object.defineProperty(global, "Response", { + value: Response2 + }); + } + return async (incoming, outgoing) => { + let res, req; + try { + req = newRequest(incoming, options.hostname); + let incomingEnded = !autoCleanupIncoming || incoming.method === "GET" || incoming.method === "HEAD"; + if (!incomingEnded) { + ; + incoming[wrapBodyStream] = true; + incoming.on("end", () => { + incomingEnded = true; + }); + if (incoming instanceof import_http22.Http2ServerRequest) { + ; + outgoing[outgoingEnded] = () => { + if (!incomingEnded) { + setTimeout(() => { + if (!incomingEnded) { + setTimeout(() => { + drainIncoming(incoming); + }); + } + }); + } + }; + } + outgoing.on("finish", () => { + if (!incomingEnded) { + drainIncoming(incoming); + } + }); + } + outgoing.on("close", () => { + const abortController = req[abortControllerKey]; + if (abortController) { + if (incoming.errored) { + req[abortControllerKey].abort(incoming.errored.toString()); + } else if (!outgoing.writableFinished) { + req[abortControllerKey].abort("Client connection prematurely closed."); + } + } + if (!incomingEnded) { + setTimeout(() => { + if (!incomingEnded) { + setTimeout(() => { + drainIncoming(incoming); + }); + } + }); + } + }); + res = fetchCallback(req, { incoming, outgoing }); + if (cacheKey in res) { + return responseViaCache(res, outgoing); + } + } catch (e) { + if (!res) { + if (options.errorHandler) { + res = await options.errorHandler(req ? e : toRequestError(e)); + if (!res) { + return; + } + } else if (!req) { + res = handleRequestError(); + } else { + res = handleFetchError(e); + } + } else { + return handleResponseError(e, outgoing); + } + } + try { + return await responseViaResponseObject(res, outgoing, options); + } catch (e) { + return handleResponseError(e, outgoing); + } + }; +}; + +// node_modules/@modelcontextprotocol/sdk/dist/esm/server/webStandardStreamableHttp.js +var WebStandardStreamableHTTPServerTransport = class { + constructor(options = {}) { + this._started = false; + this._hasHandledRequest = false; + this._streamMapping = /* @__PURE__ */ new Map(); + this._requestToStreamMapping = /* @__PURE__ */ new Map(); + this._requestResponseMap = /* @__PURE__ */ new Map(); + this._initialized = false; + this._enableJsonResponse = false; + this._standaloneSseStreamId = "_GET_stream"; + this.sessionIdGenerator = options.sessionIdGenerator; + this._enableJsonResponse = options.enableJsonResponse ?? false; + this._eventStore = options.eventStore; + this._onsessioninitialized = options.onsessioninitialized; + this._onsessionclosed = options.onsessionclosed; + this._allowedHosts = options.allowedHosts; + this._allowedOrigins = options.allowedOrigins; + this._enableDnsRebindingProtection = options.enableDnsRebindingProtection ?? false; + this._retryInterval = options.retryInterval; + } + /** + * Starts the transport. This is required by the Transport interface but is a no-op + * for the Streamable HTTP transport as connections are managed per-request. + */ + async start() { + if (this._started) { + throw new Error("Transport already started"); + } + this._started = true; + } + /** + * Helper to create a JSON error response + */ + createJsonErrorResponse(status, code, message, options) { + const error2 = { code, message }; + if (options?.data !== void 0) { + error2.data = options.data; + } + return new Response(JSON.stringify({ + jsonrpc: "2.0", + error: error2, + id: null + }), { + status, + headers: { + "Content-Type": "application/json", + ...options?.headers + } + }); + } + /** + * Validates request headers for DNS rebinding protection. + * @returns Error response if validation fails, undefined if validation passes. + */ + validateRequestHeaders(req) { + if (!this._enableDnsRebindingProtection) { + return void 0; + } + if (this._allowedHosts && this._allowedHosts.length > 0) { + const hostHeader = req.headers.get("host"); + if (!hostHeader || !this._allowedHosts.includes(hostHeader)) { + const error2 = `Invalid Host header: ${hostHeader}`; + this.onerror?.(new Error(error2)); + return this.createJsonErrorResponse(403, -32e3, error2); + } + } + if (this._allowedOrigins && this._allowedOrigins.length > 0) { + const originHeader = req.headers.get("origin"); + if (originHeader && !this._allowedOrigins.includes(originHeader)) { + const error2 = `Invalid Origin header: ${originHeader}`; + this.onerror?.(new Error(error2)); + return this.createJsonErrorResponse(403, -32e3, error2); + } + } + return void 0; + } + /** + * Handles an incoming HTTP request, whether GET, POST, or DELETE + * Returns a Response object (Web Standard) + */ + async handleRequest(req, options) { + if (!this.sessionIdGenerator && this._hasHandledRequest) { + throw new Error("Stateless transport cannot be reused across requests. Create a new transport per request."); + } + this._hasHandledRequest = true; + const validationError = this.validateRequestHeaders(req); + if (validationError) { + return validationError; + } + switch (req.method) { + case "POST": + return this.handlePostRequest(req, options); + case "GET": + return this.handleGetRequest(req); + case "DELETE": + return this.handleDeleteRequest(req); + default: + return this.handleUnsupportedRequest(); + } + } + /** + * Writes a priming event to establish resumption capability. + * Only sends if eventStore is configured (opt-in for resumability) and + * the client's protocol version supports empty SSE data (>= 2025-11-25). + */ + async writePrimingEvent(controller, encoder, streamId, protocolVersion) { + if (!this._eventStore) { + return; + } + if (protocolVersion < "2025-11-25") { + return; + } + const primingEventId = await this._eventStore.storeEvent(streamId, {}); + let primingEvent = `id: ${primingEventId} +data: + +`; + if (this._retryInterval !== void 0) { + primingEvent = `id: ${primingEventId} +retry: ${this._retryInterval} +data: + +`; + } + controller.enqueue(encoder.encode(primingEvent)); + } + /** + * Handles GET requests for SSE stream + */ + async handleGetRequest(req) { + const acceptHeader = req.headers.get("accept"); + if (!acceptHeader?.includes("text/event-stream")) { + this.onerror?.(new Error("Not Acceptable: Client must accept text/event-stream")); + return this.createJsonErrorResponse(406, -32e3, "Not Acceptable: Client must accept text/event-stream"); + } + const sessionError = this.validateSession(req); + if (sessionError) { + return sessionError; + } + const protocolError = this.validateProtocolVersion(req); + if (protocolError) { + return protocolError; + } + if (this._eventStore) { + const lastEventId = req.headers.get("last-event-id"); + if (lastEventId) { + return this.replayEvents(lastEventId); + } + } + if (this._streamMapping.get(this._standaloneSseStreamId) !== void 0) { + this.onerror?.(new Error("Conflict: Only one SSE stream is allowed per session")); + return this.createJsonErrorResponse(409, -32e3, "Conflict: Only one SSE stream is allowed per session"); + } + const encoder = new TextEncoder(); + let streamController; + const readable = new ReadableStream({ + start: (controller) => { + streamController = controller; + }, + cancel: () => { + this._streamMapping.delete(this._standaloneSseStreamId); + } + }); + const headers = { + "Content-Type": "text/event-stream", + "Cache-Control": "no-cache, no-transform", + Connection: "keep-alive" + }; + if (this.sessionId !== void 0) { + headers["mcp-session-id"] = this.sessionId; + } + this._streamMapping.set(this._standaloneSseStreamId, { + controller: streamController, + encoder, + cleanup: () => { + this._streamMapping.delete(this._standaloneSseStreamId); + try { + streamController.close(); + } catch { + } + } + }); + return new Response(readable, { headers }); + } + /** + * Replays events that would have been sent after the specified event ID + * Only used when resumability is enabled + */ + async replayEvents(lastEventId) { + if (!this._eventStore) { + this.onerror?.(new Error("Event store not configured")); + return this.createJsonErrorResponse(400, -32e3, "Event store not configured"); + } + try { + let streamId; + if (this._eventStore.getStreamIdForEventId) { + streamId = await this._eventStore.getStreamIdForEventId(lastEventId); + if (!streamId) { + this.onerror?.(new Error("Invalid event ID format")); + return this.createJsonErrorResponse(400, -32e3, "Invalid event ID format"); + } + if (this._streamMapping.get(streamId) !== void 0) { + this.onerror?.(new Error("Conflict: Stream already has an active connection")); + return this.createJsonErrorResponse(409, -32e3, "Conflict: Stream already has an active connection"); + } + } + const headers = { + "Content-Type": "text/event-stream", + "Cache-Control": "no-cache, no-transform", + Connection: "keep-alive" + }; + if (this.sessionId !== void 0) { + headers["mcp-session-id"] = this.sessionId; + } + const encoder = new TextEncoder(); + let streamController; + const readable = new ReadableStream({ + start: (controller) => { + streamController = controller; + }, + cancel: () => { + } + }); + const replayedStreamId = await this._eventStore.replayEventsAfter(lastEventId, { + send: async (eventId, message) => { + const success = this.writeSSEEvent(streamController, encoder, message, eventId); + if (!success) { + this.onerror?.(new Error("Failed replay events")); + try { + streamController.close(); + } catch { + } + } + } + }); + this._streamMapping.set(replayedStreamId, { + controller: streamController, + encoder, + cleanup: () => { + this._streamMapping.delete(replayedStreamId); + try { + streamController.close(); + } catch { + } + } + }); + return new Response(readable, { headers }); + } catch (error2) { + this.onerror?.(error2); + return this.createJsonErrorResponse(500, -32e3, "Error replaying events"); + } + } + /** + * Writes an event to an SSE stream via controller with proper formatting + */ + writeSSEEvent(controller, encoder, message, eventId) { + try { + let eventData = `event: message +`; + if (eventId) { + eventData += `id: ${eventId} +`; + } + eventData += `data: ${JSON.stringify(message)} + +`; + controller.enqueue(encoder.encode(eventData)); + return true; + } catch (error2) { + this.onerror?.(error2); + return false; + } + } + /** + * Handles unsupported requests (PUT, PATCH, etc.) + */ + handleUnsupportedRequest() { + this.onerror?.(new Error("Method not allowed.")); + return new Response(JSON.stringify({ + jsonrpc: "2.0", + error: { + code: -32e3, + message: "Method not allowed." + }, + id: null + }), { + status: 405, + headers: { + Allow: "GET, POST, DELETE", + "Content-Type": "application/json" + } + }); + } + /** + * Handles POST requests containing JSON-RPC messages + */ + async handlePostRequest(req, options) { + try { + const acceptHeader = req.headers.get("accept"); + if (!acceptHeader?.includes("application/json") || !acceptHeader.includes("text/event-stream")) { + this.onerror?.(new Error("Not Acceptable: Client must accept both application/json and text/event-stream")); + return this.createJsonErrorResponse(406, -32e3, "Not Acceptable: Client must accept both application/json and text/event-stream"); + } + const ct = req.headers.get("content-type"); + if (!ct || !ct.includes("application/json")) { + this.onerror?.(new Error("Unsupported Media Type: Content-Type must be application/json")); + return this.createJsonErrorResponse(415, -32e3, "Unsupported Media Type: Content-Type must be application/json"); + } + const requestInfo = { + headers: Object.fromEntries(req.headers.entries()), + url: new URL(req.url) + }; + let rawMessage; + if (options?.parsedBody !== void 0) { + rawMessage = options.parsedBody; + } else { + try { + rawMessage = await req.json(); + } catch { + this.onerror?.(new Error("Parse error: Invalid JSON")); + return this.createJsonErrorResponse(400, -32700, "Parse error: Invalid JSON"); + } + } + let messages; + try { + if (Array.isArray(rawMessage)) { + messages = rawMessage.map((msg) => JSONRPCMessageSchema.parse(msg)); + } else { + messages = [JSONRPCMessageSchema.parse(rawMessage)]; + } + } catch { + this.onerror?.(new Error("Parse error: Invalid JSON-RPC message")); + return this.createJsonErrorResponse(400, -32700, "Parse error: Invalid JSON-RPC message"); + } + const isInitializationRequest = messages.some(isInitializeRequest); + if (isInitializationRequest) { + if (this._initialized && this.sessionId !== void 0) { + this.onerror?.(new Error("Invalid Request: Server already initialized")); + return this.createJsonErrorResponse(400, -32600, "Invalid Request: Server already initialized"); + } + if (messages.length > 1) { + this.onerror?.(new Error("Invalid Request: Only one initialization request is allowed")); + return this.createJsonErrorResponse(400, -32600, "Invalid Request: Only one initialization request is allowed"); + } + this.sessionId = this.sessionIdGenerator?.(); + this._initialized = true; + if (this.sessionId && this._onsessioninitialized) { + await Promise.resolve(this._onsessioninitialized(this.sessionId)); + } + } + if (!isInitializationRequest) { + const sessionError = this.validateSession(req); + if (sessionError) { + return sessionError; + } + const protocolError = this.validateProtocolVersion(req); + if (protocolError) { + return protocolError; + } + } + const hasRequests = messages.some(isJSONRPCRequest); + if (!hasRequests) { + for (const message of messages) { + this.onmessage?.(message, { authInfo: options?.authInfo, requestInfo }); + } + return new Response(null, { status: 202 }); + } + const streamId = crypto.randomUUID(); + const initRequest = messages.find((m) => isInitializeRequest(m)); + const clientProtocolVersion = initRequest ? initRequest.params.protocolVersion : req.headers.get("mcp-protocol-version") ?? DEFAULT_NEGOTIATED_PROTOCOL_VERSION; + if (this._enableJsonResponse) { + return new Promise((resolve) => { + this._streamMapping.set(streamId, { + resolveJson: resolve, + cleanup: () => { + this._streamMapping.delete(streamId); + } + }); + for (const message of messages) { + if (isJSONRPCRequest(message)) { + this._requestToStreamMapping.set(message.id, streamId); + } + } + for (const message of messages) { + this.onmessage?.(message, { authInfo: options?.authInfo, requestInfo }); + } + }); + } + const encoder = new TextEncoder(); + let streamController; + const readable = new ReadableStream({ + start: (controller) => { + streamController = controller; + }, + cancel: () => { + this._streamMapping.delete(streamId); + } + }); + const headers = { + "Content-Type": "text/event-stream", + "Cache-Control": "no-cache", + Connection: "keep-alive" + }; + if (this.sessionId !== void 0) { + headers["mcp-session-id"] = this.sessionId; + } + for (const message of messages) { + if (isJSONRPCRequest(message)) { + this._streamMapping.set(streamId, { + controller: streamController, + encoder, + cleanup: () => { + this._streamMapping.delete(streamId); + try { + streamController.close(); + } catch { + } + } + }); + this._requestToStreamMapping.set(message.id, streamId); + } + } + await this.writePrimingEvent(streamController, encoder, streamId, clientProtocolVersion); + for (const message of messages) { + let closeSSEStream; + let closeStandaloneSSEStream; + if (isJSONRPCRequest(message) && this._eventStore && clientProtocolVersion >= "2025-11-25") { + closeSSEStream = () => { + this.closeSSEStream(message.id); + }; + closeStandaloneSSEStream = () => { + this.closeStandaloneSSEStream(); + }; + } + this.onmessage?.(message, { authInfo: options?.authInfo, requestInfo, closeSSEStream, closeStandaloneSSEStream }); + } + return new Response(readable, { status: 200, headers }); + } catch (error2) { + this.onerror?.(error2); + return this.createJsonErrorResponse(400, -32700, "Parse error", { data: String(error2) }); + } + } + /** + * Handles DELETE requests to terminate sessions + */ + async handleDeleteRequest(req) { + const sessionError = this.validateSession(req); + if (sessionError) { + return sessionError; + } + const protocolError = this.validateProtocolVersion(req); + if (protocolError) { + return protocolError; + } + await Promise.resolve(this._onsessionclosed?.(this.sessionId)); + await this.close(); + return new Response(null, { status: 200 }); + } + /** + * Validates session ID for non-initialization requests. + * Returns Response error if invalid, undefined otherwise + */ + validateSession(req) { + if (this.sessionIdGenerator === void 0) { + return void 0; + } + if (!this._initialized) { + this.onerror?.(new Error("Bad Request: Server not initialized")); + return this.createJsonErrorResponse(400, -32e3, "Bad Request: Server not initialized"); + } + const sessionId = req.headers.get("mcp-session-id"); + if (!sessionId) { + this.onerror?.(new Error("Bad Request: Mcp-Session-Id header is required")); + return this.createJsonErrorResponse(400, -32e3, "Bad Request: Mcp-Session-Id header is required"); + } + if (sessionId !== this.sessionId) { + this.onerror?.(new Error("Session not found")); + return this.createJsonErrorResponse(404, -32001, "Session not found"); + } + return void 0; + } + /** + * Validates the MCP-Protocol-Version header on incoming requests. + * + * For initialization: Version negotiation handles unknown versions gracefully + * (server responds with its supported version). + * + * For subsequent requests with MCP-Protocol-Version header: + * - Accept if in supported list + * - 400 if unsupported + * + * For HTTP requests without the MCP-Protocol-Version header: + * - Accept and default to the version negotiated at initialization + */ + validateProtocolVersion(req) { + const protocolVersion = req.headers.get("mcp-protocol-version"); + if (protocolVersion !== null && !SUPPORTED_PROTOCOL_VERSIONS.includes(protocolVersion)) { + this.onerror?.(new Error(`Bad Request: Unsupported protocol version: ${protocolVersion} (supported versions: ${SUPPORTED_PROTOCOL_VERSIONS.join(", ")})`)); + return this.createJsonErrorResponse(400, -32e3, `Bad Request: Unsupported protocol version: ${protocolVersion} (supported versions: ${SUPPORTED_PROTOCOL_VERSIONS.join(", ")})`); + } + return void 0; + } + async close() { + this._streamMapping.forEach(({ cleanup }) => { + cleanup(); + }); + this._streamMapping.clear(); + this._requestResponseMap.clear(); + this.onclose?.(); + } + /** + * Close an SSE stream for a specific request, triggering client reconnection. + * Use this to implement polling behavior during long-running operations - + * client will reconnect after the retry interval specified in the priming event. + */ + closeSSEStream(requestId) { + const streamId = this._requestToStreamMapping.get(requestId); + if (!streamId) + return; + const stream = this._streamMapping.get(streamId); + if (stream) { + stream.cleanup(); + } + } + /** + * Close the standalone GET SSE stream, triggering client reconnection. + * Use this to implement polling behavior for server-initiated notifications. + */ + closeStandaloneSSEStream() { + const stream = this._streamMapping.get(this._standaloneSseStreamId); + if (stream) { + stream.cleanup(); + } + } + async send(message, options) { + let requestId = options?.relatedRequestId; + if (isJSONRPCResultResponse(message) || isJSONRPCErrorResponse(message)) { + requestId = message.id; + } + if (requestId === void 0) { + if (isJSONRPCResultResponse(message) || isJSONRPCErrorResponse(message)) { + throw new Error("Cannot send a response on a standalone SSE stream unless resuming a previous client request"); + } + let eventId; + if (this._eventStore) { + eventId = await this._eventStore.storeEvent(this._standaloneSseStreamId, message); + } + const standaloneSse = this._streamMapping.get(this._standaloneSseStreamId); + if (standaloneSse === void 0) { + return; + } + if (standaloneSse.controller && standaloneSse.encoder) { + this.writeSSEEvent(standaloneSse.controller, standaloneSse.encoder, message, eventId); + } + return; + } + const streamId = this._requestToStreamMapping.get(requestId); + if (!streamId) { + throw new Error(`No connection established for request ID: ${String(requestId)}`); + } + const stream = this._streamMapping.get(streamId); + if (!this._enableJsonResponse && stream?.controller && stream?.encoder) { + let eventId; + if (this._eventStore) { + eventId = await this._eventStore.storeEvent(streamId, message); + } + this.writeSSEEvent(stream.controller, stream.encoder, message, eventId); + } + if (isJSONRPCResultResponse(message) || isJSONRPCErrorResponse(message)) { + this._requestResponseMap.set(requestId, message); + const relatedIds = Array.from(this._requestToStreamMapping.entries()).filter(([_, sid]) => sid === streamId).map(([id]) => id); + const allResponsesReady = relatedIds.every((id) => this._requestResponseMap.has(id)); + if (allResponsesReady) { + if (!stream) { + throw new Error(`No connection established for request ID: ${String(requestId)}`); + } + if (this._enableJsonResponse && stream.resolveJson) { + const headers = { + "Content-Type": "application/json" + }; + if (this.sessionId !== void 0) { + headers["mcp-session-id"] = this.sessionId; + } + const responses = relatedIds.map((id) => this._requestResponseMap.get(id)); + if (responses.length === 1) { + stream.resolveJson(new Response(JSON.stringify(responses[0]), { status: 200, headers })); + } else { + stream.resolveJson(new Response(JSON.stringify(responses), { status: 200, headers })); + } + } else { + stream.cleanup(); + } + for (const id of relatedIds) { + this._requestResponseMap.delete(id); + this._requestToStreamMapping.delete(id); + } + } + } + } +}; + +// node_modules/@modelcontextprotocol/sdk/dist/esm/server/streamableHttp.js +var StreamableHTTPServerTransport = class { + constructor(options = {}) { + this._requestContext = /* @__PURE__ */ new WeakMap(); + this._webStandardTransport = new WebStandardStreamableHTTPServerTransport(options); + this._requestListener = getRequestListener(async (webRequest) => { + const context3 = this._requestContext.get(webRequest); + return this._webStandardTransport.handleRequest(webRequest, { + authInfo: context3?.authInfo, + parsedBody: context3?.parsedBody + }); + }, { overrideGlobalObjects: false }); + } + /** + * Gets the session ID for this transport instance. + */ + get sessionId() { + return this._webStandardTransport.sessionId; + } + /** + * Sets callback for when the transport is closed. + */ + set onclose(handler) { + this._webStandardTransport.onclose = handler; + } + get onclose() { + return this._webStandardTransport.onclose; + } + /** + * Sets callback for transport errors. + */ + set onerror(handler) { + this._webStandardTransport.onerror = handler; + } + get onerror() { + return this._webStandardTransport.onerror; + } + /** + * Sets callback for incoming messages. + */ + set onmessage(handler) { + this._webStandardTransport.onmessage = handler; + } + get onmessage() { + return this._webStandardTransport.onmessage; + } + /** + * Starts the transport. This is required by the Transport interface but is a no-op + * for the Streamable HTTP transport as connections are managed per-request. + */ + async start() { + return this._webStandardTransport.start(); + } + /** + * Closes the transport and all active connections. + */ + async close() { + return this._webStandardTransport.close(); + } + /** + * Sends a JSON-RPC message through the transport. + */ + async send(message, options) { + return this._webStandardTransport.send(message, options); + } + /** + * Handles an incoming HTTP request, whether GET or POST. + * + * This method converts Node.js HTTP objects to Web Standard Request/Response + * and delegates to the underlying WebStandardStreamableHTTPServerTransport. + * + * @param req - Node.js IncomingMessage, optionally with auth property from middleware + * @param res - Node.js ServerResponse + * @param parsedBody - Optional pre-parsed body from body-parser middleware + */ + async handleRequest(req, res, parsedBody) { + const authInfo = req.auth; + const handler = getRequestListener(async (webRequest) => { + return this._webStandardTransport.handleRequest(webRequest, { + authInfo, + parsedBody + }); + }, { overrideGlobalObjects: false }); + await handler(req, res); + } + /** + * Close an SSE stream for a specific request, triggering client reconnection. + * Use this to implement polling behavior during long-running operations - + * client will reconnect after the retry interval specified in the priming event. + */ + closeSSEStream(requestId) { + this._webStandardTransport.closeSSEStream(requestId); + } + /** + * Close the standalone GET SSE stream, triggering client reconnection. + * Use this to implement polling behavior for server-initiated notifications. + */ + closeStandaloneSSEStream() { + this._webStandardTransport.closeStandaloneSSEStream(); + } +}; + +// node_modules/@modelcontextprotocol/sdk/dist/esm/server/auth/router.js +var import_express6 = __toESM(require_express2(), 1); + +// node_modules/@modelcontextprotocol/sdk/dist/esm/server/auth/handlers/register.js +var import_express = __toESM(require_express2(), 1); + +// node_modules/@modelcontextprotocol/sdk/dist/esm/shared/auth.js +var SafeUrlSchema = url().superRefine((val, ctx) => { + if (!URL.canParse(val)) { + ctx.addIssue({ + code: ZodIssueCode2.custom, + message: "URL must be parseable", + fatal: true + }); + return NEVER2; + } +}).refine((url2) => { + const u = new URL(url2); + return u.protocol !== "javascript:" && u.protocol !== "data:" && u.protocol !== "vbscript:"; +}, { message: "URL cannot use javascript:, data:, or vbscript: scheme" }); +var OAuthProtectedResourceMetadataSchema = looseObject({ + resource: string2().url(), + authorization_servers: array(SafeUrlSchema).optional(), + jwks_uri: string2().url().optional(), + scopes_supported: array(string2()).optional(), + bearer_methods_supported: array(string2()).optional(), + resource_signing_alg_values_supported: array(string2()).optional(), + resource_name: string2().optional(), + resource_documentation: string2().optional(), + resource_policy_uri: string2().url().optional(), + resource_tos_uri: string2().url().optional(), + tls_client_certificate_bound_access_tokens: boolean2().optional(), + authorization_details_types_supported: array(string2()).optional(), + dpop_signing_alg_values_supported: array(string2()).optional(), + dpop_bound_access_tokens_required: boolean2().optional() +}); +var OAuthMetadataSchema = looseObject({ + issuer: string2(), + authorization_endpoint: SafeUrlSchema, + token_endpoint: SafeUrlSchema, + registration_endpoint: SafeUrlSchema.optional(), + scopes_supported: array(string2()).optional(), + response_types_supported: array(string2()), + response_modes_supported: array(string2()).optional(), + grant_types_supported: array(string2()).optional(), + token_endpoint_auth_methods_supported: array(string2()).optional(), + token_endpoint_auth_signing_alg_values_supported: array(string2()).optional(), + service_documentation: SafeUrlSchema.optional(), + revocation_endpoint: SafeUrlSchema.optional(), + revocation_endpoint_auth_methods_supported: array(string2()).optional(), + revocation_endpoint_auth_signing_alg_values_supported: array(string2()).optional(), + introspection_endpoint: string2().optional(), + introspection_endpoint_auth_methods_supported: array(string2()).optional(), + introspection_endpoint_auth_signing_alg_values_supported: array(string2()).optional(), + code_challenge_methods_supported: array(string2()).optional(), + client_id_metadata_document_supported: boolean2().optional() +}); +var OpenIdProviderMetadataSchema = looseObject({ + issuer: string2(), + authorization_endpoint: SafeUrlSchema, + token_endpoint: SafeUrlSchema, + userinfo_endpoint: SafeUrlSchema.optional(), + jwks_uri: SafeUrlSchema, + registration_endpoint: SafeUrlSchema.optional(), + scopes_supported: array(string2()).optional(), + response_types_supported: array(string2()), + response_modes_supported: array(string2()).optional(), + grant_types_supported: array(string2()).optional(), + acr_values_supported: array(string2()).optional(), + subject_types_supported: array(string2()), + id_token_signing_alg_values_supported: array(string2()), + id_token_encryption_alg_values_supported: array(string2()).optional(), + id_token_encryption_enc_values_supported: array(string2()).optional(), + userinfo_signing_alg_values_supported: array(string2()).optional(), + userinfo_encryption_alg_values_supported: array(string2()).optional(), + userinfo_encryption_enc_values_supported: array(string2()).optional(), + request_object_signing_alg_values_supported: array(string2()).optional(), + request_object_encryption_alg_values_supported: array(string2()).optional(), + request_object_encryption_enc_values_supported: array(string2()).optional(), + token_endpoint_auth_methods_supported: array(string2()).optional(), + token_endpoint_auth_signing_alg_values_supported: array(string2()).optional(), + display_values_supported: array(string2()).optional(), + claim_types_supported: array(string2()).optional(), + claims_supported: array(string2()).optional(), + service_documentation: string2().optional(), + claims_locales_supported: array(string2()).optional(), + ui_locales_supported: array(string2()).optional(), + claims_parameter_supported: boolean2().optional(), + request_parameter_supported: boolean2().optional(), + request_uri_parameter_supported: boolean2().optional(), + require_request_uri_registration: boolean2().optional(), + op_policy_uri: SafeUrlSchema.optional(), + op_tos_uri: SafeUrlSchema.optional(), + client_id_metadata_document_supported: boolean2().optional() +}); +var OpenIdProviderDiscoveryMetadataSchema = object2({ + ...OpenIdProviderMetadataSchema.shape, + ...OAuthMetadataSchema.pick({ + code_challenge_methods_supported: true + }).shape +}); +var OAuthTokensSchema = object2({ + access_token: string2(), + id_token: string2().optional(), + // Optional for OAuth 2.1, but necessary in OpenID Connect + token_type: string2(), + expires_in: coerce_exports2.number().optional(), + scope: string2().optional(), + refresh_token: string2().optional() +}).strip(); +var OAuthErrorResponseSchema = object2({ + error: string2(), + error_description: string2().optional(), + error_uri: string2().optional() +}); +var OptionalSafeUrlSchema = SafeUrlSchema.optional().or(literal("").transform(() => void 0)); +var OAuthClientMetadataSchema = object2({ + redirect_uris: array(SafeUrlSchema), + token_endpoint_auth_method: string2().optional(), + grant_types: array(string2()).optional(), + response_types: array(string2()).optional(), + client_name: string2().optional(), + client_uri: SafeUrlSchema.optional(), + logo_uri: OptionalSafeUrlSchema, + scope: string2().optional(), + contacts: array(string2()).optional(), + tos_uri: OptionalSafeUrlSchema, + policy_uri: string2().optional(), + jwks_uri: SafeUrlSchema.optional(), + jwks: any().optional(), + software_id: string2().optional(), + software_version: string2().optional(), + software_statement: string2().optional() +}).strip(); +var OAuthClientInformationSchema = object2({ + client_id: string2(), + client_secret: string2().optional(), + client_id_issued_at: number2().optional(), + client_secret_expires_at: number2().optional() +}).strip(); +var OAuthClientInformationFullSchema = OAuthClientMetadataSchema.merge(OAuthClientInformationSchema); +var OAuthClientRegistrationErrorSchema = object2({ + error: string2(), + error_description: string2().optional() +}).strip(); +var OAuthTokenRevocationRequestSchema = object2({ + token: string2(), + token_type_hint: string2().optional() +}).strip(); + +// node_modules/@modelcontextprotocol/sdk/dist/esm/server/auth/handlers/register.js +var import_node_crypto4 = __toESM(require("node:crypto"), 1); +var import_cors = __toESM(require_lib3(), 1); + +// node_modules/express-rate-limit/dist/index.mjs +var import_node_net = require("node:net"); +var import_ip_address = __toESM(require_ip_address(), 1); +var import_node_net2 = require("node:net"); +var import_node_buffer3 = require("node:buffer"); +var import_node_crypto3 = require("node:crypto"); +var import_node_net3 = require("node:net"); +function ipKeyGenerator(ip, ipv6Subnet = 56) { + if ((0, import_node_net.isIPv6)(ip)) { + const address = new import_ip_address.Address6(ip); + if (address.is4()) return address.to4().correctForm(); + if (ipv6Subnet) { + const subnet = new import_ip_address.Address6(`${ip}/${ipv6Subnet}`); + return `${subnet.startAddress().correctForm()}/${ipv6Subnet}`; + } + } + return ip; +} +var MemoryStore = class { + constructor(validations2) { + this.validations = validations2; + this.previous = /* @__PURE__ */ new Map(); + this.current = /* @__PURE__ */ new Map(); + this.localKeys = true; + } + /** + * Method that initializes the store. + * + * @param options {Options} - The options used to setup the middleware. + */ + init(options) { + this.windowMs = options.windowMs; + this.validations?.windowMs(this.windowMs); + if (this.interval) clearInterval(this.interval); + this.interval = setInterval(() => { + this.clearExpired(); + }, this.windowMs); + this.interval.unref?.(); + } + /** + * Method to fetch a client's hit count and reset time. + * + * @param key {string} - The identifier for a client. + * + * @returns {ClientRateLimitInfo | undefined} - The number of hits and reset time for that client. + * + * @public + */ + async get(key) { + return this.current.get(key) ?? this.previous.get(key); + } + /** + * Method to increment a client's hit counter. + * + * @param key {string} - The identifier for a client. + * + * @returns {ClientRateLimitInfo} - The number of hits and reset time for that client. + * + * @public + */ + async increment(key) { + const client = this.getClient(key); + const now = Date.now(); + if (client.resetTime.getTime() <= now) { + this.resetClient(client, now); + } + client.totalHits++; + return client; + } + /** + * Method to decrement a client's hit counter. + * + * @param key {string} - The identifier for a client. + * + * @public + */ + async decrement(key) { + const client = this.getClient(key); + if (client.totalHits > 0) client.totalHits--; + } + /** + * Method to reset a client's hit counter. + * + * @param key {string} - The identifier for a client. + * + * @public + */ + async resetKey(key) { + this.current.delete(key); + this.previous.delete(key); + } + /** + * Method to reset everyone's hit counter. + * + * @public + */ + async resetAll() { + this.current.clear(); + this.previous.clear(); + } + /** + * Method to stop the timer (if currently running) and prevent any memory + * leaks. + * + * @public + */ + shutdown() { + clearInterval(this.interval); + void this.resetAll(); + } + /** + * Recycles a client by setting its hit count to zero, and reset time to + * `windowMs` milliseconds from now. + * + * NOT to be confused with `#resetKey()`, which removes a client from both the + * `current` and `previous` maps. + * + * @param client {Client} - The client to recycle. + * @param now {number} - The current time, to which the `windowMs` is added to get the `resetTime` for the client. + * + * @return {Client} - The modified client that was passed in, to allow for chaining. + */ + resetClient(client, now = Date.now()) { + client.totalHits = 0; + client.resetTime.setTime(now + this.windowMs); + return client; + } + /** + * Retrieves or creates a client, given a key. Also ensures that the client being + * returned is in the `current` map. + * + * @param key {string} - The key under which the client is (or is to be) stored. + * + * @returns {Client} - The requested client. + */ + getClient(key) { + if (this.current.has(key)) return this.current.get(key); + let client; + if (this.previous.has(key)) { + client = this.previous.get(key); + this.previous.delete(key); + } else { + client = { totalHits: 0, resetTime: /* @__PURE__ */ new Date() }; + this.resetClient(client); + } + this.current.set(key, client); + return client; + } + /** + * Move current clients to previous, create a new map for current. + * + * This function is called every `windowMs`. + */ + clearExpired() { + this.previous = this.current; + this.current = /* @__PURE__ */ new Map(); + } +}; +var ConsoleLogger = { + warn(...args) { + console.warn(...args.reverse()); + }, + error(...args) { + console.error(...args.reverse()); + } +}; +var SUPPORTED_DRAFT_VERSIONS = [ + "draft-6", + "draft-7", + "draft-8" +]; +var getResetSeconds = (windowMs, resetTime) => { + let resetSeconds; + if (resetTime) { + const deltaSeconds = Math.ceil((resetTime.getTime() - Date.now()) / 1e3); + resetSeconds = Math.max(0, deltaSeconds); + } else { + resetSeconds = Math.ceil(windowMs / 1e3); + } + return resetSeconds; +}; +var getPartitionKey = (key) => { + const hash = (0, import_node_crypto3.createHash)("sha256"); + hash.update(key); + const partitionKey = hash.digest("hex").slice(0, 12); + return import_node_buffer3.Buffer.from(partitionKey).toString("base64"); +}; +var setLegacyHeaders = (response, info) => { + if (response.headersSent) return; + response.setHeader("X-RateLimit-Limit", info.limit.toString()); + response.setHeader("X-RateLimit-Remaining", info.remaining.toString()); + if (info.resetTime instanceof Date) { + response.setHeader("Date", (/* @__PURE__ */ new Date()).toUTCString()); + response.setHeader( + "X-RateLimit-Reset", + Math.ceil(info.resetTime.getTime() / 1e3).toString() + ); + } +}; +var setDraft6Headers = (response, info, windowMs) => { + if (response.headersSent) return; + const windowSeconds = Math.ceil(windowMs / 1e3); + const resetSeconds = getResetSeconds(windowMs, info.resetTime); + response.setHeader("RateLimit-Policy", `${info.limit};w=${windowSeconds}`); + response.setHeader("RateLimit-Limit", info.limit.toString()); + response.setHeader("RateLimit-Remaining", info.remaining.toString()); + if (typeof resetSeconds === "number") + response.setHeader("RateLimit-Reset", resetSeconds.toString()); +}; +var setDraft7Headers = (response, info, windowMs) => { + if (response.headersSent) return; + const windowSeconds = Math.ceil(windowMs / 1e3); + const resetSeconds = getResetSeconds(windowMs, info.resetTime); + response.setHeader("RateLimit-Policy", `${info.limit};w=${windowSeconds}`); + response.setHeader( + "RateLimit", + `limit=${info.limit}, remaining=${info.remaining}, reset=${resetSeconds}` + ); +}; +var setDraft8Headers = (response, info, windowMs, name5, key) => { + if (response.headersSent) return; + const windowSeconds = Math.ceil(windowMs / 1e3); + const resetSeconds = getResetSeconds(windowMs, info.resetTime); + const partitionKey = getPartitionKey(key); + const header = `r=${info.remaining}; t=${resetSeconds}`; + const policy = `q=${info.limit}; w=${windowSeconds}; pk=:${partitionKey}:`; + response.append("RateLimit", `"${name5}"; ${header}`); + response.append("RateLimit-Policy", `"${name5}"; ${policy}`); +}; +var setRetryAfterHeader = (response, info, windowMs) => { + if (response.headersSent) return; + const resetSeconds = getResetSeconds(windowMs, info.resetTime); + response.setHeader("Retry-After", resetSeconds.toString()); +}; +var omitUndefinedProperties = (passedOptions) => { + const omittedOptions = {}; + for (const k of Object.keys(passedOptions)) { + const key = k; + if (passedOptions[key] !== void 0) { + omittedOptions[key] = passedOptions[key]; + } + } + return omittedOptions; +}; +var ValidationError = class extends Error { + /** + * The code must be a string, in snake case and all capital, that starts with + * the substring `ERR_ERL_`. + * + * The message must be a string, starting with an uppercase character, + * describing the issue in detail. + */ + constructor(code, message) { + const url2 = `https://express-rate-limit.github.io/${code}/`; + super(`${message} See ${url2} for more information.`); + this.name = this.constructor.name; + this.code = code; + this.help = url2; + } +}; +var ChangeWarning = class extends ValidationError { +}; +var usedStores = /* @__PURE__ */ new Set(); +var singleCountKeys = /* @__PURE__ */ new WeakMap(); +var validations = { + enabled: { + default: true + }, + // Should be EnabledValidations type, but that's a circular reference + disable() { + for (const k of Object.keys(this.enabled)) this.enabled[k] = false; + }, + /** + * Checks whether the IP address is valid, and that it does not have a port + * number in it. + * + * See https://github.com/express-rate-limit/express-rate-limit/wiki/Error-Codes#err_erl_invalid_ip_address. + * + * @param ip {string | undefined} - The IP address provided by Express as request.ip. + * + * @returns {void} + */ + ip(ip) { + if (ip === void 0) { + throw new ValidationError( + "ERR_ERL_UNDEFINED_IP_ADDRESS", + `An undefined 'request.ip' was detected. This might indicate a misconfiguration or the connection being destroyed prematurely.` + ); + } + if (!(0, import_node_net3.isIP)(ip)) { + throw new ValidationError( + "ERR_ERL_INVALID_IP_ADDRESS", + `An invalid 'request.ip' (${ip}) was detected. Consider passing a custom 'keyGenerator' function to the rate limiter.` + ); + } + }, + /** + * Makes sure the trust proxy setting is not set to `true`. + * + * See https://github.com/express-rate-limit/express-rate-limit/wiki/Error-Codes#err_erl_permissive_trust_proxy. + * + * @param request {Request} - The Express request object. + * + * @returns {void} + */ + trustProxy(request) { + if (request.app.get("trust proxy") === true) { + throw new ValidationError( + "ERR_ERL_PERMISSIVE_TRUST_PROXY", + `The Express 'trust proxy' setting is true, which allows anyone to trivially bypass IP-based rate limiting.` + ); + } + }, + /** + * Makes sure the trust proxy setting is set in case the `X-Forwarded-For` + * header is present. + * + * See https://github.com/express-rate-limit/express-rate-limit/wiki/Error-Codes#err_erl_unset_trust_proxy. + * + * @param request {Request} - The Express request object. + * + * @returns {void} + */ + xForwardedForHeader(request) { + if (request.headers["x-forwarded-for"] && request.app.get("trust proxy") === false) { + throw new ValidationError( + "ERR_ERL_UNEXPECTED_X_FORWARDED_FOR", + `The 'X-Forwarded-For' header is set but the Express 'trust proxy' setting is false (default). This could indicate a misconfiguration which would prevent express-rate-limit from accurately identifying users.` + ); + } + }, + /** + * Alert the user if the Forwarded header is set (standardized version of X-Forwarded-For - not supported by express as of version 5.1.0) + * + * @param request {Request} - The Express request object. + * + * @returns {void} + */ + forwardedHeader(request) { + if (request.headers.forwarded && request.ip === request.socket?.remoteAddress) { + throw new ValidationError( + "ERR_ERL_FORWARDED_HEADER", + `The 'Forwarded' header (standardized X-Forwarded-For) is set but currently being ignored. Add a custom keyGenerator to use a value from this header.` + ); + } + }, + /** + * Ensures totalHits value from store is a positive integer. + * + * @param hits {any} - The `totalHits` returned by the store. + */ + positiveHits(hits) { + if (typeof hits !== "number" || hits < 1 || hits !== Math.round(hits)) { + throw new ValidationError( + "ERR_ERL_INVALID_HITS", + `The totalHits value returned from the store must be a positive integer, got ${hits}` + ); + } + }, + /** + * Ensures a single store instance is not used with multiple express-rate-limit instances + */ + unsharedStore(store) { + if (usedStores.has(store)) { + const maybeUniquePrefix = store?.localKeys ? "" : " (with a unique prefix)"; + throw new ValidationError( + "ERR_ERL_STORE_REUSE", + `A Store instance must not be shared across multiple rate limiters. Create a new instance of ${store.constructor.name}${maybeUniquePrefix} for each limiter instead.` + ); + } + usedStores.add(store); + }, + /** + * Ensures a given key is incremented only once per request. + * + * @param request {Request} - The Express request object. + * @param store {Store} - The store class. + * @param key {string} - The key used to store the client's hit count. + * + * @returns {void} + */ + singleCount(request, store, key) { + let storeKeys = singleCountKeys.get(request); + if (!storeKeys) { + storeKeys = /* @__PURE__ */ new Map(); + singleCountKeys.set(request, storeKeys); + } + const storeKey = store.localKeys ? store : store.constructor.name; + let keys = storeKeys.get(storeKey); + if (!keys) { + keys = []; + storeKeys.set(storeKey, keys); + } + const prefixedKey = `${store.prefix ?? ""}${key}`; + if (keys.includes(prefixedKey)) { + throw new ValidationError( + "ERR_ERL_DOUBLE_COUNT", + `The hit count for ${key} was incremented more than once for a single request.` + ); + } + keys.push(prefixedKey); + }, + /** + * Warns the user that the behaviour for `max: 0` / `limit: 0` is + * changing in the next major release. + * + * @param limit {number} - The maximum number of hits per client. + * + * @returns {void} + */ + limit(limit) { + if (limit === 0) { + throw new ChangeWarning( + "WRN_ERL_MAX_ZERO", + "Setting limit or max to 0 disables rate limiting in express-rate-limit v6 and older, but will cause all requests to be blocked in v7" + ); + } + }, + /** + * Warns the user that the `draft_polli_ratelimit_headers` option is deprecated + * and will be removed in the next major release. + * + * @param draft_polli_ratelimit_headers {any | undefined} - The now-deprecated setting that was used to enable standard headers. + * + * @returns {void} + */ + draftPolliHeaders(draft_polli_ratelimit_headers) { + if (draft_polli_ratelimit_headers) { + throw new ChangeWarning( + "WRN_ERL_DEPRECATED_DRAFT_POLLI_HEADERS", + `The draft_polli_ratelimit_headers configuration option is deprecated and has been removed in express-rate-limit v7, please set standardHeaders: 'draft-6' instead.` + ); + } + }, + /** + * Warns the user that the `onLimitReached` option is deprecated and + * will be removed in the next major release. + * + * @param onLimitReached {any | undefined} - The maximum number of hits per client. + * + * @returns {void} + */ + onLimitReached(onLimitReached) { + if (onLimitReached) { + throw new ChangeWarning( + "WRN_ERL_DEPRECATED_ON_LIMIT_REACHED", + "The onLimitReached configuration option is deprecated and has been removed in express-rate-limit v7." + ); + } + }, + /** + * Warns the user when an invalid/unsupported version of the draft spec is passed. + * + * @param version {any | undefined} - The version passed by the user. + * + * @returns {void} + */ + headersDraftVersion(version8) { + if (typeof version8 !== "string" || // @ts-expect-error This is fine. If version is not in the array, it will just return false. + !SUPPORTED_DRAFT_VERSIONS.includes(version8)) { + const versionString = SUPPORTED_DRAFT_VERSIONS.join(", "); + throw new ValidationError( + "ERR_ERL_HEADERS_UNSUPPORTED_DRAFT_VERSION", + `standardHeaders: only the following versions of the IETF draft specification are supported: ${versionString}.` + ); + } + }, + /** + * Warns the user when the selected headers option requires a reset time but + * the store does not provide one. + * + * @param resetTime {Date | undefined} - The timestamp when the client's hit count will be reset. + * + * @returns {void} + */ + headersResetTime(resetTime) { + if (!resetTime) { + throw new ValidationError( + "ERR_ERL_HEADERS_NO_RESET", + `standardHeaders: 'draft-7' requires a 'resetTime', but the store did not provide one. The 'windowMs' value will be used instead, which may cause clients to wait longer than necessary.` + ); + } + }, + knownOptions(passedOptions) { + if (!passedOptions) return; + const optionsMap = { + windowMs: true, + limit: true, + message: true, + statusCode: true, + legacyHeaders: true, + standardHeaders: true, + identifier: true, + requestPropertyName: true, + skipFailedRequests: true, + skipSuccessfulRequests: true, + keyGenerator: true, + ipv6Subnet: true, + handler: true, + skip: true, + requestWasSuccessful: true, + store: true, + validate: true, + headers: true, + max: true, + passOnStoreError: true, + logger: true + }; + const validOptions = Object.keys(optionsMap).concat( + "draft_polli_ratelimit_headers", + // not a valid option anymore, but we have a more specific check for this one, so don't warn for it here + // from express-slow-down - https://github.com/express-rate-limit/express-slow-down/blob/main/source/types.ts#L65 + "delayAfter", + "delayMs", + "maxDelayMs" + ); + for (const key of Object.keys(passedOptions)) { + if (!validOptions.includes(key)) { + throw new ValidationError( + "ERR_ERL_UNKNOWN_OPTION", + `Unexpected configuration option: ${key}` + // todo: suggest a valid option with a short levenstein distance? + ); + } + } + }, + /** + * Checks the options.validate setting to ensure that only recognized + * validations are enabled or disabled. + * + * If any unrecognized values are found, an error is logged that + * includes the list of supported validations. + */ + validationsConfig() { + const supportedValidations = Object.keys(this).filter( + (k) => !["enabled", "disable"].includes(k) + ); + supportedValidations.push("default"); + for (const key of Object.keys(this.enabled)) { + if (!supportedValidations.includes(key)) { + throw new ValidationError( + "ERR_ERL_UNKNOWN_VALIDATION", + `options.validate.${key} is not recognized. Supported validate options are: ${supportedValidations.join( + ", " + )}.` + ); + } + } + }, + /** + * Checks to see if the instance was created inside of a request handler, + * which would prevent it from working correctly, with the default memory + * store (or any other store with localKeys.) + */ + creationStack(store) { + const { stack } = new Error( + "express-rate-limit validation check (set options.validate.creationStack=false to disable)" + ); + if (stack?.includes("Layer.handle [as handle_request]") || // express v4 + stack?.includes("Layer.handleRequest")) { + if (!store.localKeys) { + throw new ValidationError( + "ERR_ERL_CREATED_IN_REQUEST_HANDLER", + "express-rate-limit instance should *usually* be created at app initialization, not when responding to a request." + ); + } + throw new ValidationError( + "ERR_ERL_CREATED_IN_REQUEST_HANDLER", + "express-rate-limit instance should be created at app initialization, not when responding to a request." + ); + } + }, + ipv6Subnet(ipv6Subnet) { + if (ipv6Subnet === false) { + return; + } + if (!Number.isInteger(ipv6Subnet) || ipv6Subnet < 32 || ipv6Subnet > 64) { + throw new ValidationError( + "ERR_ERL_IPV6_SUBNET", + `Unexpected ipv6Subnet value: ${ipv6Subnet}. Expected an integer between 32 and 64 (usually 48-64).` + ); + } + }, + ipv6SubnetOrKeyGenerator(options) { + if (options.ipv6Subnet !== void 0 && options.keyGenerator) { + throw new ValidationError( + "ERR_ERL_IPV6SUBNET_OR_KEYGENERATOR", + `Incompatible options: the 'ipv6Subnet' option is ignored when a custom 'keyGenerator' function is also set.` + ); + } + }, + keyGeneratorIpFallback(keyGenerator) { + if (!keyGenerator) { + return; + } + const src = keyGenerator.toString(); + if ((src.includes("req.ip") || src.includes("request.ip")) && !src.includes("ipKeyGenerator")) { + throw new ValidationError( + "ERR_ERL_KEY_GEN_IPV6", + "Custom keyGenerator appears to use request IP without calling the ipKeyGenerator helper function for IPv6 addresses. This could allow IPv6 users to bypass limits." + ); + } + }, + /** + * Checks to see if the window duration is greater than 2^32 - 1. This is only + * called by the default MemoryStore, since it uses Node's setInterval method. + * + * See https://nodejs.org/api/timers.html#setintervalcallback-delay-args. + */ + windowMs(windowMs) { + const SET_TIMEOUT_MAX = 2 ** 31 - 1; + if (typeof windowMs !== "number" || Number.isNaN(windowMs) || windowMs < 1 || windowMs > SET_TIMEOUT_MAX) { + throw new ValidationError( + "ERR_ERL_WINDOW_MS", + `Invalid windowMs value: ${windowMs}${typeof windowMs !== "number" ? ` (${typeof windowMs})` : ""}, must be a number between 1 and ${SET_TIMEOUT_MAX} when using the default MemoryStore` + ); + } + } +}; +function validateLogger(logger31) { + if (typeof logger31 !== "object" || typeof logger31.error !== "function" || typeof logger31.warn !== "function") { + throw new TypeError( + "Provided logger does not implement the Logger interface" + ); + } +} +var getValidations = (_enabled, logger31) => { + validateLogger(logger31); + let enabled2; + if (typeof _enabled === "boolean") { + enabled2 = { + default: _enabled + }; + } else { + enabled2 = { + default: true, + ..._enabled + }; + } + const wrappedValidations = { enabled: enabled2 }; + for (const [name5, validation] of Object.entries(validations)) { + if (typeof validation === "function") + wrappedValidations[name5] = (...args) => { + if (!(enabled2[name5] ?? enabled2.default)) { + return; + } + try { + ; + validation.apply( + wrappedValidations, + args + ); + } catch (error2) { + if (error2 instanceof ChangeWarning) logger31.warn(error2); + else logger31.error(error2); + } + }; + } + return wrappedValidations; +}; +var isLegacyStore = (store) => ( + // Check that `incr` exists but `increment` does not - store authors might want + // to keep both around for backwards compatibility. + typeof store.incr === "function" && typeof store.increment !== "function" +); +var promisifyStore = (passedStore) => { + if (!isLegacyStore(passedStore)) { + return passedStore; + } + const legacyStore = passedStore; + class PromisifiedStore { + async increment(key) { + return new Promise((resolve, reject) => { + legacyStore.incr( + key, + (error2, totalHits, resetTime) => { + if (error2) reject(error2); + resolve({ totalHits, resetTime }); + } + ); + }); + } + async decrement(key) { + return legacyStore.decrement(key); + } + async resetKey(key) { + return legacyStore.resetKey(key); + } + /* istanbul ignore next */ + async resetAll() { + if (typeof legacyStore.resetAll === "function") + return legacyStore.resetAll(); + } + } + return new PromisifiedStore(); +}; +var getOptionsFromConfig = (config2) => { + const { validations: validations2, ...directlyPassableEntries } = config2; + return { + ...directlyPassableEntries, + validate: validations2.enabled + }; +}; +var parseOptions = (passedOptions) => { + const notUndefinedOptions = omitUndefinedProperties(passedOptions); + const logger31 = passedOptions.logger ?? ConsoleLogger; + const validations2 = getValidations( + notUndefinedOptions?.validate ?? true, + logger31 + ); + validations2.validationsConfig(); + validations2.knownOptions(passedOptions); + validations2.draftPolliHeaders( + // @ts-expect-error see the note above. + notUndefinedOptions.draft_polli_ratelimit_headers + ); + validations2.onLimitReached(notUndefinedOptions.onLimitReached); + if (notUndefinedOptions.ipv6Subnet !== void 0 && typeof notUndefinedOptions.ipv6Subnet !== "function") { + validations2.ipv6Subnet(notUndefinedOptions.ipv6Subnet); + } + validations2.keyGeneratorIpFallback(notUndefinedOptions.keyGenerator); + validations2.ipv6SubnetOrKeyGenerator(notUndefinedOptions); + let standardHeaders = notUndefinedOptions.standardHeaders ?? false; + if (standardHeaders === true) standardHeaders = "draft-6"; + const config2 = { + windowMs: 60 * 1e3, + limit: passedOptions.max ?? 5, + // `max` is deprecated, but support it anyways. + message: "Too many requests, please try again later.", + statusCode: 429, + legacyHeaders: passedOptions.headers ?? true, + identifier(request, _response) { + let duration3 = ""; + const property = config2.requestPropertyName; + const { limit } = request[property]; + const seconds = config2.windowMs / 1e3; + const minutes = config2.windowMs / (1e3 * 60); + const hours = config2.windowMs / (1e3 * 60 * 60); + const days = config2.windowMs / (1e3 * 60 * 60 * 24); + if (seconds < 60) duration3 = `${seconds}sec`; + else if (minutes < 60) duration3 = `${minutes}min`; + else if (hours < 24) duration3 = `${hours}hr${hours > 1 ? "s" : ""}`; + else duration3 = `${days}day${days > 1 ? "s" : ""}`; + return `${limit}-in-${duration3}`; + }, + requestPropertyName: "rateLimit", + skipFailedRequests: false, + skipSuccessfulRequests: false, + requestWasSuccessful: (_request, response) => response.statusCode < 400, + skip: (_request, _response) => false, + async keyGenerator(request, response) { + validations2.ip(request.ip); + validations2.trustProxy(request); + validations2.xForwardedForHeader(request); + validations2.forwardedHeader(request); + const ip = request.ip; + let subnet = 56; + if ((0, import_node_net2.isIPv6)(ip)) { + subnet = typeof config2.ipv6Subnet === "function" ? await config2.ipv6Subnet(request, response) : config2.ipv6Subnet; + if (typeof config2.ipv6Subnet === "function") + validations2.ipv6Subnet(subnet); + } + return ipKeyGenerator(ip, subnet); + }, + ipv6Subnet: 56, + async handler(request, response, _next, _optionsUsed) { + response.status(config2.statusCode); + const message = typeof config2.message === "function" ? await config2.message( + request, + response + ) : config2.message; + if (!response.writableEnded) response.send(message); + }, + passOnStoreError: false, + // Allow the default options to be overridden by the passed options. + ...notUndefinedOptions, + // `standardHeaders` is resolved into a draft version above, use that. + standardHeaders, + // Note that this field is declared after the user's options are spread in, + // so that this field doesn't get overridden with an un-promisified store! + store: promisifyStore( + notUndefinedOptions.store ?? new MemoryStore(validations2) + ), + // Print an error to the console if a few known misconfigurations are detected. + validations: validations2, + logger: logger31 + }; + if (typeof config2.store.increment !== "function" || typeof config2.store.decrement !== "function" || typeof config2.store.resetKey !== "function" || config2.store.resetAll !== void 0 && typeof config2.store.resetAll !== "function" || config2.store.init !== void 0 && typeof config2.store.init !== "function") { + throw new TypeError( + "An invalid store was passed. Please ensure that the store is a class that implements the `Store` interface." + ); + } + return config2; +}; +var handleAsyncErrors = (fn) => async (request, response, next) => { + try { + await Promise.resolve(fn(request, response, next)).catch(next); + } catch (error2) { + next(error2); + } +}; +var rateLimit = (passedOptions) => { + const config2 = parseOptions(passedOptions ?? {}); + const options = getOptionsFromConfig(config2); + config2.validations.creationStack(config2.store); + config2.validations.unsharedStore(config2.store); + if (typeof config2.store.init === "function") config2.store.init(options); + const middleware = handleAsyncErrors( + async (request, response, next) => { + const closePromise = config2.skipFailedRequests && new Promise((resolve) => response.once("close", resolve)); + const finishPromise = (config2.skipFailedRequests || config2.skipSuccessfulRequests) && new Promise((resolve) => response.once("finish", resolve)); + const errorPromise = config2.skipFailedRequests && new Promise((resolve) => response.once("error", resolve)); + const skip = await config2.skip(request, response); + if (skip) { + next(); + return; + } + const augmentedRequest = request; + const key = await config2.keyGenerator(request, response); + let totalHits = 0; + let resetTime; + try { + const incrementResult = await config2.store.increment(key); + totalHits = incrementResult.totalHits; + resetTime = incrementResult.resetTime; + } catch (error2) { + if (config2.passOnStoreError) { + config2.logger.error( + error2, + "express-rate-limit: error from store, allowing request without rate-limiting." + ); + next(); + return; + } + throw error2; + } + config2.validations.positiveHits(totalHits); + config2.validations.singleCount(request, config2.store, key); + const retrieveLimit = typeof config2.limit === "function" ? config2.limit(request, response) : config2.limit; + const limit = await retrieveLimit; + config2.validations.limit(limit); + const info = { + limit, + used: totalHits, + remaining: Math.max(limit - totalHits, 0), + resetTime, + key + }; + Object.defineProperty(info, "current", { + configurable: false, + enumerable: false, + value: totalHits + }); + augmentedRequest[config2.requestPropertyName] = info; + if (config2.legacyHeaders && !response.headersSent) { + setLegacyHeaders(response, info); + } + if (config2.standardHeaders && !response.headersSent) { + switch (config2.standardHeaders) { + case "draft-6": { + setDraft6Headers(response, info, config2.windowMs); + break; + } + case "draft-7": { + config2.validations.headersResetTime(info.resetTime); + setDraft7Headers(response, info, config2.windowMs); + break; + } + case "draft-8": { + const retrieveName = typeof config2.identifier === "function" ? config2.identifier(request, response) : config2.identifier; + const name5 = await retrieveName; + config2.validations.headersResetTime(info.resetTime); + setDraft8Headers(response, info, config2.windowMs, name5, key); + break; + } + default: { + config2.validations.headersDraftVersion(config2.standardHeaders); + break; + } + } + } + if (config2.skipFailedRequests || config2.skipSuccessfulRequests) { + let decremented = false; + const decrementKey = async () => { + if (!decremented) { + await config2.store.decrement(key); + decremented = true; + } + }; + if (config2.skipFailedRequests) { + if (finishPromise) { + void finishPromise.then(async () => { + if (!await config2.requestWasSuccessful(request, response)) + await decrementKey(); + }); + } + if (closePromise) { + void closePromise.then(async () => { + if (!response.writableEnded) await decrementKey(); + }); + } + if (errorPromise) { + void errorPromise.then(async () => { + await decrementKey(); + }); + } + } + if (config2.skipSuccessfulRequests) { + if (finishPromise) { + void finishPromise.then(async () => { + if (await config2.requestWasSuccessful(request, response)) + await decrementKey(); + }); + } + } + } + config2.validations.disable(); + if (totalHits > limit) { + if (config2.legacyHeaders || config2.standardHeaders) { + setRetryAfterHeader(response, info, config2.windowMs); + } + config2.handler(request, response, next, options); + return; + } + next(); + } + ); + const getThrowFn = () => { + throw new Error("The current store does not support the get/getKey method"); + }; + middleware.resetKey = config2.store.resetKey.bind(config2.store); + middleware.getKey = typeof config2.store.get === "function" ? config2.store.get.bind(config2.store) : getThrowFn; + return middleware; +}; +var rate_limit_default = rateLimit; + +// node_modules/@modelcontextprotocol/sdk/dist/esm/server/auth/errors.js +var OAuthError = class extends Error { + constructor(message, errorUri) { + super(message); + this.errorUri = errorUri; + this.name = this.constructor.name; + } + /** + * Converts the error to a standard OAuth error response object + */ + toResponseObject() { + const response = { + error: this.errorCode, + error_description: this.message + }; + if (this.errorUri) { + response.error_uri = this.errorUri; + } + return response; + } + get errorCode() { + return this.constructor.errorCode; + } +}; +var InvalidRequestError = class extends OAuthError { +}; +InvalidRequestError.errorCode = "invalid_request"; +var InvalidClientError = class extends OAuthError { +}; +InvalidClientError.errorCode = "invalid_client"; +var InvalidGrantError = class extends OAuthError { +}; +InvalidGrantError.errorCode = "invalid_grant"; +var UnauthorizedClientError = class extends OAuthError { +}; +UnauthorizedClientError.errorCode = "unauthorized_client"; +var UnsupportedGrantTypeError = class extends OAuthError { +}; +UnsupportedGrantTypeError.errorCode = "unsupported_grant_type"; +var InvalidScopeError = class extends OAuthError { +}; +InvalidScopeError.errorCode = "invalid_scope"; +var AccessDeniedError = class extends OAuthError { +}; +AccessDeniedError.errorCode = "access_denied"; +var ServerError3 = class extends OAuthError { +}; +ServerError3.errorCode = "server_error"; +var TemporarilyUnavailableError = class extends OAuthError { +}; +TemporarilyUnavailableError.errorCode = "temporarily_unavailable"; +var UnsupportedResponseTypeError = class extends OAuthError { +}; +UnsupportedResponseTypeError.errorCode = "unsupported_response_type"; +var UnsupportedTokenTypeError = class extends OAuthError { +}; +UnsupportedTokenTypeError.errorCode = "unsupported_token_type"; +var InvalidTokenError = class extends OAuthError { +}; +InvalidTokenError.errorCode = "invalid_token"; +var MethodNotAllowedError = class extends OAuthError { +}; +MethodNotAllowedError.errorCode = "method_not_allowed"; +var TooManyRequestsError = class extends OAuthError { +}; +TooManyRequestsError.errorCode = "too_many_requests"; +var InvalidClientMetadataError = class extends OAuthError { +}; +InvalidClientMetadataError.errorCode = "invalid_client_metadata"; +var InsufficientScopeError = class extends OAuthError { +}; +InsufficientScopeError.errorCode = "insufficient_scope"; +var InvalidTargetError = class extends OAuthError { +}; +InvalidTargetError.errorCode = "invalid_target"; +var OAUTH_ERRORS = { + [InvalidRequestError.errorCode]: InvalidRequestError, + [InvalidClientError.errorCode]: InvalidClientError, + [InvalidGrantError.errorCode]: InvalidGrantError, + [UnauthorizedClientError.errorCode]: UnauthorizedClientError, + [UnsupportedGrantTypeError.errorCode]: UnsupportedGrantTypeError, + [InvalidScopeError.errorCode]: InvalidScopeError, + [AccessDeniedError.errorCode]: AccessDeniedError, + [ServerError3.errorCode]: ServerError3, + [TemporarilyUnavailableError.errorCode]: TemporarilyUnavailableError, + [UnsupportedResponseTypeError.errorCode]: UnsupportedResponseTypeError, + [UnsupportedTokenTypeError.errorCode]: UnsupportedTokenTypeError, + [InvalidTokenError.errorCode]: InvalidTokenError, + [MethodNotAllowedError.errorCode]: MethodNotAllowedError, + [TooManyRequestsError.errorCode]: TooManyRequestsError, + [InvalidClientMetadataError.errorCode]: InvalidClientMetadataError, + [InsufficientScopeError.errorCode]: InsufficientScopeError, + [InvalidTargetError.errorCode]: InvalidTargetError +}; + +// node_modules/@modelcontextprotocol/sdk/dist/esm/server/auth/middleware/allowedMethods.js +function allowedMethods(allowedMethods2) { + return (req, res, next) => { + if (allowedMethods2.includes(req.method)) { + next(); + return; + } + const error2 = new MethodNotAllowedError(`The method ${req.method} is not allowed for this endpoint`); + res.status(405).set("Allow", allowedMethods2.join(", ")).json(error2.toResponseObject()); + }; +} + +// node_modules/@modelcontextprotocol/sdk/dist/esm/server/auth/handlers/register.js +var DEFAULT_CLIENT_SECRET_EXPIRY_SECONDS = 30 * 24 * 60 * 60; +function clientRegistrationHandler({ clientsStore, clientSecretExpirySeconds = DEFAULT_CLIENT_SECRET_EXPIRY_SECONDS, rateLimit: rateLimitConfig, clientIdGeneration = true }) { + if (!clientsStore.registerClient) { + throw new Error("Client registration store does not support registering clients"); + } + const router = import_express.default.Router(); + router.use((0, import_cors.default)()); + router.use(allowedMethods(["POST"])); + router.use(import_express.default.json()); + if (rateLimitConfig !== false) { + router.use(rate_limit_default({ + windowMs: 60 * 60 * 1e3, + // 1 hour + max: 20, + // 20 requests per hour - stricter as registration is sensitive + standardHeaders: true, + legacyHeaders: false, + message: new TooManyRequestsError("You have exceeded the rate limit for client registration requests").toResponseObject(), + ...rateLimitConfig + })); + } + router.post("/", async (req, res) => { + res.setHeader("Cache-Control", "no-store"); + try { + const parseResult = OAuthClientMetadataSchema.safeParse(req.body); + if (!parseResult.success) { + throw new InvalidClientMetadataError(parseResult.error.message); + } + const clientMetadata = parseResult.data; + const isPublicClient = clientMetadata.token_endpoint_auth_method === "none"; + const clientSecret = isPublicClient ? void 0 : import_node_crypto4.default.randomBytes(32).toString("hex"); + const clientIdIssuedAt = Math.floor(Date.now() / 1e3); + const clientsDoExpire = clientSecretExpirySeconds > 0; + const secretExpiryTime = clientsDoExpire ? clientIdIssuedAt + clientSecretExpirySeconds : 0; + const clientSecretExpiresAt = isPublicClient ? void 0 : secretExpiryTime; + let clientInfo = { + ...clientMetadata, + client_secret: clientSecret, + client_secret_expires_at: clientSecretExpiresAt + }; + if (clientIdGeneration) { + clientInfo.client_id = import_node_crypto4.default.randomUUID(); + clientInfo.client_id_issued_at = clientIdIssuedAt; + } + clientInfo = await clientsStore.registerClient(clientInfo); + res.status(201).json(clientInfo); + } catch (error2) { + if (error2 instanceof OAuthError) { + const status = error2 instanceof ServerError3 ? 500 : 400; + res.status(status).json(error2.toResponseObject()); + } else { + const serverError = new ServerError3("Internal Server Error"); + res.status(500).json(serverError.toResponseObject()); + } + } + }); + return router; +} + +// node_modules/@modelcontextprotocol/sdk/dist/esm/server/auth/handlers/token.js +var import_express2 = __toESM(require_express2(), 1); +var import_cors2 = __toESM(require_lib3(), 1); + +// node_modules/pkce-challenge/dist/index.node.js +var crypto9; +crypto9 = globalThis.crypto?.webcrypto ?? // Node.js [18-16] REPL +globalThis.crypto ?? // Node.js >18 +import("node:crypto").then((m) => m.webcrypto); +async function generateChallenge(code_verifier) { + const buffer = await (await crypto9).subtle.digest("SHA-256", new TextEncoder().encode(code_verifier)); + return btoa(String.fromCharCode(...new Uint8Array(buffer))).replace(/\//g, "_").replace(/\+/g, "-").replace(/=/g, ""); +} +async function verifyChallenge(code_verifier, expectedChallenge) { + const actualChallenge = await generateChallenge(code_verifier); + return actualChallenge === expectedChallenge; +} + +// node_modules/@modelcontextprotocol/sdk/dist/esm/server/auth/middleware/clientAuth.js +var ClientAuthenticatedRequestSchema = object2({ + client_id: string2(), + client_secret: string2().optional() +}); +function authenticateClient({ clientsStore }) { + return async (req, res, next) => { + try { + const result = ClientAuthenticatedRequestSchema.safeParse(req.body); + if (!result.success) { + throw new InvalidRequestError(String(result.error)); + } + const { client_id, client_secret } = result.data; + const client = await clientsStore.getClient(client_id); + if (!client) { + throw new InvalidClientError("Invalid client_id"); + } + if (client.client_secret) { + if (!client_secret) { + throw new InvalidClientError("Client secret is required"); + } + if (client.client_secret !== client_secret) { + throw new InvalidClientError("Invalid client_secret"); + } + if (client.client_secret_expires_at && client.client_secret_expires_at < Math.floor(Date.now() / 1e3)) { + throw new InvalidClientError("Client secret has expired"); + } + } + req.client = client; + next(); + } catch (error2) { + if (error2 instanceof OAuthError) { + const status = error2 instanceof ServerError3 ? 500 : 400; + res.status(status).json(error2.toResponseObject()); + } else { + const serverError = new ServerError3("Internal Server Error"); + res.status(500).json(serverError.toResponseObject()); + } + } + }; +} + +// node_modules/@modelcontextprotocol/sdk/dist/esm/server/auth/handlers/token.js +var TokenRequestSchema = object2({ + grant_type: string2() +}); +var AuthorizationCodeGrantSchema = object2({ + code: string2(), + code_verifier: string2(), + redirect_uri: string2().optional(), + resource: string2().url().optional() +}); +var RefreshTokenGrantSchema = object2({ + refresh_token: string2(), + scope: string2().optional(), + resource: string2().url().optional() +}); +function tokenHandler({ provider, rateLimit: rateLimitConfig }) { + const router = import_express2.default.Router(); + router.use((0, import_cors2.default)()); + router.use(allowedMethods(["POST"])); + router.use(import_express2.default.urlencoded({ extended: false })); + if (rateLimitConfig !== false) { + router.use(rate_limit_default({ + windowMs: 15 * 60 * 1e3, + // 15 minutes + max: 50, + // 50 requests per windowMs + standardHeaders: true, + legacyHeaders: false, + message: new TooManyRequestsError("You have exceeded the rate limit for token requests").toResponseObject(), + ...rateLimitConfig + })); + } + router.use(authenticateClient({ clientsStore: provider.clientsStore })); + router.post("/", async (req, res) => { + res.setHeader("Cache-Control", "no-store"); + try { + const parseResult = TokenRequestSchema.safeParse(req.body); + if (!parseResult.success) { + throw new InvalidRequestError(parseResult.error.message); + } + const { grant_type } = parseResult.data; + const client = req.client; + if (!client) { + throw new ServerError3("Internal Server Error"); + } + switch (grant_type) { + case "authorization_code": { + const parseResult2 = AuthorizationCodeGrantSchema.safeParse(req.body); + if (!parseResult2.success) { + throw new InvalidRequestError(parseResult2.error.message); + } + const { code, code_verifier, redirect_uri, resource } = parseResult2.data; + const skipLocalPkceValidation = provider.skipLocalPkceValidation; + if (!skipLocalPkceValidation) { + const codeChallenge = await provider.challengeForAuthorizationCode(client, code); + if (!await verifyChallenge(code_verifier, codeChallenge)) { + throw new InvalidGrantError("code_verifier does not match the challenge"); + } + } + const tokens = await provider.exchangeAuthorizationCode(client, code, skipLocalPkceValidation ? code_verifier : void 0, redirect_uri, resource ? new URL(resource) : void 0); + res.status(200).json(tokens); + break; + } + case "refresh_token": { + const parseResult2 = RefreshTokenGrantSchema.safeParse(req.body); + if (!parseResult2.success) { + throw new InvalidRequestError(parseResult2.error.message); + } + const { refresh_token, scope, resource } = parseResult2.data; + const scopes = scope?.split(" "); + const tokens = await provider.exchangeRefreshToken(client, refresh_token, scopes, resource ? new URL(resource) : void 0); + res.status(200).json(tokens); + break; + } + // Additional auth methods will not be added on the server side of the SDK. + case "client_credentials": + default: + throw new UnsupportedGrantTypeError("The grant type is not supported by this authorization server."); + } + } catch (error2) { + if (error2 instanceof OAuthError) { + const status = error2 instanceof ServerError3 ? 500 : 400; + res.status(status).json(error2.toResponseObject()); + } else { + const serverError = new ServerError3("Internal Server Error"); + res.status(500).json(serverError.toResponseObject()); + } + } + }); + return router; +} + +// node_modules/@modelcontextprotocol/sdk/dist/esm/server/auth/handlers/authorize.js +var import_express3 = __toESM(require_express2(), 1); +var LOOPBACK_HOSTS = /* @__PURE__ */ new Set(["localhost", "127.0.0.1", "[::1]"]); +function redirectUriMatches(requested, registered) { + if (requested === registered) { + return true; + } + let req, reg; + try { + req = new URL(requested); + reg = new URL(registered); + } catch { + return false; + } + if (!LOOPBACK_HOSTS.has(req.hostname) || !LOOPBACK_HOSTS.has(reg.hostname)) { + return false; + } + return req.protocol === reg.protocol && req.hostname === reg.hostname && req.pathname === reg.pathname && req.search === reg.search; +} +var ClientAuthorizationParamsSchema = object2({ + client_id: string2(), + redirect_uri: string2().optional().refine((value) => value === void 0 || URL.canParse(value), { message: "redirect_uri must be a valid URL" }) +}); +var RequestAuthorizationParamsSchema = object2({ + response_type: literal("code"), + code_challenge: string2(), + code_challenge_method: literal("S256"), + scope: string2().optional(), + state: string2().optional(), + resource: string2().url().optional() +}); +function authorizationHandler({ provider, rateLimit: rateLimitConfig }) { + const router = import_express3.default.Router(); + router.use(allowedMethods(["GET", "POST"])); + router.use(import_express3.default.urlencoded({ extended: false })); + if (rateLimitConfig !== false) { + router.use(rate_limit_default({ + windowMs: 15 * 60 * 1e3, + // 15 minutes + max: 100, + // 100 requests per windowMs + standardHeaders: true, + legacyHeaders: false, + message: new TooManyRequestsError("You have exceeded the rate limit for authorization requests").toResponseObject(), + ...rateLimitConfig + })); + } + router.all("/", async (req, res) => { + res.setHeader("Cache-Control", "no-store"); + let client_id, redirect_uri, client; + try { + const result = ClientAuthorizationParamsSchema.safeParse(req.method === "POST" ? req.body : req.query); + if (!result.success) { + throw new InvalidRequestError(result.error.message); + } + client_id = result.data.client_id; + redirect_uri = result.data.redirect_uri; + client = await provider.clientsStore.getClient(client_id); + if (!client) { + throw new InvalidClientError("Invalid client_id"); + } + if (redirect_uri !== void 0) { + const requested = redirect_uri; + if (!client.redirect_uris.some((registered) => redirectUriMatches(requested, registered))) { + throw new InvalidRequestError("Unregistered redirect_uri"); + } + } else if (client.redirect_uris.length === 1) { + redirect_uri = client.redirect_uris[0]; + } else { + throw new InvalidRequestError("redirect_uri must be specified when client has multiple registered URIs"); + } + } catch (error2) { + if (error2 instanceof OAuthError) { + const status = error2 instanceof ServerError3 ? 500 : 400; + res.status(status).json(error2.toResponseObject()); + } else { + const serverError = new ServerError3("Internal Server Error"); + res.status(500).json(serverError.toResponseObject()); + } + return; + } + let state3; + try { + const parseResult = RequestAuthorizationParamsSchema.safeParse(req.method === "POST" ? req.body : req.query); + if (!parseResult.success) { + throw new InvalidRequestError(parseResult.error.message); + } + const { scope, code_challenge, resource } = parseResult.data; + state3 = parseResult.data.state; + let requestedScopes = []; + if (scope !== void 0) { + requestedScopes = scope.split(" "); + } + await provider.authorize(client, { + state: state3, + scopes: requestedScopes, + redirectUri: redirect_uri, + codeChallenge: code_challenge, + resource: resource ? new URL(resource) : void 0 + }, res); + } catch (error2) { + if (error2 instanceof OAuthError) { + res.redirect(302, createErrorRedirect(redirect_uri, error2, state3)); + } else { + const serverError = new ServerError3("Internal Server Error"); + res.redirect(302, createErrorRedirect(redirect_uri, serverError, state3)); + } + } + }); + return router; +} +function createErrorRedirect(redirectUri, error2, state3) { + const errorUrl = new URL(redirectUri); + errorUrl.searchParams.set("error", error2.errorCode); + errorUrl.searchParams.set("error_description", error2.message); + if (error2.errorUri) { + errorUrl.searchParams.set("error_uri", error2.errorUri); + } + if (state3) { + errorUrl.searchParams.set("state", state3); + } + return errorUrl.href; +} + +// node_modules/@modelcontextprotocol/sdk/dist/esm/server/auth/handlers/revoke.js +var import_express4 = __toESM(require_express2(), 1); +var import_cors3 = __toESM(require_lib3(), 1); +function revocationHandler({ provider, rateLimit: rateLimitConfig }) { + if (!provider.revokeToken) { + throw new Error("Auth provider does not support revoking tokens"); + } + const router = import_express4.default.Router(); + router.use((0, import_cors3.default)()); + router.use(allowedMethods(["POST"])); + router.use(import_express4.default.urlencoded({ extended: false })); + if (rateLimitConfig !== false) { + router.use(rate_limit_default({ + windowMs: 15 * 60 * 1e3, + // 15 minutes + max: 50, + // 50 requests per windowMs + standardHeaders: true, + legacyHeaders: false, + message: new TooManyRequestsError("You have exceeded the rate limit for token revocation requests").toResponseObject(), + ...rateLimitConfig + })); + } + router.use(authenticateClient({ clientsStore: provider.clientsStore })); + router.post("/", async (req, res) => { + res.setHeader("Cache-Control", "no-store"); + try { + const parseResult = OAuthTokenRevocationRequestSchema.safeParse(req.body); + if (!parseResult.success) { + throw new InvalidRequestError(parseResult.error.message); + } + const client = req.client; + if (!client) { + throw new ServerError3("Internal Server Error"); + } + await provider.revokeToken(client, parseResult.data); + res.status(200).json({}); + } catch (error2) { + if (error2 instanceof OAuthError) { + const status = error2 instanceof ServerError3 ? 500 : 400; + res.status(status).json(error2.toResponseObject()); + } else { + const serverError = new ServerError3("Internal Server Error"); + res.status(500).json(serverError.toResponseObject()); + } + } + }); + return router; +} + +// node_modules/@modelcontextprotocol/sdk/dist/esm/server/auth/handlers/metadata.js +var import_express5 = __toESM(require_express2(), 1); +var import_cors4 = __toESM(require_lib3(), 1); +function metadataHandler(metadata) { + const router = import_express5.default.Router(); + router.use((0, import_cors4.default)()); + router.use(allowedMethods(["GET", "OPTIONS"])); + router.get("/", (req, res) => { + res.status(200).json(metadata); + }); + return router; +} + +// node_modules/@modelcontextprotocol/sdk/dist/esm/server/auth/router.js +var allowInsecureIssuerUrl = process.env.MCP_DANGEROUSLY_ALLOW_INSECURE_ISSUER_URL === "true" || process.env.MCP_DANGEROUSLY_ALLOW_INSECURE_ISSUER_URL === "1"; +if (allowInsecureIssuerUrl) { + console.warn("MCP_DANGEROUSLY_ALLOW_INSECURE_ISSUER_URL is enabled - HTTP issuer URLs are allowed. Do not use in production."); +} +var checkIssuerUrl = (issuer) => { + if (issuer.protocol !== "https:" && issuer.hostname !== "localhost" && issuer.hostname !== "127.0.0.1" && !allowInsecureIssuerUrl) { + throw new Error("Issuer URL must be HTTPS"); + } + if (issuer.hash) { + throw new Error(`Issuer URL must not have a fragment: ${issuer}`); + } + if (issuer.search) { + throw new Error(`Issuer URL must not have a query string: ${issuer}`); + } +}; +var createOAuthMetadata = (options) => { + const issuer = options.issuerUrl; + const baseUrl = options.baseUrl; + checkIssuerUrl(issuer); + const authorization_endpoint = "/authorize"; + const token_endpoint = "/token"; + const registration_endpoint = options.provider.clientsStore.registerClient ? "/register" : void 0; + const revocation_endpoint = options.provider.revokeToken ? "/revoke" : void 0; + const metadata = { + issuer: issuer.href, + service_documentation: options.serviceDocumentationUrl?.href, + authorization_endpoint: new URL(authorization_endpoint, baseUrl || issuer).href, + response_types_supported: ["code"], + code_challenge_methods_supported: ["S256"], + token_endpoint: new URL(token_endpoint, baseUrl || issuer).href, + token_endpoint_auth_methods_supported: ["client_secret_post", "none"], + grant_types_supported: ["authorization_code", "refresh_token"], + scopes_supported: options.scopesSupported, + revocation_endpoint: revocation_endpoint ? new URL(revocation_endpoint, baseUrl || issuer).href : void 0, + revocation_endpoint_auth_methods_supported: revocation_endpoint ? ["client_secret_post"] : void 0, + registration_endpoint: registration_endpoint ? new URL(registration_endpoint, baseUrl || issuer).href : void 0 + }; + return metadata; +}; +function mcpAuthRouter(options) { + const oauthMetadata = createOAuthMetadata(options); + const router = import_express6.default.Router(); + router.use(new URL(oauthMetadata.authorization_endpoint).pathname, authorizationHandler({ provider: options.provider, ...options.authorizationOptions })); + router.use(new URL(oauthMetadata.token_endpoint).pathname, tokenHandler({ provider: options.provider, ...options.tokenOptions })); + router.use(mcpAuthMetadataRouter({ + oauthMetadata, + // Prefer explicit RS; otherwise fall back to AS baseUrl, then to issuer (back-compat) + resourceServerUrl: options.resourceServerUrl ?? options.baseUrl ?? new URL(oauthMetadata.issuer), + serviceDocumentationUrl: options.serviceDocumentationUrl, + scopesSupported: options.scopesSupported, + resourceName: options.resourceName + })); + if (oauthMetadata.registration_endpoint) { + router.use(new URL(oauthMetadata.registration_endpoint).pathname, clientRegistrationHandler({ + clientsStore: options.provider.clientsStore, + ...options.clientRegistrationOptions + })); + } + if (oauthMetadata.revocation_endpoint) { + router.use(new URL(oauthMetadata.revocation_endpoint).pathname, revocationHandler({ provider: options.provider, ...options.revocationOptions })); + } + return router; +} +function mcpAuthMetadataRouter(options) { + checkIssuerUrl(new URL(options.oauthMetadata.issuer)); + const router = import_express6.default.Router(); + const protectedResourceMetadata = { + resource: options.resourceServerUrl.href, + authorization_servers: [options.oauthMetadata.issuer], + scopes_supported: options.scopesSupported, + resource_name: options.resourceName, + resource_documentation: options.serviceDocumentationUrl?.href + }; + const rsPath = new URL(options.resourceServerUrl.href).pathname; + router.use(`/.well-known/oauth-protected-resource${rsPath === "/" ? "" : rsPath}`, metadataHandler(protectedResourceMetadata)); + router.use("/.well-known/oauth-authorization-server", metadataHandler(options.oauthMetadata)); + return router; +} + +// node_modules/@softeria/ms-365-mcp-server/dist/server.js +var import_express7 = __toESM(require_express2(), 1); + +// node_modules/@softeria/ms-365-mcp-server/dist/auth-tools.js +function registerAuthTools(server, authManager) { + server.tool( + "login", + "Authenticate with Microsoft account", + { + force: external_exports.boolean().default(false).describe("Force a new login even if already logged in") + }, + async ({ force }) => { + try { + if (!force) { + const loginStatus = await authManager.testLogin(); + if (loginStatus.success) { + return { + content: [ + { + type: "text", + text: JSON.stringify({ + status: "Already logged in", + ...loginStatus + }) + } + ] + }; + } + } + if (authManager.getUseInteractiveAuth()) { + await authManager.acquireTokenInteractive(); + const loginResult = await authManager.testLogin(); + return { + content: [ + { + type: "text", + text: JSON.stringify({ + status: "Login successful", + message: "Browser authentication completed successfully.", + ...loginResult + }) + } + ] + }; + } + const text = await new Promise((resolve, reject) => { + authManager.acquireTokenByDeviceCode(resolve).catch(reject); + }); + return { + content: [ + { + type: "text", + text: JSON.stringify({ + error: "device_code_required", + message: text.trim() + }) + } + ] + }; + } catch (error2) { + return { + content: [ + { + type: "text", + text: JSON.stringify({ error: `Authentication failed: ${error2.message}` }) + } + ] + }; + } + } + ); + server.tool("logout", "Log out from Microsoft account", {}, async () => { + try { + await authManager.logout(); + return { + content: [ + { + type: "text", + text: JSON.stringify({ message: "Logged out successfully" }) + } + ] + }; + } catch { + return { + content: [ + { + type: "text", + text: JSON.stringify({ error: "Logout failed" }) + } + ] + }; + } + }); + server.tool("verify-login", "Check current Microsoft authentication status", {}, async () => { + const testResult = await authManager.testLogin(); + return { + content: [ + { + type: "text", + text: JSON.stringify(testResult) + } + ] + }; + }); + server.tool( + "list-accounts", + "List all Microsoft accounts configured in this server. Use this to discover available account emails before making tool calls. Reflects accounts added mid-session via --login.", + {}, + { + title: "list-accounts", + readOnlyHint: true, + openWorldHint: false + }, + async () => { + try { + const accounts = await authManager.listAccounts(); + const selectedAccountId = authManager.getSelectedAccountId(); + const result = accounts.map((account) => ({ + email: account.username || "unknown", + name: account.name, + isDefault: account.homeAccountId === selectedAccountId + })); + return { + content: [ + { + type: "text", + text: JSON.stringify({ + accounts: result, + count: result.length, + tip: "Pass the 'email' value as the 'account' parameter in any tool call to target a specific account." + }) + } + ] + }; + } catch (error2) { + return { + content: [ + { + type: "text", + text: JSON.stringify({ + error: `Failed to list accounts: ${error2.message}` + }) + } + ], + isError: true + }; + } + } + ); + server.tool( + "select-account", + "Select a Microsoft account as the default. Accepts email address (e.g. user@outlook.com) or account ID. Use list-accounts to discover available accounts.", + { + account: external_exports.string().describe("Email address or account ID of the account to select") + }, + async ({ account }) => { + try { + await authManager.selectAccount(account); + return { + content: [ + { + type: "text", + text: JSON.stringify({ message: `Selected account: ${account}` }) + } + ] + }; + } catch (error2) { + return { + content: [ + { + type: "text", + text: JSON.stringify({ + error: `Failed to select account: ${error2.message}` + }) + } + ], + isError: true + }; + } + } + ); + server.tool( + "remove-account", + "Remove a Microsoft account from the cache. Accepts email address (e.g. user@outlook.com) or account ID. Use list-accounts to discover available accounts.", + { + account: external_exports.string().describe("Email address or account ID of the account to remove") + }, + async ({ account }) => { + try { + const success = await authManager.removeAccount(account); + if (success) { + return { + content: [ + { + type: "text", + text: JSON.stringify({ message: `Removed account: ${account}` }) + } + ] + }; + } else { + return { + content: [ + { + type: "text", + text: JSON.stringify({ error: `Failed to remove account from cache: ${account}` }) + } + ], + isError: true + }; + } + } catch (error2) { + return { + content: [ + { + type: "text", + text: JSON.stringify({ + error: `Failed to remove account: ${error2.message}` + }) + } + ], + isError: true + }; + } + } + ); +} + +// node_modules/@softeria/ms-365-mcp-server/dist/generated/hack.js +function makeApi(endpoints3) { + return endpoints3; +} +var Zodios = class { + constructor(baseUrlOrEndpoints, endpoints3, options) { + if (typeof baseUrlOrEndpoints === "string") { + throw new Error("No such hack"); + } + this.endpoints = baseUrlOrEndpoints.map((endpoint) => { + endpoint.parameters = endpoint.parameters || []; + for (const parameter of endpoint.parameters) { + parameter.name = parameter.name.replace(/[$_]+/g, ""); + } + const pathParamRegex = /:([a-zA-Z0-9]+)/g; + const pathParams = []; + let match; + while ((match = pathParamRegex.exec(endpoint.path)) !== null) { + pathParams.push(match[1]); + } + for (const pathParam of pathParams) { + const paramExists = endpoint.parameters.some( + (param) => param.name === pathParam || param.name === pathParam.replace(/[$_]+/g, "") + ); + if (!paramExists) { + const newParam = { + name: pathParam, + type: "Path", + schema: external_exports.string().describe(`Path parameter: ${pathParam}`), + description: `Path parameter: ${pathParam}` + }; + endpoint.parameters.push(newParam); + } + } + return endpoint; + }); + } +}; + +// node_modules/@softeria/ms-365-mcp-server/dist/generated/client.js +var microsoft_graph_chatType = external_exports.enum(["oneOnOne", "group", "meeting", "unknownFutureValue"]); +var microsoft_graph_migrationMode = external_exports.enum(["inProgress", "completed", "unknownFutureValue"]); +var microsoft_graph_teamworkUserIdentityType = external_exports.enum([ + "aadUser", + "onPremiseAadUser", + "anonymousGuest", + "federatedUser", + "personalMicrosoftAccountUser", + "skypeUser", + "phoneUser", + "unknownFutureValue", + "emailUser" +]); +var microsoft_graph_teamworkUserIdentity = external_exports.object({ + displayName: external_exports.string().describe( + "The display name of the identity.For drive items, the display name might not always be available or up to date. For example, if a user changes their display name the API might show the new value in a future response, but the items associated with the user don't show up as changed when using delta." + ).nullish(), + id: external_exports.string().describe( + "Unique identifier for the identity or actor. For example, in the access reviews decisions API, this property might record the id of the principal, that is, the group, user, or application that's subject to review." + ).nullish(), + userIdentityType: microsoft_graph_teamworkUserIdentityType.optional() +}).passthrough(); +var microsoft_graph_teamworkOnlineMeetingInfo = external_exports.object({ + calendarEventId: external_exports.string().describe("The identifier of the calendar event associated with the meeting.").nullish(), + joinWebUrl: external_exports.string().describe("The URL that users click to join or uniquely identify the meeting.").nullish(), + organizer: microsoft_graph_teamworkUserIdentity.optional() +}).passthrough(); +var microsoft_graph_chatViewpoint = external_exports.object({ + isHidden: external_exports.boolean().describe("Indicates whether the chat is hidden for the current user.").nullish(), + lastMessageReadDateTime: external_exports.string().regex( + /^[0-9]{4,}-(0[1-9]|1[012])-(0[1-9]|[12][0-9]|3[01])T([01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9]([.][0-9]{1,12})?(Z|[+-][0-9][0-9]:[0-9][0-9])$/ + ).datetime({ offset: true }).describe( + "Represents the dateTime up until which the current user has read chatMessages in a specific chat." + ).nullish() +}).passthrough(); +var microsoft_graph_teamsAppResourceSpecificPermissionType = external_exports.enum([ + "delegated", + "application", + "unknownFutureValue" +]); +var microsoft_graph_teamsAppResourceSpecificPermission = external_exports.object({ + permissionType: microsoft_graph_teamsAppResourceSpecificPermissionType.optional(), + permissionValue: external_exports.string().describe("The name of the resource-specific permission.").nullish() +}).passthrough(); +var microsoft_graph_teamsAppPermissionSet = external_exports.object({ + resourceSpecificPermissions: external_exports.array(microsoft_graph_teamsAppResourceSpecificPermission).describe("A collection of resource-specific permissions.").optional() +}).passthrough(); +var microsoft_graph_teamsAppDistributionMethod = external_exports.enum([ + "store", + "organization", + "sideloaded", + "unknownFutureValue" +]); +var microsoft_graph_teamsAppAuthorization = external_exports.object({ + clientAppId: external_exports.string().describe("The registration ID of the Microsoft Entra app ID associated with the teamsApp.").nullish(), + requiredPermissionSet: microsoft_graph_teamsAppPermissionSet.optional() +}).passthrough(); +var microsoft_graph_identity = external_exports.object({ + displayName: external_exports.string().describe( + "The display name of the identity.For drive items, the display name might not always be available or up to date. For example, if a user changes their display name the API might show the new value in a future response, but the items associated with the user don't show up as changed when using delta." + ).nullish(), + id: external_exports.string().describe( + "Unique identifier for the identity or actor. For example, in the access reviews decisions API, this property might record the id of the principal, that is, the group, user, or application that's subject to review." + ).nullish() +}).passthrough(); +var microsoft_graph_identitySet = external_exports.object({ + application: microsoft_graph_identity.optional(), + device: microsoft_graph_identity.optional(), + user: microsoft_graph_identity.optional() +}).passthrough(); +var microsoft_graph_teamsAppPublishingState = external_exports.enum([ + "submitted", + "rejected", + "published", + "unknownFutureValue" +]); +var microsoft_graph_teamworkBot = external_exports.object({ id: external_exports.string().describe("The unique identifier for an entity. Read-only.").optional() }).passthrough(); +var microsoft_graph_teamsAppDefinition = external_exports.object({ + id: external_exports.string().describe("The unique identifier for an entity. Read-only.").optional(), + authorization: microsoft_graph_teamsAppAuthorization.optional(), + createdBy: microsoft_graph_identitySet.optional(), + description: external_exports.string().describe("Verbose description of the application.").nullish(), + displayName: external_exports.string().describe("The name of the app provided by the app developer.").nullish(), + lastModifiedDateTime: external_exports.string().regex( + /^[0-9]{4,}-(0[1-9]|1[012])-(0[1-9]|[12][0-9]|3[01])T([01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9]([.][0-9]{1,12})?(Z|[+-][0-9][0-9]:[0-9][0-9])$/ + ).datetime({ offset: true }).nullish(), + publishingState: microsoft_graph_teamsAppPublishingState.optional(), + shortDescription: external_exports.string().describe("Short description of the application.").nullish(), + teamsAppId: external_exports.string().describe("The ID from the Teams app manifest.").nullish(), + version: external_exports.string().describe("The version number of the application.").nullish(), + bot: microsoft_graph_teamworkBot.optional() +}).passthrough(); +var microsoft_graph_teamsApp = external_exports.object({ + id: external_exports.string().describe("The unique identifier for an entity. Read-only.").optional(), + displayName: external_exports.string().describe( + "The name of the catalog app provided by the app developer in the Microsoft Teams zip app package." + ).nullish(), + distributionMethod: microsoft_graph_teamsAppDistributionMethod.optional(), + externalId: external_exports.string().describe( + "The ID of the catalog provided by the app developer in the Microsoft Teams zip app package." + ).nullish(), + appDefinitions: external_exports.array(microsoft_graph_teamsAppDefinition).describe("The details for each version of the app.").optional() +}).passthrough(); +var microsoft_graph_teamsAppInstallation = external_exports.object({ + id: external_exports.string().describe("The unique identifier for an entity. Read-only.").optional(), + consentedPermissionSet: microsoft_graph_teamsAppPermissionSet.optional(), + teamsApp: microsoft_graph_teamsApp.optional(), + teamsAppDefinition: microsoft_graph_teamsAppDefinition.optional() +}).passthrough(); +var microsoft_graph_bodyType = external_exports.enum(["text", "html"]); +var microsoft_graph_itemBody = external_exports.object({ + content: external_exports.string().describe("The content of the item.").nullish(), + contentType: microsoft_graph_bodyType.optional() +}).passthrough(); +var microsoft_graph_eventMessageDetail = external_exports.object({}).passthrough(); +var microsoft_graph_chatMessageFromIdentitySet = external_exports.object({ + application: microsoft_graph_identity.optional(), + device: microsoft_graph_identity.optional(), + user: microsoft_graph_identity.optional() +}).passthrough(); +var microsoft_graph_chatMessageType = external_exports.enum([ + "message", + "chatEvent", + "typing", + "unknownFutureValue", + "systemEventMessage" +]); +var microsoft_graph_chatMessageInfo = external_exports.object({ + id: external_exports.string().describe("The unique identifier for an entity. Read-only.").optional(), + body: microsoft_graph_itemBody.optional(), + createdDateTime: external_exports.string().regex( + /^[0-9]{4,}-(0[1-9]|1[012])-(0[1-9]|[12][0-9]|3[01])T([01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9]([.][0-9]{1,12})?(Z|[+-][0-9][0-9]:[0-9][0-9])$/ + ).datetime({ offset: true }).describe("Date time object representing the time at which message was created.").nullish(), + eventDetail: microsoft_graph_eventMessageDetail.optional(), + from: microsoft_graph_chatMessageFromIdentitySet.optional(), + isDeleted: external_exports.boolean().describe("If set to true, the original message has been deleted.").nullish(), + messageType: microsoft_graph_chatMessageType.optional() +}).passthrough(); +var microsoft_graph_conversationMember = external_exports.object({ + id: external_exports.string().describe("The unique identifier for an entity. Read-only.").optional(), + displayName: external_exports.string().describe("The display name of the user.").nullish(), + roles: external_exports.array(external_exports.string().nullable()).describe( + "The roles for that user. This property contains more qualifiers only when relevant - for example, if the member has owner privileges, the roles property contains owner as one of the values. Similarly, if the member is an in-tenant guest, the roles property contains guest as one of the values. A basic member shouldn't have any values specified in the roles property. An Out-of-tenant external member is assigned the owner role." + ).optional(), + visibleHistoryStartDateTime: external_exports.string().regex( + /^[0-9]{4,}-(0[1-9]|1[012])-(0[1-9]|[12][0-9]|3[01])T([01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9]([.][0-9]{1,12})?(Z|[+-][0-9][0-9]:[0-9][0-9])$/ + ).datetime({ offset: true }).describe( + "The timestamp denoting how far back a conversation's history is shared with the conversation member. This property is settable only for members of a chat." + ).nullish() +}).passthrough(); +var microsoft_graph_chatMessageAttachment = external_exports.object({ + content: external_exports.string().describe( + "The content of the attachment. If the attachment is a rich card, set the property to the rich card object. This property and contentUrl are mutually exclusive." + ).nullish(), + contentType: external_exports.string().describe( + "The media type of the content attachment. The possible values are: reference: The attachment is a link to another file. Populate the contentURL with the link to the object.forwardedMessageReference: The attachment is a reference to a forwarded message. Populate the content with the original message context.Any contentType that is supported by the Bot Framework's Attachment object.application/vnd.microsoft.card.codesnippet: A code snippet. application/vnd.microsoft.card.announcement: An announcement header." + ).nullish(), + contentUrl: external_exports.string().describe("The URL for the content of the attachment.").nullish(), + id: external_exports.string().describe("Read-only. The unique ID of the attachment.").nullish(), + name: external_exports.string().describe("The name of the attachment.").nullish(), + teamsAppId: external_exports.string().describe( + "The ID of the Teams app that is associated with the attachment. The property is used to attribute a Teams message card to the specified app." + ).nullish(), + thumbnailUrl: external_exports.string().describe( + "The URL to a thumbnail image that the channel can use if it supports using an alternative, smaller form of content or contentUrl. For example, if you set contentType to application/word and set contentUrl to the location of the Word document, you might include a thumbnail image that represents the document. The channel could display the thumbnail image instead of the document. When the user selects the image, the channel would open the document." + ).nullish() +}).passthrough(); +var microsoft_graph_channelIdentity = external_exports.object({ + channelId: external_exports.string().describe("The identity of the channel in which the message was posted.").nullish(), + teamId: external_exports.string().describe("The identity of the team in which the message was posted.").nullish() +}).passthrough(); +var microsoft_graph_chatMessageImportance = external_exports.enum([ + "normal", + "high", + "urgent", + "unknownFutureValue" +]); +var microsoft_graph_teamworkConversationIdentityType = external_exports.enum([ + "team", + "channel", + "chat", + "unknownFutureValue" +]); +var microsoft_graph_teamworkConversationIdentity = external_exports.object({ + displayName: external_exports.string().describe( + "The display name of the identity.For drive items, the display name might not always be available or up to date. For example, if a user changes their display name the API might show the new value in a future response, but the items associated with the user don't show up as changed when using delta." + ).nullish(), + id: external_exports.string().describe( + "Unique identifier for the identity or actor. For example, in the access reviews decisions API, this property might record the id of the principal, that is, the group, user, or application that's subject to review." + ).nullish(), + conversationIdentityType: microsoft_graph_teamworkConversationIdentityType.optional() +}).passthrough(); +var microsoft_graph_chatMessageMentionedIdentitySet = external_exports.object({ + application: microsoft_graph_identity.optional(), + device: microsoft_graph_identity.optional(), + user: microsoft_graph_identity.optional(), + conversation: microsoft_graph_teamworkConversationIdentity.optional() +}).passthrough(); +var microsoft_graph_chatMessageMention = external_exports.object({ + id: external_exports.number().gte(-2147483648).lte(2147483647).describe( + "Index of an entity being mentioned in the specified chatMessage. Matches the {index} value in the corresponding tag in the message body." + ).nullish(), + mentioned: microsoft_graph_chatMessageMentionedIdentitySet.optional(), + mentionText: external_exports.string().describe( + "String used to represent the mention. For example, a user's display name, a team name." + ).nullish() +}).passthrough(); +var microsoft_graph_chatMessageActions = external_exports.enum([ + "reactionAdded", + "reactionRemoved", + "actionUndefined", + "unknownFutureValue" +]); +var microsoft_graph_chatMessageReactionIdentitySet = external_exports.object({ + application: microsoft_graph_identity.optional(), + device: microsoft_graph_identity.optional(), + user: microsoft_graph_identity.optional() +}).passthrough(); +var microsoft_graph_chatMessageReaction = external_exports.object({ + createdDateTime: external_exports.string().regex( + /^[0-9]{4,}-(0[1-9]|1[012])-(0[1-9]|[12][0-9]|3[01])T([01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9]([.][0-9]{1,12})?(Z|[+-][0-9][0-9]:[0-9][0-9])$/ + ).datetime({ offset: true }).describe( + "The timestamp type represents date and time information using ISO 8601 format and is always in UTC. For example, midnight UTC on Jan 1, 2014 is 2014-01-01T00:00:00Z." + ).optional(), + displayName: external_exports.string().describe("The name of the reaction.").nullish(), + reactionContentUrl: external_exports.string().describe("The hosted content URL for the custom reaction type.").nullish(), + reactionType: external_exports.string().describe( + "The reaction type. Supported values include Unicode characters, custom, and some backward-compatible reaction types, such as like, angry, sad, laugh, heart, and surprised." + ).optional(), + user: microsoft_graph_chatMessageReactionIdentitySet.optional() +}).passthrough(); +var microsoft_graph_chatMessageHistoryItem = external_exports.object({ + actions: microsoft_graph_chatMessageActions.optional(), + modifiedDateTime: external_exports.string().regex( + /^[0-9]{4,}-(0[1-9]|1[012])-(0[1-9]|[12][0-9]|3[01])T([01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9]([.][0-9]{1,12})?(Z|[+-][0-9][0-9]:[0-9][0-9])$/ + ).datetime({ offset: true }).describe("The date and time when the message was modified.").optional(), + reaction: microsoft_graph_chatMessageReaction.optional() +}).passthrough(); +var microsoft_graph_chatMessagePolicyViolationDlpActionTypes = external_exports.enum([ + "none", + "notifySender", + "blockAccess", + "blockAccessExternal" +]); +var microsoft_graph_chatMessagePolicyViolationPolicyTip = external_exports.object({ + complianceUrl: external_exports.string().describe( + "The URL a user can visit to read about the data loss prevention policies for the organization. (ie, policies about what users shouldn't say in chats)" + ).nullish(), + generalText: external_exports.string().describe("Explanatory text shown to the sender of the message.").nullish(), + matchedConditionDescriptions: external_exports.array(external_exports.string().nullable()).describe( + "The list of improper data in the message that was detected by the data loss prevention app. Each DLP app defines its own conditions, examples include 'Credit Card Number' and 'Social Security Number'." + ).optional() +}).passthrough(); +var microsoft_graph_chatMessagePolicyViolationUserActionTypes = external_exports.enum([ + "none", + "override", + "reportFalsePositive" +]); +var microsoft_graph_chatMessagePolicyViolationVerdictDetailsTypes = external_exports.enum([ + "none", + "allowFalsePositiveOverride", + "allowOverrideWithoutJustification", + "allowOverrideWithJustification" +]); +var microsoft_graph_chatMessagePolicyViolation = external_exports.object({ + dlpAction: microsoft_graph_chatMessagePolicyViolationDlpActionTypes.optional(), + justificationText: external_exports.string().describe( + "Justification text provided by the sender of the message when overriding a policy violation." + ).nullish(), + policyTip: microsoft_graph_chatMessagePolicyViolationPolicyTip.optional(), + userAction: microsoft_graph_chatMessagePolicyViolationUserActionTypes.optional(), + verdictDetails: microsoft_graph_chatMessagePolicyViolationVerdictDetailsTypes.optional() +}).passthrough(); +var microsoft_graph_chatMessageHostedContent = external_exports.object({ + id: external_exports.string().describe("The unique identifier for an entity. Read-only.").optional(), + contentBytes: external_exports.string().describe("Write only. Bytes for the hosted content (such as images).").nullish(), + contentType: external_exports.string().describe("Write only. Content type. such as image/png, image/jpg.").nullish() +}).passthrough(); +var microsoft_graph_chatMessage = external_exports.lazy( + () => external_exports.object({ + id: external_exports.string().describe("The unique identifier for an entity. Read-only.").optional(), + attachments: external_exports.array(microsoft_graph_chatMessageAttachment).describe("References to attached objects like files, tabs, meetings etc.").optional(), + body: microsoft_graph_itemBody.optional(), + channelIdentity: microsoft_graph_channelIdentity.optional(), + chatId: external_exports.string().describe("If the message was sent in a chat, represents the identity of the chat.").nullish(), + createdDateTime: external_exports.string().regex( + /^[0-9]{4,}-(0[1-9]|1[012])-(0[1-9]|[12][0-9]|3[01])T([01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9]([.][0-9]{1,12})?(Z|[+-][0-9][0-9]:[0-9][0-9])$/ + ).datetime({ offset: true }).describe("Timestamp of when the chat message was created.").nullish(), + deletedDateTime: external_exports.string().regex( + /^[0-9]{4,}-(0[1-9]|1[012])-(0[1-9]|[12][0-9]|3[01])T([01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9]([.][0-9]{1,12})?(Z|[+-][0-9][0-9]:[0-9][0-9])$/ + ).datetime({ offset: true }).describe( + "Read only. Timestamp at which the chat message was deleted, or null if not deleted." + ).nullish(), + etag: external_exports.string().describe("Read-only. Version number of the chat message.").nullish(), + eventDetail: microsoft_graph_eventMessageDetail.optional(), + from: microsoft_graph_chatMessageFromIdentitySet.optional(), + importance: microsoft_graph_chatMessageImportance.optional(), + lastEditedDateTime: external_exports.string().regex( + /^[0-9]{4,}-(0[1-9]|1[012])-(0[1-9]|[12][0-9]|3[01])T([01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9]([.][0-9]{1,12})?(Z|[+-][0-9][0-9]:[0-9][0-9])$/ + ).datetime({ offset: true }).describe( + "Read only. Timestamp when edits to the chat message were made. Triggers an 'Edited' flag in the Teams UI. If no edits are made the value is null." + ).nullish(), + lastModifiedDateTime: external_exports.string().regex( + /^[0-9]{4,}-(0[1-9]|1[012])-(0[1-9]|[12][0-9]|3[01])T([01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9]([.][0-9]{1,12})?(Z|[+-][0-9][0-9]:[0-9][0-9])$/ + ).datetime({ offset: true }).describe( + "Read only. Timestamp when the chat message is created (initial setting) or modified, including when a reaction is added or removed." + ).nullish(), + locale: external_exports.string().describe("Locale of the chat message set by the client. Always set to en-us.").optional(), + mentions: external_exports.array(microsoft_graph_chatMessageMention).describe( + "List of entities mentioned in the chat message. Supported entities are: user, bot, team, channel, chat, and tag." + ).optional(), + messageHistory: external_exports.array(microsoft_graph_chatMessageHistoryItem).describe( + "List of activity history of a message item, including modification time and actions, such as reactionAdded, reactionRemoved, or reaction changes, on the message." + ).optional(), + messageType: microsoft_graph_chatMessageType.optional(), + policyViolation: microsoft_graph_chatMessagePolicyViolation.optional(), + reactions: external_exports.array(microsoft_graph_chatMessageReaction).describe("Reactions for this chat message (for example, Like).").optional(), + replyToId: external_exports.string().describe( + "Read-only. ID of the parent chat message or root chat message of the thread. (Only applies to chat messages in channels, not chats.)" + ).nullish(), + subject: external_exports.string().describe("The subject of the chat message, in plaintext.").nullish(), + summary: external_exports.string().describe( + "Summary text of the chat message that could be used for push notifications and summary views or fall back views. Only applies to channel chat messages, not chat messages in a chat." + ).nullish(), + webUrl: external_exports.string().describe("Read-only. Link to the message in Microsoft Teams.").nullish(), + hostedContents: external_exports.array(microsoft_graph_chatMessageHostedContent).describe( + "Content in a message hosted by Microsoft Teams - for example, images or code snippets." + ).optional(), + replies: external_exports.array(microsoft_graph_chatMessage).describe("Replies for a specified message. Supports $expand for channel messages.").optional() + }).passthrough() +); +var microsoft_graph_resourceSpecificPermissionGrant = external_exports.object({ + id: external_exports.string().describe("The unique identifier for an entity. Read-only.").optional(), + deletedDateTime: external_exports.string().regex( + /^[0-9]{4,}-(0[1-9]|1[012])-(0[1-9]|[12][0-9]|3[01])T([01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9]([.][0-9]{1,12})?(Z|[+-][0-9][0-9]:[0-9][0-9])$/ + ).datetime({ offset: true }).describe( + "Date and time when this object was deleted. Always null when the object hasn't been deleted." + ).nullish(), + clientAppId: external_exports.string().describe( + "ID of the service principal of the Microsoft Entra app that has been granted access. Read-only." + ).nullish(), + clientId: external_exports.string().describe("ID of the Microsoft Entra app that has been granted access. Read-only.").nullish(), + permission: external_exports.string().describe("The name of the resource-specific permission. Read-only.").nullish(), + permissionType: external_exports.string().describe( + "The type of permission. The possible values are: Application, Delegated. Read-only." + ).nullish(), + resourceAppId: external_exports.string().describe("ID of the Microsoft Entra app that is hosting the resource. Read-only.").nullish() +}).passthrough(); +var microsoft_graph_pinnedChatMessageInfo = external_exports.object({ + id: external_exports.string().describe("The unique identifier for an entity. Read-only.").optional(), + message: microsoft_graph_chatMessage.optional() +}).passthrough(); +var microsoft_graph_teamsTabConfiguration = external_exports.object({ + contentUrl: external_exports.string().describe("Url used for rendering tab contents in Teams. Required.").nullish(), + entityId: external_exports.string().describe("Identifier for the entity hosted by the tab provider.").nullish(), + removeUrl: external_exports.string().describe("Url called by Teams client when a Tab is removed using the Teams Client.").nullish(), + websiteUrl: external_exports.string().describe("Url for showing tab contents outside of Teams.").nullish() +}).passthrough(); +var microsoft_graph_teamsTab = external_exports.object({ + id: external_exports.string().describe("The unique identifier for an entity. Read-only.").optional(), + configuration: microsoft_graph_teamsTabConfiguration.optional(), + displayName: external_exports.string().describe("Name of the tab.").nullish(), + webUrl: external_exports.string().describe("Deep link URL of the tab instance. Read-only.").nullish(), + teamsApp: microsoft_graph_teamsApp.optional() +}).passthrough(); +var microsoft_graph_chat = external_exports.object({ + id: external_exports.string().describe("The unique identifier for an entity. Read-only.").optional(), + chatType: microsoft_graph_chatType.optional(), + createdDateTime: external_exports.string().regex( + /^[0-9]{4,}-(0[1-9]|1[012])-(0[1-9]|[12][0-9]|3[01])T([01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9]([.][0-9]{1,12})?(Z|[+-][0-9][0-9]:[0-9][0-9])$/ + ).datetime({ offset: true }).describe("Date and time at which the chat was created. Read-only.").nullish(), + isHiddenForAllMembers: external_exports.boolean().describe("Indicates whether the chat is hidden for all its members. Read-only.").nullish(), + lastUpdatedDateTime: external_exports.string().regex( + /^[0-9]{4,}-(0[1-9]|1[012])-(0[1-9]|[12][0-9]|3[01])T([01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9]([.][0-9]{1,12})?(Z|[+-][0-9][0-9]:[0-9][0-9])$/ + ).datetime({ offset: true }).describe( + "Date and time at which the chat was renamed or the list of members was last changed. Read-only." + ).nullish(), + migrationMode: microsoft_graph_migrationMode.optional(), + onlineMeetingInfo: microsoft_graph_teamworkOnlineMeetingInfo.optional(), + originalCreatedDateTime: external_exports.string().regex( + /^[0-9]{4,}-(0[1-9]|1[012])-(0[1-9]|[12][0-9]|3[01])T([01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9]([.][0-9]{1,12})?(Z|[+-][0-9][0-9]:[0-9][0-9])$/ + ).datetime({ offset: true }).nullish(), + tenantId: external_exports.string().describe("The identifier of the tenant in which the chat was created. Read-only.").nullish(), + topic: external_exports.string().describe("(Optional) Subject or topic for the chat. Only available for group chats.").nullish(), + viewpoint: microsoft_graph_chatViewpoint.optional(), + webUrl: external_exports.string().describe( + "The URL for the chat in Microsoft Teams. The URL should be treated as an opaque blob, and not parsed. Read-only." + ).nullish(), + installedApps: external_exports.array(microsoft_graph_teamsAppInstallation).describe("A collection of all the apps in the chat. Nullable.").optional(), + lastMessagePreview: microsoft_graph_chatMessageInfo.optional(), + members: external_exports.array(microsoft_graph_conversationMember).describe("A collection of all the members in the chat. Nullable.").optional(), + messages: external_exports.array(microsoft_graph_chatMessage).describe("A collection of all the messages in the chat. Nullable.").optional(), + permissionGrants: external_exports.array(microsoft_graph_resourceSpecificPermissionGrant).describe("A collection of permissions granted to apps for the chat.").optional(), + pinnedMessages: external_exports.array(microsoft_graph_pinnedChatMessageInfo).describe("A collection of all the pinned messages in the chat. Nullable.").optional(), + tabs: external_exports.array(microsoft_graph_teamsTab).describe("A collection of all the tabs in the chat. Nullable.").optional() +}).passthrough(); +var microsoft_graph_ODataErrors_ErrorDetails = external_exports.object({ code: external_exports.string(), message: external_exports.string(), target: external_exports.string().nullish() }).passthrough(); +var microsoft_graph_ODataErrors_InnerError = external_exports.object({ + "request-id": external_exports.string().describe("Request Id as tracked internally by the service").nullish(), + "client-request-id": external_exports.string().describe("Client request Id as sent by the client application.").nullish(), + date: external_exports.string().regex( + /^[0-9]{4,}-(0[1-9]|1[012])-(0[1-9]|[12][0-9]|3[01])T([01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9]([.][0-9]{1,12})?(Z|[+-][0-9][0-9]:[0-9][0-9])$/ + ).datetime({ offset: true }).describe("Date when the error occured.").nullish() +}).passthrough(); +var microsoft_graph_ODataErrors_MainError = external_exports.object({ + code: external_exports.string(), + message: external_exports.string(), + target: external_exports.string().nullish(), + details: external_exports.array(microsoft_graph_ODataErrors_ErrorDetails).optional(), + innerError: microsoft_graph_ODataErrors_InnerError.optional() +}).passthrough(); +var microsoft_graph_ODataErrors_ODataError = external_exports.object({ error: microsoft_graph_ODataErrors_MainError }).passthrough(); +var microsoft_graph_conversationMemberCollectionResponse = external_exports.object({ + "@odata.count": external_exports.number().int().nullable(), + "@odata.nextLink": external_exports.string().nullable(), + value: external_exports.array(microsoft_graph_conversationMember) +}).partial().passthrough(); +var microsoft_graph_chatMessageCollectionResponse = external_exports.object({ + "@odata.count": external_exports.number().int().nullable(), + "@odata.nextLink": external_exports.string().nullable(), + value: external_exports.array(microsoft_graph_chatMessage) +}).partial().passthrough(); +var microsoft_graph_chatMessageHostedContentCollectionResponse = external_exports.object({ + "@odata.count": external_exports.number().int().nullable(), + "@odata.nextLink": external_exports.string().nullable(), + value: external_exports.array(microsoft_graph_chatMessageHostedContent) +}).partial().passthrough(); +var microsoft_graph_pinnedChatMessageInfoCollectionResponse = external_exports.object({ + "@odata.count": external_exports.number().int().nullable(), + "@odata.nextLink": external_exports.string().nullable(), + value: external_exports.array(microsoft_graph_pinnedChatMessageInfo) +}).partial().passthrough(); +var microsoft_graph_outOfOfficeSettings = external_exports.object({ + isOutOfOffice: external_exports.boolean().describe( + "If true, either of the following is met:The current time falls within the out-of-office window configured in Outlook or Teams.An event marked as 'Show as Out of Office' appears on the user's calendar.Otherwise, false." + ).nullish(), + message: external_exports.string().describe( + "The out-of-office message configured by the user in the Outlook client (Automatic replies) or the Teams client (Schedule out of office)." + ).nullish() +}).passthrough(); +var microsoft_graph_dateTimeTimeZone = external_exports.object({ + dateTime: external_exports.string().describe( + "A single point of time in a combined date and time representation ({date}T{time}; for example, 2017-08-29T04:00:00.0000000)." + ).optional(), + timeZone: external_exports.string().describe( + "Represents a time zone, for example, 'Pacific Standard Time'. See below for more possible values." + ).nullish() +}).passthrough(); +var microsoft_graph_presenceStatusMessage = external_exports.object({ + expiryDateTime: microsoft_graph_dateTimeTimeZone.optional(), + message: microsoft_graph_itemBody.optional(), + publishedDateTime: external_exports.string().regex( + /^[0-9]{4,}-(0[1-9]|1[012])-(0[1-9]|[12][0-9]|3[01])T([01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9]([.][0-9]{1,12})?(Z|[+-][0-9][0-9]:[0-9][0-9])$/ + ).datetime({ offset: true }).describe( + "Time in which the status message was published.Read-only.publishedDateTime isn't available when you request the presence of another user." + ).nullish() +}).passthrough(); +var microsoft_graph_workLocationSource = external_exports.enum([ + "none", + "manual", + "scheduled", + "automatic", + "unknownFutureValue" +]); +var microsoft_graph_workLocationType = external_exports.enum([ + "unspecified", + "office", + "remote", + "timeOff", + "unknownFutureValue" +]); +var microsoft_graph_userWorkLocation = external_exports.object({ + placeId: external_exports.string().describe("Identifier of the place, if applicable.").nullish(), + source: microsoft_graph_workLocationSource.optional(), + workLocationType: microsoft_graph_workLocationType.optional() +}).passthrough(); +var microsoft_graph_presence = external_exports.object({ + id: external_exports.string().describe("The unique identifier for an entity. Read-only.").optional(), + activity: external_exports.string().describe( + "The supplemental information to a user's availability. Possible values are available, away, beRightBack, busy, doNotDisturb, offline, outOfOffice, presenceUnknown." + ).nullish(), + availability: external_exports.string().describe( + "The base presence information for a user. Possible values are available, away, beRightBack, busy, doNotDisturb, focusing, inACall, inAMeeting, offline, presenting, presenceUnknown." + ).nullish(), + outOfOfficeSettings: microsoft_graph_outOfOfficeSettings.optional(), + sequenceNumber: external_exports.string().describe( + "The lexicographically sortable String stamp that represents the version of a presence object." + ).nullish(), + statusMessage: microsoft_graph_presenceStatusMessage.optional(), + workLocation: microsoft_graph_userWorkLocation.optional() +}).passthrough(); +var microsoft_graph_geoCoordinates = external_exports.object({ + altitude: external_exports.number().describe( + "Optional. The altitude (height), in feet, above sea level for the item. Read-only. [Simplified from 3 options]" + ).nullish(), + latitude: external_exports.number().describe( + "Optional. The latitude, in decimal, for the item. Read-only. [Simplified from 3 options]" + ).nullish(), + longitude: external_exports.number().describe( + "Optional. The longitude, in decimal, for the item. Read-only. [Simplified from 3 options]" + ).nullish() +}).passthrough(); +var microsoft_graph_sharepointIds = external_exports.object({ + listId: external_exports.string().describe("The unique identifier (guid) for the item's list in SharePoint.").nullish(), + listItemId: external_exports.string().describe("An integer identifier for the item within the containing list.").nullish(), + listItemUniqueId: external_exports.string().describe( + "The unique identifier (guid) for the item within OneDrive for Business or a SharePoint site." + ).nullish(), + siteId: external_exports.string().describe("The unique identifier (guid) for the item's site collection (SPSite).").nullish(), + siteUrl: external_exports.string().describe("The SharePoint URL for the site that contains the item.").nullish(), + tenantId: external_exports.string().describe("The unique identifier (guid) for the tenancy.").nullish(), + webId: external_exports.string().describe("The unique identifier (guid) for the item's site (SPWeb).").nullish() +}).passthrough(); +var microsoft_graph_itemReference = external_exports.object({ + driveId: external_exports.string().describe( + "Unique identifier of the drive instance that contains the driveItem. Only returned if the item is located in a drive. Read-only." + ).nullish(), + driveType: external_exports.string().describe( + "Identifies the type of drive. Only returned if the item is located in a drive. See drive resource for values." + ).nullish(), + id: external_exports.string().describe( + "Unique identifier of the driveItem in the drive or a listItem in a list. Read-only." + ).nullish(), + name: external_exports.string().describe("The name of the item being referenced. Read-only.").nullish(), + path: external_exports.string().describe("Percent-encoded path that can be used to navigate to the item. Read-only.").nullish(), + shareId: external_exports.string().describe( + "A unique identifier for a shared resource that can be accessed via the Shares API." + ).nullish(), + sharepointIds: microsoft_graph_sharepointIds.optional(), + siteId: external_exports.string().describe( + "For OneDrive for Business and SharePoint, this property represents the ID of the site that contains the parent document library of the driveItem resource or the parent list of the listItem resource. The value is the same as the id property of that site resource. It is an opaque string that consists of three identifiers of the site. For OneDrive, this property is not populated." + ).nullish() +}).passthrough(); +var microsoft_graph_assignedLicense = external_exports.object({ + disabledPlans: external_exports.array( + external_exports.string().regex(/^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/).uuid() + ).describe( + "A collection of the unique identifiers for plans that have been disabled. IDs are available in servicePlans > servicePlanId in the tenant's subscribedSkus or serviceStatus > servicePlanId in the tenant's companySubscription." + ).optional(), + skuId: external_exports.string().regex(/^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/).uuid().describe( + "The unique identifier for the SKU. Corresponds to the skuId from subscribedSkus or companySubscription." + ).nullish() +}).passthrough(); +var microsoft_graph_assignedPlan = external_exports.object({ + assignedDateTime: external_exports.string().regex( + /^[0-9]{4,}-(0[1-9]|1[012])-(0[1-9]|[12][0-9]|3[01])T([01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9]([.][0-9]{1,12})?(Z|[+-][0-9][0-9]:[0-9][0-9])$/ + ).datetime({ offset: true }).describe( + "The date and time at which the plan was assigned. The Timestamp type represents date and time information using ISO 8601 format and is always in UTC time. For example, midnight UTC on Jan 1, 2014 is 2014-01-01T00:00:00Z." + ).nullish(), + capabilityStatus: external_exports.string().describe( + "Condition of the capability assignment. The possible values are Enabled, Warning, Suspended, Deleted, LockedOut. See a detailed description of each value." + ).nullish(), + service: external_exports.string().describe("The name of the service; for example, exchange.").nullish(), + servicePlanId: external_exports.string().regex(/^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/).uuid().describe( + "A GUID that identifies the service plan. For a complete list of GUIDs and their equivalent friendly service names, see Product names and service plan identifiers for licensing." + ).nullish() +}).passthrough(); +var microsoft_graph_authorizationInfo = external_exports.object({ certificateUserIds: external_exports.array(external_exports.string().nullable()).optional() }).passthrough(); +var microsoft_graph_customSecurityAttributeValue = external_exports.object({}).passthrough(); +var microsoft_graph_user = external_exports.object({ + id: external_exports.string().describe("The unique identifier for an entity. Read-only.").optional(), + displayName: external_exports.string().describe( + "The name displayed in the address book for the user. This value is usually the combination of the user's first name, middle initial, and family name. This property is required when a user is created and it can't be cleared during updates. Maximum length is 256 characters. Returned by default. Supports $filter (eq, ne, not , ge, le, in, startsWith, and eq on null values), $orderby, and $search." + ).nullish(), + createdDateTime: external_exports.string().regex( + /^[0-9]{4,}-(0[1-9]|1[012])-(0[1-9]|[12][0-9]|3[01])T([01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9]([.][0-9]{1,12})?(Z|[+-][0-9][0-9]:[0-9][0-9])$/ + ).datetime({ offset: true }).describe( + "The date and time the user was created, in ISO 8601 format and UTC. The value can't be modified and is automatically populated when the entity is created. Nullable. For on-premises users, the value represents when they were first created in Microsoft Entra ID. Property is null for some users created before June 2018 and on-premises users that were synced to Microsoft Entra ID before June 2018. Read-only. Requires $select to retrieve. Supports $filter (eq, ne, not , ge, le, in)." + ).nullish(), + state: external_exports.string().describe( + "The state or province in the user's address. Maximum length is 128 characters. Requires $select to retrieve. Supports $filter (eq, ne, not, ge, le, in, startsWith, and eq on null values)." + ).nullish(), + userPrincipalName: external_exports.string().describe( + "The user principal name (UPN) of the user. The UPN is an Internet-style sign-in name for the user based on the Internet standard RFC 822. By convention, this value should map to the user's email name. The general format is alias@domain, where the domain must be present in the tenant's collection of verified domains. This property is required when a user is created. The verified domains for the tenant can be accessed from the verifiedDomains property of organization.NOTE: This property can't contain accent characters. Only the following characters are allowed A - Z, a - z, 0 - 9, ' . - _ ! # ^ ~. For the complete list of allowed characters, see username policies. Returned by default. Supports $filter (eq, ne, not, ge, le, in, startsWith, endsWith) and $orderby." + ).nullish(), + deletedDateTime: external_exports.string().regex( + /^[0-9]{4,}-(0[1-9]|1[012])-(0[1-9]|[12][0-9]|3[01])T([01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9]([.][0-9]{1,12})?(Z|[+-][0-9][0-9]:[0-9][0-9])$/ + ).datetime({ offset: true }).describe( + "Date and time when this object was deleted. Always null when the object hasn't been deleted." + ).nullish(), + aboutMe: external_exports.string().describe( + "A freeform text entry field for the user to describe themselves. Requires $select to retrieve." + ).nullish(), + accountEnabled: external_exports.boolean().describe( + "true if the account is enabled; otherwise, false. This property is required when a user is created. Requires $select to retrieve. Supports $filter (eq, ne, not, and in)." + ).nullish(), + ageGroup: external_exports.string().describe( + "Sets the age group of the user. Allowed values: null, Minor, NotAdult, and Adult. For more information, see legal age group property definitions. Requires $select to retrieve. Supports $filter (eq, ne, not, and in)." + ).nullish(), + assignedLicenses: external_exports.array(microsoft_graph_assignedLicense).describe( + "The licenses that are assigned to the user, including inherited (group-based) licenses. This property doesn't differentiate between directly assigned and inherited licenses. Use the licenseAssignmentStates property to identify the directly assigned and inherited licenses. Not nullable. Requires $select to retrieve. Supports $filter (eq, not, /$count eq 0, /$count ne 0)." + ).optional(), + assignedPlans: external_exports.array(microsoft_graph_assignedPlan).describe( + "The plans that are assigned to the user. Read-only. Not nullable. Requires $select to retrieve. Supports $filter (eq and not)." + ).optional(), + authorizationInfo: microsoft_graph_authorizationInfo.optional(), + birthday: external_exports.string().regex( + /^[0-9]{4,}-(0[1-9]|1[012])-(0[1-9]|[12][0-9]|3[01])T([01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9]([.][0-9]{1,12})?(Z|[+-][0-9][0-9]:[0-9][0-9])$/ + ).datetime({ offset: true }).describe( + "The birthday of the user. The Timestamp type represents date and time information using ISO 8601 format and is always in UTC. For example, midnight UTC on Jan 1, 2014, is 2014-01-01T00:00:00Z. Requires $select to retrieve." + ).optional(), + businessPhones: external_exports.array(external_exports.string()).describe( + "The telephone numbers for the user. NOTE: Although it's a string collection, only one number can be set for this property. Read-only for users synced from the on-premises directory. Returned by default. Supports $filter (eq, not, ge, le, startsWith)." + ).optional(), + city: external_exports.string().describe( + "The city where the user is located. Maximum length is 128 characters. Requires $select to retrieve. Supports $filter (eq, ne, not, ge, le, in, startsWith, and eq on null values)." + ).nullish(), + companyName: external_exports.string().describe( + "The name of the company that the user is associated with. This property can be useful for describing the company that a guest comes from. The maximum length is 64 characters.Requires $select to retrieve. Supports $filter (eq, ne, not, ge, le, in, startsWith, and eq on null values)." + ).nullish(), + consentProvidedForMinor: external_exports.string().describe( + "Sets whether consent was obtained for minors. Allowed values: null, Granted, Denied, and NotRequired. For more information, see legal age group property definitions. Requires $select to retrieve. Supports $filter (eq, ne, not, and in)." + ).nullish(), + country: external_exports.string().describe( + "The country or region where the user is located; for example, US or UK. Maximum length is 128 characters. Requires $select to retrieve. Supports $filter (eq, ne, not, ge, le, in, startsWith, and eq on null values)." + ).nullish(), + creationType: external_exports.string().describe( + "Indicates whether the user account was created through one of the following methods: As a regular school or work account (null). As an external account (Invitation). As a local account for an Azure Active Directory B2C tenant (LocalAccount). Through self-service sign-up by an internal user using email verification (EmailVerified). Through self-service sign-up by a guest signing up through a link that is part of a user flow (SelfServiceSignUp). Read-only.Requires $select to retrieve. Supports $filter (eq, ne, not, in)." + ).nullish(), + customSecurityAttributes: microsoft_graph_customSecurityAttributeValue.optional(), + department: external_exports.string().describe( + "The name of the department in which the user works. Maximum length is 64 characters. Requires $select to retrieve. Supports $filter (eq, ne, not , ge, le, in, and eq on null values)." + ).nullish(), + deviceEnrollmentLimit: external_exports.number().gte(-2147483648).lte(2147483647).describe( + "The limit on the maximum number of devices that the user is permitted to enroll. Allowed values are 5 or 1000." + ).optional(), + employeeHireDate: external_exports.string().regex( + /^[0-9]{4,}-(0[1-9]|1[012])-(0[1-9]|[12][0-9]|3[01])T([01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9]([.][0-9]{1,12})?(Z|[+-][0-9][0-9]:[0-9][0-9])$/ + ).datetime({ offset: true }).describe( + "The date and time when the user was hired or will start work in a future hire. Requires $select to retrieve. Supports $filter (eq, ne, not , ge, le, in)." + ).nullish(), + employeeId: external_exports.string().describe( + "The employee identifier assigned to the user by the organization. The maximum length is 16 characters. Requires $select to retrieve. Supports $filter (eq, ne, not , ge, le, in, startsWith, and eq on null values)." + ).nullish(), + employeeLeaveDateTime: external_exports.string().regex( + /^[0-9]{4,}-(0[1-9]|1[012])-(0[1-9]|[12][0-9]|3[01])T([01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9]([.][0-9]{1,12})?(Z|[+-][0-9][0-9]:[0-9][0-9])$/ + ).datetime({ offset: true }).describe( + "The date and time when the user left or will leave the organization. To read this property, the calling app must be assigned the User-LifeCycleInfo.Read.All permission. To write this property, the calling app must be assigned the User.Read.All and User-LifeCycleInfo.ReadWrite.All permissions. To read this property in delegated scenarios, the admin needs at least one of the following Microsoft Entra roles: Lifecycle Workflows Administrator (least privilege), Global Reader. To write this property in delegated scenarios, the admin needs the Global Administrator role. Supports $filter (eq, ne, not , ge, le, in). For more information, see Configure the employeeLeaveDateTime property for a user." + ).nullish() +}).passthrough().passthrough(); +var microsoft_graph_audio = external_exports.object({ + album: external_exports.string().describe("The title of the album for this audio file.").nullish(), + albumArtist: external_exports.string().describe("The artist named on the album for the audio file.").nullish(), + artist: external_exports.string().describe("The performing artist for the audio file.").nullish(), + bitrate: external_exports.number().describe("Bitrate expressed in kbps.").nullish(), + composers: external_exports.string().describe("The name of the composer of the audio file.").nullish(), + copyright: external_exports.string().describe("Copyright information for the audio file.").nullish(), + disc: external_exports.number().gte(-32768).lte(32767).describe("The number of the disc this audio file came from.").nullish(), + discCount: external_exports.number().gte(-32768).lte(32767).describe("The total number of discs in this album.").nullish(), + duration: external_exports.number().describe("Duration of the audio file, expressed in milliseconds").nullish(), + genre: external_exports.string().describe("The genre of this audio file.").nullish(), + hasDrm: external_exports.boolean().describe("Indicates if the file is protected with digital rights management.").nullish(), + isVariableBitrate: external_exports.boolean().describe("Indicates if the file is encoded with a variable bitrate.").nullish(), + title: external_exports.string().describe("The title of the audio file.").nullish(), + track: external_exports.number().gte(-2147483648).lte(2147483647).describe("The number of the track on the original disc for this audio file.").nullish(), + trackCount: external_exports.number().gte(-2147483648).lte(2147483647).describe("The total number of tracks on the original disc for this audio file.").nullish(), + year: external_exports.number().gte(-2147483648).lte(2147483647).describe("The year the audio file was recorded.").nullish() +}).passthrough(); +var microsoft_graph_album = external_exports.object({ + coverImageItemId: external_exports.string().describe("Unique identifier of the driveItem that is the cover of the album.").nullish() +}).passthrough(); +var microsoft_graph_bundle = external_exports.object({ + album: microsoft_graph_album.optional(), + childCount: external_exports.number().gte(-2147483648).lte(2147483647).describe("Number of children contained immediately within this container.").nullish() +}).passthrough(); +var microsoft_graph_deleted = external_exports.object({ state: external_exports.string().describe("Represents the state of the deleted item.").nullish() }).passthrough(); +var microsoft_graph_hashes = external_exports.object({ + crc32Hash: external_exports.string().describe("The CRC32 value of the file (if available). Read-only.").nullish(), + quickXorHash: external_exports.string().describe( + "A proprietary hash of the file that can be used to determine if the contents of the file change (if available). Read-only." + ).nullish(), + sha1Hash: external_exports.string().describe("SHA1 hash for the contents of the file (if available). Read-only.").nullish(), + sha256Hash: external_exports.string().describe("This property isn't supported. Don't use.").nullish() +}).passthrough(); +var microsoft_graph_file = external_exports.object({ + hashes: microsoft_graph_hashes.optional(), + mimeType: external_exports.string().describe( + "The MIME type for the file. This is determined by logic on the server and might not be the value provided when the file was uploaded. Read-only." + ).nullish(), + processingMetadata: external_exports.boolean().nullish() +}).passthrough(); +var microsoft_graph_fileSystemInfo = external_exports.object({ + createdDateTime: external_exports.string().regex( + /^[0-9]{4,}-(0[1-9]|1[012])-(0[1-9]|[12][0-9]|3[01])T([01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9]([.][0-9]{1,12})?(Z|[+-][0-9][0-9]:[0-9][0-9])$/ + ).datetime({ offset: true }).describe("The UTC date and time the file was created on a client.").nullish(), + lastAccessedDateTime: external_exports.string().regex( + /^[0-9]{4,}-(0[1-9]|1[012])-(0[1-9]|[12][0-9]|3[01])T([01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9]([.][0-9]{1,12})?(Z|[+-][0-9][0-9]:[0-9][0-9])$/ + ).datetime({ offset: true }).describe( + "The UTC date and time the file was last accessed. Available for the recent file list only." + ).nullish(), + lastModifiedDateTime: external_exports.string().regex( + /^[0-9]{4,}-(0[1-9]|1[012])-(0[1-9]|[12][0-9]|3[01])T([01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9]([.][0-9]{1,12})?(Z|[+-][0-9][0-9]:[0-9][0-9])$/ + ).datetime({ offset: true }).describe("The UTC date and time the file was last modified on a client.").nullish() +}).passthrough(); +var microsoft_graph_folderView = external_exports.object({ + sortBy: external_exports.string().describe("The method by which the folder should be sorted.").nullish(), + sortOrder: external_exports.string().describe( + "If true, indicates that items should be sorted in descending order. Otherwise, items should be sorted ascending." + ).nullish(), + viewType: external_exports.string().describe("The type of view that should be used to represent the folder.").nullish() +}).passthrough(); +var microsoft_graph_folder = external_exports.object({ + childCount: external_exports.number().gte(-2147483648).lte(2147483647).describe("Number of children contained immediately within this container.").nullish(), + view: microsoft_graph_folderView.optional() +}).passthrough(); +var microsoft_graph_image = external_exports.object({ + height: external_exports.number().gte(-2147483648).lte(2147483647).describe("Optional. Height of the image, in pixels. Read-only.").nullish(), + width: external_exports.number().gte(-2147483648).lte(2147483647).describe("Optional. Width of the image, in pixels. Read-only.").nullish() +}).passthrough(); +var microsoft_graph_malware = external_exports.object({ + description: external_exports.string().describe("Contains the virus details for the malware facet.").nullish() +}).passthrough(); +var microsoft_graph_package = external_exports.object({ + type: external_exports.string().describe( + "A string indicating the type of package. While oneNote is the only currently defined value, you should expect other package types to be returned and handle them accordingly." + ).nullish() +}).passthrough(); +var microsoft_graph_pendingContentUpdate = external_exports.object({ + queuedDateTime: external_exports.string().regex( + /^[0-9]{4,}-(0[1-9]|1[012])-(0[1-9]|[12][0-9]|3[01])T([01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9]([.][0-9]{1,12})?(Z|[+-][0-9][0-9]:[0-9][0-9])$/ + ).datetime({ offset: true }).describe("Date and time the pending binary operation was queued in UTC time. Read-only.").nullish() +}).passthrough(); +var microsoft_graph_pendingOperations = external_exports.object({ pendingContentUpdate: microsoft_graph_pendingContentUpdate.optional() }).passthrough(); +var microsoft_graph_driveItem = external_exports.object({ + id: external_exports.string().describe("The unique identifier for an entity. Read-only.").optional(), + name: external_exports.string().describe("The name of the item. Read-write.").nullish(), + description: external_exports.string().describe("Provides a user-visible description of the item. Optional.").nullish(), + createdDateTime: external_exports.string().regex( + /^[0-9]{4,}-(0[1-9]|1[012])-(0[1-9]|[12][0-9]|3[01])T([01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9]([.][0-9]{1,12})?(Z|[+-][0-9][0-9]:[0-9][0-9])$/ + ).datetime({ offset: true }).describe("Date and time of item creation. Read-only.").optional(), + lastModifiedDateTime: external_exports.string().regex( + /^[0-9]{4,}-(0[1-9]|1[012])-(0[1-9]|[12][0-9]|3[01])T([01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9]([.][0-9]{1,12})?(Z|[+-][0-9][0-9]:[0-9][0-9])$/ + ).datetime({ offset: true }).describe("Date and time the item was last modified. Read-only.").optional(), + content: external_exports.string().describe("The content stream, if the item represents a file.").nullish(), + location: microsoft_graph_geoCoordinates.optional(), + createdBy: microsoft_graph_identitySet.optional(), + eTag: external_exports.string().describe("ETag for the item. Read-only.").nullish(), + lastModifiedBy: microsoft_graph_identitySet.optional(), + parentReference: microsoft_graph_itemReference.optional(), + webUrl: external_exports.string().describe( + "URL that either displays the resource in the browser (for Office file formats), or is a direct link to the file (for other formats). Read-only." + ).nullish(), + createdByUser: microsoft_graph_user.describe("[Note: Simplified from 136 properties to 25 most common ones]").optional(), + lastModifiedByUser: microsoft_graph_user.describe("[Note: Simplified from 136 properties to 25 most common ones]").optional(), + audio: microsoft_graph_audio.optional(), + bundle: microsoft_graph_bundle.optional(), + cTag: external_exports.string().describe( + "An eTag for the content of the item. This eTag isn't changed if only the metadata is changed. Note This property isn't returned if the item is a folder. Read-only." + ).nullish(), + deleted: microsoft_graph_deleted.optional(), + file: microsoft_graph_file.optional(), + fileSystemInfo: microsoft_graph_fileSystemInfo.optional(), + folder: microsoft_graph_folder.optional(), + image: microsoft_graph_image.optional(), + malware: microsoft_graph_malware.optional(), + package: microsoft_graph_package.optional(), + pendingOperations: microsoft_graph_pendingOperations.optional() +}).passthrough().passthrough(); +var microsoft_graph_driveItemCollectionResponse = external_exports.object({ + "@odata.count": external_exports.number().int().nullable(), + "@odata.nextLink": external_exports.string().nullable(), + value: external_exports.array(microsoft_graph_driveItem) +}).partial().passthrough(); +var create_upload_session_Body = external_exports.object({ item: external_exports.object({}).partial().passthrough() }).partial().passthrough(); +var microsoft_graph_uploadSession = external_exports.object({ + expirationDateTime: external_exports.string().regex( + /^[0-9]{4,}-(0[1-9]|1[012])-(0[1-9]|[12][0-9]|3[01])T([01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9]([.][0-9]{1,12})?(Z|[+-][0-9][0-9]:[0-9][0-9])$/ + ).datetime({ offset: true }).describe( + "The date and time in UTC that the upload session expires. The complete file must be uploaded before this expiration time is reached. Each fragment uploaded during the session extends the expiration time." + ).nullish(), + nextExpectedRanges: external_exports.array(external_exports.string().nullable()).describe( + "A collection of byte ranges that the server is missing for the file. These ranges are zero indexed and of the format 'start-end' (for example '0-26' to indicate the first 27 bytes of the file). When uploading files as Outlook attachments, instead of a collection of ranges, this property always indicates a single value '{start}', the location in the file where the next upload should begin." + ).optional(), + uploadUrl: external_exports.string().describe("The URL endpoint that accepts PUT requests for byte ranges of the file.").nullish() +}).passthrough(); +var BaseDeltaFunctionResponse = external_exports.object({ "@odata.nextLink": external_exports.string().nullable(), "@odata.deltaLink": external_exports.string().nullable() }).partial().passthrough(); +var share_drive_item_Body = external_exports.object({ + requireSignIn: external_exports.boolean().nullable().default(false), + roles: external_exports.array(external_exports.string().nullable()), + sendInvitation: external_exports.boolean().nullable().default(false), + message: external_exports.string().nullable(), + recipients: external_exports.array(external_exports.object({}).partial().passthrough()), + retainInheritedPermissions: external_exports.boolean().nullable().default(false), + expirationDateTime: external_exports.string().nullable(), + password: external_exports.string().nullable() +}).partial().passthrough(); +var BaseCollectionPaginationCountResponse = external_exports.object({ "@odata.count": external_exports.number().int().nullable(), "@odata.nextLink": external_exports.string().nullable() }).partial().passthrough(); +var microsoft_graph_sharePointGroupIdentity = external_exports.object({ + displayName: external_exports.string().describe( + "The display name of the identity.For drive items, the display name might not always be available or up to date. For example, if a user changes their display name the API might show the new value in a future response, but the items associated with the user don't show up as changed when using delta." + ).nullish(), + id: external_exports.string().describe( + "Unique identifier for the identity or actor. For example, in the access reviews decisions API, this property might record the id of the principal, that is, the group, user, or application that's subject to review." + ).nullish(), + principalId: external_exports.string().nullish(), + title: external_exports.string().nullish() +}).passthrough(); +var microsoft_graph_sharePointIdentity = external_exports.object({ + displayName: external_exports.string().describe( + "The display name of the identity.For drive items, the display name might not always be available or up to date. For example, if a user changes their display name the API might show the new value in a future response, but the items associated with the user don't show up as changed when using delta." + ).nullish(), + id: external_exports.string().describe( + "Unique identifier for the identity or actor. For example, in the access reviews decisions API, this property might record the id of the principal, that is, the group, user, or application that's subject to review." + ).nullish(), + loginName: external_exports.string().describe("The sign in name of the SharePoint identity.").nullish() +}).passthrough(); +var microsoft_graph_sharePointIdentitySet = external_exports.object({ + application: microsoft_graph_identity.optional(), + device: microsoft_graph_identity.optional(), + user: microsoft_graph_identity.optional(), + group: microsoft_graph_identity.optional(), + sharePointGroup: microsoft_graph_sharePointGroupIdentity.optional(), + siteGroup: microsoft_graph_sharePointIdentity.optional(), + siteUser: microsoft_graph_sharePointIdentity.optional() +}).passthrough(); +var microsoft_graph_sharingInvitation = external_exports.object({ + email: external_exports.string().describe( + "The email address provided for the recipient of the sharing invitation. Read-only." + ).nullish(), + invitedBy: microsoft_graph_identitySet.optional(), + redeemedBy: external_exports.string().nullish(), + signInRequired: external_exports.boolean().describe( + "If true the recipient of the invitation needs to sign in in order to access the shared item. Read-only." + ).nullish() +}).passthrough(); +var microsoft_graph_sharingLink = external_exports.object({ + application: microsoft_graph_identity.optional(), + preventsDownload: external_exports.boolean().describe( + "If true then the user can only use this link to view the item on the web, and cannot use it to download the contents of the item. Only for OneDrive for Business and SharePoint." + ).nullish(), + scope: external_exports.string().describe( + "The scope of the link represented by this permission. Value anonymous indicates the link is usable by anyone, organization indicates the link is only usable for users signed into the same tenant." + ).nullish(), + type: external_exports.string().describe("The type of the link created.").nullish(), + webHtml: external_exports.string().describe( + "For embed links, this property contains the HTML code for an