"use strict";
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 __commonJS = (cb, mod) => function __require() {
  return mod || (0, cb[__getOwnPropNames(cb)[0]])((mod = { exports: {} }).exports, mod), mod.exports;
};
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/isexe/dist/commonjs/index.min.js
var require_index_min = __commonJS({
  "node_modules/isexe/dist/commonjs/index.min.js"(exports2) {
    "use strict";
    var a = (t, e) => () => (e || t((e = { exports: {} }).exports, e), e.exports);
    var _ = a((i) => {
      "use strict";
      Object.defineProperty(i, "__esModule", { value: true });
      i.sync = i.isexe = void 0;
      var M = require("node:fs"), x = require("node:fs/promises"), q = async (t, e = {}) => {
        let { ignoreErrors: r = false } = e;
        try {
          return d(await (0, x.stat)(t), e);
        } catch (s) {
          let n = s;
          if (r || n.code === "EACCES") return false;
          throw n;
        }
      };
      i.isexe = q;
      var m = (t, e = {}) => {
        let { ignoreErrors: r = false } = e;
        try {
          return d((0, M.statSync)(t), e);
        } catch (s) {
          let n = s;
          if (r || n.code === "EACCES") return false;
          throw n;
        }
      };
      i.sync = m;
      var d = (t, e) => t.isFile() && A(t, e), A = (t, e) => {
        var _a2, _b, _c;
        let r = e.uid ?? ((_a2 = process.getuid) == null ? void 0 : _a2.call(process)), s = e.groups ?? ((_b = process.getgroups) == null ? void 0 : _b.call(process)) ?? [], n = e.gid ?? ((_c = process.getgid) == null ? void 0 : _c.call(process)) ?? s[0];
        if (r === void 0 || n === void 0) throw new Error("cannot get uid or gid");
        let u = /* @__PURE__ */ new Set([n, ...s]), c = t.mode, S = t.uid, P = t.gid, f = parseInt("100", 8), l = parseInt("010", 8), j = parseInt("001", 8), C = f | l;
        return !!(c & j || c & l && u.has(P) || c & f && S === r || c & C && r === 0);
      };
    });
    var g = a((o) => {
      "use strict";
      Object.defineProperty(o, "__esModule", { value: true });
      o.sync = o.isexe = void 0;
      var T = require("node:fs"), I = require("node:fs/promises"), D = require("node:path"), F = async (t, e = {}) => {
        let { ignoreErrors: r = false } = e;
        try {
          return y(await (0, I.stat)(t), t, e);
        } catch (s) {
          let n = s;
          if (r || n.code === "EACCES") return false;
          throw n;
        }
      };
      o.isexe = F;
      var L = (t, e = {}) => {
        let { ignoreErrors: r = false } = e;
        try {
          return y((0, T.statSync)(t), t, e);
        } catch (s) {
          let n = s;
          if (r || n.code === "EACCES") return false;
          throw n;
        }
      };
      o.sync = L;
      var B = (t, e) => {
        let { pathExt: r = process.env.PATHEXT || "" } = e, s = r.split(D.delimiter);
        if (s.indexOf("") !== -1) return true;
        for (let n of s) {
          let u = n.toLowerCase(), c = t.substring(t.length - u.length).toLowerCase();
          if (u && c === u) return true;
        }
        return false;
      }, y = (t, e, r) => t.isFile() && B(e, r);
    });
    var p = a((h) => {
      "use strict";
      Object.defineProperty(h, "__esModule", { value: true });
    });
    var v = exports2 && exports2.__createBinding || (Object.create ? (function(t, e, r, s) {
      s === void 0 && (s = r);
      var n = Object.getOwnPropertyDescriptor(e, r);
      (!n || ("get" in n ? !e.__esModule : n.writable || n.configurable)) && (n = { enumerable: true, get: function() {
        return e[r];
      } }), Object.defineProperty(t, s, n);
    }) : (function(t, e, r, s) {
      s === void 0 && (s = r), t[s] = e[r];
    }));
    var G = exports2 && exports2.__setModuleDefault || (Object.create ? (function(t, e) {
      Object.defineProperty(t, "default", { enumerable: true, value: e });
    }) : function(t, e) {
      t.default = e;
    });
    var w = exports2 && exports2.__importStar || /* @__PURE__ */ (function() {
      var t = function(e) {
        return t = Object.getOwnPropertyNames || function(r) {
          var s = [];
          for (var n in r) Object.prototype.hasOwnProperty.call(r, n) && (s[s.length] = n);
          return s;
        }, t(e);
      };
      return function(e) {
        if (e && e.__esModule) return e;
        var r = {};
        if (e != null) for (var s = t(e), n = 0; n < s.length; n++) s[n] !== "default" && v(r, e, s[n]);
        return G(r, e), r;
      };
    })();
    var X = exports2 && exports2.__exportStar || function(t, e) {
      for (var r in t) r !== "default" && !Object.prototype.hasOwnProperty.call(e, r) && v(e, t, r);
    };
    Object.defineProperty(exports2, "__esModule", { value: true });
    exports2.sync = exports2.isexe = exports2.posix = exports2.win32 = void 0;
    var E = w(_());
    exports2.posix = E;
    var O = w(g());
    exports2.win32 = O;
    X(p(), exports2);
    var H = process.env._ISEXE_TEST_PLATFORM_ || process.platform;
    var b = H === "win32" ? O : E;
    exports2.isexe = b.isexe;
    exports2.sync = b.sync;
  }
});

// node_modules/which/lib/index.js
var require_lib = __commonJS({
  "node_modules/which/lib/index.js"(exports2, module2) {
    var { isexe, sync: isexeSync } = require_index_min();
    var { join: join4, delimiter, sep: sep2, posix } = require("path");
    var isWindows = process.platform === "win32";
    var rSlash = new RegExp(`[${posix.sep}${sep2 === posix.sep ? "" : sep2}]`.replace(/(\\)/g, "\\$1"));
    var rRel = new RegExp(`^\\.${rSlash.source}`);
    var getNotFoundError = (cmd) => Object.assign(new Error(`not found: ${cmd}`), { code: "ENOENT" });
    var getPathInfo = (cmd, {
      path: optPath = process.env.PATH,
      pathExt: optPathExt = process.env.PATHEXT,
      delimiter: optDelimiter = delimiter
    }) => {
      const pathEnv = cmd.match(rSlash) ? [""] : [
        // windows always checks the cwd first
        ...isWindows ? [process.cwd()] : [],
        ...(optPath || /* istanbul ignore next: very unusual */
        "").split(optDelimiter)
      ];
      if (isWindows) {
        const pathExtExe = optPathExt || [".EXE", ".CMD", ".BAT", ".COM"].join(optDelimiter);
        const pathExt = pathExtExe.split(optDelimiter).flatMap((item) => [item, item.toLowerCase()]);
        if (cmd.includes(".") && pathExt[0] !== "") {
          pathExt.unshift("");
        }
        return { pathEnv, pathExt, pathExtExe };
      }
      return { pathEnv, pathExt: [""] };
    };
    var getPathPart = (raw, cmd) => {
      const pathPart = /^".*"$/.test(raw) ? raw.slice(1, -1) : raw;
      const prefix = !pathPart && rRel.test(cmd) ? cmd.slice(0, 2) : "";
      return prefix + join4(pathPart, cmd);
    };
    var which6 = async (cmd, opt = {}) => {
      const { pathEnv, pathExt, pathExtExe } = getPathInfo(cmd, opt);
      const found = [];
      for (const envPart of pathEnv) {
        const p = getPathPart(envPart, cmd);
        for (const ext2 of pathExt) {
          const withExt = p + ext2;
          const is = await isexe(withExt, { pathExt: pathExtExe, ignoreErrors: true });
          if (is) {
            if (!opt.all) {
              return withExt;
            }
            found.push(withExt);
          }
        }
      }
      if (opt.all && found.length) {
        return found;
      }
      if (opt.nothrow) {
        return null;
      }
      throw getNotFoundError(cmd);
    };
    var whichSync = (cmd, opt = {}) => {
      const { pathEnv, pathExt, pathExtExe } = getPathInfo(cmd, opt);
      const found = [];
      for (const pathEnvPart of pathEnv) {
        const p = getPathPart(pathEnvPart, cmd);
        for (const ext2 of pathExt) {
          const withExt = p + ext2;
          const is = isexeSync(withExt, { pathExt: pathExtExe, ignoreErrors: true });
          if (is) {
            if (!opt.all) {
              return withExt;
            }
            found.push(withExt);
          }
        }
      }
      if (opt.all && found.length) {
        return found;
      }
      if (opt.nothrow) {
        return null;
      }
      throw getNotFoundError(cmd);
    };
    module2.exports = which6;
    which6.sync = whichSync;
  }
});

// node_modules/@zzzen/pyright-internal/dist/common/core.js
var require_core = __commonJS({
  "node_modules/@zzzen/pyright-internal/dist/common/core.js"(exports2) {
    "use strict";
    Object.defineProperty(exports2, "__esModule", { value: true });
    exports2.isDefined = exports2.isThenable = exports2.isDebugMode = exports2.toBoolean = exports2.hasProperty = exports2.isBoolean = exports2.isNumber = exports2.isString = exports2.isArray = exports2.compareValues = exports2.compareComparableValues = exports2.equateValues = exports2.toLowerCase = exports2.identity = exports2.returnUndefined = exports2.returnTrue = exports2.returnFalse = exports2.Comparison = void 0;
    var Comparison;
    (function(Comparison2) {
      Comparison2[Comparison2["LessThan"] = -1] = "LessThan";
      Comparison2[Comparison2["EqualTo"] = 0] = "EqualTo";
      Comparison2[Comparison2["GreaterThan"] = 1] = "GreaterThan";
    })(Comparison = exports2.Comparison || (exports2.Comparison = {}));
    function returnFalse() {
      return false;
    }
    exports2.returnFalse = returnFalse;
    function returnTrue() {
      return true;
    }
    exports2.returnTrue = returnTrue;
    function returnUndefined() {
      return void 0;
    }
    exports2.returnUndefined = returnUndefined;
    function identity(x) {
      return x;
    }
    exports2.identity = identity;
    function toLowerCase(x) {
      return x.toLowerCase();
    }
    exports2.toLowerCase = toLowerCase;
    function equateValues(a, b) {
      return a === b;
    }
    exports2.equateValues = equateValues;
    function compareComparableValues(a, b) {
      return a === b ? 0 : a === void 0 ? -1 : b === void 0 ? 1 : a < b ? -1 : 1;
    }
    exports2.compareComparableValues = compareComparableValues;
    function compareValues(a, b) {
      return compareComparableValues(a, b);
    }
    exports2.compareValues = compareValues;
    function isArray2(value) {
      return Array.isArray ? Array.isArray(value) : value instanceof Array;
    }
    exports2.isArray = isArray2;
    function isString2(text) {
      return typeof text === "string";
    }
    exports2.isString = isString2;
    function isNumber(x) {
      return typeof x === "number";
    }
    exports2.isNumber = isNumber;
    function isBoolean(x) {
      return typeof x === "boolean";
    }
    exports2.isBoolean = isBoolean;
    var hasOwnProperty = Object.prototype.hasOwnProperty;
    function hasProperty(map, key) {
      return hasOwnProperty.call(map, key);
    }
    exports2.hasProperty = hasProperty;
    function toBoolean(trueOrFalse) {
      const normalized = trueOrFalse === null || trueOrFalse === void 0 ? void 0 : trueOrFalse.trim().toUpperCase();
      if (normalized === "TRUE") {
        return true;
      }
      return false;
    }
    exports2.toBoolean = toBoolean;
    function isDebugMode() {
      const argv = process.execArgv.join();
      return argv.includes("inspect") || argv.includes("debug");
    }
    exports2.isDebugMode = isDebugMode;
    function isThenable(v) {
      return typeof (v === null || v === void 0 ? void 0 : v.then) === "function";
    }
    exports2.isThenable = isThenable;
    function isDefined(element) {
      return element !== void 0;
    }
    exports2.isDefined = isDefined;
  }
});

// node_modules/@zzzen/pyright-internal/dist/common/collectionUtils.js
var require_collectionUtils = __commonJS({
  "node_modules/@zzzen/pyright-internal/dist/common/collectionUtils.js"(exports2) {
    "use strict";
    Object.defineProperty(exports2, "__esModule", { value: true });
    exports2.getMapValues = exports2.addIfUnique = exports2.createMapFromItems = exports2.removeArrayElements = exports2.getOrAdd = exports2.getNestedProperty = exports2.flatten = exports2.binarySearchKey = exports2.binarySearch = exports2.every = exports2.some = exports2.map = exports2.stableSort = exports2.cloneAndSort = exports2.insertAt = exports2.addRange = exports2.find = exports2.appendArray = exports2.append = exports2.contains = exports2.emptyArray = void 0;
    var core_1 = require_core();
    exports2.emptyArray = [];
    function contains(array, value, equalityComparer = core_1.equateValues) {
      if (array) {
        for (const v of array) {
          if (equalityComparer(v, value)) {
            return true;
          }
        }
      }
      return false;
    }
    exports2.contains = contains;
    function append(to, value) {
      if (value === void 0) {
        return to;
      }
      if (to === void 0) {
        return [value];
      }
      to.push(value);
      return to;
    }
    exports2.append = append;
    function appendArray(to, elementsToPush) {
      if (elementsToPush.length < 256) {
        to.push(...elementsToPush);
        return;
      }
      for (const elem of elementsToPush) {
        to.push(elem);
      }
    }
    exports2.appendArray = appendArray;
    function find(array, predicate) {
      for (let i = 0; i < array.length; i++) {
        const value = array[i];
        if (predicate(value, i)) {
          return value;
        }
      }
      return void 0;
    }
    exports2.find = find;
    function toOffset(array, offset) {
      return offset < 0 ? array.length + offset : offset;
    }
    function addRange(to, from, start, end) {
      if (from === void 0 || from.length === 0) {
        return to;
      }
      if (to === void 0) {
        return from.slice(start, end);
      }
      start = start === void 0 ? 0 : toOffset(from, start);
      end = end === void 0 ? from.length : toOffset(from, end);
      for (let i = start; i < end && i < from.length; i++) {
        if (from[i] !== void 0) {
          to.push(from[i]);
        }
      }
      return to;
    }
    exports2.addRange = addRange;
    function insertAt(array, index, value) {
      if (index === 0) {
        array.unshift(value);
      } else if (index === array.length) {
        array.push(value);
      } else {
        for (let i = array.length; i > index; i--) {
          array[i] = array[i - 1];
        }
        array[index] = value;
      }
      return array;
    }
    exports2.insertAt = insertAt;
    function cloneAndSort(array, comparer) {
      return array.length === 0 ? array : array.slice().sort(comparer);
    }
    exports2.cloneAndSort = cloneAndSort;
    function selectIndex(_, i) {
      return i;
    }
    function indicesOf(array) {
      return array.map(selectIndex);
    }
    function stableSort(array, comparer) {
      const indices = indicesOf(array);
      stableSortIndices(array, indices, comparer);
      return indices.map((i) => array[i]);
    }
    exports2.stableSort = stableSort;
    function stableSortIndices(array, indices, comparer) {
      indices.sort((x, y) => comparer(array[x], array[y]) || (0, core_1.compareValues)(x, y));
    }
    function map(array, f) {
      if (array) {
        return array.map(f);
      }
      return void 0;
    }
    exports2.map = map;
    function some(array, predicate) {
      if (array) {
        if (predicate) {
          return array.some(predicate);
        } else {
          return array.length > 0;
        }
      }
      return false;
    }
    exports2.some = some;
    function every(array, callback) {
      if (array) {
        return array.every(callback);
      }
      return true;
    }
    exports2.every = every;
    function binarySearch(array, value, keySelector, keyComparer, offset) {
      return binarySearchKey(array, keySelector(value), keySelector, keyComparer, offset);
    }
    exports2.binarySearch = binarySearch;
    function binarySearchKey(array, key, keySelector, keyComparer, offset) {
      if (!some(array)) {
        return -1;
      }
      let low = offset || 0;
      let high = array.length - 1;
      while (low <= high) {
        const middle = low + (high - low >> 1);
        const midKey = keySelector(array[middle]);
        switch (keyComparer(midKey, key)) {
          case -1:
            low = middle + 1;
            break;
          case 0:
            return middle;
          case 1:
            high = middle - 1;
            break;
        }
      }
      return ~low;
    }
    exports2.binarySearchKey = binarySearchKey;
    function flatten(array) {
      const result = [];
      for (const v of array) {
        if (v) {
          if ((0, core_1.isArray)(v)) {
            addRange(result, v);
          } else {
            result.push(v);
          }
        }
      }
      return result;
    }
    exports2.flatten = flatten;
    function getNestedProperty(object, property) {
      const value = property.split(".").reduce((obj, prop) => {
        return obj && obj[prop];
      }, object);
      return value;
    }
    exports2.getNestedProperty = getNestedProperty;
    function getOrAdd(map2, key, newValueFactory) {
      const value = map2.get(key);
      if (value !== void 0) {
        return value;
      }
      const newValue = newValueFactory();
      map2.set(key, newValue);
      return newValue;
    }
    exports2.getOrAdd = getOrAdd;
    function removeArrayElements(array, predicate) {
      for (let i = 0; i < array.length; i++) {
        if (predicate(array[i])) {
          array.splice(i, 1);
          i--;
        }
      }
      return array;
    }
    exports2.removeArrayElements = removeArrayElements;
    function createMapFromItems(items, keyGetter) {
      return items.map((t) => keyGetter(t)).reduce((map2, key, i) => {
        map2.set(key, (map2.get(key) || []).concat(items[i]));
        return map2;
      }, /* @__PURE__ */ new Map());
    }
    exports2.createMapFromItems = createMapFromItems;
    function addIfUnique(arr, t, equalityComparer = core_1.equateValues) {
      if (contains(arr, t, equalityComparer)) {
        return arr;
      }
      arr.push(t);
      return arr;
    }
    exports2.addIfUnique = addIfUnique;
    function getMapValues(m, predicate) {
      const values = [];
      m.forEach((v, k) => {
        if (predicate(k, v)) {
          values.push(v);
        }
      });
      return values;
    }
    exports2.getMapValues = getMapValues;
  }
});

// node_modules/@zzzen/pyright-internal/dist/common/diagnostic.js
var require_diagnostic = __commonJS({
  "node_modules/@zzzen/pyright-internal/dist/common/diagnostic.js"(exports2) {
    "use strict";
    Object.defineProperty(exports2, "__esModule", { value: true });
    exports2.DiagnosticAddendum = exports2.Diagnostic = exports2.convertLevelToCategory = exports2.DiagnosticCategory = void 0;
    var collectionUtils_1 = require_collectionUtils();
    var defaultMaxDepth = 5;
    var defaultMaxLineCount = 8;
    var maxRecursionCount = 64;
    var DiagnosticCategory;
    (function(DiagnosticCategory2) {
      DiagnosticCategory2[DiagnosticCategory2["Error"] = 0] = "Error";
      DiagnosticCategory2[DiagnosticCategory2["Warning"] = 1] = "Warning";
      DiagnosticCategory2[DiagnosticCategory2["Information"] = 2] = "Information";
      DiagnosticCategory2[DiagnosticCategory2["UnusedCode"] = 3] = "UnusedCode";
      DiagnosticCategory2[DiagnosticCategory2["Deprecated"] = 4] = "Deprecated";
    })(DiagnosticCategory = exports2.DiagnosticCategory || (exports2.DiagnosticCategory = {}));
    function convertLevelToCategory(level) {
      switch (level) {
        case "error":
          return 0;
        case "warning":
          return 1;
        case "information":
          return 2;
        default:
          throw new Error(`${level} is not expected`);
      }
    }
    exports2.convertLevelToCategory = convertLevelToCategory;
    var Diagnostic2 = class {
      constructor(category, message, range2) {
        this.category = category;
        this.message = message;
        this.range = range2;
        this._relatedInfo = [];
      }
      addAction(action) {
        if (this._actions === void 0) {
          this._actions = [action];
        } else {
          this._actions.push(action);
        }
      }
      getActions() {
        return this._actions;
      }
      setRule(rule) {
        this._rule = rule;
      }
      getRule() {
        return this._rule;
      }
      addRelatedInfo(message, filePath, range2) {
        this._relatedInfo.push({ filePath, message, range: range2 });
      }
      getRelatedInfo() {
        return this._relatedInfo;
      }
    };
    exports2.Diagnostic = Diagnostic2;
    var DiagnosticAddendum = class _DiagnosticAddendum {
      constructor() {
        this._messages = [];
        this._childAddenda = [];
      }
      addMessage(message) {
        this._messages.push(message);
      }
      // Create a new (nested) addendum to which messages can be added.
      createAddendum() {
        const newAddendum = new _DiagnosticAddendum();
        this.addAddendum(newAddendum);
        return newAddendum;
      }
      getString(maxDepth = defaultMaxDepth, maxLineCount = defaultMaxLineCount) {
        let lines = this._getLinesRecursive(maxDepth, maxLineCount);
        if (lines.length > maxLineCount) {
          lines = lines.slice(0, maxLineCount);
          lines.push("  ...");
        }
        const text = lines.join("\n");
        if (text.length > 0) {
          return "\n" + text;
        }
        return "";
      }
      isEmpty() {
        return this._getMessageCount() === 0;
      }
      addAddendum(addendum) {
        this._childAddenda.push(addendum);
      }
      getChildren() {
        return this._childAddenda;
      }
      getMessages() {
        return this._messages;
      }
      _getMessageCount(recursionCount = 0) {
        if (recursionCount > maxRecursionCount) {
          return 0;
        }
        let messageCount = this._messages.length;
        for (const diag of this._childAddenda) {
          messageCount += diag._getMessageCount(recursionCount + 1);
        }
        return messageCount;
      }
      _getLinesRecursive(maxDepth, maxLineCount, recursionCount = 0) {
        if (maxDepth <= 0 || recursionCount > maxRecursionCount) {
          return [];
        }
        let childLines = [];
        for (const addendum of this._childAddenda) {
          const maxDepthRemaining = this._messages.length > 0 ? maxDepth - 1 : maxDepth;
          (0, collectionUtils_1.appendArray)(childLines, addendum._getLinesRecursive(maxDepthRemaining, maxLineCount, recursionCount + 1));
          if (childLines.length >= maxLineCount) {
            childLines = childLines.slice(0, maxLineCount);
            break;
          }
        }
        const extraSpace = this._messages.length > 0 ? "\xA0\xA0" : "";
        return this._messages.concat(childLines).map((line) => extraSpace + line);
      }
    };
    exports2.DiagnosticAddendum = DiagnosticAddendum;
  }
});

// node_modules/@zzzen/pyright-internal/dist/common/debug.js
var require_debug = __commonJS({
  "node_modules/@zzzen/pyright-internal/dist/common/debug.js"(exports2) {
    "use strict";
    Object.defineProperty(exports2, "__esModule", { value: true });
    exports2.getSerializableError = exports2.getErrorString = exports2.formatEnum = exports2.getFunctionName = exports2.assertNever = exports2.assertEachDefined = exports2.assertDefined = exports2.fail = exports2.assert = void 0;
    var collectionUtils_1 = require_collectionUtils();
    var core_1 = require_core();
    function assert(expression, message, verboseDebugInfo, stackCrawlMark) {
      if (!expression) {
        if (verboseDebugInfo) {
          message += "\r\nVerbose Debug Information: " + (typeof verboseDebugInfo === "string" ? verboseDebugInfo : verboseDebugInfo());
        }
        fail(message ? "False expression: " + message : "False expression.", stackCrawlMark || assert);
      }
    }
    exports2.assert = assert;
    function fail(message, stackCrawlMark) {
      const e = new Error(message ? `Debug Failure. ${message}` : "Debug Failure.");
      if (Error.captureStackTrace) {
        Error.captureStackTrace(e, stackCrawlMark || fail);
      }
      throw e;
    }
    exports2.fail = fail;
    function assertDefined(value, message, stackCrawlMark) {
      if (value === void 0 || value === null) {
        fail(message, stackCrawlMark || assertDefined);
      }
    }
    exports2.assertDefined = assertDefined;
    function assertEachDefined(value, message, stackCrawlMark) {
      for (const v of value) {
        assertDefined(v, message, stackCrawlMark || assertEachDefined);
      }
    }
    exports2.assertEachDefined = assertEachDefined;
    function assertNever(member, message = "Illegal value:", stackCrawlMark) {
      const detail = JSON.stringify(member);
      fail(`${message} ${detail}`, stackCrawlMark || assertNever);
    }
    exports2.assertNever = assertNever;
    function getFunctionName(func) {
      if (typeof func !== "function") {
        return "";
      } else if ((0, core_1.hasProperty)(func, "name")) {
        return func.name;
      } else {
        const text = Function.prototype.toString.call(func);
        const match2 = /^function\s+([\w$]+)\s*\(/.exec(text);
        return match2 ? match2[1] : "";
      }
    }
    exports2.getFunctionName = getFunctionName;
    function formatEnum(value = 0, enumObject, isFlags) {
      const members = getEnumMembers(enumObject);
      if (value === 0) {
        return members.length > 0 && members[0][0] === 0 ? members[0][1] : "0";
      }
      if (isFlags) {
        let result = "";
        let remainingFlags = value;
        for (const [enumValue, enumName] of members) {
          if (enumValue > value) {
            break;
          }
          if (enumValue !== 0 && enumValue & value) {
            result = `${result}${result ? "|" : ""}${enumName}`;
            remainingFlags &= ~enumValue;
          }
        }
        if (remainingFlags === 0) {
          return result;
        }
      } else {
        for (const [enumValue, enumName] of members) {
          if (enumValue === value) {
            return enumName;
          }
        }
      }
      return value.toString();
    }
    exports2.formatEnum = formatEnum;
    function getErrorString(error) {
      return (error.stack ? error.stack.toString() : void 0) || (typeof error.message === "string" ? error.message : void 0) || JSON.stringify(error);
    }
    exports2.getErrorString = getErrorString;
    function getSerializableError(error) {
      if (!error) {
        return void 0;
      }
      const exception = JSON.stringify(error);
      if (exception.length > 2) {
        return error;
      }
      const name = error.name ? (0, core_1.isString)(error.name) ? error.name : "noname" : "noname";
      const message = error.message ? (0, core_1.isString)(error.message) ? error.message : "nomessage" : "nomessage";
      const stack = error.stack ? (0, core_1.isString)(error.stack) ? error.stack : void 0 : void 0;
      return { name, message, stack };
    }
    exports2.getSerializableError = getSerializableError;
    function getEnumMembers(enumObject) {
      const result = [];
      for (const name of Object.keys(enumObject)) {
        const value = enumObject[name];
        if (typeof value === "number") {
          result.push([value, name]);
        }
      }
      return (0, collectionUtils_1.stableSort)(result, (x, y) => (0, core_1.compareValues)(x[0], y[0]));
    }
  }
});

// node_modules/@zzzen/pyright-internal/dist/common/textRange.js
var require_textRange = __commonJS({
  "node_modules/@zzzen/pyright-internal/dist/common/textRange.js"(exports2) {
    "use strict";
    Object.defineProperty(exports2, "__esModule", { value: true });
    exports2.combineRange = exports2.extendRange = exports2.isEmptyRange = exports2.isEmptyPosition = exports2.getEmptyRange = exports2.rangesAreEqual = exports2.positionsAreEqual = exports2.doesRangeContain = exports2.doRangesIntersect = exports2.doRangesOverlap = exports2.getEmptyPosition = exports2.comparePositions = exports2.Range = exports2.Position = exports2.TextRange = void 0;
    var TextRange;
    (function(TextRange2) {
      function create(start, length) {
        if (start < 0) {
          throw new Error("start must be non-negative");
        }
        if (length < 0) {
          throw new Error("length must be non-negative");
        }
        return { start, length };
      }
      TextRange2.create = create;
      function fromBounds(start, end) {
        if (start < 0) {
          throw new Error("start must be non-negative");
        }
        if (start > end) {
          throw new Error("end must be greater than or equal to start");
        }
        return create(start, end - start);
      }
      TextRange2.fromBounds = fromBounds;
      function getEnd(range2) {
        return range2.start + range2.length;
      }
      TextRange2.getEnd = getEnd;
      function contains(range2, position) {
        return position >= range2.start && position < getEnd(range2);
      }
      TextRange2.contains = contains;
      function containsRange(range2, span) {
        return span.start >= range2.start && getEnd(span) <= getEnd(range2);
      }
      TextRange2.containsRange = containsRange;
      function overlaps(range2, position) {
        return position >= range2.start && position <= getEnd(range2);
      }
      TextRange2.overlaps = overlaps;
      function overlapsRange(range2, other) {
        return overlaps(range2, other.start) || overlaps(other, range2.start);
      }
      TextRange2.overlapsRange = overlapsRange;
      function extend(range2, extension) {
        if (extension) {
          if (Array.isArray(extension)) {
            extension.forEach((r) => {
              extend(range2, r);
            });
          } else {
            if (extension.start < range2.start) {
              range2.length += range2.start - extension.start;
              range2.start = extension.start;
            }
            if (getEnd(extension) > getEnd(range2)) {
              range2.length += getEnd(extension) - getEnd(range2);
            }
          }
        }
      }
      TextRange2.extend = extend;
      function combine(ranges) {
        if (ranges.length === 0) {
          return void 0;
        }
        const combinedRange = ranges[0];
        for (let i = 1; i < ranges.length; i++) {
          extend(combinedRange, ranges[i]);
        }
        return combinedRange;
      }
      TextRange2.combine = combine;
    })(TextRange = exports2.TextRange || (exports2.TextRange = {}));
    var Position6;
    (function(Position7) {
      function is(value) {
        const candidate = value;
        return candidate && candidate.line !== void 0 && candidate.character !== void 0;
      }
      Position7.is = is;
      function print(value) {
        return `(${value.line}:${value.character})`;
      }
      Position7.print = print;
    })(Position6 = exports2.Position || (exports2.Position = {}));
    var Range7;
    (function(Range8) {
      function is(value) {
        const candidate = value;
        return candidate && candidate.start !== void 0 && candidate.end !== void 0;
      }
      Range8.is = is;
      function print(value) {
        return `${Position6.print(value.start)}-${Position6.print(value.end)}`;
      }
      Range8.print = print;
    })(Range7 = exports2.Range || (exports2.Range = {}));
    function comparePositions(a, b) {
      if (a.line < b.line) {
        return -1;
      } else if (a.line > b.line) {
        return 1;
      } else if (a.character < b.character) {
        return -1;
      } else if (a.character > b.character) {
        return 1;
      }
      return 0;
    }
    exports2.comparePositions = comparePositions;
    function getEmptyPosition() {
      return {
        line: 0,
        character: 0
      };
    }
    exports2.getEmptyPosition = getEmptyPosition;
    function doRangesOverlap(a, b) {
      if (comparePositions(b.start, a.end) >= 0) {
        return false;
      } else if (comparePositions(a.start, b.end) >= 0) {
        return false;
      }
      return true;
    }
    exports2.doRangesOverlap = doRangesOverlap;
    function doRangesIntersect(a, b) {
      if (comparePositions(b.start, a.end) > 0) {
        return false;
      } else if (comparePositions(a.start, b.end) > 0) {
        return false;
      }
      return true;
    }
    exports2.doRangesIntersect = doRangesIntersect;
    function doesRangeContain(range2, positionOrRange) {
      if (Position6.is(positionOrRange)) {
        return comparePositions(range2.start, positionOrRange) <= 0 && comparePositions(range2.end, positionOrRange) >= 0;
      }
      return doesRangeContain(range2, positionOrRange.start) && doesRangeContain(range2, positionOrRange.end);
    }
    exports2.doesRangeContain = doesRangeContain;
    function positionsAreEqual(a, b) {
      return comparePositions(a, b) === 0;
    }
    exports2.positionsAreEqual = positionsAreEqual;
    function rangesAreEqual(a, b) {
      return positionsAreEqual(a.start, b.start) && positionsAreEqual(a.end, b.end);
    }
    exports2.rangesAreEqual = rangesAreEqual;
    function getEmptyRange() {
      return {
        start: getEmptyPosition(),
        end: getEmptyPosition()
      };
    }
    exports2.getEmptyRange = getEmptyRange;
    function isEmptyPosition(pos) {
      return pos.character === 0 && pos.line === 0;
    }
    exports2.isEmptyPosition = isEmptyPosition;
    function isEmptyRange(range2) {
      return isEmptyPosition(range2.start) && isEmptyPosition(range2.end);
    }
    exports2.isEmptyRange = isEmptyRange;
    function extendRange(range2, extension) {
      if (extension) {
        if (Array.isArray(extension)) {
          extension.forEach((r) => {
            extendRange(range2, r);
          });
        } else {
          if (comparePositions(extension.start, range2.start) < 0) {
            range2.start = extension.start;
          }
          if (comparePositions(extension.end, range2.end) > 0) {
            range2.end = extension.end;
          }
        }
      }
    }
    exports2.extendRange = extendRange;
    function combineRange(ranges) {
      if (ranges.length === 0) {
        return void 0;
      }
      const combinedRange = ranges[0];
      for (let i = 1; i < ranges.length; i++) {
        extendRange(combinedRange, ranges[i]);
      }
      return combinedRange;
    }
    exports2.combineRange = combineRange;
  }
});

// node_modules/@zzzen/pyright-internal/dist/common/positionUtils.js
var require_positionUtils = __commonJS({
  "node_modules/@zzzen/pyright-internal/dist/common/positionUtils.js"(exports2) {
    "use strict";
    Object.defineProperty(exports2, "__esModule", { value: true });
    exports2.convertTextRangeToRange = exports2.convertRangeToTextRange = exports2.convertPositionToOffset = exports2.convertOffsetsToRange = exports2.convertOffsetToPosition = void 0;
    var debug_1 = require_debug();
    var textRange_1 = require_textRange();
    function convertOffsetToPosition(offset, lines) {
      if (lines.end === 0) {
        return {
          line: 0,
          character: 0
        };
      }
      let offsetAdjustment = 0;
      if (offset >= lines.end) {
        offset = lines.end - 1;
        offsetAdjustment = 1;
      }
      const itemIndex = lines.getItemContaining(offset);
      (0, debug_1.assert)(itemIndex >= 0 && itemIndex <= lines.length);
      const lineRange = lines.getItemAt(itemIndex);
      (0, debug_1.assert)(lineRange !== void 0);
      return {
        line: itemIndex,
        character: offset - lineRange.start + offsetAdjustment
      };
    }
    exports2.convertOffsetToPosition = convertOffsetToPosition;
    function convertOffsetsToRange2(startOffset, endOffset, lines) {
      const start = convertOffsetToPosition(startOffset, lines);
      const end = convertOffsetToPosition(endOffset, lines);
      return { start, end };
    }
    exports2.convertOffsetsToRange = convertOffsetsToRange2;
    function convertPositionToOffset(position, lines) {
      if (position.line >= lines.count) {
        return void 0;
      }
      return lines.getItemAt(position.line).start + position.character;
    }
    exports2.convertPositionToOffset = convertPositionToOffset;
    function convertRangeToTextRange(range2, lines) {
      const start = convertPositionToOffset(range2.start, lines);
      if (start === void 0) {
        return void 0;
      }
      const end = convertPositionToOffset(range2.end, lines);
      if (end === void 0) {
        return void 0;
      }
      return textRange_1.TextRange.fromBounds(start, end);
    }
    exports2.convertRangeToTextRange = convertRangeToTextRange;
    function convertTextRangeToRange2(range2, lines) {
      return convertOffsetsToRange2(range2.start, textRange_1.TextRange.getEnd(range2), lines);
    }
    exports2.convertTextRangeToRange = convertTextRangeToRange2;
  }
});

// node_modules/leven/index.js
var require_leven = __commonJS({
  "node_modules/leven/index.js"(exports2, module2) {
    "use strict";
    var array = [];
    var charCodeCache = [];
    var leven = (left, right) => {
      if (left === right) {
        return 0;
      }
      const swap = left;
      if (left.length > right.length) {
        left = right;
        right = swap;
      }
      let leftLength = left.length;
      let rightLength = right.length;
      while (leftLength > 0 && left.charCodeAt(~-leftLength) === right.charCodeAt(~-rightLength)) {
        leftLength--;
        rightLength--;
      }
      let start = 0;
      while (start < leftLength && left.charCodeAt(start) === right.charCodeAt(start)) {
        start++;
      }
      leftLength -= start;
      rightLength -= start;
      if (leftLength === 0) {
        return rightLength;
      }
      let bCharCode;
      let result;
      let temp;
      let temp2;
      let i = 0;
      let j = 0;
      while (i < leftLength) {
        charCodeCache[i] = left.charCodeAt(start + i);
        array[i] = ++i;
      }
      while (j < rightLength) {
        bCharCode = right.charCodeAt(start + j);
        temp = j++;
        result = j;
        for (i = 0; i < leftLength; i++) {
          temp2 = bCharCode === charCodeCache[i] ? temp : temp + 1;
          temp = array[i];
          result = array[i] = temp > result ? temp2 > result ? result + 1 : temp2 : temp2 > temp ? temp + 1 : temp2;
        }
      }
      return result;
    };
    module2.exports = leven;
    module2.exports.default = leven;
  }
});

// node_modules/@zzzen/pyright-internal/dist/common/stringUtils.js
var require_stringUtils = __commonJS({
  "node_modules/@zzzen/pyright-internal/dist/common/stringUtils.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.truncate = exports2.getLastDottedString = exports2.getCharacterCount = exports2.equateStringsCaseSensitive = exports2.equateStringsCaseInsensitive = exports2.getStringComparer = exports2.compareStringsCaseSensitive = exports2.compareStringsCaseInsensitive = exports2.hashString = exports2.isPatternInSymbol = exports2.computeCompletionSimilarity = void 0;
    var leven_1 = __importDefault(require_leven());
    var core_1 = require_core();
    function computeCompletionSimilarity(typedValue, symbolName) {
      if (symbolName.startsWith(typedValue)) {
        return 1;
      }
      const symbolLower = symbolName.toLocaleLowerCase();
      const typedLower = typedValue.toLocaleLowerCase();
      if (symbolLower.startsWith(typedLower)) {
        return 0.75;
      }
      let symbolSubstrLength = symbolLower.length;
      let smallestEditDistance = Number.MAX_VALUE;
      while (symbolSubstrLength > 0) {
        const editDistance = (0, leven_1.default)(symbolLower.substr(0, symbolSubstrLength), typedLower);
        if (editDistance < smallestEditDistance) {
          smallestEditDistance = editDistance;
        }
        symbolSubstrLength--;
      }
      if (smallestEditDistance >= typedValue.length) {
        return 0;
      }
      const similarity = (typedValue.length - smallestEditDistance) / typedValue.length;
      return 0.5 * similarity;
    }
    exports2.computeCompletionSimilarity = computeCompletionSimilarity;
    function isPatternInSymbol(typedValue, symbolName) {
      const typedLower = typedValue.toLocaleLowerCase();
      const symbolLower = symbolName.toLocaleLowerCase();
      const typedLength = typedLower.length;
      const symbolLength = symbolLower.length;
      let typedPos = 0;
      let symbolPos = 0;
      while (typedPos < typedLength && symbolPos < symbolLength) {
        if (typedLower[typedPos] === symbolLower[symbolPos]) {
          typedPos += 1;
        }
        symbolPos += 1;
      }
      return typedPos === typedLength;
    }
    exports2.isPatternInSymbol = isPatternInSymbol;
    function hashString(contents) {
      let hash = 0;
      for (let i = 0; i < contents.length; i++) {
        hash = (hash << 5) - hash + contents.charCodeAt(i) | 0;
      }
      return hash;
    }
    exports2.hashString = hashString;
    function compareStringsCaseInsensitive(a, b) {
      return a === b ? 0 : a === void 0 ? -1 : b === void 0 ? 1 : (0, core_1.compareComparableValues)(a.toUpperCase(), b.toUpperCase());
    }
    exports2.compareStringsCaseInsensitive = compareStringsCaseInsensitive;
    function compareStringsCaseSensitive(a, b) {
      return (0, core_1.compareComparableValues)(a, b);
    }
    exports2.compareStringsCaseSensitive = compareStringsCaseSensitive;
    function getStringComparer(ignoreCase) {
      return ignoreCase ? compareStringsCaseInsensitive : compareStringsCaseSensitive;
    }
    exports2.getStringComparer = getStringComparer;
    function equateStringsCaseInsensitive(a, b) {
      return compareStringsCaseInsensitive(a, b) === 0;
    }
    exports2.equateStringsCaseInsensitive = equateStringsCaseInsensitive;
    function equateStringsCaseSensitive(a, b) {
      return compareStringsCaseSensitive(a, b) === 0;
    }
    exports2.equateStringsCaseSensitive = equateStringsCaseSensitive;
    function getCharacterCount(value, ch) {
      let result = 0;
      for (let i = 0; i < value.length; i++) {
        if (value[i] === ch) {
          result++;
        }
      }
      return result;
    }
    exports2.getCharacterCount = getCharacterCount;
    function getLastDottedString(text) {
      const index = text.lastIndexOf(".");
      return index > 0 ? text.substring(index + 1) : text;
    }
    exports2.getLastDottedString = getLastDottedString;
    function truncate(text, maxLength) {
      if (text.length > maxLength) {
        return text.substring(0, maxLength - "...".length) + "...";
      }
      return text;
    }
    exports2.truncate = truncate;
  }
});

// node_modules/@zzzen/pyright-internal/dist/common/diagnosticSink.js
var require_diagnosticSink = __commonJS({
  "node_modules/@zzzen/pyright-internal/dist/common/diagnosticSink.js"(exports2) {
    "use strict";
    Object.defineProperty(exports2, "__esModule", { value: true });
    exports2.TextRangeDiagnosticSink = exports2.DiagnosticSink = void 0;
    var collectionUtils_1 = require_collectionUtils();
    var diagnostic_1 = require_diagnostic();
    var positionUtils_1 = require_positionUtils();
    var stringUtils_1 = require_stringUtils();
    var DiagnosticSink2 = class {
      constructor(diagnostics) {
        this._diagnosticList = diagnostics || [];
        this._diagnosticMap = /* @__PURE__ */ new Map();
      }
      fetchAndClear() {
        const prevDiagnostics = this._diagnosticList;
        this._diagnosticList = [];
        this._diagnosticMap.clear();
        return prevDiagnostics;
      }
      addError(message, range2) {
        return this.addDiagnostic(new diagnostic_1.Diagnostic(0, message, range2));
      }
      addWarning(message, range2) {
        return this.addDiagnostic(new diagnostic_1.Diagnostic(1, message, range2));
      }
      addInformation(message, range2) {
        return this.addDiagnostic(new diagnostic_1.Diagnostic(2, message, range2));
      }
      addUnusedCode(message, range2, action) {
        const diag = new diagnostic_1.Diagnostic(3, message, range2);
        if (action) {
          diag.addAction(action);
        }
        return this.addDiagnostic(diag);
      }
      addDeprecated(message, range2, action) {
        const diag = new diagnostic_1.Diagnostic(4, message, range2);
        if (action) {
          diag.addAction(action);
        }
        return this.addDiagnostic(diag);
      }
      addDiagnostic(diag) {
        const key = `${diag.range.start.line},${diag.range.start.character}-${diag.range.end.line}-${diag.range.end.character}:${(0, stringUtils_1.hashString)(diag.message)}}`;
        if (!this._diagnosticMap.has(key)) {
          this._diagnosticList.push(diag);
          this._diagnosticMap.set(key, diag);
        }
        return diag;
      }
      addDiagnostics(diagsToAdd) {
        (0, collectionUtils_1.appendArray)(this._diagnosticList, diagsToAdd);
      }
      getErrors() {
        return this._diagnosticList.filter(
          (diag) => diag.category === 0
          /* Error */
        );
      }
      getWarnings() {
        return this._diagnosticList.filter(
          (diag) => diag.category === 1
          /* Warning */
        );
      }
      getInformation() {
        return this._diagnosticList.filter(
          (diag) => diag.category === 2
          /* Information */
        );
      }
      getUnusedCode() {
        return this._diagnosticList.filter(
          (diag) => diag.category === 3
          /* UnusedCode */
        );
      }
      getDeprecated() {
        return this._diagnosticList.filter(
          (diag) => diag.category === 4
          /* Deprecated */
        );
      }
    };
    exports2.DiagnosticSink = DiagnosticSink2;
    var TextRangeDiagnosticSink = class extends DiagnosticSink2 {
      constructor(lines, diagnostics) {
        super(diagnostics);
        this._lines = lines;
      }
      addDiagnosticWithTextRange(level, message, range2) {
        const positionRange = (0, positionUtils_1.convertOffsetsToRange)(range2.start, range2.start + range2.length, this._lines);
        switch (level) {
          case "error":
            return this.addError(message, positionRange);
          case "warning":
            return this.addWarning(message, positionRange);
          case "information":
            return this.addInformation(message, positionRange);
          default:
            throw new Error(`${level} is not expected value`);
        }
      }
      addUnusedCodeWithTextRange(message, range2, action) {
        return this.addUnusedCode(message, (0, positionUtils_1.convertOffsetsToRange)(range2.start, range2.start + range2.length, this._lines), action);
      }
      addDeprecatedWithTextRange(message, range2, action) {
        return this.addDeprecated(message, (0, positionUtils_1.convertOffsetsToRange)(range2.start, range2.start + range2.length, this._lines), action);
      }
    };
    exports2.TextRangeDiagnosticSink = TextRangeDiagnosticSink;
  }
});

// node_modules/@zzzen/pyright-internal/dist/common/pythonVersion.js
var require_pythonVersion = __commonJS({
  "node_modules/@zzzen/pyright-internal/dist/common/pythonVersion.js"(exports2) {
    "use strict";
    Object.defineProperty(exports2, "__esModule", { value: true });
    exports2.is3x = exports2.versionFromMajorMinor = exports2.versionFromString = exports2.versionToString = exports2.latestStablePythonVersion = exports2.PythonVersion = void 0;
    var PythonVersion;
    (function(PythonVersion2) {
      PythonVersion2[PythonVersion2["V3_0"] = 768] = "V3_0";
      PythonVersion2[PythonVersion2["V3_1"] = 769] = "V3_1";
      PythonVersion2[PythonVersion2["V3_2"] = 770] = "V3_2";
      PythonVersion2[PythonVersion2["V3_3"] = 771] = "V3_3";
      PythonVersion2[PythonVersion2["V3_4"] = 772] = "V3_4";
      PythonVersion2[PythonVersion2["V3_5"] = 773] = "V3_5";
      PythonVersion2[PythonVersion2["V3_6"] = 774] = "V3_6";
      PythonVersion2[PythonVersion2["V3_7"] = 775] = "V3_7";
      PythonVersion2[PythonVersion2["V3_8"] = 776] = "V3_8";
      PythonVersion2[PythonVersion2["V3_9"] = 777] = "V3_9";
      PythonVersion2[PythonVersion2["V3_10"] = 778] = "V3_10";
      PythonVersion2[PythonVersion2["V3_11"] = 779] = "V3_11";
      PythonVersion2[PythonVersion2["V3_12"] = 780] = "V3_12";
    })(PythonVersion = exports2.PythonVersion || (exports2.PythonVersion = {}));
    exports2.latestStablePythonVersion = PythonVersion.V3_10;
    function versionToString(version) {
      const majorVersion = version >> 8 & 255;
      const minorVersion = version & 255;
      return `${majorVersion}.${minorVersion}`;
    }
    exports2.versionToString = versionToString;
    function versionFromString(verString) {
      const split = verString.split(".");
      if (split.length < 2) {
        return void 0;
      }
      const majorVersion = parseInt(split[0], 10);
      const minorVersion = parseInt(split[1], 10);
      return versionFromMajorMinor(majorVersion, minorVersion);
    }
    exports2.versionFromString = versionFromString;
    function versionFromMajorMinor(major, minor) {
      if (isNaN(major) || isNaN(minor)) {
        return void 0;
      }
      if (major > 255 || minor > 255) {
        return void 0;
      }
      const value = major * 256 + minor;
      if (PythonVersion[value] === void 0) {
        return void 0;
      }
      if (!is3x(value)) {
        return void 0;
      }
      return value;
    }
    exports2.versionFromMajorMinor = versionFromMajorMinor;
    function is3x(version) {
      return version >> 8 === 3;
    }
    exports2.is3x = is3x;
  }
});

// node_modules/@zzzen/pyright-internal/dist/common/timing.js
var require_timing = __commonJS({
  "node_modules/@zzzen/pyright-internal/dist/common/timing.js"(exports2) {
    "use strict";
    Object.defineProperty(exports2, "__esModule", { value: true });
    exports2.timingStats = exports2.TimingStats = exports2.TimingStat = exports2.Duration = void 0;
    var Duration = class {
      constructor() {
        this._startTime = Date.now();
      }
      getDurationInMilliseconds() {
        const curTime = Date.now();
        return curTime - this._startTime;
      }
      getDurationInSeconds() {
        return this.getDurationInMilliseconds() / 1e3;
      }
    };
    exports2.Duration = Duration;
    var TimingStat = class {
      constructor() {
        this.totalTime = 0;
        this.callCount = 0;
        this.isTiming = false;
      }
      timeOperation(callback) {
        this.callCount++;
        if (this.isTiming) {
          return callback();
        } else {
          this.isTiming = true;
          const duration = new Duration();
          const result = callback();
          this.totalTime += duration.getDurationInMilliseconds();
          this.isTiming = false;
          return result;
        }
      }
      subtractFromTime(callback) {
        if (this.isTiming) {
          this.isTiming = false;
          const duration = new Duration();
          callback();
          this.totalTime -= duration.getDurationInMilliseconds();
          this.isTiming = true;
        } else {
          callback();
        }
      }
      printTime() {
        const totalTimeInSec = this.totalTime / 1e3;
        const roundedTime = Math.round(totalTimeInSec * 100) / 100;
        return roundedTime.toString() + "sec";
      }
    };
    exports2.TimingStat = TimingStat;
    var TimingStats = class {
      constructor() {
        this.totalDuration = new Duration();
        this.findFilesTime = new TimingStat();
        this.readFileTime = new TimingStat();
        this.tokenizeFileTime = new TimingStat();
        this.parseFileTime = new TimingStat();
        this.resolveImportsTime = new TimingStat();
        this.cycleDetectionTime = new TimingStat();
        this.bindTime = new TimingStat();
        this.typeCheckerTime = new TimingStat();
        this.typeEvaluationTime = new TimingStat();
      }
      printSummary(console2) {
        console2.info(`Completed in ${this.totalDuration.getDurationInSeconds()}sec`);
      }
      printDetails(console2) {
        console2.info("");
        console2.info("Timing stats");
        console2.info("Find Source Files:    " + this.findFilesTime.printTime());
        console2.info("Read Source Files:    " + this.readFileTime.printTime());
        console2.info("Tokenize:             " + this.tokenizeFileTime.printTime());
        console2.info("Parse:                " + this.parseFileTime.printTime());
        console2.info("Resolve Imports:      " + this.resolveImportsTime.printTime());
        console2.info("Bind:                 " + this.bindTime.printTime());
        console2.info("Check:                " + this.typeCheckerTime.printTime());
        console2.info("Detect Cycles:        " + this.cycleDetectionTime.printTime());
      }
      getTotalDuration() {
        return this.totalDuration.getDurationInSeconds();
      }
    };
    exports2.TimingStats = TimingStats;
    exports2.timingStats = new TimingStats();
  }
});

// node_modules/@zzzen/pyright-internal/dist/localization/package.nls.en-us.json
var require_package_nls_en_us = __commonJS({
  "node_modules/@zzzen/pyright-internal/dist/localization/package.nls.en-us.json"(exports2, module2) {
    module2.exports = {
      Diagnostic: {
        annotatedParamCountMismatch: "Parameter annotation count mismatch: expected {expected} but received {received}",
        annotatedTypeArgMissing: 'Expected one type argument and one or more annotations for "Annotated"',
        annotationFormatString: "Type annotations cannot use format string literals (f-strings)",
        annotationNotSupported: "Type annotation not supported for this type of expression",
        annotationSpansStrings: "Type annotations cannot span multiple string literals",
        annotationStringEscape: "Type annotations cannot contain escape characters",
        argAssignment: 'Argument of type "{argType}" cannot be assigned to parameter of type "{paramType}"',
        argAssignmentFunction: 'Argument of type "{argType}" cannot be assigned to parameter of type "{paramType}" in function "{functionName}"',
        argAssignmentParam: 'Argument of type "{argType}" cannot be assigned to parameter "{paramName}" of type "{paramType}"',
        argAssignmentParamFunction: 'Argument of type "{argType}" cannot be assigned to parameter "{paramName}" of type "{paramType}" in function "{functionName}"',
        argMissingForParam: "Argument missing for parameter {name}",
        argMissingForParams: "Arguments missing for parameters {names}",
        argMorePositionalExpectedCount: "Expected {expected} more positional arguments",
        argMorePositionalExpectedOne: "Expected 1 more positional argument",
        argPositional: "Expected positional argument",
        argPositionalExpectedCount: "Expected {expected} positional arguments",
        argPositionalExpectedOne: "Expected 1 positional argument",
        argTypePartiallyUnknown: "Argument type is partially unknown",
        argTypeUnknown: "Argument type is unknown",
        assertAlwaysTrue: "Assert expression always evaluates to true",
        assertTypeArgs: '"assert_type" expects two positional arguments',
        assertTypeTypeMismatch: '"assert_type" mismatch: expected "{expected}" but received "{received}"',
        assignmentExprContext: "Assignment expression must be within module, function or lambda",
        assignmentExprComprehension: 'Assignment expression target "{name}" cannot use same name as comprehension for target',
        assignmentInProtocol: "Instance or class variables within a Protocol class must be explicitly declared within the class body",
        assignmentExprInSubscript: "Assignment expressions within a subscript are supported only in Python 3.10 and newer",
        assignmentTargetExpr: "Expression cannot be assignment target",
        asyncNotInAsyncFunction: 'Use of "async" not allowed outside of async function',
        awaitIllegal: 'Use of "await" requires Python 3.5 or newer',
        awaitNotInAsync: '"await" allowed only within async function',
        backticksIllegal: "Expressions surrounded by backticks are not supported in Python 3.x; use repr instead",
        baseClassCircular: "Class cannot derive from itself",
        baseClassFinal: 'Base class "{type}" is marked final and cannot be subclassed',
        baseClassInvalid: "Argument to class must be a base class",
        baseClassMethodTypeIncompatible: 'Base classes for class "{classType}" define method "{name}" in incompatible way',
        baseClassVariableTypeIncompatible: 'Base classes for class "{classType}" define variable "{name}" in incompatible way',
        baseClassUnknown: "Base class type is unknown, obscuring type of derived class",
        bindTypeMismatch: 'Could not bind method "{methodName}" because "{type}" is not assignable to parameter "{paramName}"',
        breakOutsideLoop: '"break" can be used only within a loop',
        callableExtraArgs: 'Expected only two type arguments to "Callable"',
        callableFirstArg: 'Expected parameter type list or "..."',
        callableSecondArg: 'Expected return type as second type argument for "Callable"',
        casePatternIsIrrefutable: "Irrefutable pattern is allowed only for the last case statement",
        classAlreadySpecialized: 'Type "{type}" is already specialized',
        classDecoratorTypeUnknown: "Untyped class decorator obscures type of class; ignoring decorator",
        classDefinitionCycle: 'Class definition for "{name}" depends on itself',
        classGetItemClsParam: '__class_getitem__ override should take a "cls" parameter',
        classMethodClsParam: 'Class methods should take a "cls" parameter',
        classNotRuntimeSubscriptable: 'Subscript for class "{name}" will generate runtime exception; enclose type annotation in quotes',
        classPatternBuiltInArgCount: "Class pattern accepts at most 1 positional sub-pattern",
        classPatternBuiltInArgPositional: "Class pattern accepts only positional sub-pattern",
        classPatternTypeAlias: '"{type}" cannot be used in a class pattern because it is a specialized type alias',
        classVarNotAllowed: '"ClassVar" is not allowed in this context',
        classVarFirstArgMissing: 'Expected a type argument after "ClassVar"',
        classVarOverridesInstanceVar: 'Class variable "{name}" overrides instance variable of same name in class "{className}"',
        classVarTooManyArgs: 'Expected only one type argument after "ClassVar"',
        classVarWithTypeVar: '"ClassVar" type cannot include type variables',
        clsSelfParamTypeMismatch: 'Type of parameter "{name}" must be a supertype of its class "{classType}"',
        codeTooComplexToAnalyze: "Code is too complex to analyze; reduce complexity by refactoring into subroutines or reducing conditional code paths",
        comparisonAlwaysFalse: 'Condition will always evaluate to False since the types "{leftType}" and "{rightType}" have no overlap',
        comparisonAlwaysTrue: 'Condition will always evaluate to True since the types "{leftType}" and "{rightType}" have no overlap',
        comprehensionInDict: "Comprehension cannot be used with other dictionary entries",
        comprehensionInSet: "Comprehension cannot be used with other set entries",
        concatenateParamSpecMissing: 'Last type argument for "Concatenate" must be a ParamSpec',
        concatenateTypeArgsMissing: '"Concatenate" requires at least two type arguments',
        constantRedefinition: '"{name}" is constant (because it is uppercase) and cannot be redefined',
        constructorParametersMismatch: 'Mismatch between signature of __new__ and __init__ in class "{classType}"',
        continueInFinally: '"continue" cannot be used within a finally clause',
        continueOutsideLoop: '"continue" can be used only within a loop',
        constructorNoArgs: 'Expected no arguments to "{type}" constructor',
        dataClassBaseClassNotFrozen: "A frozen class cannot inherit from a class that is not frozen",
        dataClassFieldWithDefault: "Fields without default values cannot appear after fields with default values",
        dataClassFieldWithoutAnnotation: "Dataclass field without type annotation will cause runtime exception",
        dataClassPostInitParamCount: "Dataclass __post_init__ incorrect parameter count; number of InitVar fields is {expected}",
        dataClassPostInitType: 'Dataclass __post_init__ method parameter type mismatch for field "{fieldName}"',
        dataClassSlotsOverwrite: "__slots__ is already defined in class",
        dataClassTransformExpectedBoolLiteral: "Expected expression that statically evaluates to True or False",
        dataClassTransformFieldSpecifier: 'Expected tuple of classes or functions but received type "{type}"',
        dataClassTransformPositionalParam: 'All arguments to "dataclass_transform" must be keyword arguments',
        dataClassTransformUnknownArgument: 'Argument "{name}" is not supported by dataclass_transform',
        declaredReturnTypePartiallyUnknown: 'Declared return type, "{returnType}", is partially unknown',
        declaredReturnTypeUnknown: "Declared return type is unknown",
        defaultValueContainsCall: "Function calls and mutable objects not allowed within parameter default value expression",
        defaultValueNotAllowed: 'Parameter with "*" or "**" cannot have default value',
        defaultValueNotEllipsis: 'Default values in stub files should be specified as "..."',
        deprecatedType: 'This type is deprecated as of Python {version}; use "{replacement}" instead',
        delTargetExpr: "Expression cannot be deleted",
        dictExpandIllegalInComprehension: "Dictionary expansion not allowed in comprehension",
        dictInAnnotation: "Dictionary expression not allowed in type annotation",
        dictKeyValuePairs: "Dictionary entries must contain key/value pairs",
        dictUnpackIsNotMapping: "Expected mapping for dictionary unpack operator",
        dunderAllSymbolNotPresent: '"{name}" is specified in __all__ but is not present in module',
        duplicateArgsParam: 'Only one "*" parameter allowed',
        duplicateBaseClass: "Duplicate base class not allowed",
        duplicateCatchAll: "Only one catch-all except clause allowed",
        duplicateEnumMember: 'Enum member "{name}" is already declared',
        duplicateGenericAndProtocolBase: "Only one Generic[...] or Protocol[...] base class allowed",
        duplicateImport: '"{importName}" is imported more than once',
        duplicateKwargsParam: 'Only one "**" parameter allowed',
        duplicateKeywordOnly: 'Only one "*" separator allowed',
        duplicateParam: 'Duplicate parameter "{name}"',
        duplicateCapturePatternTarget: 'Capture target "{name}" cannot appear more than once within the same pattern',
        duplicateStarPattern: 'Only one "*" pattern allowed in a pattern sequence',
        duplicateStarStarPattern: 'Only one "**" entry allowed',
        duplicatePositionOnly: 'Only one "/" parameter allowed',
        duplicateUnpack: "Only one unpack operation allowed in list",
        ellipsisContext: '"..." not allowed in this context',
        ellipsisSecondArg: '"..." allowed only as the second of two arguments',
        enumClassOverride: 'Enum class "{name}" is final and cannot be subclassed',
        exceptionGroupIncompatible: 'Exception group syntax ("except*") requires Python 3.11 or newer',
        exceptionTypeIncorrect: '"{type}" does not derive from BaseException',
        exceptionTypeNotClass: '"{type}" is not valid exception class',
        exceptionTypeNotInstantiable: 'Constructor for exception type "{type}" requires one or more arguments',
        expectedAfterDecorator: "Expected function or class declaration after decorator",
        expectedArrow: 'Expected "->" followed by return type annotation',
        expectedAsAfterException: 'Expected "as" after exception type',
        expectedAssignRightHandExpr: 'Expected expression to the right of "="',
        expectedBinaryRightHandExpr: "Expected expression to the right of operator",
        expectedBoolLiteral: "Expected True or False",
        expectedCase: 'Expected "case" statement',
        expectedClassName: "Expected class name",
        expectedCloseBrace: '"{" was not closed',
        expectedCloseBracket: '"[" was not closed',
        expectedCloseParen: '"(" was not closed',
        expectedColon: 'Expected ":"',
        expectedComplexNumberLiteral: "Expected complex number literal for pattern matching",
        expectedDecoratorExpr: "Expression form not supported for decorator prior to Python 3.9",
        expectedDecoratorName: "Expected decorator name",
        expectedDecoratorNewline: "Expected new line at end of decorator",
        expectedDelExpr: 'Expected expression after "del"',
        expectedElse: 'Expected "else"',
        expectedExceptionClass: "Invalid exception class or object",
        expectedExceptionObj: "Expected exception object, exception class or None",
        expectedExpr: "Expected expression",
        expectedIdentifier: "Expected identifier",
        expectedImport: 'Expected "import"',
        expectedImportAlias: 'Expected symbol after "as"',
        expectedImportSymbols: "Expected one or more symbol names after import",
        expectedIndentedBlock: "Expected indented block",
        expectedInExpr: 'Expected expression after "in"',
        expectedIn: 'Expected "in"',
        expectedFunctionAfterAsync: 'Expected function definition after "async"',
        expectedFunctionName: 'Expected function name after "def"',
        expectedMemberName: 'Expected member name after "."',
        expectedModuleName: "Expected module name",
        expectedNameAfterAs: 'Expected symbol name after "as"',
        expectedNamedParameter: 'Keyword parameter must follow "*"',
        expectedNewline: "Expected newline",
        expectedNewlineOrSemicolon: "Statements must be separated by newlines or semicolons",
        expectedOpenParen: 'Expected "("',
        expectedParamName: "Expected parameter name",
        expectedPatternExpr: "Expected pattern expression",
        expectedPatternSubjectExpr: "Expected pattern subject expression",
        expectedPatternValue: 'Expected pattern value expression of the form "a.b"',
        expectedReturnExpr: 'Expected expression after "return"',
        expectedSliceIndex: "Expected index or slice expression",
        expectedTypeNotString: "Expected type but received a string literal",
        expectedYieldExpr: "Expected expression in yield statement",
        finalClassIsAbstract: 'Class "{type}" is marked final and must implement all abstract methods',
        finalContext: '"Final" not allowed in this context',
        finalMethodOverride: 'Method "{name}" cannot override final method defined in class "{className}"',
        finalReassigned: '"{name}" is declared as Final and cannot be reassigned',
        finalRedeclaration: '"{name}" was previously declared as Final',
        finalRedeclarationBySubclass: '"{name}" cannot be redeclared because parent class "{className}" declares it as Final',
        finalTooManyArgs: 'Expected a single type argument after "Final"',
        finalUnassigned: '"{name}" is declared Final, but value is not assigned',
        formatStringBrace: "Single close brace not allowed within f-string literal; use double close brace",
        formatStringBytes: "Format string literals (f-strings) cannot be binary",
        formatStringEscape: "Escape sequence (backslash) not allowed in expression portion of f-string",
        formatStringInPattern: "Format string not allowed in pattern",
        formatStringUnicode: "Format string literals (f-strings) cannot be unicode",
        formatStringIllegal: "Format string literals (f-strings) require Python 3.6 or newer",
        formatStringUnterminated: "Unterminated expression in f-string; missing close brace",
        functionDecoratorTypeUnknown: "Untyped function decorator obscures type of function; ignoring decorator",
        functionInConditionalExpression: "Conditional expression references function which always evaluates to True",
        generatorAsyncReturnType: 'Return type of async generator function must be "AsyncGenerator" or "AsyncIterable"',
        generatorNotParenthesized: "Generator expressions must be parenthesized if not sole argument",
        generatorSyncReturnType: 'Return type of generator function must be "Generator" or "Iterable"',
        genericClassAssigned: "Generic class type cannot be assigned",
        genericClassDeleted: "Generic class type cannot be deleted",
        genericNotAllowed: '"Generic" is not valid in this context',
        genericTypeAliasBoundTypeVar: "Generic type alias within class cannot use bound type variables {names}",
        genericTypeArgMissing: '"Generic" requires at least one type argument',
        genericTypeArgTypeVar: 'Type argument for "Generic" must be a type variable',
        genericTypeArgUnique: 'Type arguments for "Generic" must be unique',
        globalReassignment: '"{name}" is assigned before global declaration',
        globalRedefinition: '"{name}" was already declared global',
        implicitStringConcat: "Implicit string concatenation not allowed",
        importCycleDetected: "Cycle detected in import chain",
        importDepthExceeded: "Import chain depth exceeded {depth}",
        importResolveFailure: 'Import "{importName}" could not be resolved',
        importSourceResolveFailure: 'Import "{importName}" could not be resolved from source',
        importSymbolUnknown: '"{name}" is unknown import symbol',
        incompatibleMethodOverride: 'Method "{name}" overrides class "{className}" in an incompatible manner',
        inconsistentIndent: "Unindent amount does not match previous indent",
        initMustReturnNone: 'Return type of "__init__" must be None',
        inconsistentTabs: "Inconsistent use of tabs and spaces in indentation",
        initSubclassClsParam: '__init_subclass__ override should take a "cls" parameter',
        instanceMethodSelfParam: 'Instance methods should take a "self" parameter',
        instanceVarOverridesClassVar: 'Instance variable "{name}" overrides class variable of same name in class "{className}"',
        instantiateAbstract: 'Cannot instantiate abstract class "{type}"',
        instantiateProtocol: 'Cannot instantiate protocol class "{type}"',
        internalBindError: 'An internal error occurred while binding file "{file}": {message}',
        internalParseError: 'An internal error occurred while parsing file "{file}": {message}',
        internalTypeCheckingError: 'An internal error occurred while type checking file "{file}": {message}',
        invalidIdentifierChar: "Invalid character in identifier",
        invalidStubStatement: "Statement is meaningless within a type stub file",
        invalidTokenChars: 'Invalid character "{text}" in token',
        isInstanceInvalidType: 'Second argument to "isinstance" must be a class or tuple of classes',
        isSubclassInvalidType: 'Second argument to "issubclass" must be a class or tuple of classes',
        keyValueInSet: "Key/value pairs are not allowed within a set",
        keywordArgInTypeArgument: "Keyword arguments cannot be used in type argument lists",
        keywordOnlyAfterArgs: 'Keyword-only argument separator not allowed after "*" parameter',
        keywordSubscriptIllegal: "Keyword arguments within subscripts are not supported",
        lambdaReturnTypeUnknown: "Return type of lambda is unknown",
        lambdaReturnTypePartiallyUnknown: 'Return type of lambda, "{returnType}", is partially unknown',
        listAssignmentMismatch: 'Expression with type "{type}" cannot be assigned to target list',
        listInAnnotation: "List expression not allowed in type annotation",
        literalUnsupportedType: 'Type arguments for "Literal" must be None, a literal value (int, bool, str, or bytes), or an enum value',
        literalEmptyArgs: 'Expected one or more type arguments after "Literal"',
        literalNotCallable: "Literal type cannot be instantiated",
        matchIncompatible: "Match statements require Python 3.10 or newer",
        matchIsNotExhaustive: "Cases within match statement do not exhaustively handle all values",
        maxParseDepthExceeded: "Maximum parse depth exceeded; break expression into smaller sub-expressions",
        memberAccess: 'Cannot access member "{name}" for type "{type}"',
        memberDelete: 'Cannot delete member "{name}" for type "{type}"',
        memberSet: 'Cannot assign member "{name}" for type "{type}"',
        metaclassConflict: "The metaclass of a derived class must be a subclass of the metaclasses of all its base classes",
        metaclassDuplicate: "Only one metaclass can be provided",
        metaclassIsGeneric: "Metaclass cannot be generic",
        methodNotDefined: '"{name}" method not defined',
        methodNotDefinedOnType: '"{name}" method not defined on type "{type}"',
        methodOrdering: "Cannot create consistent method ordering",
        methodOverridden: '"{name}" overrides method of same name in class "{className}" with incompatible type "{type}"',
        methodReturnsNonObject: '"{name}" method does not return an object',
        missingProtocolMembers: "Class derives from one or more protocol classes but does not implement all required members",
        missingSuperCall: 'Method "{methodName}" does not call the method of the same name in parent class',
        moduleAsType: "Module cannot be used as a type",
        moduleNotCallable: "Module is not callable",
        moduleUnknownMember: '"{name}" is not a known member of module',
        namedExceptAfterCatchAll: "A named except clause cannot appear after catch-all except clause",
        namedParamAfterParamSpecArgs: 'Keyword parameter "{name}" cannot appear in signature after ParamSpec args parameter',
        namedTupleEmptyName: "Names within a named tuple cannot be empty",
        namedTupleMultipleInheritance: "Multiple inheritance with NamedTuple is not supported",
        namedTupleFirstArg: "Expected named tuple class name as first argument",
        namedTupleNameType: "Expected two-entry tuple specifying entry name and type",
        namedTupleNameUnique: "Names within a named tuple must be unique",
        namedTupleNoTypes: '"namedtuple" provides no types for tuple entries; use "NamedTuple" instead',
        namedTupleSecondArg: "Expected named tuple entry list as second argument",
        newClsParam: '__new__ override should take a "cls" parameter',
        newTypeLiteral: "NewType cannot be used with Literal type",
        newTypeNotAClass: "Expected class as second argument to NewType",
        newTypeProtocolClass: "NewType cannot be used with protocol class",
        nonDefaultAfterDefault: "Non-default argument follows default argument",
        noneNotCallable: 'Object of type "None" cannot be called',
        noneNotIterable: 'Object of type "None" cannot be used as iterable value',
        noneOperator: 'Operator "{operator}" not supported for "None"',
        noneNotSubscriptable: 'Object of type "None" is not subscriptable',
        noneNotUsableWith: 'Object of type "None" cannot be used with "with"',
        noneUnknownMember: '"{name}" is not a known member of "None"',
        nonLocalNoBinding: 'No binding for nonlocal "{name}" found',
        nonLocalReassignment: '"{name}" is assigned before nonlocal declaration',
        nonLocalRedefinition: '"{name}" was already declared nonlocal',
        nonLocalInModule: "Nonlocal declaration not allowed at module level",
        noOverload: 'No overloads for "{name}" match the provided arguments',
        noReturnContainsReturn: 'Function with declared return type "NoReturn" cannot include a return statement',
        noReturnContainsYield: 'Function with declared return type "NoReturn" cannot include a yield statement',
        noReturnReturnsNone: 'Function with declared type of "NoReturn" cannot return "None"',
        notRequiredArgCount: 'Expected a single type argument after "NotRequired"',
        notRequiredNotInTypedDict: '"NotRequired" is not allowed in this context',
        objectNotCallable: 'Object of type "{type}" is not callable',
        obscuredClassDeclaration: 'Class declaration "{name}" is obscured by a declaration of the same name',
        obscuredFunctionDeclaration: 'Function declaration "{name}" is obscured by a declaration of the same name',
        obscuredMethodDeclaration: 'Method declaration "{name}" is obscured by a declaration of the same name',
        obscuredParameterDeclaration: 'Parameter declaration "{name}" is obscured by a declaration of the same name',
        obscuredVariableDeclaration: 'Declaration "{name}" is obscured by a declaration of the same name',
        operatorLessOrGreaterDeprecated: 'Operator "<>" is not supported in Python 3; use "!=" instead',
        optionalExtraArgs: 'Expected one type argument after "Optional"',
        orPatternIrrefutable: 'Irrefutable pattern allowed only as the last subpattern in an "or" pattern',
        orPatternMissingName: 'All subpatterns within an "or" pattern must target the same names',
        overlappingOverload: 'Overload {obscured} for "{name}" will never be used because its parameters overlap overload {obscuredBy}',
        overloadAbstractMismatch: "Overloaded methods must all be abstract or not",
        overloadImplementationMismatch: "Overloaded implementation is not consistent with signature of overload {index}",
        overloadReturnTypeMismatch: 'Overload {prevIndex} for "{name}" overlaps overload {newIndex} and returns an incompatible type',
        overloadWithImplementation: '"{name}" is marked as overload, but it includes an implementation',
        overloadWithoutImplementation: '"{name}" is marked as overload, but no implementation is provided',
        paramAfterKwargsParam: 'Parameter cannot follow "**" parameter',
        paramAlreadyAssigned: 'Parameter "{name}" is already assigned',
        paramAnnotationMissing: 'Type annotation is missing for parameter "{name}"',
        paramNameMissing: 'No parameter named "{name}"',
        paramSpecArgsKwargsUsage: '"args" and "kwargs" members of ParamSpec must both appear within a function signature',
        paramSpecArgsMissing: 'Arguments for ParamSpec "{type}" are missing',
        paramSpecArgsUsage: '"args" member of ParamSpec is valid only when used with *args parameter',
        paramSpecAssignedName: 'ParamSpec must be assigned to a variable named "{name}"',
        paramSpecContext: "ParamSpec not allowed in this context",
        paramSpecFirstArg: "Expected name of ParamSpec as first argument",
        paramSpecKwargsUsage: '"kwargs" member of ParamSpec is valid only when used with **kwargs parameter',
        paramSpecNotBound: 'Param spec "{type}" has no bound value',
        paramSpecNotUsedByOuterScope: 'ParamSpec "{name}" has no meaning in this context',
        paramSpecUnknownArg: "ParamSpec does not support more than one argument",
        paramSpecUnknownMember: '"{name}" is not a known member of ParamSpec',
        paramSpecUnknownParam: '"{name}" is unknown parameter to ParamSpec',
        paramAssignmentMismatch: 'Expression of type "{sourceType}" cannot be assigned to parameter of type "{paramType}"',
        paramTypeCovariant: "Covariant type variable cannot be used in parameter type",
        paramTypeUnknown: 'Type of parameter "{paramName}" is unknown',
        paramTypePartiallyUnknown: 'Type of parameter "{paramName}" is partially unknown',
        parenthesizedContextManagerIllegal: 'Parentheses within "with" statement requires Python 3.9 or newer',
        positionArgAfterNamedArg: "Positional argument cannot appear after keyword arguments",
        privateImportFromPyTypedModule: '"{name}" is not exported from module "{module}"',
        positionOnlyAfterArgs: 'Position-only argument separator not allowed after "*" parameter',
        positionOnlyAfterKeywordOnly: '"/" parameter must appear before "*" parameter',
        positionOnlyIncompatible: "Position-only argument separator requires Python 3.8 or newer",
        positionOnlyFirstParam: "Position-only argument separator not allowed as first parameter",
        privateUsedOutsideOfClass: '"{name}" is private and used outside of the class in which it is declared',
        privateUsedOutsideOfModule: '"{name}" is private and used outside of the module in which it is declared',
        propertyOverridden: '"{name}" incorrectly overrides property of same name in class "{className}"',
        propertyStaticMethod: "Static methods not allowed for property getter, setter or deleter",
        protectedUsedOutsideOfClass: '"{name}" is protected and used outside of the class in which it is declared',
        protocolBaseClass: 'Protocol class "{classType}" cannot derive from non-protocol class "{baseType}"',
        protocolIllegal: 'Use of "Protocol" requires Python 3.7 or newer',
        protocolMemberNotClassVar: 'Protocol class "{className}" does not define "{memberName}" as a ClassVar',
        protocolNotAllowedInTypeArgument: '"Protocol" cannot be used as a type argument',
        protocolVarianceContravariant: 'Type variable "{variable}" used in generic protocol "{class}" should be contravariant',
        protocolVarianceCovariant: 'Type variable "{variable}" used in generic protocol "{class}" should be covariant',
        protocolVarianceInvariant: 'Type variable "{variable}" used in generic protocol "{class}" should be invariant',
        protocolUsedInCall: 'Protocol class cannot be used in "{name}" call',
        relativeImportNotAllowed: 'Relative imports cannot be used with "import .a" form; use "from . import a" instead',
        recursiveDefinition: 'Type of "{name}" could not be determined because it refers to itself',
        requiredArgCount: 'Expected a single type argument after "Required"',
        requiredNotInTypedDict: '"Required" is not allowed in this context',
        returnOutsideFunction: '"return" can be used only within a function',
        returnMissing: 'Function with declared type of "{returnType}" must return value',
        returnTypeContravariant: "Contravariant type variable cannot be used in return type",
        returnTypeMismatch: 'Expression of type "{exprType}" cannot be assigned to return type "{returnType}"',
        returnTypeUnknown: "Return type is unknown",
        returnTypePartiallyUnknown: 'Return type, "{returnType}", is partially unknown',
        revealLocalsArgs: 'Expected no arguments for "reveal_locals" call',
        revealLocalsNone: "No locals in this scope",
        revealTypeArgs: 'Expected a single positional argument for "reveal_type" call',
        revealTypeExpectedTextArg: 'The "expected_text" argument for function "reveal_type" must be a str literal value',
        revealTypeExpectedTextMismatch: 'Type text mismatch; expected "{expected}" but received "{received}"',
        revealTypeExpectedTypeMismatch: 'Type mismatch; expected "{expected}" but received "{received}"',
        selfTypeContext: '"Self" is not valid in this context',
        selfTypeWithTypedSelfOrCls: '"Self" cannot be used in a function with a `self` or `cls` parameter that has a type annotation other than "Self"',
        setterGetterTypeMismatch: "Property setter value type is not assignable to the getter return type",
        singleOverload: '"{name}" is marked as overload, but additional overloads are missing',
        slotsAttributeError: '"{name}" is not specified in __slots__',
        slotsClassVarConflict: '"{name}" conflicts with instance variable declared in __slots__',
        starPatternInAsPattern: 'Star pattern cannot be used with "as" target',
        starPatternInOrPattern: "Star pattern cannot be ORed within other patterns",
        starStarWildcardNotAllowed: '** cannot be used with wildcard "_"',
        staticClsSelfParam: 'Static methods should not take a "self" or "cls" parameter',
        strictTypeGuardReturnType: 'Return type of StrictTypeGuard ("{returnType}") is not assignable to value parameter type ("{type}")',
        stringNonAsciiBytes: "Non-ASCII character not allowed in bytes string literal",
        stringNotSubscriptable: "String expression cannot be subscripted in type annotation; enclose entire annotation in quotes",
        stringUnsupportedEscape: "Unsupported escape sequence in string literal",
        stringUnterminated: "String literal is unterminated",
        stubFileMissing: 'Stub file not found for "{importName}"',
        stubUsesGetAttr: 'Type stub file is incomplete; "__getattr__" obscures type errors for module',
        sublistParamsIncompatible: "Sublist parameters are not supported in Python 3.x",
        superCallArgCount: 'Expected no more than two arguments to "super" call',
        superCallFirstArg: 'Expected class type as first argument to "super" call but received "{type}"',
        superCallSecondArg: 'Second argument to "super" call must be object or class that derives from "{type}"',
        superCallZeroArgForm: 'Zero-argument form of "super" call is valid only within a class',
        symbolIsUnbound: '"{name}" is unbound',
        symbolIsUndefined: '"{name}" is not defined',
        symbolIsPossiblyUnbound: '"{name}" is possibly unbound',
        symbolOverridden: '"{name}" overrides symbol of same name in class "{className}"',
        totalOrderingMissingMethod: 'Class must define one of "__lt__", "__le__", "__gt__", or "__ge__" to use total_ordering',
        trailingCommaInFromImport: "Trailing comma not allowed without surrounding parentheses",
        tryWithoutExcept: "Try statement must have at least one except or finally clause",
        tupleAssignmentMismatch: 'Expression with type "{type}" cannot be assigned to target tuple',
        tupleInAnnotation: "Tuple expression not allowed in type annotation",
        tupleIndexOutOfRange: "Index {index} is out of range for type {type}",
        typeAliasIsRecursiveDirect: 'Type alias "{name}" cannot use itself in its definition',
        typeAliasIsRecursiveIndirect: 'Type alias "{name}" cannot refer to itself indirectly in its definition',
        typeAliasNotInModuleOrClass: "A TypeAlias can be defined only within a module or class scope",
        typeAliasRedeclared: '"{name}" is declared as a TypeAlias and can be assigned only once',
        typeArgListExpected: "Expected ParamSpec, ellipsis, or list of types",
        typeArgListNotAllowed: "List expression not allowed for this type argument",
        typeAnnotationCall: "Illegal type annotation: call expression not allowed",
        typeAnnotationVariable: "Illegal type annotation: variable not allowed unless it is a type alias",
        typeArgsExpectingNone: 'Expected no type arguments for class "{name}"',
        typeArgsMismatchOne: "Expected one type argument but received {received}",
        typeArgsMissingForAlias: 'Expected type arguments for generic type alias "{name}"',
        typeArgsMissingForClass: 'Expected type arguments for generic class "{name}"',
        typeArgsTooFew: 'Too few type arguments provided for "{name}"; expected {expected} but received {received}',
        typeArgsTooMany: 'Too many type arguments provided for "{name}"; expected {expected} but received {received}',
        typeAssignmentMismatch: 'Expression of type "{sourceType}" cannot be assigned to declared type "{destType}"',
        typeCallNotAllowed: "type() call should not be used in type annotation",
        typeCommentDeprecated: "Use of type comments is deprecated; use type annotation instead",
        typedDictAccess: "Could not access item in TypedDict",
        typedDictBadVar: "TypedDict classes can contain only type annotations",
        typedDictBaseClass: "All base classes for TypedDict classes must also be TypedDict classes",
        typedDictDelete: "Could not delete item in TypedDict",
        typedDictEmptyName: "Names within a TypedDict cannot be empty",
        typedDictEntryName: "Expected string literal for dictionary entry name",
        typedDictEntryUnique: "Names within a dictionary must be unique",
        typedDictExtraArgs: "Extra TypedDict arguments not supported",
        typedDictFieldRedefinition: 'Type of TypedDict field "{name}" cannot be redefined',
        typedDictFirstArg: "Expected TypedDict class name as first argument",
        typedDictSecondArgDict: "Expected dict or keyword parameter as second parameter",
        typedDictSecondArgDictEntry: "Expected simple dictionary entry",
        typedDictSet: "Could not assign item in TypedDict",
        typedDictTotalParam: 'Expected "total" parameter to have a value of True or False',
        typeExpectedClass: 'Expected class type but received "{type}"',
        typeGuardArgCount: 'Expected a single type argument after "TypeGuard"',
        typeNotAwaitable: '"{type}" is not awaitable',
        typeNotCallable: '"{expression}" has type "{type}" and is not callable',
        typeNotIntantiable: '"{type}" cannot be instantiated',
        typeNotIterable: '"{type}" is not iterable',
        typeNotSpecializable: 'Could not specialize type "{type}"',
        typeNotSubscriptable: 'Object of type "{type}" is not subscriptable',
        typeNotUsableWith: 'Object of type "{type}" cannot be used with "with" because it does not implement {method}',
        typeNotSupportBinaryOperator: 'Operator "{operator}" not supported for types "{leftType}" and "{rightType}"',
        typeNotSupportBinaryOperatorBidirectional: 'Operator "{operator}" not supported for types "{leftType}" and "{rightType}" when expected type is "{expectedType}"',
        typeNotSupportUnaryOperator: 'Operator "{operator}" not supported for type "{type}"',
        typeNotSupportUnaryOperatorBidirectional: 'Operator "{operator}" not supported for type "{type}" when expected type is "{expectedType}"',
        typePartiallyUnknown: 'Type of "{name}" is partially unknown',
        typeUnknown: 'Type of "{name}" is unknown',
        typeVarAssignedName: 'TypeVar must be assigned to a variable named "{name}"',
        typeVarAssignmentMismatch: 'Type "{type}" cannot be assigned to type variable "{name}"',
        typeVarBoundAndConstrained: "TypeVar cannot be both bound and constrained",
        typeVarFirstArg: "Expected name of TypeVar as first argument",
        typeVarGeneric: "TypeVar bound type cannot be generic",
        typeVarNoMember: 'TypeVar "{type}" has no member "{name}"',
        typeVarNotSubscriptable: 'TypeVar "{type}" is not subscriptable',
        typeVarNotUsedByOuterScope: 'Type variable "{name}" has no meaning in this context',
        typeVarPossiblyUnsolvable: 'Type variable "{name}" may go unsolved if caller supplies no argument for parameter "{param}"',
        typeVarSingleConstraint: "TypeVar cannot have only a single constraint",
        typeVarsNotInGenericOrProtocol: "Generic[] or Protocol[] must include all type variables",
        typeVarTupleContext: "TypeVarTuple not allowed in this context",
        typeVarTupleMustBeUnpacked: "Unpack operator is required for TypeVarTuple value",
        typeVarUnknownParam: '"{name}" is unknown parameter to TypeVar',
        typeVarUsedByOuterScope: 'TypeVar "{name}" is already in use by an outer scope',
        typeVarUsedOnlyOnce: 'TypeVar "{name}" appears only once in generic function signature',
        typeVarVariance: "TypeVar cannot be both covariant and contravariant",
        unaccessedClass: 'Class "{name}" is not accessed',
        unaccessedFunction: 'Function "{name}" is not accessed',
        unaccessedImport: 'Import "{name}" is not accessed',
        unaccessedSymbol: '"{name}" is not accessed',
        unaccessedVariable: 'Variable "{name}" is not accessed',
        unexpectedAsyncToken: 'Expected "def", "with" or "for" to follow "async"',
        unexpectedExprToken: "Unexpected token at end of expression",
        unexpectedIndent: "Unexpected indentation",
        unexpectedUnindent: "Unindent not expected",
        unionSyntaxIllegal: "Alternative syntax for unions requires Python 3.10 or newer",
        unionTypeArgCount: "Union requires two or more type arguments",
        uninitializedInstanceVariable: 'Instance variable "{name}" is not initialized in the class body or __init__ method',
        unnecessaryCast: 'Unnecessary "cast" call; type is already "{type}"',
        unnecessaryIsInstanceAlways: 'Unnecessary isinstance call; "{testType}" is always an instance of "{classType}"',
        unnecessaryIsSubclassAlways: 'Unnecessary issubclass call; "{testType}" is always a subclass of "{classType}"',
        unnecessaryPyrightIgnore: 'Unnecessary "# pyright: ignore" comment',
        unnecessaryPyrightIgnoreRule: 'Unnecessary "# pyright: ignore" rule: "{name}"',
        unnecessaryTypeIgnore: 'Unnecessary "# type: ignore" comment',
        unpackArgCount: 'Expected a single type argument after "Unpack"',
        unpackedArgInTypeArgument: "Unpacked arguments cannot be used in type argument lists",
        unpackedArgWithVariadicParam: "Unpacked argument cannot be used for TupleTypeVar parameter",
        unpackedDictArgumentNotMapping: 'Argument expression after ** must be a mapping with a "str" key type',
        unpackedSubscriptIllegal: "Unpack operator in subscript requires Python 3.11 or newer",
        unpackedTypedDictArgument: "Unable to match unpacked TypedDict argument to parameters",
        unpackedTypeVarTupleExpected: "Expected unpacked TypeVarTuple; use Unpack[{name1}] or *{name2}",
        unpackExpectedTypedDict: "Expected TypedDict type argument for Unpack",
        unpackExpectedTypeVarTuple: "Expected TypeVarTuple or Tuple as type argument for Unpack",
        unpackIllegalInComprehension: "Unpack operation not allowed in comprehension",
        unpackInAnnotation: "Unpack operator not allowed in type annotation",
        unpackInDict: "Unpack operation not allowed in dictionaries",
        unpackInSet: "Unpack operator not allowed within a set",
        unpackNotAllowed: "Unpack not allowed in this context",
        unpackOperatorNotAllowed: "Unpack operation not allowed in this context",
        unpackTuplesIllegal: "Unpack operation not allowed in tuples prior to Python 3.8",
        unreachableCode: "Code is unreachable",
        unreachableExcept: "Except clause is unreachable because exception is already handled",
        unsupportedDunderAllOperation: 'Operation on "__all__" is not supported, so exported symbol list may be incorrect',
        unusedCallResult: 'Result of call expression is of type "{type}" and is not used; assign to variable "_" if this is intentional',
        unusedCoroutine: 'Result of async function call is not used; use "await" or assign result to variable',
        unusedExpression: "Expression value is unused",
        varAnnotationIllegal: "Type annotations for variables requires Python 3.6 or newer; use type comment for compatibility with previous versions",
        variadicTypeArgsTooMany: "Type argument list can have at most one unpacked TypeVarTuple or Tuple",
        variadicTypeParamTooManyAlias: "Type alias can have at most one TypeVarTuple type parameter but received multiple ({names})",
        variadicTypeParamTooManyClass: "Generic class can have at most one TypeVarTuple type parameter but received multiple ({names})",
        walrusIllegal: 'Operator ":=" requires Python 3.8 or newer',
        walrusNotAllowed: 'Operator ":=" not allowed in this context',
        wildcardInFunction: "Wildcard import not allowed within a class or function",
        wildcardLibraryImport: "Wildcard import from a library not allowed",
        yieldFromIllegal: 'Use of "yield from" requires Python 3.3 or newer',
        yieldFromOutsideAsync: '"yield from" not allowed in an async function',
        yieldOutsideFunction: '"yield" not allowed outside of a function or lambda',
        yieldTypeMismatch: 'Expression of type "{exprType}" cannot be assigned to yield type "{yieldType}"',
        yieldWithinListCompr: '"yield" not allowed inside a list comprehension',
        zeroCaseStatementsFound: "Match statement must include at least one case statement",
        zeroLengthTupleNotAllowed: "Zero-length tuple not allowed in this context"
      },
      DiagnosticAddendum: {
        argParam: 'Argument corresponds to parameter "{paramName}"',
        argParamFunction: 'Argument corresponds to parameter "{paramName}" in function "{functionName}"',
        argsParamMissing: 'Parameter "*{paramName}" has no corresponding parameter',
        argsPositionOnly: "Position-only parameter mismatch; expected {expected} but received {received}",
        argumentType: 'Argument type is "{type}"',
        argumentTypes: "Argument types: ({types})",
        assignToNone: 'Type cannot be assigned to type "None"',
        asyncHelp: 'Did you mean "async with"?',
        baseClassProvidesType: 'Base class "{baseClass}" provides type "{type}"',
        dataClassFieldLocation: "Field declaration",
        dataClassFrozen: '"{name}" is frozen',
        finalMethod: "Final method",
        keyNotRequired: '"{name}" is not a required key in "{type}", so access may result in runtime exception',
        keyRequiredDeleted: '"{name}" is a required key and cannot be deleted',
        keyUndefined: '"{name}" is not a defined key in "{type}"',
        functionParamDefaultMissing: 'Parameter "{name}" is missing default argument',
        functionParamName: 'Parameter name mismatch: "{destName}" versus "{srcName}"',
        functionReturnTypeMismatch: 'Function return type "{sourceType}" is incompatible with type "{destType}"',
        functionTooFewParams: "Function accepts too few positional parameters; expected {expected} but received {received}",
        functionTooManyParams: "Function accepts too many positional parameters; expected {expected} but received {received}",
        incompatibleGetter: "Property getter method is incompatible",
        incompatibleSetter: "Property setter method is incompatible",
        initMethodLocation: 'The __init__ method is defined in class "{type}"',
        incompatibleDeleter: "Property deleter method is incompatible",
        initMethodSignature: 'Signature of __init__ is "{type}"',
        kwargsParamMissing: 'Parameter "**{paramName}" has no corresponding parameter',
        listAssignmentMismatch: 'Type "{type}" is incompatible with target list',
        literalAssignmentMismatch: '"{sourceType}" cannot be assigned to type "{destType}"',
        matchIsNotExhaustiveType: 'Unhandled type: "{type}"',
        matchIsNotExhaustiveHint: 'If exhaustive handling is not intended, add "case _: pass"',
        memberSetClassVar: 'Member "{name}" cannot be assigned through a class instance because it is a ClassVar',
        memberAssignment: 'Expression of type "{type}" cannot be assigned to member "{name}" of class "{classType}"',
        memberIsAbstract: '"{type}.{name}" is abstract',
        memberIsAbstractMore: "and {count} more...",
        memberIsFinalInProtocol: '"{name}" is marked Final in protocol',
        memberIsInitVar: 'Member "{name}" is an init-only field',
        memberIsInvariant: '"{name}" is invariant because it is mutable',
        memberIsNotFinalInProtocol: '"{name}" is not marked Final in protocol',
        memberTypeMismatch: '"{name}" is an incompatible type',
        memberUnknown: 'Member "{name}" is unknown',
        missingProtocolMember: 'Member "{name}" is declared in protocol class "{classType}"',
        missingGetter: "Property getter method is missing",
        missingSetter: "Property setter method is missing",
        missingDeleter: "Property deleter method is missing",
        namedParamMissingInDest: 'Keyword parameter "{name}" is missing in destination',
        namedParamMissingInSource: 'Keyword parameter "{name}" is missing in source',
        namedParamTypeMismatch: 'Keyword parameter "{name}" of type "{sourceType}" cannot be assigned to type "{destType}"',
        newMethodLocation: 'The __new__ method is defined in class "{type}"',
        newMethodSignature: 'Signature of __new__ is "{type}"',
        noOverloadAssignable: 'No overloaded function matches type "{type}"',
        orPatternMissingName: "Missing names: {name}",
        overloadSignature: "Overload signature is defined here",
        overloadNotAssignable: 'One or more overloads of "{name}" is not assignable',
        overloadWithImplementation: 'The body of a function overload should be "..."',
        overriddenMethod: "Overridden method",
        overriddenSymbol: "Overridden symbol",
        overrideNotClassMethod: "Base method is declared as a classmethod but override is not",
        overrideNotInstanceMethod: "Base method is declared as an instance method but override is not",
        overrideNotStaticMethod: "Base method is declared as a staticmethod but override is not",
        overrideParamKeywordNoDefault: 'Keyword parameter "{name}" mismatch: base parameter has default argument value, override parameter does not',
        overrideParamKeywordType: 'Keyword parameter "{name}" type mismatch: base parameter is type "{baseType}", override parameter is type "{overrideType}"',
        overrideParamName: 'Parameter {index} name mismatch: base parameter is named "{baseName}", override parameter is named "{overrideName}"',
        overrideParamNameExtra: 'Parameter "{name}" is missing in base',
        overrideParamNameMissing: 'Parameter "{name}" is missing in override',
        overrideParamNamePositionOnly: 'Parameter {index} name mismatch: base parameter is named "{baseName}", override parameter is position-only"',
        overrideParamNoDefault: "Parameter {index} mismatch: base parameter has default argument value, override parameter does not",
        overrideParamType: 'Parameter {index} type mismatch: base parameter is type "{baseType}", override parameter is type "{overrideType}"',
        overridePositionalParamCount: "Positional parameter count mismatch; base method has {baseCount}, but override has {overrideCount}",
        overrideReturnType: 'Return type mismatch: base method returns type "{baseType}", override returns type "{overrideType}"',
        overrideType: 'Base class defines type as "{type}"',
        paramAssignment: 'Parameter {index}: type "{sourceType}" cannot be assigned to type "{destType}"',
        paramSpecOverload: "ParamSpec cannot be used with overloaded function",
        paramType: 'Parameter type is "{paramType}"',
        privateImportFromPyTypedSource: 'Import from "{module}" instead',
        propertyAccessFromProtocolClass: "A property defined within a protocol class cannot be accessed as a class variable",
        propertyMethodIncompatible: 'Property method "{name}" is incompatible',
        propertyMethodMissing: 'Property method "{name}" is missing in override',
        propertyMissingDeleter: 'Property "{name}" has no defined deleter',
        propertyMissingSetter: 'Property "{name}" has no defined setter',
        protocolIncompatible: '"{sourceType}" is incompatible with protocol "{destType}"',
        protocolMemberClassVar: '"{name}" is not a class variable',
        protocolMemberMissing: '"{name}" is not present',
        protocolSourceIsNotConcrete: '"{sourceType}" is not a concrete class type and cannot be assigned to type "{destType}"',
        readOnlyAttribute: 'Attribute "{name}" is read-only',
        seeDeclaration: "See declaration",
        seeClassDeclaration: "See class declaration",
        seeFunctionDeclaration: "See function declaration",
        seeMethodDeclaration: "See method declaration",
        seeParameterDeclaration: "See parameter declaration",
        seeVariableDeclaration: "See variable declaration",
        tupleEntryTypeMismatch: "Tuple entry {entry} is incorrect type",
        tupleAssignmentMismatch: 'Type "{type}" is incompatible with target tuple',
        tupleSizeMismatch: "Element size mismatch; expected {expected} but received {received}",
        tupleSizeMismatchIndeterminate: "Tuple size mismatch; expected {expected} but received indeterminate number",
        typeAssignmentMismatch: 'Type "{sourceType}" cannot be assigned to type "{destType}"',
        typeBound: 'Type "{sourceType}" is incompatible with bound type "{destType}" for type variable "{name}"',
        typeConstrainedTypeVar: 'Type "{type}" is incompatible with constrained type variable "{name}"',
        typedDictFieldMissing: '"{name}" is missing from "{type}"',
        typedDictFieldNotRequired: '"{name}" is not required in "{type}"',
        typedDictFieldRequired: '"{name}" is required in "{type}"',
        typedDictFieldTypeMismatch: 'Type "{type}" is not assignable to field "{name}"',
        typedDictFieldRedefinition: 'Type in parent class is "{parentType}" and type in child class is "{childType}"',
        typedDictFieldUndefined: '"{name}" is an undefined field in type "{type}"',
        typedDictFinalMismatch: '"{sourceType}" is incompatible with "{destType}" because of a @final mismatch',
        typeIncompatible: '"{sourceType}" is incompatible with "{destType}"',
        typeNotCallable: 'Type "{type}" is not callable',
        typeNotClass: '"{type}" is not a class',
        typeParamSpec: 'Type "{type}" is incompatible with ParamSpec "{name}"',
        typeNotStringLiteral: '"{type}" is not a string literal',
        typeOfSymbol: 'Type of "{name}" is "{type}"',
        typeUnsupported: 'Type "{type}" is unsupported',
        typeVarIsContravariant: 'TypeVar "{name}" is contravariant',
        typeVarIsCovariant: 'TypeVar "{name}" is covariant',
        typeVarIsInvariant: 'TypeVar "{name}" is invariant',
        typeVarNotAllowed: "TypeVar or generic type with type arguments not allowed",
        typeVarUnsolvableRemedy: "Provide an overload that specifies the return type when the argument is not supplied",
        typeVarsMissing: "Missing type variables: {names}",
        typeVarTupleRequiresKnownLength: "TypeVarTuple cannot be bound to a tuple of unknown length",
        unreachableExcept: '"{exceptionType}" is a subclass of "{parentType}"',
        useDictInstead: "Use Dict[T1, T2] to indicate a dictionary type",
        useListInstead: "Use List[T] to indicate a list type or Union[T1, T2] to indicate a union type",
        useTupleInstead: "Use Tuple[T1, ..., Tn] to indicate a tuple type or Union[T1, T2] to indicate a union type",
        useTypeInstead: "Use Type[T] instead"
      },
      CodeAction: {
        addOptionalToAnnotation: 'Add "Optional" to Type Annotation',
        createTypeStub: "Create Type Stub",
        createTypeStubFor: 'Create Type Stub For "{moduleName}"',
        executingCommand: "Executing command",
        filesToAnalyzeOne: "1 file to analyze",
        filesToAnalyzeCount: "{count} files to analyze",
        findingReferences: "Finding references",
        organizeImports: "Organize Imports"
      },
      Refactoring: {
        moveFile: 'Do you want to update all import references for "{oldModuleName}" to "{newModuleName}"?',
        moveFileLabel: 'Update all import references for "{oldModuleName}" to "{newModuleName}"?',
        moveFileDescription: 'Update all import references for "{oldModuleName}" to "{newModuleName}"?'
      }
    };
  }
});

// node_modules/@zzzen/pyright-internal/dist/localization/package.nls.de.json
var require_package_nls_de = __commonJS({
  "node_modules/@zzzen/pyright-internal/dist/localization/package.nls.de.json"(exports2, module2) {
    module2.exports = {};
  }
});

// node_modules/@zzzen/pyright-internal/dist/localization/package.nls.es.json
var require_package_nls_es = __commonJS({
  "node_modules/@zzzen/pyright-internal/dist/localization/package.nls.es.json"(exports2, module2) {
    module2.exports = {};
  }
});

// node_modules/@zzzen/pyright-internal/dist/localization/package.nls.fr.json
var require_package_nls_fr = __commonJS({
  "node_modules/@zzzen/pyright-internal/dist/localization/package.nls.fr.json"(exports2, module2) {
    module2.exports = {};
  }
});

// node_modules/@zzzen/pyright-internal/dist/localization/package.nls.ja.json
var require_package_nls_ja = __commonJS({
  "node_modules/@zzzen/pyright-internal/dist/localization/package.nls.ja.json"(exports2, module2) {
    module2.exports = {};
  }
});

// node_modules/@zzzen/pyright-internal/dist/localization/package.nls.ru.json
var require_package_nls_ru = __commonJS({
  "node_modules/@zzzen/pyright-internal/dist/localization/package.nls.ru.json"(exports2, module2) {
    module2.exports = {};
  }
});

// node_modules/@zzzen/pyright-internal/dist/localization/package.nls.zh-cn.json
var require_package_nls_zh_cn = __commonJS({
  "node_modules/@zzzen/pyright-internal/dist/localization/package.nls.zh-cn.json"(exports2, module2) {
    module2.exports = {};
  }
});

// node_modules/@zzzen/pyright-internal/dist/localization/package.nls.zh-tw.json
var require_package_nls_zh_tw = __commonJS({
  "node_modules/@zzzen/pyright-internal/dist/localization/package.nls.zh-tw.json"(exports2, module2) {
    module2.exports = {};
  }
});

// node_modules/@zzzen/pyright-internal/dist/localization/localize.js
var require_localize = __commonJS({
  "node_modules/@zzzen/pyright-internal/dist/localization/localize.js"(exports2) {
    "use strict";
    Object.defineProperty(exports2, "__esModule", { value: true });
    exports2.Localizer = exports2.setLocaleOverride = exports2.ParameterizedString = void 0;
    var debug_1 = require_debug();
    var enUsStrings = require_package_nls_en_us();
    var deStrings = require_package_nls_de();
    var esStrings = require_package_nls_es();
    var frStrings = require_package_nls_fr();
    var jaStrings = require_package_nls_ja();
    var ruStrings = require_package_nls_ru();
    var zhCnStrings = require_package_nls_zh_cn();
    var zhTwStrings = require_package_nls_zh_tw();
    var ParameterizedString = class {
      constructor(_formatString) {
        this._formatString = _formatString;
      }
      format(params) {
        let str = this._formatString;
        Object.keys(params).forEach((key) => {
          str = str.replace(`{${key}}`, params[key].toString());
        });
        return str;
      }
      getFormatString() {
        return this._formatString;
      }
    };
    exports2.ParameterizedString = ParameterizedString;
    var defaultLocale = "en-us";
    var stringMapsByLocale = /* @__PURE__ */ new Map([
      ["de", deStrings],
      ["en-us", enUsStrings],
      ["es", esStrings],
      ["fr", frStrings],
      ["ja", jaStrings],
      ["ru", ruStrings],
      ["zh-cn", zhCnStrings],
      ["zh-tw", zhTwStrings]
    ]);
    var localizedStrings = void 0;
    var defaultStrings = {};
    function getRawString(key) {
      if (localizedStrings === void 0) {
        localizedStrings = initialize();
      }
      const keyParts = key.split(".");
      const str = getRawStringFromMap(localizedStrings, keyParts) || getRawStringFromMap(defaultStrings, keyParts);
      if (str) {
        return str;
      }
      (0, debug_1.fail)(`Missing localized string for key "${key}"`);
    }
    function getRawStringFromMap(map, keyParts) {
      let curObj = map;
      for (const keyPart of keyParts) {
        if (!curObj[keyPart]) {
          return void 0;
        }
        curObj = curObj[keyPart];
      }
      return curObj;
    }
    function initialize() {
      defaultStrings = loadDefaultStrings();
      const currentLocale = getLocaleFromEnv();
      return loadStringsForLocale(currentLocale);
    }
    var localeOverride;
    function setLocaleOverride(locale) {
      localeOverride = locale.toLowerCase();
    }
    exports2.setLocaleOverride = setLocaleOverride;
    function getLocaleFromEnv() {
      if (localeOverride) {
        return localeOverride;
      }
      try {
        if (navigator === null || navigator === void 0 ? void 0 : navigator.language) {
          return navigator.language.toLowerCase();
        }
      } catch {
      }
      const env = process.env;
      const vscodeConfigString = env.VSCODE_NLS_CONFIG;
      if (vscodeConfigString) {
        try {
          return JSON.parse(vscodeConfigString).locale;
        } catch {
        }
      }
      const localeString = env.LC_ALL || env.LC_MESSAGES || env.LANG || env.LANGUAGE;
      if (localeString) {
        const localeStringSplit = localeString.split(".");
        if (localeStringSplit.length > 0 && localeStringSplit[0]) {
          return localeStringSplit[0];
        }
      }
      return defaultLocale;
    }
    function loadDefaultStrings() {
      const defaultStrings2 = loadStringsFromJsonFile(defaultLocale);
      if (defaultStrings2) {
        return defaultStrings2;
      }
      console.error("Could not load default strings");
      return {};
    }
    function loadStringsForLocale(locale) {
      if (locale === defaultLocale) {
        return {};
      }
      let override = loadStringsFromJsonFile(locale);
      if (override !== void 0) {
        return override;
      }
      const localeSplit = locale.split("-");
      if (localeSplit.length > 0 && localeSplit[0]) {
        override = loadStringsFromJsonFile(localeSplit[0]);
        if (override !== void 0) {
          return override;
        }
      }
      return {};
    }
    function loadStringsFromJsonFile(locale) {
      return stringMapsByLocale.get(locale);
    }
    var Localizer;
    (function(Localizer2) {
      let Diagnostic2;
      (function(Diagnostic3) {
        Diagnostic3.annotatedParamCountMismatch = () => new ParameterizedString(getRawString("Diagnostic.annotatedParamCountMismatch"));
        Diagnostic3.annotatedTypeArgMissing = () => getRawString("Diagnostic.annotatedTypeArgMissing");
        Diagnostic3.annotationFormatString = () => getRawString("Diagnostic.annotationFormatString");
        Diagnostic3.annotationNotSupported = () => getRawString("Diagnostic.annotationNotSupported");
        Diagnostic3.annotationSpansStrings = () => getRawString("Diagnostic.annotationSpansStrings");
        Diagnostic3.annotationStringEscape = () => getRawString("Diagnostic.annotationStringEscape");
        Diagnostic3.argAssignment = () => new ParameterizedString(getRawString("Diagnostic.argAssignment"));
        Diagnostic3.argAssignmentFunction = () => new ParameterizedString(getRawString("Diagnostic.argAssignmentFunction"));
        Diagnostic3.argAssignmentParam = () => new ParameterizedString(getRawString("Diagnostic.argAssignmentParam"));
        Diagnostic3.argAssignmentParamFunction = () => new ParameterizedString(getRawString("Diagnostic.argAssignmentParamFunction"));
        Diagnostic3.argMissingForParam = () => new ParameterizedString(getRawString("Diagnostic.argMissingForParam"));
        Diagnostic3.argMissingForParams = () => new ParameterizedString(getRawString("Diagnostic.argMissingForParams"));
        Diagnostic3.argMorePositionalExpectedCount = () => new ParameterizedString(getRawString("Diagnostic.argMorePositionalExpectedCount"));
        Diagnostic3.argMorePositionalExpectedOne = () => getRawString("Diagnostic.argMorePositionalExpectedOne");
        Diagnostic3.argPositional = () => getRawString("Diagnostic.argPositional");
        Diagnostic3.argPositionalExpectedCount = () => new ParameterizedString(getRawString("Diagnostic.argPositionalExpectedCount"));
        Diagnostic3.argPositionalExpectedOne = () => getRawString("Diagnostic.argPositionalExpectedOne");
        Diagnostic3.argTypePartiallyUnknown = () => getRawString("Diagnostic.argTypePartiallyUnknown");
        Diagnostic3.argTypeUnknown = () => getRawString("Diagnostic.argTypeUnknown");
        Diagnostic3.assertAlwaysTrue = () => getRawString("Diagnostic.assertAlwaysTrue");
        Diagnostic3.assertTypeArgs = () => getRawString("Diagnostic.assertTypeArgs");
        Diagnostic3.assertTypeTypeMismatch = () => new ParameterizedString(getRawString("Diagnostic.assertTypeTypeMismatch"));
        Diagnostic3.assignmentExprContext = () => getRawString("Diagnostic.assignmentExprContext");
        Diagnostic3.assignmentExprComprehension = () => new ParameterizedString(getRawString("Diagnostic.assignmentExprComprehension"));
        Diagnostic3.assignmentExprInSubscript = () => getRawString("Diagnostic.assignmentExprInSubscript");
        Diagnostic3.assignmentInProtocol = () => getRawString("Diagnostic.assignmentInProtocol");
        Diagnostic3.assignmentTargetExpr = () => getRawString("Diagnostic.assignmentTargetExpr");
        Diagnostic3.asyncNotInAsyncFunction = () => getRawString("Diagnostic.asyncNotInAsyncFunction");
        Diagnostic3.awaitIllegal = () => getRawString("Diagnostic.awaitIllegal");
        Diagnostic3.awaitNotInAsync = () => getRawString("Diagnostic.awaitNotInAsync");
        Diagnostic3.backticksIllegal = () => getRawString("Diagnostic.backticksIllegal");
        Diagnostic3.baseClassCircular = () => getRawString("Diagnostic.baseClassCircular");
        Diagnostic3.baseClassInvalid = () => getRawString("Diagnostic.baseClassInvalid");
        Diagnostic3.baseClassFinal = () => new ParameterizedString(getRawString("Diagnostic.baseClassFinal"));
        Diagnostic3.baseClassMethodTypeIncompatible = () => new ParameterizedString(getRawString("Diagnostic.baseClassMethodTypeIncompatible"));
        Diagnostic3.baseClassVariableTypeIncompatible = () => new ParameterizedString(getRawString("Diagnostic.baseClassVariableTypeIncompatible"));
        Diagnostic3.baseClassUnknown = () => getRawString("Diagnostic.baseClassUnknown");
        Diagnostic3.bindTypeMismatch = () => new ParameterizedString(getRawString("Diagnostic.bindTypeMismatch"));
        Diagnostic3.breakOutsideLoop = () => getRawString("Diagnostic.breakOutsideLoop");
        Diagnostic3.callableExtraArgs = () => getRawString("Diagnostic.callableExtraArgs");
        Diagnostic3.callableFirstArg = () => getRawString("Diagnostic.callableFirstArg");
        Diagnostic3.callableSecondArg = () => getRawString("Diagnostic.callableSecondArg");
        Diagnostic3.casePatternIsIrrefutable = () => getRawString("Diagnostic.casePatternIsIrrefutable");
        Diagnostic3.classAlreadySpecialized = () => new ParameterizedString(getRawString("Diagnostic.classAlreadySpecialized"));
        Diagnostic3.classDecoratorTypeUnknown = () => getRawString("Diagnostic.classDecoratorTypeUnknown");
        Diagnostic3.classDefinitionCycle = () => new ParameterizedString(getRawString("Diagnostic.classDefinitionCycle"));
        Diagnostic3.classGetItemClsParam = () => getRawString("Diagnostic.classGetItemClsParam");
        Diagnostic3.classMethodClsParam = () => getRawString("Diagnostic.classMethodClsParam");
        Diagnostic3.classNotRuntimeSubscriptable = () => new ParameterizedString(getRawString("Diagnostic.classNotRuntimeSubscriptable"));
        Diagnostic3.classPatternBuiltInArgCount = () => getRawString("Diagnostic.classPatternBuiltInArgCount");
        Diagnostic3.classPatternBuiltInArgPositional = () => getRawString("Diagnostic.classPatternBuiltInArgPositional");
        Diagnostic3.classPatternTypeAlias = () => new ParameterizedString(getRawString("Diagnostic.classPatternTypeAlias"));
        Diagnostic3.classVarNotAllowed = () => getRawString("Diagnostic.classVarNotAllowed");
        Diagnostic3.classVarFirstArgMissing = () => getRawString("Diagnostic.classVarFirstArgMissing");
        Diagnostic3.classVarOverridesInstanceVar = () => new ParameterizedString(getRawString("Diagnostic.classVarOverridesInstanceVar"));
        Diagnostic3.classVarTooManyArgs = () => getRawString("Diagnostic.classVarTooManyArgs");
        Diagnostic3.classVarWithTypeVar = () => getRawString("Diagnostic.classVarWithTypeVar");
        Diagnostic3.clsSelfParamTypeMismatch = () => new ParameterizedString(getRawString("Diagnostic.clsSelfParamTypeMismatch"));
        Diagnostic3.codeTooComplexToAnalyze = () => getRawString("Diagnostic.codeTooComplexToAnalyze");
        Diagnostic3.comparisonAlwaysFalse = () => new ParameterizedString(getRawString("Diagnostic.comparisonAlwaysFalse"));
        Diagnostic3.comparisonAlwaysTrue = () => new ParameterizedString(getRawString("Diagnostic.comparisonAlwaysTrue"));
        Diagnostic3.comprehensionInDict = () => getRawString("Diagnostic.comprehensionInDict");
        Diagnostic3.comprehensionInSet = () => getRawString("Diagnostic.comprehensionInSet");
        Diagnostic3.concatenateParamSpecMissing = () => getRawString("Diagnostic.concatenateParamSpecMissing");
        Diagnostic3.concatenateTypeArgsMissing = () => getRawString("Diagnostic.concatenateTypeArgsMissing");
        Diagnostic3.constantRedefinition = () => new ParameterizedString(getRawString("Diagnostic.constantRedefinition"));
        Diagnostic3.constructorNoArgs = () => new ParameterizedString(getRawString("Diagnostic.constructorNoArgs"));
        Diagnostic3.constructorParametersMismatch = () => new ParameterizedString(getRawString("Diagnostic.constructorParametersMismatch"));
        Diagnostic3.continueInFinally = () => getRawString("Diagnostic.continueInFinally");
        Diagnostic3.continueOutsideLoop = () => getRawString("Diagnostic.continueOutsideLoop");
        Diagnostic3.dataClassBaseClassNotFrozen = () => getRawString("Diagnostic.dataClassBaseClassNotFrozen");
        Diagnostic3.dataClassFieldWithDefault = () => getRawString("Diagnostic.dataClassFieldWithDefault");
        Diagnostic3.dataClassFieldWithoutAnnotation = () => getRawString("Diagnostic.dataClassFieldWithoutAnnotation");
        Diagnostic3.dataClassPostInitParamCount = () => new ParameterizedString(getRawString("Diagnostic.dataClassPostInitParamCount"));
        Diagnostic3.dataClassPostInitType = () => new ParameterizedString(getRawString("Diagnostic.dataClassPostInitType"));
        Diagnostic3.dataClassSlotsOverwrite = () => getRawString("Diagnostic.dataClassSlotsOverwrite");
        Diagnostic3.dataClassTransformExpectedBoolLiteral = () => getRawString("Diagnostic.dataClassTransformExpectedBoolLiteral");
        Diagnostic3.dataClassTransformFieldSpecifier = () => new ParameterizedString(getRawString("Diagnostic.dataClassTransformFieldSpecifier"));
        Diagnostic3.dataClassTransformPositionalParam = () => getRawString("Diagnostic.dataClassTransformPositionalParam");
        Diagnostic3.dataClassTransformUnknownArgument = () => new ParameterizedString(getRawString("Diagnostic.dataClassTransformUnknownArgument"));
        Diagnostic3.declaredReturnTypePartiallyUnknown = () => new ParameterizedString(getRawString("Diagnostic.declaredReturnTypePartiallyUnknown"));
        Diagnostic3.declaredReturnTypeUnknown = () => getRawString("Diagnostic.declaredReturnTypeUnknown");
        Diagnostic3.defaultValueContainsCall = () => getRawString("Diagnostic.defaultValueContainsCall");
        Diagnostic3.defaultValueNotAllowed = () => getRawString("Diagnostic.defaultValueNotAllowed");
        Diagnostic3.defaultValueNotEllipsis = () => getRawString("Diagnostic.defaultValueNotEllipsis");
        Diagnostic3.deprecatedType = () => new ParameterizedString(getRawString("Diagnostic.deprecatedType"));
        Diagnostic3.dictExpandIllegalInComprehension = () => getRawString("Diagnostic.dictExpandIllegalInComprehension");
        Diagnostic3.dictInAnnotation = () => getRawString("Diagnostic.dictInAnnotation");
        Diagnostic3.dictKeyValuePairs = () => getRawString("Diagnostic.dictKeyValuePairs");
        Diagnostic3.dictUnpackIsNotMapping = () => getRawString("Diagnostic.dictUnpackIsNotMapping");
        Diagnostic3.delTargetExpr = () => getRawString("Diagnostic.delTargetExpr");
        Diagnostic3.dunderAllSymbolNotPresent = () => new ParameterizedString(getRawString("Diagnostic.dunderAllSymbolNotPresent"));
        Diagnostic3.duplicateArgsParam = () => getRawString("Diagnostic.duplicateArgsParam");
        Diagnostic3.duplicateBaseClass = () => getRawString("Diagnostic.duplicateBaseClass");
        Diagnostic3.duplicateCatchAll = () => getRawString("Diagnostic.duplicateCatchAll");
        Diagnostic3.duplicateEnumMember = () => new ParameterizedString(getRawString("Diagnostic.duplicateEnumMember"));
        Diagnostic3.duplicateGenericAndProtocolBase = () => getRawString("Diagnostic.duplicateGenericAndProtocolBase");
        Diagnostic3.duplicateImport = () => new ParameterizedString(getRawString("Diagnostic.duplicateImport"));
        Diagnostic3.duplicateKwargsParam = () => getRawString("Diagnostic.duplicateKwargsParam");
        Diagnostic3.duplicateKeywordOnly = () => getRawString("Diagnostic.duplicateKeywordOnly");
        Diagnostic3.duplicateParam = () => new ParameterizedString(getRawString("Diagnostic.duplicateParam"));
        Diagnostic3.duplicateCapturePatternTarget = () => new ParameterizedString(getRawString("Diagnostic.duplicateCapturePatternTarget"));
        Diagnostic3.duplicateStarPattern = () => getRawString("Diagnostic.duplicateStarPattern");
        Diagnostic3.duplicateStarStarPattern = () => getRawString("Diagnostic.duplicateStarStarPattern");
        Diagnostic3.duplicatePositionOnly = () => getRawString("Diagnostic.duplicatePositionOnly");
        Diagnostic3.duplicateUnpack = () => getRawString("Diagnostic.duplicateUnpack");
        Diagnostic3.ellipsisContext = () => getRawString("Diagnostic.ellipsisContext");
        Diagnostic3.ellipsisSecondArg = () => getRawString("Diagnostic.ellipsisSecondArg");
        Diagnostic3.enumClassOverride = () => new ParameterizedString(getRawString("Diagnostic.enumClassOverride"));
        Diagnostic3.exceptionGroupIncompatible = () => getRawString("Diagnostic.exceptionGroupIncompatible");
        Diagnostic3.exceptionTypeIncorrect = () => new ParameterizedString(getRawString("Diagnostic.exceptionTypeIncorrect"));
        Diagnostic3.exceptionTypeNotClass = () => new ParameterizedString(getRawString("Diagnostic.exceptionTypeNotClass"));
        Diagnostic3.exceptionTypeNotInstantiable = () => new ParameterizedString(getRawString("Diagnostic.exceptionTypeNotInstantiable"));
        Diagnostic3.expectedAfterDecorator = () => getRawString("Diagnostic.expectedAfterDecorator");
        Diagnostic3.expectedArrow = () => getRawString("Diagnostic.expectedArrow");
        Diagnostic3.expectedAsAfterException = () => getRawString("Diagnostic.expectedAsAfterException");
        Diagnostic3.expectedAssignRightHandExpr = () => getRawString("Diagnostic.expectedAssignRightHandExpr");
        Diagnostic3.expectedBinaryRightHandExpr = () => getRawString("Diagnostic.expectedBinaryRightHandExpr");
        Diagnostic3.expectedBoolLiteral = () => getRawString("Diagnostic.expectedBoolLiteral");
        Diagnostic3.expectedCase = () => getRawString("Diagnostic.expectedCase");
        Diagnostic3.expectedClassName = () => getRawString("Diagnostic.expectedClassName");
        Diagnostic3.expectedCloseBrace = () => getRawString("Diagnostic.expectedCloseBrace");
        Diagnostic3.expectedCloseBracket = () => getRawString("Diagnostic.expectedCloseBracket");
        Diagnostic3.expectedCloseParen = () => getRawString("Diagnostic.expectedCloseParen");
        Diagnostic3.expectedColon = () => getRawString("Diagnostic.expectedColon");
        Diagnostic3.expectedComplexNumberLiteral = () => getRawString("Diagnostic.expectedComplexNumberLiteral");
        Diagnostic3.expectedDecoratorExpr = () => getRawString("Diagnostic.expectedDecoratorExpr");
        Diagnostic3.expectedDecoratorName = () => getRawString("Diagnostic.expectedDecoratorName");
        Diagnostic3.expectedDecoratorNewline = () => getRawString("Diagnostic.expectedDecoratorNewline");
        Diagnostic3.expectedDelExpr = () => getRawString("Diagnostic.expectedDelExpr");
        Diagnostic3.expectedElse = () => getRawString("Diagnostic.expectedElse");
        Diagnostic3.expectedExceptionClass = () => getRawString("Diagnostic.expectedExceptionClass");
        Diagnostic3.expectedExceptionObj = () => getRawString("Diagnostic.expectedExceptionObj");
        Diagnostic3.expectedExpr = () => getRawString("Diagnostic.expectedExpr");
        Diagnostic3.expectedImport = () => getRawString("Diagnostic.expectedImport");
        Diagnostic3.expectedImportAlias = () => getRawString("Diagnostic.expectedImportAlias");
        Diagnostic3.expectedImportSymbols = () => getRawString("Diagnostic.expectedImportSymbols");
        Diagnostic3.expectedIdentifier = () => getRawString("Diagnostic.expectedIdentifier");
        Diagnostic3.expectedIndentedBlock = () => getRawString("Diagnostic.expectedIndentedBlock");
        Diagnostic3.expectedIn = () => getRawString("Diagnostic.expectedIn");
        Diagnostic3.expectedInExpr = () => getRawString("Diagnostic.expectedInExpr");
        Diagnostic3.expectedFunctionAfterAsync = () => getRawString("Diagnostic.expectedFunctionAfterAsync");
        Diagnostic3.expectedFunctionName = () => getRawString("Diagnostic.expectedFunctionName");
        Diagnostic3.expectedMemberName = () => getRawString("Diagnostic.expectedMemberName");
        Diagnostic3.expectedModuleName = () => getRawString("Diagnostic.expectedModuleName");
        Diagnostic3.expectedNameAfterAs = () => getRawString("Diagnostic.expectedNameAfterAs");
        Diagnostic3.expectedNamedParameter = () => getRawString("Diagnostic.expectedNamedParameter");
        Diagnostic3.expectedNewline = () => getRawString("Diagnostic.expectedNewline");
        Diagnostic3.expectedNewlineOrSemicolon = () => getRawString("Diagnostic.expectedNewlineOrSemicolon");
        Diagnostic3.expectedOpenParen = () => getRawString("Diagnostic.expectedOpenParen");
        Diagnostic3.expectedParamName = () => getRawString("Diagnostic.expectedParamName");
        Diagnostic3.expectedPatternExpr = () => getRawString("Diagnostic.expectedPatternExpr");
        Diagnostic3.expectedPatternSubjectExpr = () => getRawString("Diagnostic.expectedPatternSubjectExpr");
        Diagnostic3.expectedPatternValue = () => getRawString("Diagnostic.expectedPatternValue");
        Diagnostic3.expectedReturnExpr = () => getRawString("Diagnostic.expectedReturnExpr");
        Diagnostic3.expectedSliceIndex = () => getRawString("Diagnostic.expectedSliceIndex");
        Diagnostic3.expectedTypeNotString = () => getRawString("Diagnostic.expectedTypeNotString");
        Diagnostic3.expectedYieldExpr = () => getRawString("Diagnostic.expectedYieldExpr");
        Diagnostic3.finalClassIsAbstract = () => new ParameterizedString(getRawString("Diagnostic.finalClassIsAbstract"));
        Diagnostic3.finalContext = () => getRawString("Diagnostic.finalContext");
        Diagnostic3.finalMethodOverride = () => new ParameterizedString(getRawString("Diagnostic.finalMethodOverride"));
        Diagnostic3.finalReassigned = () => new ParameterizedString(getRawString("Diagnostic.finalReassigned"));
        Diagnostic3.finalRedeclaration = () => new ParameterizedString(getRawString("Diagnostic.finalRedeclaration"));
        Diagnostic3.finalRedeclarationBySubclass = () => new ParameterizedString(getRawString("Diagnostic.finalRedeclarationBySubclass"));
        Diagnostic3.finalTooManyArgs = () => getRawString("Diagnostic.finalTooManyArgs");
        Diagnostic3.finalUnassigned = () => new ParameterizedString(getRawString("Diagnostic.finalUnassigned"));
        Diagnostic3.formatStringBrace = () => getRawString("Diagnostic.formatStringBrace");
        Diagnostic3.formatStringBytes = () => getRawString("Diagnostic.formatStringBytes");
        Diagnostic3.formatStringEscape = () => getRawString("Diagnostic.formatStringEscape");
        Diagnostic3.formatStringInPattern = () => getRawString("Diagnostic.formatStringInPattern");
        Diagnostic3.formatStringIllegal = () => getRawString("Diagnostic.formatStringIllegal");
        Diagnostic3.formatStringUnicode = () => getRawString("Diagnostic.formatStringUnicode");
        Diagnostic3.formatStringUnterminated = () => getRawString("Diagnostic.formatStringUnterminated");
        Diagnostic3.functionDecoratorTypeUnknown = () => getRawString("Diagnostic.functionDecoratorTypeUnknown");
        Diagnostic3.functionInConditionalExpression = () => getRawString("Diagnostic.functionInConditionalExpression");
        Diagnostic3.generatorAsyncReturnType = () => getRawString("Diagnostic.generatorAsyncReturnType");
        Diagnostic3.generatorNotParenthesized = () => getRawString("Diagnostic.generatorNotParenthesized");
        Diagnostic3.generatorSyncReturnType = () => getRawString("Diagnostic.generatorSyncReturnType");
        Diagnostic3.genericClassAssigned = () => getRawString("Diagnostic.genericClassAssigned");
        Diagnostic3.genericClassDeleted = () => getRawString("Diagnostic.genericClassDeleted");
        Diagnostic3.genericNotAllowed = () => getRawString("Diagnostic.genericNotAllowed");
        Diagnostic3.genericTypeAliasBoundTypeVar = () => new ParameterizedString(getRawString("Diagnostic.genericTypeAliasBoundTypeVar"));
        Diagnostic3.genericTypeArgMissing = () => getRawString("Diagnostic.genericTypeArgMissing");
        Diagnostic3.genericTypeArgTypeVar = () => getRawString("Diagnostic.genericTypeArgTypeVar");
        Diagnostic3.genericTypeArgUnique = () => getRawString("Diagnostic.genericTypeArgUnique");
        Diagnostic3.globalReassignment = () => new ParameterizedString(getRawString("Diagnostic.globalReassignment"));
        Diagnostic3.globalRedefinition = () => new ParameterizedString(getRawString("Diagnostic.globalRedefinition"));
        Diagnostic3.implicitStringConcat = () => getRawString("Diagnostic.implicitStringConcat");
        Diagnostic3.importCycleDetected = () => getRawString("Diagnostic.importCycleDetected");
        Diagnostic3.importDepthExceeded = () => new ParameterizedString(getRawString("Diagnostic.importDepthExceeded"));
        Diagnostic3.importResolveFailure = () => new ParameterizedString(getRawString("Diagnostic.importResolveFailure"));
        Diagnostic3.importSourceResolveFailure = () => new ParameterizedString(getRawString("Diagnostic.importSourceResolveFailure"));
        Diagnostic3.importSymbolUnknown = () => new ParameterizedString(getRawString("Diagnostic.importSymbolUnknown"));
        Diagnostic3.incompatibleMethodOverride = () => new ParameterizedString(getRawString("Diagnostic.incompatibleMethodOverride"));
        Diagnostic3.inconsistentIndent = () => getRawString("Diagnostic.inconsistentIndent");
        Diagnostic3.inconsistentTabs = () => getRawString("Diagnostic.inconsistentTabs");
        Diagnostic3.initMustReturnNone = () => getRawString("Diagnostic.initMustReturnNone");
        Diagnostic3.initSubclassClsParam = () => getRawString("Diagnostic.initSubclassClsParam");
        Diagnostic3.instanceMethodSelfParam = () => getRawString("Diagnostic.instanceMethodSelfParam");
        Diagnostic3.instanceVarOverridesClassVar = () => new ParameterizedString(getRawString("Diagnostic.instanceVarOverridesClassVar"));
        Diagnostic3.instantiateAbstract = () => new ParameterizedString(getRawString("Diagnostic.instantiateAbstract"));
        Diagnostic3.instantiateProtocol = () => new ParameterizedString(getRawString("Diagnostic.instantiateProtocol"));
        Diagnostic3.internalBindError = () => new ParameterizedString(getRawString("Diagnostic.internalBindError"));
        Diagnostic3.internalParseError = () => new ParameterizedString(getRawString("Diagnostic.internalParseError"));
        Diagnostic3.internalTypeCheckingError = () => new ParameterizedString(getRawString("Diagnostic.internalTypeCheckingError"));
        Diagnostic3.invalidIdentifierChar = () => getRawString("Diagnostic.invalidIdentifierChar");
        Diagnostic3.invalidStubStatement = () => getRawString("Diagnostic.invalidStubStatement");
        Diagnostic3.invalidTokenChars = () => new ParameterizedString(getRawString("Diagnostic.invalidTokenChars"));
        Diagnostic3.isInstanceInvalidType = () => new ParameterizedString(getRawString("Diagnostic.isInstanceInvalidType"));
        Diagnostic3.isSubclassInvalidType = () => new ParameterizedString(getRawString("Diagnostic.isSubclassInvalidType"));
        Diagnostic3.keyValueInSet = () => getRawString("Diagnostic.keyValueInSet");
        Diagnostic3.keywordArgInTypeArgument = () => getRawString("Diagnostic.keywordArgInTypeArgument");
        Diagnostic3.keywordOnlyAfterArgs = () => getRawString("Diagnostic.keywordOnlyAfterArgs");
        Diagnostic3.keywordSubscriptIllegal = () => getRawString("Diagnostic.keywordSubscriptIllegal");
        Diagnostic3.lambdaReturnTypeUnknown = () => getRawString("Diagnostic.lambdaReturnTypeUnknown");
        Diagnostic3.lambdaReturnTypePartiallyUnknown = () => new ParameterizedString(getRawString("Diagnostic.lambdaReturnTypePartiallyUnknown"));
        Diagnostic3.listAssignmentMismatch = () => new ParameterizedString(getRawString("Diagnostic.listAssignmentMismatch"));
        Diagnostic3.listInAnnotation = () => getRawString("Diagnostic.listInAnnotation");
        Diagnostic3.literalUnsupportedType = () => getRawString("Diagnostic.literalUnsupportedType");
        Diagnostic3.literalEmptyArgs = () => getRawString("Diagnostic.literalEmptyArgs");
        Diagnostic3.literalNotCallable = () => getRawString("Diagnostic.literalNotCallable");
        Diagnostic3.matchIncompatible = () => getRawString("Diagnostic.matchIncompatible");
        Diagnostic3.matchIsNotExhaustive = () => getRawString("Diagnostic.matchIsNotExhaustive");
        Diagnostic3.maxParseDepthExceeded = () => getRawString("Diagnostic.maxParseDepthExceeded");
        Diagnostic3.memberAccess = () => new ParameterizedString(getRawString("Diagnostic.memberAccess"));
        Diagnostic3.memberDelete = () => new ParameterizedString(getRawString("Diagnostic.memberDelete"));
        Diagnostic3.memberSet = () => new ParameterizedString(getRawString("Diagnostic.memberSet"));
        Diagnostic3.metaclassConflict = () => getRawString("Diagnostic.metaclassConflict");
        Diagnostic3.metaclassDuplicate = () => getRawString("Diagnostic.metaclassDuplicate");
        Diagnostic3.metaclassIsGeneric = () => getRawString("Diagnostic.metaclassIsGeneric");
        Diagnostic3.methodNotDefined = () => new ParameterizedString(getRawString("Diagnostic.methodNotDefined"));
        Diagnostic3.methodNotDefinedOnType = () => new ParameterizedString(getRawString("Diagnostic.methodNotDefinedOnType"));
        Diagnostic3.methodOrdering = () => getRawString("Diagnostic.methodOrdering");
        Diagnostic3.methodOverridden = () => new ParameterizedString(getRawString("Diagnostic.methodOverridden"));
        Diagnostic3.methodReturnsNonObject = () => new ParameterizedString(getRawString("Diagnostic.methodReturnsNonObject"));
        Diagnostic3.missingProtocolMembers = () => getRawString("Diagnostic.missingProtocolMembers");
        Diagnostic3.missingSuperCall = () => new ParameterizedString(getRawString("Diagnostic.missingSuperCall"));
        Diagnostic3.moduleAsType = () => getRawString("Diagnostic.moduleAsType");
        Diagnostic3.moduleNotCallable = () => getRawString("Diagnostic.moduleNotCallable");
        Diagnostic3.moduleUnknownMember = () => new ParameterizedString(getRawString("Diagnostic.moduleUnknownMember"));
        Diagnostic3.namedExceptAfterCatchAll = () => getRawString("Diagnostic.namedExceptAfterCatchAll");
        Diagnostic3.namedParamAfterParamSpecArgs = () => new ParameterizedString(getRawString("Diagnostic.namedParamAfterParamSpecArgs"));
        Diagnostic3.namedTupleEmptyName = () => getRawString("Diagnostic.namedTupleEmptyName");
        Diagnostic3.namedTupleFirstArg = () => getRawString("Diagnostic.namedTupleFirstArg");
        Diagnostic3.namedTupleMultipleInheritance = () => getRawString("Diagnostic.namedTupleMultipleInheritance");
        Diagnostic3.namedTupleNameType = () => getRawString("Diagnostic.namedTupleNameType");
        Diagnostic3.namedTupleNameUnique = () => getRawString("Diagnostic.namedTupleNameUnique");
        Diagnostic3.namedTupleNoTypes = () => getRawString("Diagnostic.namedTupleNoTypes");
        Diagnostic3.namedTupleSecondArg = () => getRawString("Diagnostic.namedTupleSecondArg");
        Diagnostic3.newClsParam = () => getRawString("Diagnostic.newClsParam");
        Diagnostic3.newTypeLiteral = () => getRawString("Diagnostic.newTypeLiteral");
        Diagnostic3.newTypeNotAClass = () => getRawString("Diagnostic.newTypeNotAClass");
        Diagnostic3.newTypeProtocolClass = () => getRawString("Diagnostic.newTypeProtocolClass");
        Diagnostic3.nonDefaultAfterDefault = () => getRawString("Diagnostic.nonDefaultAfterDefault");
        Diagnostic3.noneNotCallable = () => getRawString("Diagnostic.noneNotCallable");
        Diagnostic3.noneNotIterable = () => getRawString("Diagnostic.noneNotIterable");
        Diagnostic3.noneNotSubscriptable = () => getRawString("Diagnostic.noneNotSubscriptable");
        Diagnostic3.noneNotUsableWith = () => getRawString("Diagnostic.noneNotUsableWith");
        Diagnostic3.noneOperator = () => new ParameterizedString(getRawString("Diagnostic.noneOperator"));
        Diagnostic3.noneUnknownMember = () => new ParameterizedString(getRawString("Diagnostic.noneUnknownMember"));
        Diagnostic3.nonLocalNoBinding = () => new ParameterizedString(getRawString("Diagnostic.nonLocalNoBinding"));
        Diagnostic3.nonLocalReassignment = () => new ParameterizedString(getRawString("Diagnostic.nonLocalReassignment"));
        Diagnostic3.nonLocalRedefinition = () => new ParameterizedString(getRawString("Diagnostic.nonLocalRedefinition"));
        Diagnostic3.nonLocalInModule = () => getRawString("Diagnostic.nonLocalInModule");
        Diagnostic3.noOverload = () => new ParameterizedString(getRawString("Diagnostic.noOverload"));
        Diagnostic3.noReturnContainsReturn = () => getRawString("Diagnostic.noReturnContainsReturn");
        Diagnostic3.noReturnContainsYield = () => getRawString("Diagnostic.noReturnContainsYield");
        Diagnostic3.noReturnReturnsNone = () => getRawString("Diagnostic.noReturnReturnsNone");
        Diagnostic3.notRequiredArgCount = () => getRawString("Diagnostic.notRequiredArgCount");
        Diagnostic3.notRequiredNotInTypedDict = () => getRawString("Diagnostic.notRequiredNotInTypedDict");
        Diagnostic3.objectNotCallable = () => new ParameterizedString(getRawString("Diagnostic.objectNotCallable"));
        Diagnostic3.obscuredClassDeclaration = () => new ParameterizedString(getRawString("Diagnostic.obscuredClassDeclaration"));
        Diagnostic3.obscuredFunctionDeclaration = () => new ParameterizedString(getRawString("Diagnostic.obscuredFunctionDeclaration"));
        Diagnostic3.obscuredMethodDeclaration = () => new ParameterizedString(getRawString("Diagnostic.obscuredMethodDeclaration"));
        Diagnostic3.obscuredParameterDeclaration = () => new ParameterizedString(getRawString("Diagnostic.obscuredParameterDeclaration"));
        Diagnostic3.obscuredVariableDeclaration = () => new ParameterizedString(getRawString("Diagnostic.obscuredVariableDeclaration"));
        Diagnostic3.operatorLessOrGreaterDeprecated = () => getRawString("Diagnostic.operatorLessOrGreaterDeprecated");
        Diagnostic3.optionalExtraArgs = () => getRawString("Diagnostic.optionalExtraArgs");
        Diagnostic3.orPatternIrrefutable = () => getRawString("Diagnostic.orPatternIrrefutable");
        Diagnostic3.orPatternMissingName = () => getRawString("Diagnostic.orPatternMissingName");
        Diagnostic3.overlappingOverload = () => new ParameterizedString(getRawString("Diagnostic.overlappingOverload"));
        Diagnostic3.overloadAbstractMismatch = () => new ParameterizedString(getRawString("Diagnostic.overloadAbstractMismatch"));
        Diagnostic3.overloadImplementationMismatch = () => new ParameterizedString(getRawString("Diagnostic.overloadImplementationMismatch"));
        Diagnostic3.overloadReturnTypeMismatch = () => new ParameterizedString(getRawString("Diagnostic.overloadReturnTypeMismatch"));
        Diagnostic3.overloadWithImplementation = () => new ParameterizedString(getRawString("Diagnostic.overloadWithImplementation"));
        Diagnostic3.overloadWithoutImplementation = () => new ParameterizedString(getRawString("Diagnostic.overloadWithoutImplementation"));
        Diagnostic3.paramAfterKwargsParam = () => getRawString("Diagnostic.paramAfterKwargsParam");
        Diagnostic3.paramAlreadyAssigned = () => new ParameterizedString(getRawString("Diagnostic.paramAlreadyAssigned"));
        Diagnostic3.paramAnnotationMissing = () => new ParameterizedString(getRawString("Diagnostic.paramAnnotationMissing"));
        Diagnostic3.paramNameMissing = () => new ParameterizedString(getRawString("Diagnostic.paramNameMissing"));
        Diagnostic3.paramSpecArgsKwargsUsage = () => getRawString("Diagnostic.paramSpecArgsKwargsUsage");
        Diagnostic3.paramSpecArgsMissing = () => new ParameterizedString(getRawString("Diagnostic.paramSpecArgsMissing"));
        Diagnostic3.paramSpecArgsUsage = () => getRawString("Diagnostic.paramSpecArgsUsage");
        Diagnostic3.paramSpecAssignedName = () => new ParameterizedString(getRawString("Diagnostic.paramSpecAssignedName"));
        Diagnostic3.paramSpecContext = () => getRawString("Diagnostic.paramSpecContext");
        Diagnostic3.paramSpecFirstArg = () => getRawString("Diagnostic.paramSpecFirstArg");
        Diagnostic3.paramSpecKwargsUsage = () => getRawString("Diagnostic.paramSpecKwargsUsage");
        Diagnostic3.paramSpecNotBound = () => new ParameterizedString(getRawString("Diagnostic.paramSpecNotBound"));
        Diagnostic3.paramSpecNotUsedByOuterScope = () => new ParameterizedString(getRawString("Diagnostic.paramSpecNotUsedByOuterScope"));
        Diagnostic3.paramSpecUnknownArg = () => getRawString("Diagnostic.paramSpecUnknownArg");
        Diagnostic3.paramSpecUnknownMember = () => new ParameterizedString(getRawString("Diagnostic.paramSpecUnknownMember"));
        Diagnostic3.paramSpecUnknownParam = () => new ParameterizedString(getRawString("Diagnostic.paramSpecUnknownParam"));
        Diagnostic3.paramTypeCovariant = () => getRawString("Diagnostic.paramTypeCovariant");
        Diagnostic3.paramTypeUnknown = () => new ParameterizedString(getRawString("Diagnostic.paramTypeUnknown"));
        Diagnostic3.paramAssignmentMismatch = () => new ParameterizedString(getRawString("Diagnostic.paramAssignmentMismatch"));
        Diagnostic3.paramTypePartiallyUnknown = () => new ParameterizedString(getRawString("Diagnostic.paramTypePartiallyUnknown"));
        Diagnostic3.parenthesizedContextManagerIllegal = () => getRawString("Diagnostic.parenthesizedContextManagerIllegal");
        Diagnostic3.positionArgAfterNamedArg = () => getRawString("Diagnostic.positionArgAfterNamedArg");
        Diagnostic3.privateImportFromPyTypedModule = () => new ParameterizedString(getRawString("Diagnostic.privateImportFromPyTypedModule"));
        Diagnostic3.positionOnlyAfterArgs = () => getRawString("Diagnostic.positionOnlyAfterArgs");
        Diagnostic3.positionOnlyAfterKeywordOnly = () => getRawString("Diagnostic.positionOnlyAfterKeywordOnly");
        Diagnostic3.positionOnlyIncompatible = () => getRawString("Diagnostic.positionOnlyIncompatible");
        Diagnostic3.positionOnlyFirstParam = () => getRawString("Diagnostic.positionOnlyFirstParam");
        Diagnostic3.privateUsedOutsideOfClass = () => new ParameterizedString(getRawString("Diagnostic.privateUsedOutsideOfClass"));
        Diagnostic3.privateUsedOutsideOfModule = () => new ParameterizedString(getRawString("Diagnostic.privateUsedOutsideOfModule"));
        Diagnostic3.propertyOverridden = () => new ParameterizedString(getRawString("Diagnostic.propertyOverridden"));
        Diagnostic3.propertyStaticMethod = () => getRawString("Diagnostic.propertyStaticMethod");
        Diagnostic3.protectedUsedOutsideOfClass = () => new ParameterizedString(getRawString("Diagnostic.protectedUsedOutsideOfClass"));
        Diagnostic3.protocolBaseClass = () => new ParameterizedString(getRawString("Diagnostic.protocolBaseClass"));
        Diagnostic3.protocolIllegal = () => getRawString("Diagnostic.protocolIllegal");
        Diagnostic3.protocolMemberNotClassVar = () => new ParameterizedString(getRawString("Diagnostic.protocolMemberNotClassVar"));
        Diagnostic3.protocolNotAllowedInTypeArgument = () => getRawString("Diagnostic.protocolNotAllowedInTypeArgument");
        Diagnostic3.protocolUsedInCall = () => new ParameterizedString(getRawString("Diagnostic.protocolUsedInCall"));
        Diagnostic3.protocolVarianceContravariant = () => new ParameterizedString(getRawString("Diagnostic.protocolVarianceContravariant"));
        Diagnostic3.protocolVarianceCovariant = () => new ParameterizedString(getRawString("Diagnostic.protocolVarianceCovariant"));
        Diagnostic3.protocolVarianceInvariant = () => new ParameterizedString(getRawString("Diagnostic.protocolVarianceInvariant"));
        Diagnostic3.recursiveDefinition = () => new ParameterizedString(getRawString("Diagnostic.recursiveDefinition"));
        Diagnostic3.relativeImportNotAllowed = () => getRawString("Diagnostic.relativeImportNotAllowed");
        Diagnostic3.requiredArgCount = () => getRawString("Diagnostic.requiredArgCount");
        Diagnostic3.requiredNotInTypedDict = () => getRawString("Diagnostic.requiredNotInTypedDict");
        Diagnostic3.returnMissing = () => new ParameterizedString(getRawString("Diagnostic.returnMissing"));
        Diagnostic3.returnOutsideFunction = () => getRawString("Diagnostic.returnOutsideFunction");
        Diagnostic3.returnTypeContravariant = () => getRawString("Diagnostic.returnTypeContravariant");
        Diagnostic3.returnTypeMismatch = () => new ParameterizedString(getRawString("Diagnostic.returnTypeMismatch"));
        Diagnostic3.returnTypeUnknown = () => getRawString("Diagnostic.returnTypeUnknown");
        Diagnostic3.returnTypePartiallyUnknown = () => new ParameterizedString(getRawString("Diagnostic.returnTypePartiallyUnknown"));
        Diagnostic3.revealLocalsArgs = () => getRawString("Diagnostic.revealLocalsArgs");
        Diagnostic3.revealLocalsNone = () => getRawString("Diagnostic.revealLocalsNone");
        Diagnostic3.revealTypeArgs = () => getRawString("Diagnostic.revealTypeArgs");
        Diagnostic3.revealTypeExpectedTextArg = () => getRawString("Diagnostic.revealTypeExpectedTextArg");
        Diagnostic3.revealTypeExpectedTextMismatch = () => new ParameterizedString(getRawString("Diagnostic.revealTypeExpectedTextMismatch"));
        Diagnostic3.revealTypeExpectedTypeMismatch = () => new ParameterizedString(getRawString("Diagnostic.revealTypeExpectedTypeMismatch"));
        Diagnostic3.selfTypeContext = () => getRawString("Diagnostic.selfTypeContext");
        Diagnostic3.selfTypeWithTypedSelfOrCls = () => getRawString("Diagnostic.selfTypeWithTypedSelfOrCls");
        Diagnostic3.setterGetterTypeMismatch = () => getRawString("Diagnostic.setterGetterTypeMismatch");
        Diagnostic3.starPatternInAsPattern = () => getRawString("Diagnostic.starPatternInAsPattern");
        Diagnostic3.starPatternInOrPattern = () => getRawString("Diagnostic.starPatternInOrPattern");
        Diagnostic3.singleOverload = () => new ParameterizedString(getRawString("Diagnostic.singleOverload"));
        Diagnostic3.slotsAttributeError = () => new ParameterizedString(getRawString("Diagnostic.slotsAttributeError"));
        Diagnostic3.slotsClassVarConflict = () => new ParameterizedString(getRawString("Diagnostic.slotsClassVarConflict"));
        Diagnostic3.starStarWildcardNotAllowed = () => getRawString("Diagnostic.starStarWildcardNotAllowed");
        Diagnostic3.staticClsSelfParam = () => getRawString("Diagnostic.staticClsSelfParam");
        Diagnostic3.strictTypeGuardReturnType = () => new ParameterizedString(getRawString("Diagnostic.strictTypeGuardReturnType"));
        Diagnostic3.stringNonAsciiBytes = () => getRawString("Diagnostic.stringNonAsciiBytes");
        Diagnostic3.stringNotSubscriptable = () => getRawString("Diagnostic.stringNotSubscriptable");
        Diagnostic3.stringUnsupportedEscape = () => getRawString("Diagnostic.stringUnsupportedEscape");
        Diagnostic3.stringUnterminated = () => getRawString("Diagnostic.stringUnterminated");
        Diagnostic3.stubFileMissing = () => new ParameterizedString(getRawString("Diagnostic.stubFileMissing"));
        Diagnostic3.stubUsesGetAttr = () => getRawString("Diagnostic.stubUsesGetAttr");
        Diagnostic3.sublistParamsIncompatible = () => getRawString("Diagnostic.sublistParamsIncompatible");
        Diagnostic3.superCallArgCount = () => getRawString("Diagnostic.superCallArgCount");
        Diagnostic3.superCallFirstArg = () => new ParameterizedString(getRawString("Diagnostic.superCallFirstArg"));
        Diagnostic3.superCallSecondArg = () => new ParameterizedString(getRawString("Diagnostic.superCallSecondArg"));
        Diagnostic3.superCallZeroArgForm = () => getRawString("Diagnostic.superCallZeroArgForm");
        Diagnostic3.symbolIsUnbound = () => new ParameterizedString(getRawString("Diagnostic.symbolIsUnbound"));
        Diagnostic3.symbolIsUndefined = () => new ParameterizedString(getRawString("Diagnostic.symbolIsUndefined"));
        Diagnostic3.symbolIsPossiblyUnbound = () => new ParameterizedString(getRawString("Diagnostic.symbolIsPossiblyUnbound"));
        Diagnostic3.symbolOverridden = () => new ParameterizedString(getRawString("Diagnostic.symbolOverridden"));
        Diagnostic3.totalOrderingMissingMethod = () => getRawString("Diagnostic.totalOrderingMissingMethod");
        Diagnostic3.trailingCommaInFromImport = () => getRawString("Diagnostic.trailingCommaInFromImport");
        Diagnostic3.tryWithoutExcept = () => getRawString("Diagnostic.tryWithoutExcept");
        Diagnostic3.tupleAssignmentMismatch = () => new ParameterizedString(getRawString("Diagnostic.tupleAssignmentMismatch"));
        Diagnostic3.tupleInAnnotation = () => getRawString("Diagnostic.tupleInAnnotation");
        Diagnostic3.tupleIndexOutOfRange = () => new ParameterizedString(getRawString("Diagnostic.tupleIndexOutOfRange"));
        Diagnostic3.typeAliasIsRecursiveDirect = () => new ParameterizedString(getRawString("Diagnostic.typeAliasIsRecursiveDirect"));
        Diagnostic3.typeAliasIsRecursiveIndirect = () => new ParameterizedString(getRawString("Diagnostic.typeAliasIsRecursiveIndirect"));
        Diagnostic3.typeAliasNotInModuleOrClass = () => getRawString("Diagnostic.typeAliasNotInModuleOrClass");
        Diagnostic3.typeAliasRedeclared = () => new ParameterizedString(getRawString("Diagnostic.typeAliasRedeclared"));
        Diagnostic3.typeAnnotationCall = () => getRawString("Diagnostic.typeAnnotationCall");
        Diagnostic3.typeAnnotationVariable = () => getRawString("Diagnostic.typeAnnotationVariable");
        Diagnostic3.typeArgListExpected = () => getRawString("Diagnostic.typeArgListExpected");
        Diagnostic3.typeArgListNotAllowed = () => getRawString("Diagnostic.typeArgListNotAllowed");
        Diagnostic3.typeArgsExpectingNone = () => new ParameterizedString(getRawString("Diagnostic.typeArgsExpectingNone"));
        Diagnostic3.typeArgsMismatchOne = () => new ParameterizedString(getRawString("Diagnostic.typeArgsMismatchOne"));
        Diagnostic3.typeArgsMissingForAlias = () => new ParameterizedString(getRawString("Diagnostic.typeArgsMissingForAlias"));
        Diagnostic3.typeArgsMissingForClass = () => new ParameterizedString(getRawString("Diagnostic.typeArgsMissingForClass"));
        Diagnostic3.typeArgsTooFew = () => new ParameterizedString(getRawString("Diagnostic.typeArgsTooFew"));
        Diagnostic3.typeArgsTooMany = () => new ParameterizedString(getRawString("Diagnostic.typeArgsTooMany"));
        Diagnostic3.typeAssignmentMismatch = () => new ParameterizedString(getRawString("Diagnostic.typeAssignmentMismatch"));
        Diagnostic3.typeCallNotAllowed = () => getRawString("Diagnostic.typeCallNotAllowed");
        Diagnostic3.typeCommentDeprecated = () => getRawString("Diagnostic.typeCommentDeprecated");
        Diagnostic3.typedDictAccess = () => getRawString("Diagnostic.typedDictAccess");
        Diagnostic3.typedDictBadVar = () => getRawString("Diagnostic.typedDictBadVar");
        Diagnostic3.typedDictBaseClass = () => getRawString("Diagnostic.typedDictBaseClass");
        Diagnostic3.typedDictDelete = () => getRawString("Diagnostic.typedDictDelete");
        Diagnostic3.typedDictEmptyName = () => getRawString("Diagnostic.typedDictEmptyName");
        Diagnostic3.typedDictEntryName = () => getRawString("Diagnostic.typedDictEntryName");
        Diagnostic3.typedDictEntryUnique = () => getRawString("Diagnostic.typedDictEntryUnique");
        Diagnostic3.typedDictExtraArgs = () => getRawString("Diagnostic.typedDictExtraArgs");
        Diagnostic3.typedDictFieldRedefinition = () => new ParameterizedString(getRawString("Diagnostic.typedDictFieldRedefinition"));
        Diagnostic3.typedDictFirstArg = () => getRawString("Diagnostic.typedDictFirstArg");
        Diagnostic3.typedDictSecondArgDict = () => getRawString("Diagnostic.typedDictSecondArgDict");
        Diagnostic3.typedDictSecondArgDictEntry = () => getRawString("Diagnostic.typedDictSecondArgDictEntry");
        Diagnostic3.typedDictSet = () => getRawString("Diagnostic.typedDictSet");
        Diagnostic3.typedDictTotalParam = () => getRawString("Diagnostic.typedDictTotalParam");
        Diagnostic3.typeExpectedClass = () => new ParameterizedString(getRawString("Diagnostic.typeExpectedClass"));
        Diagnostic3.typeGuardArgCount = () => getRawString("Diagnostic.typeGuardArgCount");
        Diagnostic3.typeNotAwaitable = () => new ParameterizedString(getRawString("Diagnostic.typeNotAwaitable"));
        Diagnostic3.typeNotCallable = () => new ParameterizedString(getRawString("Diagnostic.typeNotCallable"));
        Diagnostic3.typeNotIntantiable = () => new ParameterizedString(getRawString("Diagnostic.typeNotIntantiable"));
        Diagnostic3.typeNotIterable = () => new ParameterizedString(getRawString("Diagnostic.typeNotIterable"));
        Diagnostic3.typeNotSpecializable = () => new ParameterizedString(getRawString("Diagnostic.typeNotSpecializable"));
        Diagnostic3.typeNotSubscriptable = () => new ParameterizedString(getRawString("Diagnostic.typeNotSubscriptable"));
        Diagnostic3.typeNotUsableWith = () => new ParameterizedString(getRawString("Diagnostic.typeNotUsableWith"));
        Diagnostic3.typeNotSupportBinaryOperator = () => new ParameterizedString(getRawString("Diagnostic.typeNotSupportBinaryOperator"));
        Diagnostic3.typeNotSupportBinaryOperatorBidirectional = () => new ParameterizedString(getRawString("Diagnostic.typeNotSupportBinaryOperatorBidirectional"));
        Diagnostic3.typeNotSupportUnaryOperator = () => new ParameterizedString(getRawString("Diagnostic.typeNotSupportUnaryOperator"));
        Diagnostic3.typeNotSupportUnaryOperatorBidirectional = () => new ParameterizedString(getRawString("Diagnostic.typeNotSupportUnaryOperatorBidirectional"));
        Diagnostic3.typePartiallyUnknown = () => new ParameterizedString(getRawString("Diagnostic.typePartiallyUnknown"));
        Diagnostic3.typeUnknown = () => new ParameterizedString(getRawString("Diagnostic.typeUnknown"));
        Diagnostic3.typeVarAssignedName = () => new ParameterizedString(getRawString("Diagnostic.typeVarAssignedName"));
        Diagnostic3.typeVarAssignmentMismatch = () => new ParameterizedString(getRawString("Diagnostic.typeVarAssignmentMismatch"));
        Diagnostic3.typeVarBoundAndConstrained = () => getRawString("Diagnostic.typeVarBoundAndConstrained");
        Diagnostic3.typeVarFirstArg = () => getRawString("Diagnostic.typeVarFirstArg");
        Diagnostic3.typeVarGeneric = () => getRawString("Diagnostic.typeVarGeneric");
        Diagnostic3.typeVarNoMember = () => new ParameterizedString(getRawString("Diagnostic.typeVarNoMember"));
        Diagnostic3.typeVarNotSubscriptable = () => new ParameterizedString(getRawString("Diagnostic.typeVarNotSubscriptable"));
        Diagnostic3.typeVarNotUsedByOuterScope = () => new ParameterizedString(getRawString("Diagnostic.typeVarNotUsedByOuterScope"));
        Diagnostic3.typeVarPossiblyUnsolvable = () => new ParameterizedString(getRawString("Diagnostic.typeVarPossiblyUnsolvable"));
        Diagnostic3.typeVarSingleConstraint = () => getRawString("Diagnostic.typeVarSingleConstraint");
        Diagnostic3.typeVarsNotInGenericOrProtocol = () => getRawString("Diagnostic.typeVarsNotInGenericOrProtocol");
        Diagnostic3.typeVarTupleMustBeUnpacked = () => getRawString("Diagnostic.typeVarTupleMustBeUnpacked");
        Diagnostic3.typeVarTupleContext = () => getRawString("Diagnostic.typeVarTupleContext");
        Diagnostic3.typeVarUnknownParam = () => new ParameterizedString(getRawString("Diagnostic.typeVarUnknownParam"));
        Diagnostic3.typeVarUsedByOuterScope = () => new ParameterizedString(getRawString("Diagnostic.typeVarUsedByOuterScope"));
        Diagnostic3.typeVarUsedOnlyOnce = () => new ParameterizedString(getRawString("Diagnostic.typeVarUsedOnlyOnce"));
        Diagnostic3.typeVarVariance = () => getRawString("Diagnostic.typeVarVariance");
        Diagnostic3.unaccessedClass = () => new ParameterizedString(getRawString("Diagnostic.unaccessedClass"));
        Diagnostic3.unaccessedFunction = () => new ParameterizedString(getRawString("Diagnostic.unaccessedFunction"));
        Diagnostic3.unaccessedImport = () => new ParameterizedString(getRawString("Diagnostic.unaccessedImport"));
        Diagnostic3.unaccessedSymbol = () => new ParameterizedString(getRawString("Diagnostic.unaccessedSymbol"));
        Diagnostic3.unaccessedVariable = () => new ParameterizedString(getRawString("Diagnostic.unaccessedVariable"));
        Diagnostic3.unexpectedAsyncToken = () => getRawString("Diagnostic.unexpectedAsyncToken");
        Diagnostic3.unexpectedExprToken = () => getRawString("Diagnostic.unexpectedExprToken");
        Diagnostic3.unexpectedIndent = () => getRawString("Diagnostic.unexpectedIndent");
        Diagnostic3.unexpectedUnindent = () => getRawString("Diagnostic.unexpectedUnindent");
        Diagnostic3.unionSyntaxIllegal = () => getRawString("Diagnostic.unionSyntaxIllegal");
        Diagnostic3.unionTypeArgCount = () => getRawString("Diagnostic.unionTypeArgCount");
        Diagnostic3.uninitializedInstanceVariable = () => new ParameterizedString(getRawString("Diagnostic.uninitializedInstanceVariable"));
        Diagnostic3.unnecessaryCast = () => new ParameterizedString(getRawString("Diagnostic.unnecessaryCast"));
        Diagnostic3.unnecessaryIsInstanceAlways = () => new ParameterizedString(getRawString("Diagnostic.unnecessaryIsInstanceAlways"));
        Diagnostic3.unnecessaryIsSubclassAlways = () => new ParameterizedString(getRawString("Diagnostic.unnecessaryIsSubclassAlways"));
        Diagnostic3.unnecessaryPyrightIgnore = () => getRawString("Diagnostic.unnecessaryPyrightIgnore");
        Diagnostic3.unnecessaryPyrightIgnoreRule = () => new ParameterizedString(getRawString("Diagnostic.unnecessaryPyrightIgnoreRule"));
        Diagnostic3.unnecessaryTypeIgnore = () => getRawString("Diagnostic.unnecessaryTypeIgnore");
        Diagnostic3.unpackArgCount = () => getRawString("Diagnostic.unpackArgCount");
        Diagnostic3.unpackedArgInTypeArgument = () => getRawString("Diagnostic.unpackedArgInTypeArgument");
        Diagnostic3.unpackedArgWithVariadicParam = () => getRawString("Diagnostic.unpackedArgWithVariadicParam");
        Diagnostic3.unpackedDictArgumentNotMapping = () => getRawString("Diagnostic.unpackedDictArgumentNotMapping");
        Diagnostic3.unpackedSubscriptIllegal = () => getRawString("Diagnostic.unpackedSubscriptIllegal");
        Diagnostic3.unpackedTypedDictArgument = () => getRawString("Diagnostic.unpackedTypedDictArgument");
        Diagnostic3.unpackedTypeVarTupleExpected = () => new ParameterizedString(getRawString("Diagnostic.unpackedTypeVarTupleExpected"));
        Diagnostic3.unpackExpectedTypedDict = () => getRawString("Diagnostic.unpackExpectedTypedDict");
        Diagnostic3.unpackExpectedTypeVarTuple = () => getRawString("Diagnostic.unpackExpectedTypeVarTuple");
        Diagnostic3.unpackIllegalInComprehension = () => getRawString("Diagnostic.unpackIllegalInComprehension");
        Diagnostic3.unpackInAnnotation = () => getRawString("Diagnostic.unpackInAnnotation");
        Diagnostic3.unpackInDict = () => getRawString("Diagnostic.unpackInDict");
        Diagnostic3.unpackInSet = () => getRawString("Diagnostic.unpackInSet");
        Diagnostic3.unpackNotAllowed = () => getRawString("Diagnostic.unpackNotAllowed");
        Diagnostic3.unpackOperatorNotAllowed = () => getRawString("Diagnostic.unpackOperatorNotAllowed");
        Diagnostic3.unpackTuplesIllegal = () => getRawString("Diagnostic.unpackTuplesIllegal");
        Diagnostic3.unreachableCode = () => getRawString("Diagnostic.unreachableCode");
        Diagnostic3.unreachableExcept = () => getRawString("Diagnostic.unreachableExcept");
        Diagnostic3.unsupportedDunderAllOperation = () => getRawString("Diagnostic.unsupportedDunderAllOperation");
        Diagnostic3.unusedCallResult = () => new ParameterizedString(getRawString("Diagnostic.unusedCallResult"));
        Diagnostic3.unusedCoroutine = () => getRawString("Diagnostic.unusedCoroutine");
        Diagnostic3.unusedExpression = () => getRawString("Diagnostic.unusedExpression");
        Diagnostic3.varAnnotationIllegal = () => getRawString("Diagnostic.varAnnotationIllegal");
        Diagnostic3.variadicTypeArgsTooMany = () => getRawString("Diagnostic.variadicTypeArgsTooMany");
        Diagnostic3.variadicTypeParamTooManyAlias = () => new ParameterizedString(getRawString("Diagnostic.variadicTypeParamTooManyAlias"));
        Diagnostic3.variadicTypeParamTooManyClass = () => new ParameterizedString(getRawString("Diagnostic.variadicTypeParamTooManyClass"));
        Diagnostic3.walrusIllegal = () => getRawString("Diagnostic.walrusIllegal");
        Diagnostic3.walrusNotAllowed = () => getRawString("Diagnostic.walrusNotAllowed");
        Diagnostic3.wildcardInFunction = () => getRawString("Diagnostic.wildcardInFunction");
        Diagnostic3.wildcardLibraryImport = () => getRawString("Diagnostic.wildcardLibraryImport");
        Diagnostic3.yieldFromIllegal = () => getRawString("Diagnostic.yieldFromIllegal");
        Diagnostic3.yieldFromOutsideAsync = () => getRawString("Diagnostic.yieldFromOutsideAsync");
        Diagnostic3.yieldOutsideFunction = () => getRawString("Diagnostic.yieldOutsideFunction");
        Diagnostic3.yieldTypeMismatch = () => new ParameterizedString(getRawString("Diagnostic.yieldTypeMismatch"));
        Diagnostic3.yieldWithinListCompr = () => getRawString("Diagnostic.yieldWithinListCompr");
        Diagnostic3.zeroCaseStatementsFound = () => getRawString("Diagnostic.zeroCaseStatementsFound");
        Diagnostic3.zeroLengthTupleNotAllowed = () => getRawString("Diagnostic.zeroLengthTupleNotAllowed");
      })(Diagnostic2 = Localizer2.Diagnostic || (Localizer2.Diagnostic = {}));
      let DiagnosticAddendum;
      (function(DiagnosticAddendum2) {
        DiagnosticAddendum2.argParam = () => new ParameterizedString(getRawString("DiagnosticAddendum.argParam"));
        DiagnosticAddendum2.argParamFunction = () => new ParameterizedString(getRawString("DiagnosticAddendum.argParamFunction"));
        DiagnosticAddendum2.argsParamMissing = () => new ParameterizedString(getRawString("DiagnosticAddendum.argsParamMissing"));
        DiagnosticAddendum2.argsPositionOnly = () => new ParameterizedString(getRawString("DiagnosticAddendum.argsPositionOnly"));
        DiagnosticAddendum2.argumentType = () => new ParameterizedString(getRawString("DiagnosticAddendum.argumentType"));
        DiagnosticAddendum2.argumentTypes = () => new ParameterizedString(getRawString("DiagnosticAddendum.argumentTypes"));
        DiagnosticAddendum2.assignToNone = () => getRawString("DiagnosticAddendum.assignToNone");
        DiagnosticAddendum2.asyncHelp = () => getRawString("DiagnosticAddendum.asyncHelp");
        DiagnosticAddendum2.baseClassProvidesType = () => new ParameterizedString(getRawString("DiagnosticAddendum.baseClassProvidesType"));
        DiagnosticAddendum2.dataClassFrozen = () => new ParameterizedString(getRawString("DiagnosticAddendum.dataClassFrozen"));
        DiagnosticAddendum2.dataClassFieldLocation = () => getRawString("DiagnosticAddendum.dataClassFieldLocation");
        DiagnosticAddendum2.finalMethod = () => getRawString("DiagnosticAddendum.finalMethod");
        DiagnosticAddendum2.functionParamDefaultMissing = () => new ParameterizedString(getRawString("DiagnosticAddendum.functionParamDefaultMissing"));
        DiagnosticAddendum2.functionParamName = () => new ParameterizedString(getRawString("DiagnosticAddendum.functionParamName"));
        DiagnosticAddendum2.functionReturnTypeMismatch = () => new ParameterizedString(getRawString("DiagnosticAddendum.functionReturnTypeMismatch"));
        DiagnosticAddendum2.functionTooFewParams = () => new ParameterizedString(getRawString("DiagnosticAddendum.functionTooFewParams"));
        DiagnosticAddendum2.incompatibleGetter = () => getRawString("DiagnosticAddendum.incompatibleGetter");
        DiagnosticAddendum2.incompatibleSetter = () => getRawString("DiagnosticAddendum.incompatibleSetter");
        DiagnosticAddendum2.incompatibleDeleter = () => getRawString("DiagnosticAddendum.incompatibleDeleter");
        DiagnosticAddendum2.initMethodLocation = () => new ParameterizedString(getRawString("DiagnosticAddendum.initMethodLocation"));
        DiagnosticAddendum2.initMethodSignature = () => new ParameterizedString(getRawString("DiagnosticAddendum.initMethodSignature"));
        DiagnosticAddendum2.functionTooManyParams = () => new ParameterizedString(getRawString("DiagnosticAddendum.functionTooManyParams"));
        DiagnosticAddendum2.keyNotRequired = () => new ParameterizedString(getRawString("DiagnosticAddendum.keyNotRequired"));
        DiagnosticAddendum2.keyRequiredDeleted = () => new ParameterizedString(getRawString("DiagnosticAddendum.keyRequiredDeleted"));
        DiagnosticAddendum2.keyUndefined = () => new ParameterizedString(getRawString("DiagnosticAddendum.keyUndefined"));
        DiagnosticAddendum2.kwargsParamMissing = () => new ParameterizedString(getRawString("DiagnosticAddendum.kwargsParamMissing"));
        DiagnosticAddendum2.listAssignmentMismatch = () => new ParameterizedString(getRawString("DiagnosticAddendum.listAssignmentMismatch"));
        DiagnosticAddendum2.literalAssignmentMismatch = () => new ParameterizedString(getRawString("DiagnosticAddendum.literalAssignmentMismatch"));
        DiagnosticAddendum2.matchIsNotExhaustiveType = () => new ParameterizedString(getRawString("DiagnosticAddendum.matchIsNotExhaustiveType"));
        DiagnosticAddendum2.matchIsNotExhaustiveHint = () => getRawString("DiagnosticAddendum.matchIsNotExhaustiveHint");
        DiagnosticAddendum2.memberAssignment = () => new ParameterizedString(getRawString("DiagnosticAddendum.memberAssignment"));
        DiagnosticAddendum2.memberIsAbstract = () => new ParameterizedString(getRawString("DiagnosticAddendum.memberIsAbstract"));
        DiagnosticAddendum2.memberIsAbstractMore = () => new ParameterizedString(getRawString("DiagnosticAddendum.memberIsAbstractMore"));
        DiagnosticAddendum2.memberIsFinalInProtocol = () => new ParameterizedString(getRawString("DiagnosticAddendum.memberIsFinalInProtocol"));
        DiagnosticAddendum2.memberIsInitVar = () => new ParameterizedString(getRawString("DiagnosticAddendum.memberIsInitVar"));
        DiagnosticAddendum2.memberIsInvariant = () => new ParameterizedString(getRawString("DiagnosticAddendum.memberIsInvariant"));
        DiagnosticAddendum2.memberIsNotFinalInProtocol = () => new ParameterizedString(getRawString("DiagnosticAddendum.memberIsNotFinalInProtocol"));
        DiagnosticAddendum2.memberSetClassVar = () => new ParameterizedString(getRawString("DiagnosticAddendum.memberSetClassVar"));
        DiagnosticAddendum2.memberTypeMismatch = () => new ParameterizedString(getRawString("DiagnosticAddendum.memberTypeMismatch"));
        DiagnosticAddendum2.memberUnknown = () => new ParameterizedString(getRawString("DiagnosticAddendum.memberUnknown"));
        DiagnosticAddendum2.missingProtocolMember = () => new ParameterizedString(getRawString("DiagnosticAddendum.missingProtocolMember"));
        DiagnosticAddendum2.missingGetter = () => getRawString("DiagnosticAddendum.missingGetter");
        DiagnosticAddendum2.missingSetter = () => getRawString("DiagnosticAddendum.missingSetter");
        DiagnosticAddendum2.missingDeleter = () => getRawString("DiagnosticAddendum.missingDeleter");
        DiagnosticAddendum2.namedParamMissingInDest = () => new ParameterizedString(getRawString("DiagnosticAddendum.namedParamMissingInDest"));
        DiagnosticAddendum2.namedParamMissingInSource = () => new ParameterizedString(getRawString("DiagnosticAddendum.namedParamMissingInSource"));
        DiagnosticAddendum2.namedParamTypeMismatch = () => new ParameterizedString(getRawString("DiagnosticAddendum.namedParamTypeMismatch"));
        DiagnosticAddendum2.newMethodLocation = () => new ParameterizedString(getRawString("DiagnosticAddendum.newMethodLocation"));
        DiagnosticAddendum2.newMethodSignature = () => new ParameterizedString(getRawString("DiagnosticAddendum.newMethodSignature"));
        DiagnosticAddendum2.noOverloadAssignable = () => new ParameterizedString(getRawString("DiagnosticAddendum.noOverloadAssignable"));
        DiagnosticAddendum2.orPatternMissingName = () => new ParameterizedString(getRawString("DiagnosticAddendum.orPatternMissingName"));
        DiagnosticAddendum2.overloadSignature = () => getRawString("DiagnosticAddendum.overloadSignature");
        DiagnosticAddendum2.overloadNotAssignable = () => new ParameterizedString(getRawString("DiagnosticAddendum.overloadNotAssignable"));
        DiagnosticAddendum2.overloadWithImplementation = () => getRawString("DiagnosticAddendum.overloadWithImplementation");
        DiagnosticAddendum2.overriddenMethod = () => getRawString("DiagnosticAddendum.overriddenMethod");
        DiagnosticAddendum2.overriddenSymbol = () => getRawString("DiagnosticAddendum.overriddenSymbol");
        DiagnosticAddendum2.overrideNotClassMethod = () => getRawString("DiagnosticAddendum.overrideNotClassMethod");
        DiagnosticAddendum2.overrideNotInstanceMethod = () => getRawString("DiagnosticAddendum.overrideNotInstanceMethod");
        DiagnosticAddendum2.overrideNotStaticMethod = () => getRawString("DiagnosticAddendum.overrideNotStaticMethod");
        DiagnosticAddendum2.overrideParamKeywordNoDefault = () => new ParameterizedString(getRawString("DiagnosticAddendum.overrideParamKeywordNoDefault"));
        DiagnosticAddendum2.overrideParamKeywordType = () => new ParameterizedString(getRawString("DiagnosticAddendum.overrideParamKeywordType"));
        DiagnosticAddendum2.overrideParamName = () => new ParameterizedString(getRawString("DiagnosticAddendum.overrideParamName"));
        DiagnosticAddendum2.overrideParamNameExtra = () => new ParameterizedString(getRawString("DiagnosticAddendum.overrideParamNameExtra"));
        DiagnosticAddendum2.overrideParamNameMissing = () => new ParameterizedString(getRawString("DiagnosticAddendum.overrideParamNameMissing"));
        DiagnosticAddendum2.overrideParamNamePositionOnly = () => new ParameterizedString(getRawString("DiagnosticAddendum.overrideParamNamePositionOnly"));
        DiagnosticAddendum2.overrideParamNoDefault = () => new ParameterizedString(getRawString("DiagnosticAddendum.overrideParamNoDefault"));
        DiagnosticAddendum2.overrideParamType = () => new ParameterizedString(getRawString("DiagnosticAddendum.overrideParamType"));
        DiagnosticAddendum2.overridePositionalParamCount = () => new ParameterizedString(getRawString("DiagnosticAddendum.overridePositionalParamCount"));
        DiagnosticAddendum2.overrideReturnType = () => new ParameterizedString(getRawString("DiagnosticAddendum.overrideReturnType"));
        DiagnosticAddendum2.overrideType = () => new ParameterizedString(getRawString("DiagnosticAddendum.overrideType"));
        DiagnosticAddendum2.paramAssignment = () => new ParameterizedString(getRawString("DiagnosticAddendum.paramAssignment"));
        DiagnosticAddendum2.paramSpecOverload = () => getRawString("DiagnosticAddendum.paramSpecOverload");
        DiagnosticAddendum2.paramType = () => new ParameterizedString(getRawString("DiagnosticAddendum.paramType"));
        DiagnosticAddendum2.privateImportFromPyTypedSource = () => new ParameterizedString(getRawString("DiagnosticAddendum.privateImportFromPyTypedSource"));
        DiagnosticAddendum2.propertyAccessFromProtocolClass = () => getRawString("DiagnosticAddendum.propertyAccessFromProtocolClass");
        DiagnosticAddendum2.propertyMethodIncompatible = () => new ParameterizedString(getRawString("DiagnosticAddendum.propertyMethodIncompatible"));
        DiagnosticAddendum2.propertyMethodMissing = () => new ParameterizedString(getRawString("DiagnosticAddendum.propertyMethodMissing"));
        DiagnosticAddendum2.propertyMissingDeleter = () => new ParameterizedString(getRawString("DiagnosticAddendum.propertyMissingDeleter"));
        DiagnosticAddendum2.propertyMissingSetter = () => new ParameterizedString(getRawString("DiagnosticAddendum.propertyMissingSetter"));
        DiagnosticAddendum2.protocolMemberClassVar = () => new ParameterizedString(getRawString("DiagnosticAddendum.protocolMemberClassVar"));
        DiagnosticAddendum2.protocolIncompatible = () => new ParameterizedString(getRawString("DiagnosticAddendum.protocolIncompatible"));
        DiagnosticAddendum2.protocolMemberMissing = () => new ParameterizedString(getRawString("DiagnosticAddendum.protocolMemberMissing"));
        DiagnosticAddendum2.protocolSourceIsNotConcrete = () => new ParameterizedString(getRawString("DiagnosticAddendum.protocolSourceIsNotConcrete"));
        DiagnosticAddendum2.readOnlyAttribute = () => new ParameterizedString(getRawString("DiagnosticAddendum.readOnlyAttribute"));
        DiagnosticAddendum2.seeDeclaration = () => getRawString("DiagnosticAddendum.seeDeclaration");
        DiagnosticAddendum2.seeClassDeclaration = () => getRawString("DiagnosticAddendum.seeClassDeclaration");
        DiagnosticAddendum2.seeFunctionDeclaration = () => getRawString("DiagnosticAddendum.seeFunctionDeclaration");
        DiagnosticAddendum2.seeMethodDeclaration = () => getRawString("DiagnosticAddendum.seeMethodDeclaration");
        DiagnosticAddendum2.seeParameterDeclaration = () => getRawString("DiagnosticAddendum.seeParameterDeclaration");
        DiagnosticAddendum2.seeVariableDeclaration = () => getRawString("DiagnosticAddendum.seeVariableDeclaration");
        DiagnosticAddendum2.tupleEntryTypeMismatch = () => new ParameterizedString(getRawString("DiagnosticAddendum.tupleEntryTypeMismatch"));
        DiagnosticAddendum2.tupleAssignmentMismatch = () => new ParameterizedString(getRawString("DiagnosticAddendum.tupleAssignmentMismatch"));
        DiagnosticAddendum2.tupleSizeMismatch = () => new ParameterizedString(getRawString("DiagnosticAddendum.tupleSizeMismatch"));
        DiagnosticAddendum2.tupleSizeMismatchIndeterminate = () => new ParameterizedString(getRawString("DiagnosticAddendum.tupleSizeMismatchIndeterminate"));
        DiagnosticAddendum2.typeAssignmentMismatch = () => new ParameterizedString(getRawString("DiagnosticAddendum.typeAssignmentMismatch"));
        DiagnosticAddendum2.typeBound = () => new ParameterizedString(getRawString("DiagnosticAddendum.typeBound"));
        DiagnosticAddendum2.typeConstrainedTypeVar = () => new ParameterizedString(getRawString("DiagnosticAddendum.typeConstrainedTypeVar"));
        DiagnosticAddendum2.typedDictFieldMissing = () => new ParameterizedString(getRawString("DiagnosticAddendum.typedDictFieldMissing"));
        DiagnosticAddendum2.typedDictFieldNotRequired = () => new ParameterizedString(getRawString("DiagnosticAddendum.typedDictFieldNotRequired"));
        DiagnosticAddendum2.typedDictFieldRedefinition = () => new ParameterizedString(getRawString("DiagnosticAddendum.typedDictFieldRedefinition"));
        DiagnosticAddendum2.typedDictFieldRequired = () => new ParameterizedString(getRawString("DiagnosticAddendum.typedDictFieldRequired"));
        DiagnosticAddendum2.typedDictFieldTypeMismatch = () => new ParameterizedString(getRawString("DiagnosticAddendum.typedDictFieldTypeMismatch"));
        DiagnosticAddendum2.typedDictFieldUndefined = () => new ParameterizedString(getRawString("DiagnosticAddendum.typedDictFieldUndefined"));
        DiagnosticAddendum2.typedDictFinalMismatch = () => new ParameterizedString(getRawString("DiagnosticAddendum.typedDictFinalMismatch"));
        DiagnosticAddendum2.typeIncompatible = () => new ParameterizedString(getRawString("DiagnosticAddendum.typeIncompatible"));
        DiagnosticAddendum2.typeNotCallable = () => new ParameterizedString(getRawString("DiagnosticAddendum.typeNotCallable"));
        DiagnosticAddendum2.typeNotClass = () => new ParameterizedString(getRawString("DiagnosticAddendum.typeNotClass"));
        DiagnosticAddendum2.typeParamSpec = () => new ParameterizedString(getRawString("DiagnosticAddendum.typeParamSpec"));
        DiagnosticAddendum2.typeNotStringLiteral = () => new ParameterizedString(getRawString("DiagnosticAddendum.typeNotStringLiteral"));
        DiagnosticAddendum2.typeOfSymbol = () => new ParameterizedString(getRawString("DiagnosticAddendum.typeOfSymbol"));
        DiagnosticAddendum2.typeUnsupported = () => new ParameterizedString(getRawString("DiagnosticAddendum.typeUnsupported"));
        DiagnosticAddendum2.typeVarIsContravariant = () => new ParameterizedString(getRawString("DiagnosticAddendum.typeVarIsContravariant"));
        DiagnosticAddendum2.typeVarIsCovariant = () => new ParameterizedString(getRawString("DiagnosticAddendum.typeVarIsCovariant"));
        DiagnosticAddendum2.typeVarIsInvariant = () => new ParameterizedString(getRawString("DiagnosticAddendum.typeVarIsInvariant"));
        DiagnosticAddendum2.typeVarTupleRequiresKnownLength = () => getRawString("DiagnosticAddendum.typeVarTupleRequiresKnownLength");
        DiagnosticAddendum2.typeVarNotAllowed = () => getRawString("DiagnosticAddendum.typeVarNotAllowed");
        DiagnosticAddendum2.typeVarsMissing = () => new ParameterizedString(getRawString("DiagnosticAddendum.typeVarsMissing"));
        DiagnosticAddendum2.typeVarUnsolvableRemedy = () => getRawString("DiagnosticAddendum.typeVarUnsolvableRemedy");
        DiagnosticAddendum2.unreachableExcept = () => new ParameterizedString(getRawString("DiagnosticAddendum.unreachableExcept"));
        DiagnosticAddendum2.useDictInstead = () => getRawString("DiagnosticAddendum.useDictInstead");
        DiagnosticAddendum2.useListInstead = () => getRawString("DiagnosticAddendum.useListInstead");
        DiagnosticAddendum2.useTupleInstead = () => getRawString("DiagnosticAddendum.useTupleInstead");
        DiagnosticAddendum2.useTypeInstead = () => getRawString("DiagnosticAddendum.useTypeInstead");
      })(DiagnosticAddendum = Localizer2.DiagnosticAddendum || (Localizer2.DiagnosticAddendum = {}));
      let CodeAction;
      (function(CodeAction2) {
        CodeAction2.addOptionalToAnnotation = () => getRawString("CodeAction.addOptionalToAnnotation");
        CodeAction2.createTypeStub = () => getRawString("CodeAction.createTypeStub");
        CodeAction2.createTypeStubFor = () => new ParameterizedString(getRawString("CodeAction.createTypeStubFor"));
        CodeAction2.executingCommand = () => getRawString("CodeAction.executingCommand");
        CodeAction2.filesToAnalyzeOne = () => getRawString("CodeAction.filesToAnalyzeOne");
        CodeAction2.filesToAnalyzeCount = () => new ParameterizedString(getRawString("CodeAction.filesToAnalyzeCount"));
        CodeAction2.findingReferences = () => getRawString("CodeAction.findingReferences");
        CodeAction2.organizeImports = () => getRawString("CodeAction.organizeImports");
      })(CodeAction = Localizer2.CodeAction || (Localizer2.CodeAction = {}));
      let Refactoring;
      (function(Refactoring2) {
        Refactoring2.moveFile = () => new ParameterizedString(getRawString("Refactoring.moveFile"));
        Refactoring2.moveFileLabel = () => new ParameterizedString(getRawString("Refactoring.moveFileLabel"));
        Refactoring2.moveFileDescription = () => new ParameterizedString(getRawString("Refactoring.moveFileDescription"));
      })(Refactoring = Localizer2.Refactoring || (Localizer2.Refactoring = {}));
    })(Localizer = exports2.Localizer || (exports2.Localizer = {}));
  }
});

// node_modules/@zzzen/pyright-internal/dist/parser/parseNodes.js
var require_parseNodes = __commonJS({
  "node_modules/@zzzen/pyright-internal/dist/parser/parseNodes.js"(exports2) {
    "use strict";
    Object.defineProperty(exports2, "__esModule", { value: true });
    exports2.DictionaryNode = exports2.StringListNode = exports2.FormatStringNode = exports2.StringNode = exports2.NumberNode = exports2.EllipsisNode = exports2.ConstantNode = exports2.NameNode = exports2.LambdaNode = exports2.MemberAccessNode = exports2.YieldFromNode = exports2.YieldNode = exports2.SliceNode = exports2.IndexNode = exports2.ListComprehensionNode = exports2.CallNode = exports2.TupleNode = exports2.UnpackNode = exports2.TernaryNode = exports2.AwaitNode = exports2.AugmentedAssignmentNode = exports2.FunctionAnnotationNode = exports2.TypeAnnotationNode = exports2.AssignmentNode = exports2.AssignmentExpressionNode = exports2.BinaryOperationNode = exports2.UnaryOperationNode = exports2.ErrorNode = exports2.isExpressionNode = exports2.StatementListNode = exports2.DecoratorNode = exports2.WithItemNode = exports2.WithNode = exports2.ClassNode = exports2.ParameterNode = exports2.ParameterCategory = exports2.FunctionNode = exports2.ExceptNode = exports2.TryNode = exports2.ListComprehensionIfNode = exports2.ListComprehensionForNode = exports2.ForNode = exports2.WhileNode = exports2.IfNode = exports2.SuiteNode = exports2.ModuleNode = exports2.extendRange = exports2.getNextNodeId = exports2.ErrorExpressionCategory = exports2.ParseNodeType = void 0;
    exports2.PatternValueNode = exports2.PatternMappingExpandEntryNode = exports2.PatternMappingKeyEntryNode = exports2.PatternMappingNode = exports2.PatternCaptureNode = exports2.PatternClassArgumentNode = exports2.PatternClassNode = exports2.PatternLiteralNode = exports2.PatternAsNode = exports2.PatternSequenceNode = exports2.CaseNode = exports2.MatchNode = exports2.RaiseNode = exports2.ReturnNode = exports2.ContinueNode = exports2.BreakNode = exports2.AssertNode = exports2.NonlocalNode = exports2.GlobalNode = exports2.ImportFromAsNode = exports2.ImportFromNode = exports2.ImportAsNode = exports2.ModuleNameNode = exports2.ImportNode = exports2.PassNode = exports2.DelNode = exports2.ArgumentNode = exports2.ArgumentCategory = exports2.ListNode = exports2.SetNode = exports2.DictionaryExpandEntryNode = exports2.DictionaryKeyEntryNode = void 0;
    var textRange_1 = require_textRange();
    var ParseNodeType3;
    (function(ParseNodeType4) {
      ParseNodeType4[ParseNodeType4["Error"] = 0] = "Error";
      ParseNodeType4[ParseNodeType4["Argument"] = 1] = "Argument";
      ParseNodeType4[ParseNodeType4["Assert"] = 2] = "Assert";
      ParseNodeType4[ParseNodeType4["Assignment"] = 3] = "Assignment";
      ParseNodeType4[ParseNodeType4["AssignmentExpression"] = 4] = "AssignmentExpression";
      ParseNodeType4[ParseNodeType4["AugmentedAssignment"] = 5] = "AugmentedAssignment";
      ParseNodeType4[ParseNodeType4["Await"] = 6] = "Await";
      ParseNodeType4[ParseNodeType4["BinaryOperation"] = 7] = "BinaryOperation";
      ParseNodeType4[ParseNodeType4["Break"] = 8] = "Break";
      ParseNodeType4[ParseNodeType4["Call"] = 9] = "Call";
      ParseNodeType4[ParseNodeType4["Class"] = 10] = "Class";
      ParseNodeType4[ParseNodeType4["Constant"] = 11] = "Constant";
      ParseNodeType4[ParseNodeType4["Continue"] = 12] = "Continue";
      ParseNodeType4[ParseNodeType4["Decorator"] = 13] = "Decorator";
      ParseNodeType4[ParseNodeType4["Del"] = 14] = "Del";
      ParseNodeType4[ParseNodeType4["Dictionary"] = 15] = "Dictionary";
      ParseNodeType4[ParseNodeType4["DictionaryExpandEntry"] = 16] = "DictionaryExpandEntry";
      ParseNodeType4[ParseNodeType4["DictionaryKeyEntry"] = 17] = "DictionaryKeyEntry";
      ParseNodeType4[ParseNodeType4["Ellipsis"] = 18] = "Ellipsis";
      ParseNodeType4[ParseNodeType4["If"] = 19] = "If";
      ParseNodeType4[ParseNodeType4["Import"] = 20] = "Import";
      ParseNodeType4[ParseNodeType4["ImportAs"] = 21] = "ImportAs";
      ParseNodeType4[ParseNodeType4["ImportFrom"] = 22] = "ImportFrom";
      ParseNodeType4[ParseNodeType4["ImportFromAs"] = 23] = "ImportFromAs";
      ParseNodeType4[ParseNodeType4["Index"] = 24] = "Index";
      ParseNodeType4[ParseNodeType4["Except"] = 25] = "Except";
      ParseNodeType4[ParseNodeType4["For"] = 26] = "For";
      ParseNodeType4[ParseNodeType4["FormatString"] = 27] = "FormatString";
      ParseNodeType4[ParseNodeType4["Function"] = 28] = "Function";
      ParseNodeType4[ParseNodeType4["Global"] = 29] = "Global";
      ParseNodeType4[ParseNodeType4["Lambda"] = 30] = "Lambda";
      ParseNodeType4[ParseNodeType4["List"] = 31] = "List";
      ParseNodeType4[ParseNodeType4["ListComprehension"] = 32] = "ListComprehension";
      ParseNodeType4[ParseNodeType4["ListComprehensionFor"] = 33] = "ListComprehensionFor";
      ParseNodeType4[ParseNodeType4["ListComprehensionIf"] = 34] = "ListComprehensionIf";
      ParseNodeType4[ParseNodeType4["MemberAccess"] = 35] = "MemberAccess";
      ParseNodeType4[ParseNodeType4["Module"] = 36] = "Module";
      ParseNodeType4[ParseNodeType4["ModuleName"] = 37] = "ModuleName";
      ParseNodeType4[ParseNodeType4["Name"] = 38] = "Name";
      ParseNodeType4[ParseNodeType4["Nonlocal"] = 39] = "Nonlocal";
      ParseNodeType4[ParseNodeType4["Number"] = 40] = "Number";
      ParseNodeType4[ParseNodeType4["Parameter"] = 41] = "Parameter";
      ParseNodeType4[ParseNodeType4["Pass"] = 42] = "Pass";
      ParseNodeType4[ParseNodeType4["Raise"] = 43] = "Raise";
      ParseNodeType4[ParseNodeType4["Return"] = 44] = "Return";
      ParseNodeType4[ParseNodeType4["Set"] = 45] = "Set";
      ParseNodeType4[ParseNodeType4["Slice"] = 46] = "Slice";
      ParseNodeType4[ParseNodeType4["StatementList"] = 47] = "StatementList";
      ParseNodeType4[ParseNodeType4["StringList"] = 48] = "StringList";
      ParseNodeType4[ParseNodeType4["String"] = 49] = "String";
      ParseNodeType4[ParseNodeType4["Suite"] = 50] = "Suite";
      ParseNodeType4[ParseNodeType4["Ternary"] = 51] = "Ternary";
      ParseNodeType4[ParseNodeType4["Tuple"] = 52] = "Tuple";
      ParseNodeType4[ParseNodeType4["Try"] = 53] = "Try";
      ParseNodeType4[ParseNodeType4["TypeAnnotation"] = 54] = "TypeAnnotation";
      ParseNodeType4[ParseNodeType4["UnaryOperation"] = 55] = "UnaryOperation";
      ParseNodeType4[ParseNodeType4["Unpack"] = 56] = "Unpack";
      ParseNodeType4[ParseNodeType4["While"] = 57] = "While";
      ParseNodeType4[ParseNodeType4["With"] = 58] = "With";
      ParseNodeType4[ParseNodeType4["WithItem"] = 59] = "WithItem";
      ParseNodeType4[ParseNodeType4["Yield"] = 60] = "Yield";
      ParseNodeType4[ParseNodeType4["YieldFrom"] = 61] = "YieldFrom";
      ParseNodeType4[ParseNodeType4["FunctionAnnotation"] = 62] = "FunctionAnnotation";
      ParseNodeType4[ParseNodeType4["Match"] = 63] = "Match";
      ParseNodeType4[ParseNodeType4["Case"] = 64] = "Case";
      ParseNodeType4[ParseNodeType4["PatternSequence"] = 65] = "PatternSequence";
      ParseNodeType4[ParseNodeType4["PatternAs"] = 66] = "PatternAs";
      ParseNodeType4[ParseNodeType4["PatternLiteral"] = 67] = "PatternLiteral";
      ParseNodeType4[ParseNodeType4["PatternClass"] = 68] = "PatternClass";
      ParseNodeType4[ParseNodeType4["PatternCapture"] = 69] = "PatternCapture";
      ParseNodeType4[ParseNodeType4["PatternMapping"] = 70] = "PatternMapping";
      ParseNodeType4[ParseNodeType4["PatternMappingKeyEntry"] = 71] = "PatternMappingKeyEntry";
      ParseNodeType4[ParseNodeType4["PatternMappingExpandEntry"] = 72] = "PatternMappingExpandEntry";
      ParseNodeType4[ParseNodeType4["PatternValue"] = 73] = "PatternValue";
      ParseNodeType4[ParseNodeType4["PatternClassArgument"] = 74] = "PatternClassArgument";
    })(ParseNodeType3 = exports2.ParseNodeType || (exports2.ParseNodeType = {}));
    var ErrorExpressionCategory;
    (function(ErrorExpressionCategory2) {
      ErrorExpressionCategory2[ErrorExpressionCategory2["MissingIn"] = 0] = "MissingIn";
      ErrorExpressionCategory2[ErrorExpressionCategory2["MissingElse"] = 1] = "MissingElse";
      ErrorExpressionCategory2[ErrorExpressionCategory2["MissingExpression"] = 2] = "MissingExpression";
      ErrorExpressionCategory2[ErrorExpressionCategory2["MissingIndexOrSlice"] = 3] = "MissingIndexOrSlice";
      ErrorExpressionCategory2[ErrorExpressionCategory2["MissingDecoratorCallName"] = 4] = "MissingDecoratorCallName";
      ErrorExpressionCategory2[ErrorExpressionCategory2["MissingCallCloseParen"] = 5] = "MissingCallCloseParen";
      ErrorExpressionCategory2[ErrorExpressionCategory2["MissingIndexCloseBracket"] = 6] = "MissingIndexCloseBracket";
      ErrorExpressionCategory2[ErrorExpressionCategory2["MissingMemberAccessName"] = 7] = "MissingMemberAccessName";
      ErrorExpressionCategory2[ErrorExpressionCategory2["MissingTupleCloseParen"] = 8] = "MissingTupleCloseParen";
      ErrorExpressionCategory2[ErrorExpressionCategory2["MissingListCloseBracket"] = 9] = "MissingListCloseBracket";
      ErrorExpressionCategory2[ErrorExpressionCategory2["MissingFunctionParameterList"] = 10] = "MissingFunctionParameterList";
      ErrorExpressionCategory2[ErrorExpressionCategory2["MissingPattern"] = 11] = "MissingPattern";
      ErrorExpressionCategory2[ErrorExpressionCategory2["MissingPatternSubject"] = 12] = "MissingPatternSubject";
      ErrorExpressionCategory2[ErrorExpressionCategory2["MissingDictValue"] = 13] = "MissingDictValue";
      ErrorExpressionCategory2[ErrorExpressionCategory2["MaxDepthExceeded"] = 14] = "MaxDepthExceeded";
    })(ErrorExpressionCategory = exports2.ErrorExpressionCategory || (exports2.ErrorExpressionCategory = {}));
    var _nextNodeId = 1;
    function getNextNodeId() {
      return _nextNodeId++;
    }
    exports2.getNextNodeId = getNextNodeId;
    function extendRange(node, newRange) {
      if (newRange.start < node.start) {
        node.length += node.start - newRange.start;
        node.start = newRange.start;
      }
      if (textRange_1.TextRange.getEnd(newRange) > textRange_1.TextRange.getEnd(node)) {
        node.length = textRange_1.TextRange.getEnd(newRange) - node.start;
      }
    }
    exports2.extendRange = extendRange;
    var ModuleNode;
    (function(ModuleNode2) {
      function create(range2) {
        const node = {
          start: range2.start,
          length: range2.length,
          nodeType: 36,
          id: _nextNodeId++,
          statements: []
        };
        return node;
      }
      ModuleNode2.create = create;
    })(ModuleNode = exports2.ModuleNode || (exports2.ModuleNode = {}));
    var SuiteNode;
    (function(SuiteNode2) {
      function create(range2) {
        const node = {
          start: range2.start,
          length: range2.length,
          nodeType: 50,
          id: _nextNodeId++,
          statements: []
        };
        return node;
      }
      SuiteNode2.create = create;
    })(SuiteNode = exports2.SuiteNode || (exports2.SuiteNode = {}));
    var IfNode;
    (function(IfNode2) {
      function create(ifOrElifToken, testExpression, ifSuite, elseSuite) {
        const node = {
          start: ifOrElifToken.start,
          length: ifOrElifToken.length,
          nodeType: 19,
          id: _nextNodeId++,
          testExpression,
          ifSuite,
          elseSuite
        };
        testExpression.parent = node;
        ifSuite.parent = node;
        extendRange(node, testExpression);
        extendRange(node, ifSuite);
        if (elseSuite) {
          extendRange(node, elseSuite);
          elseSuite.parent = node;
        }
        return node;
      }
      IfNode2.create = create;
    })(IfNode = exports2.IfNode || (exports2.IfNode = {}));
    var WhileNode;
    (function(WhileNode2) {
      function create(whileToken, testExpression, whileSuite) {
        const node = {
          start: whileToken.start,
          length: whileToken.length,
          nodeType: 57,
          id: _nextNodeId++,
          testExpression,
          whileSuite
        };
        testExpression.parent = node;
        whileSuite.parent = node;
        extendRange(node, whileSuite);
        return node;
      }
      WhileNode2.create = create;
    })(WhileNode = exports2.WhileNode || (exports2.WhileNode = {}));
    var ForNode;
    (function(ForNode2) {
      function create(forToken, targetExpression, iterableExpression, forSuite) {
        const node = {
          start: forToken.start,
          length: forToken.length,
          nodeType: 26,
          id: _nextNodeId++,
          targetExpression,
          iterableExpression,
          forSuite
        };
        targetExpression.parent = node;
        iterableExpression.parent = node;
        forSuite.parent = node;
        extendRange(node, forSuite);
        return node;
      }
      ForNode2.create = create;
    })(ForNode = exports2.ForNode || (exports2.ForNode = {}));
    var ListComprehensionForNode;
    (function(ListComprehensionForNode2) {
      function create(startToken, targetExpression, iterableExpression) {
        const node = {
          start: startToken.start,
          length: startToken.length,
          nodeType: 33,
          id: _nextNodeId++,
          targetExpression,
          iterableExpression
        };
        targetExpression.parent = node;
        iterableExpression.parent = node;
        extendRange(node, targetExpression);
        extendRange(node, iterableExpression);
        return node;
      }
      ListComprehensionForNode2.create = create;
    })(ListComprehensionForNode = exports2.ListComprehensionForNode || (exports2.ListComprehensionForNode = {}));
    var ListComprehensionIfNode;
    (function(ListComprehensionIfNode2) {
      function create(ifToken, testExpression) {
        const node = {
          start: ifToken.start,
          length: ifToken.length,
          nodeType: 34,
          id: _nextNodeId++,
          testExpression
        };
        testExpression.parent = node;
        extendRange(node, testExpression);
        return node;
      }
      ListComprehensionIfNode2.create = create;
    })(ListComprehensionIfNode = exports2.ListComprehensionIfNode || (exports2.ListComprehensionIfNode = {}));
    var TryNode;
    (function(TryNode2) {
      function create(tryToken, trySuite) {
        const node = {
          start: tryToken.start,
          length: tryToken.length,
          nodeType: 53,
          id: _nextNodeId++,
          trySuite,
          exceptClauses: []
        };
        trySuite.parent = node;
        extendRange(node, trySuite);
        return node;
      }
      TryNode2.create = create;
    })(TryNode = exports2.TryNode || (exports2.TryNode = {}));
    var ExceptNode;
    (function(ExceptNode2) {
      function create(exceptToken, exceptSuite, isExceptGroup) {
        const node = {
          start: exceptToken.start,
          length: exceptToken.length,
          nodeType: 25,
          id: _nextNodeId++,
          exceptSuite,
          isExceptGroup
        };
        exceptSuite.parent = node;
        extendRange(node, exceptSuite);
        return node;
      }
      ExceptNode2.create = create;
    })(ExceptNode = exports2.ExceptNode || (exports2.ExceptNode = {}));
    var FunctionNode;
    (function(FunctionNode2) {
      function create(defToken, name, suite) {
        const node = {
          start: defToken.start,
          length: defToken.length,
          nodeType: 28,
          id: _nextNodeId++,
          decorators: [],
          name,
          parameters: [],
          suite
        };
        name.parent = node;
        suite.parent = node;
        extendRange(node, suite);
        return node;
      }
      FunctionNode2.create = create;
    })(FunctionNode = exports2.FunctionNode || (exports2.FunctionNode = {}));
    var ParameterCategory;
    (function(ParameterCategory2) {
      ParameterCategory2[ParameterCategory2["Simple"] = 0] = "Simple";
      ParameterCategory2[ParameterCategory2["VarArgList"] = 1] = "VarArgList";
      ParameterCategory2[ParameterCategory2["VarArgDictionary"] = 2] = "VarArgDictionary";
    })(ParameterCategory = exports2.ParameterCategory || (exports2.ParameterCategory = {}));
    var ParameterNode;
    (function(ParameterNode2) {
      function create(startToken, paramCategory) {
        const node = {
          start: startToken.start,
          length: startToken.length,
          nodeType: 41,
          id: _nextNodeId++,
          category: paramCategory
        };
        return node;
      }
      ParameterNode2.create = create;
    })(ParameterNode = exports2.ParameterNode || (exports2.ParameterNode = {}));
    var ClassNode;
    (function(ClassNode2) {
      function create(classToken, name, suite) {
        const node = {
          start: classToken.start,
          length: classToken.length,
          nodeType: 10,
          id: _nextNodeId++,
          decorators: [],
          name,
          arguments: [],
          suite
        };
        name.parent = node;
        suite.parent = node;
        extendRange(node, suite);
        return node;
      }
      ClassNode2.create = create;
      function createDummyForDecorators(decorators) {
        const node = {
          start: decorators[0].start,
          length: 0,
          nodeType: 10,
          id: _nextNodeId++,
          decorators,
          name: {
            start: decorators[0].start,
            length: 0,
            id: 0,
            nodeType: 38,
            token: {
              type: 7,
              start: 0,
              length: 0,
              comments: [],
              value: ""
            },
            value: ""
          },
          arguments: [],
          suite: {
            start: decorators[0].start,
            length: 0,
            id: 0,
            nodeType: 50,
            statements: []
          }
        };
        decorators.forEach((decorator) => {
          decorator.parent = node;
          extendRange(node, decorator);
        });
        node.name.parent = node;
        node.suite.parent = node;
        return node;
      }
      ClassNode2.createDummyForDecorators = createDummyForDecorators;
    })(ClassNode = exports2.ClassNode || (exports2.ClassNode = {}));
    var WithNode;
    (function(WithNode2) {
      function create(withToken, suite) {
        const node = {
          start: withToken.start,
          length: withToken.length,
          nodeType: 58,
          id: _nextNodeId++,
          withItems: [],
          suite
        };
        suite.parent = node;
        extendRange(node, suite);
        return node;
      }
      WithNode2.create = create;
    })(WithNode = exports2.WithNode || (exports2.WithNode = {}));
    var WithItemNode;
    (function(WithItemNode2) {
      function create(expression) {
        const node = {
          start: expression.start,
          length: expression.length,
          nodeType: 59,
          id: _nextNodeId++,
          expression
        };
        expression.parent = node;
        return node;
      }
      WithItemNode2.create = create;
    })(WithItemNode = exports2.WithItemNode || (exports2.WithItemNode = {}));
    var DecoratorNode;
    (function(DecoratorNode2) {
      function create(atToken, expression) {
        const node = {
          start: atToken.start,
          length: atToken.length,
          nodeType: 13,
          id: _nextNodeId++,
          expression
        };
        expression.parent = node;
        extendRange(node, expression);
        return node;
      }
      DecoratorNode2.create = create;
    })(DecoratorNode = exports2.DecoratorNode || (exports2.DecoratorNode = {}));
    var StatementListNode;
    (function(StatementListNode2) {
      function create(atToken) {
        const node = {
          start: atToken.start,
          length: atToken.length,
          nodeType: 47,
          id: _nextNodeId++,
          statements: []
        };
        return node;
      }
      StatementListNode2.create = create;
    })(StatementListNode = exports2.StatementListNode || (exports2.StatementListNode = {}));
    function isExpressionNode(node) {
      switch (node.nodeType) {
        case 0:
        case 55:
        case 7:
        case 4:
        case 54:
        case 6:
        case 51:
        case 56:
        case 52:
        case 9:
        case 32:
        case 24:
        case 46:
        case 60:
        case 61:
        case 35:
        case 30:
        case 38:
        case 11:
        case 18:
        case 40:
        case 49:
        case 27:
        case 48:
        case 15:
        case 16:
        case 31:
        case 45:
          return true;
        default:
          return false;
      }
    }
    exports2.isExpressionNode = isExpressionNode;
    var ErrorNode;
    (function(ErrorNode2) {
      function create(initialRange, category, child, decorators) {
        const node = {
          start: initialRange.start,
          length: initialRange.length,
          nodeType: 0,
          id: _nextNodeId++,
          category,
          child,
          decorators
        };
        if (child) {
          child.parent = node;
          extendRange(node, child);
        }
        if (decorators) {
          decorators.forEach((decorator) => {
            decorator.parent = node;
          });
          if (decorators.length > 0) {
            extendRange(node, decorators[0]);
          }
        }
        return node;
      }
      ErrorNode2.create = create;
    })(ErrorNode = exports2.ErrorNode || (exports2.ErrorNode = {}));
    var UnaryOperationNode;
    (function(UnaryOperationNode2) {
      function create(operatorToken, expression, operator) {
        var _a2;
        const node = {
          start: operatorToken.start,
          length: operatorToken.length,
          nodeType: 55,
          id: _nextNodeId++,
          operator,
          operatorToken,
          expression
        };
        expression.parent = node;
        node.maxChildDepth = 1 + ((_a2 = expression.maxChildDepth) !== null && _a2 !== void 0 ? _a2 : 0);
        extendRange(node, expression);
        return node;
      }
      UnaryOperationNode2.create = create;
    })(UnaryOperationNode = exports2.UnaryOperationNode || (exports2.UnaryOperationNode = {}));
    var BinaryOperationNode;
    (function(BinaryOperationNode2) {
      function create(leftExpression, rightExpression, operatorToken, operator) {
        var _a2, _b;
        const node = {
          start: leftExpression.start,
          length: leftExpression.length,
          nodeType: 7,
          id: _nextNodeId++,
          leftExpression,
          operatorToken,
          operator,
          rightExpression
        };
        leftExpression.parent = node;
        rightExpression.parent = node;
        node.maxChildDepth = 1 + Math.max((_a2 = leftExpression.maxChildDepth) !== null && _a2 !== void 0 ? _a2 : 0, (_b = rightExpression.maxChildDepth) !== null && _b !== void 0 ? _b : 0);
        extendRange(node, rightExpression);
        return node;
      }
      BinaryOperationNode2.create = create;
    })(BinaryOperationNode = exports2.BinaryOperationNode || (exports2.BinaryOperationNode = {}));
    var AssignmentExpressionNode;
    (function(AssignmentExpressionNode2) {
      function create(name, rightExpression) {
        const node = {
          start: name.start,
          length: name.length,
          nodeType: 4,
          id: _nextNodeId++,
          name,
          rightExpression
        };
        name.parent = node;
        rightExpression.parent = node;
        extendRange(node, rightExpression);
        return node;
      }
      AssignmentExpressionNode2.create = create;
    })(AssignmentExpressionNode = exports2.AssignmentExpressionNode || (exports2.AssignmentExpressionNode = {}));
    var AssignmentNode;
    (function(AssignmentNode2) {
      function create(leftExpression, rightExpression) {
        const node = {
          start: leftExpression.start,
          length: leftExpression.length,
          nodeType: 3,
          id: _nextNodeId++,
          leftExpression,
          rightExpression
        };
        leftExpression.parent = node;
        rightExpression.parent = node;
        extendRange(node, rightExpression);
        return node;
      }
      AssignmentNode2.create = create;
    })(AssignmentNode = exports2.AssignmentNode || (exports2.AssignmentNode = {}));
    var TypeAnnotationNode;
    (function(TypeAnnotationNode2) {
      function create(valueExpression, typeAnnotation) {
        const node = {
          start: valueExpression.start,
          length: valueExpression.length,
          nodeType: 54,
          id: _nextNodeId++,
          valueExpression,
          typeAnnotation
        };
        valueExpression.parent = node;
        typeAnnotation.parent = node;
        extendRange(node, typeAnnotation);
        return node;
      }
      TypeAnnotationNode2.create = create;
    })(TypeAnnotationNode = exports2.TypeAnnotationNode || (exports2.TypeAnnotationNode = {}));
    var FunctionAnnotationNode;
    (function(FunctionAnnotationNode2) {
      function create(openParenToken, isParamListEllipsis, paramTypeAnnotations, returnTypeAnnotation) {
        const node = {
          start: openParenToken.start,
          length: openParenToken.length,
          nodeType: 62,
          id: _nextNodeId++,
          isParamListEllipsis,
          paramTypeAnnotations,
          returnTypeAnnotation
        };
        paramTypeAnnotations.forEach((p) => {
          p.parent = node;
        });
        returnTypeAnnotation.parent = node;
        extendRange(node, returnTypeAnnotation);
        return node;
      }
      FunctionAnnotationNode2.create = create;
    })(FunctionAnnotationNode = exports2.FunctionAnnotationNode || (exports2.FunctionAnnotationNode = {}));
    var AugmentedAssignmentNode;
    (function(AugmentedAssignmentNode2) {
      function create(leftExpression, rightExpression, operator, destExpression) {
        const node = {
          start: leftExpression.start,
          length: leftExpression.length,
          nodeType: 5,
          id: _nextNodeId++,
          leftExpression,
          operator,
          rightExpression,
          destExpression
        };
        leftExpression.parent = node;
        rightExpression.parent = node;
        destExpression.parent = node;
        extendRange(node, rightExpression);
        return node;
      }
      AugmentedAssignmentNode2.create = create;
    })(AugmentedAssignmentNode = exports2.AugmentedAssignmentNode || (exports2.AugmentedAssignmentNode = {}));
    var AwaitNode;
    (function(AwaitNode2) {
      function create(awaitToken, expression) {
        const node = {
          start: awaitToken.start,
          length: awaitToken.length,
          nodeType: 6,
          id: _nextNodeId++,
          expression
        };
        expression.parent = node;
        extendRange(node, expression);
        return node;
      }
      AwaitNode2.create = create;
    })(AwaitNode = exports2.AwaitNode || (exports2.AwaitNode = {}));
    var TernaryNode;
    (function(TernaryNode2) {
      function create(ifExpression, testExpression, elseExpression) {
        const node = {
          start: ifExpression.start,
          length: ifExpression.length,
          nodeType: 51,
          id: _nextNodeId++,
          ifExpression,
          testExpression,
          elseExpression
        };
        ifExpression.parent = node;
        testExpression.parent = node;
        elseExpression.parent = node;
        extendRange(node, elseExpression);
        return node;
      }
      TernaryNode2.create = create;
    })(TernaryNode = exports2.TernaryNode || (exports2.TernaryNode = {}));
    var UnpackNode;
    (function(UnpackNode2) {
      function create(starToken, expression) {
        const node = {
          start: starToken.start,
          length: starToken.length,
          nodeType: 56,
          id: _nextNodeId++,
          expression
        };
        expression.parent = node;
        extendRange(node, expression);
        return node;
      }
      UnpackNode2.create = create;
    })(UnpackNode = exports2.UnpackNode || (exports2.UnpackNode = {}));
    var TupleNode;
    (function(TupleNode2) {
      function create(range2, enclosedInParens) {
        const node = {
          start: range2.start,
          length: range2.length,
          nodeType: 52,
          id: _nextNodeId++,
          expressions: [],
          enclosedInParens
        };
        return node;
      }
      TupleNode2.create = create;
    })(TupleNode = exports2.TupleNode || (exports2.TupleNode = {}));
    var CallNode;
    (function(CallNode2) {
      function create(leftExpression, argList, trailingComma) {
        var _a2;
        const node = {
          start: leftExpression.start,
          length: leftExpression.length,
          nodeType: 9,
          id: _nextNodeId++,
          leftExpression,
          arguments: argList,
          trailingComma
        };
        leftExpression.parent = node;
        node.maxChildDepth = 1 + ((_a2 = leftExpression.maxChildDepth) !== null && _a2 !== void 0 ? _a2 : 0);
        if (argList.length > 0) {
          argList.forEach((arg) => {
            arg.parent = node;
          });
          extendRange(node, argList[argList.length - 1]);
        }
        return node;
      }
      CallNode2.create = create;
    })(CallNode = exports2.CallNode || (exports2.CallNode = {}));
    var ListComprehensionNode;
    (function(ListComprehensionNode2) {
      function create(expression) {
        const node = {
          start: expression.start,
          length: expression.length,
          nodeType: 32,
          id: _nextNodeId++,
          expression,
          forIfNodes: []
        };
        expression.parent = node;
        return node;
      }
      ListComprehensionNode2.create = create;
    })(ListComprehensionNode = exports2.ListComprehensionNode || (exports2.ListComprehensionNode = {}));
    var IndexNode;
    (function(IndexNode2) {
      function create(baseExpression, items, trailingComma, closeBracketToken) {
        var _a2;
        const node = {
          start: baseExpression.start,
          length: baseExpression.length,
          nodeType: 24,
          id: _nextNodeId++,
          baseExpression,
          items,
          trailingComma
        };
        baseExpression.parent = node;
        items.forEach((item) => {
          item.parent = node;
        });
        extendRange(node, closeBracketToken);
        node.maxChildDepth = 1 + ((_a2 = baseExpression.maxChildDepth) !== null && _a2 !== void 0 ? _a2 : 0);
        return node;
      }
      IndexNode2.create = create;
    })(IndexNode = exports2.IndexNode || (exports2.IndexNode = {}));
    var SliceNode;
    (function(SliceNode2) {
      function create(range2) {
        const node = {
          start: range2.start,
          length: range2.length,
          nodeType: 46,
          id: _nextNodeId++
        };
        return node;
      }
      SliceNode2.create = create;
    })(SliceNode = exports2.SliceNode || (exports2.SliceNode = {}));
    var YieldNode;
    (function(YieldNode2) {
      function create(yieldToken, expression) {
        const node = {
          start: yieldToken.start,
          length: yieldToken.length,
          nodeType: 60,
          id: _nextNodeId++,
          expression
        };
        if (expression) {
          expression.parent = node;
          extendRange(node, expression);
        }
        return node;
      }
      YieldNode2.create = create;
    })(YieldNode = exports2.YieldNode || (exports2.YieldNode = {}));
    var YieldFromNode;
    (function(YieldFromNode2) {
      function create(yieldToken, expression) {
        const node = {
          start: yieldToken.start,
          length: yieldToken.length,
          nodeType: 61,
          id: _nextNodeId++,
          expression
        };
        expression.parent = node;
        extendRange(node, expression);
        return node;
      }
      YieldFromNode2.create = create;
    })(YieldFromNode = exports2.YieldFromNode || (exports2.YieldFromNode = {}));
    var MemberAccessNode;
    (function(MemberAccessNode2) {
      function create(leftExpression, memberName) {
        var _a2;
        const node = {
          start: leftExpression.start,
          length: leftExpression.length,
          nodeType: 35,
          id: _nextNodeId++,
          leftExpression,
          memberName
        };
        leftExpression.parent = node;
        memberName.parent = node;
        extendRange(node, memberName);
        node.maxChildDepth = 1 + ((_a2 = leftExpression.maxChildDepth) !== null && _a2 !== void 0 ? _a2 : 0);
        return node;
      }
      MemberAccessNode2.create = create;
    })(MemberAccessNode = exports2.MemberAccessNode || (exports2.MemberAccessNode = {}));
    var LambdaNode;
    (function(LambdaNode2) {
      function create(lambdaToken, expression) {
        const node = {
          start: lambdaToken.start,
          length: lambdaToken.length,
          nodeType: 30,
          id: _nextNodeId++,
          parameters: [],
          expression
        };
        expression.parent = node;
        extendRange(node, expression);
        return node;
      }
      LambdaNode2.create = create;
    })(LambdaNode = exports2.LambdaNode || (exports2.LambdaNode = {}));
    var NameNode;
    (function(NameNode2) {
      function create(nameToken) {
        const node = {
          start: nameToken.start,
          length: nameToken.length,
          nodeType: 38,
          id: _nextNodeId++,
          token: nameToken,
          value: nameToken.value
        };
        return node;
      }
      NameNode2.create = create;
    })(NameNode = exports2.NameNode || (exports2.NameNode = {}));
    var ConstantNode;
    (function(ConstantNode2) {
      function create(token) {
        const node = {
          start: token.start,
          length: token.length,
          nodeType: 11,
          id: _nextNodeId++,
          constType: token.keywordType
        };
        return node;
      }
      ConstantNode2.create = create;
    })(ConstantNode = exports2.ConstantNode || (exports2.ConstantNode = {}));
    var EllipsisNode;
    (function(EllipsisNode2) {
      function create(range2) {
        const node = {
          start: range2.start,
          length: range2.length,
          nodeType: 18,
          id: _nextNodeId++
        };
        return node;
      }
      EllipsisNode2.create = create;
    })(EllipsisNode = exports2.EllipsisNode || (exports2.EllipsisNode = {}));
    var NumberNode;
    (function(NumberNode2) {
      function create(token) {
        const node = {
          start: token.start,
          length: token.length,
          nodeType: 40,
          id: _nextNodeId++,
          value: token.value,
          isInteger: token.isInteger,
          isImaginary: token.isImaginary
        };
        return node;
      }
      NumberNode2.create = create;
    })(NumberNode = exports2.NumberNode || (exports2.NumberNode = {}));
    var StringNode;
    (function(StringNode2) {
      function create(token, unescapedValue, hasUnescapeErrors) {
        const node = {
          start: token.start,
          length: token.length,
          nodeType: 49,
          id: _nextNodeId++,
          token,
          value: unescapedValue,
          hasUnescapeErrors
        };
        return node;
      }
      StringNode2.create = create;
    })(StringNode = exports2.StringNode || (exports2.StringNode = {}));
    var FormatStringNode;
    (function(FormatStringNode2) {
      function create(token, unescapedValue, hasUnescapeErrors, expressions) {
        const node = {
          start: token.start,
          length: token.length,
          nodeType: 27,
          id: _nextNodeId++,
          token,
          value: unescapedValue,
          hasUnescapeErrors,
          expressions
        };
        expressions.forEach((expr) => {
          expr.parent = node;
        });
        return node;
      }
      FormatStringNode2.create = create;
    })(FormatStringNode = exports2.FormatStringNode || (exports2.FormatStringNode = {}));
    var StringListNode;
    (function(StringListNode2) {
      function create(strings) {
        const node = {
          start: strings[0].start,
          length: strings[0].length,
          nodeType: 48,
          id: _nextNodeId++,
          strings
        };
        if (strings.length > 0) {
          strings.forEach((str) => {
            str.parent = node;
          });
          extendRange(node, strings[strings.length - 1]);
        }
        return node;
      }
      StringListNode2.create = create;
    })(StringListNode = exports2.StringListNode || (exports2.StringListNode = {}));
    var DictionaryNode;
    (function(DictionaryNode2) {
      function create(range2) {
        const node = {
          start: range2.start,
          length: range2.length,
          nodeType: 15,
          id: _nextNodeId++,
          entries: []
        };
        return node;
      }
      DictionaryNode2.create = create;
    })(DictionaryNode = exports2.DictionaryNode || (exports2.DictionaryNode = {}));
    var DictionaryKeyEntryNode;
    (function(DictionaryKeyEntryNode2) {
      function create(keyExpression, valueExpression) {
        const node = {
          start: keyExpression.start,
          length: keyExpression.length,
          nodeType: 17,
          id: _nextNodeId++,
          keyExpression,
          valueExpression
        };
        keyExpression.parent = node;
        valueExpression.parent = node;
        extendRange(node, valueExpression);
        return node;
      }
      DictionaryKeyEntryNode2.create = create;
    })(DictionaryKeyEntryNode = exports2.DictionaryKeyEntryNode || (exports2.DictionaryKeyEntryNode = {}));
    var DictionaryExpandEntryNode;
    (function(DictionaryExpandEntryNode2) {
      function create(expandExpression) {
        const node = {
          start: expandExpression.start,
          length: expandExpression.length,
          nodeType: 16,
          id: _nextNodeId++,
          expandExpression
        };
        expandExpression.parent = node;
        return node;
      }
      DictionaryExpandEntryNode2.create = create;
    })(DictionaryExpandEntryNode = exports2.DictionaryExpandEntryNode || (exports2.DictionaryExpandEntryNode = {}));
    var SetNode;
    (function(SetNode2) {
      function create(range2) {
        const node = {
          start: range2.start,
          length: range2.length,
          nodeType: 45,
          id: _nextNodeId++,
          entries: []
        };
        return node;
      }
      SetNode2.create = create;
    })(SetNode = exports2.SetNode || (exports2.SetNode = {}));
    var ListNode;
    (function(ListNode2) {
      function create(range2) {
        const node = {
          start: range2.start,
          length: range2.length,
          nodeType: 31,
          id: _nextNodeId++,
          entries: []
        };
        return node;
      }
      ListNode2.create = create;
    })(ListNode = exports2.ListNode || (exports2.ListNode = {}));
    var ArgumentCategory;
    (function(ArgumentCategory2) {
      ArgumentCategory2[ArgumentCategory2["Simple"] = 0] = "Simple";
      ArgumentCategory2[ArgumentCategory2["UnpackedList"] = 1] = "UnpackedList";
      ArgumentCategory2[ArgumentCategory2["UnpackedDictionary"] = 2] = "UnpackedDictionary";
    })(ArgumentCategory = exports2.ArgumentCategory || (exports2.ArgumentCategory = {}));
    var ArgumentNode;
    (function(ArgumentNode2) {
      function create(startToken, valueExpression, argCategory) {
        const node = {
          start: startToken ? startToken.start : valueExpression.start,
          length: startToken ? startToken.length : valueExpression.length,
          nodeType: 1,
          id: _nextNodeId++,
          valueExpression,
          argumentCategory: argCategory
        };
        valueExpression.parent = node;
        extendRange(node, valueExpression);
        return node;
      }
      ArgumentNode2.create = create;
    })(ArgumentNode = exports2.ArgumentNode || (exports2.ArgumentNode = {}));
    var DelNode;
    (function(DelNode2) {
      function create(delToken) {
        const node = {
          start: delToken.start,
          length: delToken.length,
          nodeType: 14,
          id: _nextNodeId++,
          expressions: []
        };
        return node;
      }
      DelNode2.create = create;
    })(DelNode = exports2.DelNode || (exports2.DelNode = {}));
    var PassNode;
    (function(PassNode2) {
      function create(passToken) {
        const node = {
          start: passToken.start,
          length: passToken.length,
          nodeType: 42,
          id: _nextNodeId++
        };
        return node;
      }
      PassNode2.create = create;
    })(PassNode = exports2.PassNode || (exports2.PassNode = {}));
    var ImportNode;
    (function(ImportNode2) {
      function create(passToken) {
        const node = {
          start: passToken.start,
          length: passToken.length,
          nodeType: 20,
          id: _nextNodeId++,
          list: []
        };
        return node;
      }
      ImportNode2.create = create;
    })(ImportNode = exports2.ImportNode || (exports2.ImportNode = {}));
    var ModuleNameNode;
    (function(ModuleNameNode2) {
      function create(range2) {
        const node = {
          start: range2.start,
          length: range2.length,
          nodeType: 37,
          id: _nextNodeId++,
          leadingDots: 0,
          nameParts: []
        };
        return node;
      }
      ModuleNameNode2.create = create;
    })(ModuleNameNode = exports2.ModuleNameNode || (exports2.ModuleNameNode = {}));
    var ImportAsNode;
    (function(ImportAsNode2) {
      function create(module3) {
        const node = {
          start: module3.start,
          length: module3.length,
          nodeType: 21,
          id: _nextNodeId++,
          module: module3
        };
        module3.parent = node;
        return node;
      }
      ImportAsNode2.create = create;
    })(ImportAsNode = exports2.ImportAsNode || (exports2.ImportAsNode = {}));
    var ImportFromNode;
    (function(ImportFromNode2) {
      function create(fromToken, module3) {
        const node = {
          start: fromToken.start,
          length: fromToken.length,
          nodeType: 22,
          id: _nextNodeId++,
          module: module3,
          imports: [],
          isWildcardImport: false,
          usesParens: false
        };
        module3.parent = node;
        extendRange(node, module3);
        return node;
      }
      ImportFromNode2.create = create;
    })(ImportFromNode = exports2.ImportFromNode || (exports2.ImportFromNode = {}));
    var ImportFromAsNode;
    (function(ImportFromAsNode2) {
      function create(name) {
        const node = {
          start: name.start,
          length: name.length,
          nodeType: 23,
          id: _nextNodeId++,
          name
        };
        name.parent = node;
        return node;
      }
      ImportFromAsNode2.create = create;
    })(ImportFromAsNode = exports2.ImportFromAsNode || (exports2.ImportFromAsNode = {}));
    var GlobalNode;
    (function(GlobalNode2) {
      function create(range2) {
        const node = {
          start: range2.start,
          length: range2.length,
          nodeType: 29,
          id: _nextNodeId++,
          nameList: []
        };
        return node;
      }
      GlobalNode2.create = create;
    })(GlobalNode = exports2.GlobalNode || (exports2.GlobalNode = {}));
    var NonlocalNode;
    (function(NonlocalNode2) {
      function create(range2) {
        const node = {
          start: range2.start,
          length: range2.length,
          nodeType: 39,
          id: _nextNodeId++,
          nameList: []
        };
        return node;
      }
      NonlocalNode2.create = create;
    })(NonlocalNode = exports2.NonlocalNode || (exports2.NonlocalNode = {}));
    var AssertNode;
    (function(AssertNode2) {
      function create(assertToken, testExpression) {
        const node = {
          start: assertToken.start,
          length: assertToken.length,
          nodeType: 2,
          id: _nextNodeId++,
          testExpression
        };
        testExpression.parent = node;
        extendRange(node, testExpression);
        return node;
      }
      AssertNode2.create = create;
    })(AssertNode = exports2.AssertNode || (exports2.AssertNode = {}));
    var BreakNode;
    (function(BreakNode2) {
      function create(range2) {
        const node = {
          start: range2.start,
          length: range2.length,
          nodeType: 8,
          id: _nextNodeId++
        };
        return node;
      }
      BreakNode2.create = create;
    })(BreakNode = exports2.BreakNode || (exports2.BreakNode = {}));
    var ContinueNode;
    (function(ContinueNode2) {
      function create(range2) {
        const node = {
          start: range2.start,
          length: range2.length,
          nodeType: 12,
          id: _nextNodeId++
        };
        return node;
      }
      ContinueNode2.create = create;
    })(ContinueNode = exports2.ContinueNode || (exports2.ContinueNode = {}));
    var ReturnNode;
    (function(ReturnNode2) {
      function create(range2) {
        const node = {
          start: range2.start,
          length: range2.length,
          nodeType: 44,
          id: _nextNodeId++
        };
        return node;
      }
      ReturnNode2.create = create;
    })(ReturnNode = exports2.ReturnNode || (exports2.ReturnNode = {}));
    var RaiseNode;
    (function(RaiseNode2) {
      function create(range2) {
        const node = {
          start: range2.start,
          length: range2.length,
          nodeType: 43,
          id: _nextNodeId++
        };
        return node;
      }
      RaiseNode2.create = create;
    })(RaiseNode = exports2.RaiseNode || (exports2.RaiseNode = {}));
    var MatchNode;
    (function(MatchNode2) {
      function create(matchToken, subjectExpression) {
        const node = {
          start: matchToken.start,
          length: matchToken.length,
          nodeType: 63,
          id: _nextNodeId++,
          subjectExpression,
          cases: []
        };
        subjectExpression.parent = node;
        extendRange(node, subjectExpression);
        return node;
      }
      MatchNode2.create = create;
    })(MatchNode = exports2.MatchNode || (exports2.MatchNode = {}));
    var CaseNode;
    (function(CaseNode2) {
      function create(caseToken, pattern, isIrrefutable, guardExpression, suite) {
        const node = {
          start: caseToken.start,
          length: caseToken.length,
          nodeType: 64,
          id: _nextNodeId++,
          pattern,
          isIrrefutable,
          guardExpression,
          suite
        };
        extendRange(node, suite);
        pattern.parent = node;
        suite.parent = node;
        if (guardExpression) {
          guardExpression.parent = node;
        }
        return node;
      }
      CaseNode2.create = create;
    })(CaseNode = exports2.CaseNode || (exports2.CaseNode = {}));
    var PatternSequenceNode;
    (function(PatternSequenceNode2) {
      function create(firstToken, entries) {
        const starEntryIndex = entries.findIndex((entry) => entry.orPatterns.length === 1 && entry.orPatterns[0].nodeType === 69 && entry.orPatterns[0].isStar);
        const node = {
          start: firstToken.start,
          length: firstToken.length,
          nodeType: 65,
          id: _nextNodeId++,
          entries,
          starEntryIndex: starEntryIndex >= 0 ? starEntryIndex : void 0
        };
        if (entries.length > 0) {
          extendRange(node, entries[entries.length - 1]);
        }
        entries.forEach((entry) => {
          entry.parent = node;
        });
        return node;
      }
      PatternSequenceNode2.create = create;
    })(PatternSequenceNode = exports2.PatternSequenceNode || (exports2.PatternSequenceNode = {}));
    var PatternAsNode;
    (function(PatternAsNode2) {
      function create(orPatterns, target) {
        const node = {
          start: orPatterns[0].start,
          length: orPatterns[0].length,
          nodeType: 66,
          id: _nextNodeId++,
          orPatterns,
          target
        };
        if (orPatterns.length > 1) {
          extendRange(node, orPatterns[orPatterns.length - 1]);
        }
        orPatterns.forEach((pattern) => {
          pattern.parent = node;
        });
        if (target) {
          extendRange(node, target);
          target.parent = node;
        }
        return node;
      }
      PatternAsNode2.create = create;
    })(PatternAsNode = exports2.PatternAsNode || (exports2.PatternAsNode = {}));
    var PatternLiteralNode;
    (function(PatternLiteralNode2) {
      function create(expression) {
        const node = {
          start: expression.start,
          length: expression.length,
          nodeType: 67,
          id: _nextNodeId++,
          expression
        };
        expression.parent = node;
        return node;
      }
      PatternLiteralNode2.create = create;
    })(PatternLiteralNode = exports2.PatternLiteralNode || (exports2.PatternLiteralNode = {}));
    var PatternClassNode;
    (function(PatternClassNode2) {
      function create(className, args) {
        const node = {
          start: className.start,
          length: className.length,
          nodeType: 68,
          id: _nextNodeId++,
          className,
          arguments: args
        };
        className.parent = node;
        args.forEach((arg) => {
          arg.parent = node;
        });
        if (args.length > 0) {
          extendRange(node, args[args.length - 1]);
        }
        return node;
      }
      PatternClassNode2.create = create;
    })(PatternClassNode = exports2.PatternClassNode || (exports2.PatternClassNode = {}));
    var PatternClassArgumentNode;
    (function(PatternClassArgumentNode2) {
      function create(pattern, name) {
        const node = {
          start: pattern.start,
          length: pattern.length,
          nodeType: 74,
          id: _nextNodeId++,
          pattern,
          name
        };
        pattern.parent = node;
        if (name) {
          extendRange(node, name);
          name.parent = node;
        }
        return node;
      }
      PatternClassArgumentNode2.create = create;
    })(PatternClassArgumentNode = exports2.PatternClassArgumentNode || (exports2.PatternClassArgumentNode = {}));
    var PatternCaptureNode;
    (function(PatternCaptureNode2) {
      function create(target, starToken) {
        const node = {
          start: target.start,
          length: target.length,
          nodeType: 69,
          id: _nextNodeId++,
          target,
          isStar: starToken !== void 0,
          isWildcard: target.value === "_"
        };
        target.parent = node;
        if (starToken) {
          extendRange(node, starToken);
        }
        return node;
      }
      PatternCaptureNode2.create = create;
    })(PatternCaptureNode = exports2.PatternCaptureNode || (exports2.PatternCaptureNode = {}));
    var PatternMappingNode;
    (function(PatternMappingNode2) {
      function create(startToken, entries) {
        const node = {
          start: startToken.start,
          length: startToken.length,
          nodeType: 70,
          id: _nextNodeId++,
          entries
        };
        if (entries.length > 0) {
          extendRange(node, entries[entries.length - 1]);
        }
        entries.forEach((entry) => {
          entry.parent = node;
        });
        return node;
      }
      PatternMappingNode2.create = create;
    })(PatternMappingNode = exports2.PatternMappingNode || (exports2.PatternMappingNode = {}));
    var PatternMappingKeyEntryNode;
    (function(PatternMappingKeyEntryNode2) {
      function create(keyPattern, valuePattern) {
        const node = {
          start: keyPattern.start,
          length: keyPattern.length,
          nodeType: 71,
          id: _nextNodeId++,
          keyPattern,
          valuePattern
        };
        keyPattern.parent = node;
        valuePattern.parent = node;
        extendRange(node, valuePattern);
        return node;
      }
      PatternMappingKeyEntryNode2.create = create;
    })(PatternMappingKeyEntryNode = exports2.PatternMappingKeyEntryNode || (exports2.PatternMappingKeyEntryNode = {}));
    var PatternMappingExpandEntryNode;
    (function(PatternMappingExpandEntryNode2) {
      function create(starStarToken, target) {
        const node = {
          start: starStarToken.start,
          length: starStarToken.length,
          nodeType: 72,
          id: _nextNodeId++,
          target
        };
        target.parent = node;
        extendRange(node, target);
        return node;
      }
      PatternMappingExpandEntryNode2.create = create;
    })(PatternMappingExpandEntryNode = exports2.PatternMappingExpandEntryNode || (exports2.PatternMappingExpandEntryNode = {}));
    var PatternValueNode;
    (function(PatternValueNode2) {
      function create(expression) {
        const node = {
          start: expression.start,
          length: expression.length,
          nodeType: 73,
          id: _nextNodeId++,
          expression
        };
        expression.parent = node;
        return node;
      }
      PatternValueNode2.create = create;
    })(PatternValueNode = exports2.PatternValueNode || (exports2.PatternValueNode = {}));
  }
});

// node_modules/@zzzen/pyright-internal/dist/parser/stringTokenUtils.js
var require_stringTokenUtils = __commonJS({
  "node_modules/@zzzen/pyright-internal/dist/parser/stringTokenUtils.js"(exports2) {
    "use strict";
    Object.defineProperty(exports2, "__esModule", { value: true });
    exports2.getUnescapedString = exports2.UnescapeErrorType = void 0;
    var UnescapeErrorType;
    (function(UnescapeErrorType2) {
      UnescapeErrorType2[UnescapeErrorType2["InvalidEscapeSequence"] = 0] = "InvalidEscapeSequence";
      UnescapeErrorType2[UnescapeErrorType2["EscapeWithinFormatExpression"] = 1] = "EscapeWithinFormatExpression";
      UnescapeErrorType2[UnescapeErrorType2["SingleCloseBraceWithinFormatLiteral"] = 2] = "SingleCloseBraceWithinFormatLiteral";
      UnescapeErrorType2[UnescapeErrorType2["UnterminatedFormatExpression"] = 3] = "UnterminatedFormatExpression";
    })(UnescapeErrorType = exports2.UnescapeErrorType || (exports2.UnescapeErrorType = {}));
    function completeUnescapedString(incomplete) {
      return {
        ...incomplete,
        value: incomplete.valueParts.join(""),
        formatStringSegments: incomplete.formatStringSegments.map((segment) => ({
          ...segment,
          value: segment.valueParts.join("")
        }))
      };
    }
    function getUnescapedString(stringToken) {
      const escapedString = stringToken.escapedValue;
      const isRaw = (stringToken.flags & 8) !== 0;
      const isFormat = (stringToken.flags & 64) !== 0;
      if (isRaw && !isFormat) {
        return {
          value: escapedString,
          unescapeErrors: [],
          nonAsciiInBytes: false,
          formatStringSegments: []
        };
      }
      const charCodes = [];
      for (let index = 0; index < escapedString.length; index++) {
        charCodes.push(escapedString.charCodeAt(index));
      }
      const isBytes = (stringToken.flags & 32) !== 0;
      if (!isFormat) {
        if (!charCodes.some(
          (curChar) => curChar === 13 || curChar === 10 || curChar === 92
          /* Backslash */
        )) {
          return {
            value: escapedString,
            unescapeErrors: [],
            nonAsciiInBytes: isBytes && charCodes.some((curChar) => curChar >= 128),
            formatStringSegments: []
          };
        }
      }
      let formatExpressionNestCount = 0;
      let formatSegment = {
        offset: 0,
        length: 0,
        valueParts: [],
        isExpression: false,
        hasFormatSpecifier: false
      };
      let strOffset = 0;
      const output = {
        valueParts: [],
        unescapeErrors: [],
        nonAsciiInBytes: false,
        formatStringSegments: []
      };
      const addInvalidEscapeOffset = () => {
        if (!isRaw) {
          output.unescapeErrors.push({
            offset: strOffset - 1,
            length: 2,
            errorType: 0
          });
        }
      };
      const getEscapedCharacter = (offset = 0) => {
        if (strOffset + offset >= charCodes.length) {
          return 3;
        }
        return charCodes[strOffset + offset];
      };
      const scanHexEscape = (digitCount) => {
        let foundIllegalHexDigit = false;
        let hexValue = 0;
        let localValue = "";
        for (let i = 0; i < digitCount; i++) {
          const charCode = getEscapedCharacter(1 + i);
          if (!_isHexCharCode(charCode)) {
            foundIllegalHexDigit = true;
            break;
          }
          hexValue = 16 * hexValue + _getHexDigitValue(charCode);
        }
        if (foundIllegalHexDigit) {
          addInvalidEscapeOffset();
          localValue = "\\" + String.fromCharCode(getEscapedCharacter());
          strOffset++;
        } else {
          localValue = String.fromCharCode(hexValue);
          strOffset += 1 + digitCount;
        }
        return localValue;
      };
      const appendOutputChar = (charCode) => {
        const char = String.fromCharCode(charCode);
        output.valueParts.push(char);
        formatSegment.valueParts.push(char);
      };
      while (true) {
        let curChar = getEscapedCharacter();
        if (curChar === 3) {
          if (isFormat) {
            if (formatSegment.isExpression) {
              output.unescapeErrors.push({
                offset: formatSegment.offset,
                length: strOffset - formatSegment.offset,
                errorType: 3
              });
            }
            if (strOffset !== formatSegment.offset) {
              formatSegment.length = strOffset - formatSegment.offset;
              output.formatStringSegments.push(formatSegment);
            }
          }
          return completeUnescapedString(output);
        }
        if (curChar === 92) {
          if (isFormat && formatSegment.isExpression && !formatSegment.hasFormatSpecifier) {
            output.unescapeErrors.push({
              offset: strOffset,
              length: 1,
              errorType: 1
            });
          }
          strOffset++;
          if (isRaw) {
            appendOutputChar(curChar);
            continue;
          }
          curChar = getEscapedCharacter();
          let localValue = "";
          if (curChar === 13 || curChar === 10) {
            if (curChar === 13 && getEscapedCharacter(1) === 10) {
              if (isRaw) {
                localValue += String.fromCharCode(curChar);
              }
              strOffset++;
              curChar = getEscapedCharacter();
            }
            if (isRaw) {
              localValue = "\\" + localValue + String.fromCharCode(curChar);
            }
            strOffset++;
          } else {
            if (isRaw) {
              localValue = "\\" + String.fromCharCode(curChar);
              strOffset++;
            } else {
              switch (curChar) {
                case 92:
                case 39:
                case 34:
                  localValue = String.fromCharCode(curChar);
                  strOffset++;
                  break;
                case 97:
                  localValue = "\x07";
                  strOffset++;
                  break;
                case 98:
                  localValue = "\b";
                  strOffset++;
                  break;
                case 102:
                  localValue = "\f";
                  strOffset++;
                  break;
                case 110:
                  localValue = "\n";
                  strOffset++;
                  break;
                case 114:
                  localValue = "\r";
                  strOffset++;
                  break;
                case 116:
                  localValue = "	";
                  strOffset++;
                  break;
                case 118:
                  localValue = "\v";
                  strOffset++;
                  break;
                case 120:
                  localValue = scanHexEscape(2);
                  break;
                case 78: {
                  let foundIllegalChar = false;
                  let charCount = 1;
                  if (getEscapedCharacter(charCount) !== 123) {
                    foundIllegalChar = true;
                  } else {
                    charCount++;
                    while (true) {
                      const lookaheadChar = getEscapedCharacter(charCount);
                      if (lookaheadChar === 125) {
                        break;
                      } else if (!_isAlphaNumericChar(lookaheadChar) && lookaheadChar !== 45 && !_isWhitespaceChar(lookaheadChar)) {
                        foundIllegalChar = true;
                        break;
                      } else {
                        charCount++;
                      }
                    }
                  }
                  if (foundIllegalChar) {
                    addInvalidEscapeOffset();
                    localValue = "\\" + String.fromCharCode(curChar);
                    strOffset++;
                  } else {
                    localValue = "-";
                    strOffset += 1 + charCount;
                  }
                  break;
                }
                case 117:
                  localValue = scanHexEscape(4);
                  break;
                case 85:
                  localValue = scanHexEscape(8);
                  break;
                default:
                  if (_isOctalCharCode(curChar)) {
                    let octalCode = curChar - 48;
                    strOffset++;
                    curChar = getEscapedCharacter();
                    if (_isOctalCharCode(curChar)) {
                      octalCode = octalCode * 8 + curChar - 48;
                      strOffset++;
                      curChar = getEscapedCharacter();
                      if (_isOctalCharCode(curChar)) {
                        octalCode = octalCode * 8 + curChar - 48;
                        strOffset++;
                      }
                    }
                    localValue = String.fromCharCode(octalCode);
                  } else {
                    localValue = "\\";
                    addInvalidEscapeOffset();
                  }
                  break;
              }
            }
          }
          output.valueParts.push(localValue);
          formatSegment.valueParts.push(localValue);
        } else if (curChar === 10 || curChar === 13) {
          if (curChar === 13 && getEscapedCharacter(1) === 10) {
            appendOutputChar(curChar);
            strOffset++;
            curChar = getEscapedCharacter();
          }
          appendOutputChar(curChar);
          strOffset++;
        } else if (isFormat && curChar === 123) {
          if (!formatSegment.isExpression && getEscapedCharacter(1) === 123) {
            appendOutputChar(curChar);
            strOffset += 2;
          } else {
            if (formatExpressionNestCount === 0) {
              formatSegment.length = strOffset - formatSegment.offset;
              if (formatSegment.length > 0) {
                output.formatStringSegments.push(formatSegment);
              }
              strOffset++;
              formatSegment = {
                offset: strOffset,
                length: 0,
                valueParts: [],
                isExpression: true,
                hasFormatSpecifier: false
              };
            } else {
              appendOutputChar(curChar);
              strOffset++;
            }
            formatExpressionNestCount++;
          }
        } else if (isFormat && curChar === 125) {
          if (!formatSegment.isExpression && getEscapedCharacter(1) === 125) {
            appendOutputChar(curChar);
            strOffset += 2;
          } else if (formatExpressionNestCount === 0) {
            output.unescapeErrors.push({
              offset: strOffset,
              length: 1,
              errorType: 2
            });
            strOffset++;
          } else {
            formatExpressionNestCount--;
            if (formatExpressionNestCount === 0) {
              formatSegment.length = strOffset - formatSegment.offset;
              output.formatStringSegments.push(formatSegment);
              strOffset++;
              formatSegment = {
                offset: strOffset,
                length: 0,
                valueParts: [],
                isExpression: false,
                hasFormatSpecifier: false
              };
            } else {
              appendOutputChar(curChar);
              strOffset++;
            }
          }
        } else if (formatSegment.isExpression && (curChar === 39 || curChar === 34)) {
          const quoteChar = curChar;
          appendOutputChar(curChar);
          const isTriplicate = getEscapedCharacter(1) === quoteChar && getEscapedCharacter(2) === quoteChar;
          if (isTriplicate) {
            strOffset += 2;
            appendOutputChar(curChar);
            appendOutputChar(curChar);
            output.valueParts.push(String.fromCharCode(curChar));
            output.valueParts.push(String.fromCharCode(curChar));
          }
          while (true) {
            strOffset++;
            let strChar = getEscapedCharacter();
            if (strChar === 3) {
              break;
            }
            if (strChar === 92) {
              appendOutputChar(strChar);
              strOffset++;
              strChar = getEscapedCharacter();
              appendOutputChar(strChar);
              continue;
            }
            if (strChar === 10 || strChar === 13) {
              if (!isTriplicate) {
                break;
              }
            }
            if (strChar === quoteChar) {
              if (!isTriplicate) {
                strOffset++;
                appendOutputChar(strChar);
                break;
              }
              if (getEscapedCharacter(1) === quoteChar && getEscapedCharacter(2) === quoteChar) {
                strOffset += 3;
                appendOutputChar(strChar);
                appendOutputChar(strChar);
                appendOutputChar(strChar);
                break;
              }
            }
            appendOutputChar(strChar);
          }
        } else {
          if (formatSegment.isExpression && curChar === 58) {
            formatSegment.hasFormatSpecifier = true;
          }
          if (isBytes && curChar >= 128) {
            output.nonAsciiInBytes = true;
          }
          appendOutputChar(curChar);
          strOffset++;
        }
      }
    }
    exports2.getUnescapedString = getUnescapedString;
    function _isWhitespaceChar(charCode) {
      return charCode === 32 || charCode === 9;
    }
    function _isAlphaNumericChar(charCode) {
      if (charCode >= 48 && charCode <= 57) {
        return true;
      }
      if (charCode >= 97 && charCode <= 122) {
        return true;
      }
      if (charCode >= 65 && charCode <= 90) {
        return true;
      }
      return false;
    }
    function _isOctalCharCode(charCode) {
      return charCode >= 48 && charCode <= 55;
    }
    function _isHexCharCode(charCode) {
      if (charCode >= 48 && charCode <= 57) {
        return true;
      }
      if (charCode >= 97 && charCode <= 102) {
        return true;
      }
      if (charCode >= 65 && charCode <= 70) {
        return true;
      }
      return false;
    }
    function _getHexDigitValue(charCode) {
      if (charCode >= 48 && charCode <= 57) {
        return charCode - 48;
      }
      if (charCode >= 97 && charCode <= 102) {
        return charCode - 97 + 10;
      }
      if (charCode >= 65 && charCode <= 70) {
        return charCode - 65 + 10;
      }
      return 0;
    }
  }
});

// node_modules/@zzzen/pyright-internal/dist/common/textRangeCollection.js
var require_textRangeCollection = __commonJS({
  "node_modules/@zzzen/pyright-internal/dist/common/textRangeCollection.js"(exports2) {
    "use strict";
    Object.defineProperty(exports2, "__esModule", { value: true });
    exports2.TextRangeCollection = void 0;
    var textRange_1 = require_textRange();
    var TextRangeCollection = class {
      constructor(items) {
        this._items = items;
      }
      get start() {
        return this._items.length > 0 ? this._items[0].start : 0;
      }
      get end() {
        const lastItem = this._items[this._items.length - 1];
        return this._items.length > 0 ? lastItem.start + lastItem.length : 0;
      }
      get length() {
        return this.end - this.start;
      }
      get count() {
        return this._items.length;
      }
      contains(position) {
        return position >= this.start && position < this.end;
      }
      getItemAt(index) {
        if (index < 0 || index >= this._items.length) {
          throw new Error("index is out of range");
        }
        return this._items[index];
      }
      // Returns the nearest item prior to the position.
      // The position may not be contained within the item.
      getItemAtPosition(position) {
        if (this.count === 0) {
          return -1;
        }
        if (position < this.start) {
          return -1;
        }
        if (position > this.end) {
          return -1;
        }
        let min = 0;
        let max = this.count - 1;
        while (min < max) {
          const mid = Math.floor(min + (max - min) / 2);
          const item = this._items[mid];
          if (position >= item.start) {
            if (mid >= this.count - 1 || position < this._items[mid + 1].start) {
              return mid;
            }
          }
          if (position < item.start) {
            max = mid - 1;
          } else {
            min = mid + 1;
          }
        }
        return min;
      }
      getItemContaining(position) {
        if (this.count === 0) {
          return -1;
        }
        if (position < this.start) {
          return -1;
        }
        if (position > this.end) {
          return -1;
        }
        let min = 0;
        let max = this.count - 1;
        while (min <= max) {
          const mid = Math.floor(min + (max - min) / 2);
          const item = this._items[mid];
          if (textRange_1.TextRange.contains(item, position)) {
            return mid;
          }
          if (mid < this.count - 1 && textRange_1.TextRange.getEnd(item) <= position && position < this._items[mid + 1].start) {
            return -1;
          }
          if (position < item.start) {
            max = mid - 1;
          } else {
            min = mid + 1;
          }
        }
        return -1;
      }
    };
    exports2.TextRangeCollection = TextRangeCollection;
  }
});

// node_modules/@zzzen/pyright-internal/dist/parser/unicode.js
var require_unicode = __commonJS({
  "node_modules/@zzzen/pyright-internal/dist/parser/unicode.js"(exports2) {
    "use strict";
    Object.defineProperty(exports2, "__esModule", { value: true });
    exports2.unicodePc = exports2.unicodeNdSurrogate = exports2.unicodeNd = exports2.unicodeMcSurrogate = exports2.unicodeMc = exports2.unicodeMnSurrogate = exports2.unicodeMn = exports2.unicodeNlSurrogate = exports2.unicodeNl = exports2.unicodeLmSurrogate = exports2.unicodeLm = exports2.unicodeLoSurrogate = exports2.unicodeLo = exports2.unicodeLt = exports2.unicodeLlSurrogate = exports2.unicodeLl = exports2.unicodeLuSurrogate = exports2.unicodeLu = void 0;
    exports2.unicodeLu = [
      [65, 90],
      [192, 214],
      [216, 222],
      256,
      258,
      260,
      262,
      264,
      266,
      268,
      270,
      272,
      274,
      276,
      278,
      280,
      282,
      284,
      286,
      288,
      290,
      292,
      294,
      296,
      298,
      300,
      302,
      304,
      306,
      308,
      310,
      313,
      315,
      317,
      319,
      321,
      323,
      325,
      327,
      330,
      332,
      334,
      336,
      338,
      340,
      342,
      344,
      346,
      348,
      350,
      352,
      354,
      356,
      358,
      360,
      362,
      364,
      366,
      368,
      370,
      372,
      374,
      [376, 377],
      379,
      381,
      [385, 386],
      388,
      [390, 391],
      [393, 395],
      [398, 401],
      [403, 404],
      [406, 408],
      [412, 413],
      [415, 416],
      418,
      420,
      [422, 423],
      425,
      428,
      [430, 431],
      [433, 435],
      437,
      [439, 440],
      444,
      452,
      455,
      458,
      461,
      463,
      465,
      467,
      469,
      471,
      473,
      475,
      478,
      480,
      482,
      484,
      486,
      488,
      490,
      492,
      494,
      497,
      500,
      [502, 504],
      506,
      508,
      510,
      512,
      514,
      516,
      518,
      520,
      522,
      524,
      526,
      528,
      530,
      532,
      534,
      536,
      538,
      540,
      542,
      544,
      546,
      548,
      550,
      552,
      554,
      556,
      558,
      560,
      562,
      [570, 571],
      [573, 574],
      577,
      [579, 582],
      584,
      586,
      588,
      590,
      880,
      882,
      886,
      895,
      902,
      [904, 906],
      908,
      [910, 911],
      [913, 929],
      [931, 939],
      975,
      [978, 980],
      984,
      986,
      988,
      990,
      992,
      994,
      996,
      998,
      1e3,
      1002,
      1004,
      1006,
      1012,
      1015,
      [1017, 1018],
      [1021, 1071],
      1120,
      1122,
      1124,
      1126,
      1128,
      1130,
      1132,
      1134,
      1136,
      1138,
      1140,
      1142,
      1144,
      1146,
      1148,
      1150,
      1152,
      1162,
      1164,
      1166,
      1168,
      1170,
      1172,
      1174,
      1176,
      1178,
      1180,
      1182,
      1184,
      1186,
      1188,
      1190,
      1192,
      1194,
      1196,
      1198,
      1200,
      1202,
      1204,
      1206,
      1208,
      1210,
      1212,
      1214,
      [1216, 1217],
      1219,
      1221,
      1223,
      1225,
      1227,
      1229,
      1232,
      1234,
      1236,
      1238,
      1240,
      1242,
      1244,
      1246,
      1248,
      1250,
      1252,
      1254,
      1256,
      1258,
      1260,
      1262,
      1264,
      1266,
      1268,
      1270,
      1272,
      1274,
      1276,
      1278,
      1280,
      1282,
      1284,
      1286,
      1288,
      1290,
      1292,
      1294,
      1296,
      1298,
      1300,
      1302,
      1304,
      1306,
      1308,
      1310,
      1312,
      1314,
      1316,
      1318,
      1320,
      1322,
      1324,
      1326,
      [1329, 1366],
      [4256, 4293],
      4295,
      4301,
      [5024, 5109],
      7680,
      7682,
      7684,
      7686,
      7688,
      7690,
      7692,
      7694,
      7696,
      7698,
      7700,
      7702,
      7704,
      7706,
      7708,
      7710,
      7712,
      7714,
      7716,
      7718,
      7720,
      7722,
      7724,
      7726,
      7728,
      7730,
      7732,
      7734,
      7736,
      7738,
      7740,
      7742,
      7744,
      7746,
      7748,
      7750,
      7752,
      7754,
      7756,
      7758,
      7760,
      7762,
      7764,
      7766,
      7768,
      7770,
      7772,
      7774,
      7776,
      7778,
      7780,
      7782,
      7784,
      7786,
      7788,
      7790,
      7792,
      7794,
      7796,
      7798,
      7800,
      7802,
      7804,
      7806,
      7808,
      7810,
      7812,
      7814,
      7816,
      7818,
      7820,
      7822,
      7824,
      7826,
      7828,
      7838,
      7840,
      7842,
      7844,
      7846,
      7848,
      7850,
      7852,
      7854,
      7856,
      7858,
      7860,
      7862,
      7864,
      7866,
      7868,
      7870,
      7872,
      7874,
      7876,
      7878,
      7880,
      7882,
      7884,
      7886,
      7888,
      7890,
      7892,
      7894,
      7896,
      7898,
      7900,
      7902,
      7904,
      7906,
      7908,
      7910,
      7912,
      7914,
      7916,
      7918,
      7920,
      7922,
      7924,
      7926,
      7928,
      7930,
      7932,
      7934,
      [7944, 7951],
      [7960, 7965],
      [7976, 7983],
      [7992, 7999],
      [8008, 8013],
      8025,
      8027,
      8029,
      8031,
      [8040, 8047],
      [8120, 8123],
      [8136, 8139],
      [8152, 8155],
      [8168, 8172],
      [8184, 8187],
      8450,
      8455,
      [8459, 8461],
      [8464, 8466],
      8469,
      [8473, 8477],
      8484,
      8486,
      8488,
      [8490, 8493],
      [8496, 8499],
      [8510, 8511],
      8517,
      8579,
      [11264, 11310],
      11360,
      [11362, 11364],
      11367,
      11369,
      11371,
      [11373, 11376],
      11378,
      11381,
      [11390, 11392],
      11394,
      11396,
      11398,
      11400,
      11402,
      11404,
      11406,
      11408,
      11410,
      11412,
      11414,
      11416,
      11418,
      11420,
      11422,
      11424,
      11426,
      11428,
      11430,
      11432,
      11434,
      11436,
      11438,
      11440,
      11442,
      11444,
      11446,
      11448,
      11450,
      11452,
      11454,
      11456,
      11458,
      11460,
      11462,
      11464,
      11466,
      11468,
      11470,
      11472,
      11474,
      11476,
      11478,
      11480,
      11482,
      11484,
      11486,
      11488,
      11490,
      11499,
      11501,
      11506,
      42560,
      42562,
      42564,
      42566,
      42568,
      42570,
      42572,
      42574,
      42576,
      42578,
      42580,
      42582,
      42584,
      42586,
      42588,
      42590,
      42592,
      42594,
      42596,
      42598,
      42600,
      42602,
      42604,
      42624,
      42626,
      42628,
      42630,
      42632,
      42634,
      42636,
      42638,
      42640,
      42642,
      42644,
      42646,
      42648,
      42650,
      42786,
      42788,
      42790,
      42792,
      42794,
      42796,
      42798,
      42802,
      42804,
      42806,
      42808,
      42810,
      42812,
      42814,
      42816,
      42818,
      42820,
      42822,
      42824,
      42826,
      42828,
      42830,
      42832,
      42834,
      42836,
      42838,
      42840,
      42842,
      42844,
      42846,
      42848,
      42850,
      42852,
      42854,
      42856,
      42858,
      42860,
      42862,
      42873,
      42875,
      [42877, 42878],
      42880,
      42882,
      42884,
      42886,
      42891,
      42893,
      42896,
      42898,
      42902,
      42904,
      42906,
      42908,
      42910,
      42912,
      42914,
      42916,
      42918,
      42920,
      [42922, 42926],
      [42928, 42932],
      42934,
      [65313, 65338],
      [66560, 66599],
      [66736, 66771],
      [68736, 68786],
      [71840, 71871],
      [119808, 119833],
      [119860, 119885],
      [119912, 119937],
      119964,
      [119966, 119967],
      119970,
      [119973, 119974],
      [119977, 119980],
      [119982, 119989],
      [120016, 120041],
      [120068, 120069],
      [120071, 120074],
      [120077, 120084],
      [120086, 120092],
      [120120, 120121],
      [120123, 120126],
      [120128, 120132],
      120134,
      [120138, 120144],
      [120172, 120197],
      [120224, 120249],
      [120276, 120301],
      [120328, 120353],
      [120380, 120405],
      [120432, 120457],
      [120488, 120512],
      [120546, 120570],
      [120604, 120628],
      [120662, 120686],
      [120720, 120744],
      120778,
      [125184, 125217]
    ];
    exports2.unicodeLuSurrogate = {
      55297: [
        [56320, 56359],
        [56496, 56531]
      ],
      55299: [[56448, 56498]],
      55302: [[56480, 56511]],
      55323: [[56896, 56927]],
      55349: [
        [56320, 56345],
        [56372, 56397],
        [56424, 56449],
        56476,
        [56478, 56479],
        56482,
        [56485, 56486],
        [56489, 56492],
        [56494, 56501],
        [56528, 56553],
        [56580, 56581],
        [56583, 56586],
        [56589, 56596],
        [56598, 56604],
        [56632, 56633],
        [56635, 56638],
        [56640, 56644],
        56646,
        [56650, 56656],
        [56684, 56709],
        [56736, 56761],
        [56788, 56813],
        [56840, 56865],
        [56892, 56917],
        [56944, 56969],
        [57e3, 57024],
        [57058, 57082],
        [57116, 57140],
        [57174, 57198],
        [57232, 57256],
        [57290, 57290]
      ],
      55354: [[56576, 56609]]
    };
    exports2.unicodeLl = [
      [97, 122],
      181,
      [223, 246],
      [248, 255],
      257,
      259,
      261,
      263,
      265,
      267,
      269,
      271,
      273,
      275,
      277,
      279,
      281,
      283,
      285,
      287,
      289,
      291,
      293,
      295,
      297,
      299,
      301,
      303,
      305,
      307,
      309,
      [311, 312],
      314,
      316,
      318,
      320,
      322,
      324,
      326,
      [328, 329],
      331,
      333,
      335,
      337,
      339,
      341,
      343,
      345,
      347,
      349,
      351,
      353,
      355,
      357,
      359,
      361,
      363,
      365,
      367,
      369,
      371,
      373,
      375,
      378,
      380,
      [382, 384],
      387,
      389,
      392,
      [396, 397],
      402,
      405,
      [409, 411],
      414,
      417,
      419,
      421,
      424,
      [426, 427],
      429,
      432,
      436,
      438,
      [441, 442],
      [445, 447],
      454,
      457,
      460,
      462,
      464,
      466,
      468,
      470,
      472,
      474,
      [476, 477],
      479,
      481,
      483,
      485,
      487,
      489,
      491,
      493,
      [495, 496],
      499,
      501,
      505,
      507,
      509,
      511,
      513,
      515,
      517,
      519,
      521,
      523,
      525,
      527,
      529,
      531,
      533,
      535,
      537,
      539,
      541,
      543,
      545,
      547,
      549,
      551,
      553,
      555,
      557,
      559,
      561,
      [563, 569],
      572,
      [575, 576],
      578,
      583,
      585,
      587,
      589,
      [591, 659],
      [661, 687],
      881,
      883,
      887,
      [891, 893],
      912,
      [940, 974],
      [976, 977],
      [981, 983],
      985,
      987,
      989,
      991,
      993,
      995,
      997,
      999,
      1001,
      1003,
      1005,
      [1007, 1011],
      1013,
      1016,
      [1019, 1020],
      [1072, 1119],
      1121,
      1123,
      1125,
      1127,
      1129,
      1131,
      1133,
      1135,
      1137,
      1139,
      1141,
      1143,
      1145,
      1147,
      1149,
      1151,
      1153,
      1163,
      1165,
      1167,
      1169,
      1171,
      1173,
      1175,
      1177,
      1179,
      1181,
      1183,
      1185,
      1187,
      1189,
      1191,
      1193,
      1195,
      1197,
      1199,
      1201,
      1203,
      1205,
      1207,
      1209,
      1211,
      1213,
      1215,
      1218,
      1220,
      1222,
      1224,
      1226,
      1228,
      [1230, 1231],
      1233,
      1235,
      1237,
      1239,
      1241,
      1243,
      1245,
      1247,
      1249,
      1251,
      1253,
      1255,
      1257,
      1259,
      1261,
      1263,
      1265,
      1267,
      1269,
      1271,
      1273,
      1275,
      1277,
      1279,
      1281,
      1283,
      1285,
      1287,
      1289,
      1291,
      1293,
      1295,
      1297,
      1299,
      1301,
      1303,
      1305,
      1307,
      1309,
      1311,
      1313,
      1315,
      1317,
      1319,
      1321,
      1323,
      1325,
      1327,
      [1377, 1415],
      [5112, 5117],
      [7296, 7304],
      [7424, 7467],
      [7531, 7543],
      [7545, 7578],
      7681,
      7683,
      7685,
      7687,
      7689,
      7691,
      7693,
      7695,
      7697,
      7699,
      7701,
      7703,
      7705,
      7707,
      7709,
      7711,
      7713,
      7715,
      7717,
      7719,
      7721,
      7723,
      7725,
      7727,
      7729,
      7731,
      7733,
      7735,
      7737,
      7739,
      7741,
      7743,
      7745,
      7747,
      7749,
      7751,
      7753,
      7755,
      7757,
      7759,
      7761,
      7763,
      7765,
      7767,
      7769,
      7771,
      7773,
      7775,
      7777,
      7779,
      7781,
      7783,
      7785,
      7787,
      7789,
      7791,
      7793,
      7795,
      7797,
      7799,
      7801,
      7803,
      7805,
      7807,
      7809,
      7811,
      7813,
      7815,
      7817,
      7819,
      7821,
      7823,
      7825,
      7827,
      [7829, 7837],
      7839,
      7841,
      7843,
      7845,
      7847,
      7849,
      7851,
      7853,
      7855,
      7857,
      7859,
      7861,
      7863,
      7865,
      7867,
      7869,
      7871,
      7873,
      7875,
      7877,
      7879,
      7881,
      7883,
      7885,
      7887,
      7889,
      7891,
      7893,
      7895,
      7897,
      7899,
      7901,
      7903,
      7905,
      7907,
      7909,
      7911,
      7913,
      7915,
      7917,
      7919,
      7921,
      7923,
      7925,
      7927,
      7929,
      7931,
      7933,
      [7935, 7943],
      [7952, 7957],
      [7968, 7975],
      [7984, 7991],
      [8e3, 8005],
      [8016, 8023],
      [8032, 8039],
      [8048, 8061],
      [8064, 8071],
      [8080, 8087],
      [8096, 8103],
      [8112, 8116],
      [8118, 8119],
      8126,
      [8130, 8132],
      [8134, 8135],
      [8144, 8147],
      [8150, 8151],
      [8160, 8167],
      [8178, 8180],
      [8182, 8183],
      8458,
      [8462, 8463],
      8467,
      8495,
      8500,
      8505,
      [8508, 8509],
      [8518, 8521],
      8526,
      8580,
      [11312, 11358],
      11361,
      [11365, 11366],
      11368,
      11370,
      11372,
      11377,
      [11379, 11380],
      [11382, 11387],
      11393,
      11395,
      11397,
      11399,
      11401,
      11403,
      11405,
      11407,
      11409,
      11411,
      11413,
      11415,
      11417,
      11419,
      11421,
      11423,
      11425,
      11427,
      11429,
      11431,
      11433,
      11435,
      11437,
      11439,
      11441,
      11443,
      11445,
      11447,
      11449,
      11451,
      11453,
      11455,
      11457,
      11459,
      11461,
      11463,
      11465,
      11467,
      11469,
      11471,
      11473,
      11475,
      11477,
      11479,
      11481,
      11483,
      11485,
      11487,
      11489,
      [11491, 11492],
      11500,
      11502,
      11507,
      [11520, 11557],
      11559,
      11565,
      42561,
      42563,
      42565,
      42567,
      42569,
      42571,
      42573,
      42575,
      42577,
      42579,
      2581,
      42583,
      42585,
      42587,
      42589,
      42591,
      42593,
      42595,
      42597,
      42599,
      42601,
      42603,
      42605,
      42625,
      42627,
      42629,
      42631,
      42633,
      42635,
      42637,
      42639,
      42641,
      42643,
      42645,
      42647,
      42649,
      42651,
      42787,
      42789,
      42791,
      42793,
      42795,
      42797,
      [42799, 42801],
      42803,
      42805,
      42807,
      42809,
      42811,
      42813,
      42815,
      42817,
      42819,
      42821,
      42823,
      42825,
      42827,
      42829,
      42831,
      42833,
      42835,
      42837,
      42839,
      42841,
      42843,
      42845,
      42847,
      42849,
      42851,
      42853,
      42855,
      42857,
      42859,
      42861,
      42863,
      [42865, 42872],
      42874,
      42876,
      42879,
      42881,
      42883,
      42885,
      42887,
      42892,
      42894,
      42897,
      [42899, 42901],
      42903,
      42905,
      42907,
      42909,
      42911,
      42913,
      42915,
      42917,
      42919,
      42921,
      42933,
      42935,
      43002,
      [43824, 43866],
      [43872, 43877],
      [43888, 43967],
      [64256, 64262],
      [64275, 64279],
      [65345, 65370],
      [66600, 66639],
      [66776, 66811],
      [68800, 68850],
      [71872, 71903],
      [119834, 119859],
      [119886, 119892],
      [119894, 119911],
      [119938, 119963],
      [119990, 119993],
      119995,
      [119997, 120003],
      [120005, 120015],
      [120042, 120067],
      [120094, 120119],
      [120146, 120171],
      [120198, 120223],
      [120250, 120275],
      [120302, 120327],
      [120354, 120379],
      [120406, 120431],
      [120458, 120485],
      [120514, 120538],
      [120540, 120545],
      [120572, 120596],
      [120598, 120603],
      [120630, 120654],
      [120656, 120661],
      [120688, 120712],
      [120714, 120719],
      [120746, 120770],
      [120772, 120777],
      120779,
      [125218, 125251]
    ];
    exports2.unicodeLlSurrogate = {
      55297: [
        [56360, 56399],
        [56536, 56571]
      ],
      55299: [[56512, 56562]],
      55302: [[56512, 56543]],
      55323: [[56928, 56959]],
      55349: [
        [56346, 56371],
        [56398, 56404],
        [56406, 56423],
        [56450, 56475],
        [56502, 56505],
        56507,
        [56509, 56515],
        [56517, 56527],
        [56554, 56579],
        [56606, 56631],
        [56658, 56683],
        [56710, 56735],
        [56762, 56787],
        [56814, 56839],
        [56866, 56891],
        [56918, 56943],
        [56970, 56997],
        [57026, 57050],
        [57052, 57057],
        [57084, 57108],
        [57110, 57115],
        [57142, 57166],
        [57168, 57173],
        [57200, 57224],
        [57226, 57231],
        [57258, 57282],
        [57284, 57289],
        [57291, 57291]
      ],
      55354: [[56610, 56643]]
    };
    exports2.unicodeLt = [
      453,
      456,
      459,
      498,
      [8072, 8079],
      [8088, 8095],
      [8104, 8111],
      8124,
      8140,
      8188
    ];
    exports2.unicodeLo = [
      170,
      186,
      443,
      [448, 451],
      660,
      [1488, 1514],
      [1520, 1522],
      [1568, 1599],
      [1601, 1610],
      [1646, 1647],
      [1649, 1747],
      1749,
      [1774, 1775],
      [1786, 1788],
      1791,
      1808,
      [1810, 1839],
      [1869, 1957],
      1969,
      [1994, 2026],
      [2048, 2069],
      [2112, 2136],
      [2144, 2154],
      [2208, 2228],
      [2230, 2237],
      [2308, 2361],
      2365,
      2384,
      [2392, 2401],
      [2418, 2432],
      [2437, 2444],
      [2447, 2448],
      [2451, 2472],
      [2474, 2480],
      2482,
      [2486, 2489],
      2493,
      2510,
      [2524, 2525],
      [2527, 2529],
      [2544, 2545],
      2556,
      [2565, 2570],
      [2575, 2576],
      [2579, 2600],
      [2602, 2608],
      [2610, 2611],
      [2613, 2614],
      [2616, 2617],
      [2649, 2652],
      2654,
      [2674, 2676],
      [2693, 2701],
      [2703, 2705],
      [2707, 2728],
      [2730, 2736],
      [2738, 2739],
      [2741, 2745],
      2749,
      2768,
      [2784, 2785],
      2809,
      [2821, 2828],
      [2831, 2832],
      [2835, 2856],
      [2858, 2864],
      [2866, 2867],
      [2869, 2873],
      2877,
      [2908, 2909],
      [2911, 2913],
      2929,
      2947,
      [2949, 2954],
      [2958, 2960],
      [2962, 2965],
      [2969, 2970],
      2972,
      [2974, 2975],
      [2979, 2980],
      [2984, 2986],
      [2990, 3001],
      3024,
      [3077, 3084],
      [3086, 3088],
      [3090, 3112],
      [3114, 3129],
      3133,
      [3160, 3162],
      [3168, 3169],
      3200,
      [3205, 3212],
      [3214, 3216],
      [3218, 3240],
      [3242, 3251],
      [3253, 3257],
      3261,
      3294,
      [3296, 3297],
      [3313, 3314],
      [3333, 3340],
      [3342, 3344],
      [3346, 3386],
      3389,
      3406,
      [3412, 3414],
      [3423, 3425],
      [3450, 3455],
      [3461, 3478],
      [3482, 3505],
      [3507, 3515],
      3517,
      [3520, 3526],
      [3585, 3632],
      [3634, 3635],
      [3648, 3653],
      [3713, 3714],
      3716,
      [3719, 3720],
      3722,
      3725,
      [3732, 3735],
      [3737, 3743],
      [3745, 3747],
      3749,
      3751,
      [3754, 3755],
      [3757, 3760],
      [3762, 3763],
      3773,
      [3776, 3780],
      [3804, 3807],
      3840,
      [3904, 3911],
      [3913, 3948],
      [3976, 3980],
      [4096, 4138],
      4159,
      [4176, 4181],
      [4186, 4189],
      4193,
      [4197, 4198],
      [4206, 4208],
      [4213, 4225],
      4238,
      [4304, 4346],
      [4349, 4680],
      [4682, 4685],
      [4688, 4694],
      4696,
      [4698, 4701],
      [4704, 4744],
      [4746, 4749],
      [4752, 4784],
      [4786, 4789],
      [4792, 4798],
      4800,
      [4802, 4805],
      [4808, 4822],
      [4824, 4880],
      [4882, 4885],
      [4888, 4954],
      [4992, 5007],
      [5121, 5740],
      [5743, 5759],
      [5761, 5786],
      [5792, 5866],
      [5873, 5880],
      [5888, 5900],
      [5902, 5905],
      [5920, 5937],
      [5952, 5969],
      [5984, 5996],
      [5998, 6e3],
      [6016, 6067],
      6108,
      [6176, 6210],
      [6212, 6263],
      [6272, 6276],
      [6279, 6312],
      6314,
      [6320, 6389],
      [6400, 6430],
      [6480, 6509],
      [6512, 6516],
      [6528, 6571],
      [6576, 6601],
      [6656, 6678],
      [6688, 6740],
      [6917, 6963],
      [6981, 6987],
      [7043, 7072],
      [7086, 7087],
      [7098, 7141],
      [7168, 7203],
      [7245, 7247],
      [7258, 7287],
      [7401, 7404],
      [7406, 7409],
      [7413, 7414],
      [8501, 8504],
      [11568, 11623],
      [11648, 11670],
      [11680, 11686],
      [11688, 11694],
      [11696, 11702],
      [11704, 11710],
      [11712, 11718],
      [11720, 11726],
      [11728, 11734],
      [11736, 11742],
      12294,
      12348,
      [12353, 12438],
      12447,
      [12449, 12538],
      12543,
      [12549, 12590],
      [12593, 12686],
      [12704, 12730],
      [12784, 12799],
      [13312, 19893],
      [19968, 40938],
      [40960, 40980],
      [40982, 42124],
      [42192, 42231],
      [42240, 42507],
      [42512, 42527],
      [42538, 42539],
      42606,
      [42656, 42725],
      42895,
      42999,
      [43003, 43009],
      [43011, 43013],
      [43015, 43018],
      [43020, 43042],
      [43072, 43123],
      [43138, 43187],
      [43250, 43255],
      43259,
      43261,
      [43274, 43301],
      [43312, 43334],
      [43360, 43388],
      [43396, 43442],
      [43488, 43492],
      [43495, 43503],
      [43514, 43518],
      [43520, 43560],
      [43584, 43586],
      [43588, 43595],
      [43616, 43631],
      [43633, 43638],
      43642,
      [43646, 43695],
      43697,
      [43701, 43702],
      [43705, 43709],
      43712,
      43714,
      [43739, 43740],
      [43744, 43754],
      43762,
      [43777, 43782],
      [43785, 43790],
      [43793, 43798],
      [43808, 43814],
      [43816, 43822],
      [43968, 44002],
      [44032, 55203],
      [55216, 55238],
      [55243, 55291],
      [63744, 64109],
      [64112, 64217],
      64285,
      [64287, 64296],
      [64298, 64310],
      [64312, 64316],
      64318,
      [64320, 64321],
      [64323, 64324],
      [64326, 64433],
      [64467, 64829],
      [64848, 64911],
      [64914, 64967],
      [65008, 65019],
      [65136, 65140],
      [65142, 65276],
      [65382, 65391],
      [65393, 65437],
      [65440, 65470],
      [65474, 65479],
      [65482, 65487],
      [65490, 65495],
      [65498, 65500],
      [65536, 65547],
      [65549, 65574],
      [65576, 65594],
      [65596, 65597],
      [65599, 65613],
      [65616, 65629],
      [65664, 65786],
      [66176, 66204],
      [66208, 66256],
      [66304, 66335],
      [66349, 66368],
      [66370, 66377],
      [66384, 66421],
      [66432, 66461],
      [66464, 66499],
      [66504, 66511],
      [66640, 66717],
      [66816, 66855],
      [66864, 66915],
      [67072, 67382],
      [67392, 67413],
      [67424, 67431],
      [67584, 67589],
      67592,
      [67594, 67637],
      [67639, 67640],
      67644,
      [67647, 67669],
      [67680, 67702],
      [67712, 67742],
      [67808, 67826],
      [67828, 67829],
      [67840, 67861],
      [67872, 67897],
      [67968, 68023],
      [68030, 68031],
      68096,
      [68112, 68115],
      [68117, 68119],
      [68121, 68147],
      [68192, 68220],
      [68224, 68252],
      [68288, 68295],
      [68297, 68324],
      [68352, 68405],
      [68416, 68437],
      [68448, 68466],
      [68480, 68497],
      [68608, 68680],
      [69635, 69687],
      [69763, 69807],
      [69840, 69864],
      [69891, 69926],
      [69968, 70002],
      70006,
      [70019, 70066],
      [70081, 70084],
      70106,
      70108,
      [70144, 70161],
      [70163, 70187],
      [70272, 70278],
      70280,
      [70282, 70285],
      [70287, 70301],
      [70303, 70312],
      [70320, 70366],
      [70405, 70412],
      [70415, 70416],
      [70419, 70440],
      [70442, 70448],
      [70450, 70451],
      [70453, 70457],
      70461,
      70480,
      [70493, 70497],
      [70656, 70708],
      [70727, 70730],
      [70784, 70831],
      [70852, 70853],
      70855,
      [71040, 71086],
      [71128, 71131],
      [71168, 71215],
      71236,
      [71296, 71338],
      [71424, 71449],
      71935,
      72192,
      [72203, 72242],
      72250,
      72272,
      [72284, 72323],
      [72326, 72329],
      [72384, 72440],
      [72704, 72712],
      [72714, 72750],
      72768,
      [72818, 72847],
      [72960, 72966],
      [72968, 72969],
      [72971, 73008],
      73030,
      [73728, 74649],
      [74880, 75075],
      [77824, 78894],
      [82944, 83526],
      [92160, 92728],
      [92736, 92766],
      [92880, 92909],
      [92928, 92975],
      [93027, 93047],
      [93053, 93071],
      [93952, 94020],
      94032,
      [94208, 100332],
      [100352, 101106],
      [110592, 110878],
      [110960, 111355],
      [113664, 113770],
      [113776, 113788],
      [113792, 113800],
      [113808, 113817],
      [124928, 125124],
      [126464, 126467],
      [126469, 126495],
      [126497, 126498],
      126500,
      126503,
      [126505, 126514],
      [126516, 126519],
      126521,
      126523,
      126530,
      126535,
      126537,
      126539,
      [126541, 126543],
      [126545, 126546],
      126548,
      126551,
      126553,
      126555,
      126557,
      126559,
      [126561, 126562],
      126564,
      [126567, 126570],
      [126572, 126578],
      [126580, 126583],
      [126585, 126588],
      126590,
      [126592, 126601],
      [126603, 126619],
      [126625, 126627],
      [126629, 126633],
      [126635, 126651],
      [131072, 173782],
      [173824, 177972],
      [177984, 178205],
      [178208, 183969],
      [183984, 191456],
      [194560, 195101]
    ];
    exports2.unicodeLoSurrogate = {
      55296: [
        [56320, 56331],
        [56333, 56358],
        [56360, 56378],
        [56380, 56381],
        [56383, 56397],
        [56400, 56413],
        [56448, 56570],
        [56960, 56988],
        [56992, 57040],
        [57088, 57119],
        [57133, 57152],
        [57154, 57161],
        [57168, 57205],
        [57216, 57245],
        [57248, 57283],
        [57288, 57295]
      ],
      55297: [
        [56400, 56477],
        [56576, 56615],
        [56624, 56675],
        [56832, 57142],
        [57152, 57173],
        [57184, 57191]
      ],
      55298: [
        [56320, 56325],
        [56328, 56328],
        [56330, 56373],
        [56375, 56376],
        [56380, 56380],
        [56383, 56405],
        [56416, 56438],
        [56448, 56478],
        [56544, 56562],
        [56564, 56565],
        [56576, 56597],
        [56608, 56633],
        [56704, 56759],
        [56766, 56767],
        [56832, 56832],
        [56848, 56851],
        [56853, 56855],
        [56857, 56885],
        [56928, 56956],
        [56960, 56988],
        [57024, 57031],
        [57033, 57060],
        [57088, 57141],
        [57152, 57173],
        [57184, 57202],
        [57216, 57233]
      ],
      55299: [
        [56320, 56392],
        [56576, 56611],
        [56960, 57001],
        [57008, 57009],
        [57088, 57116],
        57127,
        [57136, 57157],
        [57264, 57284],
        [57312, 57334]
      ],
      55300: [
        [56323, 56375],
        [56451, 56495],
        [56528, 56552],
        [56579, 56614],
        56644,
        56647,
        [56656, 56690],
        56694,
        [56707, 56754],
        [56769, 56772],
        56794,
        56796,
        [56832, 56849],
        [56851, 56875],
        [56960, 56966],
        56968,
        [56970, 56973],
        [56975, 56989],
        [56991, 57e3],
        [57008, 57054],
        [57093, 57100],
        [57103, 57104],
        [57107, 57128],
        [57130, 57136],
        [57138, 57139],
        [57141, 57145],
        57149,
        57168,
        [57181, 57185]
      ],
      55301: [
        [56320, 56372],
        [56391, 56394],
        [56415, 56417],
        [56448, 56495],
        [56516, 56517],
        56519,
        [56704, 56750],
        [56792, 56795],
        [56832, 56879],
        56900,
        [56960, 57002],
        57016,
        [57088, 57114]
      ],
      55302: [
        [56320, 56363],
        [56575, 56582],
        56585,
        [56588, 56595],
        [56597, 56598],
        [56600, 56623],
        56639,
        56641,
        [56736, 56743],
        [56746, 56784],
        56801,
        56803,
        56832,
        [56843, 56882],
        56890,
        56912,
        [56924, 56969],
        56989,
        [57024, 57080]
      ],
      55303: [
        [56320, 56328],
        [56330, 56366],
        56384,
        56434,
        [56576, 56582],
        [56584, 56585],
        [56587, 56624],
        56646,
        [56672, 56677],
        [56679, 56680],
        [56682, 56713],
        56728,
        [57056, 57074],
        57264
      ],
      55304: [[56320, 57241]],
      55305: [[56448, 56643]],
      55308: [[56320, 57343]],
      55309: [[56320, 56366]],
      55313: [[56320, 56902]],
      55322: [
        [56320, 56888],
        [56896, 56926],
        [57040, 57069],
        [57088, 57135],
        [57187, 57207],
        [57213, 57231]
      ],
      55323: [[57088, 57162], 57168],
      55324: [56320],
      55329: [57335],
      55330: [[56320, 57343]],
      55331: [
        [56320, 56533],
        [56576, 56576],
        [56584, 56584]
      ],
      55340: [
        [56320, 56606],
        [56656, 56658],
        [56676, 56679],
        [56688, 57083]
      ],
      55343: [
        [56320, 56426],
        [56432, 56444],
        [56448, 56456],
        [56464, 56473]
      ],
      55352: [[56576, 56620], 56654, [57024, 57067]],
      55354: [[56320, 56516]],
      55355: [
        [56832, 56835],
        [56837, 56863],
        [56865, 56866],
        56868,
        56871,
        [56873, 56882],
        [56884, 56887],
        56889,
        56891,
        56898,
        56903,
        56905,
        56907,
        [56909, 56911],
        [56913, 56914],
        56916,
        56919,
        56921,
        56923,
        56925,
        56927,
        [56929, 56930],
        56932,
        [56935, 56938],
        [56940, 56946],
        [56948, 56951],
        [56953, 56956],
        56958,
        [56960, 56969],
        [56971, 56987],
        [56993, 56995],
        [56997, 57001],
        [57003, 57019]
      ],
      55360: [56320],
      55401: [57053, 57088],
      55405: [57140, 57152],
      55406: [56349, 56352],
      55411: [56993, 57008],
      55418: [57312],
      55422: [[56320, 56861]],
      55424: [56320],
      55428: [57162]
    };
    exports2.unicodeLm = [
      [688, 705],
      [710, 721],
      [736, 740],
      748,
      750,
      884,
      890,
      1369,
      1600,
      [1765, 1766],
      [2036, 2037],
      2042,
      2074,
      2084,
      2088,
      2417,
      3654,
      3782,
      4348,
      6103,
      6211,
      6823,
      [7288, 7293],
      [7468, 7530],
      7544,
      [7579, 7615],
      8305,
      8319,
      [8336, 8348],
      [11388, 11389],
      11631,
      11823,
      12293,
      [12337, 12341],
      12347,
      [12445, 12446],
      [12540, 12542],
      40981,
      [42232, 42237],
      42508,
      42623,
      [42652, 42653],
      [42775, 42783],
      42864,
      42888,
      [43e3, 43001],
      43471,
      43494,
      43632,
      43741,
      [43763, 43764],
      [43868, 43871],
      65392,
      [65438, 65439],
      [92992, 92995],
      [94099, 94111],
      [94176, 94177]
    ];
    exports2.unicodeLmSurrogate = {
      55322: [[57152, 57155]],
      55323: [[57235, 57247], [57312, 57313], 57315],
      55352: [[56631, 56637]],
      55354: [56651]
    };
    exports2.unicodeNl = [
      [5870, 5872],
      [8544, 8578],
      [8581, 8584],
      12295,
      [12321, 12329],
      [12344, 12346],
      [42726, 42735],
      [65856, 65908],
      66369,
      66378,
      [66513, 66517],
      [74752, 74862]
    ];
    exports2.unicodeNlSurrogate = {
      55296: [[56640, 56692], 57153, 57162, [57297, 57301]],
      55305: [[56320, 56430]]
    };
    exports2.unicodeMn = [
      [768, 879],
      [1155, 1159],
      [1425, 1469],
      1471,
      [1473, 1474],
      [1476, 1477],
      1479,
      [1552, 1562],
      [1611, 1631],
      1648,
      [1750, 1756],
      [1759, 1764],
      [1767, 1768],
      [1770, 1773],
      1809,
      [1840, 1866],
      [1958, 1968],
      [2027, 2035],
      [2070, 2073],
      [2075, 2083],
      [2085, 2087],
      [2089, 2093],
      [2137, 2139],
      [2260, 2273],
      [2275, 2306],
      2362,
      2364,
      [2369, 2376],
      2381,
      [2385, 2391],
      [2402, 2403],
      2433,
      2492,
      [2497, 2500],
      2509,
      [2530, 2531],
      [2561, 2562],
      2620,
      [2625, 2626],
      [2631, 2632],
      [2635, 2637],
      2641,
      [2672, 2673],
      2677,
      [2689, 2690],
      2748,
      [2753, 2757],
      [2759, 2760],
      2765,
      [2786, 2787],
      [2810, 2815],
      2817,
      2876,
      2879,
      [2881, 2884],
      2893,
      2902,
      [2914, 2915],
      2946,
      3008,
      3021,
      3072,
      [3134, 3136],
      [3142, 3144],
      [3146, 3149],
      [3157, 3158],
      [3170, 3171],
      3201,
      3260,
      3263,
      3270,
      [3276, 3277],
      [3298, 3299],
      [3328, 3329],
      [3387, 3388],
      [3393, 3396],
      3405,
      [3426, 3427],
      3530,
      [3538, 3540],
      3542,
      3633,
      [3636, 3642],
      [3655, 3662],
      3761,
      [3764, 3769],
      [3771, 3772],
      [3784, 3789],
      [3864, 3865],
      3893,
      3895,
      3897,
      [3953, 3966],
      [3968, 3972],
      [3974, 3975],
      [3981, 3991],
      [3993, 4028],
      4038,
      [4141, 4144],
      [4146, 4151],
      [4153, 4154],
      [4157, 4158],
      [4184, 4185],
      [4190, 4192],
      [4209, 4212],
      4226,
      [4229, 4230],
      4237,
      4253,
      [4957, 4959],
      [5906, 5908],
      [5938, 5940],
      [5970, 5971],
      [6002, 6003],
      [6068, 6069],
      [6071, 6077],
      6086,
      [6089, 6099],
      6109,
      [6155, 6157],
      [6277, 6278],
      6313,
      [6432, 6434],
      [6439, 6440],
      6450,
      [6457, 6459],
      [6679, 6680],
      6683,
      6742,
      [6744, 6750],
      6752,
      6754,
      [6757, 6764],
      [6771, 6780],
      6783,
      [6832, 6845],
      [6912, 6915],
      6964,
      [6966, 6970],
      6972,
      6978,
      [7019, 7027],
      [7040, 7041],
      [7074, 7077],
      [7080, 7081],
      [7083, 7085],
      7142,
      [7144, 7145],
      7149,
      [7151, 7153],
      [7212, 7219],
      [7222, 7223],
      [7376, 7378],
      [7380, 7392],
      [7394, 7400],
      7405,
      7412,
      [7416, 7417],
      [7616, 7673],
      [7675, 7679],
      [8400, 8412],
      8417,
      [8421, 8432],
      [11503, 11505],
      11647,
      [11744, 11775],
      [12330, 12333],
      [12441, 12442],
      42607,
      [42612, 42621],
      [42654, 42655],
      [42736, 42737],
      43010,
      43014,
      43019,
      [43045, 43046],
      [43204, 43205],
      [43232, 43249],
      [43302, 43309],
      [43335, 43345],
      [43392, 43394],
      43443,
      [43446, 43449],
      43452,
      43493,
      [43561, 43566],
      [43569, 43570],
      [43573, 43574],
      43587,
      43596,
      43644,
      43696,
      [43698, 43700],
      [43703, 43704],
      [43710, 43711],
      43713,
      [43756, 43757],
      43766,
      44005,
      44008,
      44013,
      64286,
      [65024, 65039],
      [65056, 65071],
      66045,
      66272,
      [66422, 66426],
      [68097, 68099],
      [68101, 68102],
      [68108, 68111],
      [68152, 68154],
      68159,
      [68325, 68326],
      69633,
      [69688, 69702],
      [69759, 69761],
      [69811, 69814],
      [69817, 69818],
      [69888, 69890],
      [69927, 69931],
      [69933, 69940],
      70003,
      [70016, 70017],
      [70070, 70078],
      [70090, 70092],
      [70191, 70193],
      70196,
      [70198, 70199],
      70206,
      70367,
      [70371, 70378],
      [70400, 70401],
      70460,
      70464,
      [70502, 70508],
      [70512, 70516],
      [70712, 70719],
      [70722, 70724],
      70726,
      [70835, 70840],
      70842,
      [70847, 70848],
      [70850, 70851],
      [71090, 71093],
      [71100, 71101],
      [71103, 71104],
      [71132, 71133],
      [71219, 71226],
      71229,
      [71231, 71232],
      71339,
      71341,
      [71344, 71349],
      71351,
      [71453, 71455],
      [71458, 71461],
      [71463, 71467],
      [72193, 72198],
      [72201, 72202],
      [72243, 72248],
      [72251, 72254],
      72263,
      [72273, 72278],
      [72281, 72283],
      [72330, 72342],
      [72344, 72345],
      [72752, 72758],
      [72760, 72765],
      72767,
      [72850, 72871],
      [72874, 72880],
      [72882, 72883],
      [72885, 72886],
      [73009, 73014],
      73018,
      [73020, 73021],
      [73023, 73029],
      73031,
      [92912, 92916],
      [92976, 92982],
      [94095, 94098],
      [113821, 113822],
      [119143, 119145],
      [119163, 119170],
      [119173, 119179],
      [119210, 119213],
      [119362, 119364],
      [121344, 121398],
      [121403, 121452],
      121461,
      121476,
      [121499, 121503],
      [121505, 121519],
      [122880, 122886],
      [122888, 122904],
      [122907, 122913],
      [122915, 122916],
      [122918, 122922],
      [125136, 125142],
      [125252, 125258],
      [917760, 917999]
    ];
    exports2.unicodeMnSurrogate = {
      55296: [56829, 57056, [57206, 57210]],
      55298: [[56833, 56835], [56837, 56838], [56844, 56847], [56888, 56890], 56895, [57061, 57062]],
      55299: [
        [56612, 56615],
        [57003, 57004],
        [57158, 57168]
      ],
      55300: [
        56321,
        [56376, 56390],
        [56447, 56449],
        [56499, 56502],
        [56505, 56506],
        [56576, 56578],
        [56615, 56619],
        [56621, 56628],
        56691,
        [56704, 56705],
        [56758, 56766],
        [56777, 56780],
        56783,
        [56879, 56881],
        56884,
        [56886, 56887],
        56894,
        57055,
        [57059, 57066],
        [57088, 57089],
        [57147, 57148],
        57152,
        [57190, 57196],
        [57200, 57204]
      ],
      55301: [
        [56376, 56383],
        [56386, 56388],
        56390,
        56414,
        [56499, 56504],
        56506,
        [56511, 56512],
        [56514, 56515],
        [56754, 56757],
        [56764, 56765],
        [56767, 56768],
        [56796, 56797],
        [56883, 56890],
        56893,
        [56895, 56896],
        57003,
        57005,
        [57008, 57013],
        57015,
        [57117, 57119],
        [57122, 57125],
        [57127, 57131]
      ],
      55302: [
        [56367, 56375],
        [56377, 56378],
        [56635, 56636],
        56638,
        56643,
        [56788, 56791],
        [56794, 56795],
        56800,
        [56833, 56842],
        [56883, 56888],
        [56891, 56894],
        56903,
        [56913, 56918],
        [56921, 56923],
        [56970, 56982],
        [56984, 56985]
      ],
      55303: [
        [56368, 56374],
        [56376, 56381],
        56383,
        [56466, 56487],
        [56490, 56496],
        [56498, 56499],
        [56501, 56502],
        [56625, 56630],
        56634,
        [56636, 56637],
        [56639, 56645],
        56647,
        [56720, 56721],
        56725,
        56727,
        [57075, 57076]
      ],
      55322: [
        [57072, 57076],
        [57136, 57142]
      ],
      55323: [57167, [57231, 57234], 57316],
      55343: [[56477, 56478]],
      55348: [
        [56679, 56681],
        [56699, 56706],
        [56709, 56715],
        [56746, 56749],
        [56898, 56900]
      ],
      55350: [[56832, 56886], [56891, 56940], 56949, 56964, [56987, 56991], [56993, 57007]],
      55352: [
        [56320, 56326],
        [56328, 56344],
        [56347, 56353],
        [56355, 56356],
        [56358, 56362],
        [56624, 56630],
        [57068, 57071]
      ],
      55354: [
        [56528, 56534],
        [56644, 56650]
      ],
      56128: [[56576, 56815]]
    };
    exports2.unicodeMc = [
      2307,
      2363,
      [2366, 2368],
      [2377, 2380],
      [2382, 2383],
      [2434, 2435],
      [2494, 2496],
      [2503, 2504],
      [2507, 2508],
      2519,
      2563,
      [2622, 2624],
      2691,
      [2750, 2752],
      2761,
      [2763, 2764],
      [2818, 2819],
      2878,
      2880,
      [2887, 2888],
      [2891, 2892],
      2903,
      [3006, 3007],
      [3009, 3010],
      [3014, 3016],
      [3018, 3020],
      3031,
      [3073, 3075],
      [3137, 3140],
      [3202, 3203],
      3262,
      [3264, 3268],
      [3271, 3272],
      [3274, 3275],
      [3285, 3286],
      [3330, 3331],
      [3390, 3392],
      [3398, 3400],
      [3402, 3404],
      3415,
      [3458, 3459],
      [3535, 3537],
      [3544, 3551],
      [3570, 3571],
      [3902, 3903],
      3967,
      [4139, 4140],
      4145,
      4152,
      [4155, 4156],
      [4182, 4183],
      [4194, 4196],
      [4199, 4205],
      [4227, 4228],
      [4231, 4236],
      4239,
      [4250, 4252],
      6070,
      [6078, 6085],
      [6087, 6088],
      [6435, 6438],
      [6441, 6443],
      [6448, 6449],
      [6451, 6456],
      [6681, 6682],
      6741,
      6743,
      6753,
      [6755, 6756],
      [6765, 6770],
      6916,
      6965,
      6971,
      [6973, 6977],
      [6979, 6980],
      7042,
      7073,
      [7078, 7079],
      7082,
      7143,
      [7146, 7148],
      7150,
      [7154, 7155],
      [7204, 7211],
      [7220, 7221],
      7393,
      [7410, 7411],
      7415,
      [12334, 12335],
      [43043, 43044],
      43047,
      [43136, 43137],
      [43188, 43203],
      [43346, 43347],
      43395,
      [43444, 43445],
      [43450, 43451],
      [43453, 43456],
      [43567, 43568],
      [43571, 43572],
      43597,
      43643,
      43645,
      43755,
      [43758, 43759],
      43765,
      [44003, 44004],
      [44006, 44007],
      [44009, 44010],
      44012,
      69632,
      69634,
      69762,
      [69808, 69810],
      [69815, 69816],
      69932,
      70018,
      [70067, 70069],
      [70079, 70080],
      [70188, 70190],
      [70194, 70195],
      70197,
      [70368, 70370],
      [70402, 70403],
      [70462, 70463],
      [70465, 70468],
      [70471, 70472],
      [70475, 70477],
      70487,
      [70498, 70499],
      [70709, 70711],
      [70720, 70721],
      70725,
      [70832, 70834],
      70841,
      [70843, 70846],
      70849,
      [71087, 71089],
      [71096, 71099],
      71102,
      [71216, 71218],
      [71227, 71228],
      71230,
      71340,
      [71342, 71343],
      71350,
      [71456, 71457],
      71462,
      [72199, 72200],
      72249,
      [72279, 72280],
      72343,
      72751,
      72766,
      72873,
      72881,
      72884,
      [94033, 94078],
      [119141, 119142],
      [119149, 119154]
    ];
    exports2.unicodeMcSurrogate = {
      55300: [
        56320,
        56322,
        56450,
        [56496, 56498],
        [56503, 56504],
        56620,
        [56645, 56646],
        56706,
        [56755, 56757],
        [56767, 56768],
        56782,
        [56876, 56878],
        [56882, 56883],
        56885,
        [57056, 57058],
        [57090, 57091],
        [57150, 57151],
        [57153, 57156],
        [57159, 57160],
        [57163, 57165],
        57175,
        [57186, 57187]
      ],
      55301: [
        [56373, 56375],
        [56384, 56385],
        56389,
        [56496, 56498],
        56505,
        [56507, 56510],
        56513,
        [56751, 56753],
        [56760, 56763],
        56766,
        [56880, 56882],
        [56891, 56892],
        56894,
        57004,
        [57006, 57007],
        57014,
        [57120, 57121],
        57126
      ],
      55302: [
        [56364, 56366],
        56376,
        [56624, 56629],
        [56631, 56632],
        56637,
        56640,
        56642,
        [56785, 56787],
        [56796, 56799],
        56804,
        56889,
        [56919, 56920],
        56983
      ],
      55303: [56367, 56382, 56489, 56497, 56500, [56714, 56718], [56723, 56724], 56726, [57077, 57078]],
      55323: [
        [57169, 57223],
        [57328, 57329]
      ],
      55348: [
        [56677, 56678],
        [56685, 56690]
      ]
    };
    exports2.unicodeNd = [
      [48, 57],
      [1632, 1641],
      [1776, 1785],
      [1984, 1993],
      [2406, 2415],
      [2534, 2543],
      [2662, 2671],
      [2790, 2799],
      [2918, 2927],
      [3046, 3055],
      [3174, 3183],
      [3302, 3311],
      [3430, 3439],
      [3558, 3567],
      [3664, 3673],
      [3792, 3801],
      [3872, 3881],
      [4160, 4169],
      [4240, 4249],
      [6112, 6121],
      [6160, 6169],
      [6470, 6479],
      [6608, 6617],
      [6784, 6793],
      [6800, 6809],
      [6992, 7001],
      [7088, 7097],
      [7232, 7241],
      [7248, 7257],
      [42528, 42537],
      [43216, 43225],
      [43264, 43273],
      [43472, 43481],
      [43504, 43513],
      [43600, 43609],
      [44016, 44025],
      [65296, 65305],
      [66720, 66729],
      [69734, 69743],
      [69872, 69881],
      [69942, 69951],
      [70096, 70105],
      [70384, 70393],
      [70736, 70745],
      [70864, 70873],
      [71248, 71257],
      [71360, 71369],
      [71472, 71481],
      [71904, 71913],
      [72784, 72793],
      [73040, 73049],
      [92768, 92777],
      [93008, 93017],
      [120782, 120831],
      [125264, 125273]
    ];
    exports2.unicodeNdSurrogate = {
      55297: [[56480, 56489]],
      55299: [[56624, 56633]],
      55300: [
        [56422, 56431],
        [56560, 56569],
        [56630, 56639],
        [56784, 56793],
        [57072, 57081]
      ],
      55301: [
        [56400, 56409],
        [56528, 56537],
        [56912, 56921],
        [57024, 57033],
        [57136, 57145]
      ],
      55302: [[56544, 56553], 56656],
      55303: [
        [56400, 56409],
        [56656, 56665],
        [56736, 56745]
      ],
      55322: [
        [56928, 56937],
        [57168, 57177]
      ],
      55349: [[57294, 57343]],
      55352: [
        [56640, 56649],
        [57072, 57081]
      ],
      55354: [[56656, 56665]],
      55358: [[57328, 57337]]
    };
    exports2.unicodePc = [95, [8255, 8256], 8276, [65075, 65076], [65101, 65103], 65343];
  }
});

// node_modules/@zzzen/pyright-internal/dist/parser/characters.js
var require_characters = __commonJS({
  "node_modules/@zzzen/pyright-internal/dist/parser/characters.js"(exports2) {
    "use strict";
    var __createBinding = exports2 && exports2.__createBinding || (Object.create ? (function(o, m, k, k2) {
      if (k2 === void 0) k2 = k;
      Object.defineProperty(o, k2, { enumerable: true, get: function() {
        return m[k];
      } });
    }) : (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.isBinary = exports2.isOctal = exports2.isHex = exports2.isDecimal = exports2.isNumber = exports2.isLineBreak = exports2.isWhiteSpace = exports2.isSurrogateChar = exports2.isIdentifierChar = exports2.isIdentifierStartChar = void 0;
    var unicode = __importStar(require_unicode());
    var CharCategory;
    (function(CharCategory2) {
      CharCategory2[CharCategory2["NotIdentifierChar"] = 0] = "NotIdentifierChar";
      CharCategory2[CharCategory2["StartIdentifierChar"] = 1] = "StartIdentifierChar";
      CharCategory2[CharCategory2["IdentifierChar"] = 2] = "IdentifierChar";
      CharCategory2[CharCategory2["SurrogateChar"] = 3] = "SurrogateChar";
    })(CharCategory || (CharCategory = {}));
    var _identifierCharFastTableSize = 256;
    var _identifierCharFastTable = new Array(_identifierCharFastTableSize);
    var _identifierCharMap = {};
    var _surrogateCharMap = {};
    var _identifierCharMapInitialized = false;
    function isIdentifierStartChar(char, nextChar) {
      if (char < _identifierCharFastTableSize) {
        return _identifierCharFastTable[char] === CharCategory.StartIdentifierChar;
      }
      if (!_identifierCharMapInitialized) {
        _buildIdentifierLookupTable(false);
        _identifierCharMapInitialized = true;
      }
      let charCategory;
      if (nextChar !== void 0) {
        charCategory = _lookUpSurrogate(char, nextChar);
      } else {
        charCategory = _identifierCharMap[char];
      }
      return charCategory === CharCategory.StartIdentifierChar;
    }
    exports2.isIdentifierStartChar = isIdentifierStartChar;
    function isIdentifierChar(char, nextChar) {
      if (char < _identifierCharFastTableSize) {
        return _identifierCharFastTable[char] === CharCategory.StartIdentifierChar || _identifierCharFastTable[char] === CharCategory.IdentifierChar;
      }
      if (!_identifierCharMapInitialized) {
        _buildIdentifierLookupTable(false);
        _identifierCharMapInitialized = true;
      }
      if (nextChar !== void 0) {
        return _lookUpSurrogate(char, nextChar);
      }
      return _identifierCharMap[char] === CharCategory.StartIdentifierChar || _identifierCharMap[char] === CharCategory.IdentifierChar;
    }
    exports2.isIdentifierChar = isIdentifierChar;
    function isSurrogateChar(char) {
      if (char < _identifierCharFastTableSize) {
        return false;
      }
      if (!_identifierCharMapInitialized) {
        _buildIdentifierLookupTable(false);
        _identifierCharMapInitialized = true;
      }
      return _identifierCharMap[char] === CharCategory.SurrogateChar;
    }
    exports2.isSurrogateChar = isSurrogateChar;
    function isWhiteSpace(ch) {
      return ch === 32 || ch === 9 || ch === 12;
    }
    exports2.isWhiteSpace = isWhiteSpace;
    function isLineBreak(ch) {
      return ch === 13 || ch === 10;
    }
    exports2.isLineBreak = isLineBreak;
    function isNumber(ch) {
      return ch >= 48 && ch <= 57 || ch === 95;
    }
    exports2.isNumber = isNumber;
    function isDecimal(ch) {
      return ch >= 48 && ch <= 57 || ch === 95;
    }
    exports2.isDecimal = isDecimal;
    function isHex(ch) {
      return isDecimal(ch) || ch >= 97 && ch <= 102 || ch >= 65 && ch <= 70 || ch === 95;
    }
    exports2.isHex = isHex;
    function isOctal(ch) {
      return ch >= 48 && ch <= 55 || ch === 95;
    }
    exports2.isOctal = isOctal;
    function isBinary(ch) {
      return ch === 48 || ch === 49 || ch === 95;
    }
    exports2.isBinary = isBinary;
    function _lookUpSurrogate(char, nextChar) {
      if (_identifierCharMap[char] !== CharCategory.SurrogateChar) {
        return CharCategory.NotIdentifierChar;
      }
      const surrogateTable = _surrogateCharMap[char];
      if (!surrogateTable) {
        return CharCategory.NotIdentifierChar;
      }
      return surrogateTable[nextChar];
    }
    var _specialStartIdentifierChars = [
      95,
      6277,
      6278,
      8472,
      8494,
      12443,
      12444
    ];
    var _startIdentifierCharRanges = [
      _specialStartIdentifierChars,
      unicode.unicodeLu,
      unicode.unicodeLl,
      unicode.unicodeLt,
      unicode.unicodeLo,
      unicode.unicodeLm,
      unicode.unicodeNl
    ];
    var _startCharSurrogateRanges = [
      unicode.unicodeLuSurrogate,
      unicode.unicodeLlSurrogate,
      unicode.unicodeLoSurrogate,
      unicode.unicodeLmSurrogate,
      unicode.unicodeNlSurrogate
    ];
    var _specialIdentifierChars = [
      183,
      903,
      4969,
      4970,
      4971,
      4972,
      4973,
      4974,
      4975,
      4976,
      4977,
      6618
    ];
    var _identifierCharRanges = [
      _specialIdentifierChars,
      unicode.unicodeMn,
      unicode.unicodeMc,
      unicode.unicodeNd,
      unicode.unicodePc
    ];
    var _identifierCharSurrogateRanges = [
      unicode.unicodeMnSurrogate,
      unicode.unicodeMcSurrogate,
      unicode.unicodeNdSurrogate
    ];
    function _buildIdentifierLookupTableFromUnicodeRangeTable(table, category, fastTableOnly, fastTable, fullTable) {
      for (let entryIndex = 0; entryIndex < table.length; entryIndex++) {
        const entry = table[entryIndex];
        let rangeStart;
        let rangeEnd;
        if (Array.isArray(entry)) {
          rangeStart = entry[0];
          rangeEnd = entry[1];
        } else {
          rangeStart = rangeEnd = entry;
        }
        for (let i = rangeStart; i <= rangeEnd; i++) {
          if (i < _identifierCharFastTableSize) {
            fastTable[i] = category;
          } else {
            fullTable[i] = category;
          }
        }
        if (fastTableOnly && rangeStart >= _identifierCharFastTableSize) {
          break;
        }
      }
    }
    function _buildIdentifierLookupTableFromSurrogateRangeTable(surrogateTable, category) {
      for (const surrogateChar in surrogateTable) {
        if (!_surrogateCharMap[surrogateChar]) {
          _surrogateCharMap[surrogateChar] = {};
          _identifierCharMap[surrogateChar] = CharCategory.SurrogateChar;
        }
        _buildIdentifierLookupTableFromUnicodeRangeTable(
          surrogateTable[surrogateChar],
          category,
          /* fastTableOnly */
          false,
          _surrogateCharMap[surrogateChar],
          _surrogateCharMap[surrogateChar]
        );
      }
    }
    function _buildIdentifierLookupTable(fastTableOnly) {
      _identifierCharFastTable.fill(CharCategory.NotIdentifierChar);
      _identifierCharRanges.forEach((table) => {
        _buildIdentifierLookupTableFromUnicodeRangeTable(table, CharCategory.IdentifierChar, fastTableOnly, _identifierCharFastTable, _identifierCharMap);
      });
      _startIdentifierCharRanges.forEach((table) => {
        _buildIdentifierLookupTableFromUnicodeRangeTable(table, CharCategory.StartIdentifierChar, fastTableOnly, _identifierCharFastTable, _identifierCharMap);
      });
      if (!fastTableOnly) {
        for (const surrogateTable of _identifierCharSurrogateRanges) {
          _buildIdentifierLookupTableFromSurrogateRangeTable(surrogateTable, CharCategory.IdentifierChar);
        }
        for (const surrogateTable of _startCharSurrogateRanges) {
          _buildIdentifierLookupTableFromSurrogateRangeTable(surrogateTable, CharCategory.StartIdentifierChar);
        }
      }
    }
    _buildIdentifierLookupTable(true);
  }
});

// node_modules/@zzzen/pyright-internal/dist/parser/characterStream.js
var require_characterStream = __commonJS({
  "node_modules/@zzzen/pyright-internal/dist/parser/characterStream.js"(exports2) {
    "use strict";
    Object.defineProperty(exports2, "__esModule", { value: true });
    exports2.CharacterStream = void 0;
    var characters_1 = require_characters();
    var CharacterStream = class {
      constructor(text) {
        this._text = text;
        this._position = 0;
        this._currentChar = text.length > 0 ? text.charCodeAt(0) : 0;
        this._isEndOfStream = text.length === 0;
      }
      getText() {
        return this._text;
      }
      get position() {
        return this._position;
      }
      set position(value) {
        this._position = value;
        this._checkBounds();
      }
      get currentChar() {
        return this._currentChar;
      }
      // We also expose a (non-property) method that is
      // the equivalent of currentChar above. This allows
      // us to work around assumptions in the TypeScript
      // compiler that method calls (e.g. moveNext()) don't
      // modify properties.
      getCurrentChar() {
        return this._currentChar;
      }
      get nextChar() {
        return this.position + 1 < this._text.length ? this._text.charCodeAt(this.position + 1) : 0;
      }
      get prevChar() {
        return this.position - 1 >= 0 ? this._text.charCodeAt(this.position - 1) : 0;
      }
      isEndOfStream() {
        return this._isEndOfStream;
      }
      lookAhead(offset) {
        const pos = this._position + offset;
        return pos < 0 || pos >= this._text.length ? 0 : this._text.charCodeAt(pos);
      }
      advance(offset) {
        this.position += offset;
      }
      moveNext() {
        if (this._position < this._text.length - 1) {
          this._position += 1;
          this._currentChar = this._text.charCodeAt(this._position);
          return true;
        }
        this.advance(1);
        return !this.isEndOfStream();
      }
      isAtWhiteSpace() {
        return (0, characters_1.isWhiteSpace)(this.currentChar);
      }
      isAtLineBreak() {
        return (0, characters_1.isLineBreak)(this.currentChar);
      }
      skipLineBreak() {
        if (this._currentChar === 13) {
          this.moveNext();
          if (this.currentChar === 10) {
            this.moveNext();
          }
        } else if (this._currentChar === 10) {
          this.moveNext();
        }
      }
      skipWhitespace() {
        while (!this.isEndOfStream() && this.isAtWhiteSpace()) {
          this.moveNext();
        }
      }
      skipToEol() {
        while (!this.isEndOfStream() && !this.isAtLineBreak()) {
          this.moveNext();
        }
      }
      skipToWhitespace() {
        while (!this.isEndOfStream() && !this.isAtWhiteSpace()) {
          this.moveNext();
        }
      }
      charCodeAt(index) {
        return this._text.charCodeAt(index);
      }
      get length() {
        return this._text.length;
      }
      _checkBounds() {
        if (this._position < 0) {
          this._position = 0;
        }
        this._isEndOfStream = this._position >= this._text.length;
        if (this._isEndOfStream) {
          this._position = this._text.length;
        }
        this._currentChar = this._isEndOfStream ? 0 : this._text.charCodeAt(this._position);
      }
    };
    exports2.CharacterStream = CharacterStream;
  }
});

// node_modules/@zzzen/pyright-internal/dist/parser/tokenizerTypes.js
var require_tokenizerTypes = __commonJS({
  "node_modules/@zzzen/pyright-internal/dist/parser/tokenizerTypes.js"(exports2) {
    "use strict";
    Object.defineProperty(exports2, "__esModule", { value: true });
    exports2.IdentifierToken = exports2.OperatorToken = exports2.NumberToken = exports2.StringToken = exports2.KeywordToken = exports2.NewLineToken = exports2.DedentToken = exports2.IndentToken = exports2.Token = exports2.Comment = exports2.CommentType = exports2.StringTokenFlags = exports2.KeywordType = exports2.OperatorFlags = exports2.OperatorType = exports2.NewLineType = exports2.TokenType = void 0;
    var TokenType;
    (function(TokenType2) {
      TokenType2[TokenType2["Invalid"] = 0] = "Invalid";
      TokenType2[TokenType2["EndOfStream"] = 1] = "EndOfStream";
      TokenType2[TokenType2["NewLine"] = 2] = "NewLine";
      TokenType2[TokenType2["Indent"] = 3] = "Indent";
      TokenType2[TokenType2["Dedent"] = 4] = "Dedent";
      TokenType2[TokenType2["String"] = 5] = "String";
      TokenType2[TokenType2["Number"] = 6] = "Number";
      TokenType2[TokenType2["Identifier"] = 7] = "Identifier";
      TokenType2[TokenType2["Keyword"] = 8] = "Keyword";
      TokenType2[TokenType2["Operator"] = 9] = "Operator";
      TokenType2[TokenType2["Colon"] = 10] = "Colon";
      TokenType2[TokenType2["Semicolon"] = 11] = "Semicolon";
      TokenType2[TokenType2["Comma"] = 12] = "Comma";
      TokenType2[TokenType2["OpenParenthesis"] = 13] = "OpenParenthesis";
      TokenType2[TokenType2["CloseParenthesis"] = 14] = "CloseParenthesis";
      TokenType2[TokenType2["OpenBracket"] = 15] = "OpenBracket";
      TokenType2[TokenType2["CloseBracket"] = 16] = "CloseBracket";
      TokenType2[TokenType2["OpenCurlyBrace"] = 17] = "OpenCurlyBrace";
      TokenType2[TokenType2["CloseCurlyBrace"] = 18] = "CloseCurlyBrace";
      TokenType2[TokenType2["Ellipsis"] = 19] = "Ellipsis";
      TokenType2[TokenType2["Dot"] = 20] = "Dot";
      TokenType2[TokenType2["Arrow"] = 21] = "Arrow";
      TokenType2[TokenType2["Backtick"] = 22] = "Backtick";
    })(TokenType = exports2.TokenType || (exports2.TokenType = {}));
    var NewLineType;
    (function(NewLineType2) {
      NewLineType2[NewLineType2["CarriageReturn"] = 0] = "CarriageReturn";
      NewLineType2[NewLineType2["LineFeed"] = 1] = "LineFeed";
      NewLineType2[NewLineType2["CarriageReturnLineFeed"] = 2] = "CarriageReturnLineFeed";
      NewLineType2[NewLineType2["Implied"] = 3] = "Implied";
    })(NewLineType = exports2.NewLineType || (exports2.NewLineType = {}));
    var OperatorType;
    (function(OperatorType2) {
      OperatorType2[OperatorType2["Add"] = 0] = "Add";
      OperatorType2[OperatorType2["AddEqual"] = 1] = "AddEqual";
      OperatorType2[OperatorType2["Assign"] = 2] = "Assign";
      OperatorType2[OperatorType2["BitwiseAnd"] = 3] = "BitwiseAnd";
      OperatorType2[OperatorType2["BitwiseAndEqual"] = 4] = "BitwiseAndEqual";
      OperatorType2[OperatorType2["BitwiseInvert"] = 5] = "BitwiseInvert";
      OperatorType2[OperatorType2["BitwiseOr"] = 6] = "BitwiseOr";
      OperatorType2[OperatorType2["BitwiseOrEqual"] = 7] = "BitwiseOrEqual";
      OperatorType2[OperatorType2["BitwiseXor"] = 8] = "BitwiseXor";
      OperatorType2[OperatorType2["BitwiseXorEqual"] = 9] = "BitwiseXorEqual";
      OperatorType2[OperatorType2["Divide"] = 10] = "Divide";
      OperatorType2[OperatorType2["DivideEqual"] = 11] = "DivideEqual";
      OperatorType2[OperatorType2["Equals"] = 12] = "Equals";
      OperatorType2[OperatorType2["FloorDivide"] = 13] = "FloorDivide";
      OperatorType2[OperatorType2["FloorDivideEqual"] = 14] = "FloorDivideEqual";
      OperatorType2[OperatorType2["GreaterThan"] = 15] = "GreaterThan";
      OperatorType2[OperatorType2["GreaterThanOrEqual"] = 16] = "GreaterThanOrEqual";
      OperatorType2[OperatorType2["LeftShift"] = 17] = "LeftShift";
      OperatorType2[OperatorType2["LeftShiftEqual"] = 18] = "LeftShiftEqual";
      OperatorType2[OperatorType2["LessOrGreaterThan"] = 19] = "LessOrGreaterThan";
      OperatorType2[OperatorType2["LessThan"] = 20] = "LessThan";
      OperatorType2[OperatorType2["LessThanOrEqual"] = 21] = "LessThanOrEqual";
      OperatorType2[OperatorType2["MatrixMultiply"] = 22] = "MatrixMultiply";
      OperatorType2[OperatorType2["MatrixMultiplyEqual"] = 23] = "MatrixMultiplyEqual";
      OperatorType2[OperatorType2["Mod"] = 24] = "Mod";
      OperatorType2[OperatorType2["ModEqual"] = 25] = "ModEqual";
      OperatorType2[OperatorType2["Multiply"] = 26] = "Multiply";
      OperatorType2[OperatorType2["MultiplyEqual"] = 27] = "MultiplyEqual";
      OperatorType2[OperatorType2["NotEquals"] = 28] = "NotEquals";
      OperatorType2[OperatorType2["Power"] = 29] = "Power";
      OperatorType2[OperatorType2["PowerEqual"] = 30] = "PowerEqual";
      OperatorType2[OperatorType2["RightShift"] = 31] = "RightShift";
      OperatorType2[OperatorType2["RightShiftEqual"] = 32] = "RightShiftEqual";
      OperatorType2[OperatorType2["Subtract"] = 33] = "Subtract";
      OperatorType2[OperatorType2["SubtractEqual"] = 34] = "SubtractEqual";
      OperatorType2[OperatorType2["Walrus"] = 35] = "Walrus";
      OperatorType2[OperatorType2["And"] = 36] = "And";
      OperatorType2[OperatorType2["Or"] = 37] = "Or";
      OperatorType2[OperatorType2["Not"] = 38] = "Not";
      OperatorType2[OperatorType2["Is"] = 39] = "Is";
      OperatorType2[OperatorType2["IsNot"] = 40] = "IsNot";
      OperatorType2[OperatorType2["In"] = 41] = "In";
      OperatorType2[OperatorType2["NotIn"] = 42] = "NotIn";
    })(OperatorType = exports2.OperatorType || (exports2.OperatorType = {}));
    var OperatorFlags;
    (function(OperatorFlags2) {
      OperatorFlags2[OperatorFlags2["Unary"] = 1] = "Unary";
      OperatorFlags2[OperatorFlags2["Binary"] = 2] = "Binary";
      OperatorFlags2[OperatorFlags2["Assignment"] = 4] = "Assignment";
      OperatorFlags2[OperatorFlags2["Comparison"] = 8] = "Comparison";
      OperatorFlags2[OperatorFlags2["Deprecated"] = 16] = "Deprecated";
    })(OperatorFlags = exports2.OperatorFlags || (exports2.OperatorFlags = {}));
    var KeywordType;
    (function(KeywordType2) {
      KeywordType2[KeywordType2["And"] = 0] = "And";
      KeywordType2[KeywordType2["As"] = 1] = "As";
      KeywordType2[KeywordType2["Assert"] = 2] = "Assert";
      KeywordType2[KeywordType2["Async"] = 3] = "Async";
      KeywordType2[KeywordType2["Await"] = 4] = "Await";
      KeywordType2[KeywordType2["Break"] = 5] = "Break";
      KeywordType2[KeywordType2["Case"] = 6] = "Case";
      KeywordType2[KeywordType2["Class"] = 7] = "Class";
      KeywordType2[KeywordType2["Continue"] = 8] = "Continue";
      KeywordType2[KeywordType2["Debug"] = 9] = "Debug";
      KeywordType2[KeywordType2["Def"] = 10] = "Def";
      KeywordType2[KeywordType2["Del"] = 11] = "Del";
      KeywordType2[KeywordType2["Elif"] = 12] = "Elif";
      KeywordType2[KeywordType2["Else"] = 13] = "Else";
      KeywordType2[KeywordType2["Except"] = 14] = "Except";
      KeywordType2[KeywordType2["False"] = 15] = "False";
      KeywordType2[KeywordType2["Finally"] = 16] = "Finally";
      KeywordType2[KeywordType2["For"] = 17] = "For";
      KeywordType2[KeywordType2["From"] = 18] = "From";
      KeywordType2[KeywordType2["Global"] = 19] = "Global";
      KeywordType2[KeywordType2["If"] = 20] = "If";
      KeywordType2[KeywordType2["Import"] = 21] = "Import";
      KeywordType2[KeywordType2["In"] = 22] = "In";
      KeywordType2[KeywordType2["Is"] = 23] = "Is";
      KeywordType2[KeywordType2["Lambda"] = 24] = "Lambda";
      KeywordType2[KeywordType2["Match"] = 25] = "Match";
      KeywordType2[KeywordType2["None"] = 26] = "None";
      KeywordType2[KeywordType2["Nonlocal"] = 27] = "Nonlocal";
      KeywordType2[KeywordType2["Not"] = 28] = "Not";
      KeywordType2[KeywordType2["Or"] = 29] = "Or";
      KeywordType2[KeywordType2["Pass"] = 30] = "Pass";
      KeywordType2[KeywordType2["Raise"] = 31] = "Raise";
      KeywordType2[KeywordType2["Return"] = 32] = "Return";
      KeywordType2[KeywordType2["True"] = 33] = "True";
      KeywordType2[KeywordType2["Try"] = 34] = "Try";
      KeywordType2[KeywordType2["While"] = 35] = "While";
      KeywordType2[KeywordType2["With"] = 36] = "With";
      KeywordType2[KeywordType2["Yield"] = 37] = "Yield";
    })(KeywordType = exports2.KeywordType || (exports2.KeywordType = {}));
    var StringTokenFlags;
    (function(StringTokenFlags2) {
      StringTokenFlags2[StringTokenFlags2["None"] = 0] = "None";
      StringTokenFlags2[StringTokenFlags2["SingleQuote"] = 1] = "SingleQuote";
      StringTokenFlags2[StringTokenFlags2["DoubleQuote"] = 2] = "DoubleQuote";
      StringTokenFlags2[StringTokenFlags2["Triplicate"] = 4] = "Triplicate";
      StringTokenFlags2[StringTokenFlags2["Raw"] = 8] = "Raw";
      StringTokenFlags2[StringTokenFlags2["Unicode"] = 16] = "Unicode";
      StringTokenFlags2[StringTokenFlags2["Bytes"] = 32] = "Bytes";
      StringTokenFlags2[StringTokenFlags2["Format"] = 64] = "Format";
      StringTokenFlags2[StringTokenFlags2["Unterminated"] = 65536] = "Unterminated";
      StringTokenFlags2[StringTokenFlags2["ExceedsMaxSize"] = 131072] = "ExceedsMaxSize";
    })(StringTokenFlags = exports2.StringTokenFlags || (exports2.StringTokenFlags = {}));
    var CommentType;
    (function(CommentType2) {
      CommentType2[CommentType2["Regular"] = 0] = "Regular";
      CommentType2[CommentType2["IPythonMagic"] = 1] = "IPythonMagic";
      CommentType2[CommentType2["IPythonShellEscape"] = 2] = "IPythonShellEscape";
    })(CommentType = exports2.CommentType || (exports2.CommentType = {}));
    var Comment;
    (function(Comment2) {
      function create(start, length, value, type = 0) {
        const comment = {
          type,
          start,
          length,
          value
        };
        return comment;
      }
      Comment2.create = create;
    })(Comment = exports2.Comment || (exports2.Comment = {}));
    var Token;
    (function(Token2) {
      function create(type, start, length, comments) {
        const token = {
          start,
          length,
          type,
          comments
        };
        return token;
      }
      Token2.create = create;
    })(Token = exports2.Token || (exports2.Token = {}));
    var IndentToken;
    (function(IndentToken2) {
      function create(start, length, indentAmount, isIndentAmbiguous, comments) {
        const token = {
          start,
          length,
          type: 3,
          isIndentAmbiguous,
          comments,
          indentAmount
        };
        return token;
      }
      IndentToken2.create = create;
    })(IndentToken = exports2.IndentToken || (exports2.IndentToken = {}));
    var DedentToken;
    (function(DedentToken2) {
      function create(start, length, indentAmount, matchesIndent, isDedentAmbiguous, comments) {
        const token = {
          start,
          length,
          type: 4,
          comments,
          indentAmount,
          matchesIndent,
          isDedentAmbiguous
        };
        return token;
      }
      DedentToken2.create = create;
    })(DedentToken = exports2.DedentToken || (exports2.DedentToken = {}));
    var NewLineToken;
    (function(NewLineToken2) {
      function create(start, length, newLineType, comments) {
        const token = {
          start,
          length,
          type: 2,
          comments,
          newLineType
        };
        return token;
      }
      NewLineToken2.create = create;
    })(NewLineToken = exports2.NewLineToken || (exports2.NewLineToken = {}));
    var KeywordToken;
    (function(KeywordToken2) {
      function create(start, length, keywordType, comments) {
        const token = {
          start,
          length,
          type: 8,
          comments,
          keywordType
        };
        return token;
      }
      KeywordToken2.create = create;
    })(KeywordToken = exports2.KeywordToken || (exports2.KeywordToken = {}));
    var StringToken;
    (function(StringToken2) {
      function create(start, length, flags, escapedValue, prefixLength, comments) {
        const token = {
          start,
          length,
          type: 5,
          flags,
          escapedValue,
          prefixLength,
          quoteMarkLength: flags & 4 ? 3 : 1,
          comments
        };
        return token;
      }
      StringToken2.create = create;
    })(StringToken = exports2.StringToken || (exports2.StringToken = {}));
    var NumberToken;
    (function(NumberToken2) {
      function create(start, length, value, isInteger, isImaginary, comments) {
        const token = {
          start,
          length,
          type: 6,
          isInteger,
          isImaginary,
          value,
          comments
        };
        return token;
      }
      NumberToken2.create = create;
    })(NumberToken = exports2.NumberToken || (exports2.NumberToken = {}));
    var OperatorToken;
    (function(OperatorToken2) {
      function create(start, length, operatorType, comments) {
        const token = {
          start,
          length,
          type: 9,
          operatorType,
          comments
        };
        return token;
      }
      OperatorToken2.create = create;
    })(OperatorToken = exports2.OperatorToken || (exports2.OperatorToken = {}));
    var IdentifierToken;
    (function(IdentifierToken2) {
      function create(start, length, value, comments) {
        const normalizedValue = value.normalize("NFKC");
        const token = {
          start,
          length,
          type: 7,
          value: normalizedValue,
          comments
        };
        return token;
      }
      IdentifierToken2.create = create;
    })(IdentifierToken = exports2.IdentifierToken || (exports2.IdentifierToken = {}));
  }
});

// node_modules/@zzzen/pyright-internal/dist/parser/tokenizer.js
var require_tokenizer = __commonJS({
  "node_modules/@zzzen/pyright-internal/dist/parser/tokenizer.js"(exports2) {
    "use strict";
    Object.defineProperty(exports2, "__esModule", { value: true });
    exports2.Tokenizer = exports2.defaultTabSize = void 0;
    var textRangeCollection_1 = require_textRangeCollection();
    var characters_1 = require_characters();
    var characterStream_1 = require_characterStream();
    var tokenizerTypes_1 = require_tokenizerTypes();
    var _keywords = /* @__PURE__ */ new Map([
      [
        "and",
        0
        /* And */
      ],
      [
        "as",
        1
        /* As */
      ],
      [
        "assert",
        2
        /* Assert */
      ],
      [
        "async",
        3
        /* Async */
      ],
      [
        "await",
        4
        /* Await */
      ],
      [
        "break",
        5
        /* Break */
      ],
      [
        "case",
        6
        /* Case */
      ],
      [
        "class",
        7
        /* Class */
      ],
      [
        "continue",
        8
        /* Continue */
      ],
      [
        "__debug__",
        9
        /* Debug */
      ],
      [
        "def",
        10
        /* Def */
      ],
      [
        "del",
        11
        /* Del */
      ],
      [
        "elif",
        12
        /* Elif */
      ],
      [
        "else",
        13
        /* Else */
      ],
      [
        "except",
        14
        /* Except */
      ],
      [
        "finally",
        16
        /* Finally */
      ],
      [
        "for",
        17
        /* For */
      ],
      [
        "from",
        18
        /* From */
      ],
      [
        "global",
        19
        /* Global */
      ],
      [
        "if",
        20
        /* If */
      ],
      [
        "import",
        21
        /* Import */
      ],
      [
        "in",
        22
        /* In */
      ],
      [
        "is",
        23
        /* Is */
      ],
      [
        "lambda",
        24
        /* Lambda */
      ],
      [
        "match",
        25
        /* Match */
      ],
      [
        "nonlocal",
        27
        /* Nonlocal */
      ],
      [
        "not",
        28
        /* Not */
      ],
      [
        "or",
        29
        /* Or */
      ],
      [
        "pass",
        30
        /* Pass */
      ],
      [
        "raise",
        31
        /* Raise */
      ],
      [
        "return",
        32
        /* Return */
      ],
      [
        "try",
        34
        /* Try */
      ],
      [
        "while",
        35
        /* While */
      ],
      [
        "with",
        36
        /* With */
      ],
      [
        "yield",
        37
        /* Yield */
      ],
      [
        "False",
        15
        /* False */
      ],
      [
        "None",
        26
        /* None */
      ],
      [
        "True",
        33
        /* True */
      ]
    ]);
    var _operatorInfo = {
      [
        0
        /* Add */
      ]: 1 | 2,
      [
        1
        /* AddEqual */
      ]: 4,
      [
        2
        /* Assign */
      ]: 4,
      [
        3
        /* BitwiseAnd */
      ]: 2,
      [
        4
        /* BitwiseAndEqual */
      ]: 4,
      [
        5
        /* BitwiseInvert */
      ]: 1,
      [
        6
        /* BitwiseOr */
      ]: 2,
      [
        7
        /* BitwiseOrEqual */
      ]: 4,
      [
        8
        /* BitwiseXor */
      ]: 2,
      [
        9
        /* BitwiseXorEqual */
      ]: 4,
      [
        10
        /* Divide */
      ]: 2,
      [
        11
        /* DivideEqual */
      ]: 4,
      [
        12
        /* Equals */
      ]: 2 | 8,
      [
        13
        /* FloorDivide */
      ]: 2,
      [
        14
        /* FloorDivideEqual */
      ]: 4,
      [
        15
        /* GreaterThan */
      ]: 2 | 8,
      [
        16
        /* GreaterThanOrEqual */
      ]: 2 | 8,
      [
        17
        /* LeftShift */
      ]: 2,
      [
        18
        /* LeftShiftEqual */
      ]: 4,
      [
        19
        /* LessOrGreaterThan */
      ]: 2 | 8 | 16,
      [
        20
        /* LessThan */
      ]: 2 | 8,
      [
        21
        /* LessThanOrEqual */
      ]: 2 | 8,
      [
        22
        /* MatrixMultiply */
      ]: 2,
      [
        23
        /* MatrixMultiplyEqual */
      ]: 4,
      [
        24
        /* Mod */
      ]: 2,
      [
        25
        /* ModEqual */
      ]: 4,
      [
        26
        /* Multiply */
      ]: 2,
      [
        27
        /* MultiplyEqual */
      ]: 4,
      [
        28
        /* NotEquals */
      ]: 2 | 8,
      [
        29
        /* Power */
      ]: 2,
      [
        30
        /* PowerEqual */
      ]: 4,
      [
        31
        /* RightShift */
      ]: 2,
      [
        32
        /* RightShiftEqual */
      ]: 4,
      [
        33
        /* Subtract */
      ]: 2,
      [
        34
        /* SubtractEqual */
      ]: 4,
      [
        36
        /* And */
      ]: 2,
      [
        37
        /* Or */
      ]: 2,
      [
        38
        /* Not */
      ]: 1,
      [
        39
        /* Is */
      ]: 2,
      [
        40
        /* IsNot */
      ]: 2,
      [
        41
        /* In */
      ]: 2,
      [
        42
        /* NotIn */
      ]: 2
    };
    var _byteOrderMarker = 65279;
    var _maxStringTokenLength = 32 * 1024;
    exports2.defaultTabSize = 8;
    var Tokenizer = class {
      constructor() {
        this._cs = new characterStream_1.CharacterStream("");
        this._tokens = [];
        this._prevLineStart = 0;
        this._parenDepth = 0;
        this._lineRanges = [];
        this._indentAmounts = [];
        this._typeIgnoreLines = /* @__PURE__ */ new Map();
        this._pyrightIgnoreLines = /* @__PURE__ */ new Map();
        this._crCount = 0;
        this._crLfCount = 0;
        this._lfCount = 0;
        this._indentCount = 0;
        this._indentTabCount = 0;
        this._indentSpacesTotal = 0;
        this._singleQuoteCount = 0;
        this._doubleQuoteCount = 0;
        this._ipythonMode = false;
      }
      tokenize(text, start, length, initialParenDepth = 0, ipythonMode = false) {
        if (start === void 0) {
          start = 0;
        } else if (start < 0 || start > text.length) {
          throw new Error(`Invalid range start (start=${start}, text.length=${text.length})`);
        }
        if (length === void 0) {
          length = text.length;
        } else if (length < 0 || start + length > text.length) {
          throw new Error(`Invalid range length (start=${start}, length=${length}, text.length=${text.length})`);
        } else if (start + length < text.length) {
          text = text.substring(0, start + length);
        }
        this._cs = new characterStream_1.CharacterStream(text);
        this._cs.position = start;
        this._tokens = [];
        this._prevLineStart = 0;
        this._parenDepth = initialParenDepth;
        this._lineRanges = [];
        this._indentAmounts = [];
        this._ipythonMode = ipythonMode;
        const end = start + length;
        if (start === 0) {
          this._readIndentationAfterNewLine();
        }
        while (!this._cs.isEndOfStream()) {
          this._addNextToken();
          if (this._cs.position >= end) {
            break;
          }
        }
        if (this._tokens.length === 0 || this._tokens[this._tokens.length - 1].type !== 2) {
          this._tokens.push(tokenizerTypes_1.NewLineToken.create(this._cs.position, 0, 3, this._getComments()));
        }
        this._setIndent(
          0,
          0,
          /* isSpacePresent */
          false,
          /* isTabPresent */
          false
        );
        this._tokens.push(tokenizerTypes_1.Token.create(1, this._cs.position, 0, this._getComments()));
        this._addLineRange();
        let predominantEndOfLineSequence = "\n";
        if (this._crCount > this._crLfCount && this._crCount > this._lfCount) {
          predominantEndOfLineSequence = "\r";
        } else if (this._crLfCount > this._crCount && this._crLfCount > this._lfCount) {
          predominantEndOfLineSequence = "\r\n";
        }
        let predominantTabSequence = "    ";
        if (this._indentTabCount > this._indentCount / 2) {
          predominantTabSequence = "	";
        } else if (this._indentCount > 0) {
          let averageSpacePerIndent = Math.round(this._indentSpacesTotal / this._indentCount);
          if (averageSpacePerIndent < 1) {
            averageSpacePerIndent = 1;
          } else if (averageSpacePerIndent > exports2.defaultTabSize) {
            averageSpacePerIndent = exports2.defaultTabSize;
          }
          predominantTabSequence = "";
          for (let i = 0; i < averageSpacePerIndent; i++) {
            predominantTabSequence += " ";
          }
        }
        return {
          tokens: new textRangeCollection_1.TextRangeCollection(this._tokens),
          lines: new textRangeCollection_1.TextRangeCollection(this._lineRanges),
          typeIgnoreLines: this._typeIgnoreLines,
          typeIgnoreAll: this._typeIgnoreAll,
          pyrightIgnoreLines: this._pyrightIgnoreLines,
          predominantEndOfLineSequence,
          predominantTabSequence,
          predominantSingleQuoteCharacter: this._singleQuoteCount >= this._doubleQuoteCount ? "'" : '"'
        };
      }
      static getOperatorInfo(operatorType) {
        return _operatorInfo[operatorType];
      }
      static isOperatorAssignment(operatorType) {
        if (operatorType === void 0 || _operatorInfo[operatorType] === void 0) {
          return false;
        }
        return (_operatorInfo[operatorType] & 4) !== 0;
      }
      static isOperatorComparison(operatorType) {
        if (operatorType === void 0 || _operatorInfo[operatorType] === void 0) {
          return false;
        }
        return (_operatorInfo[operatorType] & 8) !== 0;
      }
      _addNextToken() {
        this._cs.skipWhitespace();
        if (this._cs.isEndOfStream()) {
          return;
        }
        if (!this._handleCharacter()) {
          this._cs.moveNext();
        }
      }
      _handleCharacter() {
        const stringPrefixLength = this._getStringPrefixLength();
        if (stringPrefixLength >= 0) {
          let stringPrefix = "";
          if (stringPrefixLength > 0) {
            stringPrefix = this._cs.getText().substring(this._cs.position, this._cs.position + stringPrefixLength);
            this._cs.advance(stringPrefixLength);
          }
          const quoteTypeFlags = this._getQuoteTypeFlags(stringPrefix);
          if (quoteTypeFlags !== 0) {
            this._handleString(quoteTypeFlags, stringPrefixLength);
            return true;
          }
        }
        if (this._cs.currentChar === 35) {
          this._handleComment();
          return true;
        }
        if (this._ipythonMode && this._isIPythonMagics()) {
          this._handleIPythonMagics(
            this._cs.currentChar === 37 ? 1 : 2
            /* IPythonShellEscape */
          );
          return true;
        }
        switch (this._cs.currentChar) {
          case _byteOrderMarker: {
            if (this._cs.position === 0) {
              return false;
            }
            return this._handleInvalid();
          }
          case 13: {
            const length = this._cs.nextChar === 10 ? 2 : 1;
            const newLineType = length === 2 ? 2 : 0;
            this._handleNewLine(length, newLineType);
            return true;
          }
          case 10: {
            this._handleNewLine(
              1,
              1
              /* LineFeed */
            );
            return true;
          }
          case 92: {
            if (this._cs.nextChar === 13) {
              if (this._cs.lookAhead(2) === 10) {
                this._cs.advance(3);
              } else {
                this._cs.advance(2);
              }
              this._addLineRange();
              return true;
            } else if (this._cs.nextChar === 10) {
              this._cs.advance(2);
              this._addLineRange();
              return true;
            }
            return this._handleInvalid();
          }
          case 40: {
            this._parenDepth++;
            this._tokens.push(tokenizerTypes_1.Token.create(13, this._cs.position, 1, this._getComments()));
            break;
          }
          case 41: {
            if (this._parenDepth > 0) {
              this._parenDepth--;
            }
            this._tokens.push(tokenizerTypes_1.Token.create(14, this._cs.position, 1, this._getComments()));
            break;
          }
          case 91: {
            this._parenDepth++;
            this._tokens.push(tokenizerTypes_1.Token.create(15, this._cs.position, 1, this._getComments()));
            break;
          }
          case 93: {
            if (this._parenDepth > 0) {
              this._parenDepth--;
            }
            this._tokens.push(tokenizerTypes_1.Token.create(16, this._cs.position, 1, this._getComments()));
            break;
          }
          case 123: {
            this._parenDepth++;
            this._tokens.push(tokenizerTypes_1.Token.create(17, this._cs.position, 1, this._getComments()));
            break;
          }
          case 125: {
            if (this._parenDepth > 0) {
              this._parenDepth--;
            }
            this._tokens.push(tokenizerTypes_1.Token.create(18, this._cs.position, 1, this._getComments()));
            break;
          }
          case 44: {
            this._tokens.push(tokenizerTypes_1.Token.create(12, this._cs.position, 1, this._getComments()));
            break;
          }
          case 96: {
            this._tokens.push(tokenizerTypes_1.Token.create(22, this._cs.position, 1, this._getComments()));
            break;
          }
          case 59: {
            this._tokens.push(tokenizerTypes_1.Token.create(11, this._cs.position, 1, this._getComments()));
            break;
          }
          case 58: {
            if (this._cs.nextChar === 61) {
              this._tokens.push(tokenizerTypes_1.OperatorToken.create(this._cs.position, 2, 35, this._getComments()));
              this._cs.advance(1);
              break;
            }
            this._tokens.push(tokenizerTypes_1.Token.create(10, this._cs.position, 1, this._getComments()));
            break;
          }
          default: {
            if (this._isPossibleNumber()) {
              if (this._tryNumber()) {
                return true;
              }
            }
            if (this._cs.currentChar === 46) {
              if (this._cs.nextChar === 46 && this._cs.lookAhead(2) === 46) {
                this._tokens.push(tokenizerTypes_1.Token.create(19, this._cs.position, 3, this._getComments()));
                this._cs.advance(3);
                return true;
              }
              this._tokens.push(tokenizerTypes_1.Token.create(20, this._cs.position, 1, this._getComments()));
              break;
            }
            if (!this._tryIdentifier()) {
              if (!this._tryOperator()) {
                return this._handleInvalid();
              }
            }
            return true;
          }
        }
        return false;
      }
      _addLineRange() {
        const lineLength = this._cs.position - this._prevLineStart;
        if (lineLength > 0) {
          this._lineRanges.push({ start: this._prevLineStart, length: lineLength });
        }
        this._prevLineStart = this._cs.position;
      }
      _handleNewLine(length, newLineType) {
        if (this._parenDepth === 0 && newLineType !== 3) {
          if (this._tokens.length === 0 || this._tokens[this._tokens.length - 1].type !== 2) {
            this._tokens.push(tokenizerTypes_1.NewLineToken.create(this._cs.position, length, newLineType, this._getComments()));
          }
        }
        if (newLineType === 0) {
          this._crCount++;
        } else if (newLineType === 2) {
          this._crLfCount++;
        } else {
          this._lfCount++;
        }
        this._cs.advance(length);
        this._addLineRange();
        this._readIndentationAfterNewLine();
      }
      _readIndentationAfterNewLine() {
        let tab1Spaces = 0;
        let tab8Spaces = 0;
        let isTabPresent = false;
        let isSpacePresent = false;
        while (!this._cs.isEndOfStream()) {
          switch (this._cs.currentChar) {
            case 32:
              tab1Spaces++;
              tab8Spaces++;
              isSpacePresent = true;
              this._cs.moveNext();
              break;
            case 9:
              tab1Spaces++;
              tab8Spaces += exports2.defaultTabSize - tab8Spaces % exports2.defaultTabSize;
              isTabPresent = true;
              this._cs.moveNext();
              break;
            case 12:
              tab1Spaces = 0;
              tab8Spaces = 0;
              isTabPresent = false;
              isSpacePresent = false;
              this._cs.moveNext();
              break;
            default:
              this._setIndent(tab1Spaces, tab8Spaces, isSpacePresent, isTabPresent);
              return;
            case 35:
            case 10:
            case 13:
              return;
          }
        }
      }
      // The caller must specify two space count values. The first assumes
      // that tabs are translated into one-space tab stops. The second assumes
      // that tabs are translated into eight-space tab stops.
      _setIndent(tab1Spaces, tab8Spaces, isSpacePresent, isTabPresent) {
        if (this._parenDepth > 0) {
          return;
        }
        if (this._indentAmounts.length === 0) {
          if (tab8Spaces > 0) {
            this._indentCount++;
            if (isTabPresent) {
              this._indentTabCount++;
            }
            this._indentSpacesTotal += tab8Spaces;
            this._indentAmounts.push({
              tab1Spaces,
              tab8Spaces,
              isSpacePresent,
              isTabPresent
            });
            this._tokens.push(tokenizerTypes_1.IndentToken.create(this._cs.position, 0, tab8Spaces, false, this._getComments()));
          }
        } else {
          const prevTabInfo = this._indentAmounts[this._indentAmounts.length - 1];
          if (prevTabInfo.tab8Spaces < tab8Spaces) {
            const isIndentAmbiguous = (prevTabInfo.isSpacePresent && isTabPresent || prevTabInfo.isTabPresent && isSpacePresent) && prevTabInfo.tab1Spaces >= tab1Spaces;
            this._indentCount++;
            if (isTabPresent) {
              this._indentTabCount++;
            }
            this._indentSpacesTotal += tab8Spaces - this._indentAmounts[this._indentAmounts.length - 1].tab8Spaces;
            this._indentAmounts.push({
              tab1Spaces,
              tab8Spaces,
              isSpacePresent,
              isTabPresent
            });
            this._tokens.push(tokenizerTypes_1.IndentToken.create(this._cs.position, 0, tab8Spaces, isIndentAmbiguous, this._getComments()));
          } else if (prevTabInfo.tab8Spaces === tab8Spaces) {
            if (prevTabInfo.isSpacePresent && isTabPresent || prevTabInfo.isTabPresent && isSpacePresent) {
              this._tokens.push(tokenizerTypes_1.IndentToken.create(this._cs.position, 0, tab8Spaces, true, this._getComments()));
            }
          } else {
            let isDedentAmbiguous = prevTabInfo.isSpacePresent && isTabPresent || prevTabInfo.isTabPresent && isSpacePresent;
            const dedentPoints = [];
            while (this._indentAmounts.length > 0 && this._indentAmounts[this._indentAmounts.length - 1].tab8Spaces > tab8Spaces) {
              dedentPoints.push(this._indentAmounts.length > 1 ? this._indentAmounts[this._indentAmounts.length - 2].tab8Spaces : 0);
              this._indentAmounts.pop();
            }
            dedentPoints.forEach((dedentAmount, index) => {
              const matchesIndent = index < dedentPoints.length - 1 || dedentAmount === tab8Spaces;
              const actualDedentAmount = index < dedentPoints.length - 1 ? dedentAmount : tab8Spaces;
              this._tokens.push(tokenizerTypes_1.DedentToken.create(this._cs.position, 0, actualDedentAmount, matchesIndent, isDedentAmbiguous, this._getComments()));
              isDedentAmbiguous = false;
            });
          }
        }
      }
      _tryIdentifier() {
        const swallowRemainingChars = () => {
          while (true) {
            if ((0, characters_1.isIdentifierChar)(this._cs.currentChar)) {
              this._cs.moveNext();
            } else if ((0, characters_1.isIdentifierChar)(this._cs.currentChar, this._cs.nextChar)) {
              this._cs.moveNext();
              this._cs.moveNext();
            } else {
              break;
            }
          }
        };
        const start = this._cs.position;
        if ((0, characters_1.isIdentifierStartChar)(this._cs.currentChar)) {
          this._cs.moveNext();
          swallowRemainingChars();
        } else if ((0, characters_1.isIdentifierStartChar)(this._cs.currentChar, this._cs.nextChar)) {
          this._cs.moveNext();
          this._cs.moveNext();
          swallowRemainingChars();
        }
        if (this._cs.position > start) {
          const value = this._cs.getText().substring(start, this._cs.position);
          if (_keywords.has(value)) {
            this._tokens.push(tokenizerTypes_1.KeywordToken.create(start, this._cs.position - start, _keywords.get(value), this._getComments()));
          } else {
            this._tokens.push(tokenizerTypes_1.IdentifierToken.create(start, this._cs.position - start, value, this._getComments()));
          }
          return true;
        }
        return false;
      }
      _isPossibleNumber() {
        if ((0, characters_1.isDecimal)(this._cs.currentChar)) {
          return true;
        }
        if (this._cs.currentChar === 46 && (0, characters_1.isDecimal)(this._cs.nextChar)) {
          return true;
        }
        return false;
      }
      _tryNumber() {
        const start = this._cs.position;
        if (this._cs.currentChar === 48) {
          let radix = 0;
          let leadingChars = 0;
          if ((this._cs.nextChar === 120 || this._cs.nextChar === 88) && (0, characters_1.isHex)(this._cs.lookAhead(2))) {
            this._cs.advance(2);
            leadingChars = 2;
            while ((0, characters_1.isHex)(this._cs.currentChar)) {
              this._cs.moveNext();
            }
            radix = 16;
          } else if ((this._cs.nextChar === 98 || this._cs.nextChar === 66) && (0, characters_1.isBinary)(this._cs.lookAhead(2))) {
            this._cs.advance(2);
            leadingChars = 2;
            while ((0, characters_1.isBinary)(this._cs.currentChar)) {
              this._cs.moveNext();
            }
            radix = 2;
          } else if ((this._cs.nextChar === 111 || this._cs.nextChar === 79) && (0, characters_1.isOctal)(this._cs.lookAhead(2))) {
            this._cs.advance(2);
            leadingChars = 2;
            while ((0, characters_1.isOctal)(this._cs.currentChar)) {
              this._cs.moveNext();
            }
            radix = 8;
          }
          if (radix > 0) {
            const text = this._cs.getText().substring(start, this._cs.position);
            const simpleIntText = text.replace(/_/g, "");
            let intValue = parseInt(simpleIntText.substring(leadingChars), radix);
            if (!isNaN(intValue)) {
              const bigIntValue = BigInt(simpleIntText);
              if (!isFinite(intValue) || BigInt(intValue) !== bigIntValue) {
                intValue = bigIntValue;
              }
              this._tokens.push(tokenizerTypes_1.NumberToken.create(start, text.length, intValue, true, false, this._getComments()));
              return true;
            }
          }
        }
        let isDecimalInteger = false;
        let mightBeFloatingPoint = false;
        if (this._cs.currentChar >= 49 && this._cs.currentChar <= 57) {
          while ((0, characters_1.isDecimal)(this._cs.currentChar)) {
            mightBeFloatingPoint = true;
            this._cs.moveNext();
          }
          isDecimalInteger = this._cs.currentChar !== 46 && this._cs.currentChar !== 101 && this._cs.currentChar !== 69;
        }
        if (this._cs.currentChar === 48) {
          mightBeFloatingPoint = true;
          while (this._cs.currentChar === 48 || this._cs.currentChar === 95) {
            this._cs.moveNext();
          }
          isDecimalInteger = this._cs.currentChar !== 46 && this._cs.currentChar !== 101 && this._cs.currentChar !== 69;
        }
        if (isDecimalInteger) {
          let text = this._cs.getText().substring(start, this._cs.position);
          const simpleIntText = text.replace(/_/g, "");
          let intValue = parseInt(simpleIntText, 10);
          if (!isNaN(intValue)) {
            let isImaginary = false;
            const bigIntValue = BigInt(simpleIntText);
            if (!isFinite(intValue) || BigInt(intValue) !== bigIntValue) {
              intValue = bigIntValue;
            }
            if (this._cs.currentChar === 106 || this._cs.currentChar === 74) {
              isImaginary = true;
              text += String.fromCharCode(this._cs.currentChar);
              this._cs.moveNext();
            }
            this._tokens.push(tokenizerTypes_1.NumberToken.create(start, text.length, intValue, true, isImaginary, this._getComments()));
            return true;
          }
        }
        this._cs.position = start;
        if (mightBeFloatingPoint || this._cs.currentChar === 46 && this._cs.nextChar >= 48 && this._cs.nextChar <= 57) {
          if (this._skipFloatingPointCandidate()) {
            let text = this._cs.getText().substring(start, this._cs.position);
            const value = parseFloat(text);
            if (!isNaN(value)) {
              let isImaginary = false;
              if (this._cs.currentChar === 106 || this._cs.currentChar === 74) {
                isImaginary = true;
                text += String.fromCharCode(this._cs.currentChar);
                this._cs.moveNext();
              }
              this._tokens.push(tokenizerTypes_1.NumberToken.create(start, this._cs.position - start, value, false, isImaginary, this._getComments()));
              return true;
            }
          }
        }
        this._cs.position = start;
        return false;
      }
      _tryOperator() {
        let length = 0;
        const nextChar = this._cs.nextChar;
        let operatorType;
        switch (this._cs.currentChar) {
          case 43:
            length = nextChar === 61 ? 2 : 1;
            operatorType = length === 2 ? 1 : 0;
            break;
          case 38:
            length = nextChar === 61 ? 2 : 1;
            operatorType = length === 2 ? 4 : 3;
            break;
          case 124:
            length = nextChar === 61 ? 2 : 1;
            operatorType = length === 2 ? 7 : 6;
            break;
          case 94:
            length = nextChar === 61 ? 2 : 1;
            operatorType = length === 2 ? 9 : 8;
            break;
          case 61:
            length = nextChar === 61 ? 2 : 1;
            operatorType = length === 2 ? 12 : 2;
            break;
          case 33:
            if (nextChar !== 61) {
              return false;
            }
            length = 2;
            operatorType = 28;
            break;
          case 37:
            length = nextChar === 61 ? 2 : 1;
            operatorType = length === 2 ? 25 : 24;
            break;
          case 126:
            length = 1;
            operatorType = 5;
            break;
          case 45:
            if (nextChar === 62) {
              this._tokens.push(tokenizerTypes_1.Token.create(21, this._cs.position, 2, this._getComments()));
              this._cs.advance(2);
              return true;
            }
            length = nextChar === 61 ? 2 : 1;
            operatorType = length === 2 ? 34 : 33;
            break;
          case 42:
            if (nextChar === 42) {
              length = this._cs.lookAhead(2) === 61 ? 3 : 2;
              operatorType = length === 3 ? 30 : 29;
            } else {
              length = nextChar === 61 ? 2 : 1;
              operatorType = length === 2 ? 27 : 26;
            }
            break;
          case 47:
            if (nextChar === 47) {
              length = this._cs.lookAhead(2) === 61 ? 3 : 2;
              operatorType = length === 3 ? 14 : 13;
            } else {
              length = nextChar === 61 ? 2 : 1;
              operatorType = length === 2 ? 11 : 10;
            }
            break;
          case 60:
            if (nextChar === 60) {
              length = this._cs.lookAhead(2) === 61 ? 3 : 2;
              operatorType = length === 3 ? 18 : 17;
            } else if (nextChar === 62) {
              length = 2;
              operatorType = 19;
            } else {
              length = nextChar === 61 ? 2 : 1;
              operatorType = length === 2 ? 21 : 20;
            }
            break;
          case 62:
            if (nextChar === 62) {
              length = this._cs.lookAhead(2) === 61 ? 3 : 2;
              operatorType = length === 3 ? 32 : 31;
            } else {
              length = nextChar === 61 ? 2 : 1;
              operatorType = length === 2 ? 16 : 15;
            }
            break;
          case 64:
            length = nextChar === 61 ? 2 : 1;
            operatorType = length === 2 ? 23 : 22;
            break;
          default:
            return false;
        }
        this._tokens.push(tokenizerTypes_1.OperatorToken.create(this._cs.position, length, operatorType, this._getComments()));
        this._cs.advance(length);
        return length > 0;
      }
      _handleInvalid() {
        const start = this._cs.position;
        while (true) {
          if (this._cs.currentChar === 10 || this._cs.currentChar === 13 || this._cs.isAtWhiteSpace() || this._cs.isEndOfStream()) {
            break;
          }
          if ((0, characters_1.isSurrogateChar)(this._cs.currentChar)) {
            this._cs.moveNext();
            this._cs.moveNext();
          } else {
            this._cs.moveNext();
          }
        }
        const length = this._cs.position - start;
        if (length > 0) {
          this._tokens.push(tokenizerTypes_1.Token.create(0, start, length, this._getComments()));
          return true;
        }
        return false;
      }
      _getComments() {
        const prevComments = this._comments;
        this._comments = void 0;
        return prevComments;
      }
      _isIPythonMagics() {
        const prevToken = this._tokens.length > 0 ? this._tokens[this._tokens.length - 1] : void 0;
        return (prevToken === void 0 || prevToken.type === 2 || prevToken.type === 3) && (this._cs.currentChar === 37 || this._cs.currentChar === 33);
      }
      _handleIPythonMagics(type) {
        const start = this._cs.position + 1;
        let begin = start;
        do {
          this._cs.skipToEol();
          const length2 = this._cs.position - begin;
          const value2 = this._cs.getText().substring(begin, begin + length2);
          if (!value2.match(/\\\s*$/)) {
            break;
          }
          begin = this._cs.position + 1;
        } while (!this._cs.isEndOfStream());
        const length = this._cs.position - start;
        const value = this._cs.getText().substring(start, start + length);
        const comment = tokenizerTypes_1.Comment.create(start, length, value, type);
        this._addComments(comment);
      }
      _handleComment() {
        const start = this._cs.position + 1;
        this._cs.skipToEol();
        const length = this._cs.position - start;
        const value = this._cs.getText().substring(start, start + length);
        const comment = tokenizerTypes_1.Comment.create(start, length, value);
        const typeIgnoreRegexMatch = value.match(/^\s*type:\s*ignore(\s*\[([\s*\w-,]*)\]|\s|$)/);
        if (typeIgnoreRegexMatch) {
          const textRange = { start, length: typeIgnoreRegexMatch[0].length };
          const ignoreComment = {
            range: textRange,
            rulesList: this._getIgnoreCommentRulesList(start, typeIgnoreRegexMatch)
          };
          if (this._tokens.findIndex(
            (t) => t.type !== 2 && t && t.type !== 3
            /* Indent */
          ) < 0) {
            this._typeIgnoreAll = ignoreComment;
          } else {
            this._typeIgnoreLines.set(this._lineRanges.length, ignoreComment);
          }
        }
        const pyrightIgnoreRegexMatch = value.match(/^\s*pyright:\s*ignore(\s*\[([\s*\w-,]*)\]|\s|$)/);
        if (pyrightIgnoreRegexMatch) {
          const textRange = { start, length: pyrightIgnoreRegexMatch[0].length };
          const ignoreComment = {
            range: textRange,
            rulesList: this._getIgnoreCommentRulesList(start, pyrightIgnoreRegexMatch)
          };
          this._pyrightIgnoreLines.set(this._lineRanges.length, ignoreComment);
        }
        this._addComments(comment);
      }
      // Extracts the individual rules within a "type: ignore [x, y, z]" comment.
      _getIgnoreCommentRulesList(start, match2) {
        if (match2.length < 3 || match2[2] === void 0) {
          return void 0;
        }
        const splitElements = match2[2].split(",");
        const commentRules = [];
        let currentOffset = start + match2[0].indexOf("[") + 1;
        for (const element of splitElements) {
          const frontTrimmed = element.trimStart();
          currentOffset += element.length - frontTrimmed.length;
          const endTrimmed = frontTrimmed.trimEnd();
          if (endTrimmed.length > 0) {
            commentRules.push({
              range: { start: currentOffset, length: endTrimmed.length },
              text: endTrimmed
            });
          }
          currentOffset += frontTrimmed.length + 1;
        }
        return commentRules;
      }
      _addComments(comment) {
        if (this._comments) {
          this._comments.push(comment);
        } else {
          this._comments = [comment];
        }
      }
      _getStringPrefixLength() {
        if (this._cs.currentChar === 39 || this._cs.currentChar === 34) {
          return 0;
        }
        if (this._cs.nextChar === 39 || this._cs.nextChar === 34) {
          switch (this._cs.currentChar) {
            case 102:
            case 70:
            case 114:
            case 82:
            case 98:
            case 66:
            case 117:
            case 85:
              return 1;
            default:
              break;
          }
        }
        if (this._cs.lookAhead(2) === 39 || this._cs.lookAhead(2) === 34) {
          const prefix = this._cs.getText().substring(this._cs.position, this._cs.position + 2).toLowerCase();
          switch (prefix) {
            case "rf":
            case "fr":
            case "ur":
            case "ru":
            case "br":
            case "rb":
              return 2;
            default:
              break;
          }
        }
        return -1;
      }
      _getQuoteTypeFlags(prefix) {
        let flags = 0;
        prefix = prefix.toLowerCase();
        for (let i = 0; i < prefix.length; i++) {
          switch (prefix[i]) {
            case "u":
              flags |= 16;
              break;
            case "b":
              flags |= 32;
              break;
            case "r":
              flags |= 8;
              break;
            case "f":
              flags |= 64;
              break;
          }
        }
        if (this._cs.currentChar === 39) {
          flags |= 1;
          if (this._cs.nextChar === 39 && this._cs.lookAhead(2) === 39) {
            flags |= 4;
          }
        } else if (this._cs.currentChar === 34) {
          flags |= 2;
          if (this._cs.nextChar === 34 && this._cs.lookAhead(2) === 34) {
            flags |= 4;
          }
        }
        return flags;
      }
      _handleString(flags, stringPrefixLength) {
        const start = this._cs.position - stringPrefixLength;
        if (flags & 4) {
          this._cs.advance(3);
        } else {
          this._cs.moveNext();
          if (flags & 1) {
            this._singleQuoteCount++;
          } else {
            this._doubleQuoteCount++;
          }
        }
        const stringLiteralInfo = this._skipToEndOfStringLiteral(flags);
        const end = this._cs.position;
        this._tokens.push(tokenizerTypes_1.StringToken.create(start, end - start, stringLiteralInfo.flags, stringLiteralInfo.escapedValue, stringPrefixLength, this._getComments()));
      }
      _skipToEndOfStringLiteral(flags) {
        const quoteChar = flags & 1 ? 39 : 34;
        const isTriplicate = (flags & 4) !== 0;
        let escapedValueParts = [];
        while (true) {
          if (this._cs.isEndOfStream()) {
            flags |= 65536;
            return { escapedValue: String.fromCharCode.apply(void 0, escapedValueParts), flags };
          }
          if (this._cs.currentChar === 92) {
            escapedValueParts.push(this._cs.currentChar);
            this._cs.moveNext();
            if (this._cs.getCurrentChar() === 13 || this._cs.getCurrentChar() === 10) {
              if (this._cs.getCurrentChar() === 13 && this._cs.nextChar === 10) {
                escapedValueParts.push(this._cs.currentChar);
                this._cs.moveNext();
              }
              escapedValueParts.push(this._cs.currentChar);
              this._cs.moveNext();
              this._addLineRange();
            } else {
              escapedValueParts.push(this._cs.currentChar);
              this._cs.moveNext();
            }
          } else if (this._cs.currentChar === 10 || this._cs.currentChar === 13) {
            if (!isTriplicate) {
              flags |= 65536;
              return { escapedValue: String.fromCharCode.apply(void 0, escapedValueParts), flags };
            }
            if (this._cs.currentChar === 13 && this._cs.nextChar === 10) {
              escapedValueParts.push(this._cs.currentChar);
              this._cs.moveNext();
            }
            escapedValueParts.push(this._cs.currentChar);
            this._cs.moveNext();
            this._addLineRange();
          } else if (!isTriplicate && this._cs.currentChar === quoteChar) {
            this._cs.moveNext();
            break;
          } else if (isTriplicate && this._cs.currentChar === quoteChar && this._cs.nextChar === quoteChar && this._cs.lookAhead(2) === quoteChar) {
            this._cs.advance(3);
            break;
          } else {
            escapedValueParts.push(this._cs.currentChar);
            this._cs.moveNext();
          }
        }
        if (escapedValueParts.length > _maxStringTokenLength) {
          escapedValueParts = escapedValueParts.slice(0, _maxStringTokenLength);
          flags |= 131072;
        }
        return { escapedValue: String.fromCharCode.apply(void 0, escapedValueParts), flags };
      }
      _skipFloatingPointCandidate() {
        const start = this._cs.position;
        this._skipFractionalNumber();
        if (this._cs.position > start) {
          if (this._cs.currentChar === 101 || this._cs.currentChar === 69) {
            this._cs.moveNext();
            this._skipDecimalNumber(
              /* allowSign */
              true
            );
          }
        }
        return this._cs.position > start;
      }
      _skipFractionalNumber() {
        this._skipDecimalNumber(false);
        if (this._cs.currentChar === 46) {
          this._cs.moveNext();
        }
        this._skipDecimalNumber(false);
      }
      _skipDecimalNumber(allowSign) {
        if (allowSign && (this._cs.currentChar === 45 || this._cs.currentChar === 43)) {
          this._cs.moveNext();
        }
        while ((0, characters_1.isDecimal)(this._cs.currentChar)) {
          this._cs.moveNext();
        }
      }
    };
    exports2.Tokenizer = Tokenizer;
  }
});

// node_modules/@zzzen/pyright-internal/dist/parser/parser.js
var require_parser = __commonJS({
  "node_modules/@zzzen/pyright-internal/dist/parser/parser.js"(exports2) {
    "use strict";
    var __createBinding = exports2 && exports2.__createBinding || (Object.create ? (function(o, m, k, k2) {
      if (k2 === void 0) k2 = k;
      Object.defineProperty(o, k2, { enumerable: true, get: function() {
        return m[k];
      } });
    }) : (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.Parser = exports2.ParseOptions = void 0;
    var collectionUtils_1 = require_collectionUtils();
    var debug_1 = require_debug();
    var diagnostic_1 = require_diagnostic();
    var diagnosticSink_1 = require_diagnosticSink();
    var positionUtils_1 = require_positionUtils();
    var pythonVersion_1 = require_pythonVersion();
    var timing_1 = require_timing();
    var localize_1 = require_localize();
    var parseNodes_1 = require_parseNodes();
    var StringTokenUtils = __importStar(require_stringTokenUtils());
    var tokenizer_1 = require_tokenizer();
    var tokenizerTypes_1 = require_tokenizerTypes();
    var ParseOptions2 = class {
      constructor() {
        this.isStubFile = false;
        this.pythonVersion = pythonVersion_1.latestStablePythonVersion;
        this.reportInvalidStringEscapeSequence = false;
        this.skipFunctionAndClassBody = false;
        this.ipythonMode = false;
        this.reportErrorsForParsedStringContents = false;
      }
    };
    exports2.ParseOptions = ParseOptions2;
    var ParseTextMode;
    (function(ParseTextMode2) {
      ParseTextMode2[ParseTextMode2["Expression"] = 0] = "Expression";
      ParseTextMode2[ParseTextMode2["VariableAnnotation"] = 1] = "VariableAnnotation";
      ParseTextMode2[ParseTextMode2["FunctionAnnotation"] = 2] = "FunctionAnnotation";
    })(ParseTextMode || (ParseTextMode = {}));
    var maxChildNodeDepth = 256;
    var Parser2 = class _Parser {
      constructor() {
        this._tokenIndex = 0;
        this._areErrorsSuppressed = false;
        this._parseOptions = new ParseOptions2();
        this._diagSink = new diagnosticSink_1.DiagnosticSink();
        this._isInLoop = false;
        this._isInFunction = false;
        this._isInFinally = false;
        this._isParsingTypeAnnotation = false;
        this._isParsingIndexTrailer = false;
        this._futureImportMap = /* @__PURE__ */ new Map();
        this._importedModules = [];
        this._containsWildcardImport = false;
        this._assignmentExpressionsAllowed = true;
        this._typingImportAliases = [];
        this._typingSymbolAliases = /* @__PURE__ */ new Map();
      }
      parseSourceFile(fileContents, parseOptions, diagSink) {
        timing_1.timingStats.tokenizeFileTime.timeOperation(() => {
          this._startNewParse(fileContents, 0, fileContents.length, parseOptions, diagSink);
        });
        const moduleNode = parseNodes_1.ModuleNode.create({ start: 0, length: fileContents.length });
        timing_1.timingStats.parseFileTime.timeOperation(() => {
          while (!this._atEof()) {
            if (!this._consumeTokenIfType(
              2
              /* NewLine */
            )) {
              const nextToken = this._peekToken();
              if (nextToken.type === 3) {
                this._getNextToken();
                const indentToken = nextToken;
                if (indentToken.isIndentAmbiguous) {
                  this._addError(localize_1.Localizer.Diagnostic.inconsistentTabs(), indentToken);
                } else {
                  this._addError(localize_1.Localizer.Diagnostic.unexpectedIndent(), nextToken);
                }
              }
              const statement = this._parseStatement();
              if (!statement) {
                this._consumeTokensUntilType([
                  2
                  /* NewLine */
                ]);
              } else {
                statement.parent = moduleNode;
                moduleNode.statements.push(statement);
              }
            }
          }
        });
        (0, debug_1.assert)(this._tokenizerOutput !== void 0);
        return {
          text: fileContents,
          parseTree: moduleNode,
          importedModules: this._importedModules,
          futureImports: this._futureImportMap,
          tokenizerOutput: this._tokenizerOutput,
          containsWildcardImport: this._containsWildcardImport,
          typingSymbolAliases: this._typingSymbolAliases
        };
      }
      parseTextExpression(fileContents, textOffset, textLength, parseOptions, parseTextMode = 0, initialParenDepth = 0, typingSymbolAliases) {
        const diagSink = new diagnosticSink_1.DiagnosticSink();
        this._startNewParse(fileContents, textOffset, textLength, parseOptions, diagSink, initialParenDepth);
        if (typingSymbolAliases) {
          this._typingSymbolAliases = new Map(typingSymbolAliases);
        }
        let parseTree;
        if (parseTextMode === 1) {
          parseTree = this._parseTypeAnnotation();
        } else if (parseTextMode === 2) {
          parseTree = this._parseFunctionTypeAnnotation();
        } else {
          const exprListResult = this._parseTestOrStarExpressionList(
            /* allowAssignmentExpression */
            false,
            /* allowMultipleUnpack */
            true
          );
          if (exprListResult.parseError) {
            parseTree = exprListResult.parseError;
          } else {
            if (exprListResult.list.length === 0) {
              this._addError(localize_1.Localizer.Diagnostic.expectedExpr(), this._peekToken());
            }
            parseTree = this._makeExpressionOrTuple(
              exprListResult,
              /* enclosedInParens */
              false
            );
          }
        }
        if (this._peekTokenType() === 2) {
          this._getNextToken();
        }
        if (!this._atEof()) {
          this._addError(localize_1.Localizer.Diagnostic.unexpectedExprToken(), this._peekToken());
        }
        return {
          parseTree,
          lines: this._tokenizerOutput.lines,
          diagnostics: diagSink.fetchAndClear()
        };
      }
      _startNewParse(fileContents, textOffset, textLength, parseOptions, diagSink, initialParenDepth = 0) {
        this._fileContents = fileContents;
        this._parseOptions = parseOptions;
        this._diagSink = diagSink;
        const tokenizer = new tokenizer_1.Tokenizer();
        this._tokenizerOutput = tokenizer.tokenize(fileContents, textOffset, textLength, initialParenDepth, this._parseOptions.ipythonMode);
        this._tokenIndex = 0;
      }
      // stmt: simple_stmt | compound_stmt
      // compound_stmt: if_stmt | while_stmt | for_stmt | try_stmt | with_stmt
      //   | funcdef | classdef | decorated | async_stmt
      _parseStatement() {
        if (this._consumeTokenIfType(
          4
          /* Dedent */
        )) {
          this._addError(localize_1.Localizer.Diagnostic.unexpectedUnindent(), this._peekToken());
        }
        switch (this._peekKeywordType()) {
          case 20:
            return this._parseIfStatement();
          case 35:
            return this._parseWhileStatement();
          case 17:
            return this._parseForStatement();
          case 34:
            return this._parseTryStatement();
          case 36:
            return this._parseWithStatement();
          case 10:
            return this._parseFunctionDef();
          case 7:
            return this._parseClassDef();
          case 3:
            return this._parseAsyncStatement();
          case 25: {
            const peekToken = this._peekToken(1);
            let isInvalidMatchToken = false;
            if (peekToken.type === 10 || peekToken.type === 11 || peekToken.type === 12 || peekToken.type === 20 || peekToken.type === 2 || peekToken.type === 1) {
              isInvalidMatchToken = true;
            } else if (peekToken.type === 9) {
              const operatorToken = peekToken;
              if (operatorToken.operatorType !== 26 && operatorToken.operatorType !== 33) {
                isInvalidMatchToken = true;
              }
            }
            if (!isInvalidMatchToken) {
              const matchStatement = this._parseMatchStatement();
              if (matchStatement) {
                return matchStatement;
              }
            }
          }
        }
        if (this._peekOperatorType() === 22) {
          return this._parseDecorated();
        }
        return this._parseSimpleStatement();
      }
      // async_stmt: 'async' (funcdef | with_stmt | for_stmt)
      _parseAsyncStatement() {
        const asyncToken = this._getKeywordToken(
          3
          /* Async */
        );
        switch (this._peekKeywordType()) {
          case 10:
            return this._parseFunctionDef(asyncToken);
          case 36:
            return this._parseWithStatement(asyncToken);
          case 17:
            return this._parseForStatement(asyncToken);
        }
        this._addError(localize_1.Localizer.Diagnostic.unexpectedAsyncToken(), asyncToken);
        return void 0;
      }
      // match_stmt: "match" subject_expr ':' NEWLINE INDENT case_block+ DEDENT
      // subject_expr:
      //     | star_named_expression ',' star_named_expressions?
      //     | named_expression
      _parseMatchStatement() {
        let smellsLikeMatchStatement = false;
        this._suppressErrors(() => {
          const curTokenIndex = this._tokenIndex;
          this._getKeywordToken(
            25
            /* Match */
          );
          const expression = this._parseTestOrStarListAsExpression(
            /* allowAssignmentExpression */
            true,
            /* allowMultipleUnpack */
            true,
            12,
            localize_1.Localizer.Diagnostic.expectedReturnExpr()
          );
          smellsLikeMatchStatement = expression.nodeType !== 0 && this._peekToken().type === 10;
          this._tokenIndex = curTokenIndex;
        });
        if (!smellsLikeMatchStatement) {
          return void 0;
        }
        const matchToken = this._getKeywordToken(
          25
          /* Match */
        );
        const subjectExpression = this._parseTestOrStarListAsExpression(
          /* allowAssignmentExpression */
          true,
          /* allowMultipleUnpack */
          true,
          12,
          localize_1.Localizer.Diagnostic.expectedReturnExpr()
        );
        const matchNode = parseNodes_1.MatchNode.create(matchToken, subjectExpression);
        const nextToken = this._peekToken();
        if (!this._consumeTokenIfType(
          10
          /* Colon */
        )) {
          this._addError(localize_1.Localizer.Diagnostic.expectedColon(), nextToken);
          if (this._consumeTokensUntilType([
            2,
            10
            /* Colon */
          ])) {
            this._getNextToken();
          }
        } else if (!this._consumeTokenIfType(
          2
          /* NewLine */
        )) {
          this._addError(localize_1.Localizer.Diagnostic.expectedNewline(), nextToken);
        } else {
          const possibleIndent = this._peekToken();
          if (!this._consumeTokenIfType(
            3
            /* Indent */
          )) {
            this._addError(localize_1.Localizer.Diagnostic.expectedIndentedBlock(), this._peekToken());
          } else {
            const indentToken = possibleIndent;
            if (indentToken.isIndentAmbiguous) {
              this._addError(localize_1.Localizer.Diagnostic.inconsistentTabs(), indentToken);
            }
          }
          while (true) {
            const nextToken2 = this._peekToken();
            if (nextToken2.type === 3) {
              this._getNextToken();
              const indentToken = nextToken2;
              if (indentToken.isIndentAmbiguous) {
                this._addError(localize_1.Localizer.Diagnostic.inconsistentTabs(), indentToken);
              } else {
                this._addError(localize_1.Localizer.Diagnostic.unexpectedIndent(), nextToken2);
              }
            }
            const caseStatement = this._parseCaseStatement();
            if (!caseStatement) {
              if (this._consumeTokensUntilType([
                2,
                10
                /* Colon */
              ])) {
                this._getNextToken();
              }
            } else {
              caseStatement.parent = matchNode;
              matchNode.cases.push(caseStatement);
            }
            const dedentToken = this._peekToken();
            if (this._consumeTokenIfType(
              4
              /* Dedent */
            )) {
              if (!dedentToken.matchesIndent) {
                this._addError(localize_1.Localizer.Diagnostic.inconsistentIndent(), dedentToken);
              }
              if (dedentToken.isDedentAmbiguous) {
                this._addError(localize_1.Localizer.Diagnostic.inconsistentTabs(), dedentToken);
              }
              break;
            }
            if (this._peekTokenType() === 1) {
              break;
            }
          }
          if (matchNode.cases.length > 0) {
            (0, parseNodes_1.extendRange)(matchNode, matchNode.cases[matchNode.cases.length - 1]);
          } else {
            this._addError(localize_1.Localizer.Diagnostic.zeroCaseStatementsFound(), matchToken);
          }
        }
        if (this._getLanguageVersion() < pythonVersion_1.PythonVersion.V3_10) {
          this._addError(localize_1.Localizer.Diagnostic.matchIncompatible(), matchToken);
        }
        for (let i = 0; i < matchNode.cases.length - 1; i++) {
          const caseNode = matchNode.cases[i];
          if (!caseNode.guardExpression && caseNode.isIrrefutable) {
            this._addError(localize_1.Localizer.Diagnostic.casePatternIsIrrefutable(), caseNode.pattern);
          }
        }
        return matchNode;
      }
      // case_block: "case" patterns [guard] ':' block
      // patterns: sequence_pattern | as_pattern
      // guard: 'if' named_expression
      _parseCaseStatement() {
        const caseToken = this._peekToken();
        if (!this._consumeTokenIfKeyword(
          6
          /* Case */
        )) {
          this._addError(localize_1.Localizer.Diagnostic.expectedCase(), caseToken);
          return void 0;
        }
        const patternList = this._parsePatternSequence();
        let casePattern;
        if (patternList.parseError) {
          casePattern = patternList.parseError;
        } else if (patternList.list.length === 0) {
          this._addError(localize_1.Localizer.Diagnostic.expectedPatternExpr(), this._peekToken());
          casePattern = parseNodes_1.ErrorNode.create(
            caseToken,
            11
            /* MissingPattern */
          );
        } else if (patternList.list.length === 1 && !patternList.trailingComma) {
          const pattern = patternList.list[0].orPatterns[0];
          if (pattern.nodeType === 69 && pattern.isStar) {
            casePattern = parseNodes_1.PatternSequenceNode.create(patternList.list[0], patternList.list);
          } else {
            casePattern = patternList.list[0];
          }
        } else {
          casePattern = parseNodes_1.PatternSequenceNode.create(patternList.list[0], patternList.list);
        }
        let guardExpression;
        if (this._consumeTokenIfKeyword(
          20
          /* If */
        )) {
          guardExpression = this._parseTestExpression(
            /* allowAssignmentExpression */
            true
          );
        }
        const suite = this._parseSuite(this._isInFunction);
        return parseNodes_1.CaseNode.create(caseToken, casePattern, this._isPatternIrrefutable(casePattern), guardExpression, suite);
      }
      // PEP 634 defines the concept of an "irrefutable" pattern - a pattern that
      // will always be matched.
      _isPatternIrrefutable(node) {
        if (node.nodeType === 69) {
          return true;
        }
        if (node.nodeType === 66) {
          return node.orPatterns.some((pattern) => this._isPatternIrrefutable(pattern));
        }
        return false;
      }
      _getPatternTargetNames(node, nameMap) {
        switch (node.nodeType) {
          case 65: {
            node.entries.forEach((subpattern) => {
              this._getPatternTargetNames(subpattern, nameMap);
            });
            break;
          }
          case 68: {
            node.arguments.forEach((arg) => {
              this._getPatternTargetNames(arg.pattern, nameMap);
            });
            break;
          }
          case 66: {
            if (node.target) {
              nameMap.set(node.target.value, true);
            }
            node.orPatterns.forEach((subpattern) => {
              this._getPatternTargetNames(subpattern, nameMap);
            });
            break;
          }
          case 69: {
            if (!node.isWildcard) {
              nameMap.set(node.target.value, true);
            }
            break;
          }
          case 70: {
            node.entries.forEach((mapEntry) => {
              if (mapEntry.nodeType === 72) {
                nameMap.set(mapEntry.target.value, true);
              } else {
                this._getPatternTargetNames(mapEntry.keyPattern, nameMap);
                this._getPatternTargetNames(mapEntry.valuePattern, nameMap);
              }
            });
            break;
          }
          case 67:
          case 73:
          case 0: {
            break;
          }
        }
      }
      _parsePatternSequence() {
        const patternList = this._parseExpressionListGeneric(() => this._parsePatternAs());
        const starEntries = patternList.list.filter((entry) => entry.orPatterns.length === 1 && entry.orPatterns[0].nodeType === 69 && entry.orPatterns[0].isStar);
        if (starEntries.length > 1) {
          this._addError(localize_1.Localizer.Diagnostic.duplicateStarPattern(), starEntries[1].orPatterns[0]);
        }
        const captureTargetMap = /* @__PURE__ */ new Map();
        patternList.list.forEach((asPattern) => {
          asPattern.orPatterns.forEach((patternAtom) => {
            if (patternAtom.nodeType === 69 && !patternAtom.isStar && !patternAtom.isWildcard) {
              if (captureTargetMap.has(patternAtom.target.value)) {
                this._addError(localize_1.Localizer.Diagnostic.duplicateCapturePatternTarget().format({
                  name: patternAtom.target.value
                }), patternAtom);
              } else {
                captureTargetMap.set(patternAtom.target.value, patternAtom);
              }
            }
          });
        });
        return patternList;
      }
      // as_pattern: or_pattern ['as' NAME]
      // or_pattern: '|'.pattern_atom+
      _parsePatternAs() {
        const orPatterns = [];
        while (true) {
          const patternAtom = this._parsePatternAtom();
          orPatterns.push(patternAtom);
          if (!this._consumeTokenIfOperator(
            6
            /* BitwiseOr */
          )) {
            break;
          }
        }
        if (orPatterns.length > 1) {
          orPatterns.forEach((patternAtom) => {
            if (patternAtom.nodeType === 69 && patternAtom.isStar) {
              this._addError(localize_1.Localizer.Diagnostic.starPatternInOrPattern(), patternAtom);
            }
          });
        }
        let target;
        if (this._consumeTokenIfKeyword(
          1
          /* As */
        )) {
          const nameToken = this._getTokenIfIdentifier();
          if (nameToken) {
            target = parseNodes_1.NameNode.create(nameToken);
          } else {
            this._addError(localize_1.Localizer.Diagnostic.expectedNameAfterAs(), this._peekToken());
          }
        }
        if (target && orPatterns.length === 1 && orPatterns[0].nodeType === 69 && orPatterns[0].isStar) {
          this._addError(localize_1.Localizer.Diagnostic.starPatternInAsPattern(), orPatterns[0]);
        }
        orPatterns.forEach((orPattern, index) => {
          if (index < orPatterns.length - 1 && this._isPatternIrrefutable(orPattern)) {
            this._addError(localize_1.Localizer.Diagnostic.orPatternIrrefutable(), orPattern);
          }
        });
        const fullNameMap = /* @__PURE__ */ new Map();
        orPatterns.forEach((orPattern) => {
          this._getPatternTargetNames(orPattern, fullNameMap);
        });
        orPatterns.forEach((orPattern) => {
          const localNameMap = /* @__PURE__ */ new Map();
          this._getPatternTargetNames(orPattern, localNameMap);
          if (localNameMap.size < fullNameMap.size) {
            const missingNames = Array.from(fullNameMap.keys()).filter((name) => !localNameMap.has(name));
            const diag = new diagnostic_1.DiagnosticAddendum();
            diag.addMessage(localize_1.Localizer.DiagnosticAddendum.orPatternMissingName().format({
              name: missingNames.map((name) => `"${name}"`).join(", ")
            }));
            this._addError(localize_1.Localizer.Diagnostic.orPatternMissingName() + diag.getString(), orPattern);
          }
        });
        return parseNodes_1.PatternAsNode.create(orPatterns, target);
      }
      // pattern_atom:
      //     | literal_pattern
      //     | name_or_attr
      //     | '(' as_pattern ')'
      //     | '[' [sequence_pattern] ']'
      //     | '(' [sequence_pattern] ')'
      //     | '{' [items_pattern] '}'
      //     | name_or_attr '(' [pattern_arguments ','?] ')'
      // name_or_attr: attr | NAME
      // attr: name_or_attr '.' NAME
      // sequence_pattern: ','.maybe_star_pattern+ ','?
      // maybe_star_pattern: '*' NAME | pattern
      // items_pattern: ','.key_value_pattern+ ','?
      _parsePatternAtom() {
        const patternLiteral = this._parsePatternLiteral();
        if (patternLiteral) {
          return patternLiteral;
        }
        const patternCaptureOrValue = this._parsePatternCaptureOrValue();
        if (patternCaptureOrValue) {
          const openParenToken = this._peekToken();
          if (patternCaptureOrValue.nodeType === 0 || !this._consumeTokenIfType(
            13
            /* OpenParenthesis */
          )) {
            return patternCaptureOrValue;
          }
          const args = this._parseClassPatternArgList();
          const classNameExpr = patternCaptureOrValue.nodeType === 69 ? patternCaptureOrValue.target : patternCaptureOrValue.expression;
          const classPattern = parseNodes_1.PatternClassNode.create(classNameExpr, args);
          if (!this._consumeTokenIfType(
            14
            /* CloseParenthesis */
          )) {
            this._addError(localize_1.Localizer.Diagnostic.expectedCloseParen(), openParenToken);
            this._consumeTokensUntilType([
              2
              /* NewLine */
            ]);
            (0, parseNodes_1.extendRange)(classPattern, this._peekToken());
          }
          return classPattern;
        }
        const nextToken = this._peekToken();
        const nextOperator = this._peekOperatorType();
        if (nextOperator === 26) {
          const starToken = this._getNextToken();
          const identifierToken = this._getTokenIfIdentifier();
          if (!identifierToken) {
            this._addError(localize_1.Localizer.Diagnostic.expectedIdentifier(), this._peekToken());
            return parseNodes_1.ErrorNode.create(
              starToken,
              2
              /* MissingExpression */
            );
          } else {
            return parseNodes_1.PatternCaptureNode.create(parseNodes_1.NameNode.create(identifierToken), starToken);
          }
        }
        if (nextToken.type === 13 || nextToken.type === 15) {
          const startToken = this._getNextToken();
          const patternList = this._parsePatternSequence();
          let casePattern;
          if (patternList.parseError) {
            casePattern = patternList.parseError;
          } else if (patternList.list.length === 1 && !patternList.trailingComma && startToken.type === 13) {
            const pattern = patternList.list[0].orPatterns[0];
            if (pattern.nodeType === 69 && pattern.isStar) {
              casePattern = parseNodes_1.PatternSequenceNode.create(startToken, patternList.list);
            } else {
              casePattern = patternList.list[0];
            }
            (0, parseNodes_1.extendRange)(casePattern, nextToken);
          } else {
            casePattern = parseNodes_1.PatternSequenceNode.create(startToken, patternList.list);
          }
          const endToken = this._peekToken();
          if (this._consumeTokenIfType(
            nextToken.type === 13 ? 14 : 16
            /* CloseBracket */
          )) {
            (0, parseNodes_1.extendRange)(casePattern, endToken);
          } else {
            this._addError(nextToken.type === 13 ? localize_1.Localizer.Diagnostic.expectedCloseParen() : localize_1.Localizer.Diagnostic.expectedCloseBracket(), nextToken);
            this._consumeTokensUntilType([
              10,
              nextToken.type === 13 ? 14 : 16
            ]);
          }
          return casePattern;
        } else if (nextToken.type === 17) {
          const firstToken = this._getNextToken();
          const mappingPattern = this._parsePatternMapping(firstToken);
          const lastToken = this._peekToken();
          if (this._consumeTokenIfType(
            18
            /* CloseCurlyBrace */
          )) {
            (0, parseNodes_1.extendRange)(mappingPattern, lastToken);
          } else {
            this._addError(localize_1.Localizer.Diagnostic.expectedCloseBrace(), nextToken);
            this._consumeTokensUntilType([
              10,
              18
              /* CloseCurlyBrace */
            ]);
          }
          return mappingPattern;
        }
        return this._handleExpressionParseError(11, localize_1.Localizer.Diagnostic.expectedPatternExpr());
      }
      // pattern_arguments:
      //     | positional_patterns [',' keyword_patterns]
      //     | keyword_patterns
      // positional_patterns: ','.as_pattern+
      // keyword_patterns: ','.keyword_pattern+
      _parseClassPatternArgList() {
        const argList = [];
        let sawKeywordArg = false;
        while (true) {
          const nextTokenType = this._peekTokenType();
          if (nextTokenType === 14 || nextTokenType === 2 || nextTokenType === 1) {
            break;
          }
          const arg = this._parseClassPatternArgument();
          if (arg.name) {
            sawKeywordArg = true;
          } else if (sawKeywordArg && !arg.name) {
            this._addError(localize_1.Localizer.Diagnostic.positionArgAfterNamedArg(), arg);
          }
          argList.push(arg);
          if (!this._consumeTokenIfType(
            12
            /* Comma */
          )) {
            break;
          }
        }
        return argList;
      }
      // keyword_pattern: NAME '=' as_pattern
      _parseClassPatternArgument() {
        const firstToken = this._peekToken();
        const secondToken = this._peekToken(1);
        let keywordName;
        if ((firstToken.type === 7 || firstToken.type === 8) && secondToken.type === 9 && secondToken.operatorType === 2) {
          this._getNextToken();
          keywordName = parseNodes_1.NameNode.create(firstToken);
          this._getNextToken();
        }
        const pattern = this._parsePatternAs();
        return parseNodes_1.PatternClassArgumentNode.create(pattern, keywordName);
      }
      // literal_pattern:
      //     | signed_number
      //     | signed_number '+' NUMBER
      //     | signed_number '-' NUMBER
      //     | strings
      //     | 'None'
      //     | 'True'
      //     | 'False'
      _parsePatternLiteral() {
        const nextToken = this._peekToken();
        const nextOperator = this._peekOperatorType();
        if (nextToken.type === 6 || nextOperator === 33) {
          return this._parsePatternLiteralNumber();
        }
        if (nextToken.type === 5) {
          const stringList = this._parseAtom();
          (0, debug_1.assert)(
            stringList.nodeType === 48
            /* StringList */
          );
          stringList.strings.forEach((stringAtom) => {
            if (stringAtom.token.flags & 64) {
              this._addError(localize_1.Localizer.Diagnostic.formatStringInPattern(), stringAtom);
            }
          });
          return parseNodes_1.PatternLiteralNode.create(stringList);
        }
        if (nextToken.type === 8) {
          const keywordToken = nextToken;
          if (keywordToken.keywordType === 15 || keywordToken.keywordType === 33 || keywordToken.keywordType === 26) {
            return parseNodes_1.PatternLiteralNode.create(this._parseAtom());
          }
        }
        return void 0;
      }
      // signed_number: NUMBER | '-' NUMBER
      _parsePatternLiteralNumber() {
        const expression = this._parseArithmeticExpression();
        let realValue;
        let imagValue;
        if (expression.nodeType === 7) {
          if (expression.operator === 33 || expression.operator === 0) {
            realValue = expression.leftExpression;
            imagValue = expression.rightExpression;
          }
        } else {
          realValue = expression;
        }
        if (realValue) {
          if (realValue.nodeType === 55 && realValue.operator === 33) {
            realValue = realValue.expression;
          }
          if (realValue.nodeType !== 40 || imagValue !== void 0 && realValue.isImaginary) {
            this._addError(localize_1.Localizer.Diagnostic.expectedComplexNumberLiteral(), expression);
            imagValue = void 0;
          }
        }
        if (imagValue) {
          if (imagValue.nodeType === 55 && imagValue.operator === 33) {
            imagValue = imagValue.expression;
          }
          if (imagValue.nodeType !== 40 || !imagValue.isImaginary) {
            this._addError(localize_1.Localizer.Diagnostic.expectedComplexNumberLiteral(), expression);
          }
        }
        return parseNodes_1.PatternLiteralNode.create(expression);
      }
      _parsePatternMapping(firstToken) {
        const itemList = this._parseExpressionListGeneric(() => this._parsePatternMappingItem());
        if (itemList.list.length > 0) {
          const starStarEntries = itemList.list.filter(
            (entry) => entry.nodeType === 72
            /* PatternMappingExpandEntry */
          );
          if (starStarEntries.length > 1) {
            this._addError(localize_1.Localizer.Diagnostic.duplicateStarStarPattern(), starStarEntries[1]);
          }
          return parseNodes_1.PatternMappingNode.create(firstToken, itemList.list);
        }
        return itemList.parseError || parseNodes_1.ErrorNode.create(
          this._peekToken(),
          11
          /* MissingPattern */
        );
      }
      // key_value_pattern:
      //     | (literal_pattern | attr) ':' as_pattern
      //     | '**' NAME
      _parsePatternMappingItem() {
        let keyExpression;
        const doubleStar = this._peekToken();
        if (this._consumeTokenIfOperator(
          29
          /* Power */
        )) {
          const identifierToken = this._getTokenIfIdentifier();
          if (!identifierToken) {
            this._addError(localize_1.Localizer.Diagnostic.expectedIdentifier(), this._peekToken());
            return parseNodes_1.ErrorNode.create(
              this._peekToken(),
              11
              /* MissingPattern */
            );
          }
          const nameNode = parseNodes_1.NameNode.create(identifierToken);
          if (identifierToken.value === "_") {
            this._addError(localize_1.Localizer.Diagnostic.starStarWildcardNotAllowed(), nameNode);
          }
          return parseNodes_1.PatternMappingExpandEntryNode.create(doubleStar, nameNode);
        }
        const patternLiteral = this._parsePatternLiteral();
        if (patternLiteral) {
          keyExpression = patternLiteral;
        } else {
          const patternCaptureOrValue = this._parsePatternCaptureOrValue();
          if (patternCaptureOrValue) {
            if (patternCaptureOrValue.nodeType === 73) {
              keyExpression = patternCaptureOrValue;
            } else {
              this._addError(localize_1.Localizer.Diagnostic.expectedPatternValue(), patternCaptureOrValue);
              keyExpression = parseNodes_1.ErrorNode.create(
                this._peekToken(),
                11
                /* MissingPattern */
              );
            }
          }
        }
        if (!keyExpression) {
          this._addError(localize_1.Localizer.Diagnostic.expectedPatternExpr(), this._peekToken());
          keyExpression = parseNodes_1.ErrorNode.create(
            this._peekToken(),
            11
            /* MissingPattern */
          );
        }
        let valuePattern;
        if (!this._consumeTokenIfType(
          10
          /* Colon */
        )) {
          this._addError(localize_1.Localizer.Diagnostic.expectedColon(), this._peekToken());
          valuePattern = parseNodes_1.ErrorNode.create(
            this._peekToken(),
            11
            /* MissingPattern */
          );
        } else {
          valuePattern = this._parsePatternAs();
        }
        return parseNodes_1.PatternMappingKeyEntryNode.create(keyExpression, valuePattern);
      }
      _parsePatternCaptureOrValue() {
        const nextToken = this._peekToken();
        if (nextToken.type === 7 || nextToken.type === 8) {
          let nameOrMember;
          while (true) {
            const identifierToken = this._getTokenIfIdentifier();
            if (identifierToken) {
              const nameNode = parseNodes_1.NameNode.create(identifierToken);
              nameOrMember = nameOrMember ? parseNodes_1.MemberAccessNode.create(nameOrMember, nameNode) : nameNode;
            } else {
              this._addError(localize_1.Localizer.Diagnostic.expectedIdentifier(), this._peekToken());
              break;
            }
            if (!this._consumeTokenIfType(
              20
              /* Dot */
            )) {
              break;
            }
          }
          if (!nameOrMember) {
            this._addError(localize_1.Localizer.Diagnostic.expectedIdentifier(), this._peekToken());
            return parseNodes_1.ErrorNode.create(
              this._peekToken(),
              11
              /* MissingPattern */
            );
          }
          if (nameOrMember.nodeType === 35) {
            return parseNodes_1.PatternValueNode.create(nameOrMember);
          }
          return parseNodes_1.PatternCaptureNode.create(nameOrMember);
        }
        return void 0;
      }
      // if_stmt: 'if' test_suite ('elif' test_suite)* ['else' suite]
      // test_suite: test suite
      // test: or_test ['if' or_test 'else' test] | lambdef
      _parseIfStatement(keywordType = 20) {
        const ifOrElifToken = this._getKeywordToken(keywordType);
        const test = this._parseTestExpression(
          /* allowAssignmentExpression */
          true
        );
        const suite = this._parseSuite(this._isInFunction);
        const ifNode = parseNodes_1.IfNode.create(ifOrElifToken, test, suite);
        if (this._consumeTokenIfKeyword(
          13
          /* Else */
        )) {
          ifNode.elseSuite = this._parseSuite(this._isInFunction);
          ifNode.elseSuite.parent = ifNode;
          (0, parseNodes_1.extendRange)(ifNode, ifNode.elseSuite);
        } else if (this._peekKeywordType() === 12) {
          ifNode.elseSuite = this._parseIfStatement(
            12
            /* Elif */
          );
          ifNode.elseSuite.parent = ifNode;
          (0, parseNodes_1.extendRange)(ifNode, ifNode.elseSuite);
        }
        return ifNode;
      }
      _parseLoopSuite() {
        const wasInLoop = this._isInLoop;
        const wasInFinally = this._isInFinally;
        this._isInLoop = true;
        this._isInFinally = false;
        let typeComment;
        const suite = this._parseSuite(
          this._isInFunction,
          /* skipBody */
          false,
          () => {
            const comment = this._getTypeAnnotationCommentText();
            if (comment) {
              typeComment = comment;
            }
          }
        );
        this._isInLoop = wasInLoop;
        this._isInFinally = wasInFinally;
        if (typeComment) {
          suite.typeComment = typeComment;
        }
        return suite;
      }
      // suite: ':' (simple_stmt | NEWLINE INDENT stmt+ DEDENT)
      _parseSuite(isFunction = false, skipBody = false, postColonCallback) {
        const nextToken = this._peekToken();
        const suite = parseNodes_1.SuiteNode.create(nextToken);
        if (!this._consumeTokenIfType(
          10
          /* Colon */
        )) {
          this._addError(localize_1.Localizer.Diagnostic.expectedColon(), nextToken);
          if (this._consumeTokensUntilType([
            2,
            10
            /* Colon */
          ])) {
            if (this._peekTokenType() === 10) {
              this._getNextToken();
            } else if (this._peekToken(1).type !== 3) {
              this._getNextToken();
              return suite;
            }
          }
        }
        if (skipBody) {
          if (this._consumeTokenIfType(
            2
            /* NewLine */
          )) {
            let indent = 0;
            while (true) {
              const nextToken2 = this._getNextToken();
              if (nextToken2.type === 3) {
                indent++;
              }
              if (nextToken2.type === 4) {
                if (nextToken2.isDedentAmbiguous) {
                  this._addError(localize_1.Localizer.Diagnostic.inconsistentTabs(), nextToken2);
                }
                indent--;
                if (indent === 0) {
                  break;
                }
              }
              if (nextToken2.type === 1) {
                break;
              }
            }
          } else {
            this._parseSimpleStatement();
          }
          if (this._tokenIndex > 0) {
            (0, parseNodes_1.extendRange)(suite, this._tokenizerOutput.tokens.getItemAt(this._tokenIndex - 1));
          }
          return suite;
        }
        if (postColonCallback) {
          postColonCallback();
        }
        const wasFunction = this._isInFunction;
        this._isInFunction = isFunction;
        if (this._consumeTokenIfType(
          2
          /* NewLine */
        )) {
          if (postColonCallback) {
            postColonCallback();
          }
          const possibleIndent = this._peekToken();
          if (!this._consumeTokenIfType(
            3
            /* Indent */
          )) {
            this._addError(localize_1.Localizer.Diagnostic.expectedIndentedBlock(), this._peekToken());
          } else {
            const indentToken = possibleIndent;
            if (indentToken.isIndentAmbiguous) {
              this._addError(localize_1.Localizer.Diagnostic.inconsistentTabs(), indentToken);
            }
          }
          while (true) {
            const nextToken2 = this._peekToken();
            if (nextToken2.type === 3) {
              this._getNextToken();
              const indentToken = nextToken2;
              if (indentToken.isIndentAmbiguous) {
                this._addError(localize_1.Localizer.Diagnostic.inconsistentTabs(), indentToken);
              } else {
                this._addError(localize_1.Localizer.Diagnostic.unexpectedIndent(), nextToken2);
              }
            }
            const statement = this._parseStatement();
            if (!statement) {
              this._consumeTokensUntilType([
                2
                /* NewLine */
              ]);
            } else {
              statement.parent = suite;
              suite.statements.push(statement);
            }
            const dedentToken = this._peekToken();
            if (this._consumeTokenIfType(
              4
              /* Dedent */
            )) {
              if (!dedentToken.matchesIndent) {
                this._addError(localize_1.Localizer.Diagnostic.inconsistentIndent(), dedentToken);
              }
              if (dedentToken.isDedentAmbiguous) {
                this._addError(localize_1.Localizer.Diagnostic.inconsistentTabs(), dedentToken);
              }
              break;
            }
            if (this._peekTokenType() === 1) {
              break;
            }
          }
        } else {
          const simpleStatement = this._parseSimpleStatement();
          suite.statements.push(simpleStatement);
          simpleStatement.parent = suite;
        }
        if (suite.statements.length > 0) {
          (0, parseNodes_1.extendRange)(suite, suite.statements[suite.statements.length - 1]);
        }
        this._isInFunction = wasFunction;
        return suite;
      }
      // for_stmt: [async] 'for' exprlist 'in' testlist suite ['else' suite]
      _parseForStatement(asyncToken) {
        const forToken = this._getKeywordToken(
          17
          /* For */
        );
        const targetExpr = this._parseExpressionListAsPossibleTuple(2, localize_1.Localizer.Diagnostic.expectedExpr(), forToken);
        let seqExpr;
        let forSuite;
        let elseSuite;
        if (!this._consumeTokenIfKeyword(
          22
          /* In */
        )) {
          seqExpr = this._handleExpressionParseError(0, localize_1.Localizer.Diagnostic.expectedIn());
          forSuite = parseNodes_1.SuiteNode.create(this._peekToken());
        } else {
          seqExpr = this._parseTestOrStarListAsExpression(
            /* allowAssignmentExpression */
            false,
            /* allowMultipleUnpack */
            true,
            2,
            localize_1.Localizer.Diagnostic.expectedInExpr()
          );
          forSuite = this._parseLoopSuite();
          if (this._getLanguageVersion() < pythonVersion_1.PythonVersion.V3_9 && !this._parseOptions.isStubFile) {
            if (seqExpr.nodeType === 52 && !seqExpr.enclosedInParens) {
              let sawStar = false;
              seqExpr.expressions.forEach((expr) => {
                if (expr.nodeType === 56 && !sawStar) {
                  this._addError(localize_1.Localizer.Diagnostic.unpackOperatorNotAllowed(), expr);
                  sawStar = true;
                }
              });
            }
          }
          if (this._consumeTokenIfKeyword(
            13
            /* Else */
          )) {
            elseSuite = this._parseSuite(this._isInFunction);
          }
        }
        const forNode = parseNodes_1.ForNode.create(forToken, targetExpr, seqExpr, forSuite);
        forNode.elseSuite = elseSuite;
        if (elseSuite) {
          (0, parseNodes_1.extendRange)(forNode, elseSuite);
          elseSuite.parent = forNode;
        }
        if (asyncToken) {
          forNode.isAsync = true;
          forNode.asyncToken = asyncToken;
          (0, parseNodes_1.extendRange)(forNode, asyncToken);
        }
        if (forSuite.typeComment) {
          forNode.typeComment = forSuite.typeComment;
        }
        return forNode;
      }
      // comp_iter: comp_for | comp_if
      _tryParseListComprehension(target) {
        const compFor = this._tryParseCompForStatement();
        if (!compFor) {
          return void 0;
        }
        if (target.nodeType === 56) {
          this._addError(localize_1.Localizer.Diagnostic.unpackIllegalInComprehension(), target);
        } else if (target.nodeType === 16) {
          this._addError(localize_1.Localizer.Diagnostic.dictExpandIllegalInComprehension(), target);
        }
        const listCompNode = parseNodes_1.ListComprehensionNode.create(target);
        const forIfList = [compFor];
        while (true) {
          const compIter = this._tryParseCompForStatement() || this._tryParseCompIfStatement();
          if (!compIter) {
            break;
          }
          compIter.parent = listCompNode;
          forIfList.push(compIter);
        }
        listCompNode.forIfNodes = forIfList;
        if (forIfList.length > 0) {
          forIfList.forEach((comp) => {
            comp.parent = listCompNode;
          });
          (0, parseNodes_1.extendRange)(listCompNode, forIfList[forIfList.length - 1]);
        }
        return listCompNode;
      }
      // comp_for: ['async'] 'for' exprlist 'in' or_test [comp_iter]
      _tryParseCompForStatement() {
        const startTokenKeywordType = this._peekKeywordType();
        if (startTokenKeywordType === 3) {
          const nextToken = this._peekToken(1);
          if (nextToken.type !== 8 || nextToken.keywordType !== 17) {
            return void 0;
          }
        } else if (startTokenKeywordType !== 17) {
          return void 0;
        }
        let asyncToken;
        if (this._peekKeywordType() === 3) {
          asyncToken = this._getKeywordToken(
            3
            /* Async */
          );
        }
        const forToken = this._getKeywordToken(
          17
          /* For */
        );
        const targetExpr = this._parseExpressionListAsPossibleTuple(2, localize_1.Localizer.Diagnostic.expectedExpr(), forToken);
        let seqExpr;
        if (!this._consumeTokenIfKeyword(
          22
          /* In */
        )) {
          seqExpr = this._handleExpressionParseError(0, localize_1.Localizer.Diagnostic.expectedIn());
        } else {
          this._disallowAssignmentExpression(() => {
            seqExpr = this._parseOrTest();
          });
        }
        const compForNode = parseNodes_1.ListComprehensionForNode.create(asyncToken || forToken, targetExpr, seqExpr);
        if (asyncToken) {
          compForNode.isAsync = true;
          compForNode.asyncToken = asyncToken;
        }
        return compForNode;
      }
      // comp_if: 'if' test_nocond [comp_iter]
      // comp_iter: comp_for | comp_if
      _tryParseCompIfStatement() {
        if (this._peekKeywordType() !== 20) {
          return void 0;
        }
        const ifToken = this._getKeywordToken(
          20
          /* If */
        );
        const ifExpr = this._tryParseLambdaExpression() || this._parseAssignmentExpression(
          /* disallowAssignmentExpression */
          true
        );
        const compIfNode = parseNodes_1.ListComprehensionIfNode.create(ifToken, ifExpr);
        return compIfNode;
      }
      // while_stmt: 'while' test suite ['else' suite]
      _parseWhileStatement() {
        const whileToken = this._getKeywordToken(
          35
          /* While */
        );
        const whileNode = parseNodes_1.WhileNode.create(whileToken, this._parseTestExpression(
          /* allowAssignmentExpression */
          true
        ), this._parseLoopSuite());
        if (this._consumeTokenIfKeyword(
          13
          /* Else */
        )) {
          whileNode.elseSuite = this._parseSuite(this._isInFunction);
          whileNode.elseSuite.parent = whileNode;
          (0, parseNodes_1.extendRange)(whileNode, whileNode.elseSuite);
        }
        return whileNode;
      }
      // try_stmt: ('try' suite
      //         ((except_clause suite)+
      //             ['else' suite]
      //             ['finally' suite] |
      //         'finally' suite))
      // except_clause: 'except' [test ['as' NAME]]
      _parseTryStatement() {
        const tryToken = this._getKeywordToken(
          34
          /* Try */
        );
        const trySuite = this._parseSuite(this._isInFunction);
        const tryNode = parseNodes_1.TryNode.create(tryToken, trySuite);
        let sawCatchAllExcept = false;
        while (true) {
          const exceptToken = this._peekToken();
          if (!this._consumeTokenIfKeyword(
            14
            /* Except */
          )) {
            break;
          }
          const possibleStarToken = this._peekToken();
          let isExceptGroup = false;
          if (this._consumeTokenIfOperator(
            26
            /* Multiply */
          )) {
            if (this._getLanguageVersion() < pythonVersion_1.PythonVersion.V3_11 && !this._parseOptions.isStubFile) {
              this._addError(localize_1.Localizer.Diagnostic.exceptionGroupIncompatible(), possibleStarToken);
            }
            isExceptGroup = true;
          }
          let typeExpr;
          let symbolName;
          if (this._peekTokenType() !== 10) {
            typeExpr = this._parseTestExpression(
              /* allowAssignmentExpression */
              true
            );
            if (this._consumeTokenIfKeyword(
              1
              /* As */
            )) {
              symbolName = this._getTokenIfIdentifier();
              if (!symbolName) {
                this._addError(localize_1.Localizer.Diagnostic.expectedNameAfterAs(), this._peekToken());
              }
            } else {
              const peekToken = this._peekToken();
              if (this._consumeTokenIfType(
                12
                /* Comma */
              )) {
                this._addError(localize_1.Localizer.Diagnostic.expectedAsAfterException(), peekToken);
                this._parseTestExpression(
                  /* allowAssignmentExpression */
                  false
                );
              }
            }
          }
          if (!typeExpr) {
            if (sawCatchAllExcept) {
              this._addError(localize_1.Localizer.Diagnostic.duplicateCatchAll(), exceptToken);
            }
            sawCatchAllExcept = true;
          } else {
            if (sawCatchAllExcept) {
              this._addError(localize_1.Localizer.Diagnostic.namedExceptAfterCatchAll(), typeExpr);
            }
          }
          const exceptSuite = this._parseSuite(this._isInFunction);
          const exceptNode = parseNodes_1.ExceptNode.create(exceptToken, exceptSuite, isExceptGroup);
          if (typeExpr) {
            exceptNode.typeExpression = typeExpr;
            exceptNode.typeExpression.parent = exceptNode;
          }
          if (symbolName) {
            exceptNode.name = parseNodes_1.NameNode.create(symbolName);
            exceptNode.name.parent = exceptNode;
          }
          tryNode.exceptClauses.push(exceptNode);
          exceptNode.parent = tryNode;
        }
        if (tryNode.exceptClauses.length > 0) {
          (0, parseNodes_1.extendRange)(tryNode, tryNode.exceptClauses[tryNode.exceptClauses.length - 1]);
          if (this._consumeTokenIfKeyword(
            13
            /* Else */
          )) {
            tryNode.elseSuite = this._parseSuite(this._isInFunction);
            tryNode.elseSuite.parent = tryNode;
            (0, parseNodes_1.extendRange)(tryNode, tryNode.elseSuite);
          }
        }
        if (this._consumeTokenIfKeyword(
          16
          /* Finally */
        )) {
          tryNode.finallySuite = this._parseSuite(this._isInFunction);
          tryNode.finallySuite.parent = tryNode;
          (0, parseNodes_1.extendRange)(tryNode, tryNode.finallySuite);
        }
        if (!tryNode.finallySuite && tryNode.exceptClauses.length === 0) {
          this._addError(localize_1.Localizer.Diagnostic.tryWithoutExcept(), tryToken);
        }
        return tryNode;
      }
      // funcdef: 'def' NAME parameters ['->' test] ':' suite
      // parameters: '(' [typedargslist] ')'
      _parseFunctionDef(asyncToken, decorators) {
        const defToken = this._getKeywordToken(
          10
          /* Def */
        );
        const nameToken = this._getTokenIfIdentifier();
        if (!nameToken) {
          this._addError(localize_1.Localizer.Diagnostic.expectedFunctionName(), defToken);
          return parseNodes_1.ErrorNode.create(defToken, 10, void 0, decorators);
        }
        const openParenToken = this._peekToken();
        if (!this._consumeTokenIfType(
          13
          /* OpenParenthesis */
        )) {
          this._addError(localize_1.Localizer.Diagnostic.expectedOpenParen(), this._peekToken());
          return parseNodes_1.ErrorNode.create(nameToken, 10, parseNodes_1.NameNode.create(nameToken), decorators);
        }
        const paramList = this._parseVarArgsList(
          14,
          /* allowAnnotations */
          true
        );
        if (!this._consumeTokenIfType(
          14
          /* CloseParenthesis */
        )) {
          this._addError(localize_1.Localizer.Diagnostic.expectedCloseParen(), openParenToken);
          this._consumeTokensUntilType([
            10
            /* Colon */
          ]);
        }
        let returnType;
        if (this._consumeTokenIfType(
          21
          /* Arrow */
        )) {
          returnType = this._parseTypeAnnotation();
        }
        let functionTypeAnnotationToken;
        const suite = this._parseSuite(
          /* isFunction */
          true,
          this._parseOptions.skipFunctionAndClassBody,
          () => {
            if (!functionTypeAnnotationToken) {
              functionTypeAnnotationToken = this._getTypeAnnotationCommentText();
            }
          }
        );
        const functionNode = parseNodes_1.FunctionNode.create(defToken, parseNodes_1.NameNode.create(nameToken), suite);
        if (asyncToken) {
          functionNode.isAsync = true;
          (0, parseNodes_1.extendRange)(functionNode, asyncToken);
        }
        functionNode.parameters = paramList;
        paramList.forEach((param) => {
          param.parent = functionNode;
        });
        if (decorators) {
          functionNode.decorators = decorators;
          decorators.forEach((decorator) => {
            decorator.parent = functionNode;
          });
          if (decorators.length > 0) {
            (0, parseNodes_1.extendRange)(functionNode, decorators[0]);
          }
        }
        if (returnType) {
          functionNode.returnTypeAnnotation = returnType;
          functionNode.returnTypeAnnotation.parent = functionNode;
          (0, parseNodes_1.extendRange)(functionNode, returnType);
        }
        if (functionTypeAnnotationToken) {
          this._parseFunctionTypeAnnotationComment(functionTypeAnnotationToken, functionNode);
        }
        return functionNode;
      }
      // typedargslist: (
      //   tfpdef ['=' test] (',' tfpdef ['=' test])*
      //      [ ','
      //          [
      //              '*' [tfpdef] (',' tfpdef ['=' test])* [',' ['**' tfpdef [',']]]
      //              | '**' tfpdef [',']
      //          ]
      //      ]
      //   | '*' [tfpdef] (',' tfpdef ['=' test])* [',' ['**' tfpdef [',']]]
      //   | '**' tfpdef [','])
      // tfpdef: NAME [':' test]
      // vfpdef: NAME;
      _parseVarArgsList(terminator, allowAnnotations) {
        const paramMap = /* @__PURE__ */ new Map();
        const paramList = [];
        let sawDefaultParam = false;
        let reportedNonDefaultParamErr = false;
        let sawKeywordOnlySeparator = false;
        let sawPositionOnlySeparator = false;
        let sawArgs = false;
        let sawKwArgs = false;
        while (true) {
          if (this._peekTokenType() === terminator) {
            break;
          }
          const param = this._parseParameter(allowAnnotations);
          if (!param) {
            this._consumeTokensUntilType([terminator]);
            break;
          }
          if (param.name) {
            const name = param.name.value;
            if (paramMap.has(name)) {
              this._addError(localize_1.Localizer.Diagnostic.duplicateParam().format({ name }), param.name);
            } else {
              paramMap.set(name, name);
            }
          } else if (param.category === 0) {
            if (paramList.length === 0) {
              this._addError(localize_1.Localizer.Diagnostic.positionOnlyFirstParam(), param);
            }
          }
          if (param.category === 0) {
            if (!param.name) {
              if (sawPositionOnlySeparator) {
                this._addError(localize_1.Localizer.Diagnostic.duplicatePositionOnly(), param);
              } else if (sawKeywordOnlySeparator) {
                this._addError(localize_1.Localizer.Diagnostic.positionOnlyAfterKeywordOnly(), param);
              } else if (sawArgs) {
                this._addError(localize_1.Localizer.Diagnostic.positionOnlyAfterArgs(), param);
              }
              sawPositionOnlySeparator = true;
            } else {
              if (param.defaultValue) {
                sawDefaultParam = true;
              } else if (sawDefaultParam && !sawKeywordOnlySeparator && !sawArgs) {
                if (!reportedNonDefaultParamErr) {
                  this._addError(localize_1.Localizer.Diagnostic.nonDefaultAfterDefault(), param);
                  reportedNonDefaultParamErr = true;
                }
              }
            }
          }
          paramList.push(param);
          if (param.category === 1) {
            if (!param.name) {
              if (sawKeywordOnlySeparator) {
                this._addError(localize_1.Localizer.Diagnostic.duplicateKeywordOnly(), param);
              } else if (sawArgs) {
                this._addError(localize_1.Localizer.Diagnostic.keywordOnlyAfterArgs(), param);
              }
              sawKeywordOnlySeparator = true;
            } else {
              if (sawKeywordOnlySeparator || sawArgs) {
                this._addError(localize_1.Localizer.Diagnostic.duplicateArgsParam(), param);
              }
              sawArgs = true;
            }
          }
          if (param.category === 2) {
            if (sawKwArgs) {
              this._addError(localize_1.Localizer.Diagnostic.duplicateKwargsParam(), param);
            }
            sawKwArgs = true;
          } else if (sawKwArgs) {
            this._addError(localize_1.Localizer.Diagnostic.paramAfterKwargsParam(), param);
          }
          const foundComma = this._consumeTokenIfType(
            12
            /* Comma */
          );
          if (allowAnnotations && !param.typeAnnotation) {
            const typeAnnotationComment = this._parseVariableTypeAnnotationComment();
            if (typeAnnotationComment) {
              param.typeAnnotationComment = typeAnnotationComment;
              param.typeAnnotationComment.parent = param;
              (0, parseNodes_1.extendRange)(param, param.typeAnnotationComment);
            }
          }
          if (!foundComma) {
            break;
          }
        }
        if (paramList.length > 0) {
          const lastParam = paramList[paramList.length - 1];
          if (lastParam.category === 1 && !lastParam.name) {
            this._addError(localize_1.Localizer.Diagnostic.expectedNamedParameter(), lastParam);
          }
        }
        return paramList;
      }
      _parseParameter(allowAnnotations) {
        let starCount = 0;
        let slashCount = 0;
        const firstToken = this._peekToken();
        if (this._consumeTokenIfOperator(
          26
          /* Multiply */
        )) {
          starCount = 1;
        } else if (this._consumeTokenIfOperator(
          29
          /* Power */
        )) {
          starCount = 2;
        } else if (this._consumeTokenIfOperator(
          10
          /* Divide */
        )) {
          if (this._getLanguageVersion() < pythonVersion_1.PythonVersion.V3_8 && !this._parseOptions.isStubFile) {
            this._addError(localize_1.Localizer.Diagnostic.positionOnlyIncompatible(), firstToken);
          }
          slashCount = 1;
        }
        const paramName = this._getTokenIfIdentifier();
        if (!paramName) {
          if (starCount === 1) {
            const paramNode2 = parseNodes_1.ParameterNode.create(
              firstToken,
              1
              /* VarArgList */
            );
            return paramNode2;
          } else if (slashCount === 1) {
            const paramNode2 = parseNodes_1.ParameterNode.create(
              firstToken,
              0
              /* Simple */
            );
            return paramNode2;
          }
          if (this._peekTokenType() === 13) {
            const sublistStart = this._getNextToken();
            if (this._consumeTokensUntilType([
              14
              /* CloseParenthesis */
            ])) {
              this._getNextToken();
            }
            this._addError(localize_1.Localizer.Diagnostic.sublistParamsIncompatible(), sublistStart);
          } else {
            this._addError(localize_1.Localizer.Diagnostic.expectedParamName(), this._peekToken());
          }
        }
        let paramType = 0;
        if (starCount === 1) {
          paramType = 1;
        } else if (starCount === 2) {
          paramType = 2;
        }
        const paramNode = parseNodes_1.ParameterNode.create(firstToken, paramType);
        if (paramName) {
          paramNode.name = parseNodes_1.NameNode.create(paramName);
          paramNode.name.parent = paramNode;
          (0, parseNodes_1.extendRange)(paramNode, paramName);
        }
        if (allowAnnotations && this._consumeTokenIfType(
          10
          /* Colon */
        )) {
          paramNode.typeAnnotation = this._parseTypeAnnotation(
            paramType === 1
            /* VarArgList */
          );
          paramNode.typeAnnotation.parent = paramNode;
          (0, parseNodes_1.extendRange)(paramNode, paramNode.typeAnnotation);
        }
        if (this._consumeTokenIfOperator(
          2
          /* Assign */
        )) {
          paramNode.defaultValue = this._parseTestExpression(
            /* allowAssignmentExpression */
            false
          );
          paramNode.defaultValue.parent = paramNode;
          (0, parseNodes_1.extendRange)(paramNode, paramNode.defaultValue);
          if (starCount > 0) {
            this._addError(localize_1.Localizer.Diagnostic.defaultValueNotAllowed(), paramNode.defaultValue);
          }
        }
        return paramNode;
      }
      // with_stmt: 'with' with_item (',' with_item)*  ':' suite
      // Python 3.10 adds support for optional parentheses around
      // with_item list.
      _parseWithStatement(asyncToken) {
        const withToken = this._getKeywordToken(
          36
          /* With */
        );
        let withItemList = [];
        const possibleParen = this._peekToken();
        let isParenthesizedWithItemList = false;
        if (possibleParen.type === 13) {
          const openParenTokenIndex = this._tokenIndex;
          this._suppressErrors(() => {
            this._getNextToken();
            while (true) {
              withItemList.push(this._parseWithItem());
              if (!this._consumeTokenIfType(
                12
                /* Comma */
              )) {
                break;
              }
              if (this._peekToken().type === 14) {
                break;
              }
            }
            if (this._peekToken().type === 14 && this._peekToken(1).type === 10) {
              isParenthesizedWithItemList = withItemList.length !== 1 || withItemList[0].target !== void 0;
            }
            this._tokenIndex = openParenTokenIndex;
            withItemList = [];
          });
        }
        if (isParenthesizedWithItemList) {
          this._consumeTokenIfType(
            13
            /* OpenParenthesis */
          );
          if (this._getLanguageVersion() < pythonVersion_1.PythonVersion.V3_9) {
            this._addError(localize_1.Localizer.Diagnostic.parenthesizedContextManagerIllegal(), possibleParen);
          }
        }
        while (true) {
          withItemList.push(this._parseWithItem());
          if (!this._consumeTokenIfType(
            12
            /* Comma */
          )) {
            break;
          }
          if (this._peekToken().type === 14) {
            break;
          }
        }
        if (isParenthesizedWithItemList) {
          if (!this._consumeTokenIfType(
            14
            /* CloseParenthesis */
          )) {
            this._addError(localize_1.Localizer.Diagnostic.expectedCloseParen(), possibleParen);
          }
        }
        let typeComment;
        const withSuite = this._parseSuite(
          this._isInFunction,
          /* skipBody */
          false,
          () => {
            const comment = this._getTypeAnnotationCommentText();
            if (comment) {
              typeComment = comment;
            }
          }
        );
        const withNode = parseNodes_1.WithNode.create(withToken, withSuite);
        if (asyncToken) {
          withNode.isAsync = true;
          withNode.asyncToken = asyncToken;
          (0, parseNodes_1.extendRange)(withNode, asyncToken);
        }
        if (typeComment) {
          withNode.typeComment = typeComment;
        }
        withNode.withItems = withItemList;
        withItemList.forEach((withItem) => {
          withItem.parent = withNode;
        });
        return withNode;
      }
      // with_item: test ['as' expr]
      _parseWithItem() {
        const expr = this._parseTestExpression(
          /* allowAssignmentExpression */
          true
        );
        const itemNode = parseNodes_1.WithItemNode.create(expr);
        if (this._consumeTokenIfKeyword(
          1
          /* As */
        )) {
          itemNode.target = this._parseExpression(
            /* allowUnpack */
            false
          );
          itemNode.target.parent = itemNode;
          (0, parseNodes_1.extendRange)(itemNode, itemNode.target);
        }
        return itemNode;
      }
      // decorators: decorator+
      // decorated: decorators (classdef | funcdef | async_funcdef)
      _parseDecorated() {
        const decoratorList = [];
        while (true) {
          if (this._peekOperatorType() === 22) {
            decoratorList.push(this._parseDecorator());
          } else {
            break;
          }
        }
        const nextToken = this._peekToken();
        if (nextToken.type === 8) {
          if (nextToken.keywordType === 3) {
            this._getNextToken();
            if (this._peekKeywordType() !== 10) {
              this._addError(localize_1.Localizer.Diagnostic.expectedFunctionAfterAsync(), this._peekToken());
            } else {
              return this._parseFunctionDef(nextToken, decoratorList);
            }
          } else if (nextToken.keywordType === 10) {
            return this._parseFunctionDef(void 0, decoratorList);
          } else if (nextToken.keywordType === 7) {
            return this._parseClassDef(decoratorList);
          }
        }
        this._addError(localize_1.Localizer.Diagnostic.expectedAfterDecorator(), this._peekToken());
        return parseNodes_1.ClassNode.createDummyForDecorators(decoratorList);
      }
      // decorator: '@' dotted_name [ '(' [arglist] ')' ] NEWLINE
      _parseDecorator() {
        const atOperator = this._getNextToken();
        (0, debug_1.assert)(
          atOperator.operatorType === 22
          /* MatrixMultiply */
        );
        const expression = this._parseTestExpression(
          /* allowAssignmentExpression */
          true
        );
        if (this._getLanguageVersion() < pythonVersion_1.PythonVersion.V3_9) {
          let isSupportedExpressionForm = false;
          if (this._isNameOrMemberAccessExpression(expression)) {
            isSupportedExpressionForm = true;
          } else if (expression.nodeType === 9 && this._isNameOrMemberAccessExpression(expression.leftExpression)) {
            isSupportedExpressionForm = true;
          }
          if (!isSupportedExpressionForm) {
            this._addError(localize_1.Localizer.Diagnostic.expectedDecoratorExpr(), expression);
          }
        }
        const decoratorNode = parseNodes_1.DecoratorNode.create(atOperator, expression);
        if (!this._consumeTokenIfType(
          2
          /* NewLine */
        )) {
          this._addError(localize_1.Localizer.Diagnostic.expectedDecoratorNewline(), this._peekToken());
          this._consumeTokensUntilType([
            2
            /* NewLine */
          ]);
        }
        return decoratorNode;
      }
      _isNameOrMemberAccessExpression(expression) {
        if (expression.nodeType === 38) {
          return true;
        } else if (expression.nodeType === 35) {
          return this._isNameOrMemberAccessExpression(expression.leftExpression);
        }
        return false;
      }
      // classdef: 'class' NAME ['(' [arglist] ')'] suite
      _parseClassDef(decorators) {
        const classToken = this._getKeywordToken(
          7
          /* Class */
        );
        let nameToken = this._getTokenIfIdentifier();
        if (!nameToken) {
          this._addError(localize_1.Localizer.Diagnostic.expectedClassName(), this._peekToken());
          nameToken = tokenizerTypes_1.IdentifierToken.create(
            0,
            0,
            "",
            /* comments */
            void 0
          );
        }
        let argList = [];
        const openParenToken = this._peekToken();
        if (this._consumeTokenIfType(
          13
          /* OpenParenthesis */
        )) {
          argList = this._parseArgList().args;
          if (!this._consumeTokenIfType(
            14
            /* CloseParenthesis */
          )) {
            this._addError(localize_1.Localizer.Diagnostic.expectedCloseParen(), openParenToken);
          }
        }
        const suite = this._parseSuite(
          /* isFunction */
          false,
          this._parseOptions.skipFunctionAndClassBody
        );
        const classNode = parseNodes_1.ClassNode.create(classToken, parseNodes_1.NameNode.create(nameToken), suite);
        classNode.arguments = argList;
        argList.forEach((arg) => {
          arg.parent = classNode;
        });
        if (decorators) {
          classNode.decorators = decorators;
          if (decorators.length > 0) {
            decorators.forEach((decorator) => {
              decorator.parent = classNode;
            });
            (0, parseNodes_1.extendRange)(classNode, decorators[0]);
          }
        }
        return classNode;
      }
      _parsePassStatement() {
        return parseNodes_1.PassNode.create(this._getKeywordToken(
          30
          /* Pass */
        ));
      }
      _parseBreakStatement() {
        const breakToken = this._getKeywordToken(
          5
          /* Break */
        );
        if (!this._isInLoop) {
          this._addError(localize_1.Localizer.Diagnostic.breakOutsideLoop(), breakToken);
        }
        return parseNodes_1.BreakNode.create(breakToken);
      }
      _parseContinueStatement() {
        const continueToken = this._getKeywordToken(
          8
          /* Continue */
        );
        if (!this._isInLoop) {
          this._addError(localize_1.Localizer.Diagnostic.continueOutsideLoop(), continueToken);
        } else if (this._isInFinally) {
          this._addError(localize_1.Localizer.Diagnostic.continueInFinally(), continueToken);
        }
        return parseNodes_1.ContinueNode.create(continueToken);
      }
      // return_stmt: 'return' [testlist]
      _parseReturnStatement() {
        const returnToken = this._getKeywordToken(
          32
          /* Return */
        );
        const returnNode = parseNodes_1.ReturnNode.create(returnToken);
        if (!this._isInFunction) {
          this._addError(localize_1.Localizer.Diagnostic.returnOutsideFunction(), returnToken);
        }
        if (!this._isNextTokenNeverExpression()) {
          const returnExpr = this._parseTestOrStarListAsExpression(
            /* allowAssignmentExpression */
            true,
            /* allowMultipleUnpack */
            true,
            2,
            localize_1.Localizer.Diagnostic.expectedReturnExpr()
          );
          this._reportConditionalErrorForStarTupleElement(returnExpr);
          returnNode.returnExpression = returnExpr;
          returnNode.returnExpression.parent = returnNode;
          (0, parseNodes_1.extendRange)(returnNode, returnExpr);
        }
        return returnNode;
      }
      // import_from: ('from' (('.' | '...')* dotted_name | ('.' | '...')+)
      //             'import' ('*' | '(' import_as_names ')' | import_as_names))
      // import_as_names: import_as_name (',' import_as_name)* [',']
      // import_as_name: NAME ['as' NAME]
      _parseFromStatement() {
        const fromToken = this._getKeywordToken(
          18
          /* From */
        );
        const modName = this._parseDottedModuleName(
          /* allowJustDots */
          true
        );
        const importFromNode = parseNodes_1.ImportFromNode.create(fromToken, modName);
        const isFutureImport = modName.leadingDots === 0 && modName.nameParts.length === 1 && modName.nameParts[0].value === "__future__";
        const possibleInputToken = this._peekToken();
        if (!this._consumeTokenIfKeyword(
          21
          /* Import */
        )) {
          this._addError(localize_1.Localizer.Diagnostic.expectedImport(), this._peekToken());
          if (!modName.hasTrailingDot) {
            importFromNode.missingImportKeyword = true;
          }
        } else {
          (0, parseNodes_1.extendRange)(importFromNode, possibleInputToken);
          const possibleStarToken = this._peekToken();
          if (this._consumeTokenIfOperator(
            26
            /* Multiply */
          )) {
            (0, parseNodes_1.extendRange)(importFromNode, possibleStarToken);
            importFromNode.isWildcardImport = true;
            importFromNode.wildcardToken = possibleStarToken;
            this._containsWildcardImport = true;
          } else {
            const openParenToken = this._peekToken();
            const inParen = this._consumeTokenIfType(
              13
              /* OpenParenthesis */
            );
            let trailingCommaToken;
            while (true) {
              const importName = this._getTokenIfIdentifier();
              if (!importName) {
                break;
              }
              trailingCommaToken = void 0;
              const importFromAsNode = parseNodes_1.ImportFromAsNode.create(parseNodes_1.NameNode.create(importName));
              if (this._consumeTokenIfKeyword(
                1
                /* As */
              )) {
                const aliasName = this._getTokenIfIdentifier();
                if (!aliasName) {
                  this._addError(localize_1.Localizer.Diagnostic.expectedImportAlias(), this._peekToken());
                } else {
                  importFromAsNode.alias = parseNodes_1.NameNode.create(aliasName);
                  importFromAsNode.alias.parent = importFromAsNode;
                  (0, parseNodes_1.extendRange)(importFromAsNode, aliasName);
                }
              }
              importFromNode.imports.push(importFromAsNode);
              importFromAsNode.parent = importFromNode;
              (0, parseNodes_1.extendRange)(importFromNode, importFromAsNode);
              if (isFutureImport) {
                this._futureImportMap.set(importName.value, true);
              }
              const nextToken = this._peekToken();
              if (!this._consumeTokenIfType(
                12
                /* Comma */
              )) {
                break;
              }
              trailingCommaToken = nextToken;
            }
            if (importFromNode.imports.length === 0) {
              this._addError(localize_1.Localizer.Diagnostic.expectedImportSymbols(), this._peekToken());
            }
            if (inParen) {
              importFromNode.usesParens = true;
              const nextToken = this._peekToken();
              if (!this._consumeTokenIfType(
                14
                /* CloseParenthesis */
              )) {
                this._addError(localize_1.Localizer.Diagnostic.expectedCloseParen(), openParenToken);
              } else {
                (0, parseNodes_1.extendRange)(importFromNode, nextToken);
              }
            } else if (trailingCommaToken) {
              this._addError(localize_1.Localizer.Diagnostic.trailingCommaInFromImport(), trailingCommaToken);
            }
          }
        }
        this._importedModules.push({
          nameNode: importFromNode.module,
          leadingDots: importFromNode.module.leadingDots,
          nameParts: importFromNode.module.nameParts.map((p) => p.value),
          importedSymbols: importFromNode.imports.map((imp) => imp.name.value)
        });
        let isTypingImport = false;
        if (importFromNode.module.nameParts.length === 1) {
          const firstNamePartValue = importFromNode.module.nameParts[0].value;
          if (firstNamePartValue === "typing" || firstNamePartValue === "typing_extensions") {
            isTypingImport = true;
          }
        }
        if (isTypingImport) {
          const typingSymbolsOfInterest = ["Literal", "TypeAlias", "Annotated"];
          if (importFromNode.isWildcardImport) {
            typingSymbolsOfInterest.forEach((s) => {
              this._typingSymbolAliases.set(s, s);
            });
          } else {
            importFromNode.imports.forEach((imp) => {
              var _a2;
              if (typingSymbolsOfInterest.some((s) => s === imp.name.value)) {
                this._typingSymbolAliases.set(((_a2 = imp.alias) === null || _a2 === void 0 ? void 0 : _a2.value) || imp.name.value, imp.name.value);
              }
            });
          }
        }
        return importFromNode;
      }
      // import_name: 'import' dotted_as_names
      // dotted_as_names: dotted_as_name (',' dotted_as_name)*
      // dotted_as_name: dotted_name ['as' NAME]
      _parseImportStatement() {
        var _a2;
        const importToken = this._getKeywordToken(
          21
          /* Import */
        );
        const importNode = parseNodes_1.ImportNode.create(importToken);
        while (true) {
          const modName = this._parseDottedModuleName();
          const importAsNode = parseNodes_1.ImportAsNode.create(modName);
          if (this._consumeTokenIfKeyword(
            1
            /* As */
          )) {
            const aliasToken = this._getTokenIfIdentifier();
            if (aliasToken) {
              importAsNode.alias = parseNodes_1.NameNode.create(aliasToken);
              importAsNode.alias.parent = importAsNode;
              (0, parseNodes_1.extendRange)(importAsNode, importAsNode.alias);
            } else {
              this._addError(localize_1.Localizer.Diagnostic.expectedImportAlias(), this._peekToken());
            }
          }
          if (importAsNode.module.leadingDots > 0) {
            this._addError(localize_1.Localizer.Diagnostic.relativeImportNotAllowed(), importAsNode.module);
          }
          importNode.list.push(importAsNode);
          importAsNode.parent = importNode;
          this._importedModules.push({
            nameNode: importAsNode.module,
            leadingDots: importAsNode.module.leadingDots,
            nameParts: importAsNode.module.nameParts.map((p) => p.value),
            importedSymbols: void 0
          });
          if (modName.nameParts.length === 1) {
            const firstNamePartValue = modName.nameParts[0].value;
            if (firstNamePartValue === "typing" || firstNamePartValue === "typing_extensions") {
              this._typingImportAliases.push(((_a2 = importAsNode.alias) === null || _a2 === void 0 ? void 0 : _a2.value) || firstNamePartValue);
            }
          }
          if (!this._consumeTokenIfType(
            12
            /* Comma */
          )) {
            break;
          }
        }
        if (importNode.list.length > 0) {
          (0, parseNodes_1.extendRange)(importNode, importNode.list[importNode.list.length - 1]);
        }
        return importNode;
      }
      // ('.' | '...')* dotted_name | ('.' | '...')+
      // dotted_name: NAME ('.' NAME)*
      _parseDottedModuleName(allowJustDots = false) {
        var _a2;
        const moduleNameNode = parseNodes_1.ModuleNameNode.create(this._peekToken());
        while (true) {
          const token = (_a2 = this._getTokenIfType(
            19
            /* Ellipsis */
          )) !== null && _a2 !== void 0 ? _a2 : this._getTokenIfType(
            20
            /* Dot */
          );
          if (token) {
            if (token.type === 19) {
              moduleNameNode.leadingDots += 3;
            } else {
              moduleNameNode.leadingDots++;
            }
            (0, parseNodes_1.extendRange)(moduleNameNode, token);
          } else {
            break;
          }
        }
        while (true) {
          const identifier = this._getTokenIfIdentifier();
          if (!identifier) {
            if (!allowJustDots || moduleNameNode.leadingDots === 0 || moduleNameNode.nameParts.length > 0) {
              this._addError(localize_1.Localizer.Diagnostic.expectedModuleName(), this._peekToken());
              moduleNameNode.hasTrailingDot = true;
            }
            break;
          }
          const namePart = parseNodes_1.NameNode.create(identifier);
          moduleNameNode.nameParts.push(namePart);
          namePart.parent = moduleNameNode;
          (0, parseNodes_1.extendRange)(moduleNameNode, namePart);
          const nextToken = this._peekToken();
          if (!this._consumeTokenIfType(
            20
            /* Dot */
          )) {
            break;
          }
          (0, parseNodes_1.extendRange)(moduleNameNode, nextToken);
        }
        return moduleNameNode;
      }
      _parseGlobalStatement() {
        const globalToken = this._getKeywordToken(
          19
          /* Global */
        );
        const globalNode = parseNodes_1.GlobalNode.create(globalToken);
        globalNode.nameList = this._parseNameList();
        if (globalNode.nameList.length > 0) {
          globalNode.nameList.forEach((name) => {
            name.parent = globalNode;
          });
          (0, parseNodes_1.extendRange)(globalNode, globalNode.nameList[globalNode.nameList.length - 1]);
        }
        return globalNode;
      }
      _parseNonlocalStatement() {
        const nonlocalToken = this._getKeywordToken(
          27
          /* Nonlocal */
        );
        const nonlocalNode = parseNodes_1.NonlocalNode.create(nonlocalToken);
        nonlocalNode.nameList = this._parseNameList();
        if (nonlocalNode.nameList.length > 0) {
          nonlocalNode.nameList.forEach((name) => {
            name.parent = nonlocalNode;
          });
          (0, parseNodes_1.extendRange)(nonlocalNode, nonlocalNode.nameList[nonlocalNode.nameList.length - 1]);
        }
        return nonlocalNode;
      }
      _parseNameList() {
        const nameList = [];
        while (true) {
          const name = this._getTokenIfIdentifier();
          if (!name) {
            this._addError(localize_1.Localizer.Diagnostic.expectedIdentifier(), this._peekToken());
            break;
          }
          nameList.push(parseNodes_1.NameNode.create(name));
          if (!this._consumeTokenIfType(
            12
            /* Comma */
          )) {
            break;
          }
        }
        return nameList;
      }
      // raise_stmt: 'raise' [test ['from' test]]
      // (old) raise_stmt: 'raise' [test [',' test [',' test]]]
      _parseRaiseStatement() {
        const raiseToken = this._getKeywordToken(
          31
          /* Raise */
        );
        const raiseNode = parseNodes_1.RaiseNode.create(raiseToken);
        if (!this._isNextTokenNeverExpression()) {
          raiseNode.typeExpression = this._parseTestExpression(
            /* allowAssignmentExpression */
            true
          );
          raiseNode.typeExpression.parent = raiseNode;
          (0, parseNodes_1.extendRange)(raiseNode, raiseNode.typeExpression);
          if (this._consumeTokenIfKeyword(
            18
            /* From */
          )) {
            raiseNode.valueExpression = this._parseTestExpression(
              /* allowAssignmentExpression */
              true
            );
            raiseNode.valueExpression.parent = raiseNode;
            (0, parseNodes_1.extendRange)(raiseNode, raiseNode.valueExpression);
          } else {
            if (this._consumeTokenIfType(
              12
              /* Comma */
            )) {
              raiseNode.valueExpression = this._parseTestExpression(
                /* allowAssignmentExpression */
                true
              );
              raiseNode.valueExpression.parent = raiseNode;
              (0, parseNodes_1.extendRange)(raiseNode, raiseNode.valueExpression);
              if (this._consumeTokenIfType(
                12
                /* Comma */
              )) {
                raiseNode.tracebackExpression = this._parseTestExpression(
                  /* allowAssignmentExpression */
                  true
                );
                raiseNode.tracebackExpression.parent = raiseNode;
                (0, parseNodes_1.extendRange)(raiseNode, raiseNode.tracebackExpression);
              }
            }
          }
        }
        return raiseNode;
      }
      // assert_stmt: 'assert' test [',' test]
      _parseAssertStatement() {
        const assertToken = this._getKeywordToken(
          2
          /* Assert */
        );
        const expr = this._parseTestExpression(
          /* allowAssignmentExpression */
          true
        );
        const assertNode = parseNodes_1.AssertNode.create(assertToken, expr);
        if (this._consumeTokenIfType(
          12
          /* Comma */
        )) {
          const exceptionExpr = this._parseTestExpression(
            /* allowAssignmentExpression */
            true
          );
          assertNode.exceptionExpression = exceptionExpr;
          assertNode.exceptionExpression.parent = assertNode;
          (0, parseNodes_1.extendRange)(assertNode, exceptionExpr);
        }
        return assertNode;
      }
      // del_stmt: 'del' exprlist
      _parseDelStatement() {
        const delToken = this._getKeywordToken(
          11
          /* Del */
        );
        const exprListResult = this._parseExpressionList(
          /* allowStar */
          true
        );
        if (!exprListResult.parseError && exprListResult.list.length === 0) {
          this._addError(localize_1.Localizer.Diagnostic.expectedDelExpr(), this._peekToken());
        }
        const delNode = parseNodes_1.DelNode.create(delToken);
        delNode.expressions = exprListResult.list;
        if (delNode.expressions.length > 0) {
          delNode.expressions.forEach((expr) => {
            expr.parent = delNode;
          });
          (0, parseNodes_1.extendRange)(delNode, delNode.expressions[delNode.expressions.length - 1]);
        }
        return delNode;
      }
      // yield_expr: 'yield' [yield_arg]
      // yield_arg: 'from' test | testlist
      _parseYieldExpression() {
        const yieldToken = this._getKeywordToken(
          37
          /* Yield */
        );
        const nextToken = this._peekToken();
        if (this._consumeTokenIfKeyword(
          18
          /* From */
        )) {
          if (this._getLanguageVersion() < pythonVersion_1.PythonVersion.V3_3) {
            this._addError(localize_1.Localizer.Diagnostic.yieldFromIllegal(), nextToken);
          }
          return parseNodes_1.YieldFromNode.create(yieldToken, this._parseTestExpression(
            /* allowAssignmentExpression */
            true
          ));
        }
        let exprList;
        if (!this._isNextTokenNeverExpression()) {
          exprList = this._parseTestOrStarListAsExpression(
            /* allowAssignmentExpression */
            true,
            /* allowMultipleUnpack */
            true,
            2,
            localize_1.Localizer.Diagnostic.expectedYieldExpr()
          );
          this._reportConditionalErrorForStarTupleElement(exprList);
        }
        return parseNodes_1.YieldNode.create(yieldToken, exprList);
      }
      _tryParseYieldExpression() {
        if (this._peekKeywordType() !== 37) {
          return void 0;
        }
        return this._parseYieldExpression();
      }
      // simple_stmt: small_stmt (';' small_stmt)* [';'] NEWLINE
      _parseSimpleStatement() {
        const statement = parseNodes_1.StatementListNode.create(this._peekToken());
        while (true) {
          if (this._peekTokenType() === 0) {
            const invalidToken = this._getNextToken();
            const text = this._fileContents.substr(invalidToken.start, invalidToken.length);
            const firstCharCode = text.charCodeAt(0);
            this._addError(localize_1.Localizer.Diagnostic.invalidTokenChars().format({ text: `\\u${firstCharCode.toString(16)}` }), invalidToken);
            this._consumeTokensUntilType([
              2
              /* NewLine */
            ]);
            break;
          }
          const smallStatement = this._parseSmallStatement();
          statement.statements.push(smallStatement);
          smallStatement.parent = statement;
          (0, parseNodes_1.extendRange)(statement, smallStatement);
          if (smallStatement.nodeType === 0) {
            break;
          }
          if (!this._consumeTokenIfType(
            11
            /* Semicolon */
          )) {
            break;
          }
          const nextTokenType = this._peekTokenType();
          if (nextTokenType === 2 || nextTokenType === 1) {
            break;
          }
        }
        if (!this._consumeTokenIfType(
          2
          /* NewLine */
        )) {
          this._addError(localize_1.Localizer.Diagnostic.expectedNewlineOrSemicolon(), this._peekToken());
        }
        return statement;
      }
      // small_stmt: (expr_stmt | del_stmt | pass_stmt | flow_stmt |
      //             import_stmt | global_stmt | nonlocal_stmt | assert_stmt)
      // flow_stmt: break_stmt | continue_stmt | return_stmt | raise_stmt | yield_stmt
      // import_stmt: import_name | import_from
      _parseSmallStatement() {
        switch (this._peekKeywordType()) {
          case 30:
            return this._parsePassStatement();
          case 5:
            return this._parseBreakStatement();
          case 8:
            return this._parseContinueStatement();
          case 32:
            return this._parseReturnStatement();
          case 18:
            return this._parseFromStatement();
          case 21:
            return this._parseImportStatement();
          case 19:
            return this._parseGlobalStatement();
          case 27:
            return this._parseNonlocalStatement();
          case 31:
            return this._parseRaiseStatement();
          case 2:
            return this._parseAssertStatement();
          case 11:
            return this._parseDelStatement();
          case 37:
            return this._parseYieldExpression();
        }
        return this._parseExpressionStatement();
      }
      _makeExpressionOrTuple(exprListResult, enclosedInParens) {
        if (exprListResult.list.length === 1 && !exprListResult.trailingComma) {
          if (exprListResult.list[0].nodeType === 56) {
            this._addError(localize_1.Localizer.Diagnostic.unpackOperatorNotAllowed(), exprListResult.list[0]);
          }
          return exprListResult.list[0];
        }
        const tupleStartRange = exprListResult.list.length > 0 ? exprListResult.list[0] : this._peekToken(-1);
        const tupleNode = parseNodes_1.TupleNode.create(tupleStartRange, enclosedInParens);
        tupleNode.expressions = exprListResult.list;
        if (exprListResult.list.length > 0) {
          exprListResult.list.forEach((expr) => {
            expr.parent = tupleNode;
          });
          (0, parseNodes_1.extendRange)(tupleNode, exprListResult.list[exprListResult.list.length - 1]);
        }
        return tupleNode;
      }
      _parseExpressionListAsPossibleTuple(errorCategory, errorString, errorToken) {
        if (this._isNextTokenNeverExpression()) {
          this._addError(errorString, errorToken);
          return parseNodes_1.ErrorNode.create(errorToken, errorCategory);
        }
        const exprListResult = this._parseExpressionList(
          /* allowStar */
          true
        );
        if (exprListResult.parseError) {
          return exprListResult.parseError;
        }
        return this._makeExpressionOrTuple(
          exprListResult,
          /* enclosedInParens */
          false
        );
      }
      _parseTestListAsExpression(errorCategory, errorString) {
        if (this._isNextTokenNeverExpression()) {
          return this._handleExpressionParseError(errorCategory, errorString);
        }
        const exprListResult = this._parseTestExpressionList();
        if (exprListResult.parseError) {
          return exprListResult.parseError;
        }
        return this._makeExpressionOrTuple(
          exprListResult,
          /* enclosedInParens */
          false
        );
      }
      _parseTestOrStarListAsExpression(allowAssignmentExpression, allowMultipleUnpack, errorCategory, errorString) {
        if (this._isNextTokenNeverExpression()) {
          return this._handleExpressionParseError(errorCategory, errorString);
        }
        const exprListResult = this._parseTestOrStarExpressionList(allowAssignmentExpression, allowMultipleUnpack);
        if (exprListResult.parseError) {
          return exprListResult.parseError;
        }
        return this._makeExpressionOrTuple(
          exprListResult,
          /* enclosedInParens */
          false
        );
      }
      _parseExpressionList(allowStar) {
        return this._parseExpressionListGeneric(() => this._parseExpression(allowStar));
      }
      // testlist: test (',' test)* [',']
      _parseTestExpressionList() {
        return this._parseExpressionListGeneric(() => this._parseTestExpression(
          /* allowAssignmentExpression */
          false
        ));
      }
      _parseTestOrStarExpressionList(allowAssignmentExpression, allowMultipleUnpack) {
        const exprListResult = this._parseExpressionListGeneric(() => this._parseTestOrStarExpression(allowAssignmentExpression));
        if (!allowMultipleUnpack && !exprListResult.parseError) {
          let sawStar = false;
          for (const expr of exprListResult.list) {
            if (expr.nodeType === 56) {
              if (sawStar) {
                this._addError(localize_1.Localizer.Diagnostic.duplicateUnpack(), expr);
                break;
              }
              sawStar = true;
            }
          }
        }
        return exprListResult;
      }
      // exp_or_star: expr | star_expr
      // expr: xor_expr ('|' xor_expr)*
      // star_expr: '*' expr
      _parseExpression(allowUnpack) {
        const startToken = this._peekToken();
        if (allowUnpack && this._consumeTokenIfOperator(
          26
          /* Multiply */
        )) {
          return parseNodes_1.UnpackNode.create(startToken, this._parseExpression(
            /* allowUnpack */
            false
          ));
        }
        return this._parseBitwiseOrExpression();
      }
      // test_or_star: test | star_expr
      _parseTestOrStarExpression(allowAssignmentExpression) {
        if (this._peekOperatorType() === 26) {
          return this._parseExpression(
            /* allowUnpack */
            true
          );
        }
        return this._parseTestExpression(allowAssignmentExpression);
      }
      // test: or_test ['if' or_test 'else' test] | lambdef
      _parseTestExpression(allowAssignmentExpression) {
        if (this._peekKeywordType() === 24) {
          return this._parseLambdaExpression();
        }
        const ifExpr = allowAssignmentExpression ? this._parseAssignmentExpression() : this._parseOrTest();
        if (ifExpr.nodeType === 0) {
          return ifExpr;
        }
        if (!this._consumeTokenIfKeyword(
          20
          /* If */
        )) {
          return ifExpr;
        }
        const testExpr = this._parseOrTest();
        if (testExpr.nodeType === 0) {
          return testExpr;
        }
        if (!this._consumeTokenIfKeyword(
          13
          /* Else */
        )) {
          return this._handleExpressionParseError(1, localize_1.Localizer.Diagnostic.expectedElse());
        }
        const elseExpr = this._parseTestExpression(
          /* allowAssignmentExpression */
          true
        );
        if (elseExpr.nodeType === 0) {
          return elseExpr;
        }
        return parseNodes_1.TernaryNode.create(ifExpr, testExpr, elseExpr);
      }
      // assign_expr: NAME := test
      _parseAssignmentExpression(disallowAssignmentExpression = false) {
        const leftExpr = this._parseOrTest();
        if (leftExpr.nodeType === 0) {
          return leftExpr;
        }
        if (leftExpr.nodeType !== 38) {
          return leftExpr;
        }
        const walrusToken = this._peekToken();
        if (!this._consumeTokenIfOperator(
          35
          /* Walrus */
        )) {
          return leftExpr;
        }
        if (!this._assignmentExpressionsAllowed || this._isParsingTypeAnnotation || disallowAssignmentExpression) {
          this._addError(localize_1.Localizer.Diagnostic.walrusNotAllowed(), walrusToken);
        }
        if (this._getLanguageVersion() < pythonVersion_1.PythonVersion.V3_8) {
          this._addError(localize_1.Localizer.Diagnostic.walrusIllegal(), walrusToken);
        }
        const rightExpr = this._parseTestExpression(
          /* allowAssignmentExpression */
          false
        );
        return parseNodes_1.AssignmentExpressionNode.create(leftExpr, rightExpr);
      }
      // or_test: and_test ('or' and_test)*
      _parseOrTest() {
        let leftExpr = this._parseAndTest();
        if (leftExpr.nodeType === 0) {
          return leftExpr;
        }
        while (true) {
          const peekToken = this._peekToken();
          if (!this._consumeTokenIfKeyword(
            29
            /* Or */
          )) {
            break;
          }
          const rightExpr = this._parseAndTest();
          leftExpr = this._createBinaryOperationNode(
            leftExpr,
            rightExpr,
            peekToken,
            37
            /* Or */
          );
        }
        return leftExpr;
      }
      // and_test: not_test ('and' not_test)*
      _parseAndTest() {
        let leftExpr = this._parseNotTest();
        if (leftExpr.nodeType === 0) {
          return leftExpr;
        }
        while (true) {
          const peekToken = this._peekToken();
          if (!this._consumeTokenIfKeyword(
            0
            /* And */
          )) {
            break;
          }
          const rightExpr = this._parseNotTest();
          leftExpr = this._createBinaryOperationNode(
            leftExpr,
            rightExpr,
            peekToken,
            36
            /* And */
          );
        }
        return leftExpr;
      }
      // not_test: 'not' not_test | comparison
      _parseNotTest() {
        const notToken = this._peekToken();
        if (this._consumeTokenIfKeyword(
          28
          /* Not */
        )) {
          const notExpr = this._parseNotTest();
          return this._createUnaryOperationNode(
            notToken,
            notExpr,
            38
            /* Not */
          );
        }
        return this._parseComparison();
      }
      // comparison: expr (comp_op expr)*
      // comp_op: '<'|'>'|'=='|'>='|'<='|'<>'|'!='|'in'|'not' 'in'|'is'|'is' 'not'
      _parseComparison() {
        let leftExpr = this._parseBitwiseOrExpression();
        if (leftExpr.nodeType === 0) {
          return leftExpr;
        }
        while (true) {
          let comparisonOperator;
          const peekToken = this._peekToken();
          if (tokenizer_1.Tokenizer.isOperatorComparison(this._peekOperatorType())) {
            comparisonOperator = this._peekOperatorType();
            if (comparisonOperator === 19) {
              this._addError(localize_1.Localizer.Diagnostic.operatorLessOrGreaterDeprecated(), peekToken);
              comparisonOperator = 28;
            }
            this._getNextToken();
          } else if (this._consumeTokenIfKeyword(
            22
            /* In */
          )) {
            comparisonOperator = 41;
          } else if (this._consumeTokenIfKeyword(
            23
            /* Is */
          )) {
            if (this._consumeTokenIfKeyword(
              28
              /* Not */
            )) {
              comparisonOperator = 40;
            } else {
              comparisonOperator = 39;
            }
          } else if (this._peekKeywordType() === 28) {
            const tokenAfterNot = this._peekToken(1);
            if (tokenAfterNot.type === 8 && tokenAfterNot.keywordType === 22) {
              this._getNextToken();
              this._getNextToken();
              comparisonOperator = 42;
            }
          }
          if (comparisonOperator === void 0) {
            break;
          }
          const rightExpr = this._parseComparison();
          leftExpr = this._createBinaryOperationNode(leftExpr, rightExpr, peekToken, comparisonOperator);
        }
        return leftExpr;
      }
      // expr: xor_expr ('|' xor_expr)*
      _parseBitwiseOrExpression() {
        let leftExpr = this._parseBitwiseXorExpression();
        if (leftExpr.nodeType === 0) {
          return leftExpr;
        }
        while (true) {
          const peekToken = this._peekToken();
          if (!this._consumeTokenIfOperator(
            6
            /* BitwiseOr */
          )) {
            break;
          }
          const rightExpr = this._parseBitwiseXorExpression();
          leftExpr = this._createBinaryOperationNode(
            leftExpr,
            rightExpr,
            peekToken,
            6
            /* BitwiseOr */
          );
        }
        return leftExpr;
      }
      // xor_expr: and_expr ('^' and_expr)*
      _parseBitwiseXorExpression() {
        let leftExpr = this._parseBitwiseAndExpression();
        if (leftExpr.nodeType === 0) {
          return leftExpr;
        }
        while (true) {
          const peekToken = this._peekToken();
          if (!this._consumeTokenIfOperator(
            8
            /* BitwiseXor */
          )) {
            break;
          }
          const rightExpr = this._parseBitwiseAndExpression();
          leftExpr = this._createBinaryOperationNode(
            leftExpr,
            rightExpr,
            peekToken,
            8
            /* BitwiseXor */
          );
        }
        return leftExpr;
      }
      // and_expr: shift_expr ('&' shift_expr)*
      _parseBitwiseAndExpression() {
        let leftExpr = this._parseShiftExpression();
        if (leftExpr.nodeType === 0) {
          return leftExpr;
        }
        while (true) {
          const peekToken = this._peekToken();
          if (!this._consumeTokenIfOperator(
            3
            /* BitwiseAnd */
          )) {
            break;
          }
          const rightExpr = this._parseShiftExpression();
          leftExpr = this._createBinaryOperationNode(
            leftExpr,
            rightExpr,
            peekToken,
            3
            /* BitwiseAnd */
          );
        }
        return leftExpr;
      }
      // shift_expr: arith_expr (('<<'|'>>') arith_expr)*
      _parseShiftExpression() {
        let leftExpr = this._parseArithmeticExpression();
        if (leftExpr.nodeType === 0) {
          return leftExpr;
        }
        let peekToken = this._peekToken();
        let nextOperator = this._peekOperatorType();
        while (nextOperator === 17 || nextOperator === 31) {
          this._getNextToken();
          const rightExpr = this._parseArithmeticExpression();
          leftExpr = this._createBinaryOperationNode(leftExpr, rightExpr, peekToken, nextOperator);
          peekToken = this._peekToken();
          nextOperator = this._peekOperatorType();
        }
        return leftExpr;
      }
      // arith_expr: term (('+'|'-') term)*
      _parseArithmeticExpression() {
        let leftExpr = this._parseArithmeticTerm();
        if (leftExpr.nodeType === 0) {
          return leftExpr;
        }
        let peekToken = this._peekToken();
        let nextOperator = this._peekOperatorType();
        while (nextOperator === 0 || nextOperator === 33) {
          this._getNextToken();
          const rightExpr = this._parseArithmeticTerm();
          if (rightExpr.nodeType === 0) {
            return rightExpr;
          }
          leftExpr = this._createBinaryOperationNode(leftExpr, rightExpr, peekToken, nextOperator);
          peekToken = this._peekToken();
          nextOperator = this._peekOperatorType();
        }
        return leftExpr;
      }
      // term: factor (('*'|'@'|'/'|'%'|'//') factor)*
      _parseArithmeticTerm() {
        let leftExpr = this._parseArithmeticFactor();
        if (leftExpr.nodeType === 0) {
          return leftExpr;
        }
        let peekToken = this._peekToken();
        let nextOperator = this._peekOperatorType();
        while (nextOperator === 26 || nextOperator === 22 || nextOperator === 10 || nextOperator === 24 || nextOperator === 13) {
          this._getNextToken();
          const rightExpr = this._parseArithmeticFactor();
          leftExpr = this._createBinaryOperationNode(leftExpr, rightExpr, peekToken, nextOperator);
          peekToken = this._peekToken();
          nextOperator = this._peekOperatorType();
        }
        return leftExpr;
      }
      // factor: ('+'|'-'|'~') factor | power
      // power: atom_expr ['**' factor]
      _parseArithmeticFactor() {
        const nextToken = this._peekToken();
        const nextOperator = this._peekOperatorType();
        if (nextOperator === 0 || nextOperator === 33 || nextOperator === 5) {
          this._getNextToken();
          const expression = this._parseArithmeticFactor();
          return this._createUnaryOperationNode(nextToken, expression, nextOperator);
        }
        const leftExpr = this._parseAtomExpression();
        if (leftExpr.nodeType === 0) {
          return leftExpr;
        }
        const peekToken = this._peekToken();
        if (this._consumeTokenIfOperator(
          29
          /* Power */
        )) {
          const rightExpr = this._parseArithmeticFactor();
          return this._createBinaryOperationNode(
            leftExpr,
            rightExpr,
            peekToken,
            29
            /* Power */
          );
        }
        return leftExpr;
      }
      // Determines whether the expression refers to a type exported by the typing
      // or typing_extensions modules. We can directly evaluate the types at binding
      // time. We assume here that the code isn't making use of some custom type alias
      // to refer to the typing types.
      _isTypingAnnotation(typeAnnotation, name) {
        if (typeAnnotation.nodeType === 38) {
          const alias = this._typingSymbolAliases.get(typeAnnotation.value);
          if (alias === name) {
            return true;
          }
        } else if (typeAnnotation.nodeType === 35) {
          if (typeAnnotation.leftExpression.nodeType === 38 && typeAnnotation.memberName.value === name) {
            const baseName = typeAnnotation.leftExpression.value;
            return this._typingImportAliases.some((alias) => alias === baseName);
          }
        }
        return false;
      }
      // atom_expr: ['await'] atom trailer*
      // trailer: '(' [arglist] ')' | '[' subscriptlist ']' | '.' NAME
      _parseAtomExpression() {
        let awaitToken;
        if (this._peekKeywordType() === 4 && !this._isParsingTypeAnnotation) {
          awaitToken = this._getKeywordToken(
            4
            /* Await */
          );
          if (this._getLanguageVersion() < pythonVersion_1.PythonVersion.V3_5) {
            this._addError(localize_1.Localizer.Diagnostic.awaitIllegal(), awaitToken);
          }
        }
        let atomExpression = this._parseAtom();
        if (atomExpression.nodeType === 0) {
          return atomExpression;
        }
        while (true) {
          const startOfTrailerToken = this._peekToken();
          if (this._consumeTokenIfType(
            13
            /* OpenParenthesis */
          )) {
            const wasParsingTypeAnnotation = this._isParsingTypeAnnotation;
            this._isParsingTypeAnnotation = false;
            const argListResult = this._parseArgList();
            const callNode = parseNodes_1.CallNode.create(atomExpression, argListResult.args, argListResult.trailingComma);
            if (argListResult.args.length > 1 || argListResult.trailingComma) {
              argListResult.args.forEach((arg) => {
                if (arg.valueExpression.nodeType === 32) {
                  if (!arg.valueExpression.isParenthesized) {
                    this._addError(localize_1.Localizer.Diagnostic.generatorNotParenthesized(), arg.valueExpression);
                  }
                }
              });
            }
            const nextToken = this._peekToken();
            let isArgListTerminated = false;
            if (!this._consumeTokenIfType(
              14
              /* CloseParenthesis */
            )) {
              this._addError(localize_1.Localizer.Diagnostic.expectedCloseParen(), startOfTrailerToken);
              this._consumeTokensUntilType([
                2
                /* NewLine */
              ]);
              (0, parseNodes_1.extendRange)(callNode, this._peekToken());
            } else {
              (0, parseNodes_1.extendRange)(callNode, nextToken);
              isArgListTerminated = true;
            }
            this._isParsingTypeAnnotation = wasParsingTypeAnnotation;
            if (this._isParsingTypeAnnotation) {
              const diag = new diagnostic_1.DiagnosticAddendum();
              if (atomExpression.nodeType === 38 && atomExpression.value === "type") {
                diag.addMessage(localize_1.Localizer.DiagnosticAddendum.useTypeInstead());
                this._addError(localize_1.Localizer.Diagnostic.typeCallNotAllowed() + diag.getString(), callNode);
              }
            }
            atomExpression = callNode;
            if (atomExpression.maxChildDepth !== void 0 && atomExpression.maxChildDepth >= maxChildNodeDepth) {
              atomExpression = parseNodes_1.ErrorNode.create(
                atomExpression,
                14
                /* MaxDepthExceeded */
              );
              this._addError(localize_1.Localizer.Diagnostic.maxParseDepthExceeded(), atomExpression);
            }
            if (!isArgListTerminated) {
              break;
            }
          } else if (this._consumeTokenIfType(
            15
            /* OpenBracket */
          )) {
            const wasParsingIndexTrailer = this._isParsingIndexTrailer;
            const wasParsingTypeAnnotation = this._isParsingTypeAnnotation;
            if (this._isTypingAnnotation(atomExpression, "Literal") || this._isTypingAnnotation(atomExpression, "Annotated")) {
              this._isParsingTypeAnnotation = false;
            }
            this._isParsingIndexTrailer = true;
            const subscriptList = this._parseSubscriptList();
            this._isParsingTypeAnnotation = wasParsingTypeAnnotation;
            this._isParsingIndexTrailer = wasParsingIndexTrailer;
            const closingToken = this._peekToken();
            const indexNode = parseNodes_1.IndexNode.create(atomExpression, subscriptList.list, subscriptList.trailingComma, closingToken);
            (0, parseNodes_1.extendRange)(indexNode, indexNode);
            if (!this._consumeTokenIfType(
              16
              /* CloseBracket */
            )) {
              this._handleExpressionParseError(6, localize_1.Localizer.Diagnostic.expectedCloseBracket(), startOfTrailerToken, indexNode);
            }
            atomExpression = indexNode;
            if (atomExpression.maxChildDepth !== void 0 && atomExpression.maxChildDepth >= maxChildNodeDepth) {
              atomExpression = parseNodes_1.ErrorNode.create(
                atomExpression,
                14
                /* MaxDepthExceeded */
              );
              this._addError(localize_1.Localizer.Diagnostic.maxParseDepthExceeded(), atomExpression);
            }
          } else if (this._consumeTokenIfType(
            20
            /* Dot */
          )) {
            const memberName = this._getTokenIfIdentifier();
            if (!memberName) {
              return this._handleExpressionParseError(7, localize_1.Localizer.Diagnostic.expectedMemberName(), startOfTrailerToken, atomExpression, [
                8
                /* Keyword */
              ]);
            }
            atomExpression = parseNodes_1.MemberAccessNode.create(atomExpression, parseNodes_1.NameNode.create(memberName));
            if (atomExpression.maxChildDepth !== void 0 && atomExpression.maxChildDepth >= maxChildNodeDepth) {
              atomExpression = parseNodes_1.ErrorNode.create(
                atomExpression,
                14
                /* MaxDepthExceeded */
              );
              this._addError(localize_1.Localizer.Diagnostic.maxParseDepthExceeded(), atomExpression);
            }
          } else {
            break;
          }
        }
        if (awaitToken) {
          return parseNodes_1.AwaitNode.create(awaitToken, atomExpression);
        }
        return atomExpression;
      }
      // subscriptlist: subscript (',' subscript)* [',']
      _parseSubscriptList() {
        const argList = [];
        let sawKeywordArg = false;
        let trailingComma = false;
        while (true) {
          const firstToken = this._peekToken();
          if (firstToken.type !== 10 && this._isNextTokenNeverExpression()) {
            break;
          }
          let argType = 0;
          if (this._consumeTokenIfOperator(
            26
            /* Multiply */
          )) {
            argType = 1;
          } else if (this._consumeTokenIfOperator(
            29
            /* Power */
          )) {
            argType = 2;
          }
          const startOfSubscriptIndex = this._tokenIndex;
          let valueExpr = this._parsePossibleSlice();
          let nameIdentifier;
          if (argType === 0) {
            if (this._consumeTokenIfOperator(
              2
              /* Assign */
            )) {
              const nameExpr = valueExpr;
              valueExpr = this._parsePossibleSlice();
              if (nameExpr.nodeType === 38) {
                nameIdentifier = nameExpr.token;
              } else {
                this._addError(localize_1.Localizer.Diagnostic.expectedParamName(), nameExpr);
              }
            } else if (valueExpr.nodeType === 38 && this._peekOperatorType() === 35) {
              this._tokenIndex = startOfSubscriptIndex;
              valueExpr = this._parseTestExpression(
                /* allowAssignmentExpression */
                true
              );
              if (!this._parseOptions.isStubFile && this._getLanguageVersion() < pythonVersion_1.PythonVersion.V3_10) {
                this._addError(localize_1.Localizer.Diagnostic.assignmentExprInSubscript(), valueExpr);
              }
            }
          }
          const argNode = parseNodes_1.ArgumentNode.create(firstToken, valueExpr, argType);
          if (nameIdentifier) {
            argNode.name = parseNodes_1.NameNode.create(nameIdentifier);
            argNode.name.parent = argNode;
          }
          if (argNode.name) {
            sawKeywordArg = true;
          } else if (sawKeywordArg && argNode.argumentCategory === 0) {
            this._addError(localize_1.Localizer.Diagnostic.positionArgAfterNamedArg(), argNode);
          }
          argList.push(argNode);
          if (argNode.name) {
            this._addError(localize_1.Localizer.Diagnostic.keywordSubscriptIllegal(), argNode.name);
          }
          if (argType !== 0) {
            const unpackAllowed = this._parseOptions.isStubFile || this._getLanguageVersion() >= pythonVersion_1.PythonVersion.V3_11;
            if (argType === 2 || !unpackAllowed) {
              this._addError(localize_1.Localizer.Diagnostic.unpackedSubscriptIllegal(), argNode);
            }
          }
          if (!this._consumeTokenIfType(
            12
            /* Comma */
          )) {
            trailingComma = false;
            break;
          }
          trailingComma = true;
        }
        if (argList.length === 0) {
          const errorNode = this._handleExpressionParseError(
            3,
            localize_1.Localizer.Diagnostic.expectedSliceIndex(),
            /* targetToken */
            void 0,
            /* childNode */
            void 0,
            [
              16
              /* CloseBracket */
            ]
          );
          argList.push(parseNodes_1.ArgumentNode.create(
            this._peekToken(),
            errorNode,
            0
            /* Simple */
          ));
        }
        return {
          list: argList,
          trailingComma
        };
      }
      // subscript: test | [test] ':' [test] [sliceop]
      // sliceop: ':' [test]
      _parsePossibleSlice() {
        const firstToken = this._peekToken();
        const sliceExpressions = [void 0, void 0, void 0];
        let sliceIndex = 0;
        let sawColon = false;
        while (true) {
          const nextTokenType = this._peekTokenType();
          if (nextTokenType === 16 || nextTokenType === 12) {
            break;
          }
          if (nextTokenType !== 10) {
            sliceExpressions[sliceIndex] = this._parseTestExpression(
              /* allowAssignmentExpression */
              false
            );
          }
          sliceIndex++;
          if (sliceIndex >= 3 || !this._consumeTokenIfType(
            10
            /* Colon */
          )) {
            break;
          }
          sawColon = true;
        }
        if (!sawColon) {
          if (sliceExpressions[0]) {
            return sliceExpressions[0];
          }
          return parseNodes_1.ErrorNode.create(
            this._peekToken(),
            3
            /* MissingIndexOrSlice */
          );
        }
        const sliceNode = parseNodes_1.SliceNode.create(firstToken);
        sliceNode.startValue = sliceExpressions[0];
        if (sliceNode.startValue) {
          sliceNode.startValue.parent = sliceNode;
        }
        sliceNode.endValue = sliceExpressions[1];
        if (sliceNode.endValue) {
          sliceNode.endValue.parent = sliceNode;
        }
        sliceNode.stepValue = sliceExpressions[2];
        if (sliceNode.stepValue) {
          sliceNode.stepValue.parent = sliceNode;
        }
        const extension = sliceExpressions[2] || sliceExpressions[1] || sliceExpressions[0];
        if (extension) {
          (0, parseNodes_1.extendRange)(sliceNode, extension);
        }
        return sliceNode;
      }
      // arglist: argument (',' argument)*  [',']
      _parseArgList() {
        const argList = [];
        let sawKeywordArg = false;
        let trailingComma = false;
        while (true) {
          const nextTokenType = this._peekTokenType();
          if (nextTokenType === 14 || nextTokenType === 2 || nextTokenType === 1) {
            break;
          }
          trailingComma = false;
          const arg = this._parseArgument();
          if (arg.name) {
            sawKeywordArg = true;
          } else if (sawKeywordArg && arg.argumentCategory === 0) {
            this._addError(localize_1.Localizer.Diagnostic.positionArgAfterNamedArg(), arg);
          }
          argList.push(arg);
          if (!this._consumeTokenIfType(
            12
            /* Comma */
          )) {
            break;
          }
          trailingComma = true;
        }
        return { args: argList, trailingComma };
      }
      // argument: ( test [comp_for] |
      //             test '=' test |
      //             '**' test |
      //             '*' test )
      _parseArgument() {
        const firstToken = this._peekToken();
        let argType = 0;
        if (this._consumeTokenIfOperator(
          26
          /* Multiply */
        )) {
          argType = 1;
        } else if (this._consumeTokenIfOperator(
          29
          /* Power */
        )) {
          argType = 2;
        }
        let valueExpr = this._parseTestExpression(
          /* allowAssignmentExpression */
          true
        );
        let nameIdentifier;
        if (argType === 0) {
          if (this._consumeTokenIfOperator(
            2
            /* Assign */
          )) {
            const nameExpr = valueExpr;
            valueExpr = this._parseTestExpression(
              /* allowAssignmentExpression */
              false
            );
            if (nameExpr.nodeType === 38) {
              nameIdentifier = nameExpr.token;
            } else {
              this._addError(localize_1.Localizer.Diagnostic.expectedParamName(), nameExpr);
            }
          } else {
            const listComp = this._tryParseListComprehension(valueExpr);
            if (listComp) {
              valueExpr = listComp;
            }
          }
        }
        const argNode = parseNodes_1.ArgumentNode.create(firstToken, valueExpr, argType);
        if (nameIdentifier) {
          argNode.name = parseNodes_1.NameNode.create(nameIdentifier);
          argNode.name.parent = argNode;
        }
        return argNode;
      }
      // atom: ('(' [yield_expr | testlist_comp] ')' |
      //     '[' [testlist_comp] ']' |
      //     '{' [dictorsetmaker] '}' |
      //     NAME | NUMBER | STRING+ | '...' | 'None' | 'True' | 'False' | '__debug__')
      _parseAtom() {
        const nextToken = this._peekToken();
        if (nextToken.type === 19) {
          return parseNodes_1.EllipsisNode.create(this._getNextToken());
        }
        if (nextToken.type === 6) {
          return parseNodes_1.NumberNode.create(this._getNextToken());
        }
        if (nextToken.type === 7) {
          return parseNodes_1.NameNode.create(this._getNextToken());
        }
        if (nextToken.type === 5) {
          return this._parseStringList();
        }
        if (nextToken.type === 22) {
          this._getNextToken();
          this._addError(localize_1.Localizer.Diagnostic.backticksIllegal(), nextToken);
          const expressionNode = this._parseTestListAsExpression(2, localize_1.Localizer.Diagnostic.expectedExpr());
          this._consumeTokenIfType(
            22
            /* Backtick */
          );
          return expressionNode;
        }
        if (nextToken.type === 13) {
          const possibleTupleNode = this._parseTupleAtom();
          if (possibleTupleNode.nodeType === 52 && this._isParsingTypeAnnotation && !this._isParsingIndexTrailer) {
            const diag = new diagnostic_1.DiagnosticAddendum();
            diag.addMessage(localize_1.Localizer.DiagnosticAddendum.useTupleInstead());
            this._addError(localize_1.Localizer.Diagnostic.tupleInAnnotation() + diag.getString(), possibleTupleNode);
          }
          if (possibleTupleNode.nodeType === 7) {
            possibleTupleNode.parenthesized = true;
          }
          if (possibleTupleNode.nodeType === 48) {
            possibleTupleNode.isParenthesized = true;
          }
          if (possibleTupleNode.nodeType === 32) {
            possibleTupleNode.isParenthesized = true;
          }
          return possibleTupleNode;
        } else if (nextToken.type === 15) {
          const listNode = this._parseListAtom();
          if (this._isParsingTypeAnnotation && !this._isParsingIndexTrailer) {
            const diag = new diagnostic_1.DiagnosticAddendum();
            diag.addMessage(localize_1.Localizer.DiagnosticAddendum.useListInstead());
            this._addError(localize_1.Localizer.Diagnostic.listInAnnotation() + diag.getString(), listNode);
          }
          return listNode;
        } else if (nextToken.type === 17) {
          const dictNode = this._parseDictionaryOrSetAtom();
          if (this._isParsingTypeAnnotation) {
            const diag = new diagnostic_1.DiagnosticAddendum();
            diag.addMessage(localize_1.Localizer.DiagnosticAddendum.useDictInstead());
            this._addError(localize_1.Localizer.Diagnostic.dictInAnnotation() + diag.getString(), dictNode);
          }
          return dictNode;
        }
        if (nextToken.type === 8) {
          const keywordToken = nextToken;
          if (keywordToken.keywordType === 15 || keywordToken.keywordType === 33 || keywordToken.keywordType === 9 || keywordToken.keywordType === 26) {
            return parseNodes_1.ConstantNode.create(this._getNextToken());
          }
          const keywordAsIdentifier = this._getTokenIfIdentifier();
          if (keywordAsIdentifier) {
            return parseNodes_1.NameNode.create(keywordAsIdentifier);
          }
        }
        return this._handleExpressionParseError(2, localize_1.Localizer.Diagnostic.expectedExpr());
      }
      // Allocates a dummy "error expression" and consumes the remainder
      // of the tokens on the line for error recovery. A partially-completed
      // child node can be passed to help the completion provider determine
      // what to do.
      _handleExpressionParseError(category, errorMsg, targetToken, childNode, additionalStopTokens) {
        this._addError(errorMsg, targetToken !== null && targetToken !== void 0 ? targetToken : this._peekToken());
        const expr = parseNodes_1.ErrorNode.create(this._peekToken(), category, childNode);
        const stopTokens = [
          2
          /* NewLine */
        ];
        if (additionalStopTokens) {
          (0, collectionUtils_1.appendArray)(stopTokens, additionalStopTokens);
        }
        this._consumeTokensUntilType(stopTokens);
        return expr;
      }
      // lambdef: 'lambda' [varargslist] ':' test
      _parseLambdaExpression(allowConditional = true) {
        const lambdaToken = this._getKeywordToken(
          24
          /* Lambda */
        );
        const argList = this._parseVarArgsList(
          10,
          /* allowAnnotations */
          false
        );
        if (!this._consumeTokenIfType(
          10
          /* Colon */
        )) {
          this._addError(localize_1.Localizer.Diagnostic.expectedColon(), this._peekToken());
        }
        let testExpr;
        if (allowConditional) {
          testExpr = this._parseTestExpression(
            /* allowAssignmentExpression */
            false
          );
        } else {
          testExpr = this._tryParseLambdaExpression(
            /* allowConditional */
            false
          ) || this._parseOrTest();
        }
        const lambdaNode = parseNodes_1.LambdaNode.create(lambdaToken, testExpr);
        lambdaNode.parameters = argList;
        argList.forEach((arg) => {
          arg.parent = lambdaNode;
        });
        return lambdaNode;
      }
      _tryParseLambdaExpression(allowConditional = true) {
        if (this._peekKeywordType() !== 24) {
          return void 0;
        }
        return this._parseLambdaExpression(allowConditional);
      }
      // ('(' [yield_expr | testlist_comp] ')'
      // testlist_comp: (test | star_expr) (comp_for | (',' (test | star_expr))* [','])
      _parseTupleAtom() {
        var _a2;
        const startParen = this._getNextToken();
        (0, debug_1.assert)(
          startParen.type === 13
          /* OpenParenthesis */
        );
        const yieldExpr = this._tryParseYieldExpression();
        if (yieldExpr) {
          if (this._peekTokenType() !== 14) {
            return this._handleExpressionParseError(8, localize_1.Localizer.Diagnostic.expectedCloseParen(), startParen, yieldExpr);
          } else {
            (0, parseNodes_1.extendRange)(yieldExpr, this._getNextToken());
          }
          return yieldExpr;
        }
        const exprListResult = this._parseTestListWithComprehension();
        const tupleOrExpression = this._makeExpressionOrTuple(
          exprListResult,
          /* enclosedInParens */
          true
        );
        const isExpression = exprListResult.list.length === 1 && !exprListResult.trailingComma;
        if (!isExpression) {
          (0, parseNodes_1.extendRange)(tupleOrExpression, startParen);
        }
        if (this._peekTokenType() !== 14) {
          return this._handleExpressionParseError(8, localize_1.Localizer.Diagnostic.expectedCloseParen(), startParen, (_a2 = exprListResult.parseError) !== null && _a2 !== void 0 ? _a2 : tupleOrExpression);
        } else {
          const nextToken = this._getNextToken();
          if (!isExpression) {
            (0, parseNodes_1.extendRange)(tupleOrExpression, nextToken);
          }
        }
        return tupleOrExpression;
      }
      // '[' [testlist_comp] ']'
      // testlist_comp: (test | star_expr) (comp_for | (',' (test | star_expr))* [','])
      _parseListAtom() {
        var _a2;
        const startBracket = this._getNextToken();
        (0, debug_1.assert)(
          startBracket.type === 15
          /* OpenBracket */
        );
        const exprListResult = this._parseTestListWithComprehension();
        const closeBracket = this._peekToken();
        if (!this._consumeTokenIfType(
          16
          /* CloseBracket */
        )) {
          return this._handleExpressionParseError(9, localize_1.Localizer.Diagnostic.expectedCloseBracket(), startBracket, (_a2 = exprListResult.parseError) !== null && _a2 !== void 0 ? _a2 : _createList());
        }
        return _createList();
        function _createList() {
          const listAtom = parseNodes_1.ListNode.create(startBracket);
          if (closeBracket) {
            (0, parseNodes_1.extendRange)(listAtom, closeBracket);
          }
          if (exprListResult.list.length > 0) {
            exprListResult.list.forEach((expr) => {
              expr.parent = listAtom;
            });
            (0, parseNodes_1.extendRange)(listAtom, exprListResult.list[exprListResult.list.length - 1]);
          }
          listAtom.entries = exprListResult.list;
          return listAtom;
        }
      }
      _parseTestListWithComprehension() {
        let sawComprehension = false;
        return this._parseExpressionListGeneric(() => {
          let expr = this._parseTestOrStarExpression(
            /* allowAssignmentExpression */
            true
          );
          const listComp = this._tryParseListComprehension(expr);
          if (listComp) {
            expr = listComp;
            sawComprehension = true;
          }
          return expr;
        }, () => this._isNextTokenNeverExpression(), () => sawComprehension);
      }
      // '{' [dictorsetmaker] '}'
      // dictorsetmaker: (
      //    (dictentry (comp_for | (',' dictentry)* [',']))
      //    | (setentry (comp_for | (',' setentry)* [',']))
      // )
      // dictentry: (test ':' test | '**' expr)
      // setentry: test | star_expr
      _parseDictionaryOrSetAtom() {
        const startBrace = this._getNextToken();
        (0, debug_1.assert)(
          startBrace.type === 17
          /* OpenCurlyBrace */
        );
        const dictionaryEntries = [];
        const setEntries = [];
        let isDictionary = false;
        let isSet = false;
        let sawListComprehension = false;
        let isFirstEntry = true;
        let trailingCommaToken;
        while (true) {
          if (this._peekTokenType() === 18) {
            break;
          }
          trailingCommaToken = void 0;
          let doubleStarExpression;
          let keyExpression;
          let valueExpression;
          const doubleStar = this._peekToken();
          if (this._consumeTokenIfOperator(
            29
            /* Power */
          )) {
            doubleStarExpression = this._parseExpression(
              /* allowUnpack */
              false
            );
          } else {
            keyExpression = this._parseTestOrStarExpression(
              /* allowAssignmentExpression */
              true
            );
            if (this._consumeTokenIfType(
              10
              /* Colon */
            )) {
              valueExpression = this._parseTestExpression(
                /* allowAssignmentExpression */
                false
              );
            }
          }
          if (keyExpression && valueExpression) {
            if (keyExpression.nodeType === 56) {
              this._addError(localize_1.Localizer.Diagnostic.unpackInDict(), keyExpression);
            }
            if (isSet) {
              this._addError(localize_1.Localizer.Diagnostic.keyValueInSet(), valueExpression);
            } else {
              const keyEntryNode = parseNodes_1.DictionaryKeyEntryNode.create(keyExpression, valueExpression);
              let dictEntry = keyEntryNode;
              const listComp = this._tryParseListComprehension(keyEntryNode);
              if (listComp) {
                dictEntry = listComp;
                sawListComprehension = true;
                if (!isFirstEntry) {
                  this._addError(localize_1.Localizer.Diagnostic.comprehensionInDict(), dictEntry);
                }
              }
              dictionaryEntries.push(dictEntry);
              isDictionary = true;
            }
          } else if (doubleStarExpression) {
            if (isSet) {
              this._addError(localize_1.Localizer.Diagnostic.unpackInSet(), doubleStarExpression);
            } else {
              const listEntryNode = parseNodes_1.DictionaryExpandEntryNode.create(doubleStarExpression);
              (0, parseNodes_1.extendRange)(listEntryNode, doubleStar);
              let expandEntryNode = listEntryNode;
              const listComp = this._tryParseListComprehension(listEntryNode);
              if (listComp) {
                expandEntryNode = listComp;
                sawListComprehension = true;
                if (!isFirstEntry) {
                  this._addError(localize_1.Localizer.Diagnostic.comprehensionInDict(), doubleStarExpression);
                }
              }
              dictionaryEntries.push(expandEntryNode);
              isDictionary = true;
            }
          } else {
            (0, debug_1.assert)(keyExpression !== void 0);
            if (keyExpression) {
              if (isDictionary) {
                const missingValueErrorNode = parseNodes_1.ErrorNode.create(
                  this._peekToken(),
                  13
                  /* MissingDictValue */
                );
                const keyEntryNode = parseNodes_1.DictionaryKeyEntryNode.create(keyExpression, missingValueErrorNode);
                dictionaryEntries.push(keyEntryNode);
                this._addError(localize_1.Localizer.Diagnostic.dictKeyValuePairs(), keyExpression);
              } else {
                const listComp = this._tryParseListComprehension(keyExpression);
                if (listComp) {
                  keyExpression = listComp;
                  sawListComprehension = true;
                  if (!isFirstEntry) {
                    this._addError(localize_1.Localizer.Diagnostic.comprehensionInSet(), keyExpression);
                  }
                }
                setEntries.push(keyExpression);
                isSet = true;
              }
            }
          }
          if (sawListComprehension) {
            break;
          }
          if (this._peekTokenType() !== 12) {
            break;
          }
          trailingCommaToken = this._getNextToken();
          isFirstEntry = false;
        }
        let closeCurlyBrace = this._peekToken();
        if (!this._consumeTokenIfType(
          18
          /* CloseCurlyBrace */
        )) {
          this._addError(localize_1.Localizer.Diagnostic.expectedCloseBrace(), startBrace);
          closeCurlyBrace = void 0;
        }
        if (isSet) {
          const setAtom = parseNodes_1.SetNode.create(startBrace);
          if (closeCurlyBrace) {
            (0, parseNodes_1.extendRange)(setAtom, closeCurlyBrace);
          }
          if (setEntries.length > 0) {
            (0, parseNodes_1.extendRange)(setAtom, setEntries[setEntries.length - 1]);
          }
          setEntries.forEach((entry) => {
            entry.parent = setAtom;
          });
          setAtom.entries = setEntries;
          return setAtom;
        }
        const dictionaryAtom = parseNodes_1.DictionaryNode.create(startBrace);
        if (trailingCommaToken) {
          dictionaryAtom.trailingCommaToken = trailingCommaToken;
          (0, parseNodes_1.extendRange)(dictionaryAtom, trailingCommaToken);
        }
        if (closeCurlyBrace) {
          (0, parseNodes_1.extendRange)(dictionaryAtom, closeCurlyBrace);
        }
        if (dictionaryEntries.length > 0) {
          dictionaryEntries.forEach((entry) => {
            entry.parent = dictionaryAtom;
          });
          (0, parseNodes_1.extendRange)(dictionaryAtom, dictionaryEntries[dictionaryEntries.length - 1]);
        }
        dictionaryAtom.entries = dictionaryEntries;
        return dictionaryAtom;
      }
      _parseExpressionListGeneric(parser, terminalCheck = () => this._isNextTokenNeverExpression(), finalEntryCheck = () => false) {
        let trailingComma = false;
        const list = [];
        let parseError;
        while (true) {
          if (terminalCheck()) {
            break;
          }
          const expr = parser();
          if (expr.nodeType === 0) {
            parseError = expr;
            break;
          }
          list.push(expr);
          if (finalEntryCheck()) {
            break;
          }
          if (!this._consumeTokenIfType(
            12
            /* Comma */
          )) {
            trailingComma = false;
            break;
          }
          trailingComma = true;
        }
        return { trailingComma, list, parseError };
      }
      // expr_stmt: testlist_star_expr (annassign | augassign (yield_expr | testlist) |
      //                     ('=' (yield_expr | testlist_star_expr))*)
      // testlist_star_expr: (test|star_expr) (',' (test|star_expr))* [',']
      // annassign: ':' test ['=' (yield_expr | testlist_star_expr)]
      // augassign: ('+=' | '-=' | '*=' | '@=' | '/=' | '%=' | '&=' | '|=' | '^=' |
      //             '<<=' | '>>=' | '**=' | '//=')
      _parseExpressionStatement() {
        let leftExpr = this._parseTestOrStarListAsExpression(
          /* allowAssignmentExpression */
          false,
          /* allowMultipleUnpack */
          false,
          2,
          localize_1.Localizer.Diagnostic.expectedExpr()
        );
        let annotationExpr;
        if (leftExpr.nodeType === 0) {
          return leftExpr;
        }
        if (this._consumeTokenIfType(
          10
          /* Colon */
        )) {
          annotationExpr = this._parseTypeAnnotation();
          leftExpr = parseNodes_1.TypeAnnotationNode.create(leftExpr, annotationExpr);
          if (!this._parseOptions.isStubFile && this._getLanguageVersion() < pythonVersion_1.PythonVersion.V3_6) {
            this._addError(localize_1.Localizer.Diagnostic.varAnnotationIllegal(), annotationExpr);
          }
          if (!this._consumeTokenIfOperator(
            2
            /* Assign */
          )) {
            return leftExpr;
          }
          const isTypeAliasDeclaration = this._isTypingAnnotation(annotationExpr, "TypeAlias");
          const wasParsingTypeAnnotation = this._isParsingTypeAnnotation;
          if (isTypeAliasDeclaration) {
            this._isParsingTypeAnnotation = true;
          }
          const rightExpr = this._tryParseYieldExpression() || this._parseTestOrStarListAsExpression(
            /* allowAssignmentExpression */
            false,
            /* allowMultipleUnpack */
            true,
            2,
            localize_1.Localizer.Diagnostic.expectedAssignRightHandExpr()
          );
          this._isParsingTypeAnnotation = wasParsingTypeAnnotation;
          return parseNodes_1.AssignmentNode.create(leftExpr, rightExpr);
        }
        if (this._consumeTokenIfOperator(
          2
          /* Assign */
        )) {
          return this._parseChainAssignments(leftExpr);
        }
        if (tokenizer_1.Tokenizer.isOperatorAssignment(this._peekOperatorType())) {
          const operatorToken = this._getNextToken();
          const rightExpr = this._tryParseYieldExpression() || this._parseTestListAsExpression(2, localize_1.Localizer.Diagnostic.expectedBinaryRightHandExpr());
          const destExpr = Object.assign({}, leftExpr);
          destExpr.id = (0, parseNodes_1.getNextNodeId)();
          return parseNodes_1.AugmentedAssignmentNode.create(leftExpr, rightExpr, operatorToken.operatorType, destExpr);
        }
        return leftExpr;
      }
      _parseChainAssignments(leftExpr) {
        let rightExpr = this._tryParseYieldExpression() || this._parseTestOrStarListAsExpression(
          /* allowAssignmentExpression */
          false,
          /* allowMultipleUnpack */
          true,
          2,
          localize_1.Localizer.Diagnostic.expectedAssignRightHandExpr()
        );
        if (rightExpr.nodeType === 0) {
          return parseNodes_1.AssignmentNode.create(leftExpr, rightExpr);
        }
        if (this._consumeTokenIfOperator(
          2
          /* Assign */
        )) {
          rightExpr = this._parseChainAssignments(rightExpr);
          if (rightExpr.nodeType === 0) {
            return rightExpr;
          }
        }
        const assignmentNode = parseNodes_1.AssignmentNode.create(leftExpr, rightExpr);
        const typeAnnotationComment = this._parseVariableTypeAnnotationComment();
        if (typeAnnotationComment) {
          assignmentNode.typeAnnotationComment = typeAnnotationComment;
          assignmentNode.typeAnnotationComment.parent = assignmentNode;
          (0, parseNodes_1.extendRange)(assignmentNode, assignmentNode.typeAnnotationComment);
        }
        return assignmentNode;
      }
      _parseFunctionTypeAnnotation() {
        const openParenToken = this._peekToken();
        if (!this._consumeTokenIfType(
          13
          /* OpenParenthesis */
        )) {
          this._addError(localize_1.Localizer.Diagnostic.expectedOpenParen(), this._peekToken());
          return void 0;
        }
        let paramAnnotations = [];
        while (true) {
          const nextTokenType = this._peekTokenType();
          if (nextTokenType === 14 || nextTokenType === 2 || nextTokenType === 1) {
            break;
          }
          this._consumeTokenIfOperator(
            26
            /* Multiply */
          ) || this._consumeTokenIfOperator(
            29
            /* Power */
          );
          const paramAnnotation = this._parseTypeAnnotation();
          paramAnnotations.push(paramAnnotation);
          if (!this._consumeTokenIfType(
            12
            /* Comma */
          )) {
            break;
          }
        }
        if (!this._consumeTokenIfType(
          14
          /* CloseParenthesis */
        )) {
          this._addError(localize_1.Localizer.Diagnostic.expectedCloseParen(), openParenToken);
          this._consumeTokensUntilType([
            10
            /* Colon */
          ]);
        }
        if (!this._consumeTokenIfType(
          21
          /* Arrow */
        )) {
          this._addError(localize_1.Localizer.Diagnostic.expectedArrow(), this._peekToken());
          return void 0;
        }
        const returnType = this._parseTypeAnnotation();
        let isParamListEllipsis = false;
        if (paramAnnotations.length === 1 && paramAnnotations[0].nodeType === 18) {
          paramAnnotations = [];
          isParamListEllipsis = true;
        }
        return parseNodes_1.FunctionAnnotationNode.create(openParenToken, isParamListEllipsis, paramAnnotations, returnType);
      }
      _parseTypeAnnotation(allowUnpack = false) {
        const wasParsingTypeAnnotation = this._isParsingTypeAnnotation;
        this._isParsingTypeAnnotation = true;
        const startToken = this._peekToken();
        const isUnpack = this._consumeTokenIfOperator(
          26
          /* Multiply */
        );
        if (isUnpack) {
          if (!allowUnpack) {
            this._addError(localize_1.Localizer.Diagnostic.unpackInAnnotation(), startToken);
          } else if (!this._parseOptions.isStubFile && this._getLanguageVersion() < pythonVersion_1.PythonVersion.V3_11) {
            this._addError(localize_1.Localizer.Diagnostic.unpackedSubscriptIllegal(), startToken);
          }
        }
        let result = this._parseTestExpression(
          /* allowAssignmentExpression */
          false
        );
        if (isUnpack && allowUnpack) {
          result = parseNodes_1.UnpackNode.create(startToken, result);
        }
        this._isParsingTypeAnnotation = wasParsingTypeAnnotation;
        return result;
      }
      _reportStringTokenErrors(stringToken, unescapedResult) {
        if (stringToken.flags & 65536) {
          this._addError(localize_1.Localizer.Diagnostic.stringUnterminated(), stringToken);
        }
        if (unescapedResult.nonAsciiInBytes) {
          this._addError(localize_1.Localizer.Diagnostic.stringNonAsciiBytes(), stringToken);
        }
        if (stringToken.flags & 64) {
          if (this._getLanguageVersion() < pythonVersion_1.PythonVersion.V3_6) {
            this._addError(localize_1.Localizer.Diagnostic.formatStringIllegal(), stringToken);
          }
          if (stringToken.flags & 32) {
            this._addError(localize_1.Localizer.Diagnostic.formatStringBytes(), stringToken);
          }
          if (stringToken.flags & 16) {
            this._addError(localize_1.Localizer.Diagnostic.formatStringUnicode(), stringToken);
          }
        }
      }
      _makeStringNode(stringToken) {
        const unescapedResult = StringTokenUtils.getUnescapedString(stringToken);
        this._reportStringTokenErrors(stringToken, unescapedResult);
        return parseNodes_1.StringNode.create(stringToken, unescapedResult.value, unescapedResult.unescapeErrors.length > 0);
      }
      _getTypeAnnotationCommentText() {
        if (this._tokenIndex === 0) {
          return void 0;
        }
        const curToken = this._tokenizerOutput.tokens.getItemAt(this._tokenIndex - 1);
        const nextToken = this._tokenizerOutput.tokens.getItemAt(this._tokenIndex);
        if (curToken.start + curToken.length === nextToken.start) {
          return void 0;
        }
        const interTokenContents = this._fileContents.substring(curToken.start + curToken.length, nextToken.start);
        const commentRegEx = /^(\s*#\s*type:\s*)([^\r\n]*)/;
        const match2 = interTokenContents.match(commentRegEx);
        if (!match2) {
          return void 0;
        }
        const typeString = match2[2];
        if (typeString.trim().match(/^ignore(\s|\[|$)/)) {
          return void 0;
        }
        const tokenOffset = curToken.start + curToken.length + match2[1].length;
        return tokenizerTypes_1.StringToken.create(
          tokenOffset,
          typeString.length,
          0,
          typeString,
          0,
          /* comments */
          void 0
        );
      }
      _parseVariableTypeAnnotationComment() {
        const stringToken = this._getTypeAnnotationCommentText();
        if (!stringToken) {
          return void 0;
        }
        const stringNode = this._makeStringNode(stringToken);
        const stringListNode = parseNodes_1.StringListNode.create([stringNode]);
        const parser = new _Parser();
        const parseResults = parser.parseTextExpression(
          this._fileContents,
          stringToken.start,
          stringToken.length,
          this._parseOptions,
          1,
          /* initialParenDepth */
          void 0,
          this._typingSymbolAliases
        );
        parseResults.diagnostics.forEach((diag) => {
          this._addError(diag.message, stringListNode);
        });
        if (!parseResults.parseTree) {
          return void 0;
        }
        (0, debug_1.assert)(
          parseResults.parseTree.nodeType !== 62
          /* FunctionAnnotation */
        );
        return parseResults.parseTree;
      }
      _parseFunctionTypeAnnotationComment(stringToken, functionNode) {
        const stringNode = this._makeStringNode(stringToken);
        const stringListNode = parseNodes_1.StringListNode.create([stringNode]);
        const parser = new _Parser();
        const parseResults = parser.parseTextExpression(
          this._fileContents,
          stringToken.start,
          stringToken.length,
          this._parseOptions,
          2,
          /* initialParenDepth */
          void 0,
          this._typingSymbolAliases
        );
        parseResults.diagnostics.forEach((diag) => {
          this._addError(diag.message, stringListNode);
        });
        if (!parseResults.parseTree || parseResults.parseTree.nodeType !== 62) {
          return;
        }
        const functionAnnotation = parseResults.parseTree;
        functionNode.functionAnnotationComment = functionAnnotation;
        functionAnnotation.parent = functionNode;
        (0, parseNodes_1.extendRange)(functionNode, functionAnnotation);
      }
      _parseFormatStringSegment(stringToken, segment, segmentOffset, segmentLength) {
        (0, debug_1.assert)(segment.isExpression);
        const parser = new _Parser();
        const parseResults = parser.parseTextExpression(
          this._fileContents,
          stringToken.start + stringToken.prefixLength + stringToken.quoteMarkLength + segment.offset + segmentOffset,
          segmentLength,
          this._parseOptions,
          0,
          /* initialParenDepth */
          1,
          this._typingSymbolAliases
        );
        parseResults.diagnostics.forEach((diag) => {
          const textRangeStart = (diag.range ? (0, positionUtils_1.convertPositionToOffset)(diag.range.start, parseResults.lines) : stringToken.start) || stringToken.start;
          const textRangeEnd = (diag.range ? ((0, positionUtils_1.convertPositionToOffset)(diag.range.end, parseResults.lines) || 0) + 1 : stringToken.start + stringToken.length) || stringToken.start + stringToken.length;
          const textRange = { start: textRangeStart, length: textRangeEnd - textRangeStart };
          this._addError(diag.message, textRange);
        });
        return parseResults.parseTree;
      }
      _parseFormatString(stringToken) {
        const unescapedResult = StringTokenUtils.getUnescapedString(stringToken);
        this._reportStringTokenErrors(stringToken, unescapedResult);
        const formatExpressions = [];
        for (const segment of unescapedResult.formatStringSegments) {
          if (segment.isExpression) {
            const segmentExprLength = this._getFormatStringExpressionLength(segment.value.trimEnd());
            const parseTree = this._parseFormatStringSegment(stringToken, segment, 0, segmentExprLength);
            if (parseTree) {
              (0, debug_1.assert)(
                parseTree.nodeType !== 62
                /* FunctionAnnotation */
              );
              formatExpressions.push(parseTree);
            }
            const formatDirective = segment.value.substr(segmentExprLength);
            let braceDepth = 0;
            let startOfExprOffset = 0;
            for (let i = 0; i < formatDirective.length; i++) {
              if (formatDirective.charCodeAt(i) === 123) {
                if (braceDepth === 0) {
                  startOfExprOffset = i + 1;
                }
                braceDepth++;
              } else if (formatDirective.charCodeAt(i) === 125) {
                if (braceDepth > 0) {
                  braceDepth--;
                  if (braceDepth === 0) {
                    const formatSegmentLength = this._getFormatStringExpressionLength(segment.value.substr(segmentExprLength + startOfExprOffset, i - startOfExprOffset));
                    const parseTree2 = this._parseFormatStringSegment(stringToken, segment, segmentExprLength + startOfExprOffset, formatSegmentLength);
                    if (parseTree2) {
                      (0, debug_1.assert)(
                        parseTree2.nodeType !== 62
                        /* FunctionAnnotation */
                      );
                      formatExpressions.push(parseTree2);
                    }
                  }
                }
              }
            }
          }
        }
        return parseNodes_1.FormatStringNode.create(stringToken, unescapedResult.value, unescapedResult.unescapeErrors.length > 0, formatExpressions);
      }
      _getFormatStringExpressionLength(segmentValue) {
        let segmentExprLength = 0;
        const quoteStack = [];
        let braceCount = 0;
        let parenCount = 0;
        let bracketCount = 0;
        let indexOfDebugEqual;
        while (segmentExprLength < segmentValue.length) {
          const curChar = segmentValue[segmentExprLength];
          const ignoreSeparator = quoteStack.length > 0 || braceCount > 0 || parenCount > 0 || bracketCount > 0;
          const inString = quoteStack.length > 0;
          if (curChar === "=") {
            indexOfDebugEqual = segmentExprLength;
          } else {
            if (curChar === ":") {
              if (!ignoreSeparator) {
                break;
              }
            } else if (curChar === "!") {
              if (!ignoreSeparator) {
                if (segmentExprLength === segmentValue.length - 1 || segmentValue[segmentExprLength + 1] !== "=") {
                  break;
                }
              }
            } else if (curChar === "'" || curChar === '"') {
              let quoteSequence = curChar;
              if (segmentExprLength + 2 < segmentValue.length && segmentValue[segmentExprLength + 1] === curChar && segmentValue[segmentExprLength + 2] === curChar) {
                quoteSequence = curChar + curChar + curChar;
                segmentExprLength += 2;
              }
              if (quoteStack.length > 0 && quoteStack[quoteStack.length - 1] === quoteSequence) {
                quoteStack.pop();
              } else if (quoteStack.length === 0) {
                quoteStack.push(quoteSequence);
              }
            } else if (curChar === "(") {
              if (!inString) {
                parenCount++;
              }
            } else if (curChar === ")") {
              if (!inString && parenCount > 0) {
                parenCount--;
              }
            } else if (curChar === "{") {
              if (!inString) {
                braceCount++;
              }
            } else if (curChar === "}") {
              if (!inString && braceCount > 0) {
                braceCount--;
              }
            } else if (curChar === "[") {
              if (!inString) {
                bracketCount++;
              }
            } else if (curChar === "]") {
              if (!inString && bracketCount > 0) {
                bracketCount--;
              }
            }
            if (curChar !== " ") {
              indexOfDebugEqual = void 0;
            }
          }
          segmentExprLength++;
        }
        if (this._parseOptions.pythonVersion >= pythonVersion_1.PythonVersion.V3_8 && indexOfDebugEqual !== void 0) {
          segmentExprLength = indexOfDebugEqual;
        }
        return segmentExprLength;
      }
      _createBinaryOperationNode(leftExpression, rightExpression, operatorToken, operator) {
        if (leftExpression.maxChildDepth !== void 0 && leftExpression.maxChildDepth >= maxChildNodeDepth) {
          leftExpression = parseNodes_1.ErrorNode.create(
            leftExpression,
            14
            /* MaxDepthExceeded */
          );
          this._addError(localize_1.Localizer.Diagnostic.maxParseDepthExceeded(), leftExpression);
        }
        if (rightExpression.maxChildDepth !== void 0 && rightExpression.maxChildDepth >= maxChildNodeDepth) {
          rightExpression = parseNodes_1.ErrorNode.create(
            rightExpression,
            14
            /* MaxDepthExceeded */
          );
          this._addError(localize_1.Localizer.Diagnostic.maxParseDepthExceeded(), rightExpression);
        }
        return parseNodes_1.BinaryOperationNode.create(leftExpression, rightExpression, operatorToken, operator);
      }
      _createUnaryOperationNode(operatorToken, expression, operator) {
        if (expression.maxChildDepth !== void 0 && expression.maxChildDepth >= maxChildNodeDepth) {
          expression = parseNodes_1.ErrorNode.create(
            expression,
            14
            /* MaxDepthExceeded */
          );
          this._addError(localize_1.Localizer.Diagnostic.maxParseDepthExceeded(), expression);
        }
        return parseNodes_1.UnaryOperationNode.create(operatorToken, expression, operator);
      }
      _parseStringList() {
        const stringList = [];
        while (this._peekTokenType() === 5) {
          const stringToken = this._getNextToken();
          if (stringToken.flags & 64) {
            stringList.push(this._parseFormatString(stringToken));
          } else {
            stringList.push(this._makeStringNode(stringToken));
          }
        }
        const stringNode = parseNodes_1.StringListNode.create(stringList);
        if (this._isParsingTypeAnnotation) {
          if (stringNode.strings.length > 1) {
            this._addError(localize_1.Localizer.Diagnostic.annotationSpansStrings(), stringNode);
          } else if (stringNode.strings[0].token.flags & 64) {
            this._addError(localize_1.Localizer.Diagnostic.annotationFormatString(), stringNode);
          } else {
            const stringToken = stringNode.strings[0].token;
            const stringValue = StringTokenUtils.getUnescapedString(stringNode.strings[0].token);
            const unescapedString = stringValue.value;
            const tokenOffset = stringToken.start;
            const prefixLength = stringToken.prefixLength + stringToken.quoteMarkLength;
            if (unescapedString.length !== stringToken.length - prefixLength - stringToken.quoteMarkLength) {
              this._addError(localize_1.Localizer.Diagnostic.annotationStringEscape(), stringNode);
            } else {
              const parser = new _Parser();
              const parseResults = parser.parseTextExpression(this._fileContents, tokenOffset + prefixLength, unescapedString.length, this._parseOptions, 1, (stringNode.strings[0].token.flags & 4) !== 0 ? 1 : 0, this._typingSymbolAliases);
              if (parseResults.diagnostics.length === 0 || this._parseOptions.reportErrorsForParsedStringContents) {
                parseResults.diagnostics.forEach((diag) => {
                  this._addError(diag.message, stringNode);
                });
                if (parseResults.parseTree) {
                  (0, debug_1.assert)(
                    parseResults.parseTree.nodeType !== 62
                    /* FunctionAnnotation */
                  );
                  stringNode.typeAnnotation = parseResults.parseTree;
                  stringNode.typeAnnotation.parent = stringNode;
                }
              }
            }
          }
        }
        return stringNode;
      }
      // Python 3.8 added support for star (unpack) expressions in tuples
      // following a return or yield statement in cases where the tuple
      // wasn't surrounded in parentheses.
      _reportConditionalErrorForStarTupleElement(possibleTupleExpr) {
        if (possibleTupleExpr.nodeType !== 52) {
          return;
        }
        if (possibleTupleExpr.enclosedInParens) {
          return;
        }
        if (this._parseOptions.pythonVersion >= pythonVersion_1.PythonVersion.V3_8) {
          return;
        }
        for (const expr of possibleTupleExpr.expressions) {
          if (expr.nodeType === 56) {
            this._addError(localize_1.Localizer.Diagnostic.unpackTuplesIllegal(), expr);
            return;
          }
        }
      }
      // Peeks at the next token and returns true if it can never
      // represent the start of an expression.
      _isNextTokenNeverExpression() {
        const nextToken = this._peekToken();
        switch (nextToken.type) {
          case 8: {
            switch (this._peekKeywordType()) {
              case 17:
              case 22:
              case 20:
                return true;
            }
            break;
          }
          case 9: {
            switch (this._peekOperatorType()) {
              case 1:
              case 34:
              case 27:
              case 11:
              case 25:
              case 4:
              case 7:
              case 9:
              case 18:
              case 32:
              case 30:
              case 14:
              case 2:
                return true;
            }
            break;
          }
          case 3:
          case 4:
          case 2:
          case 1:
          case 11:
          case 14:
          case 16:
          case 18:
          case 12:
          case 10:
            return true;
        }
        return false;
      }
      _disallowAssignmentExpression(callback) {
        const wasAllowed = this._assignmentExpressionsAllowed;
        this._assignmentExpressionsAllowed = false;
        callback();
        this._assignmentExpressionsAllowed = wasAllowed;
      }
      _getNextToken() {
        const token = this._tokenizerOutput.tokens.getItemAt(this._tokenIndex);
        if (!this._atEof()) {
          this._tokenIndex++;
        }
        return token;
      }
      _atEof() {
        return this._tokenIndex >= this._tokenizerOutput.tokens.count - 1;
      }
      _peekToken(count = 0) {
        if (this._tokenIndex + count < 0) {
          return this._tokenizerOutput.tokens.getItemAt(0);
        }
        if (this._tokenIndex + count >= this._tokenizerOutput.tokens.count) {
          return this._tokenizerOutput.tokens.getItemAt(this._tokenizerOutput.tokens.count - 1);
        }
        return this._tokenizerOutput.tokens.getItemAt(this._tokenIndex + count);
      }
      _peekTokenType() {
        return this._peekToken().type;
      }
      _peekKeywordType() {
        const nextToken = this._peekToken();
        if (nextToken.type !== 8) {
          return void 0;
        }
        return nextToken.keywordType;
      }
      _peekOperatorType() {
        const nextToken = this._peekToken();
        if (nextToken.type !== 9) {
          return void 0;
        }
        return nextToken.operatorType;
      }
      _getTokenIfIdentifier() {
        const nextToken = this._peekToken();
        if (nextToken.type === 7) {
          return this._getNextToken();
        }
        if (nextToken.type === 0) {
          this._getNextToken();
          this._addError(localize_1.Localizer.Diagnostic.invalidIdentifierChar(), nextToken);
          return tokenizerTypes_1.IdentifierToken.create(nextToken.start, nextToken.length, "", nextToken.comments);
        }
        if (nextToken.type === 8) {
          const keywordType = this._peekKeywordType();
          const softKeywords = [
            9,
            25,
            6
            /* Case */
          ];
          if (softKeywords.find((type) => type === keywordType)) {
            const keywordText = this._fileContents.substr(nextToken.start, nextToken.length);
            this._getNextToken();
            return tokenizerTypes_1.IdentifierToken.create(nextToken.start, nextToken.length, keywordText, nextToken.comments);
          }
        }
        return void 0;
      }
      // Consumes tokens until the next one in the stream is
      // either a specified terminator or the end-of-stream
      // token.
      _consumeTokensUntilType(terminators) {
        while (true) {
          const token = this._peekToken();
          if (terminators.some((term) => term === token.type)) {
            return true;
          }
          if (token.type === 1) {
            return false;
          }
          this._getNextToken();
        }
      }
      _getTokenIfType(tokenType) {
        if (this._peekTokenType() === tokenType) {
          return this._getNextToken();
        }
        return void 0;
      }
      _consumeTokenIfType(tokenType) {
        return !!this._getTokenIfType(tokenType);
      }
      _consumeTokenIfKeyword(keywordType) {
        if (this._peekKeywordType() === keywordType) {
          this._getNextToken();
          return true;
        }
        return false;
      }
      _consumeTokenIfOperator(operatorType) {
        if (this._peekOperatorType() === operatorType) {
          this._getNextToken();
          return true;
        }
        return false;
      }
      _getKeywordToken(keywordType) {
        const keywordToken = this._getNextToken();
        (0, debug_1.assert)(
          keywordToken.type === 8
          /* Keyword */
        );
        (0, debug_1.assert)(keywordToken.keywordType === keywordType);
        return keywordToken;
      }
      _getLanguageVersion() {
        return this._parseOptions.pythonVersion;
      }
      _suppressErrors(callback) {
        const errorsWereSuppressed = this._areErrorsSuppressed;
        try {
          this._areErrorsSuppressed = true;
          callback();
        } finally {
          this._areErrorsSuppressed = errorsWereSuppressed;
        }
      }
      _addError(message, range2) {
        (0, debug_1.assert)(range2 !== void 0);
        if (!this._areErrorsSuppressed) {
          this._diagSink.addError(message, (0, positionUtils_1.convertOffsetsToRange)(range2.start, range2.start + range2.length, this._tokenizerOutput.lines));
        }
      }
    };
    exports2.Parser = Parser2;
  }
});

// node_modules/@zzzen/pyright-internal/dist/analyzer/codeFlowTypes.js
var require_codeFlowTypes = __commonJS({
  "node_modules/@zzzen/pyright-internal/dist/analyzer/codeFlowTypes.js"(exports2) {
    "use strict";
    Object.defineProperty(exports2, "__esModule", { value: true });
    exports2.createKeysForReferenceSubexpressions = exports2.createKeyForReference = exports2.isCodeFlowSupportedForReference = exports2.getUniqueFlowNodeId = exports2.FlowFlags = void 0;
    var debug_1 = require_debug();
    var FlowFlags;
    (function(FlowFlags2) {
      FlowFlags2[FlowFlags2["Unreachable"] = 1] = "Unreachable";
      FlowFlags2[FlowFlags2["Start"] = 2] = "Start";
      FlowFlags2[FlowFlags2["BranchLabel"] = 4] = "BranchLabel";
      FlowFlags2[FlowFlags2["LoopLabel"] = 8] = "LoopLabel";
      FlowFlags2[FlowFlags2["Assignment"] = 16] = "Assignment";
      FlowFlags2[FlowFlags2["Unbind"] = 32] = "Unbind";
      FlowFlags2[FlowFlags2["WildcardImport"] = 64] = "WildcardImport";
      FlowFlags2[FlowFlags2["TrueCondition"] = 128] = "TrueCondition";
      FlowFlags2[FlowFlags2["FalseCondition"] = 512] = "FalseCondition";
      FlowFlags2[FlowFlags2["Call"] = 1024] = "Call";
      FlowFlags2[FlowFlags2["PreFinallyGate"] = 2048] = "PreFinallyGate";
      FlowFlags2[FlowFlags2["PostFinally"] = 4096] = "PostFinally";
      FlowFlags2[FlowFlags2["VariableAnnotation"] = 16384] = "VariableAnnotation";
      FlowFlags2[FlowFlags2["PostContextManager"] = 32768] = "PostContextManager";
      FlowFlags2[FlowFlags2["TrueNeverCondition"] = 65536] = "TrueNeverCondition";
      FlowFlags2[FlowFlags2["FalseNeverCondition"] = 131072] = "FalseNeverCondition";
      FlowFlags2[FlowFlags2["NarrowForPattern"] = 262144] = "NarrowForPattern";
      FlowFlags2[FlowFlags2["ExhaustedMatch"] = 524288] = "ExhaustedMatch";
    })(FlowFlags = exports2.FlowFlags || (exports2.FlowFlags = {}));
    var _nextFlowNodeId = 1;
    function getUniqueFlowNodeId() {
      return _nextFlowNodeId++;
    }
    exports2.getUniqueFlowNodeId = getUniqueFlowNodeId;
    function isCodeFlowSupportedForReference(reference) {
      if (reference.nodeType === 38) {
        return true;
      }
      if (reference.nodeType === 35) {
        return isCodeFlowSupportedForReference(reference.leftExpression);
      }
      if (reference.nodeType === 24) {
        if (reference.items.length !== 1 || reference.trailingComma || reference.items[0].name !== void 0 || reference.items[0].argumentCategory !== 0) {
          return false;
        }
        const subscriptNode = reference.items[0].valueExpression;
        const isIntegerIndex = subscriptNode.nodeType === 40 && !subscriptNode.isImaginary && subscriptNode.isInteger;
        const isNegativeIntegerIndex = subscriptNode.nodeType === 55 && subscriptNode.operator === 33 && subscriptNode.expression.nodeType === 40 && !subscriptNode.expression.isImaginary && subscriptNode.expression.isInteger;
        const isStringIndex = subscriptNode.nodeType === 48 && subscriptNode.strings.length === 1 && subscriptNode.strings[0].nodeType === 49;
        if (!isIntegerIndex && !isNegativeIntegerIndex && !isStringIndex) {
          return false;
        }
        return isCodeFlowSupportedForReference(reference.baseExpression);
      }
      return false;
    }
    exports2.isCodeFlowSupportedForReference = isCodeFlowSupportedForReference;
    function createKeyForReference(reference) {
      let key;
      if (reference.nodeType === 38) {
        key = reference.value;
      } else if (reference.nodeType === 35) {
        const leftKey = createKeyForReference(reference.leftExpression);
        key = `${leftKey}.${reference.memberName.value}`;
      } else if (reference.nodeType === 24) {
        const leftKey = createKeyForReference(reference.baseExpression);
        (0, debug_1.assert)(reference.items.length === 1);
        const expr = reference.items[0].valueExpression;
        if (expr.nodeType === 40) {
          key = `${leftKey}[${expr.value.toString()}]`;
        } else if (expr.nodeType === 48) {
          const valExpr = expr;
          (0, debug_1.assert)(
            valExpr.strings.length === 1 && valExpr.strings[0].nodeType === 49
            /* String */
          );
          key = `${leftKey}["${valExpr.strings[0].value}"]`;
        } else if (expr.nodeType === 55 && expr.operator === 33 && expr.expression.nodeType === 40) {
          key = `${leftKey}[-${expr.expression.value.toString()}]`;
        } else {
          (0, debug_1.fail)("createKeyForReference received unexpected index type");
        }
      } else {
        (0, debug_1.fail)("createKeyForReference received unexpected expression type");
      }
      return key;
    }
    exports2.createKeyForReference = createKeyForReference;
    function createKeysForReferenceSubexpressions(reference) {
      if (reference.nodeType === 38) {
        return [createKeyForReference(reference)];
      }
      if (reference.nodeType === 35) {
        return [
          ...createKeysForReferenceSubexpressions(reference.leftExpression),
          createKeyForReference(reference)
        ];
      }
      if (reference.nodeType === 24) {
        return [
          ...createKeysForReferenceSubexpressions(reference.baseExpression),
          createKeyForReference(reference)
        ];
      }
      (0, debug_1.fail)("createKeyForReference received unexpected expression type");
    }
    exports2.createKeysForReferenceSubexpressions = createKeysForReferenceSubexpressions;
  }
});

// node_modules/@zzzen/pyright-internal/dist/analyzer/analyzerNodeInfo.js
var require_analyzerNodeInfo = __commonJS({
  "node_modules/@zzzen/pyright-internal/dist/analyzer/analyzerNodeInfo.js"(exports2) {
    "use strict";
    Object.defineProperty(exports2, "__esModule", { value: true });
    exports2.isCodeUnreachable = exports2.setDunderAllInfo = exports2.getDunderAllInfo = exports2.setCodeFlowComplexity = exports2.getCodeFlowComplexity = exports2.setCodeFlowExpressions = exports2.getCodeFlowExpressions = exports2.setFileInfo = exports2.getFileInfo = exports2.setAfterFlowNode = exports2.getAfterFlowNode = exports2.setFlowNode = exports2.getFlowNode = exports2.setDeclaration = exports2.getDeclaration = exports2.setScope = exports2.getScope = exports2.setImportInfo = exports2.getImportInfo = exports2.cleanNodeAnalysisInfo = void 0;
    var codeFlowTypes_1 = require_codeFlowTypes();
    function cleanNodeAnalysisInfo(node) {
      const analyzerNode = node;
      delete analyzerNode.scope;
      delete analyzerNode.declaration;
      delete analyzerNode.flowNode;
      delete analyzerNode.afterFlowNode;
      delete analyzerNode.fileInfo;
      delete analyzerNode.codeFlowExpressions;
      delete analyzerNode.codeFlowComplexity;
      delete analyzerNode.dunderAllInfo;
    }
    exports2.cleanNodeAnalysisInfo = cleanNodeAnalysisInfo;
    function getImportInfo(node) {
      const analyzerNode = node;
      return analyzerNode.importInfo;
    }
    exports2.getImportInfo = getImportInfo;
    function setImportInfo(node, importInfo) {
      const analyzerNode = node;
      analyzerNode.importInfo = importInfo;
    }
    exports2.setImportInfo = setImportInfo;
    function getScope(node) {
      const analyzerNode = node;
      return analyzerNode.scope;
    }
    exports2.getScope = getScope;
    function setScope(node, scope) {
      const analyzerNode = node;
      analyzerNode.scope = scope;
    }
    exports2.setScope = setScope;
    function getDeclaration(node) {
      const analyzerNode = node;
      return analyzerNode.declaration;
    }
    exports2.getDeclaration = getDeclaration;
    function setDeclaration(node, decl) {
      const analyzerNode = node;
      analyzerNode.declaration = decl;
    }
    exports2.setDeclaration = setDeclaration;
    function getFlowNode(node) {
      const analyzerNode = node;
      return analyzerNode.flowNode;
    }
    exports2.getFlowNode = getFlowNode;
    function setFlowNode(node, flowNode) {
      const analyzerNode = node;
      analyzerNode.flowNode = flowNode;
    }
    exports2.setFlowNode = setFlowNode;
    function getAfterFlowNode(node) {
      const analyzerNode = node;
      return analyzerNode.afterFlowNode;
    }
    exports2.getAfterFlowNode = getAfterFlowNode;
    function setAfterFlowNode(node, flowNode) {
      const analyzerNode = node;
      analyzerNode.afterFlowNode = flowNode;
    }
    exports2.setAfterFlowNode = setAfterFlowNode;
    function getFileInfo(node) {
      while (node.nodeType !== 36) {
        node = node.parent;
      }
      const analyzerNode = node;
      return analyzerNode.fileInfo;
    }
    exports2.getFileInfo = getFileInfo;
    function setFileInfo(node, fileInfo) {
      const analyzerNode = node;
      analyzerNode.fileInfo = fileInfo;
    }
    exports2.setFileInfo = setFileInfo;
    function getCodeFlowExpressions(node) {
      const analyzerNode = node;
      return analyzerNode.codeFlowExpressions;
    }
    exports2.getCodeFlowExpressions = getCodeFlowExpressions;
    function setCodeFlowExpressions(node, expressions) {
      const analyzerNode = node;
      analyzerNode.codeFlowExpressions = expressions;
    }
    exports2.setCodeFlowExpressions = setCodeFlowExpressions;
    function getCodeFlowComplexity(node) {
      var _a2;
      const analyzerNode = node;
      return (_a2 = analyzerNode.codeFlowComplexity) !== null && _a2 !== void 0 ? _a2 : 0;
    }
    exports2.getCodeFlowComplexity = getCodeFlowComplexity;
    function setCodeFlowComplexity(node, complexity) {
      const analyzerNode = node;
      analyzerNode.codeFlowComplexity = complexity;
    }
    exports2.setCodeFlowComplexity = setCodeFlowComplexity;
    function getDunderAllInfo(node) {
      const analyzerNode = node;
      return analyzerNode.dunderAllInfo;
    }
    exports2.getDunderAllInfo = getDunderAllInfo;
    function setDunderAllInfo(node, names) {
      const analyzerNode = node;
      analyzerNode.dunderAllInfo = names;
    }
    exports2.setDunderAllInfo = setDunderAllInfo;
    function isCodeUnreachable(node) {
      let curNode = node;
      while (curNode) {
        const flowNode = getFlowNode(curNode);
        if (flowNode) {
          return !!(flowNode.flags & codeFlowTypes_1.FlowFlags.Unreachable);
        }
        curNode = curNode.parent;
      }
      return false;
    }
    exports2.isCodeUnreachable = isCodeUnreachable;
  }
});

// node_modules/@zzzen/pyright-internal/dist/analyzer/parseTreeWalker.js
var require_parseTreeWalker = __commonJS({
  "node_modules/@zzzen/pyright-internal/dist/analyzer/parseTreeWalker.js"(exports2) {
    "use strict";
    Object.defineProperty(exports2, "__esModule", { value: true });
    exports2.ParseTreeWalker = void 0;
    var ParseTreeWalker4 = class {
      walk(node) {
        const childrenToWalk = this.visitNode(node);
        if (childrenToWalk.length > 0) {
          this.walkMultiple(childrenToWalk);
        }
      }
      walkMultiple(nodes) {
        nodes.forEach((node) => {
          if (node) {
            this.walk(node);
          }
        });
      }
      // Calls the node-specific method (visitXXXX). If the method
      // returns true, all child nodes for the node are returned.
      // If the method returns false, we assume that the handler
      // has already handled the child nodes, so an empty list is
      // returned.
      visitNode(node) {
        var _a2;
        switch (node.nodeType) {
          case 0:
            return this.visitError(node) ? [node.child, ...(_a2 = node.decorators) !== null && _a2 !== void 0 ? _a2 : []] : [];
          case 1:
            return this.visitArgument(node) ? [node.name, node.valueExpression] : [];
          case 2:
            return this.visitAssert(node) ? [node.testExpression, node.exceptionExpression] : [];
          case 4:
            return this.visitAssignmentExpression(node) ? [node.name, node.rightExpression] : [];
          case 3:
            return this.visitAssignment(node) ? [node.leftExpression, node.rightExpression, node.typeAnnotationComment] : [];
          case 5:
            return this.visitAugmentedAssignment(node) ? [node.leftExpression, node.rightExpression] : [];
          case 6:
            return this.visitAwait(node) ? [node.expression] : [];
          case 7:
            return this.visitBinaryOperation(node) ? [node.leftExpression, node.rightExpression] : [];
          case 8:
            return this.visitBreak(node) ? [] : [];
          case 9:
            return this.visitCall(node) ? [node.leftExpression, ...node.arguments] : [];
          case 64:
            return this.visitCase(node) ? [node.pattern, node.guardExpression, node.suite] : [];
          case 10:
            return this.visitClass(node) ? [...node.decorators, node.name, ...node.arguments, node.suite] : [];
          case 11:
            return this.visitConstant(node) ? [] : [];
          case 12:
            return this.visitContinue(node) ? [] : [];
          case 13:
            return this.visitDecorator(node) ? [node.expression] : [];
          case 14:
            return this.visitDel(node) ? node.expressions : [];
          case 15:
            return this.visitDictionary(node) ? node.entries : [];
          case 16:
            return this.visitDictionaryExpandEntry(node) ? [node.expandExpression] : [];
          case 17:
            return this.visitDictionaryKeyEntry(node) ? [node.keyExpression, node.valueExpression] : [];
          case 18:
            return this.visitEllipsis(node) ? [] : [];
          case 19:
            return this.visitIf(node) ? [node.testExpression, node.ifSuite, node.elseSuite] : [];
          case 20:
            return this.visitImport(node) ? node.list : [];
          case 21:
            return this.visitImportAs(node) ? [node.module, node.alias] : [];
          case 22:
            return this.visitImportFrom(node) ? [node.module, ...node.imports] : [];
          case 23:
            return this.visitImportFromAs(node) ? [node.name, node.alias] : [];
          case 24:
            return this.visitIndex(node) ? [node.baseExpression, ...node.items] : [];
          case 25:
            return this.visitExcept(node) ? [node.typeExpression, node.name, node.exceptSuite] : [];
          case 26:
            return this.visitFor(node) ? [node.targetExpression, node.iterableExpression, node.forSuite, node.elseSuite] : [];
          case 27:
            return this.visitFormatString(node) ? node.expressions : [];
          case 28:
            return this.visitFunction(node) ? [
              ...node.decorators,
              node.name,
              ...node.parameters,
              node.returnTypeAnnotation,
              node.functionAnnotationComment,
              node.suite
            ] : [];
          case 62:
            return this.visitFunctionAnnotation(node) ? [...node.paramTypeAnnotations, node.returnTypeAnnotation] : [];
          case 29:
            return this.visitGlobal(node) ? node.nameList : [];
          case 30:
            return this.visitLambda(node) ? [...node.parameters, node.expression] : [];
          case 31:
            return this.visitList(node) ? node.entries : [];
          case 32:
            return this.visitListComprehension(node) ? [node.expression, ...node.forIfNodes] : [];
          case 33:
            return this.visitListComprehensionFor(node) ? [node.targetExpression, node.iterableExpression] : [];
          case 34:
            return this.visitListComprehensionIf(node) ? [node.testExpression] : [];
          case 63:
            return this.visitMatch(node) ? [node.subjectExpression, ...node.cases] : [];
          case 35:
            return this.visitMemberAccess(node) ? [node.leftExpression, node.memberName] : [];
          case 37:
            return this.visitModuleName(node) ? node.nameParts : [];
          case 36:
            return this.visitModule(node) ? [...node.statements] : [];
          case 38:
            return this.visitName(node) ? [] : [];
          case 39:
            return this.visitNonlocal(node) ? node.nameList : [];
          case 40:
            return this.visitNumber(node) ? [] : [];
          case 41:
            return this.visitParameter(node) ? [node.name, node.typeAnnotation, node.typeAnnotationComment, node.defaultValue] : [];
          case 42:
            return this.visitPass(node) ? [] : [];
          case 66:
            return this.visitPatternAs(node) ? [...node.orPatterns, node.target] : [];
          case 68:
            return this.visitPatternClass(node) ? [node.className, ...node.arguments] : [];
          case 74:
            return this.visitPatternClassArgument(node) ? [node.name, node.pattern] : [];
          case 69:
            return this.visitPatternCapture(node) ? [node.target] : [];
          case 67:
            return this.visitPatternLiteral(node) ? [node.expression] : [];
          case 72:
            return this.visitPatternMappingExpandEntry(node) ? [node.target] : [];
          case 71:
            return this.visitPatternMappingKeyEntry(node) ? [node.keyPattern, node.valuePattern] : [];
          case 70:
            return this.visitPatternMapping(node) ? [...node.entries] : [];
          case 65:
            return this.visitPatternSequence(node) ? [...node.entries] : [];
          case 73:
            return this.visitPatternValue(node) ? [node.expression] : [];
          case 43:
            return this.visitRaise(node) ? [node.typeExpression, node.valueExpression, node.tracebackExpression] : [];
          case 44:
            return this.visitReturn(node) ? [node.returnExpression] : [];
          case 45:
            return this.visitSet(node) ? node.entries : [];
          case 46:
            return this.visitSlice(node) ? [node.startValue, node.endValue, node.stepValue] : [];
          case 47:
            return this.visitStatementList(node) ? node.statements : [];
          case 48:
            return this.visitStringList(node) ? [node.typeAnnotation, ...node.strings] : [];
          case 49:
            return this.visitString(node) ? [] : [];
          case 50:
            return this.visitSuite(node) ? [...node.statements] : [];
          case 51:
            return this.visitTernary(node) ? [node.ifExpression, node.testExpression, node.elseExpression] : [];
          case 52:
            return this.visitTuple(node) ? node.expressions : [];
          case 53:
            return this.visitTry(node) ? [node.trySuite, ...node.exceptClauses, node.elseSuite, node.finallySuite] : [];
          case 54:
            return this.visitTypeAnnotation(node) ? [node.valueExpression, node.typeAnnotation] : [];
          case 55:
            return this.visitUnaryOperation(node) ? [node.expression] : [];
          case 56:
            return this.visitUnpack(node) ? [node.expression] : [];
          case 57:
            return this.visitWhile(node) ? [node.testExpression, node.whileSuite, node.elseSuite] : [];
          case 58:
            return this.visitWith(node) ? [...node.withItems, node.suite] : [];
          case 59:
            return this.visitWithItem(node) ? [node.expression, node.target] : [];
          case 60:
            return this.visitYield(node) ? [node.expression] : [];
          case 61:
            return this.visitYieldFrom(node) ? [node.expression] : [];
        }
      }
      // Override these methods as necessary.
      visitArgument(node) {
        return true;
      }
      visitAssert(node) {
        return true;
      }
      visitAssignment(node) {
        return true;
      }
      visitAssignmentExpression(node) {
        return true;
      }
      visitAugmentedAssignment(node) {
        return true;
      }
      visitAwait(node) {
        return true;
      }
      visitBinaryOperation(node) {
        return true;
      }
      visitBreak(node) {
        return true;
      }
      visitCall(node) {
        return true;
      }
      visitCase(node) {
        return true;
      }
      visitClass(node) {
        return true;
      }
      visitTernary(node) {
        return true;
      }
      visitContinue(node) {
        return true;
      }
      visitConstant(node) {
        return true;
      }
      visitDecorator(node) {
        return true;
      }
      visitDel(node) {
        return true;
      }
      visitDictionary(node) {
        return true;
      }
      visitDictionaryKeyEntry(node) {
        return true;
      }
      visitDictionaryExpandEntry(node) {
        return true;
      }
      visitError(node) {
        return true;
      }
      visitEllipsis(node) {
        return true;
      }
      visitIf(node) {
        return true;
      }
      visitImport(node) {
        return true;
      }
      visitImportAs(node) {
        return true;
      }
      visitImportFrom(node) {
        return true;
      }
      visitImportFromAs(node) {
        return true;
      }
      visitIndex(node) {
        return true;
      }
      visitExcept(node) {
        return true;
      }
      visitFor(node) {
        return true;
      }
      visitFormatString(node) {
        return true;
      }
      visitFunction(node) {
        return true;
      }
      visitFunctionAnnotation(node) {
        return true;
      }
      visitGlobal(node) {
        return true;
      }
      visitLambda(node) {
        return true;
      }
      visitList(node) {
        return true;
      }
      visitListComprehension(node) {
        return true;
      }
      visitListComprehensionFor(node) {
        return true;
      }
      visitListComprehensionIf(node) {
        return true;
      }
      visitMatch(node) {
        return true;
      }
      visitMemberAccess(node) {
        return true;
      }
      visitModule(node) {
        return true;
      }
      visitModuleName(node) {
        return true;
      }
      visitName(node) {
        return true;
      }
      visitNonlocal(node) {
        return true;
      }
      visitNumber(node) {
        return true;
      }
      visitParameter(node) {
        return true;
      }
      visitPass(node) {
        return true;
      }
      visitPatternCapture(node) {
        return true;
      }
      visitPatternClass(node) {
        return true;
      }
      visitPatternClassArgument(node) {
        return true;
      }
      visitPatternAs(node) {
        return true;
      }
      visitPatternLiteral(node) {
        return true;
      }
      visitPatternMappingExpandEntry(node) {
        return true;
      }
      visitPatternSequence(node) {
        return true;
      }
      visitPatternValue(node) {
        return true;
      }
      visitPatternMappingKeyEntry(node) {
        return true;
      }
      visitPatternMapping(node) {
        return true;
      }
      visitRaise(node) {
        return true;
      }
      visitReturn(node) {
        return true;
      }
      visitSet(node) {
        return true;
      }
      visitSlice(node) {
        return true;
      }
      visitStatementList(node) {
        return true;
      }
      visitString(node) {
        return true;
      }
      visitStringList(node) {
        return true;
      }
      visitSuite(node) {
        return true;
      }
      visitTuple(node) {
        return true;
      }
      visitTry(node) {
        return true;
      }
      visitTypeAnnotation(node) {
        return true;
      }
      visitUnaryOperation(node) {
        return true;
      }
      visitUnpack(node) {
        return true;
      }
      visitWhile(node) {
        return true;
      }
      visitWith(node) {
        return true;
      }
      visitWithItem(node) {
        return true;
      }
      visitYield(node) {
        return true;
      }
      visitYieldFrom(node) {
        return true;
      }
    };
    exports2.ParseTreeWalker = ParseTreeWalker4;
  }
});

// node_modules/@zzzen/pyright-internal/dist/analyzer/parseTreeUtils.js
var require_parseTreeUtils = __commonJS({
  "node_modules/@zzzen/pyright-internal/dist/analyzer/parseTreeUtils.js"(exports2) {
    "use strict";
    var __createBinding = exports2 && exports2.__createBinding || (Object.create ? (function(o, m, k, k2) {
      if (k2 === void 0) k2 = k;
      Object.defineProperty(o, k2, { enumerable: true, get: function() {
        return m[k];
      } });
    }) : (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.isFunctionSuiteEmpty = exports2.getFileInfoFromNode = exports2.getModuleNode = exports2.isWriteAccess = exports2.printParseNodeType = exports2.getTokenOverlapping = exports2.getTokenAt = exports2.getCallNodeAndActiveParameterIndex = exports2.getEnclosingParameter = exports2.CallNodeWalker = exports2.NameNodeWalker = exports2.isAssignmentToDefaultsFollowingNamedTuple = exports2.isDocString = exports2.getDocString = exports2.isWithinAssertExpression = exports2.isWithinTryBlock = exports2.isWithinLoop = exports2.isWithinAnnotationComment = exports2.isWithinTypeAnnotation = exports2.isWithinDefaultParamInitializer = exports2.isPartialMatchingExpression = exports2.isMatchingExpression = exports2.isSuiteEmpty = exports2.isNodeContainedWithinNodeType = exports2.getParentNodeOfType = exports2.isNodeContainedWithin = exports2.isClassVarAllowedForAssignmentTarget = exports2.isFinalAllowedForAssignmentTarget = exports2.getTypeAnnotationNode = exports2.getExecutionScopeNode = exports2.getTypeVarScopeNode = exports2.getEvaluationScopeNode = exports2.getEvaluationNodeForAssignmentExpression = exports2.getEnclosingSuiteOrModule = exports2.getEnclosingClassOrFunction = exports2.getEnclosingLambda = exports2.getEnclosingFunction = exports2.getEnclosingClassOrModule = exports2.getEnclosingModule = exports2.getEnclosingClass = exports2.getEnclosingSuite = exports2.printOperator = exports2.printExpression = exports2.printArgument = exports2.getTypeSourceId = exports2.getClassFullName = exports2.findNodeByOffset = exports2.findNodeByPosition = exports2.getNodeDepth = exports2.PrintExpressionFlags = void 0;
    exports2.isUnannotatedFunction = exports2.getFullStatementRange = exports2.getStringValueRange = exports2.getStringNodeValueRange = exports2.isLastNameOfDottedName = exports2.isFirstNameOfDottedName = exports2.getFirstNameOfDottedName = exports2.getDottedName = exports2.getDottedNameWithGivenNodeAsLastName = exports2.getFirstAncestorOrSelf = exports2.getFirstAncestorOrSelfOfKind = exports2.isLastNameOfModuleName = exports2.isFromImportAlias = exports2.isFromImportName = exports2.isFromImportModuleName = exports2.isImportAlias = exports2.isImportModuleName = exports2.getTypeAnnotationForParameter = void 0;
    var AnalyzerNodeInfo = __importStar(require_analyzerNodeInfo());
    var debug_1 = require_debug();
    var positionUtils_1 = require_positionUtils();
    var textRange_1 = require_textRange();
    var parseNodes_1 = require_parseNodes();
    var analyzerNodeInfo_1 = require_analyzerNodeInfo();
    var parseTreeWalker_1 = require_parseTreeWalker();
    var PrintExpressionFlags;
    (function(PrintExpressionFlags2) {
      PrintExpressionFlags2[PrintExpressionFlags2["None"] = 0] = "None";
      PrintExpressionFlags2[PrintExpressionFlags2["ForwardDeclarations"] = 1] = "ForwardDeclarations";
      PrintExpressionFlags2[PrintExpressionFlags2["DoNotLimitStringLength"] = 2] = "DoNotLimitStringLength";
    })(PrintExpressionFlags = exports2.PrintExpressionFlags || (exports2.PrintExpressionFlags = {}));
    function getNodeDepth(node) {
      let depth = 0;
      let curNode = node;
      while (curNode) {
        depth++;
        curNode = curNode.parent;
      }
      return depth;
    }
    exports2.getNodeDepth = getNodeDepth;
    function findNodeByPosition(node, position, lines) {
      const offset = (0, positionUtils_1.convertPositionToOffset)(position, lines);
      if (offset === void 0) {
        return void 0;
      }
      return findNodeByOffset(node, offset);
    }
    exports2.findNodeByPosition = findNodeByPosition;
    function findNodeByOffset(node, offset) {
      if (offset < node.start || offset > textRange_1.TextRange.getEnd(node)) {
        return void 0;
      }
      const parseTreeWalker = new parseTreeWalker_1.ParseTreeWalker();
      const children = parseTreeWalker.visitNode(node);
      for (const child of children) {
        if (child) {
          const containingChild = findNodeByOffset(child, offset);
          if (containingChild) {
            if (node.nodeType === 5 && containingChild === node.leftExpression) {
              return node.destExpression;
            }
            return containingChild;
          }
        }
      }
      return node;
    }
    exports2.findNodeByOffset = findNodeByOffset;
    function getClassFullName(classNode, moduleName, className) {
      const nameParts = [className];
      let curNode = classNode;
      while (curNode) {
        curNode = getEnclosingClass(curNode);
        if (curNode) {
          nameParts.push(curNode.name.value);
        }
      }
      nameParts.push(moduleName);
      return nameParts.reverse().join(".");
    }
    exports2.getClassFullName = getClassFullName;
    function getTypeSourceId(node) {
      return node.start;
    }
    exports2.getTypeSourceId = getTypeSourceId;
    function printArgument(node, flags) {
      let argStr = "";
      if (node.argumentCategory === 1) {
        argStr = "*";
      } else if (node.argumentCategory === 2) {
        argStr = "**";
      }
      if (node.name) {
        argStr += node.name.value + "=";
      }
      argStr += printExpression(node.valueExpression, flags);
      return argStr;
    }
    exports2.printArgument = printArgument;
    function printExpression(node, flags = 0) {
      switch (node.nodeType) {
        case 38: {
          return node.value;
        }
        case 35: {
          return printExpression(node.leftExpression, flags) + "." + node.memberName.value;
        }
        case 9: {
          return printExpression(node.leftExpression, flags) + "(" + node.arguments.map((arg) => printArgument(arg, flags)).join(", ") + ")";
        }
        case 24: {
          return printExpression(node.baseExpression, flags) + "[" + node.items.map((item) => printArgument(item, flags)).join(", ") + (node.trailingComma ? "," : "") + "]";
        }
        case 55: {
          return printOperator(node.operator) + printExpression(node.expression, flags);
        }
        case 7: {
          const exprStr = printExpression(node.leftExpression, flags) + " " + printOperator(node.operator) + " " + printExpression(node.rightExpression, flags);
          return node.parenthesized ? `(${exprStr})` : exprStr;
        }
        case 40: {
          let value = node.value.toString();
          if (value.endsWith("n")) {
            value = value.substring(0, value.length - 1);
          }
          if (node.isImaginary) {
            value += "j";
          }
          return value;
        }
        case 48: {
          if (flags & 1 && node.typeAnnotation) {
            return printExpression(node.typeAnnotation, flags);
          } else {
            return node.strings.map((str) => {
              return printExpression(str, flags);
            }).join(" ");
          }
        }
        case 49: {
          let exprString = "";
          if (node.token.flags & 8) {
            exprString += "r";
          }
          if (node.token.flags & 16) {
            exprString += "u";
          }
          if (node.token.flags & 32) {
            exprString += "b";
          }
          if (node.token.flags & 64) {
            exprString += "f";
          }
          let escapedString = node.token.escapedValue;
          if ((flags & 2) === 0) {
            const maxStringLength = 32;
            escapedString = escapedString.substring(0, maxStringLength);
          }
          if (node.token.flags & 4) {
            if (node.token.flags & 1) {
              exprString += `'''${escapedString}'''`;
            } else {
              exprString += `"""${escapedString}"""`;
            }
          } else {
            if (node.token.flags & 1) {
              exprString += `'${escapedString}'`;
            } else {
              exprString += `"${escapedString}"`;
            }
          }
          return exprString;
        }
        case 3: {
          return printExpression(node.leftExpression, flags) + " = " + printExpression(node.rightExpression, flags);
        }
        case 4: {
          return printExpression(node.name, flags) + " := " + printExpression(node.rightExpression, flags);
        }
        case 54: {
          return printExpression(node.valueExpression, flags) + ": " + printExpression(node.typeAnnotation, flags);
        }
        case 5: {
          return printExpression(node.leftExpression, flags) + " " + printOperator(node.operator) + " " + printExpression(node.rightExpression, flags);
        }
        case 6: {
          return "await " + printExpression(node.expression, flags);
        }
        case 51: {
          return printExpression(node.ifExpression, flags) + " if " + printExpression(node.testExpression, flags) + " else " + printExpression(node.elseExpression, flags);
        }
        case 31: {
          const expressions = node.entries.map((expr) => {
            return printExpression(expr, flags);
          });
          return `[${expressions.join(", ")}]`;
        }
        case 56: {
          return "*" + printExpression(node.expression, flags);
        }
        case 52: {
          const expressions = node.expressions.map((expr) => {
            return printExpression(expr, flags);
          });
          if (expressions.length === 1) {
            return `(${expressions[0]}, )`;
          }
          return `(${expressions.join(", ")})`;
        }
        case 60: {
          if (node.expression) {
            return "yield " + printExpression(node.expression, flags);
          } else {
            return "yield";
          }
        }
        case 61: {
          return "yield from " + printExpression(node.expression, flags);
        }
        case 18: {
          return "...";
        }
        case 32: {
          let listStr = "<ListExpression>";
          if ((0, parseNodes_1.isExpressionNode)(node.expression)) {
            listStr = printExpression(node.expression, flags);
          } else if (node.expression.nodeType === 17) {
            const keyStr = printExpression(node.expression.keyExpression, flags);
            const valueStr = printExpression(node.expression.valueExpression, flags);
            listStr = `${keyStr}: ${valueStr}`;
          }
          listStr = listStr + " " + node.forIfNodes.map((expr) => {
            if (expr.nodeType === 33) {
              return `${expr.isAsync ? "async " : ""}for ` + printExpression(expr.targetExpression, flags) + ` in ${printExpression(expr.iterableExpression, flags)}`;
            } else {
              return `if ${printExpression(expr.testExpression, flags)}`;
            }
          }).join(" ");
          return node.isParenthesized ? `(${listStr}})` : listStr;
        }
        case 46: {
          let result = "";
          if (node.startValue) {
            result += printExpression(node.startValue, flags);
          }
          if (node.endValue) {
            result += ": " + printExpression(node.endValue, flags);
          }
          if (node.stepValue) {
            result += ": " + printExpression(node.stepValue, flags);
          }
          return result;
        }
        case 30: {
          return "lambda " + node.parameters.map((param) => {
            let paramStr = "";
            if (param.category === 1) {
              paramStr += "*";
            } else if (param.category === 2) {
              paramStr += "**";
            }
            if (param.name) {
              paramStr += param.name.value;
            } else if (param.category === 0) {
              paramStr += "/";
            }
            if (param.defaultValue) {
              paramStr += " = " + printExpression(param.defaultValue, flags);
            }
            return paramStr;
          }).join(", ") + ": " + printExpression(node.expression, flags);
        }
        case 11: {
          if (node.constType === 33) {
            return "True";
          } else if (node.constType === 15) {
            return "False";
          } else if (node.constType === 9) {
            return "__debug__";
          } else if (node.constType === 26) {
            return "None";
          }
          break;
        }
        case 15: {
          const dictContents = `${node.entries.map((entry) => {
            if (entry.nodeType === 17) {
              return `${printExpression(entry.keyExpression, flags)}: ${printExpression(entry.valueExpression, flags)}`;
            } else if (entry.nodeType === 16) {
              return `**${printExpression(entry.expandExpression, flags)}`;
            } else {
              return printExpression(entry, flags);
            }
          })}`;
          if (dictContents) {
            return `{ ${dictContents} }`;
          }
          return "{}";
        }
        case 45: {
          return node.entries.map((entry) => printExpression(entry, flags)).join(", ");
        }
      }
      return "<Expression>";
    }
    exports2.printExpression = printExpression;
    function printOperator(operator) {
      const operatorMap = {
        [
          0
          /* Add */
        ]: "+",
        [
          1
          /* AddEqual */
        ]: "+=",
        [
          2
          /* Assign */
        ]: "=",
        [
          3
          /* BitwiseAnd */
        ]: "&",
        [
          4
          /* BitwiseAndEqual */
        ]: "&=",
        [
          5
          /* BitwiseInvert */
        ]: "~",
        [
          6
          /* BitwiseOr */
        ]: "|",
        [
          7
          /* BitwiseOrEqual */
        ]: "|=",
        [
          8
          /* BitwiseXor */
        ]: "^",
        [
          9
          /* BitwiseXorEqual */
        ]: "^=",
        [
          10
          /* Divide */
        ]: "/",
        [
          11
          /* DivideEqual */
        ]: "/=",
        [
          12
          /* Equals */
        ]: "==",
        [
          13
          /* FloorDivide */
        ]: "//",
        [
          14
          /* FloorDivideEqual */
        ]: "//=",
        [
          15
          /* GreaterThan */
        ]: ">",
        [
          16
          /* GreaterThanOrEqual */
        ]: ">=",
        [
          17
          /* LeftShift */
        ]: "<<",
        [
          18
          /* LeftShiftEqual */
        ]: "<<=",
        [
          19
          /* LessOrGreaterThan */
        ]: "<>",
        [
          20
          /* LessThan */
        ]: "<",
        [
          21
          /* LessThanOrEqual */
        ]: "<=",
        [
          22
          /* MatrixMultiply */
        ]: "@",
        [
          23
          /* MatrixMultiplyEqual */
        ]: "@=",
        [
          24
          /* Mod */
        ]: "%",
        [
          25
          /* ModEqual */
        ]: "%=",
        [
          26
          /* Multiply */
        ]: "*",
        [
          27
          /* MultiplyEqual */
        ]: "*=",
        [
          28
          /* NotEquals */
        ]: "!=",
        [
          29
          /* Power */
        ]: "**",
        [
          30
          /* PowerEqual */
        ]: "**=",
        [
          31
          /* RightShift */
        ]: ">>",
        [
          32
          /* RightShiftEqual */
        ]: ">>=",
        [
          33
          /* Subtract */
        ]: "-",
        [
          34
          /* SubtractEqual */
        ]: "-=",
        [
          36
          /* And */
        ]: "and",
        [
          37
          /* Or */
        ]: "or",
        [
          38
          /* Not */
        ]: "not",
        [
          39
          /* Is */
        ]: "is",
        [
          40
          /* IsNot */
        ]: "is not",
        [
          41
          /* In */
        ]: "in",
        [
          42
          /* NotIn */
        ]: "not in"
      };
      if (operatorMap[operator]) {
        return operatorMap[operator];
      }
      return "unknown";
    }
    exports2.printOperator = printOperator;
    function getEnclosingSuite(node) {
      let curNode = node.parent;
      while (curNode) {
        if (curNode.nodeType === 50) {
          return curNode;
        }
        curNode = curNode.parent;
      }
      return void 0;
    }
    exports2.getEnclosingSuite = getEnclosingSuite;
    function getEnclosingClass(node, stopAtFunction = false) {
      let curNode = node.parent;
      while (curNode) {
        if (curNode.nodeType === 10) {
          return curNode;
        }
        if (curNode.nodeType === 36) {
          return void 0;
        }
        if (curNode.nodeType === 28) {
          if (stopAtFunction) {
            return void 0;
          }
        }
        curNode = curNode.parent;
      }
      return void 0;
    }
    exports2.getEnclosingClass = getEnclosingClass;
    function getEnclosingModule(node) {
      let curNode = node.parent;
      while (curNode) {
        if (curNode.nodeType === 36) {
          return curNode;
        }
        curNode = curNode.parent;
      }
      (0, debug_1.fail)("Module node not found");
      return void 0;
    }
    exports2.getEnclosingModule = getEnclosingModule;
    function getEnclosingClassOrModule(node, stopAtFunction = false) {
      let curNode = node.parent;
      while (curNode) {
        if (curNode.nodeType === 10) {
          return curNode;
        }
        if (curNode.nodeType === 36) {
          return curNode;
        }
        if (curNode.nodeType === 28) {
          if (stopAtFunction) {
            return void 0;
          }
        }
        curNode = curNode.parent;
      }
      return void 0;
    }
    exports2.getEnclosingClassOrModule = getEnclosingClassOrModule;
    function getEnclosingFunction(node) {
      let curNode = node.parent;
      let prevNode;
      while (curNode) {
        if (curNode.nodeType === 28) {
          if (!curNode.decorators.some((decorator) => decorator === prevNode)) {
            return curNode;
          }
        }
        if (curNode.nodeType === 10) {
          return void 0;
        }
        prevNode = curNode;
        curNode = curNode.parent;
      }
      return void 0;
    }
    exports2.getEnclosingFunction = getEnclosingFunction;
    function getEnclosingLambda(node) {
      let curNode = node.parent;
      while (curNode) {
        if (curNode.nodeType === 30) {
          return curNode;
        }
        if (curNode.nodeType === 50) {
          return void 0;
        }
        curNode = curNode.parent;
      }
      return void 0;
    }
    exports2.getEnclosingLambda = getEnclosingLambda;
    function getEnclosingClassOrFunction(node) {
      let curNode = node.parent;
      while (curNode) {
        if (curNode.nodeType === 28) {
          return curNode;
        }
        if (curNode.nodeType === 10) {
          return curNode;
        }
        curNode = curNode.parent;
      }
      return void 0;
    }
    exports2.getEnclosingClassOrFunction = getEnclosingClassOrFunction;
    function getEnclosingSuiteOrModule(node, stopAtFunction = false, stopAtLambda = true) {
      let curNode = node.parent;
      while (curNode) {
        if (curNode.nodeType === 50) {
          return curNode;
        }
        if (curNode.nodeType === 36) {
          return curNode;
        }
        if (curNode.nodeType === 30) {
          if (stopAtLambda) {
            return void 0;
          }
        }
        if (curNode.nodeType === 28) {
          if (stopAtFunction) {
            return void 0;
          }
        }
        curNode = curNode.parent;
      }
      return void 0;
    }
    exports2.getEnclosingSuiteOrModule = getEnclosingSuiteOrModule;
    function getEvaluationNodeForAssignmentExpression(node) {
      let sawListComprehension = false;
      let curNode = getEvaluationScopeNode(node);
      while (curNode !== void 0) {
        switch (curNode.nodeType) {
          case 28:
          case 30:
          case 36:
            return curNode;
          case 10:
            return sawListComprehension ? void 0 : curNode;
          case 32:
            sawListComprehension = true;
            curNode = getEvaluationScopeNode(curNode.parent);
            break;
          default:
            return void 0;
        }
      }
      return void 0;
    }
    exports2.getEvaluationNodeForAssignmentExpression = getEvaluationNodeForAssignmentExpression;
    function getEvaluationScopeNode(node) {
      let prevNode;
      let prevPrevNode;
      let curNode = node;
      let isParamNameNode = false;
      while (curNode) {
        if (curNode.nodeType === 41 && prevNode === curNode.name) {
          isParamNameNode = true;
        }
        switch (curNode.nodeType) {
          case 28: {
            if (curNode.parameters.some((param) => param === prevNode)) {
              if (isParamNameNode) {
                if ((0, analyzerNodeInfo_1.getScope)(curNode) !== void 0) {
                  return curNode;
                }
              }
            } else if (prevNode === curNode.suite) {
              if ((0, analyzerNodeInfo_1.getScope)(curNode) !== void 0) {
                return curNode;
              }
            }
            break;
          }
          case 30: {
            if (curNode.parameters.some((param) => param === prevNode)) {
              if (isParamNameNode) {
                if ((0, analyzerNodeInfo_1.getScope)(curNode) !== void 0) {
                  return curNode;
                }
              }
            } else if (!prevNode || prevNode === curNode.expression) {
              if ((0, analyzerNodeInfo_1.getScope)(curNode) !== void 0) {
                return curNode;
              }
            }
            break;
          }
          case 10: {
            if (prevNode === curNode.suite) {
              if ((0, analyzerNodeInfo_1.getScope)(curNode) !== void 0) {
                return curNode;
              }
            }
            break;
          }
          case 32: {
            if ((0, analyzerNodeInfo_1.getScope)(curNode) !== void 0) {
              const isFirstIterableExpr = prevNode === curNode.forIfNodes[0] && curNode.forIfNodes[0].nodeType === 33 && curNode.forIfNodes[0].iterableExpression === prevPrevNode;
              if (!isFirstIterableExpr) {
                return curNode;
              }
            }
            break;
          }
          case 36: {
            if ((0, analyzerNodeInfo_1.getScope)(curNode) !== void 0) {
              return curNode;
            }
            break;
          }
        }
        prevPrevNode = prevNode;
        prevNode = curNode;
        curNode = curNode.parent;
      }
      (0, debug_1.fail)("Did not find evaluation scope");
      return void 0;
    }
    exports2.getEvaluationScopeNode = getEvaluationScopeNode;
    function getTypeVarScopeNode(node, allowInFunctionSignature = false) {
      let prevNode;
      let curNode = node;
      while (curNode) {
        switch (curNode.nodeType) {
          case 28: {
            if (prevNode === curNode.suite || allowInFunctionSignature) {
              if (!curNode.decorators.some((decorator) => decorator === prevNode)) {
                return curNode;
              }
            }
            break;
          }
          case 10: {
            if (prevNode === curNode.suite) {
              if (!curNode.decorators.some((decorator) => decorator === prevNode)) {
                return curNode;
              }
            }
            break;
          }
        }
        prevNode = curNode;
        curNode = curNode.parent;
      }
      return void 0;
    }
    exports2.getTypeVarScopeNode = getTypeVarScopeNode;
    function getExecutionScopeNode(node) {
      let evaluationScope = getEvaluationScopeNode(node);
      while (evaluationScope.nodeType === 10 || evaluationScope.nodeType === 32) {
        evaluationScope = getEvaluationScopeNode(evaluationScope.parent);
      }
      return evaluationScope;
    }
    exports2.getExecutionScopeNode = getExecutionScopeNode;
    function getTypeAnnotationNode(node) {
      let prevNode = node;
      let curNode = node.parent;
      while (curNode) {
        if (curNode.nodeType === 54) {
          if (curNode.typeAnnotation === prevNode) {
            return curNode;
          }
          break;
        }
        prevNode = curNode;
        curNode = curNode.parent;
      }
      return void 0;
    }
    exports2.getTypeAnnotationNode = getTypeAnnotationNode;
    function isFinalAllowedForAssignmentTarget(targetNode) {
      if (targetNode.nodeType === 38) {
        return true;
      }
      if (targetNode.nodeType === 35) {
        if (targetNode.leftExpression.nodeType !== 38) {
          return false;
        }
        const classNode = getEnclosingClass(targetNode);
        if (!classNode) {
          return false;
        }
        const methodNode = getEnclosingFunction(targetNode);
        if (!methodNode) {
          return false;
        }
        if (methodNode.name.value !== "__init__") {
          return false;
        }
        return true;
      }
      return false;
    }
    exports2.isFinalAllowedForAssignmentTarget = isFinalAllowedForAssignmentTarget;
    function isClassVarAllowedForAssignmentTarget(targetNode) {
      const classNode = getEnclosingClass(
        targetNode,
        /* stopAtFunction */
        true
      );
      if (!classNode) {
        return false;
      }
      return true;
    }
    exports2.isClassVarAllowedForAssignmentTarget = isClassVarAllowedForAssignmentTarget;
    function isNodeContainedWithin(node, potentialContainer) {
      let curNode = node;
      while (curNode) {
        if (curNode === potentialContainer) {
          return true;
        }
        curNode = curNode.parent;
      }
      return false;
    }
    exports2.isNodeContainedWithin = isNodeContainedWithin;
    function getParentNodeOfType(node, containerType) {
      let curNode = node;
      while (curNode) {
        if (curNode.nodeType === containerType) {
          return curNode;
        }
        curNode = curNode.parent;
      }
      return void 0;
    }
    exports2.getParentNodeOfType = getParentNodeOfType;
    function isNodeContainedWithinNodeType(node, containerType) {
      return getParentNodeOfType(node, containerType) !== void 0;
    }
    exports2.isNodeContainedWithinNodeType = isNodeContainedWithinNodeType;
    function isSuiteEmpty(node) {
      let sawEllipsis = false;
      for (const statement of node.statements) {
        if (statement.nodeType === 47) {
          for (const substatement of statement.statements) {
            if (substatement.nodeType === 18) {
              sawEllipsis = true;
            } else if (substatement.nodeType === 48) {
            } else {
              return false;
            }
          }
        } else {
          return false;
        }
      }
      return sawEllipsis;
    }
    exports2.isSuiteEmpty = isSuiteEmpty;
    function isMatchingExpression(reference, expression) {
      if (reference.nodeType === 38) {
        if (expression.nodeType === 38) {
          return reference.value === expression.value;
        } else if (expression.nodeType === 4) {
          return reference.value === expression.name.value;
        }
        return false;
      } else if (reference.nodeType === 35 && expression.nodeType === 35) {
        return isMatchingExpression(reference.leftExpression, expression.leftExpression) && reference.memberName.value === expression.memberName.value;
      } else if (reference.nodeType === 24 && expression.nodeType === 24) {
        if (!isMatchingExpression(reference.baseExpression, expression.baseExpression)) {
          return false;
        }
        if (expression.items.length !== 1 || expression.trailingComma || expression.items[0].name || expression.items[0].argumentCategory !== 0) {
          return false;
        }
        const expr = reference.items[0].valueExpression;
        if (expr.nodeType === 40) {
          const subscriptNode = expression.items[0].valueExpression;
          if (subscriptNode.nodeType !== 40 || subscriptNode.isImaginary || !subscriptNode.isInteger) {
            return false;
          }
          return expr.value === subscriptNode.value;
        }
        if (expr.nodeType === 55 && expr.operator === 33 && expr.expression.nodeType === 40) {
          const subscriptNode = expression.items[0].valueExpression;
          if (subscriptNode.nodeType !== 55 || subscriptNode.operator !== 33 || subscriptNode.expression.nodeType !== 40 || subscriptNode.expression.isImaginary || !subscriptNode.expression.isInteger) {
            return false;
          }
          return expr.expression.value === subscriptNode.expression.value;
        }
        if (expr.nodeType === 48) {
          const referenceStringListNode = expr;
          const subscriptNode = expression.items[0].valueExpression;
          if (referenceStringListNode.strings.length === 1 && referenceStringListNode.strings[0].nodeType === 49 && subscriptNode.nodeType === 48 && subscriptNode.strings.length === 1 && subscriptNode.strings[0].nodeType === 49) {
            return referenceStringListNode.strings[0].value === subscriptNode.strings[0].value;
          }
        }
        return false;
      }
      return false;
    }
    exports2.isMatchingExpression = isMatchingExpression;
    function isPartialMatchingExpression(reference, expression) {
      if (reference.nodeType === 35) {
        return isMatchingExpression(reference.leftExpression, expression) || isPartialMatchingExpression(reference.leftExpression, expression);
      } else if (reference.nodeType === 24) {
        return isMatchingExpression(reference.baseExpression, expression) || isPartialMatchingExpression(reference.baseExpression, expression);
      }
      return false;
    }
    exports2.isPartialMatchingExpression = isPartialMatchingExpression;
    function isWithinDefaultParamInitializer(node) {
      let curNode = node;
      let prevNode;
      while (curNode) {
        if (curNode.nodeType === 41 && prevNode === curNode.defaultValue) {
          return true;
        }
        if (curNode.nodeType === 30 || curNode.nodeType === 28 || curNode.nodeType === 10 || curNode.nodeType === 36) {
          return false;
        }
        prevNode = curNode;
        curNode = curNode.parent;
      }
      return false;
    }
    exports2.isWithinDefaultParamInitializer = isWithinDefaultParamInitializer;
    function isWithinTypeAnnotation(node, requireQuotedAnnotation) {
      let curNode = node;
      let prevNode;
      let isQuoted = false;
      while (curNode) {
        if (curNode.nodeType === 41 && (prevNode === curNode.typeAnnotation || prevNode === curNode.typeAnnotationComment)) {
          return isQuoted || !requireQuotedAnnotation;
        }
        if (curNode.nodeType === 28 && prevNode === curNode.returnTypeAnnotation) {
          return isQuoted || !requireQuotedAnnotation;
        }
        if (curNode.nodeType === 28 && prevNode === curNode.functionAnnotationComment) {
          return true;
        }
        if (curNode.nodeType === 54 && prevNode === curNode.typeAnnotation) {
          return isQuoted || !requireQuotedAnnotation;
        }
        if (curNode.nodeType === 3 && prevNode === curNode.typeAnnotationComment) {
          return true;
        }
        if (curNode.nodeType === 48 && prevNode === curNode.typeAnnotation) {
          isQuoted = true;
        }
        if (curNode.nodeType === 30 || curNode.nodeType === 28 || curNode.nodeType === 10 || curNode.nodeType === 36) {
          return false;
        }
        prevNode = curNode;
        curNode = curNode.parent;
      }
      return false;
    }
    exports2.isWithinTypeAnnotation = isWithinTypeAnnotation;
    function isWithinAnnotationComment(node) {
      let curNode = node;
      let prevNode;
      while (curNode) {
        if (curNode.nodeType === 28 && prevNode === curNode.functionAnnotationComment) {
          return true;
        }
        if (curNode.nodeType === 3 && prevNode === curNode.typeAnnotationComment) {
          return true;
        }
        if (curNode.nodeType === 30 || curNode.nodeType === 28 || curNode.nodeType === 10 || curNode.nodeType === 36) {
          return false;
        }
        prevNode = curNode;
        curNode = curNode.parent;
      }
      return false;
    }
    exports2.isWithinAnnotationComment = isWithinAnnotationComment;
    function isWithinLoop(node) {
      let curNode = node;
      while (curNode) {
        switch (curNode.nodeType) {
          case 26:
          case 57: {
            return true;
          }
          case 36: {
            break;
          }
        }
        curNode = curNode.parent;
      }
      return false;
    }
    exports2.isWithinLoop = isWithinLoop;
    function isWithinTryBlock(node, treatWithAsTryBlock = false) {
      let curNode = node;
      let prevNode;
      while (curNode) {
        switch (curNode.nodeType) {
          case 53: {
            return curNode.trySuite === prevNode;
          }
          case 58: {
            if (treatWithAsTryBlock && curNode.suite === prevNode) {
              return true;
            }
            break;
          }
          case 28:
          case 36:
          case 10: {
            return false;
          }
        }
        prevNode = curNode;
        curNode = curNode.parent;
      }
      return false;
    }
    exports2.isWithinTryBlock = isWithinTryBlock;
    function isWithinAssertExpression(node) {
      let curNode = node;
      let prevNode;
      while (curNode) {
        switch (curNode.nodeType) {
          case 2: {
            return curNode.testExpression === prevNode;
          }
        }
        prevNode = curNode;
        curNode = curNode.parent;
      }
      return false;
    }
    exports2.isWithinAssertExpression = isWithinAssertExpression;
    function getDocString(statements) {
      if (statements.length === 0) {
        return void 0;
      }
      if (statements[0].nodeType !== 47) {
        return void 0;
      }
      if (!isDocString(statements[0])) {
        return void 0;
      }
      const strings = statements[0].statements[0].strings;
      if (strings.length === 1) {
        return strings[0].value;
      }
      return strings.map((s) => s.value).join("");
    }
    exports2.getDocString = getDocString;
    function isDocString(statementList) {
      if (statementList.statements.length === 0 || statementList.statements[0].nodeType !== 48) {
        return false;
      }
      const strings = statementList.statements[0].strings;
      if (strings.length === 0) {
        return false;
      }
      if (strings.some((n) => (n.token.flags & 64) !== 0)) {
        return false;
      }
      return true;
    }
    exports2.isDocString = isDocString;
    function isAssignmentToDefaultsFollowingNamedTuple(callNode) {
      var _a2, _b;
      if (callNode.nodeType !== 9 || !callNode.parent || callNode.parent.nodeType !== 3 || callNode.parent.leftExpression.nodeType !== 38 || !callNode.parent.parent || callNode.parent.parent.nodeType !== 47) {
        return false;
      }
      const namedTupleAssignedName = callNode.parent.leftExpression.value;
      const statementList = callNode.parent.parent;
      if (statementList.statements[0] !== callNode.parent || !statementList.parent || !(statementList.parent.nodeType === 36 || statementList.parent.nodeType === 50)) {
        return false;
      }
      const moduleOrSuite = statementList.parent;
      let statementIndex = moduleOrSuite.statements.findIndex((s) => s === statementList);
      if (statementIndex < 0) {
        return false;
      }
      statementIndex++;
      while (statementIndex < moduleOrSuite.statements.length) {
        const nextStatement = moduleOrSuite.statements[statementIndex];
        if (nextStatement.nodeType !== 47) {
          break;
        }
        if (((_a2 = nextStatement.statements[0]) === null || _a2 === void 0 ? void 0 : _a2.nodeType) === 48) {
          statementIndex++;
          continue;
        }
        if (((_b = nextStatement.statements[0]) === null || _b === void 0 ? void 0 : _b.nodeType) === 3) {
          const assignNode = nextStatement.statements[0];
          if (assignNode.leftExpression.nodeType === 35 && assignNode.leftExpression.memberName.value === "__defaults__") {
            const defaultTarget = assignNode.leftExpression.leftExpression;
            if (defaultTarget.nodeType === 35 && defaultTarget.memberName.value === "__new__" && defaultTarget.leftExpression.nodeType === 38 && defaultTarget.leftExpression.value === namedTupleAssignedName) {
              return true;
            }
          }
        }
        break;
      }
      return false;
    }
    exports2.isAssignmentToDefaultsFollowingNamedTuple = isAssignmentToDefaultsFollowingNamedTuple;
    var NameNodeWalker = class extends parseTreeWalker_1.ParseTreeWalker {
      constructor(_callback) {
        super();
        this._callback = _callback;
      }
      visitName(node) {
        this._callback(node, this._subscriptIndex, this._baseExpression);
        return true;
      }
      visitIndex(node) {
        this.walk(node.baseExpression);
        const prevSubscriptIndex = this._subscriptIndex;
        const prevBaseExpression = this._baseExpression;
        this._baseExpression = node.baseExpression;
        node.items.forEach((item, index) => {
          this._subscriptIndex = index;
          this.walk(item);
        });
        this._subscriptIndex = prevSubscriptIndex;
        this._baseExpression = prevBaseExpression;
        return false;
      }
    };
    exports2.NameNodeWalker = NameNodeWalker;
    var CallNodeWalker = class extends parseTreeWalker_1.ParseTreeWalker {
      constructor(_callback) {
        super();
        this._callback = _callback;
      }
      visitCall(node) {
        this._callback(node);
        return true;
      }
    };
    exports2.CallNodeWalker = CallNodeWalker;
    function getEnclosingParameter(node) {
      let curNode = node;
      while (curNode) {
        if (curNode.nodeType === 41) {
          return curNode;
        }
        curNode = curNode.parent;
      }
      return void 0;
    }
    exports2.getEnclosingParameter = getEnclosingParameter;
    function getCallNodeAndActiveParameterIndex(node, insertionOffset, tokens) {
      let curNode = node;
      let callNode;
      while (curNode !== void 0) {
        if (curNode.nodeType === 9) {
          if (isOffsetInsideCallArgs(curNode, insertionOffset)) {
            callNode = curNode;
            break;
          }
        }
        curNode = curNode.parent;
      }
      if (!callNode || !callNode.arguments) {
        return void 0;
      }
      const endPosition = textRange_1.TextRange.getEnd(callNode);
      if (insertionOffset > endPosition) {
        return void 0;
      }
      const tokenAtEnd = getTokenAt(tokens, endPosition - 1);
      if (insertionOffset === endPosition && (tokenAtEnd === null || tokenAtEnd === void 0 ? void 0 : tokenAtEnd.type) === 14) {
        return void 0;
      }
      let addedActive = false;
      let activeIndex = -1;
      let activeOrFake = false;
      callNode.arguments.forEach((arg, index) => {
        if (addedActive) {
          return;
        }
        let start = arg.start;
        const startTokenIndex = tokens.getItemAtPosition(start);
        if (startTokenIndex >= 0) {
          start = textRange_1.TextRange.getEnd(tokens.getItemAt(startTokenIndex - 1));
        }
        let end = textRange_1.TextRange.getEnd(arg);
        const endTokenIndex = tokens.getItemAtPosition(end);
        if (endTokenIndex >= 0) {
          for (let i = endTokenIndex; i < tokens.count; i++) {
            const tok = tokens.getItemAt(i);
            switch (tok.type) {
              case 12:
              case 14:
                break;
              default:
                continue;
            }
            end = textRange_1.TextRange.getEnd(tok);
            break;
          }
        }
        if (insertionOffset < end) {
          activeIndex = index;
          activeOrFake = insertionOffset >= start;
          addedActive = true;
        }
      });
      if (!addedActive) {
        activeIndex = callNode.arguments.length + 1;
      }
      return {
        callNode,
        activeIndex,
        activeOrFake
      };
      function isOffsetInsideCallArgs(node2, offset) {
        let found = true;
        const argumentStart = node2.leftExpression.length > 0 ? textRange_1.TextRange.getEnd(node2.leftExpression) - 1 : node2.leftExpression.start;
        const index = tokens.getItemAtPosition(argumentStart);
        if (index >= 0 && index + 1 < tokens.count) {
          const token = tokens.getItemAt(index + 1);
          if (token.type === 13 && insertionOffset < textRange_1.TextRange.getEnd(token)) {
            found = false;
          }
        }
        return found;
      }
    }
    exports2.getCallNodeAndActiveParameterIndex = getCallNodeAndActiveParameterIndex;
    function getTokenAt(tokens, position) {
      const index = tokens.getItemAtPosition(position);
      if (index < 0) {
        return void 0;
      }
      return tokens.getItemAt(index);
    }
    exports2.getTokenAt = getTokenAt;
    function getTokenOverlapping(tokens, position) {
      const index = tokens.getItemAtPosition(position);
      if (index < 0) {
        return void 0;
      }
      const token = tokens.getItemAt(index);
      return textRange_1.TextRange.overlaps(token, position) ? token : void 0;
    }
    exports2.getTokenOverlapping = getTokenOverlapping;
    function printParseNodeType2(type) {
      switch (type) {
        case 0:
          return "Error";
        case 1:
          return "Argument";
        case 2:
          return "Assert";
        case 3:
          return "Assignment";
        case 4:
          return "AssignmentExpression";
        case 5:
          return "AugmentedAssignment";
        case 6:
          return "Await";
        case 7:
          return "BinaryOperation";
        case 8:
          return "Break";
        case 9:
          return "Call";
        case 10:
          return "Class";
        case 11:
          return "Constant";
        case 12:
          return "Continue";
        case 13:
          return "Decorator";
        case 14:
          return "Del";
        case 15:
          return "Dictionary";
        case 16:
          return "DictionaryExpandEntry";
        case 17:
          return "DictionaryKeyEntry";
        case 18:
          return "Ellipsis";
        case 19:
          return "If";
        case 20:
          return "Import";
        case 21:
          return "ImportAs";
        case 22:
          return "ImportFrom";
        case 23:
          return "ImportFromAs";
        case 24:
          return "Index";
        case 25:
          return "Except";
        case 26:
          return "For";
        case 27:
          return "FormatString";
        case 28:
          return "Function";
        case 29:
          return "Global";
        case 30:
          return "Lambda";
        case 31:
          return "List";
        case 32:
          return "ListComprehension";
        case 33:
          return "ListComprehensionFor";
        case 34:
          return "ListComprehensionIf";
        case 35:
          return "MemberAccess";
        case 36:
          return "Module";
        case 37:
          return "ModuleName";
        case 38:
          return "Name";
        case 39:
          return "Nonlocal";
        case 40:
          return "Number";
        case 41:
          return "Parameter";
        case 42:
          return "Pass";
        case 43:
          return "Raise";
        case 44:
          return "Return";
        case 45:
          return "Set";
        case 46:
          return "Slice";
        case 47:
          return "StatementList";
        case 48:
          return "StringList";
        case 49:
          return "String";
        case 50:
          return "Suite";
        case 51:
          return "Ternary";
        case 52:
          return "Tuple";
        case 53:
          return "Try";
        case 54:
          return "TypeAnnotation";
        case 55:
          return "UnaryOperation";
        case 56:
          return "Unpack";
        case 57:
          return "While";
        case 58:
          return "With";
        case 59:
          return "WithItem";
        case 60:
          return "Yield";
        case 61:
          return "YieldFrom";
        case 62:
          return "FunctionAnnotation";
        case 63:
          return "Match";
        case 64:
          return "Case";
        case 65:
          return "PatternSequence";
        case 66:
          return "PatternAs";
        case 67:
          return "PatternLiteral";
        case 68:
          return "PatternClass";
        case 69:
          return "PatternCapture";
        case 70:
          return "PatternMapping";
        case 71:
          return "PatternMappingKeyEntry";
        case 72:
          return "PatternMappingExpandEntry";
        case 73:
          return "PatternValue";
        case 74:
          return "PatternClassArgument";
      }
      (0, debug_1.assertNever)(type);
    }
    exports2.printParseNodeType = printParseNodeType2;
    function isWriteAccess(node) {
      let prevNode = node;
      let curNode = prevNode.parent;
      while (curNode) {
        switch (curNode.nodeType) {
          case 3: {
            return prevNode === curNode.leftExpression;
          }
          case 5: {
            return prevNode === curNode.leftExpression;
          }
          case 4: {
            return prevNode === curNode.name;
          }
          case 14: {
            return true;
          }
          case 26: {
            return prevNode === curNode.targetExpression;
          }
          case 21: {
            return prevNode === curNode.alias || curNode.module.nameParts.length > 0 && prevNode === curNode.module.nameParts[0];
          }
          case 23: {
            return prevNode === curNode.alias || !curNode.alias && prevNode === curNode.name;
          }
          case 35: {
            if (prevNode !== curNode.memberName) {
              return false;
            }
            break;
          }
          case 25: {
            return prevNode === curNode.name;
          }
          case 58: {
            return curNode.withItems.some((item) => item === prevNode);
          }
          case 33: {
            return prevNode === curNode.targetExpression;
          }
          case 54: {
            if (prevNode === curNode.typeAnnotation) {
              return false;
            }
            break;
          }
          case 28:
          case 10:
          case 36: {
            return false;
          }
        }
        prevNode = curNode;
        curNode = curNode.parent;
      }
      return false;
    }
    exports2.isWriteAccess = isWriteAccess;
    function getModuleNode(node) {
      let current = node;
      while (current && current.nodeType !== 36) {
        current = current.parent;
      }
      return current;
    }
    exports2.getModuleNode = getModuleNode;
    function getFileInfoFromNode(node) {
      const current = getModuleNode(node);
      return current ? AnalyzerNodeInfo.getFileInfo(current) : void 0;
    }
    exports2.getFileInfoFromNode = getFileInfoFromNode;
    function isFunctionSuiteEmpty(node) {
      let isEmpty = true;
      node.suite.statements.forEach((statement) => {
        if (statement.nodeType === 0) {
          return;
        } else if (statement.nodeType === 47) {
          statement.statements.forEach((subStatement) => {
            if (subStatement.nodeType !== 18 && subStatement.nodeType !== 48 && subStatement.nodeType !== 42) {
              isEmpty = false;
            }
          });
        } else {
          isEmpty = false;
        }
      });
      return isEmpty;
    }
    exports2.isFunctionSuiteEmpty = isFunctionSuiteEmpty;
    function getTypeAnnotationForParameter(node, paramIndex) {
      if (paramIndex >= node.parameters.length) {
        return void 0;
      }
      const param = node.parameters[paramIndex];
      if (param.typeAnnotation) {
        return param.typeAnnotation;
      } else if (param.typeAnnotationComment) {
        return param.typeAnnotationComment;
      }
      if (!node.functionAnnotationComment || node.functionAnnotationComment.isParamListEllipsis) {
        return void 0;
      }
      let firstCommentAnnotationIndex = 0;
      const paramAnnotations = node.functionAnnotationComment.paramTypeAnnotations;
      if (paramAnnotations.length < node.parameters.length) {
        firstCommentAnnotationIndex = 1;
      }
      const adjIndex = paramIndex - firstCommentAnnotationIndex;
      if (adjIndex < 0 || adjIndex >= paramAnnotations.length) {
        return void 0;
      }
      return paramAnnotations[adjIndex];
    }
    exports2.getTypeAnnotationForParameter = getTypeAnnotationForParameter;
    function isImportModuleName(node) {
      var _a2, _b;
      return ((_b = (_a2 = getFirstAncestorOrSelfOfKind(
        node,
        37
        /* ModuleName */
      )) === null || _a2 === void 0 ? void 0 : _a2.parent) === null || _b === void 0 ? void 0 : _b.nodeType) === 21;
    }
    exports2.isImportModuleName = isImportModuleName;
    function isImportAlias(node) {
      var _a2;
      return ((_a2 = node.parent) === null || _a2 === void 0 ? void 0 : _a2.nodeType) === 21 && node.parent.alias === node;
    }
    exports2.isImportAlias = isImportAlias;
    function isFromImportModuleName(node) {
      var _a2, _b;
      return ((_b = (_a2 = getFirstAncestorOrSelfOfKind(
        node,
        37
        /* ModuleName */
      )) === null || _a2 === void 0 ? void 0 : _a2.parent) === null || _b === void 0 ? void 0 : _b.nodeType) === 22;
    }
    exports2.isFromImportModuleName = isFromImportModuleName;
    function isFromImportName(node) {
      var _a2;
      return ((_a2 = node.parent) === null || _a2 === void 0 ? void 0 : _a2.nodeType) === 23 && node.parent.name === node;
    }
    exports2.isFromImportName = isFromImportName;
    function isFromImportAlias(node) {
      var _a2;
      return ((_a2 = node.parent) === null || _a2 === void 0 ? void 0 : _a2.nodeType) === 23 && node.parent.alias === node;
    }
    exports2.isFromImportAlias = isFromImportAlias;
    function isLastNameOfModuleName(node) {
      var _a2;
      if (((_a2 = node.parent) === null || _a2 === void 0 ? void 0 : _a2.nodeType) !== 37) {
        return false;
      }
      const module3 = node.parent;
      if (module3.nameParts.length === 0) {
        return false;
      }
      return module3.nameParts[module3.nameParts.length - 1] === node;
    }
    exports2.isLastNameOfModuleName = isLastNameOfModuleName;
    function* _getAncestorsIncludingSelf(node) {
      while (node !== void 0) {
        yield node;
        node = node.parent;
      }
    }
    function getFirstAncestorOrSelfOfKind(node, type) {
      return getFirstAncestorOrSelf(node, (n) => n.nodeType === type);
    }
    exports2.getFirstAncestorOrSelfOfKind = getFirstAncestorOrSelfOfKind;
    function getFirstAncestorOrSelf(node, predicate) {
      for (const current of _getAncestorsIncludingSelf(node)) {
        if (predicate(current)) {
          return current;
        }
      }
      return void 0;
    }
    exports2.getFirstAncestorOrSelf = getFirstAncestorOrSelf;
    function getDottedNameWithGivenNodeAsLastName(node) {
      var _a2;
      if (((_a2 = node.parent) === null || _a2 === void 0 ? void 0 : _a2.nodeType) !== 35) {
        return node;
      }
      if (node.parent.leftExpression === node) {
        return node;
      }
      return node.parent;
    }
    exports2.getDottedNameWithGivenNodeAsLastName = getDottedNameWithGivenNodeAsLastName;
    function getDottedName(node) {
      if (node.nodeType === 38) {
        return [node];
      }
      const names = [];
      if (_getDottedName(node, names)) {
        return names.reverse();
      }
      return void 0;
      function _getDottedName(node2, names2) {
        if (node2.nodeType === 38) {
          names2.push(node2);
          return true;
        }
        names2.push(node2.memberName);
        if (node2.leftExpression.nodeType === 38 || node2.leftExpression.nodeType === 35) {
          return _getDottedName(node2.leftExpression, names2);
        }
        return false;
      }
    }
    exports2.getDottedName = getDottedName;
    function getFirstNameOfDottedName(node) {
      if (node.nodeType === 38) {
        return node;
      }
      if (node.leftExpression.nodeType === 38 || node.leftExpression.nodeType === 35) {
        return getFirstNameOfDottedName(node.leftExpression);
      }
      return void 0;
    }
    exports2.getFirstNameOfDottedName = getFirstNameOfDottedName;
    function isFirstNameOfDottedName(node) {
      var _a2;
      if (((_a2 = node.parent) === null || _a2 === void 0 ? void 0 : _a2.nodeType) !== 35) {
        return true;
      }
      if (node.parent.leftExpression === node) {
        return true;
      }
      return false;
    }
    exports2.isFirstNameOfDottedName = isFirstNameOfDottedName;
    function isLastNameOfDottedName(node) {
      var _a2, _b;
      if (((_a2 = node.parent) === null || _a2 === void 0 ? void 0 : _a2.nodeType) !== 35) {
        return true;
      }
      if (node.parent.leftExpression.nodeType !== 38 && node.parent.leftExpression.nodeType !== 35) {
        return false;
      }
      if (node.parent.leftExpression === node) {
        return false;
      }
      return ((_b = node.parent.parent) === null || _b === void 0 ? void 0 : _b.nodeType) !== 35;
    }
    exports2.isLastNameOfDottedName = isLastNameOfDottedName;
    function getStringNodeValueRange(node) {
      return getStringValueRange(node.token);
    }
    exports2.getStringNodeValueRange = getStringNodeValueRange;
    function getStringValueRange(token) {
      const length = token.quoteMarkLength;
      const hasEnding = !(token.flags & 65536);
      return textRange_1.TextRange.create(token.start + length, token.length - length - (hasEnding ? length : 0));
    }
    exports2.getStringValueRange = getStringValueRange;
    function getFullStatementRange(statementNode, tokenizerOutput) {
      const range2 = (0, positionUtils_1.convertTextRangeToRange)(statementNode, tokenizerOutput.lines);
      const endPosition = _getEndPositionIfMultipleStatementsAreOnSameLine(range2, textRange_1.TextRange.getEnd(statementNode), tokenizerOutput);
      if (endPosition) {
        return { start: range2.start, end: endPosition };
      }
      if (range2.end.line === tokenizerOutput.lines.count - 1) {
        return range2;
      }
      return { start: range2.start, end: { line: range2.end.line + 1, character: 0 } };
    }
    exports2.getFullStatementRange = getFullStatementRange;
    function isUnannotatedFunction(node) {
      return node.returnTypeAnnotation === void 0 && node.parameters.every((param) => param.typeAnnotation === void 0 && param.typeAnnotationComment === void 0);
    }
    exports2.isUnannotatedFunction = isUnannotatedFunction;
    function _getEndPositionIfMultipleStatementsAreOnSameLine(range2, tokenPosition, tokenizerOutput) {
      const tokenIndex = tokenizerOutput.tokens.getItemAtPosition(tokenPosition);
      if (tokenIndex < 0) {
        return void 0;
      }
      let currentIndex = tokenIndex;
      for (; currentIndex < tokenizerOutput.tokens.count; currentIndex++) {
        const token = tokenizerOutput.tokens.getItemAt(currentIndex);
        const tokenRange = (0, positionUtils_1.convertTextRangeToRange)(token, tokenizerOutput.lines);
        if (range2.end.line !== tokenRange.start.line) {
          break;
        }
      }
      for (let index = tokenIndex; index < currentIndex; index++) {
        const token = tokenizerOutput.tokens.getItemAt(index);
        if (token.type === 11 || token.type === 2) {
          continue;
        }
        const tokenRange = (0, positionUtils_1.convertTextRangeToRange)(token, tokenizerOutput.lines);
        return tokenRange.start;
      }
      return void 0;
    }
  }
});

// node_modules/crypt/crypt.js
var require_crypt = __commonJS({
  "node_modules/crypt/crypt.js"(exports2, module2) {
    (function() {
      var base64map = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/", crypt = {
        // Bit-wise rotation left
        rotl: function(n, b) {
          return n << b | n >>> 32 - b;
        },
        // Bit-wise rotation right
        rotr: function(n, b) {
          return n << 32 - b | n >>> b;
        },
        // Swap big-endian to little-endian and vice versa
        endian: function(n) {
          if (n.constructor == Number) {
            return crypt.rotl(n, 8) & 16711935 | crypt.rotl(n, 24) & 4278255360;
          }
          for (var i = 0; i < n.length; i++)
            n[i] = crypt.endian(n[i]);
          return n;
        },
        // Generate an array of any length of random bytes
        randomBytes: function(n) {
          for (var bytes = []; n > 0; n--)
            bytes.push(Math.floor(Math.random() * 256));
          return bytes;
        },
        // Convert a byte array to big-endian 32-bit words
        bytesToWords: function(bytes) {
          for (var words = [], i = 0, b = 0; i < bytes.length; i++, b += 8)
            words[b >>> 5] |= bytes[i] << 24 - b % 32;
          return words;
        },
        // Convert big-endian 32-bit words to a byte array
        wordsToBytes: function(words) {
          for (var bytes = [], b = 0; b < words.length * 32; b += 8)
            bytes.push(words[b >>> 5] >>> 24 - b % 32 & 255);
          return bytes;
        },
        // Convert a byte array to a hex string
        bytesToHex: function(bytes) {
          for (var hex = [], i = 0; i < bytes.length; i++) {
            hex.push((bytes[i] >>> 4).toString(16));
            hex.push((bytes[i] & 15).toString(16));
          }
          return hex.join("");
        },
        // Convert a hex string to a byte array
        hexToBytes: function(hex) {
          for (var bytes = [], c = 0; c < hex.length; c += 2)
            bytes.push(parseInt(hex.substr(c, 2), 16));
          return bytes;
        },
        // Convert a byte array to a base-64 string
        bytesToBase64: function(bytes) {
          for (var base64 = [], i = 0; i < bytes.length; i += 3) {
            var triplet = bytes[i] << 16 | bytes[i + 1] << 8 | bytes[i + 2];
            for (var j = 0; j < 4; j++)
              if (i * 8 + j * 6 <= bytes.length * 8)
                base64.push(base64map.charAt(triplet >>> 6 * (3 - j) & 63));
              else
                base64.push("=");
          }
          return base64.join("");
        },
        // Convert a base-64 string to a byte array
        base64ToBytes: function(base64) {
          base64 = base64.replace(/[^A-Z0-9+\/]/ig, "");
          for (var bytes = [], i = 0, imod4 = 0; i < base64.length; imod4 = ++i % 4) {
            if (imod4 == 0) continue;
            bytes.push((base64map.indexOf(base64.charAt(i - 1)) & Math.pow(2, -2 * imod4 + 8) - 1) << imod4 * 2 | base64map.indexOf(base64.charAt(i)) >>> 6 - imod4 * 2);
          }
          return bytes;
        }
      };
      module2.exports = crypt;
    })();
  }
});

// node_modules/charenc/charenc.js
var require_charenc = __commonJS({
  "node_modules/charenc/charenc.js"(exports2, module2) {
    var charenc = {
      // UTF-8 encoding
      utf8: {
        // Convert a string to a byte array
        stringToBytes: function(str) {
          return charenc.bin.stringToBytes(unescape(encodeURIComponent(str)));
        },
        // Convert a byte array to a string
        bytesToString: function(bytes) {
          return decodeURIComponent(escape(charenc.bin.bytesToString(bytes)));
        }
      },
      // Binary encoding
      bin: {
        // Convert a string to a byte array
        stringToBytes: function(str) {
          for (var bytes = [], i = 0; i < str.length; i++)
            bytes.push(str.charCodeAt(i) & 255);
          return bytes;
        },
        // Convert a byte array to a string
        bytesToString: function(bytes) {
          for (var str = [], i = 0; i < bytes.length; i++)
            str.push(String.fromCharCode(bytes[i]));
          return str.join("");
        }
      }
    };
    module2.exports = charenc;
  }
});

// node_modules/is-buffer/index.js
var require_is_buffer = __commonJS({
  "node_modules/is-buffer/index.js"(exports2, module2) {
    module2.exports = function(obj) {
      return obj != null && (isBuffer(obj) || isSlowBuffer(obj) || !!obj._isBuffer);
    };
    function isBuffer(obj) {
      return !!obj.constructor && typeof obj.constructor.isBuffer === "function" && obj.constructor.isBuffer(obj);
    }
    function isSlowBuffer(obj) {
      return typeof obj.readFloatLE === "function" && typeof obj.slice === "function" && isBuffer(obj.slice(0, 0));
    }
  }
});

// node_modules/md5/md5.js
var require_md5 = __commonJS({
  "node_modules/md5/md5.js"(exports2, module2) {
    (function() {
      var crypt = require_crypt(), utf8 = require_charenc().utf8, isBuffer = require_is_buffer(), bin = require_charenc().bin, md53 = function(message, options) {
        if (message.constructor == String)
          if (options && options.encoding === "binary")
            message = bin.stringToBytes(message);
          else
            message = utf8.stringToBytes(message);
        else if (isBuffer(message))
          message = Array.prototype.slice.call(message, 0);
        else if (!Array.isArray(message) && message.constructor !== Uint8Array)
          message = message.toString();
        var m = crypt.bytesToWords(message), l = message.length * 8, a = 1732584193, b = -271733879, c = -1732584194, d = 271733878;
        for (var i = 0; i < m.length; i++) {
          m[i] = (m[i] << 8 | m[i] >>> 24) & 16711935 | (m[i] << 24 | m[i] >>> 8) & 4278255360;
        }
        m[l >>> 5] |= 128 << l % 32;
        m[(l + 64 >>> 9 << 4) + 14] = l;
        var FF = md53._ff, GG = md53._gg, HH = md53._hh, II = md53._ii;
        for (var i = 0; i < m.length; i += 16) {
          var aa = a, bb = b, cc = c, dd = d;
          a = FF(a, b, c, d, m[i + 0], 7, -680876936);
          d = FF(d, a, b, c, m[i + 1], 12, -389564586);
          c = FF(c, d, a, b, m[i + 2], 17, 606105819);
          b = FF(b, c, d, a, m[i + 3], 22, -1044525330);
          a = FF(a, b, c, d, m[i + 4], 7, -176418897);
          d = FF(d, a, b, c, m[i + 5], 12, 1200080426);
          c = FF(c, d, a, b, m[i + 6], 17, -1473231341);
          b = FF(b, c, d, a, m[i + 7], 22, -45705983);
          a = FF(a, b, c, d, m[i + 8], 7, 1770035416);
          d = FF(d, a, b, c, m[i + 9], 12, -1958414417);
          c = FF(c, d, a, b, m[i + 10], 17, -42063);
          b = FF(b, c, d, a, m[i + 11], 22, -1990404162);
          a = FF(a, b, c, d, m[i + 12], 7, 1804603682);
          d = FF(d, a, b, c, m[i + 13], 12, -40341101);
          c = FF(c, d, a, b, m[i + 14], 17, -1502002290);
          b = FF(b, c, d, a, m[i + 15], 22, 1236535329);
          a = GG(a, b, c, d, m[i + 1], 5, -165796510);
          d = GG(d, a, b, c, m[i + 6], 9, -1069501632);
          c = GG(c, d, a, b, m[i + 11], 14, 643717713);
          b = GG(b, c, d, a, m[i + 0], 20, -373897302);
          a = GG(a, b, c, d, m[i + 5], 5, -701558691);
          d = GG(d, a, b, c, m[i + 10], 9, 38016083);
          c = GG(c, d, a, b, m[i + 15], 14, -660478335);
          b = GG(b, c, d, a, m[i + 4], 20, -405537848);
          a = GG(a, b, c, d, m[i + 9], 5, 568446438);
          d = GG(d, a, b, c, m[i + 14], 9, -1019803690);
          c = GG(c, d, a, b, m[i + 3], 14, -187363961);
          b = GG(b, c, d, a, m[i + 8], 20, 1163531501);
          a = GG(a, b, c, d, m[i + 13], 5, -1444681467);
          d = GG(d, a, b, c, m[i + 2], 9, -51403784);
          c = GG(c, d, a, b, m[i + 7], 14, 1735328473);
          b = GG(b, c, d, a, m[i + 12], 20, -1926607734);
          a = HH(a, b, c, d, m[i + 5], 4, -378558);
          d = HH(d, a, b, c, m[i + 8], 11, -2022574463);
          c = HH(c, d, a, b, m[i + 11], 16, 1839030562);
          b = HH(b, c, d, a, m[i + 14], 23, -35309556);
          a = HH(a, b, c, d, m[i + 1], 4, -1530992060);
          d = HH(d, a, b, c, m[i + 4], 11, 1272893353);
          c = HH(c, d, a, b, m[i + 7], 16, -155497632);
          b = HH(b, c, d, a, m[i + 10], 23, -1094730640);
          a = HH(a, b, c, d, m[i + 13], 4, 681279174);
          d = HH(d, a, b, c, m[i + 0], 11, -358537222);
          c = HH(c, d, a, b, m[i + 3], 16, -722521979);
          b = HH(b, c, d, a, m[i + 6], 23, 76029189);
          a = HH(a, b, c, d, m[i + 9], 4, -640364487);
          d = HH(d, a, b, c, m[i + 12], 11, -421815835);
          c = HH(c, d, a, b, m[i + 15], 16, 530742520);
          b = HH(b, c, d, a, m[i + 2], 23, -995338651);
          a = II(a, b, c, d, m[i + 0], 6, -198630844);
          d = II(d, a, b, c, m[i + 7], 10, 1126891415);
          c = II(c, d, a, b, m[i + 14], 15, -1416354905);
          b = II(b, c, d, a, m[i + 5], 21, -57434055);
          a = II(a, b, c, d, m[i + 12], 6, 1700485571);
          d = II(d, a, b, c, m[i + 3], 10, -1894986606);
          c = II(c, d, a, b, m[i + 10], 15, -1051523);
          b = II(b, c, d, a, m[i + 1], 21, -2054922799);
          a = II(a, b, c, d, m[i + 8], 6, 1873313359);
          d = II(d, a, b, c, m[i + 15], 10, -30611744);
          c = II(c, d, a, b, m[i + 6], 15, -1560198380);
          b = II(b, c, d, a, m[i + 13], 21, 1309151649);
          a = II(a, b, c, d, m[i + 4], 6, -145523070);
          d = II(d, a, b, c, m[i + 11], 10, -1120210379);
          c = II(c, d, a, b, m[i + 2], 15, 718787259);
          b = II(b, c, d, a, m[i + 9], 21, -343485551);
          a = a + aa >>> 0;
          b = b + bb >>> 0;
          c = c + cc >>> 0;
          d = d + dd >>> 0;
        }
        return crypt.endian([a, b, c, d]);
      };
      md53._ff = function(a, b, c, d, x, s, t) {
        var n = a + (b & c | ~b & d) + (x >>> 0) + t;
        return (n << s | n >>> 32 - s) + b;
      };
      md53._gg = function(a, b, c, d, x, s, t) {
        var n = a + (b & d | c & ~d) + (x >>> 0) + t;
        return (n << s | n >>> 32 - s) + b;
      };
      md53._hh = function(a, b, c, d, x, s, t) {
        var n = a + (b ^ c ^ d) + (x >>> 0) + t;
        return (n << s | n >>> 32 - s) + b;
      };
      md53._ii = function(a, b, c, d, x, s, t) {
        var n = a + (c ^ (b | ~d)) + (x >>> 0) + t;
        return (n << s | n >>> 32 - s) + b;
      };
      md53._blocksize = 16;
      md53._digestsize = 16;
      module2.exports = function(message, options) {
        if (message === void 0 || message === null)
          throw new Error("Illegal argument " + message);
        var digestbytes = crypt.wordsToBytes(md53(message, options));
        return options && options.asBytes ? digestbytes : options && options.asString ? bin.bytesToString(digestbytes) : crypt.bytesToHex(digestbytes);
      };
    })();
  }
});

// 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 Buffer2 = 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 Buffer2) {
      if (!Buffer2.hasOwnProperty(key)) continue;
      if (key === "allocUnsafe" || key === "allocUnsafeSlow") continue;
      Safer[key] = Buffer2[key];
    }
    safer.Buffer.prototype = Buffer2.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 Buffer2(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 = Buffer2(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 Buffer2 = 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, iconv2) {
      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 (Buffer2.from("eda0bdedb2a9", "hex").toString() !== "\u{1F4A9}") {
          this.decoder = InternalDecoderCesu8;
          this.defaultCharUnicode = iconv2.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 (!Buffer2.isBuffer(buf)) {
        buf = Buffer2.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 Buffer2.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 Buffer2.from(str, "base64");
    };
    InternalEncoderBase64.prototype.end = function() {
      return Buffer2.from(this.prevStr, "base64");
    };
    function InternalEncoderCesu8(options, codec) {
    }
    InternalEncoderCesu8.prototype.write = function(str) {
      var buf = Buffer2.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 Buffer2.from(str, this.enc);
    };
    InternalEncoderUtf8.prototype.end = function() {
      if (this.highSurrogate) {
        var str = this.highSurrogate;
        this.highSurrogate = "";
        return Buffer2.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 Buffer2 = require_safer().Buffer;
    exports2._utf32 = Utf32Codec;
    function Utf32Codec(codecOptions, iconv2) {
      this.iconv = iconv2;
      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 = Buffer2.from(str, "ucs2");
      var dst = Buffer2.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 = Buffer2.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 = Buffer2.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, iconv2) {
      this.iconv = iconv2;
    }
    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 Buffer2 = 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 = Buffer2.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 = Buffer2.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, iconv2) {
      this.iconv = iconv2;
    }
    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 Buffer2 = require_safer().Buffer;
    exports2.utf7 = Utf7Codec;
    exports2.unicode11utf7 = "utf7";
    function Utf7Codec(codecOptions, iconv2) {
      this.iconv = iconv2;
    }
    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 Buffer2.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 base64Regex = /[A-Za-z0-9\/+]/;
    var base64Chars = [];
    for (i = 0; i < 256; i++) {
      base64Chars[i] = base64Regex.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(Buffer2.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(Buffer2.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(Buffer2.from(this.base64Accum, "base64"), "utf16-be");
      }
      this.inBase64 = false;
      this.base64Accum = "";
      return res;
    };
    exports2.utf7imap = Utf7IMAPCodec;
    function Utf7IMAPCodec(codecOptions, iconv2) {
      this.iconv = iconv2;
    }
    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 = Buffer2.alloc(6);
      this.base64AccumIdx = 0;
    }
    Utf7IMAPEncoder.prototype.write = function(str) {
      var inBase64 = this.inBase64;
      var base64Accum = this.base64Accum;
      var base64AccumIdx = this.base64AccumIdx;
      var buf = Buffer2.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 = Buffer2.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(Buffer2.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(Buffer2.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(Buffer2.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 Buffer2 = require_safer().Buffer;
    exports2._sbcs = SBCSCodec;
    function SBCSCodec(codecOptions, iconv2) {
      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 = Buffer2.from(codecOptions.chars, "ucs2");
      var encodeBuf = Buffer2.alloc(65536, iconv2.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 = Buffer2.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 = Buffer2.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 Buffer2 = 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, iconv2) {
      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 = iconv2.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][iconv2.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 = Buffer2.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 = Buffer2.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 = Buffer2.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 Buffer2 = require_safer().Buffer;
    module2.exports = function(streamModule) {
      var Transform = streamModule.Transform;
      function IconvLiteEncoderStream(conv, options) {
        this.conv = conv;
        options = options || {};
        options.decodeStrings = false;
        Transform.call(this, options);
      }
      IconvLiteEncoderStream.prototype = Object.create(Transform.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, Buffer2.concat(chunks));
        });
        return this;
      };
      function IconvLiteDecoderStream(conv, options) {
        this.conv = conv;
        options = options || {};
        options.encoding = this.encoding = "utf8";
        Transform.call(this, options);
      }
      IconvLiteDecoderStream.prototype = Object.create(Transform.prototype, {
        constructor: { value: IconvLiteDecoderStream }
      });
      IconvLiteDecoderStream.prototype._transform = function(chunk, encoding, done) {
        if (!Buffer2.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_lib2 = __commonJS({
  "node_modules/iconv-lite/lib/index.js"(exports2, module2) {
    "use strict";
    var Buffer2 = 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 encode(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 ? Buffer2.concat([res, trail]) : res;
    };
    module2.exports.decode = function decode2(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 = Buffer2.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 encodingExists2(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/rxjs/dist/cjs/internal/util/isFunction.js
var require_isFunction = __commonJS({
  "node_modules/rxjs/dist/cjs/internal/util/isFunction.js"(exports2) {
    "use strict";
    Object.defineProperty(exports2, "__esModule", { value: true });
    exports2.isFunction = void 0;
    function isFunction(value) {
      return typeof value === "function";
    }
    exports2.isFunction = isFunction;
  }
});

// node_modules/rxjs/dist/cjs/internal/util/createErrorClass.js
var require_createErrorClass = __commonJS({
  "node_modules/rxjs/dist/cjs/internal/util/createErrorClass.js"(exports2) {
    "use strict";
    Object.defineProperty(exports2, "__esModule", { value: true });
    exports2.createErrorClass = void 0;
    function createErrorClass(createImpl) {
      var _super = function(instance) {
        Error.call(instance);
        instance.stack = new Error().stack;
      };
      var ctorFunc = createImpl(_super);
      ctorFunc.prototype = Object.create(Error.prototype);
      ctorFunc.prototype.constructor = ctorFunc;
      return ctorFunc;
    }
    exports2.createErrorClass = createErrorClass;
  }
});

// node_modules/rxjs/dist/cjs/internal/util/UnsubscriptionError.js
var require_UnsubscriptionError = __commonJS({
  "node_modules/rxjs/dist/cjs/internal/util/UnsubscriptionError.js"(exports2) {
    "use strict";
    Object.defineProperty(exports2, "__esModule", { value: true });
    exports2.UnsubscriptionError = void 0;
    var createErrorClass_1 = require_createErrorClass();
    exports2.UnsubscriptionError = createErrorClass_1.createErrorClass(function(_super) {
      return function UnsubscriptionErrorImpl(errors) {
        _super(this);
        this.message = errors ? errors.length + " errors occurred during unsubscription:\n" + errors.map(function(err, i) {
          return i + 1 + ") " + err.toString();
        }).join("\n  ") : "";
        this.name = "UnsubscriptionError";
        this.errors = errors;
      };
    });
  }
});

// node_modules/rxjs/dist/cjs/internal/util/arrRemove.js
var require_arrRemove = __commonJS({
  "node_modules/rxjs/dist/cjs/internal/util/arrRemove.js"(exports2) {
    "use strict";
    Object.defineProperty(exports2, "__esModule", { value: true });
    exports2.arrRemove = void 0;
    function arrRemove(arr, item) {
      if (arr) {
        var index = arr.indexOf(item);
        0 <= index && arr.splice(index, 1);
      }
    }
    exports2.arrRemove = arrRemove;
  }
});

// node_modules/rxjs/dist/cjs/internal/Subscription.js
var require_Subscription = __commonJS({
  "node_modules/rxjs/dist/cjs/internal/Subscription.js"(exports2) {
    "use strict";
    var __values = exports2 && exports2.__values || function(o) {
      var s = typeof Symbol === "function" && Symbol.iterator, m = s && o[s], i = 0;
      if (m) return m.call(o);
      if (o && typeof o.length === "number") return {
        next: function() {
          if (o && i >= o.length) o = void 0;
          return { value: o && o[i++], done: !o };
        }
      };
      throw new TypeError(s ? "Object is not iterable." : "Symbol.iterator is not defined.");
    };
    var __read = exports2 && exports2.__read || function(o, n) {
      var m = typeof Symbol === "function" && o[Symbol.iterator];
      if (!m) return o;
      var i = m.call(o), r, ar = [], e;
      try {
        while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);
      } catch (error) {
        e = { error };
      } finally {
        try {
          if (r && !r.done && (m = i["return"])) m.call(i);
        } finally {
          if (e) throw e.error;
        }
      }
      return ar;
    };
    var __spreadArray = exports2 && exports2.__spreadArray || function(to, from) {
      for (var i = 0, il = from.length, j = to.length; i < il; i++, j++)
        to[j] = from[i];
      return to;
    };
    Object.defineProperty(exports2, "__esModule", { value: true });
    exports2.isSubscription = exports2.EMPTY_SUBSCRIPTION = exports2.Subscription = void 0;
    var isFunction_1 = require_isFunction();
    var UnsubscriptionError_1 = require_UnsubscriptionError();
    var arrRemove_1 = require_arrRemove();
    var Subscription = (function() {
      function Subscription2(initialTeardown) {
        this.initialTeardown = initialTeardown;
        this.closed = false;
        this._parentage = null;
        this._finalizers = null;
      }
      Subscription2.prototype.unsubscribe = function() {
        var e_1, _a2, e_2, _b;
        var errors;
        if (!this.closed) {
          this.closed = true;
          var _parentage = this._parentage;
          if (_parentage) {
            this._parentage = null;
            if (Array.isArray(_parentage)) {
              try {
                for (var _parentage_1 = __values(_parentage), _parentage_1_1 = _parentage_1.next(); !_parentage_1_1.done; _parentage_1_1 = _parentage_1.next()) {
                  var parent_1 = _parentage_1_1.value;
                  parent_1.remove(this);
                }
              } catch (e_1_1) {
                e_1 = { error: e_1_1 };
              } finally {
                try {
                  if (_parentage_1_1 && !_parentage_1_1.done && (_a2 = _parentage_1.return)) _a2.call(_parentage_1);
                } finally {
                  if (e_1) throw e_1.error;
                }
              }
            } else {
              _parentage.remove(this);
            }
          }
          var initialFinalizer = this.initialTeardown;
          if (isFunction_1.isFunction(initialFinalizer)) {
            try {
              initialFinalizer();
            } catch (e) {
              errors = e instanceof UnsubscriptionError_1.UnsubscriptionError ? e.errors : [e];
            }
          }
          var _finalizers = this._finalizers;
          if (_finalizers) {
            this._finalizers = null;
            try {
              for (var _finalizers_1 = __values(_finalizers), _finalizers_1_1 = _finalizers_1.next(); !_finalizers_1_1.done; _finalizers_1_1 = _finalizers_1.next()) {
                var finalizer = _finalizers_1_1.value;
                try {
                  execFinalizer(finalizer);
                } catch (err) {
                  errors = errors !== null && errors !== void 0 ? errors : [];
                  if (err instanceof UnsubscriptionError_1.UnsubscriptionError) {
                    errors = __spreadArray(__spreadArray([], __read(errors)), __read(err.errors));
                  } else {
                    errors.push(err);
                  }
                }
              }
            } catch (e_2_1) {
              e_2 = { error: e_2_1 };
            } finally {
              try {
                if (_finalizers_1_1 && !_finalizers_1_1.done && (_b = _finalizers_1.return)) _b.call(_finalizers_1);
              } finally {
                if (e_2) throw e_2.error;
              }
            }
          }
          if (errors) {
            throw new UnsubscriptionError_1.UnsubscriptionError(errors);
          }
        }
      };
      Subscription2.prototype.add = function(teardown) {
        var _a2;
        if (teardown && teardown !== this) {
          if (this.closed) {
            execFinalizer(teardown);
          } else {
            if (teardown instanceof Subscription2) {
              if (teardown.closed || teardown._hasParent(this)) {
                return;
              }
              teardown._addParent(this);
            }
            (this._finalizers = (_a2 = this._finalizers) !== null && _a2 !== void 0 ? _a2 : []).push(teardown);
          }
        }
      };
      Subscription2.prototype._hasParent = function(parent) {
        var _parentage = this._parentage;
        return _parentage === parent || Array.isArray(_parentage) && _parentage.includes(parent);
      };
      Subscription2.prototype._addParent = function(parent) {
        var _parentage = this._parentage;
        this._parentage = Array.isArray(_parentage) ? (_parentage.push(parent), _parentage) : _parentage ? [_parentage, parent] : parent;
      };
      Subscription2.prototype._removeParent = function(parent) {
        var _parentage = this._parentage;
        if (_parentage === parent) {
          this._parentage = null;
        } else if (Array.isArray(_parentage)) {
          arrRemove_1.arrRemove(_parentage, parent);
        }
      };
      Subscription2.prototype.remove = function(teardown) {
        var _finalizers = this._finalizers;
        _finalizers && arrRemove_1.arrRemove(_finalizers, teardown);
        if (teardown instanceof Subscription2) {
          teardown._removeParent(this);
        }
      };
      Subscription2.EMPTY = (function() {
        var empty = new Subscription2();
        empty.closed = true;
        return empty;
      })();
      return Subscription2;
    })();
    exports2.Subscription = Subscription;
    exports2.EMPTY_SUBSCRIPTION = Subscription.EMPTY;
    function isSubscription(value) {
      return value instanceof Subscription || value && "closed" in value && isFunction_1.isFunction(value.remove) && isFunction_1.isFunction(value.add) && isFunction_1.isFunction(value.unsubscribe);
    }
    exports2.isSubscription = isSubscription;
    function execFinalizer(finalizer) {
      if (isFunction_1.isFunction(finalizer)) {
        finalizer();
      } else {
        finalizer.unsubscribe();
      }
    }
  }
});

// node_modules/rxjs/dist/cjs/internal/config.js
var require_config = __commonJS({
  "node_modules/rxjs/dist/cjs/internal/config.js"(exports2) {
    "use strict";
    Object.defineProperty(exports2, "__esModule", { value: true });
    exports2.config = void 0;
    exports2.config = {
      onUnhandledError: null,
      onStoppedNotification: null,
      Promise: void 0,
      useDeprecatedSynchronousErrorHandling: false,
      useDeprecatedNextContext: false
    };
  }
});

// node_modules/rxjs/dist/cjs/internal/scheduler/timeoutProvider.js
var require_timeoutProvider = __commonJS({
  "node_modules/rxjs/dist/cjs/internal/scheduler/timeoutProvider.js"(exports2) {
    "use strict";
    var __read = exports2 && exports2.__read || function(o, n) {
      var m = typeof Symbol === "function" && o[Symbol.iterator];
      if (!m) return o;
      var i = m.call(o), r, ar = [], e;
      try {
        while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);
      } catch (error) {
        e = { error };
      } finally {
        try {
          if (r && !r.done && (m = i["return"])) m.call(i);
        } finally {
          if (e) throw e.error;
        }
      }
      return ar;
    };
    var __spreadArray = exports2 && exports2.__spreadArray || function(to, from) {
      for (var i = 0, il = from.length, j = to.length; i < il; i++, j++)
        to[j] = from[i];
      return to;
    };
    Object.defineProperty(exports2, "__esModule", { value: true });
    exports2.timeoutProvider = void 0;
    exports2.timeoutProvider = {
      setTimeout: function(handler, timeout2) {
        var args = [];
        for (var _i = 2; _i < arguments.length; _i++) {
          args[_i - 2] = arguments[_i];
        }
        var delegate = exports2.timeoutProvider.delegate;
        if (delegate === null || delegate === void 0 ? void 0 : delegate.setTimeout) {
          return delegate.setTimeout.apply(delegate, __spreadArray([handler, timeout2], __read(args)));
        }
        return setTimeout.apply(void 0, __spreadArray([handler, timeout2], __read(args)));
      },
      clearTimeout: function(handle) {
        var delegate = exports2.timeoutProvider.delegate;
        return ((delegate === null || delegate === void 0 ? void 0 : delegate.clearTimeout) || clearTimeout)(handle);
      },
      delegate: void 0
    };
  }
});

// node_modules/rxjs/dist/cjs/internal/util/reportUnhandledError.js
var require_reportUnhandledError = __commonJS({
  "node_modules/rxjs/dist/cjs/internal/util/reportUnhandledError.js"(exports2) {
    "use strict";
    Object.defineProperty(exports2, "__esModule", { value: true });
    exports2.reportUnhandledError = void 0;
    var config_1 = require_config();
    var timeoutProvider_1 = require_timeoutProvider();
    function reportUnhandledError(err) {
      timeoutProvider_1.timeoutProvider.setTimeout(function() {
        var onUnhandledError = config_1.config.onUnhandledError;
        if (onUnhandledError) {
          onUnhandledError(err);
        } else {
          throw err;
        }
      });
    }
    exports2.reportUnhandledError = reportUnhandledError;
  }
});

// node_modules/rxjs/dist/cjs/internal/util/noop.js
var require_noop = __commonJS({
  "node_modules/rxjs/dist/cjs/internal/util/noop.js"(exports2) {
    "use strict";
    Object.defineProperty(exports2, "__esModule", { value: true });
    exports2.noop = void 0;
    function noop() {
    }
    exports2.noop = noop;
  }
});

// node_modules/rxjs/dist/cjs/internal/NotificationFactories.js
var require_NotificationFactories = __commonJS({
  "node_modules/rxjs/dist/cjs/internal/NotificationFactories.js"(exports2) {
    "use strict";
    Object.defineProperty(exports2, "__esModule", { value: true });
    exports2.createNotification = exports2.nextNotification = exports2.errorNotification = exports2.COMPLETE_NOTIFICATION = void 0;
    exports2.COMPLETE_NOTIFICATION = (function() {
      return createNotification("C", void 0, void 0);
    })();
    function errorNotification(error) {
      return createNotification("E", void 0, error);
    }
    exports2.errorNotification = errorNotification;
    function nextNotification(value) {
      return createNotification("N", value, void 0);
    }
    exports2.nextNotification = nextNotification;
    function createNotification(kind, value, error) {
      return {
        kind,
        value,
        error
      };
    }
    exports2.createNotification = createNotification;
  }
});

// node_modules/rxjs/dist/cjs/internal/util/errorContext.js
var require_errorContext = __commonJS({
  "node_modules/rxjs/dist/cjs/internal/util/errorContext.js"(exports2) {
    "use strict";
    Object.defineProperty(exports2, "__esModule", { value: true });
    exports2.captureError = exports2.errorContext = void 0;
    var config_1 = require_config();
    var context = null;
    function errorContext(cb) {
      if (config_1.config.useDeprecatedSynchronousErrorHandling) {
        var isRoot = !context;
        if (isRoot) {
          context = { errorThrown: false, error: null };
        }
        cb();
        if (isRoot) {
          var _a2 = context, errorThrown = _a2.errorThrown, error = _a2.error;
          context = null;
          if (errorThrown) {
            throw error;
          }
        }
      } else {
        cb();
      }
    }
    exports2.errorContext = errorContext;
    function captureError(err) {
      if (config_1.config.useDeprecatedSynchronousErrorHandling && context) {
        context.errorThrown = true;
        context.error = err;
      }
    }
    exports2.captureError = captureError;
  }
});

// node_modules/rxjs/dist/cjs/internal/Subscriber.js
var require_Subscriber = __commonJS({
  "node_modules/rxjs/dist/cjs/internal/Subscriber.js"(exports2) {
    "use strict";
    var __extends = exports2 && exports2.__extends || /* @__PURE__ */ (function() {
      var extendStatics = function(d, b) {
        extendStatics = Object.setPrototypeOf || { __proto__: [] } instanceof Array && function(d2, b2) {
          d2.__proto__ = b2;
        } || function(d2, b2) {
          for (var p in b2) if (Object.prototype.hasOwnProperty.call(b2, p)) d2[p] = b2[p];
        };
        return extendStatics(d, b);
      };
      return function(d, b) {
        if (typeof b !== "function" && b !== null)
          throw new TypeError("Class extends value " + String(b) + " is not a constructor or null");
        extendStatics(d, b);
        function __() {
          this.constructor = d;
        }
        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
      };
    })();
    Object.defineProperty(exports2, "__esModule", { value: true });
    exports2.EMPTY_OBSERVER = exports2.SafeSubscriber = exports2.Subscriber = void 0;
    var isFunction_1 = require_isFunction();
    var Subscription_1 = require_Subscription();
    var config_1 = require_config();
    var reportUnhandledError_1 = require_reportUnhandledError();
    var noop_1 = require_noop();
    var NotificationFactories_1 = require_NotificationFactories();
    var timeoutProvider_1 = require_timeoutProvider();
    var errorContext_1 = require_errorContext();
    var Subscriber = (function(_super) {
      __extends(Subscriber2, _super);
      function Subscriber2(destination) {
        var _this = _super.call(this) || this;
        _this.isStopped = false;
        if (destination) {
          _this.destination = destination;
          if (Subscription_1.isSubscription(destination)) {
            destination.add(_this);
          }
        } else {
          _this.destination = exports2.EMPTY_OBSERVER;
        }
        return _this;
      }
      Subscriber2.create = function(next, error, complete) {
        return new SafeSubscriber(next, error, complete);
      };
      Subscriber2.prototype.next = function(value) {
        if (this.isStopped) {
          handleStoppedNotification(NotificationFactories_1.nextNotification(value), this);
        } else {
          this._next(value);
        }
      };
      Subscriber2.prototype.error = function(err) {
        if (this.isStopped) {
          handleStoppedNotification(NotificationFactories_1.errorNotification(err), this);
        } else {
          this.isStopped = true;
          this._error(err);
        }
      };
      Subscriber2.prototype.complete = function() {
        if (this.isStopped) {
          handleStoppedNotification(NotificationFactories_1.COMPLETE_NOTIFICATION, this);
        } else {
          this.isStopped = true;
          this._complete();
        }
      };
      Subscriber2.prototype.unsubscribe = function() {
        if (!this.closed) {
          this.isStopped = true;
          _super.prototype.unsubscribe.call(this);
          this.destination = null;
        }
      };
      Subscriber2.prototype._next = function(value) {
        this.destination.next(value);
      };
      Subscriber2.prototype._error = function(err) {
        try {
          this.destination.error(err);
        } finally {
          this.unsubscribe();
        }
      };
      Subscriber2.prototype._complete = function() {
        try {
          this.destination.complete();
        } finally {
          this.unsubscribe();
        }
      };
      return Subscriber2;
    })(Subscription_1.Subscription);
    exports2.Subscriber = Subscriber;
    var _bind = Function.prototype.bind;
    function bind(fn, thisArg) {
      return _bind.call(fn, thisArg);
    }
    var ConsumerObserver = (function() {
      function ConsumerObserver2(partialObserver) {
        this.partialObserver = partialObserver;
      }
      ConsumerObserver2.prototype.next = function(value) {
        var partialObserver = this.partialObserver;
        if (partialObserver.next) {
          try {
            partialObserver.next(value);
          } catch (error) {
            handleUnhandledError(error);
          }
        }
      };
      ConsumerObserver2.prototype.error = function(err) {
        var partialObserver = this.partialObserver;
        if (partialObserver.error) {
          try {
            partialObserver.error(err);
          } catch (error) {
            handleUnhandledError(error);
          }
        } else {
          handleUnhandledError(err);
        }
      };
      ConsumerObserver2.prototype.complete = function() {
        var partialObserver = this.partialObserver;
        if (partialObserver.complete) {
          try {
            partialObserver.complete();
          } catch (error) {
            handleUnhandledError(error);
          }
        }
      };
      return ConsumerObserver2;
    })();
    var SafeSubscriber = (function(_super) {
      __extends(SafeSubscriber2, _super);
      function SafeSubscriber2(observerOrNext, error, complete) {
        var _this = _super.call(this) || this;
        var partialObserver;
        if (isFunction_1.isFunction(observerOrNext) || !observerOrNext) {
          partialObserver = {
            next: observerOrNext !== null && observerOrNext !== void 0 ? observerOrNext : void 0,
            error: error !== null && error !== void 0 ? error : void 0,
            complete: complete !== null && complete !== void 0 ? complete : void 0
          };
        } else {
          var context_1;
          if (_this && config_1.config.useDeprecatedNextContext) {
            context_1 = Object.create(observerOrNext);
            context_1.unsubscribe = function() {
              return _this.unsubscribe();
            };
            partialObserver = {
              next: observerOrNext.next && bind(observerOrNext.next, context_1),
              error: observerOrNext.error && bind(observerOrNext.error, context_1),
              complete: observerOrNext.complete && bind(observerOrNext.complete, context_1)
            };
          } else {
            partialObserver = observerOrNext;
          }
        }
        _this.destination = new ConsumerObserver(partialObserver);
        return _this;
      }
      return SafeSubscriber2;
    })(Subscriber);
    exports2.SafeSubscriber = SafeSubscriber;
    function handleUnhandledError(error) {
      if (config_1.config.useDeprecatedSynchronousErrorHandling) {
        errorContext_1.captureError(error);
      } else {
        reportUnhandledError_1.reportUnhandledError(error);
      }
    }
    function defaultErrorHandler(err) {
      throw err;
    }
    function handleStoppedNotification(notification, subscriber) {
      var onStoppedNotification = config_1.config.onStoppedNotification;
      onStoppedNotification && timeoutProvider_1.timeoutProvider.setTimeout(function() {
        return onStoppedNotification(notification, subscriber);
      });
    }
    exports2.EMPTY_OBSERVER = {
      closed: true,
      next: noop_1.noop,
      error: defaultErrorHandler,
      complete: noop_1.noop
    };
  }
});

// node_modules/rxjs/dist/cjs/internal/symbol/observable.js
var require_observable = __commonJS({
  "node_modules/rxjs/dist/cjs/internal/symbol/observable.js"(exports2) {
    "use strict";
    Object.defineProperty(exports2, "__esModule", { value: true });
    exports2.observable = void 0;
    exports2.observable = (function() {
      return typeof Symbol === "function" && Symbol.observable || "@@observable";
    })();
  }
});

// node_modules/rxjs/dist/cjs/internal/util/identity.js
var require_identity = __commonJS({
  "node_modules/rxjs/dist/cjs/internal/util/identity.js"(exports2) {
    "use strict";
    Object.defineProperty(exports2, "__esModule", { value: true });
    exports2.identity = void 0;
    function identity(x) {
      return x;
    }
    exports2.identity = identity;
  }
});

// node_modules/rxjs/dist/cjs/internal/util/pipe.js
var require_pipe = __commonJS({
  "node_modules/rxjs/dist/cjs/internal/util/pipe.js"(exports2) {
    "use strict";
    Object.defineProperty(exports2, "__esModule", { value: true });
    exports2.pipeFromArray = exports2.pipe = void 0;
    var identity_1 = require_identity();
    function pipe() {
      var fns = [];
      for (var _i = 0; _i < arguments.length; _i++) {
        fns[_i] = arguments[_i];
      }
      return pipeFromArray(fns);
    }
    exports2.pipe = pipe;
    function pipeFromArray(fns) {
      if (fns.length === 0) {
        return identity_1.identity;
      }
      if (fns.length === 1) {
        return fns[0];
      }
      return function piped(input) {
        return fns.reduce(function(prev, fn) {
          return fn(prev);
        }, input);
      };
    }
    exports2.pipeFromArray = pipeFromArray;
  }
});

// node_modules/rxjs/dist/cjs/internal/Observable.js
var require_Observable = __commonJS({
  "node_modules/rxjs/dist/cjs/internal/Observable.js"(exports2) {
    "use strict";
    Object.defineProperty(exports2, "__esModule", { value: true });
    exports2.Observable = void 0;
    var Subscriber_1 = require_Subscriber();
    var Subscription_1 = require_Subscription();
    var observable_1 = require_observable();
    var pipe_1 = require_pipe();
    var config_1 = require_config();
    var isFunction_1 = require_isFunction();
    var errorContext_1 = require_errorContext();
    var Observable2 = (function() {
      function Observable3(subscribe) {
        if (subscribe) {
          this._subscribe = subscribe;
        }
      }
      Observable3.prototype.lift = function(operator) {
        var observable = new Observable3();
        observable.source = this;
        observable.operator = operator;
        return observable;
      };
      Observable3.prototype.subscribe = function(observerOrNext, error, complete) {
        var _this = this;
        var subscriber = isSubscriber(observerOrNext) ? observerOrNext : new Subscriber_1.SafeSubscriber(observerOrNext, error, complete);
        errorContext_1.errorContext(function() {
          var _a2 = _this, operator = _a2.operator, source = _a2.source;
          subscriber.add(operator ? operator.call(subscriber, source) : source ? _this._subscribe(subscriber) : _this._trySubscribe(subscriber));
        });
        return subscriber;
      };
      Observable3.prototype._trySubscribe = function(sink) {
        try {
          return this._subscribe(sink);
        } catch (err) {
          sink.error(err);
        }
      };
      Observable3.prototype.forEach = function(next, promiseCtor) {
        var _this = this;
        promiseCtor = getPromiseCtor(promiseCtor);
        return new promiseCtor(function(resolve, reject) {
          var subscriber = new Subscriber_1.SafeSubscriber({
            next: function(value) {
              try {
                next(value);
              } catch (err) {
                reject(err);
                subscriber.unsubscribe();
              }
            },
            error: reject,
            complete: resolve
          });
          _this.subscribe(subscriber);
        });
      };
      Observable3.prototype._subscribe = function(subscriber) {
        var _a2;
        return (_a2 = this.source) === null || _a2 === void 0 ? void 0 : _a2.subscribe(subscriber);
      };
      Observable3.prototype[observable_1.observable] = function() {
        return this;
      };
      Observable3.prototype.pipe = function() {
        var operations = [];
        for (var _i = 0; _i < arguments.length; _i++) {
          operations[_i] = arguments[_i];
        }
        return pipe_1.pipeFromArray(operations)(this);
      };
      Observable3.prototype.toPromise = function(promiseCtor) {
        var _this = this;
        promiseCtor = getPromiseCtor(promiseCtor);
        return new promiseCtor(function(resolve, reject) {
          var value;
          _this.subscribe(function(x) {
            return value = x;
          }, function(err) {
            return reject(err);
          }, function() {
            return resolve(value);
          });
        });
      };
      Observable3.create = function(subscribe) {
        return new Observable3(subscribe);
      };
      return Observable3;
    })();
    exports2.Observable = Observable2;
    function getPromiseCtor(promiseCtor) {
      var _a2;
      return (_a2 = promiseCtor !== null && promiseCtor !== void 0 ? promiseCtor : config_1.config.Promise) !== null && _a2 !== void 0 ? _a2 : Promise;
    }
    function isObserver(value) {
      return value && isFunction_1.isFunction(value.next) && isFunction_1.isFunction(value.error) && isFunction_1.isFunction(value.complete);
    }
    function isSubscriber(value) {
      return value && value instanceof Subscriber_1.Subscriber || isObserver(value) && Subscription_1.isSubscription(value);
    }
  }
});

// node_modules/rxjs/dist/cjs/internal/util/lift.js
var require_lift = __commonJS({
  "node_modules/rxjs/dist/cjs/internal/util/lift.js"(exports2) {
    "use strict";
    Object.defineProperty(exports2, "__esModule", { value: true });
    exports2.operate = exports2.hasLift = void 0;
    var isFunction_1 = require_isFunction();
    function hasLift(source) {
      return isFunction_1.isFunction(source === null || source === void 0 ? void 0 : source.lift);
    }
    exports2.hasLift = hasLift;
    function operate(init) {
      return function(source) {
        if (hasLift(source)) {
          return source.lift(function(liftedSource) {
            try {
              return init(liftedSource, this);
            } catch (err) {
              this.error(err);
            }
          });
        }
        throw new TypeError("Unable to lift unknown Observable type");
      };
    }
    exports2.operate = operate;
  }
});

// node_modules/rxjs/dist/cjs/internal/operators/OperatorSubscriber.js
var require_OperatorSubscriber = __commonJS({
  "node_modules/rxjs/dist/cjs/internal/operators/OperatorSubscriber.js"(exports2) {
    "use strict";
    var __extends = exports2 && exports2.__extends || /* @__PURE__ */ (function() {
      var extendStatics = function(d, b) {
        extendStatics = Object.setPrototypeOf || { __proto__: [] } instanceof Array && function(d2, b2) {
          d2.__proto__ = b2;
        } || function(d2, b2) {
          for (var p in b2) if (Object.prototype.hasOwnProperty.call(b2, p)) d2[p] = b2[p];
        };
        return extendStatics(d, b);
      };
      return function(d, b) {
        if (typeof b !== "function" && b !== null)
          throw new TypeError("Class extends value " + String(b) + " is not a constructor or null");
        extendStatics(d, b);
        function __() {
          this.constructor = d;
        }
        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
      };
    })();
    Object.defineProperty(exports2, "__esModule", { value: true });
    exports2.OperatorSubscriber = exports2.createOperatorSubscriber = void 0;
    var Subscriber_1 = require_Subscriber();
    function createOperatorSubscriber(destination, onNext, onComplete, onError, onFinalize) {
      return new OperatorSubscriber(destination, onNext, onComplete, onError, onFinalize);
    }
    exports2.createOperatorSubscriber = createOperatorSubscriber;
    var OperatorSubscriber = (function(_super) {
      __extends(OperatorSubscriber2, _super);
      function OperatorSubscriber2(destination, onNext, onComplete, onError, onFinalize, shouldUnsubscribe) {
        var _this = _super.call(this, destination) || this;
        _this.onFinalize = onFinalize;
        _this.shouldUnsubscribe = shouldUnsubscribe;
        _this._next = onNext ? function(value) {
          try {
            onNext(value);
          } catch (err) {
            destination.error(err);
          }
        } : _super.prototype._next;
        _this._error = onError ? function(err) {
          try {
            onError(err);
          } catch (err2) {
            destination.error(err2);
          } finally {
            this.unsubscribe();
          }
        } : _super.prototype._error;
        _this._complete = onComplete ? function() {
          try {
            onComplete();
          } catch (err) {
            destination.error(err);
          } finally {
            this.unsubscribe();
          }
        } : _super.prototype._complete;
        return _this;
      }
      OperatorSubscriber2.prototype.unsubscribe = function() {
        var _a2;
        if (!this.shouldUnsubscribe || this.shouldUnsubscribe()) {
          var closed_1 = this.closed;
          _super.prototype.unsubscribe.call(this);
          !closed_1 && ((_a2 = this.onFinalize) === null || _a2 === void 0 ? void 0 : _a2.call(this));
        }
      };
      return OperatorSubscriber2;
    })(Subscriber_1.Subscriber);
    exports2.OperatorSubscriber = OperatorSubscriber;
  }
});

// node_modules/rxjs/dist/cjs/internal/operators/refCount.js
var require_refCount = __commonJS({
  "node_modules/rxjs/dist/cjs/internal/operators/refCount.js"(exports2) {
    "use strict";
    Object.defineProperty(exports2, "__esModule", { value: true });
    exports2.refCount = void 0;
    var lift_1 = require_lift();
    var OperatorSubscriber_1 = require_OperatorSubscriber();
    function refCount() {
      return lift_1.operate(function(source, subscriber) {
        var connection = null;
        source._refCount++;
        var refCounter = OperatorSubscriber_1.createOperatorSubscriber(subscriber, void 0, void 0, void 0, function() {
          if (!source || source._refCount <= 0 || 0 < --source._refCount) {
            connection = null;
            return;
          }
          var sharedConnection = source._connection;
          var conn = connection;
          connection = null;
          if (sharedConnection && (!conn || sharedConnection === conn)) {
            sharedConnection.unsubscribe();
          }
          subscriber.unsubscribe();
        });
        source.subscribe(refCounter);
        if (!refCounter.closed) {
          connection = source.connect();
        }
      });
    }
    exports2.refCount = refCount;
  }
});

// node_modules/rxjs/dist/cjs/internal/observable/ConnectableObservable.js
var require_ConnectableObservable = __commonJS({
  "node_modules/rxjs/dist/cjs/internal/observable/ConnectableObservable.js"(exports2) {
    "use strict";
    var __extends = exports2 && exports2.__extends || /* @__PURE__ */ (function() {
      var extendStatics = function(d, b) {
        extendStatics = Object.setPrototypeOf || { __proto__: [] } instanceof Array && function(d2, b2) {
          d2.__proto__ = b2;
        } || function(d2, b2) {
          for (var p in b2) if (Object.prototype.hasOwnProperty.call(b2, p)) d2[p] = b2[p];
        };
        return extendStatics(d, b);
      };
      return function(d, b) {
        if (typeof b !== "function" && b !== null)
          throw new TypeError("Class extends value " + String(b) + " is not a constructor or null");
        extendStatics(d, b);
        function __() {
          this.constructor = d;
        }
        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
      };
    })();
    Object.defineProperty(exports2, "__esModule", { value: true });
    exports2.ConnectableObservable = void 0;
    var Observable_1 = require_Observable();
    var Subscription_1 = require_Subscription();
    var refCount_1 = require_refCount();
    var OperatorSubscriber_1 = require_OperatorSubscriber();
    var lift_1 = require_lift();
    var ConnectableObservable = (function(_super) {
      __extends(ConnectableObservable2, _super);
      function ConnectableObservable2(source, subjectFactory) {
        var _this = _super.call(this) || this;
        _this.source = source;
        _this.subjectFactory = subjectFactory;
        _this._subject = null;
        _this._refCount = 0;
        _this._connection = null;
        if (lift_1.hasLift(source)) {
          _this.lift = source.lift;
        }
        return _this;
      }
      ConnectableObservable2.prototype._subscribe = function(subscriber) {
        return this.getSubject().subscribe(subscriber);
      };
      ConnectableObservable2.prototype.getSubject = function() {
        var subject = this._subject;
        if (!subject || subject.isStopped) {
          this._subject = this.subjectFactory();
        }
        return this._subject;
      };
      ConnectableObservable2.prototype._teardown = function() {
        this._refCount = 0;
        var _connection = this._connection;
        this._subject = this._connection = null;
        _connection === null || _connection === void 0 ? void 0 : _connection.unsubscribe();
      };
      ConnectableObservable2.prototype.connect = function() {
        var _this = this;
        var connection = this._connection;
        if (!connection) {
          connection = this._connection = new Subscription_1.Subscription();
          var subject_1 = this.getSubject();
          connection.add(this.source.subscribe(OperatorSubscriber_1.createOperatorSubscriber(subject_1, void 0, function() {
            _this._teardown();
            subject_1.complete();
          }, function(err) {
            _this._teardown();
            subject_1.error(err);
          }, function() {
            return _this._teardown();
          })));
          if (connection.closed) {
            this._connection = null;
            connection = Subscription_1.Subscription.EMPTY;
          }
        }
        return connection;
      };
      ConnectableObservable2.prototype.refCount = function() {
        return refCount_1.refCount()(this);
      };
      return ConnectableObservable2;
    })(Observable_1.Observable);
    exports2.ConnectableObservable = ConnectableObservable;
  }
});

// node_modules/rxjs/dist/cjs/internal/scheduler/performanceTimestampProvider.js
var require_performanceTimestampProvider = __commonJS({
  "node_modules/rxjs/dist/cjs/internal/scheduler/performanceTimestampProvider.js"(exports2) {
    "use strict";
    Object.defineProperty(exports2, "__esModule", { value: true });
    exports2.performanceTimestampProvider = void 0;
    exports2.performanceTimestampProvider = {
      now: function() {
        return (exports2.performanceTimestampProvider.delegate || performance).now();
      },
      delegate: void 0
    };
  }
});

// node_modules/rxjs/dist/cjs/internal/scheduler/animationFrameProvider.js
var require_animationFrameProvider = __commonJS({
  "node_modules/rxjs/dist/cjs/internal/scheduler/animationFrameProvider.js"(exports2) {
    "use strict";
    var __read = exports2 && exports2.__read || function(o, n) {
      var m = typeof Symbol === "function" && o[Symbol.iterator];
      if (!m) return o;
      var i = m.call(o), r, ar = [], e;
      try {
        while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);
      } catch (error) {
        e = { error };
      } finally {
        try {
          if (r && !r.done && (m = i["return"])) m.call(i);
        } finally {
          if (e) throw e.error;
        }
      }
      return ar;
    };
    var __spreadArray = exports2 && exports2.__spreadArray || function(to, from) {
      for (var i = 0, il = from.length, j = to.length; i < il; i++, j++)
        to[j] = from[i];
      return to;
    };
    Object.defineProperty(exports2, "__esModule", { value: true });
    exports2.animationFrameProvider = void 0;
    var Subscription_1 = require_Subscription();
    exports2.animationFrameProvider = {
      schedule: function(callback) {
        var request = requestAnimationFrame;
        var cancel = cancelAnimationFrame;
        var delegate = exports2.animationFrameProvider.delegate;
        if (delegate) {
          request = delegate.requestAnimationFrame;
          cancel = delegate.cancelAnimationFrame;
        }
        var handle = request(function(timestamp) {
          cancel = void 0;
          callback(timestamp);
        });
        return new Subscription_1.Subscription(function() {
          return cancel === null || cancel === void 0 ? void 0 : cancel(handle);
        });
      },
      requestAnimationFrame: function() {
        var args = [];
        for (var _i = 0; _i < arguments.length; _i++) {
          args[_i] = arguments[_i];
        }
        var delegate = exports2.animationFrameProvider.delegate;
        return ((delegate === null || delegate === void 0 ? void 0 : delegate.requestAnimationFrame) || requestAnimationFrame).apply(void 0, __spreadArray([], __read(args)));
      },
      cancelAnimationFrame: function() {
        var args = [];
        for (var _i = 0; _i < arguments.length; _i++) {
          args[_i] = arguments[_i];
        }
        var delegate = exports2.animationFrameProvider.delegate;
        return ((delegate === null || delegate === void 0 ? void 0 : delegate.cancelAnimationFrame) || cancelAnimationFrame).apply(void 0, __spreadArray([], __read(args)));
      },
      delegate: void 0
    };
  }
});

// node_modules/rxjs/dist/cjs/internal/observable/dom/animationFrames.js
var require_animationFrames = __commonJS({
  "node_modules/rxjs/dist/cjs/internal/observable/dom/animationFrames.js"(exports2) {
    "use strict";
    Object.defineProperty(exports2, "__esModule", { value: true });
    exports2.animationFrames = void 0;
    var Observable_1 = require_Observable();
    var performanceTimestampProvider_1 = require_performanceTimestampProvider();
    var animationFrameProvider_1 = require_animationFrameProvider();
    function animationFrames(timestampProvider) {
      return timestampProvider ? animationFramesFactory(timestampProvider) : DEFAULT_ANIMATION_FRAMES;
    }
    exports2.animationFrames = animationFrames;
    function animationFramesFactory(timestampProvider) {
      return new Observable_1.Observable(function(subscriber) {
        var provider = timestampProvider || performanceTimestampProvider_1.performanceTimestampProvider;
        var start = provider.now();
        var id = 0;
        var run = function() {
          if (!subscriber.closed) {
            id = animationFrameProvider_1.animationFrameProvider.requestAnimationFrame(function(timestamp) {
              id = 0;
              var now = provider.now();
              subscriber.next({
                timestamp: timestampProvider ? now : timestamp,
                elapsed: now - start
              });
              run();
            });
          }
        };
        run();
        return function() {
          if (id) {
            animationFrameProvider_1.animationFrameProvider.cancelAnimationFrame(id);
          }
        };
      });
    }
    var DEFAULT_ANIMATION_FRAMES = animationFramesFactory();
  }
});

// node_modules/rxjs/dist/cjs/internal/util/ObjectUnsubscribedError.js
var require_ObjectUnsubscribedError = __commonJS({
  "node_modules/rxjs/dist/cjs/internal/util/ObjectUnsubscribedError.js"(exports2) {
    "use strict";
    Object.defineProperty(exports2, "__esModule", { value: true });
    exports2.ObjectUnsubscribedError = void 0;
    var createErrorClass_1 = require_createErrorClass();
    exports2.ObjectUnsubscribedError = createErrorClass_1.createErrorClass(function(_super) {
      return function ObjectUnsubscribedErrorImpl() {
        _super(this);
        this.name = "ObjectUnsubscribedError";
        this.message = "object unsubscribed";
      };
    });
  }
});

// node_modules/rxjs/dist/cjs/internal/Subject.js
var require_Subject = __commonJS({
  "node_modules/rxjs/dist/cjs/internal/Subject.js"(exports2) {
    "use strict";
    var __extends = exports2 && exports2.__extends || /* @__PURE__ */ (function() {
      var extendStatics = function(d, b) {
        extendStatics = Object.setPrototypeOf || { __proto__: [] } instanceof Array && function(d2, b2) {
          d2.__proto__ = b2;
        } || function(d2, b2) {
          for (var p in b2) if (Object.prototype.hasOwnProperty.call(b2, p)) d2[p] = b2[p];
        };
        return extendStatics(d, b);
      };
      return function(d, b) {
        if (typeof b !== "function" && b !== null)
          throw new TypeError("Class extends value " + String(b) + " is not a constructor or null");
        extendStatics(d, b);
        function __() {
          this.constructor = d;
        }
        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
      };
    })();
    var __values = exports2 && exports2.__values || function(o) {
      var s = typeof Symbol === "function" && Symbol.iterator, m = s && o[s], i = 0;
      if (m) return m.call(o);
      if (o && typeof o.length === "number") return {
        next: function() {
          if (o && i >= o.length) o = void 0;
          return { value: o && o[i++], done: !o };
        }
      };
      throw new TypeError(s ? "Object is not iterable." : "Symbol.iterator is not defined.");
    };
    Object.defineProperty(exports2, "__esModule", { value: true });
    exports2.AnonymousSubject = exports2.Subject = void 0;
    var Observable_1 = require_Observable();
    var Subscription_1 = require_Subscription();
    var ObjectUnsubscribedError_1 = require_ObjectUnsubscribedError();
    var arrRemove_1 = require_arrRemove();
    var errorContext_1 = require_errorContext();
    var Subject = (function(_super) {
      __extends(Subject2, _super);
      function Subject2() {
        var _this = _super.call(this) || this;
        _this.closed = false;
        _this.currentObservers = null;
        _this.observers = [];
        _this.isStopped = false;
        _this.hasError = false;
        _this.thrownError = null;
        return _this;
      }
      Subject2.prototype.lift = function(operator) {
        var subject = new AnonymousSubject(this, this);
        subject.operator = operator;
        return subject;
      };
      Subject2.prototype._throwIfClosed = function() {
        if (this.closed) {
          throw new ObjectUnsubscribedError_1.ObjectUnsubscribedError();
        }
      };
      Subject2.prototype.next = function(value) {
        var _this = this;
        errorContext_1.errorContext(function() {
          var e_1, _a2;
          _this._throwIfClosed();
          if (!_this.isStopped) {
            if (!_this.currentObservers) {
              _this.currentObservers = Array.from(_this.observers);
            }
            try {
              for (var _b = __values(_this.currentObservers), _c = _b.next(); !_c.done; _c = _b.next()) {
                var observer = _c.value;
                observer.next(value);
              }
            } catch (e_1_1) {
              e_1 = { error: e_1_1 };
            } finally {
              try {
                if (_c && !_c.done && (_a2 = _b.return)) _a2.call(_b);
              } finally {
                if (e_1) throw e_1.error;
              }
            }
          }
        });
      };
      Subject2.prototype.error = function(err) {
        var _this = this;
        errorContext_1.errorContext(function() {
          _this._throwIfClosed();
          if (!_this.isStopped) {
            _this.hasError = _this.isStopped = true;
            _this.thrownError = err;
            var observers = _this.observers;
            while (observers.length) {
              observers.shift().error(err);
            }
          }
        });
      };
      Subject2.prototype.complete = function() {
        var _this = this;
        errorContext_1.errorContext(function() {
          _this._throwIfClosed();
          if (!_this.isStopped) {
            _this.isStopped = true;
            var observers = _this.observers;
            while (observers.length) {
              observers.shift().complete();
            }
          }
        });
      };
      Subject2.prototype.unsubscribe = function() {
        this.isStopped = this.closed = true;
        this.observers = this.currentObservers = null;
      };
      Object.defineProperty(Subject2.prototype, "observed", {
        get: function() {
          var _a2;
          return ((_a2 = this.observers) === null || _a2 === void 0 ? void 0 : _a2.length) > 0;
        },
        enumerable: false,
        configurable: true
      });
      Subject2.prototype._trySubscribe = function(subscriber) {
        this._throwIfClosed();
        return _super.prototype._trySubscribe.call(this, subscriber);
      };
      Subject2.prototype._subscribe = function(subscriber) {
        this._throwIfClosed();
        this._checkFinalizedStatuses(subscriber);
        return this._innerSubscribe(subscriber);
      };
      Subject2.prototype._innerSubscribe = function(subscriber) {
        var _this = this;
        var _a2 = this, hasError = _a2.hasError, isStopped = _a2.isStopped, observers = _a2.observers;
        if (hasError || isStopped) {
          return Subscription_1.EMPTY_SUBSCRIPTION;
        }
        this.currentObservers = null;
        observers.push(subscriber);
        return new Subscription_1.Subscription(function() {
          _this.currentObservers = null;
          arrRemove_1.arrRemove(observers, subscriber);
        });
      };
      Subject2.prototype._checkFinalizedStatuses = function(subscriber) {
        var _a2 = this, hasError = _a2.hasError, thrownError = _a2.thrownError, isStopped = _a2.isStopped;
        if (hasError) {
          subscriber.error(thrownError);
        } else if (isStopped) {
          subscriber.complete();
        }
      };
      Subject2.prototype.asObservable = function() {
        var observable = new Observable_1.Observable();
        observable.source = this;
        return observable;
      };
      Subject2.create = function(destination, source) {
        return new AnonymousSubject(destination, source);
      };
      return Subject2;
    })(Observable_1.Observable);
    exports2.Subject = Subject;
    var AnonymousSubject = (function(_super) {
      __extends(AnonymousSubject2, _super);
      function AnonymousSubject2(destination, source) {
        var _this = _super.call(this) || this;
        _this.destination = destination;
        _this.source = source;
        return _this;
      }
      AnonymousSubject2.prototype.next = function(value) {
        var _a2, _b;
        (_b = (_a2 = this.destination) === null || _a2 === void 0 ? void 0 : _a2.next) === null || _b === void 0 ? void 0 : _b.call(_a2, value);
      };
      AnonymousSubject2.prototype.error = function(err) {
        var _a2, _b;
        (_b = (_a2 = this.destination) === null || _a2 === void 0 ? void 0 : _a2.error) === null || _b === void 0 ? void 0 : _b.call(_a2, err);
      };
      AnonymousSubject2.prototype.complete = function() {
        var _a2, _b;
        (_b = (_a2 = this.destination) === null || _a2 === void 0 ? void 0 : _a2.complete) === null || _b === void 0 ? void 0 : _b.call(_a2);
      };
      AnonymousSubject2.prototype._subscribe = function(subscriber) {
        var _a2, _b;
        return (_b = (_a2 = this.source) === null || _a2 === void 0 ? void 0 : _a2.subscribe(subscriber)) !== null && _b !== void 0 ? _b : Subscription_1.EMPTY_SUBSCRIPTION;
      };
      return AnonymousSubject2;
    })(Subject);
    exports2.AnonymousSubject = AnonymousSubject;
  }
});

// node_modules/rxjs/dist/cjs/internal/BehaviorSubject.js
var require_BehaviorSubject = __commonJS({
  "node_modules/rxjs/dist/cjs/internal/BehaviorSubject.js"(exports2) {
    "use strict";
    var __extends = exports2 && exports2.__extends || /* @__PURE__ */ (function() {
      var extendStatics = function(d, b) {
        extendStatics = Object.setPrototypeOf || { __proto__: [] } instanceof Array && function(d2, b2) {
          d2.__proto__ = b2;
        } || function(d2, b2) {
          for (var p in b2) if (Object.prototype.hasOwnProperty.call(b2, p)) d2[p] = b2[p];
        };
        return extendStatics(d, b);
      };
      return function(d, b) {
        if (typeof b !== "function" && b !== null)
          throw new TypeError("Class extends value " + String(b) + " is not a constructor or null");
        extendStatics(d, b);
        function __() {
          this.constructor = d;
        }
        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
      };
    })();
    Object.defineProperty(exports2, "__esModule", { value: true });
    exports2.BehaviorSubject = void 0;
    var Subject_1 = require_Subject();
    var BehaviorSubject = (function(_super) {
      __extends(BehaviorSubject2, _super);
      function BehaviorSubject2(_value) {
        var _this = _super.call(this) || this;
        _this._value = _value;
        return _this;
      }
      Object.defineProperty(BehaviorSubject2.prototype, "value", {
        get: function() {
          return this.getValue();
        },
        enumerable: false,
        configurable: true
      });
      BehaviorSubject2.prototype._subscribe = function(subscriber) {
        var subscription = _super.prototype._subscribe.call(this, subscriber);
        !subscription.closed && subscriber.next(this._value);
        return subscription;
      };
      BehaviorSubject2.prototype.getValue = function() {
        var _a2 = this, hasError = _a2.hasError, thrownError = _a2.thrownError, _value = _a2._value;
        if (hasError) {
          throw thrownError;
        }
        this._throwIfClosed();
        return _value;
      };
      BehaviorSubject2.prototype.next = function(value) {
        _super.prototype.next.call(this, this._value = value);
      };
      return BehaviorSubject2;
    })(Subject_1.Subject);
    exports2.BehaviorSubject = BehaviorSubject;
  }
});

// node_modules/rxjs/dist/cjs/internal/scheduler/dateTimestampProvider.js
var require_dateTimestampProvider = __commonJS({
  "node_modules/rxjs/dist/cjs/internal/scheduler/dateTimestampProvider.js"(exports2) {
    "use strict";
    Object.defineProperty(exports2, "__esModule", { value: true });
    exports2.dateTimestampProvider = void 0;
    exports2.dateTimestampProvider = {
      now: function() {
        return (exports2.dateTimestampProvider.delegate || Date).now();
      },
      delegate: void 0
    };
  }
});

// node_modules/rxjs/dist/cjs/internal/ReplaySubject.js
var require_ReplaySubject = __commonJS({
  "node_modules/rxjs/dist/cjs/internal/ReplaySubject.js"(exports2) {
    "use strict";
    var __extends = exports2 && exports2.__extends || /* @__PURE__ */ (function() {
      var extendStatics = function(d, b) {
        extendStatics = Object.setPrototypeOf || { __proto__: [] } instanceof Array && function(d2, b2) {
          d2.__proto__ = b2;
        } || function(d2, b2) {
          for (var p in b2) if (Object.prototype.hasOwnProperty.call(b2, p)) d2[p] = b2[p];
        };
        return extendStatics(d, b);
      };
      return function(d, b) {
        if (typeof b !== "function" && b !== null)
          throw new TypeError("Class extends value " + String(b) + " is not a constructor or null");
        extendStatics(d, b);
        function __() {
          this.constructor = d;
        }
        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
      };
    })();
    Object.defineProperty(exports2, "__esModule", { value: true });
    exports2.ReplaySubject = void 0;
    var Subject_1 = require_Subject();
    var dateTimestampProvider_1 = require_dateTimestampProvider();
    var ReplaySubject = (function(_super) {
      __extends(ReplaySubject2, _super);
      function ReplaySubject2(_bufferSize, _windowTime, _timestampProvider) {
        if (_bufferSize === void 0) {
          _bufferSize = Infinity;
        }
        if (_windowTime === void 0) {
          _windowTime = Infinity;
        }
        if (_timestampProvider === void 0) {
          _timestampProvider = dateTimestampProvider_1.dateTimestampProvider;
        }
        var _this = _super.call(this) || this;
        _this._bufferSize = _bufferSize;
        _this._windowTime = _windowTime;
        _this._timestampProvider = _timestampProvider;
        _this._buffer = [];
        _this._infiniteTimeWindow = true;
        _this._infiniteTimeWindow = _windowTime === Infinity;
        _this._bufferSize = Math.max(1, _bufferSize);
        _this._windowTime = Math.max(1, _windowTime);
        return _this;
      }
      ReplaySubject2.prototype.next = function(value) {
        var _a2 = this, isStopped = _a2.isStopped, _buffer = _a2._buffer, _infiniteTimeWindow = _a2._infiniteTimeWindow, _timestampProvider = _a2._timestampProvider, _windowTime = _a2._windowTime;
        if (!isStopped) {
          _buffer.push(value);
          !_infiniteTimeWindow && _buffer.push(_timestampProvider.now() + _windowTime);
        }
        this._trimBuffer();
        _super.prototype.next.call(this, value);
      };
      ReplaySubject2.prototype._subscribe = function(subscriber) {
        this._throwIfClosed();
        this._trimBuffer();
        var subscription = this._innerSubscribe(subscriber);
        var _a2 = this, _infiniteTimeWindow = _a2._infiniteTimeWindow, _buffer = _a2._buffer;
        var copy = _buffer.slice();
        for (var i = 0; i < copy.length && !subscriber.closed; i += _infiniteTimeWindow ? 1 : 2) {
          subscriber.next(copy[i]);
        }
        this._checkFinalizedStatuses(subscriber);
        return subscription;
      };
      ReplaySubject2.prototype._trimBuffer = function() {
        var _a2 = this, _bufferSize = _a2._bufferSize, _timestampProvider = _a2._timestampProvider, _buffer = _a2._buffer, _infiniteTimeWindow = _a2._infiniteTimeWindow;
        var adjustedBufferSize = (_infiniteTimeWindow ? 1 : 2) * _bufferSize;
        _bufferSize < Infinity && adjustedBufferSize < _buffer.length && _buffer.splice(0, _buffer.length - adjustedBufferSize);
        if (!_infiniteTimeWindow) {
          var now = _timestampProvider.now();
          var last = 0;
          for (var i = 1; i < _buffer.length && _buffer[i] <= now; i += 2) {
            last = i;
          }
          last && _buffer.splice(0, last + 1);
        }
      };
      return ReplaySubject2;
    })(Subject_1.Subject);
    exports2.ReplaySubject = ReplaySubject;
  }
});

// node_modules/rxjs/dist/cjs/internal/AsyncSubject.js
var require_AsyncSubject = __commonJS({
  "node_modules/rxjs/dist/cjs/internal/AsyncSubject.js"(exports2) {
    "use strict";
    var __extends = exports2 && exports2.__extends || /* @__PURE__ */ (function() {
      var extendStatics = function(d, b) {
        extendStatics = Object.setPrototypeOf || { __proto__: [] } instanceof Array && function(d2, b2) {
          d2.__proto__ = b2;
        } || function(d2, b2) {
          for (var p in b2) if (Object.prototype.hasOwnProperty.call(b2, p)) d2[p] = b2[p];
        };
        return extendStatics(d, b);
      };
      return function(d, b) {
        if (typeof b !== "function" && b !== null)
          throw new TypeError("Class extends value " + String(b) + " is not a constructor or null");
        extendStatics(d, b);
        function __() {
          this.constructor = d;
        }
        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
      };
    })();
    Object.defineProperty(exports2, "__esModule", { value: true });
    exports2.AsyncSubject = void 0;
    var Subject_1 = require_Subject();
    var AsyncSubject = (function(_super) {
      __extends(AsyncSubject2, _super);
      function AsyncSubject2() {
        var _this = _super !== null && _super.apply(this, arguments) || this;
        _this._value = null;
        _this._hasValue = false;
        _this._isComplete = false;
        return _this;
      }
      AsyncSubject2.prototype._checkFinalizedStatuses = function(subscriber) {
        var _a2 = this, hasError = _a2.hasError, _hasValue = _a2._hasValue, _value = _a2._value, thrownError = _a2.thrownError, isStopped = _a2.isStopped, _isComplete = _a2._isComplete;
        if (hasError) {
          subscriber.error(thrownError);
        } else if (isStopped || _isComplete) {
          _hasValue && subscriber.next(_value);
          subscriber.complete();
        }
      };
      AsyncSubject2.prototype.next = function(value) {
        if (!this.isStopped) {
          this._value = value;
          this._hasValue = true;
        }
      };
      AsyncSubject2.prototype.complete = function() {
        var _a2 = this, _hasValue = _a2._hasValue, _value = _a2._value, _isComplete = _a2._isComplete;
        if (!_isComplete) {
          this._isComplete = true;
          _hasValue && _super.prototype.next.call(this, _value);
          _super.prototype.complete.call(this);
        }
      };
      return AsyncSubject2;
    })(Subject_1.Subject);
    exports2.AsyncSubject = AsyncSubject;
  }
});

// node_modules/rxjs/dist/cjs/internal/scheduler/Action.js
var require_Action = __commonJS({
  "node_modules/rxjs/dist/cjs/internal/scheduler/Action.js"(exports2) {
    "use strict";
    var __extends = exports2 && exports2.__extends || /* @__PURE__ */ (function() {
      var extendStatics = function(d, b) {
        extendStatics = Object.setPrototypeOf || { __proto__: [] } instanceof Array && function(d2, b2) {
          d2.__proto__ = b2;
        } || function(d2, b2) {
          for (var p in b2) if (Object.prototype.hasOwnProperty.call(b2, p)) d2[p] = b2[p];
        };
        return extendStatics(d, b);
      };
      return function(d, b) {
        if (typeof b !== "function" && b !== null)
          throw new TypeError("Class extends value " + String(b) + " is not a constructor or null");
        extendStatics(d, b);
        function __() {
          this.constructor = d;
        }
        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
      };
    })();
    Object.defineProperty(exports2, "__esModule", { value: true });
    exports2.Action = void 0;
    var Subscription_1 = require_Subscription();
    var Action = (function(_super) {
      __extends(Action2, _super);
      function Action2(scheduler, work) {
        return _super.call(this) || this;
      }
      Action2.prototype.schedule = function(state, delay) {
        if (delay === void 0) {
          delay = 0;
        }
        return this;
      };
      return Action2;
    })(Subscription_1.Subscription);
    exports2.Action = Action;
  }
});

// node_modules/rxjs/dist/cjs/internal/scheduler/intervalProvider.js
var require_intervalProvider = __commonJS({
  "node_modules/rxjs/dist/cjs/internal/scheduler/intervalProvider.js"(exports2) {
    "use strict";
    var __read = exports2 && exports2.__read || function(o, n) {
      var m = typeof Symbol === "function" && o[Symbol.iterator];
      if (!m) return o;
      var i = m.call(o), r, ar = [], e;
      try {
        while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);
      } catch (error) {
        e = { error };
      } finally {
        try {
          if (r && !r.done && (m = i["return"])) m.call(i);
        } finally {
          if (e) throw e.error;
        }
      }
      return ar;
    };
    var __spreadArray = exports2 && exports2.__spreadArray || function(to, from) {
      for (var i = 0, il = from.length, j = to.length; i < il; i++, j++)
        to[j] = from[i];
      return to;
    };
    Object.defineProperty(exports2, "__esModule", { value: true });
    exports2.intervalProvider = void 0;
    exports2.intervalProvider = {
      setInterval: function(handler, timeout2) {
        var args = [];
        for (var _i = 2; _i < arguments.length; _i++) {
          args[_i - 2] = arguments[_i];
        }
        var delegate = exports2.intervalProvider.delegate;
        if (delegate === null || delegate === void 0 ? void 0 : delegate.setInterval) {
          return delegate.setInterval.apply(delegate, __spreadArray([handler, timeout2], __read(args)));
        }
        return setInterval.apply(void 0, __spreadArray([handler, timeout2], __read(args)));
      },
      clearInterval: function(handle) {
        var delegate = exports2.intervalProvider.delegate;
        return ((delegate === null || delegate === void 0 ? void 0 : delegate.clearInterval) || clearInterval)(handle);
      },
      delegate: void 0
    };
  }
});

// node_modules/rxjs/dist/cjs/internal/scheduler/AsyncAction.js
var require_AsyncAction = __commonJS({
  "node_modules/rxjs/dist/cjs/internal/scheduler/AsyncAction.js"(exports2) {
    "use strict";
    var __extends = exports2 && exports2.__extends || /* @__PURE__ */ (function() {
      var extendStatics = function(d, b) {
        extendStatics = Object.setPrototypeOf || { __proto__: [] } instanceof Array && function(d2, b2) {
          d2.__proto__ = b2;
        } || function(d2, b2) {
          for (var p in b2) if (Object.prototype.hasOwnProperty.call(b2, p)) d2[p] = b2[p];
        };
        return extendStatics(d, b);
      };
      return function(d, b) {
        if (typeof b !== "function" && b !== null)
          throw new TypeError("Class extends value " + String(b) + " is not a constructor or null");
        extendStatics(d, b);
        function __() {
          this.constructor = d;
        }
        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
      };
    })();
    Object.defineProperty(exports2, "__esModule", { value: true });
    exports2.AsyncAction = void 0;
    var Action_1 = require_Action();
    var intervalProvider_1 = require_intervalProvider();
    var arrRemove_1 = require_arrRemove();
    var AsyncAction = (function(_super) {
      __extends(AsyncAction2, _super);
      function AsyncAction2(scheduler, work) {
        var _this = _super.call(this, scheduler, work) || this;
        _this.scheduler = scheduler;
        _this.work = work;
        _this.pending = false;
        return _this;
      }
      AsyncAction2.prototype.schedule = function(state, delay) {
        var _a2;
        if (delay === void 0) {
          delay = 0;
        }
        if (this.closed) {
          return this;
        }
        this.state = state;
        var id = this.id;
        var scheduler = this.scheduler;
        if (id != null) {
          this.id = this.recycleAsyncId(scheduler, id, delay);
        }
        this.pending = true;
        this.delay = delay;
        this.id = (_a2 = this.id) !== null && _a2 !== void 0 ? _a2 : this.requestAsyncId(scheduler, this.id, delay);
        return this;
      };
      AsyncAction2.prototype.requestAsyncId = function(scheduler, _id, delay) {
        if (delay === void 0) {
          delay = 0;
        }
        return intervalProvider_1.intervalProvider.setInterval(scheduler.flush.bind(scheduler, this), delay);
      };
      AsyncAction2.prototype.recycleAsyncId = function(_scheduler, id, delay) {
        if (delay === void 0) {
          delay = 0;
        }
        if (delay != null && this.delay === delay && this.pending === false) {
          return id;
        }
        if (id != null) {
          intervalProvider_1.intervalProvider.clearInterval(id);
        }
        return void 0;
      };
      AsyncAction2.prototype.execute = function(state, delay) {
        if (this.closed) {
          return new Error("executing a cancelled action");
        }
        this.pending = false;
        var error = this._execute(state, delay);
        if (error) {
          return error;
        } else if (this.pending === false && this.id != null) {
          this.id = this.recycleAsyncId(this.scheduler, this.id, null);
        }
      };
      AsyncAction2.prototype._execute = function(state, _delay) {
        var errored = false;
        var errorValue;
        try {
          this.work(state);
        } catch (e) {
          errored = true;
          errorValue = e ? e : new Error("Scheduled action threw falsy error");
        }
        if (errored) {
          this.unsubscribe();
          return errorValue;
        }
      };
      AsyncAction2.prototype.unsubscribe = function() {
        if (!this.closed) {
          var _a2 = this, id = _a2.id, scheduler = _a2.scheduler;
          var actions = scheduler.actions;
          this.work = this.state = this.scheduler = null;
          this.pending = false;
          arrRemove_1.arrRemove(actions, this);
          if (id != null) {
            this.id = this.recycleAsyncId(scheduler, id, null);
          }
          this.delay = null;
          _super.prototype.unsubscribe.call(this);
        }
      };
      return AsyncAction2;
    })(Action_1.Action);
    exports2.AsyncAction = AsyncAction;
  }
});

// node_modules/rxjs/dist/cjs/internal/util/Immediate.js
var require_Immediate = __commonJS({
  "node_modules/rxjs/dist/cjs/internal/util/Immediate.js"(exports2) {
    "use strict";
    Object.defineProperty(exports2, "__esModule", { value: true });
    exports2.TestTools = exports2.Immediate = void 0;
    var nextHandle = 1;
    var resolved;
    var activeHandles = {};
    function findAndClearHandle(handle) {
      if (handle in activeHandles) {
        delete activeHandles[handle];
        return true;
      }
      return false;
    }
    exports2.Immediate = {
      setImmediate: function(cb) {
        var handle = nextHandle++;
        activeHandles[handle] = true;
        if (!resolved) {
          resolved = Promise.resolve();
        }
        resolved.then(function() {
          return findAndClearHandle(handle) && cb();
        });
        return handle;
      },
      clearImmediate: function(handle) {
        findAndClearHandle(handle);
      }
    };
    exports2.TestTools = {
      pending: function() {
        return Object.keys(activeHandles).length;
      }
    };
  }
});

// node_modules/rxjs/dist/cjs/internal/scheduler/immediateProvider.js
var require_immediateProvider = __commonJS({
  "node_modules/rxjs/dist/cjs/internal/scheduler/immediateProvider.js"(exports2) {
    "use strict";
    var __read = exports2 && exports2.__read || function(o, n) {
      var m = typeof Symbol === "function" && o[Symbol.iterator];
      if (!m) return o;
      var i = m.call(o), r, ar = [], e;
      try {
        while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);
      } catch (error) {
        e = { error };
      } finally {
        try {
          if (r && !r.done && (m = i["return"])) m.call(i);
        } finally {
          if (e) throw e.error;
        }
      }
      return ar;
    };
    var __spreadArray = exports2 && exports2.__spreadArray || function(to, from) {
      for (var i = 0, il = from.length, j = to.length; i < il; i++, j++)
        to[j] = from[i];
      return to;
    };
    Object.defineProperty(exports2, "__esModule", { value: true });
    exports2.immediateProvider = void 0;
    var Immediate_1 = require_Immediate();
    var setImmediate = Immediate_1.Immediate.setImmediate;
    var clearImmediate = Immediate_1.Immediate.clearImmediate;
    exports2.immediateProvider = {
      setImmediate: function() {
        var args = [];
        for (var _i = 0; _i < arguments.length; _i++) {
          args[_i] = arguments[_i];
        }
        var delegate = exports2.immediateProvider.delegate;
        return ((delegate === null || delegate === void 0 ? void 0 : delegate.setImmediate) || setImmediate).apply(void 0, __spreadArray([], __read(args)));
      },
      clearImmediate: function(handle) {
        var delegate = exports2.immediateProvider.delegate;
        return ((delegate === null || delegate === void 0 ? void 0 : delegate.clearImmediate) || clearImmediate)(handle);
      },
      delegate: void 0
    };
  }
});

// node_modules/rxjs/dist/cjs/internal/scheduler/AsapAction.js
var require_AsapAction = __commonJS({
  "node_modules/rxjs/dist/cjs/internal/scheduler/AsapAction.js"(exports2) {
    "use strict";
    var __extends = exports2 && exports2.__extends || /* @__PURE__ */ (function() {
      var extendStatics = function(d, b) {
        extendStatics = Object.setPrototypeOf || { __proto__: [] } instanceof Array && function(d2, b2) {
          d2.__proto__ = b2;
        } || function(d2, b2) {
          for (var p in b2) if (Object.prototype.hasOwnProperty.call(b2, p)) d2[p] = b2[p];
        };
        return extendStatics(d, b);
      };
      return function(d, b) {
        if (typeof b !== "function" && b !== null)
          throw new TypeError("Class extends value " + String(b) + " is not a constructor or null");
        extendStatics(d, b);
        function __() {
          this.constructor = d;
        }
        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
      };
    })();
    Object.defineProperty(exports2, "__esModule", { value: true });
    exports2.AsapAction = void 0;
    var AsyncAction_1 = require_AsyncAction();
    var immediateProvider_1 = require_immediateProvider();
    var AsapAction = (function(_super) {
      __extends(AsapAction2, _super);
      function AsapAction2(scheduler, work) {
        var _this = _super.call(this, scheduler, work) || this;
        _this.scheduler = scheduler;
        _this.work = work;
        return _this;
      }
      AsapAction2.prototype.requestAsyncId = function(scheduler, id, delay) {
        if (delay === void 0) {
          delay = 0;
        }
        if (delay !== null && delay > 0) {
          return _super.prototype.requestAsyncId.call(this, scheduler, id, delay);
        }
        scheduler.actions.push(this);
        return scheduler._scheduled || (scheduler._scheduled = immediateProvider_1.immediateProvider.setImmediate(scheduler.flush.bind(scheduler, void 0)));
      };
      AsapAction2.prototype.recycleAsyncId = function(scheduler, id, delay) {
        var _a2;
        if (delay === void 0) {
          delay = 0;
        }
        if (delay != null ? delay > 0 : this.delay > 0) {
          return _super.prototype.recycleAsyncId.call(this, scheduler, id, delay);
        }
        var actions = scheduler.actions;
        if (id != null && ((_a2 = actions[actions.length - 1]) === null || _a2 === void 0 ? void 0 : _a2.id) !== id) {
          immediateProvider_1.immediateProvider.clearImmediate(id);
          if (scheduler._scheduled === id) {
            scheduler._scheduled = void 0;
          }
        }
        return void 0;
      };
      return AsapAction2;
    })(AsyncAction_1.AsyncAction);
    exports2.AsapAction = AsapAction;
  }
});

// node_modules/rxjs/dist/cjs/internal/Scheduler.js
var require_Scheduler = __commonJS({
  "node_modules/rxjs/dist/cjs/internal/Scheduler.js"(exports2) {
    "use strict";
    Object.defineProperty(exports2, "__esModule", { value: true });
    exports2.Scheduler = void 0;
    var dateTimestampProvider_1 = require_dateTimestampProvider();
    var Scheduler = (function() {
      function Scheduler2(schedulerActionCtor, now) {
        if (now === void 0) {
          now = Scheduler2.now;
        }
        this.schedulerActionCtor = schedulerActionCtor;
        this.now = now;
      }
      Scheduler2.prototype.schedule = function(work, delay, state) {
        if (delay === void 0) {
          delay = 0;
        }
        return new this.schedulerActionCtor(this, work).schedule(state, delay);
      };
      Scheduler2.now = dateTimestampProvider_1.dateTimestampProvider.now;
      return Scheduler2;
    })();
    exports2.Scheduler = Scheduler;
  }
});

// node_modules/rxjs/dist/cjs/internal/scheduler/AsyncScheduler.js
var require_AsyncScheduler = __commonJS({
  "node_modules/rxjs/dist/cjs/internal/scheduler/AsyncScheduler.js"(exports2) {
    "use strict";
    var __extends = exports2 && exports2.__extends || /* @__PURE__ */ (function() {
      var extendStatics = function(d, b) {
        extendStatics = Object.setPrototypeOf || { __proto__: [] } instanceof Array && function(d2, b2) {
          d2.__proto__ = b2;
        } || function(d2, b2) {
          for (var p in b2) if (Object.prototype.hasOwnProperty.call(b2, p)) d2[p] = b2[p];
        };
        return extendStatics(d, b);
      };
      return function(d, b) {
        if (typeof b !== "function" && b !== null)
          throw new TypeError("Class extends value " + String(b) + " is not a constructor or null");
        extendStatics(d, b);
        function __() {
          this.constructor = d;
        }
        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
      };
    })();
    Object.defineProperty(exports2, "__esModule", { value: true });
    exports2.AsyncScheduler = void 0;
    var Scheduler_1 = require_Scheduler();
    var AsyncScheduler = (function(_super) {
      __extends(AsyncScheduler2, _super);
      function AsyncScheduler2(SchedulerAction, now) {
        if (now === void 0) {
          now = Scheduler_1.Scheduler.now;
        }
        var _this = _super.call(this, SchedulerAction, now) || this;
        _this.actions = [];
        _this._active = false;
        return _this;
      }
      AsyncScheduler2.prototype.flush = function(action) {
        var actions = this.actions;
        if (this._active) {
          actions.push(action);
          return;
        }
        var error;
        this._active = true;
        do {
          if (error = action.execute(action.state, action.delay)) {
            break;
          }
        } while (action = actions.shift());
        this._active = false;
        if (error) {
          while (action = actions.shift()) {
            action.unsubscribe();
          }
          throw error;
        }
      };
      return AsyncScheduler2;
    })(Scheduler_1.Scheduler);
    exports2.AsyncScheduler = AsyncScheduler;
  }
});

// node_modules/rxjs/dist/cjs/internal/scheduler/AsapScheduler.js
var require_AsapScheduler = __commonJS({
  "node_modules/rxjs/dist/cjs/internal/scheduler/AsapScheduler.js"(exports2) {
    "use strict";
    var __extends = exports2 && exports2.__extends || /* @__PURE__ */ (function() {
      var extendStatics = function(d, b) {
        extendStatics = Object.setPrototypeOf || { __proto__: [] } instanceof Array && function(d2, b2) {
          d2.__proto__ = b2;
        } || function(d2, b2) {
          for (var p in b2) if (Object.prototype.hasOwnProperty.call(b2, p)) d2[p] = b2[p];
        };
        return extendStatics(d, b);
      };
      return function(d, b) {
        if (typeof b !== "function" && b !== null)
          throw new TypeError("Class extends value " + String(b) + " is not a constructor or null");
        extendStatics(d, b);
        function __() {
          this.constructor = d;
        }
        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
      };
    })();
    Object.defineProperty(exports2, "__esModule", { value: true });
    exports2.AsapScheduler = void 0;
    var AsyncScheduler_1 = require_AsyncScheduler();
    var AsapScheduler = (function(_super) {
      __extends(AsapScheduler2, _super);
      function AsapScheduler2() {
        return _super !== null && _super.apply(this, arguments) || this;
      }
      AsapScheduler2.prototype.flush = function(action) {
        this._active = true;
        var flushId = this._scheduled;
        this._scheduled = void 0;
        var actions = this.actions;
        var error;
        action = action || actions.shift();
        do {
          if (error = action.execute(action.state, action.delay)) {
            break;
          }
        } while ((action = actions[0]) && action.id === flushId && actions.shift());
        this._active = false;
        if (error) {
          while ((action = actions[0]) && action.id === flushId && actions.shift()) {
            action.unsubscribe();
          }
          throw error;
        }
      };
      return AsapScheduler2;
    })(AsyncScheduler_1.AsyncScheduler);
    exports2.AsapScheduler = AsapScheduler;
  }
});

// node_modules/rxjs/dist/cjs/internal/scheduler/asap.js
var require_asap = __commonJS({
  "node_modules/rxjs/dist/cjs/internal/scheduler/asap.js"(exports2) {
    "use strict";
    Object.defineProperty(exports2, "__esModule", { value: true });
    exports2.asap = exports2.asapScheduler = void 0;
    var AsapAction_1 = require_AsapAction();
    var AsapScheduler_1 = require_AsapScheduler();
    exports2.asapScheduler = new AsapScheduler_1.AsapScheduler(AsapAction_1.AsapAction);
    exports2.asap = exports2.asapScheduler;
  }
});

// node_modules/rxjs/dist/cjs/internal/scheduler/async.js
var require_async = __commonJS({
  "node_modules/rxjs/dist/cjs/internal/scheduler/async.js"(exports2) {
    "use strict";
    Object.defineProperty(exports2, "__esModule", { value: true });
    exports2.async = exports2.asyncScheduler = void 0;
    var AsyncAction_1 = require_AsyncAction();
    var AsyncScheduler_1 = require_AsyncScheduler();
    exports2.asyncScheduler = new AsyncScheduler_1.AsyncScheduler(AsyncAction_1.AsyncAction);
    exports2.async = exports2.asyncScheduler;
  }
});

// node_modules/rxjs/dist/cjs/internal/scheduler/QueueAction.js
var require_QueueAction = __commonJS({
  "node_modules/rxjs/dist/cjs/internal/scheduler/QueueAction.js"(exports2) {
    "use strict";
    var __extends = exports2 && exports2.__extends || /* @__PURE__ */ (function() {
      var extendStatics = function(d, b) {
        extendStatics = Object.setPrototypeOf || { __proto__: [] } instanceof Array && function(d2, b2) {
          d2.__proto__ = b2;
        } || function(d2, b2) {
          for (var p in b2) if (Object.prototype.hasOwnProperty.call(b2, p)) d2[p] = b2[p];
        };
        return extendStatics(d, b);
      };
      return function(d, b) {
        if (typeof b !== "function" && b !== null)
          throw new TypeError("Class extends value " + String(b) + " is not a constructor or null");
        extendStatics(d, b);
        function __() {
          this.constructor = d;
        }
        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
      };
    })();
    Object.defineProperty(exports2, "__esModule", { value: true });
    exports2.QueueAction = void 0;
    var AsyncAction_1 = require_AsyncAction();
    var QueueAction = (function(_super) {
      __extends(QueueAction2, _super);
      function QueueAction2(scheduler, work) {
        var _this = _super.call(this, scheduler, work) || this;
        _this.scheduler = scheduler;
        _this.work = work;
        return _this;
      }
      QueueAction2.prototype.schedule = function(state, delay) {
        if (delay === void 0) {
          delay = 0;
        }
        if (delay > 0) {
          return _super.prototype.schedule.call(this, state, delay);
        }
        this.delay = delay;
        this.state = state;
        this.scheduler.flush(this);
        return this;
      };
      QueueAction2.prototype.execute = function(state, delay) {
        return delay > 0 || this.closed ? _super.prototype.execute.call(this, state, delay) : this._execute(state, delay);
      };
      QueueAction2.prototype.requestAsyncId = function(scheduler, id, delay) {
        if (delay === void 0) {
          delay = 0;
        }
        if (delay != null && delay > 0 || delay == null && this.delay > 0) {
          return _super.prototype.requestAsyncId.call(this, scheduler, id, delay);
        }
        scheduler.flush(this);
        return 0;
      };
      return QueueAction2;
    })(AsyncAction_1.AsyncAction);
    exports2.QueueAction = QueueAction;
  }
});

// node_modules/rxjs/dist/cjs/internal/scheduler/QueueScheduler.js
var require_QueueScheduler = __commonJS({
  "node_modules/rxjs/dist/cjs/internal/scheduler/QueueScheduler.js"(exports2) {
    "use strict";
    var __extends = exports2 && exports2.__extends || /* @__PURE__ */ (function() {
      var extendStatics = function(d, b) {
        extendStatics = Object.setPrototypeOf || { __proto__: [] } instanceof Array && function(d2, b2) {
          d2.__proto__ = b2;
        } || function(d2, b2) {
          for (var p in b2) if (Object.prototype.hasOwnProperty.call(b2, p)) d2[p] = b2[p];
        };
        return extendStatics(d, b);
      };
      return function(d, b) {
        if (typeof b !== "function" && b !== null)
          throw new TypeError("Class extends value " + String(b) + " is not a constructor or null");
        extendStatics(d, b);
        function __() {
          this.constructor = d;
        }
        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
      };
    })();
    Object.defineProperty(exports2, "__esModule", { value: true });
    exports2.QueueScheduler = void 0;
    var AsyncScheduler_1 = require_AsyncScheduler();
    var QueueScheduler = (function(_super) {
      __extends(QueueScheduler2, _super);
      function QueueScheduler2() {
        return _super !== null && _super.apply(this, arguments) || this;
      }
      return QueueScheduler2;
    })(AsyncScheduler_1.AsyncScheduler);
    exports2.QueueScheduler = QueueScheduler;
  }
});

// node_modules/rxjs/dist/cjs/internal/scheduler/queue.js
var require_queue = __commonJS({
  "node_modules/rxjs/dist/cjs/internal/scheduler/queue.js"(exports2) {
    "use strict";
    Object.defineProperty(exports2, "__esModule", { value: true });
    exports2.queue = exports2.queueScheduler = void 0;
    var QueueAction_1 = require_QueueAction();
    var QueueScheduler_1 = require_QueueScheduler();
    exports2.queueScheduler = new QueueScheduler_1.QueueScheduler(QueueAction_1.QueueAction);
    exports2.queue = exports2.queueScheduler;
  }
});

// node_modules/rxjs/dist/cjs/internal/scheduler/AnimationFrameAction.js
var require_AnimationFrameAction = __commonJS({
  "node_modules/rxjs/dist/cjs/internal/scheduler/AnimationFrameAction.js"(exports2) {
    "use strict";
    var __extends = exports2 && exports2.__extends || /* @__PURE__ */ (function() {
      var extendStatics = function(d, b) {
        extendStatics = Object.setPrototypeOf || { __proto__: [] } instanceof Array && function(d2, b2) {
          d2.__proto__ = b2;
        } || function(d2, b2) {
          for (var p in b2) if (Object.prototype.hasOwnProperty.call(b2, p)) d2[p] = b2[p];
        };
        return extendStatics(d, b);
      };
      return function(d, b) {
        if (typeof b !== "function" && b !== null)
          throw new TypeError("Class extends value " + String(b) + " is not a constructor or null");
        extendStatics(d, b);
        function __() {
          this.constructor = d;
        }
        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
      };
    })();
    Object.defineProperty(exports2, "__esModule", { value: true });
    exports2.AnimationFrameAction = void 0;
    var AsyncAction_1 = require_AsyncAction();
    var animationFrameProvider_1 = require_animationFrameProvider();
    var AnimationFrameAction = (function(_super) {
      __extends(AnimationFrameAction2, _super);
      function AnimationFrameAction2(scheduler, work) {
        var _this = _super.call(this, scheduler, work) || this;
        _this.scheduler = scheduler;
        _this.work = work;
        return _this;
      }
      AnimationFrameAction2.prototype.requestAsyncId = function(scheduler, id, delay) {
        if (delay === void 0) {
          delay = 0;
        }
        if (delay !== null && delay > 0) {
          return _super.prototype.requestAsyncId.call(this, scheduler, id, delay);
        }
        scheduler.actions.push(this);
        return scheduler._scheduled || (scheduler._scheduled = animationFrameProvider_1.animationFrameProvider.requestAnimationFrame(function() {
          return scheduler.flush(void 0);
        }));
      };
      AnimationFrameAction2.prototype.recycleAsyncId = function(scheduler, id, delay) {
        var _a2;
        if (delay === void 0) {
          delay = 0;
        }
        if (delay != null ? delay > 0 : this.delay > 0) {
          return _super.prototype.recycleAsyncId.call(this, scheduler, id, delay);
        }
        var actions = scheduler.actions;
        if (id != null && id === scheduler._scheduled && ((_a2 = actions[actions.length - 1]) === null || _a2 === void 0 ? void 0 : _a2.id) !== id) {
          animationFrameProvider_1.animationFrameProvider.cancelAnimationFrame(id);
          scheduler._scheduled = void 0;
        }
        return void 0;
      };
      return AnimationFrameAction2;
    })(AsyncAction_1.AsyncAction);
    exports2.AnimationFrameAction = AnimationFrameAction;
  }
});

// node_modules/rxjs/dist/cjs/internal/scheduler/AnimationFrameScheduler.js
var require_AnimationFrameScheduler = __commonJS({
  "node_modules/rxjs/dist/cjs/internal/scheduler/AnimationFrameScheduler.js"(exports2) {
    "use strict";
    var __extends = exports2 && exports2.__extends || /* @__PURE__ */ (function() {
      var extendStatics = function(d, b) {
        extendStatics = Object.setPrototypeOf || { __proto__: [] } instanceof Array && function(d2, b2) {
          d2.__proto__ = b2;
        } || function(d2, b2) {
          for (var p in b2) if (Object.prototype.hasOwnProperty.call(b2, p)) d2[p] = b2[p];
        };
        return extendStatics(d, b);
      };
      return function(d, b) {
        if (typeof b !== "function" && b !== null)
          throw new TypeError("Class extends value " + String(b) + " is not a constructor or null");
        extendStatics(d, b);
        function __() {
          this.constructor = d;
        }
        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
      };
    })();
    Object.defineProperty(exports2, "__esModule", { value: true });
    exports2.AnimationFrameScheduler = void 0;
    var AsyncScheduler_1 = require_AsyncScheduler();
    var AnimationFrameScheduler = (function(_super) {
      __extends(AnimationFrameScheduler2, _super);
      function AnimationFrameScheduler2() {
        return _super !== null && _super.apply(this, arguments) || this;
      }
      AnimationFrameScheduler2.prototype.flush = function(action) {
        this._active = true;
        var flushId;
        if (action) {
          flushId = action.id;
        } else {
          flushId = this._scheduled;
          this._scheduled = void 0;
        }
        var actions = this.actions;
        var error;
        action = action || actions.shift();
        do {
          if (error = action.execute(action.state, action.delay)) {
            break;
          }
        } while ((action = actions[0]) && action.id === flushId && actions.shift());
        this._active = false;
        if (error) {
          while ((action = actions[0]) && action.id === flushId && actions.shift()) {
            action.unsubscribe();
          }
          throw error;
        }
      };
      return AnimationFrameScheduler2;
    })(AsyncScheduler_1.AsyncScheduler);
    exports2.AnimationFrameScheduler = AnimationFrameScheduler;
  }
});

// node_modules/rxjs/dist/cjs/internal/scheduler/animationFrame.js
var require_animationFrame = __commonJS({
  "node_modules/rxjs/dist/cjs/internal/scheduler/animationFrame.js"(exports2) {
    "use strict";
    Object.defineProperty(exports2, "__esModule", { value: true });
    exports2.animationFrame = exports2.animationFrameScheduler = void 0;
    var AnimationFrameAction_1 = require_AnimationFrameAction();
    var AnimationFrameScheduler_1 = require_AnimationFrameScheduler();
    exports2.animationFrameScheduler = new AnimationFrameScheduler_1.AnimationFrameScheduler(AnimationFrameAction_1.AnimationFrameAction);
    exports2.animationFrame = exports2.animationFrameScheduler;
  }
});

// node_modules/rxjs/dist/cjs/internal/scheduler/VirtualTimeScheduler.js
var require_VirtualTimeScheduler = __commonJS({
  "node_modules/rxjs/dist/cjs/internal/scheduler/VirtualTimeScheduler.js"(exports2) {
    "use strict";
    var __extends = exports2 && exports2.__extends || /* @__PURE__ */ (function() {
      var extendStatics = function(d, b) {
        extendStatics = Object.setPrototypeOf || { __proto__: [] } instanceof Array && function(d2, b2) {
          d2.__proto__ = b2;
        } || function(d2, b2) {
          for (var p in b2) if (Object.prototype.hasOwnProperty.call(b2, p)) d2[p] = b2[p];
        };
        return extendStatics(d, b);
      };
      return function(d, b) {
        if (typeof b !== "function" && b !== null)
          throw new TypeError("Class extends value " + String(b) + " is not a constructor or null");
        extendStatics(d, b);
        function __() {
          this.constructor = d;
        }
        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
      };
    })();
    Object.defineProperty(exports2, "__esModule", { value: true });
    exports2.VirtualAction = exports2.VirtualTimeScheduler = void 0;
    var AsyncAction_1 = require_AsyncAction();
    var Subscription_1 = require_Subscription();
    var AsyncScheduler_1 = require_AsyncScheduler();
    var VirtualTimeScheduler = (function(_super) {
      __extends(VirtualTimeScheduler2, _super);
      function VirtualTimeScheduler2(schedulerActionCtor, maxFrames) {
        if (schedulerActionCtor === void 0) {
          schedulerActionCtor = VirtualAction;
        }
        if (maxFrames === void 0) {
          maxFrames = Infinity;
        }
        var _this = _super.call(this, schedulerActionCtor, function() {
          return _this.frame;
        }) || this;
        _this.maxFrames = maxFrames;
        _this.frame = 0;
        _this.index = -1;
        return _this;
      }
      VirtualTimeScheduler2.prototype.flush = function() {
        var _a2 = this, actions = _a2.actions, maxFrames = _a2.maxFrames;
        var error;
        var action;
        while ((action = actions[0]) && action.delay <= maxFrames) {
          actions.shift();
          this.frame = action.delay;
          if (error = action.execute(action.state, action.delay)) {
            break;
          }
        }
        if (error) {
          while (action = actions.shift()) {
            action.unsubscribe();
          }
          throw error;
        }
      };
      VirtualTimeScheduler2.frameTimeFactor = 10;
      return VirtualTimeScheduler2;
    })(AsyncScheduler_1.AsyncScheduler);
    exports2.VirtualTimeScheduler = VirtualTimeScheduler;
    var VirtualAction = (function(_super) {
      __extends(VirtualAction2, _super);
      function VirtualAction2(scheduler, work, index) {
        if (index === void 0) {
          index = scheduler.index += 1;
        }
        var _this = _super.call(this, scheduler, work) || this;
        _this.scheduler = scheduler;
        _this.work = work;
        _this.index = index;
        _this.active = true;
        _this.index = scheduler.index = index;
        return _this;
      }
      VirtualAction2.prototype.schedule = function(state, delay) {
        if (delay === void 0) {
          delay = 0;
        }
        if (Number.isFinite(delay)) {
          if (!this.id) {
            return _super.prototype.schedule.call(this, state, delay);
          }
          this.active = false;
          var action = new VirtualAction2(this.scheduler, this.work);
          this.add(action);
          return action.schedule(state, delay);
        } else {
          return Subscription_1.Subscription.EMPTY;
        }
      };
      VirtualAction2.prototype.requestAsyncId = function(scheduler, id, delay) {
        if (delay === void 0) {
          delay = 0;
        }
        this.delay = scheduler.frame + delay;
        var actions = scheduler.actions;
        actions.push(this);
        actions.sort(VirtualAction2.sortActions);
        return 1;
      };
      VirtualAction2.prototype.recycleAsyncId = function(scheduler, id, delay) {
        if (delay === void 0) {
          delay = 0;
        }
        return void 0;
      };
      VirtualAction2.prototype._execute = function(state, delay) {
        if (this.active === true) {
          return _super.prototype._execute.call(this, state, delay);
        }
      };
      VirtualAction2.sortActions = function(a, b) {
        if (a.delay === b.delay) {
          if (a.index === b.index) {
            return 0;
          } else if (a.index > b.index) {
            return 1;
          } else {
            return -1;
          }
        } else if (a.delay > b.delay) {
          return 1;
        } else {
          return -1;
        }
      };
      return VirtualAction2;
    })(AsyncAction_1.AsyncAction);
    exports2.VirtualAction = VirtualAction;
  }
});

// node_modules/rxjs/dist/cjs/internal/observable/empty.js
var require_empty = __commonJS({
  "node_modules/rxjs/dist/cjs/internal/observable/empty.js"(exports2) {
    "use strict";
    Object.defineProperty(exports2, "__esModule", { value: true });
    exports2.empty = exports2.EMPTY = void 0;
    var Observable_1 = require_Observable();
    exports2.EMPTY = new Observable_1.Observable(function(subscriber) {
      return subscriber.complete();
    });
    function empty(scheduler) {
      return scheduler ? emptyScheduled(scheduler) : exports2.EMPTY;
    }
    exports2.empty = empty;
    function emptyScheduled(scheduler) {
      return new Observable_1.Observable(function(subscriber) {
        return scheduler.schedule(function() {
          return subscriber.complete();
        });
      });
    }
  }
});

// node_modules/rxjs/dist/cjs/internal/util/isScheduler.js
var require_isScheduler = __commonJS({
  "node_modules/rxjs/dist/cjs/internal/util/isScheduler.js"(exports2) {
    "use strict";
    Object.defineProperty(exports2, "__esModule", { value: true });
    exports2.isScheduler = void 0;
    var isFunction_1 = require_isFunction();
    function isScheduler(value) {
      return value && isFunction_1.isFunction(value.schedule);
    }
    exports2.isScheduler = isScheduler;
  }
});

// node_modules/rxjs/dist/cjs/internal/util/args.js
var require_args = __commonJS({
  "node_modules/rxjs/dist/cjs/internal/util/args.js"(exports2) {
    "use strict";
    Object.defineProperty(exports2, "__esModule", { value: true });
    exports2.popNumber = exports2.popScheduler = exports2.popResultSelector = void 0;
    var isFunction_1 = require_isFunction();
    var isScheduler_1 = require_isScheduler();
    function last(arr) {
      return arr[arr.length - 1];
    }
    function popResultSelector(args) {
      return isFunction_1.isFunction(last(args)) ? args.pop() : void 0;
    }
    exports2.popResultSelector = popResultSelector;
    function popScheduler(args) {
      return isScheduler_1.isScheduler(last(args)) ? args.pop() : void 0;
    }
    exports2.popScheduler = popScheduler;
    function popNumber(args, defaultValue) {
      return typeof last(args) === "number" ? args.pop() : defaultValue;
    }
    exports2.popNumber = popNumber;
  }
});

// node_modules/rxjs/dist/cjs/internal/util/isArrayLike.js
var require_isArrayLike = __commonJS({
  "node_modules/rxjs/dist/cjs/internal/util/isArrayLike.js"(exports2) {
    "use strict";
    Object.defineProperty(exports2, "__esModule", { value: true });
    exports2.isArrayLike = void 0;
    exports2.isArrayLike = (function(x) {
      return x && typeof x.length === "number" && typeof x !== "function";
    });
  }
});

// node_modules/rxjs/dist/cjs/internal/util/isPromise.js
var require_isPromise = __commonJS({
  "node_modules/rxjs/dist/cjs/internal/util/isPromise.js"(exports2) {
    "use strict";
    Object.defineProperty(exports2, "__esModule", { value: true });
    exports2.isPromise = void 0;
    var isFunction_1 = require_isFunction();
    function isPromise(value) {
      return isFunction_1.isFunction(value === null || value === void 0 ? void 0 : value.then);
    }
    exports2.isPromise = isPromise;
  }
});

// node_modules/rxjs/dist/cjs/internal/util/isInteropObservable.js
var require_isInteropObservable = __commonJS({
  "node_modules/rxjs/dist/cjs/internal/util/isInteropObservable.js"(exports2) {
    "use strict";
    Object.defineProperty(exports2, "__esModule", { value: true });
    exports2.isInteropObservable = void 0;
    var observable_1 = require_observable();
    var isFunction_1 = require_isFunction();
    function isInteropObservable(input) {
      return isFunction_1.isFunction(input[observable_1.observable]);
    }
    exports2.isInteropObservable = isInteropObservable;
  }
});

// node_modules/rxjs/dist/cjs/internal/util/isAsyncIterable.js
var require_isAsyncIterable = __commonJS({
  "node_modules/rxjs/dist/cjs/internal/util/isAsyncIterable.js"(exports2) {
    "use strict";
    Object.defineProperty(exports2, "__esModule", { value: true });
    exports2.isAsyncIterable = void 0;
    var isFunction_1 = require_isFunction();
    function isAsyncIterable(obj) {
      return Symbol.asyncIterator && isFunction_1.isFunction(obj === null || obj === void 0 ? void 0 : obj[Symbol.asyncIterator]);
    }
    exports2.isAsyncIterable = isAsyncIterable;
  }
});

// node_modules/rxjs/dist/cjs/internal/util/throwUnobservableError.js
var require_throwUnobservableError = __commonJS({
  "node_modules/rxjs/dist/cjs/internal/util/throwUnobservableError.js"(exports2) {
    "use strict";
    Object.defineProperty(exports2, "__esModule", { value: true });
    exports2.createInvalidObservableTypeError = void 0;
    function createInvalidObservableTypeError(input) {
      return new TypeError("You provided " + (input !== null && typeof input === "object" ? "an invalid object" : "'" + input + "'") + " where a stream was expected. You can provide an Observable, Promise, ReadableStream, Array, AsyncIterable, or Iterable.");
    }
    exports2.createInvalidObservableTypeError = createInvalidObservableTypeError;
  }
});

// node_modules/rxjs/dist/cjs/internal/symbol/iterator.js
var require_iterator = __commonJS({
  "node_modules/rxjs/dist/cjs/internal/symbol/iterator.js"(exports2) {
    "use strict";
    Object.defineProperty(exports2, "__esModule", { value: true });
    exports2.iterator = exports2.getSymbolIterator = void 0;
    function getSymbolIterator() {
      if (typeof Symbol !== "function" || !Symbol.iterator) {
        return "@@iterator";
      }
      return Symbol.iterator;
    }
    exports2.getSymbolIterator = getSymbolIterator;
    exports2.iterator = getSymbolIterator();
  }
});

// node_modules/rxjs/dist/cjs/internal/util/isIterable.js
var require_isIterable = __commonJS({
  "node_modules/rxjs/dist/cjs/internal/util/isIterable.js"(exports2) {
    "use strict";
    Object.defineProperty(exports2, "__esModule", { value: true });
    exports2.isIterable = void 0;
    var iterator_1 = require_iterator();
    var isFunction_1 = require_isFunction();
    function isIterable(input) {
      return isFunction_1.isFunction(input === null || input === void 0 ? void 0 : input[iterator_1.iterator]);
    }
    exports2.isIterable = isIterable;
  }
});

// node_modules/rxjs/dist/cjs/internal/util/isReadableStreamLike.js
var require_isReadableStreamLike = __commonJS({
  "node_modules/rxjs/dist/cjs/internal/util/isReadableStreamLike.js"(exports2) {
    "use strict";
    var __generator = exports2 && exports2.__generator || function(thisArg, body) {
      var _ = { label: 0, sent: function() {
        if (t[0] & 1) throw t[1];
        return t[1];
      }, trys: [], ops: [] }, f, y, t, g;
      return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() {
        return this;
      }), g;
      function verb(n) {
        return function(v) {
          return step([n, v]);
        };
      }
      function step(op) {
        if (f) throw new TypeError("Generator is already executing.");
        while (_) try {
          if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
          if (y = 0, t) op = [op[0] & 2, t.value];
          switch (op[0]) {
            case 0:
            case 1:
              t = op;
              break;
            case 4:
              _.label++;
              return { value: op[1], done: false };
            case 5:
              _.label++;
              y = op[1];
              op = [0];
              continue;
            case 7:
              op = _.ops.pop();
              _.trys.pop();
              continue;
            default:
              if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) {
                _ = 0;
                continue;
              }
              if (op[0] === 3 && (!t || op[1] > t[0] && op[1] < t[3])) {
                _.label = op[1];
                break;
              }
              if (op[0] === 6 && _.label < t[1]) {
                _.label = t[1];
                t = op;
                break;
              }
              if (t && _.label < t[2]) {
                _.label = t[2];
                _.ops.push(op);
                break;
              }
              if (t[2]) _.ops.pop();
              _.trys.pop();
              continue;
          }
          op = body.call(thisArg, _);
        } catch (e) {
          op = [6, e];
          y = 0;
        } finally {
          f = t = 0;
        }
        if (op[0] & 5) throw op[1];
        return { value: op[0] ? op[1] : void 0, done: true };
      }
    };
    var __await = exports2 && exports2.__await || function(v) {
      return this instanceof __await ? (this.v = v, this) : new __await(v);
    };
    var __asyncGenerator = exports2 && exports2.__asyncGenerator || function(thisArg, _arguments, generator) {
      if (!Symbol.asyncIterator) throw new TypeError("Symbol.asyncIterator is not defined.");
      var g = generator.apply(thisArg, _arguments || []), i, q = [];
      return i = {}, verb("next"), verb("throw"), verb("return"), i[Symbol.asyncIterator] = function() {
        return this;
      }, i;
      function verb(n) {
        if (g[n]) i[n] = function(v) {
          return new Promise(function(a, b) {
            q.push([n, v, a, b]) > 1 || resume(n, v);
          });
        };
      }
      function resume(n, v) {
        try {
          step(g[n](v));
        } catch (e) {
          settle(q[0][3], e);
        }
      }
      function step(r) {
        r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r);
      }
      function fulfill(value) {
        resume("next", value);
      }
      function reject(value) {
        resume("throw", value);
      }
      function settle(f, v) {
        if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]);
      }
    };
    Object.defineProperty(exports2, "__esModule", { value: true });
    exports2.isReadableStreamLike = exports2.readableStreamLikeToAsyncGenerator = void 0;
    var isFunction_1 = require_isFunction();
    function readableStreamLikeToAsyncGenerator(readableStream) {
      return __asyncGenerator(this, arguments, function readableStreamLikeToAsyncGenerator_1() {
        var reader, _a2, value, done;
        return __generator(this, function(_b) {
          switch (_b.label) {
            case 0:
              reader = readableStream.getReader();
              _b.label = 1;
            case 1:
              _b.trys.push([1, , 9, 10]);
              _b.label = 2;
            case 2:
              if (false) return [3, 8];
              return [4, __await(reader.read())];
            case 3:
              _a2 = _b.sent(), value = _a2.value, done = _a2.done;
              if (!done) return [3, 5];
              return [4, __await(void 0)];
            case 4:
              return [2, _b.sent()];
            case 5:
              return [4, __await(value)];
            case 6:
              return [4, _b.sent()];
            case 7:
              _b.sent();
              return [3, 2];
            case 8:
              return [3, 10];
            case 9:
              reader.releaseLock();
              return [7];
            case 10:
              return [2];
          }
        });
      });
    }
    exports2.readableStreamLikeToAsyncGenerator = readableStreamLikeToAsyncGenerator;
    function isReadableStreamLike(obj) {
      return isFunction_1.isFunction(obj === null || obj === void 0 ? void 0 : obj.getReader);
    }
    exports2.isReadableStreamLike = isReadableStreamLike;
  }
});

// node_modules/rxjs/dist/cjs/internal/observable/innerFrom.js
var require_innerFrom = __commonJS({
  "node_modules/rxjs/dist/cjs/internal/observable/innerFrom.js"(exports2) {
    "use strict";
    var __awaiter = exports2 && exports2.__awaiter || function(thisArg, _arguments, P, generator) {
      function adopt(value) {
        return value instanceof P ? value : new P(function(resolve) {
          resolve(value);
        });
      }
      return new (P || (P = Promise))(function(resolve, reject) {
        function fulfilled(value) {
          try {
            step(generator.next(value));
          } catch (e) {
            reject(e);
          }
        }
        function rejected(value) {
          try {
            step(generator["throw"](value));
          } catch (e) {
            reject(e);
          }
        }
        function step(result) {
          result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected);
        }
        step((generator = generator.apply(thisArg, _arguments || [])).next());
      });
    };
    var __generator = exports2 && exports2.__generator || function(thisArg, body) {
      var _ = { label: 0, sent: function() {
        if (t[0] & 1) throw t[1];
        return t[1];
      }, trys: [], ops: [] }, f, y, t, g;
      return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() {
        return this;
      }), g;
      function verb(n) {
        return function(v) {
          return step([n, v]);
        };
      }
      function step(op) {
        if (f) throw new TypeError("Generator is already executing.");
        while (_) try {
          if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
          if (y = 0, t) op = [op[0] & 2, t.value];
          switch (op[0]) {
            case 0:
            case 1:
              t = op;
              break;
            case 4:
              _.label++;
              return { value: op[1], done: false };
            case 5:
              _.label++;
              y = op[1];
              op = [0];
              continue;
            case 7:
              op = _.ops.pop();
              _.trys.pop();
              continue;
            default:
              if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) {
                _ = 0;
                continue;
              }
              if (op[0] === 3 && (!t || op[1] > t[0] && op[1] < t[3])) {
                _.label = op[1];
                break;
              }
              if (op[0] === 6 && _.label < t[1]) {
                _.label = t[1];
                t = op;
                break;
              }
              if (t && _.label < t[2]) {
                _.label = t[2];
                _.ops.push(op);
                break;
              }
              if (t[2]) _.ops.pop();
              _.trys.pop();
              continue;
          }
          op = body.call(thisArg, _);
        } catch (e) {
          op = [6, e];
          y = 0;
        } finally {
          f = t = 0;
        }
        if (op[0] & 5) throw op[1];
        return { value: op[0] ? op[1] : void 0, done: true };
      }
    };
    var __asyncValues = exports2 && exports2.__asyncValues || function(o) {
      if (!Symbol.asyncIterator) throw new TypeError("Symbol.asyncIterator is not defined.");
      var m = o[Symbol.asyncIterator], i;
      return m ? m.call(o) : (o = typeof __values === "function" ? __values(o) : o[Symbol.iterator](), i = {}, verb("next"), verb("throw"), verb("return"), i[Symbol.asyncIterator] = function() {
        return this;
      }, i);
      function verb(n) {
        i[n] = o[n] && function(v) {
          return new Promise(function(resolve, reject) {
            v = o[n](v), settle(resolve, reject, v.done, v.value);
          });
        };
      }
      function settle(resolve, reject, d, v) {
        Promise.resolve(v).then(function(v2) {
          resolve({ value: v2, done: d });
        }, reject);
      }
    };
    var __values = exports2 && exports2.__values || function(o) {
      var s = typeof Symbol === "function" && Symbol.iterator, m = s && o[s], i = 0;
      if (m) return m.call(o);
      if (o && typeof o.length === "number") return {
        next: function() {
          if (o && i >= o.length) o = void 0;
          return { value: o && o[i++], done: !o };
        }
      };
      throw new TypeError(s ? "Object is not iterable." : "Symbol.iterator is not defined.");
    };
    Object.defineProperty(exports2, "__esModule", { value: true });
    exports2.fromReadableStreamLike = exports2.fromAsyncIterable = exports2.fromIterable = exports2.fromPromise = exports2.fromArrayLike = exports2.fromInteropObservable = exports2.innerFrom = void 0;
    var isArrayLike_1 = require_isArrayLike();
    var isPromise_1 = require_isPromise();
    var Observable_1 = require_Observable();
    var isInteropObservable_1 = require_isInteropObservable();
    var isAsyncIterable_1 = require_isAsyncIterable();
    var throwUnobservableError_1 = require_throwUnobservableError();
    var isIterable_1 = require_isIterable();
    var isReadableStreamLike_1 = require_isReadableStreamLike();
    var isFunction_1 = require_isFunction();
    var reportUnhandledError_1 = require_reportUnhandledError();
    var observable_1 = require_observable();
    function innerFrom(input) {
      if (input instanceof Observable_1.Observable) {
        return input;
      }
      if (input != null) {
        if (isInteropObservable_1.isInteropObservable(input)) {
          return fromInteropObservable(input);
        }
        if (isArrayLike_1.isArrayLike(input)) {
          return fromArrayLike(input);
        }
        if (isPromise_1.isPromise(input)) {
          return fromPromise(input);
        }
        if (isAsyncIterable_1.isAsyncIterable(input)) {
          return fromAsyncIterable(input);
        }
        if (isIterable_1.isIterable(input)) {
          return fromIterable(input);
        }
        if (isReadableStreamLike_1.isReadableStreamLike(input)) {
          return fromReadableStreamLike(input);
        }
      }
      throw throwUnobservableError_1.createInvalidObservableTypeError(input);
    }
    exports2.innerFrom = innerFrom;
    function fromInteropObservable(obj) {
      return new Observable_1.Observable(function(subscriber) {
        var obs = obj[observable_1.observable]();
        if (isFunction_1.isFunction(obs.subscribe)) {
          return obs.subscribe(subscriber);
        }
        throw new TypeError("Provided object does not correctly implement Symbol.observable");
      });
    }
    exports2.fromInteropObservable = fromInteropObservable;
    function fromArrayLike(array) {
      return new Observable_1.Observable(function(subscriber) {
        for (var i = 0; i < array.length && !subscriber.closed; i++) {
          subscriber.next(array[i]);
        }
        subscriber.complete();
      });
    }
    exports2.fromArrayLike = fromArrayLike;
    function fromPromise(promise) {
      return new Observable_1.Observable(function(subscriber) {
        promise.then(function(value) {
          if (!subscriber.closed) {
            subscriber.next(value);
            subscriber.complete();
          }
        }, function(err) {
          return subscriber.error(err);
        }).then(null, reportUnhandledError_1.reportUnhandledError);
      });
    }
    exports2.fromPromise = fromPromise;
    function fromIterable(iterable) {
      return new Observable_1.Observable(function(subscriber) {
        var e_1, _a2;
        try {
          for (var iterable_1 = __values(iterable), iterable_1_1 = iterable_1.next(); !iterable_1_1.done; iterable_1_1 = iterable_1.next()) {
            var value = iterable_1_1.value;
            subscriber.next(value);
            if (subscriber.closed) {
              return;
            }
          }
        } catch (e_1_1) {
          e_1 = { error: e_1_1 };
        } finally {
          try {
            if (iterable_1_1 && !iterable_1_1.done && (_a2 = iterable_1.return)) _a2.call(iterable_1);
          } finally {
            if (e_1) throw e_1.error;
          }
        }
        subscriber.complete();
      });
    }
    exports2.fromIterable = fromIterable;
    function fromAsyncIterable(asyncIterable) {
      return new Observable_1.Observable(function(subscriber) {
        process2(asyncIterable, subscriber).catch(function(err) {
          return subscriber.error(err);
        });
      });
    }
    exports2.fromAsyncIterable = fromAsyncIterable;
    function fromReadableStreamLike(readableStream) {
      return fromAsyncIterable(isReadableStreamLike_1.readableStreamLikeToAsyncGenerator(readableStream));
    }
    exports2.fromReadableStreamLike = fromReadableStreamLike;
    function process2(asyncIterable, subscriber) {
      var asyncIterable_1, asyncIterable_1_1;
      var e_2, _a2;
      return __awaiter(this, void 0, void 0, function() {
        var value, e_2_1;
        return __generator(this, function(_b) {
          switch (_b.label) {
            case 0:
              _b.trys.push([0, 5, 6, 11]);
              asyncIterable_1 = __asyncValues(asyncIterable);
              _b.label = 1;
            case 1:
              return [4, asyncIterable_1.next()];
            case 2:
              if (!(asyncIterable_1_1 = _b.sent(), !asyncIterable_1_1.done)) return [3, 4];
              value = asyncIterable_1_1.value;
              subscriber.next(value);
              if (subscriber.closed) {
                return [2];
              }
              _b.label = 3;
            case 3:
              return [3, 1];
            case 4:
              return [3, 11];
            case 5:
              e_2_1 = _b.sent();
              e_2 = { error: e_2_1 };
              return [3, 11];
            case 6:
              _b.trys.push([6, , 9, 10]);
              if (!(asyncIterable_1_1 && !asyncIterable_1_1.done && (_a2 = asyncIterable_1.return))) return [3, 8];
              return [4, _a2.call(asyncIterable_1)];
            case 7:
              _b.sent();
              _b.label = 8;
            case 8:
              return [3, 10];
            case 9:
              if (e_2) throw e_2.error;
              return [7];
            case 10:
              return [7];
            case 11:
              subscriber.complete();
              return [2];
          }
        });
      });
    }
  }
});

// node_modules/rxjs/dist/cjs/internal/util/executeSchedule.js
var require_executeSchedule = __commonJS({
  "node_modules/rxjs/dist/cjs/internal/util/executeSchedule.js"(exports2) {
    "use strict";
    Object.defineProperty(exports2, "__esModule", { value: true });
    exports2.executeSchedule = void 0;
    function executeSchedule(parentSubscription, scheduler, work, delay, repeat) {
      if (delay === void 0) {
        delay = 0;
      }
      if (repeat === void 0) {
        repeat = false;
      }
      var scheduleSubscription = scheduler.schedule(function() {
        work();
        if (repeat) {
          parentSubscription.add(this.schedule(null, delay));
        } else {
          this.unsubscribe();
        }
      }, delay);
      parentSubscription.add(scheduleSubscription);
      if (!repeat) {
        return scheduleSubscription;
      }
    }
    exports2.executeSchedule = executeSchedule;
  }
});

// node_modules/rxjs/dist/cjs/internal/operators/observeOn.js
var require_observeOn = __commonJS({
  "node_modules/rxjs/dist/cjs/internal/operators/observeOn.js"(exports2) {
    "use strict";
    Object.defineProperty(exports2, "__esModule", { value: true });
    exports2.observeOn = void 0;
    var executeSchedule_1 = require_executeSchedule();
    var lift_1 = require_lift();
    var OperatorSubscriber_1 = require_OperatorSubscriber();
    function observeOn(scheduler, delay) {
      if (delay === void 0) {
        delay = 0;
      }
      return lift_1.operate(function(source, subscriber) {
        source.subscribe(OperatorSubscriber_1.createOperatorSubscriber(subscriber, function(value) {
          return executeSchedule_1.executeSchedule(subscriber, scheduler, function() {
            return subscriber.next(value);
          }, delay);
        }, function() {
          return executeSchedule_1.executeSchedule(subscriber, scheduler, function() {
            return subscriber.complete();
          }, delay);
        }, function(err) {
          return executeSchedule_1.executeSchedule(subscriber, scheduler, function() {
            return subscriber.error(err);
          }, delay);
        }));
      });
    }
    exports2.observeOn = observeOn;
  }
});

// node_modules/rxjs/dist/cjs/internal/operators/subscribeOn.js
var require_subscribeOn = __commonJS({
  "node_modules/rxjs/dist/cjs/internal/operators/subscribeOn.js"(exports2) {
    "use strict";
    Object.defineProperty(exports2, "__esModule", { value: true });
    exports2.subscribeOn = void 0;
    var lift_1 = require_lift();
    function subscribeOn(scheduler, delay) {
      if (delay === void 0) {
        delay = 0;
      }
      return lift_1.operate(function(source, subscriber) {
        subscriber.add(scheduler.schedule(function() {
          return source.subscribe(subscriber);
        }, delay));
      });
    }
    exports2.subscribeOn = subscribeOn;
  }
});

// node_modules/rxjs/dist/cjs/internal/scheduled/scheduleObservable.js
var require_scheduleObservable = __commonJS({
  "node_modules/rxjs/dist/cjs/internal/scheduled/scheduleObservable.js"(exports2) {
    "use strict";
    Object.defineProperty(exports2, "__esModule", { value: true });
    exports2.scheduleObservable = void 0;
    var innerFrom_1 = require_innerFrom();
    var observeOn_1 = require_observeOn();
    var subscribeOn_1 = require_subscribeOn();
    function scheduleObservable(input, scheduler) {
      return innerFrom_1.innerFrom(input).pipe(subscribeOn_1.subscribeOn(scheduler), observeOn_1.observeOn(scheduler));
    }
    exports2.scheduleObservable = scheduleObservable;
  }
});

// node_modules/rxjs/dist/cjs/internal/scheduled/schedulePromise.js
var require_schedulePromise = __commonJS({
  "node_modules/rxjs/dist/cjs/internal/scheduled/schedulePromise.js"(exports2) {
    "use strict";
    Object.defineProperty(exports2, "__esModule", { value: true });
    exports2.schedulePromise = void 0;
    var innerFrom_1 = require_innerFrom();
    var observeOn_1 = require_observeOn();
    var subscribeOn_1 = require_subscribeOn();
    function schedulePromise(input, scheduler) {
      return innerFrom_1.innerFrom(input).pipe(subscribeOn_1.subscribeOn(scheduler), observeOn_1.observeOn(scheduler));
    }
    exports2.schedulePromise = schedulePromise;
  }
});

// node_modules/rxjs/dist/cjs/internal/scheduled/scheduleArray.js
var require_scheduleArray = __commonJS({
  "node_modules/rxjs/dist/cjs/internal/scheduled/scheduleArray.js"(exports2) {
    "use strict";
    Object.defineProperty(exports2, "__esModule", { value: true });
    exports2.scheduleArray = void 0;
    var Observable_1 = require_Observable();
    function scheduleArray(input, scheduler) {
      return new Observable_1.Observable(function(subscriber) {
        var i = 0;
        return scheduler.schedule(function() {
          if (i === input.length) {
            subscriber.complete();
          } else {
            subscriber.next(input[i++]);
            if (!subscriber.closed) {
              this.schedule();
            }
          }
        });
      });
    }
    exports2.scheduleArray = scheduleArray;
  }
});

// node_modules/rxjs/dist/cjs/internal/scheduled/scheduleIterable.js
var require_scheduleIterable = __commonJS({
  "node_modules/rxjs/dist/cjs/internal/scheduled/scheduleIterable.js"(exports2) {
    "use strict";
    Object.defineProperty(exports2, "__esModule", { value: true });
    exports2.scheduleIterable = void 0;
    var Observable_1 = require_Observable();
    var iterator_1 = require_iterator();
    var isFunction_1 = require_isFunction();
    var executeSchedule_1 = require_executeSchedule();
    function scheduleIterable(input, scheduler) {
      return new Observable_1.Observable(function(subscriber) {
        var iterator;
        executeSchedule_1.executeSchedule(subscriber, scheduler, function() {
          iterator = input[iterator_1.iterator]();
          executeSchedule_1.executeSchedule(subscriber, scheduler, function() {
            var _a2;
            var value;
            var done;
            try {
              _a2 = iterator.next(), value = _a2.value, done = _a2.done;
            } catch (err) {
              subscriber.error(err);
              return;
            }
            if (done) {
              subscriber.complete();
            } else {
              subscriber.next(value);
            }
          }, 0, true);
        });
        return function() {
          return isFunction_1.isFunction(iterator === null || iterator === void 0 ? void 0 : iterator.return) && iterator.return();
        };
      });
    }
    exports2.scheduleIterable = scheduleIterable;
  }
});

// node_modules/rxjs/dist/cjs/internal/scheduled/scheduleAsyncIterable.js
var require_scheduleAsyncIterable = __commonJS({
  "node_modules/rxjs/dist/cjs/internal/scheduled/scheduleAsyncIterable.js"(exports2) {
    "use strict";
    Object.defineProperty(exports2, "__esModule", { value: true });
    exports2.scheduleAsyncIterable = void 0;
    var Observable_1 = require_Observable();
    var executeSchedule_1 = require_executeSchedule();
    function scheduleAsyncIterable(input, scheduler) {
      if (!input) {
        throw new Error("Iterable cannot be null");
      }
      return new Observable_1.Observable(function(subscriber) {
        executeSchedule_1.executeSchedule(subscriber, scheduler, function() {
          var iterator = input[Symbol.asyncIterator]();
          executeSchedule_1.executeSchedule(subscriber, scheduler, function() {
            iterator.next().then(function(result) {
              if (result.done) {
                subscriber.complete();
              } else {
                subscriber.next(result.value);
              }
            });
          }, 0, true);
        });
      });
    }
    exports2.scheduleAsyncIterable = scheduleAsyncIterable;
  }
});

// node_modules/rxjs/dist/cjs/internal/scheduled/scheduleReadableStreamLike.js
var require_scheduleReadableStreamLike = __commonJS({
  "node_modules/rxjs/dist/cjs/internal/scheduled/scheduleReadableStreamLike.js"(exports2) {
    "use strict";
    Object.defineProperty(exports2, "__esModule", { value: true });
    exports2.scheduleReadableStreamLike = void 0;
    var scheduleAsyncIterable_1 = require_scheduleAsyncIterable();
    var isReadableStreamLike_1 = require_isReadableStreamLike();
    function scheduleReadableStreamLike(input, scheduler) {
      return scheduleAsyncIterable_1.scheduleAsyncIterable(isReadableStreamLike_1.readableStreamLikeToAsyncGenerator(input), scheduler);
    }
    exports2.scheduleReadableStreamLike = scheduleReadableStreamLike;
  }
});

// node_modules/rxjs/dist/cjs/internal/scheduled/scheduled.js
var require_scheduled = __commonJS({
  "node_modules/rxjs/dist/cjs/internal/scheduled/scheduled.js"(exports2) {
    "use strict";
    Object.defineProperty(exports2, "__esModule", { value: true });
    exports2.scheduled = void 0;
    var scheduleObservable_1 = require_scheduleObservable();
    var schedulePromise_1 = require_schedulePromise();
    var scheduleArray_1 = require_scheduleArray();
    var scheduleIterable_1 = require_scheduleIterable();
    var scheduleAsyncIterable_1 = require_scheduleAsyncIterable();
    var isInteropObservable_1 = require_isInteropObservable();
    var isPromise_1 = require_isPromise();
    var isArrayLike_1 = require_isArrayLike();
    var isIterable_1 = require_isIterable();
    var isAsyncIterable_1 = require_isAsyncIterable();
    var throwUnobservableError_1 = require_throwUnobservableError();
    var isReadableStreamLike_1 = require_isReadableStreamLike();
    var scheduleReadableStreamLike_1 = require_scheduleReadableStreamLike();
    function scheduled(input, scheduler) {
      if (input != null) {
        if (isInteropObservable_1.isInteropObservable(input)) {
          return scheduleObservable_1.scheduleObservable(input, scheduler);
        }
        if (isArrayLike_1.isArrayLike(input)) {
          return scheduleArray_1.scheduleArray(input, scheduler);
        }
        if (isPromise_1.isPromise(input)) {
          return schedulePromise_1.schedulePromise(input, scheduler);
        }
        if (isAsyncIterable_1.isAsyncIterable(input)) {
          return scheduleAsyncIterable_1.scheduleAsyncIterable(input, scheduler);
        }
        if (isIterable_1.isIterable(input)) {
          return scheduleIterable_1.scheduleIterable(input, scheduler);
        }
        if (isReadableStreamLike_1.isReadableStreamLike(input)) {
          return scheduleReadableStreamLike_1.scheduleReadableStreamLike(input, scheduler);
        }
      }
      throw throwUnobservableError_1.createInvalidObservableTypeError(input);
    }
    exports2.scheduled = scheduled;
  }
});

// node_modules/rxjs/dist/cjs/internal/observable/from.js
var require_from = __commonJS({
  "node_modules/rxjs/dist/cjs/internal/observable/from.js"(exports2) {
    "use strict";
    Object.defineProperty(exports2, "__esModule", { value: true });
    exports2.from = void 0;
    var scheduled_1 = require_scheduled();
    var innerFrom_1 = require_innerFrom();
    function from(input, scheduler) {
      return scheduler ? scheduled_1.scheduled(input, scheduler) : innerFrom_1.innerFrom(input);
    }
    exports2.from = from;
  }
});

// node_modules/rxjs/dist/cjs/internal/observable/of.js
var require_of = __commonJS({
  "node_modules/rxjs/dist/cjs/internal/observable/of.js"(exports2) {
    "use strict";
    Object.defineProperty(exports2, "__esModule", { value: true });
    exports2.of = void 0;
    var args_1 = require_args();
    var from_1 = require_from();
    function of() {
      var args = [];
      for (var _i = 0; _i < arguments.length; _i++) {
        args[_i] = arguments[_i];
      }
      var scheduler = args_1.popScheduler(args);
      return from_1.from(args, scheduler);
    }
    exports2.of = of;
  }
});

// node_modules/rxjs/dist/cjs/internal/observable/throwError.js
var require_throwError = __commonJS({
  "node_modules/rxjs/dist/cjs/internal/observable/throwError.js"(exports2) {
    "use strict";
    Object.defineProperty(exports2, "__esModule", { value: true });
    exports2.throwError = void 0;
    var Observable_1 = require_Observable();
    var isFunction_1 = require_isFunction();
    function throwError(errorOrErrorFactory, scheduler) {
      var errorFactory = isFunction_1.isFunction(errorOrErrorFactory) ? errorOrErrorFactory : function() {
        return errorOrErrorFactory;
      };
      var init = function(subscriber) {
        return subscriber.error(errorFactory());
      };
      return new Observable_1.Observable(scheduler ? function(subscriber) {
        return scheduler.schedule(init, 0, subscriber);
      } : init);
    }
    exports2.throwError = throwError;
  }
});

// node_modules/rxjs/dist/cjs/internal/Notification.js
var require_Notification = __commonJS({
  "node_modules/rxjs/dist/cjs/internal/Notification.js"(exports2) {
    "use strict";
    Object.defineProperty(exports2, "__esModule", { value: true });
    exports2.observeNotification = exports2.Notification = exports2.NotificationKind = void 0;
    var empty_1 = require_empty();
    var of_1 = require_of();
    var throwError_1 = require_throwError();
    var isFunction_1 = require_isFunction();
    var NotificationKind;
    (function(NotificationKind2) {
      NotificationKind2["NEXT"] = "N";
      NotificationKind2["ERROR"] = "E";
      NotificationKind2["COMPLETE"] = "C";
    })(NotificationKind = exports2.NotificationKind || (exports2.NotificationKind = {}));
    var Notification = (function() {
      function Notification2(kind, value, error) {
        this.kind = kind;
        this.value = value;
        this.error = error;
        this.hasValue = kind === "N";
      }
      Notification2.prototype.observe = function(observer) {
        return observeNotification(this, observer);
      };
      Notification2.prototype.do = function(nextHandler, errorHandler, completeHandler) {
        var _a2 = this, kind = _a2.kind, value = _a2.value, error = _a2.error;
        return kind === "N" ? nextHandler === null || nextHandler === void 0 ? void 0 : nextHandler(value) : kind === "E" ? errorHandler === null || errorHandler === void 0 ? void 0 : errorHandler(error) : completeHandler === null || completeHandler === void 0 ? void 0 : completeHandler();
      };
      Notification2.prototype.accept = function(nextOrObserver, error, complete) {
        var _a2;
        return isFunction_1.isFunction((_a2 = nextOrObserver) === null || _a2 === void 0 ? void 0 : _a2.next) ? this.observe(nextOrObserver) : this.do(nextOrObserver, error, complete);
      };
      Notification2.prototype.toObservable = function() {
        var _a2 = this, kind = _a2.kind, value = _a2.value, error = _a2.error;
        var result = kind === "N" ? of_1.of(value) : kind === "E" ? throwError_1.throwError(function() {
          return error;
        }) : kind === "C" ? empty_1.EMPTY : 0;
        if (!result) {
          throw new TypeError("Unexpected notification kind " + kind);
        }
        return result;
      };
      Notification2.createNext = function(value) {
        return new Notification2("N", value);
      };
      Notification2.createError = function(err) {
        return new Notification2("E", void 0, err);
      };
      Notification2.createComplete = function() {
        return Notification2.completeNotification;
      };
      Notification2.completeNotification = new Notification2("C");
      return Notification2;
    })();
    exports2.Notification = Notification;
    function observeNotification(notification, observer) {
      var _a2, _b, _c;
      var _d = notification, kind = _d.kind, value = _d.value, error = _d.error;
      if (typeof kind !== "string") {
        throw new TypeError('Invalid notification, missing "kind"');
      }
      kind === "N" ? (_a2 = observer.next) === null || _a2 === void 0 ? void 0 : _a2.call(observer, value) : kind === "E" ? (_b = observer.error) === null || _b === void 0 ? void 0 : _b.call(observer, error) : (_c = observer.complete) === null || _c === void 0 ? void 0 : _c.call(observer);
    }
    exports2.observeNotification = observeNotification;
  }
});

// node_modules/rxjs/dist/cjs/internal/util/isObservable.js
var require_isObservable = __commonJS({
  "node_modules/rxjs/dist/cjs/internal/util/isObservable.js"(exports2) {
    "use strict";
    Object.defineProperty(exports2, "__esModule", { value: true });
    exports2.isObservable = void 0;
    var Observable_1 = require_Observable();
    var isFunction_1 = require_isFunction();
    function isObservable(obj) {
      return !!obj && (obj instanceof Observable_1.Observable || isFunction_1.isFunction(obj.lift) && isFunction_1.isFunction(obj.subscribe));
    }
    exports2.isObservable = isObservable;
  }
});

// node_modules/rxjs/dist/cjs/internal/util/EmptyError.js
var require_EmptyError = __commonJS({
  "node_modules/rxjs/dist/cjs/internal/util/EmptyError.js"(exports2) {
    "use strict";
    Object.defineProperty(exports2, "__esModule", { value: true });
    exports2.EmptyError = void 0;
    var createErrorClass_1 = require_createErrorClass();
    exports2.EmptyError = createErrorClass_1.createErrorClass(function(_super) {
      return function EmptyErrorImpl() {
        _super(this);
        this.name = "EmptyError";
        this.message = "no elements in sequence";
      };
    });
  }
});

// node_modules/rxjs/dist/cjs/internal/lastValueFrom.js
var require_lastValueFrom = __commonJS({
  "node_modules/rxjs/dist/cjs/internal/lastValueFrom.js"(exports2) {
    "use strict";
    Object.defineProperty(exports2, "__esModule", { value: true });
    exports2.lastValueFrom = void 0;
    var EmptyError_1 = require_EmptyError();
    function lastValueFrom(source, config) {
      var hasConfig = typeof config === "object";
      return new Promise(function(resolve, reject) {
        var _hasValue = false;
        var _value;
        source.subscribe({
          next: function(value) {
            _value = value;
            _hasValue = true;
          },
          error: reject,
          complete: function() {
            if (_hasValue) {
              resolve(_value);
            } else if (hasConfig) {
              resolve(config.defaultValue);
            } else {
              reject(new EmptyError_1.EmptyError());
            }
          }
        });
      });
    }
    exports2.lastValueFrom = lastValueFrom;
  }
});

// node_modules/rxjs/dist/cjs/internal/firstValueFrom.js
var require_firstValueFrom = __commonJS({
  "node_modules/rxjs/dist/cjs/internal/firstValueFrom.js"(exports2) {
    "use strict";
    Object.defineProperty(exports2, "__esModule", { value: true });
    exports2.firstValueFrom = void 0;
    var EmptyError_1 = require_EmptyError();
    var Subscriber_1 = require_Subscriber();
    function firstValueFrom(source, config) {
      var hasConfig = typeof config === "object";
      return new Promise(function(resolve, reject) {
        var subscriber = new Subscriber_1.SafeSubscriber({
          next: function(value) {
            resolve(value);
            subscriber.unsubscribe();
          },
          error: reject,
          complete: function() {
            if (hasConfig) {
              resolve(config.defaultValue);
            } else {
              reject(new EmptyError_1.EmptyError());
            }
          }
        });
        source.subscribe(subscriber);
      });
    }
    exports2.firstValueFrom = firstValueFrom;
  }
});

// node_modules/rxjs/dist/cjs/internal/util/ArgumentOutOfRangeError.js
var require_ArgumentOutOfRangeError = __commonJS({
  "node_modules/rxjs/dist/cjs/internal/util/ArgumentOutOfRangeError.js"(exports2) {
    "use strict";
    Object.defineProperty(exports2, "__esModule", { value: true });
    exports2.ArgumentOutOfRangeError = void 0;
    var createErrorClass_1 = require_createErrorClass();
    exports2.ArgumentOutOfRangeError = createErrorClass_1.createErrorClass(function(_super) {
      return function ArgumentOutOfRangeErrorImpl() {
        _super(this);
        this.name = "ArgumentOutOfRangeError";
        this.message = "argument out of range";
      };
    });
  }
});

// node_modules/rxjs/dist/cjs/internal/util/NotFoundError.js
var require_NotFoundError = __commonJS({
  "node_modules/rxjs/dist/cjs/internal/util/NotFoundError.js"(exports2) {
    "use strict";
    Object.defineProperty(exports2, "__esModule", { value: true });
    exports2.NotFoundError = void 0;
    var createErrorClass_1 = require_createErrorClass();
    exports2.NotFoundError = createErrorClass_1.createErrorClass(function(_super) {
      return function NotFoundErrorImpl(message) {
        _super(this);
        this.name = "NotFoundError";
        this.message = message;
      };
    });
  }
});

// node_modules/rxjs/dist/cjs/internal/util/SequenceError.js
var require_SequenceError = __commonJS({
  "node_modules/rxjs/dist/cjs/internal/util/SequenceError.js"(exports2) {
    "use strict";
    Object.defineProperty(exports2, "__esModule", { value: true });
    exports2.SequenceError = void 0;
    var createErrorClass_1 = require_createErrorClass();
    exports2.SequenceError = createErrorClass_1.createErrorClass(function(_super) {
      return function SequenceErrorImpl(message) {
        _super(this);
        this.name = "SequenceError";
        this.message = message;
      };
    });
  }
});

// node_modules/rxjs/dist/cjs/internal/util/isDate.js
var require_isDate = __commonJS({
  "node_modules/rxjs/dist/cjs/internal/util/isDate.js"(exports2) {
    "use strict";
    Object.defineProperty(exports2, "__esModule", { value: true });
    exports2.isValidDate = void 0;
    function isValidDate(value) {
      return value instanceof Date && !isNaN(value);
    }
    exports2.isValidDate = isValidDate;
  }
});

// node_modules/rxjs/dist/cjs/internal/operators/timeout.js
var require_timeout = __commonJS({
  "node_modules/rxjs/dist/cjs/internal/operators/timeout.js"(exports2) {
    "use strict";
    Object.defineProperty(exports2, "__esModule", { value: true });
    exports2.timeout = exports2.TimeoutError = void 0;
    var async_1 = require_async();
    var isDate_1 = require_isDate();
    var lift_1 = require_lift();
    var innerFrom_1 = require_innerFrom();
    var createErrorClass_1 = require_createErrorClass();
    var OperatorSubscriber_1 = require_OperatorSubscriber();
    var executeSchedule_1 = require_executeSchedule();
    exports2.TimeoutError = createErrorClass_1.createErrorClass(function(_super) {
      return function TimeoutErrorImpl(info) {
        if (info === void 0) {
          info = null;
        }
        _super(this);
        this.message = "Timeout has occurred";
        this.name = "TimeoutError";
        this.info = info;
      };
    });
    function timeout2(config, schedulerArg) {
      var _a2 = isDate_1.isValidDate(config) ? { first: config } : typeof config === "number" ? { each: config } : config, first = _a2.first, each = _a2.each, _b = _a2.with, _with = _b === void 0 ? timeoutErrorFactory : _b, _c = _a2.scheduler, scheduler = _c === void 0 ? schedulerArg !== null && schedulerArg !== void 0 ? schedulerArg : async_1.asyncScheduler : _c, _d = _a2.meta, meta = _d === void 0 ? null : _d;
      if (first == null && each == null) {
        throw new TypeError("No timeout provided.");
      }
      return lift_1.operate(function(source, subscriber) {
        var originalSourceSubscription;
        var timerSubscription;
        var lastValue = null;
        var seen = 0;
        var startTimer = function(delay) {
          timerSubscription = executeSchedule_1.executeSchedule(subscriber, scheduler, function() {
            try {
              originalSourceSubscription.unsubscribe();
              innerFrom_1.innerFrom(_with({
                meta,
                lastValue,
                seen
              })).subscribe(subscriber);
            } catch (err) {
              subscriber.error(err);
            }
          }, delay);
        };
        originalSourceSubscription = source.subscribe(OperatorSubscriber_1.createOperatorSubscriber(subscriber, function(value) {
          timerSubscription === null || timerSubscription === void 0 ? void 0 : timerSubscription.unsubscribe();
          seen++;
          subscriber.next(lastValue = value);
          each > 0 && startTimer(each);
        }, void 0, void 0, function() {
          if (!(timerSubscription === null || timerSubscription === void 0 ? void 0 : timerSubscription.closed)) {
            timerSubscription === null || timerSubscription === void 0 ? void 0 : timerSubscription.unsubscribe();
          }
          lastValue = null;
        }));
        !seen && startTimer(first != null ? typeof first === "number" ? first : +first - scheduler.now() : each);
      });
    }
    exports2.timeout = timeout2;
    function timeoutErrorFactory(info) {
      throw new exports2.TimeoutError(info);
    }
  }
});

// node_modules/rxjs/dist/cjs/internal/operators/map.js
var require_map = __commonJS({
  "node_modules/rxjs/dist/cjs/internal/operators/map.js"(exports2) {
    "use strict";
    Object.defineProperty(exports2, "__esModule", { value: true });
    exports2.map = void 0;
    var lift_1 = require_lift();
    var OperatorSubscriber_1 = require_OperatorSubscriber();
    function map(project, thisArg) {
      return lift_1.operate(function(source, subscriber) {
        var index = 0;
        source.subscribe(OperatorSubscriber_1.createOperatorSubscriber(subscriber, function(value) {
          subscriber.next(project.call(thisArg, value, index++));
        }));
      });
    }
    exports2.map = map;
  }
});

// node_modules/rxjs/dist/cjs/internal/util/mapOneOrManyArgs.js
var require_mapOneOrManyArgs = __commonJS({
  "node_modules/rxjs/dist/cjs/internal/util/mapOneOrManyArgs.js"(exports2) {
    "use strict";
    var __read = exports2 && exports2.__read || function(o, n) {
      var m = typeof Symbol === "function" && o[Symbol.iterator];
      if (!m) return o;
      var i = m.call(o), r, ar = [], e;
      try {
        while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);
      } catch (error) {
        e = { error };
      } finally {
        try {
          if (r && !r.done && (m = i["return"])) m.call(i);
        } finally {
          if (e) throw e.error;
        }
      }
      return ar;
    };
    var __spreadArray = exports2 && exports2.__spreadArray || function(to, from) {
      for (var i = 0, il = from.length, j = to.length; i < il; i++, j++)
        to[j] = from[i];
      return to;
    };
    Object.defineProperty(exports2, "__esModule", { value: true });
    exports2.mapOneOrManyArgs = void 0;
    var map_1 = require_map();
    var isArray2 = Array.isArray;
    function callOrApply(fn, args) {
      return isArray2(args) ? fn.apply(void 0, __spreadArray([], __read(args))) : fn(args);
    }
    function mapOneOrManyArgs(fn) {
      return map_1.map(function(args) {
        return callOrApply(fn, args);
      });
    }
    exports2.mapOneOrManyArgs = mapOneOrManyArgs;
  }
});

// node_modules/rxjs/dist/cjs/internal/observable/bindCallbackInternals.js
var require_bindCallbackInternals = __commonJS({
  "node_modules/rxjs/dist/cjs/internal/observable/bindCallbackInternals.js"(exports2) {
    "use strict";
    var __read = exports2 && exports2.__read || function(o, n) {
      var m = typeof Symbol === "function" && o[Symbol.iterator];
      if (!m) return o;
      var i = m.call(o), r, ar = [], e;
      try {
        while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);
      } catch (error) {
        e = { error };
      } finally {
        try {
          if (r && !r.done && (m = i["return"])) m.call(i);
        } finally {
          if (e) throw e.error;
        }
      }
      return ar;
    };
    var __spreadArray = exports2 && exports2.__spreadArray || function(to, from) {
      for (var i = 0, il = from.length, j = to.length; i < il; i++, j++)
        to[j] = from[i];
      return to;
    };
    Object.defineProperty(exports2, "__esModule", { value: true });
    exports2.bindCallbackInternals = void 0;
    var isScheduler_1 = require_isScheduler();
    var Observable_1 = require_Observable();
    var subscribeOn_1 = require_subscribeOn();
    var mapOneOrManyArgs_1 = require_mapOneOrManyArgs();
    var observeOn_1 = require_observeOn();
    var AsyncSubject_1 = require_AsyncSubject();
    function bindCallbackInternals(isNodeStyle, callbackFunc, resultSelector, scheduler) {
      if (resultSelector) {
        if (isScheduler_1.isScheduler(resultSelector)) {
          scheduler = resultSelector;
        } else {
          return function() {
            var args = [];
            for (var _i = 0; _i < arguments.length; _i++) {
              args[_i] = arguments[_i];
            }
            return bindCallbackInternals(isNodeStyle, callbackFunc, scheduler).apply(this, args).pipe(mapOneOrManyArgs_1.mapOneOrManyArgs(resultSelector));
          };
        }
      }
      if (scheduler) {
        return function() {
          var args = [];
          for (var _i = 0; _i < arguments.length; _i++) {
            args[_i] = arguments[_i];
          }
          return bindCallbackInternals(isNodeStyle, callbackFunc).apply(this, args).pipe(subscribeOn_1.subscribeOn(scheduler), observeOn_1.observeOn(scheduler));
        };
      }
      return function() {
        var _this = this;
        var args = [];
        for (var _i = 0; _i < arguments.length; _i++) {
          args[_i] = arguments[_i];
        }
        var subject = new AsyncSubject_1.AsyncSubject();
        var uninitialized = true;
        return new Observable_1.Observable(function(subscriber) {
          var subs = subject.subscribe(subscriber);
          if (uninitialized) {
            uninitialized = false;
            var isAsync_1 = false;
            var isComplete_1 = false;
            callbackFunc.apply(_this, __spreadArray(__spreadArray([], __read(args)), [
              function() {
                var results = [];
                for (var _i2 = 0; _i2 < arguments.length; _i2++) {
                  results[_i2] = arguments[_i2];
                }
                if (isNodeStyle) {
                  var err = results.shift();
                  if (err != null) {
                    subject.error(err);
                    return;
                  }
                }
                subject.next(1 < results.length ? results : results[0]);
                isComplete_1 = true;
                if (isAsync_1) {
                  subject.complete();
                }
              }
            ]));
            if (isComplete_1) {
              subject.complete();
            }
            isAsync_1 = true;
          }
          return subs;
        });
      };
    }
    exports2.bindCallbackInternals = bindCallbackInternals;
  }
});

// node_modules/rxjs/dist/cjs/internal/observable/bindCallback.js
var require_bindCallback = __commonJS({
  "node_modules/rxjs/dist/cjs/internal/observable/bindCallback.js"(exports2) {
    "use strict";
    Object.defineProperty(exports2, "__esModule", { value: true });
    exports2.bindCallback = void 0;
    var bindCallbackInternals_1 = require_bindCallbackInternals();
    function bindCallback(callbackFunc, resultSelector, scheduler) {
      return bindCallbackInternals_1.bindCallbackInternals(false, callbackFunc, resultSelector, scheduler);
    }
    exports2.bindCallback = bindCallback;
  }
});

// node_modules/rxjs/dist/cjs/internal/observable/bindNodeCallback.js
var require_bindNodeCallback = __commonJS({
  "node_modules/rxjs/dist/cjs/internal/observable/bindNodeCallback.js"(exports2) {
    "use strict";
    Object.defineProperty(exports2, "__esModule", { value: true });
    exports2.bindNodeCallback = void 0;
    var bindCallbackInternals_1 = require_bindCallbackInternals();
    function bindNodeCallback(callbackFunc, resultSelector, scheduler) {
      return bindCallbackInternals_1.bindCallbackInternals(true, callbackFunc, resultSelector, scheduler);
    }
    exports2.bindNodeCallback = bindNodeCallback;
  }
});

// node_modules/rxjs/dist/cjs/internal/util/argsArgArrayOrObject.js
var require_argsArgArrayOrObject = __commonJS({
  "node_modules/rxjs/dist/cjs/internal/util/argsArgArrayOrObject.js"(exports2) {
    "use strict";
    Object.defineProperty(exports2, "__esModule", { value: true });
    exports2.argsArgArrayOrObject = void 0;
    var isArray2 = Array.isArray;
    var getPrototypeOf = Object.getPrototypeOf;
    var objectProto = Object.prototype;
    var getKeys = Object.keys;
    function argsArgArrayOrObject(args) {
      if (args.length === 1) {
        var first_1 = args[0];
        if (isArray2(first_1)) {
          return { args: first_1, keys: null };
        }
        if (isPOJO(first_1)) {
          var keys = getKeys(first_1);
          return {
            args: keys.map(function(key) {
              return first_1[key];
            }),
            keys
          };
        }
      }
      return { args, keys: null };
    }
    exports2.argsArgArrayOrObject = argsArgArrayOrObject;
    function isPOJO(obj) {
      return obj && typeof obj === "object" && getPrototypeOf(obj) === objectProto;
    }
  }
});

// node_modules/rxjs/dist/cjs/internal/util/createObject.js
var require_createObject = __commonJS({
  "node_modules/rxjs/dist/cjs/internal/util/createObject.js"(exports2) {
    "use strict";
    Object.defineProperty(exports2, "__esModule", { value: true });
    exports2.createObject = void 0;
    function createObject(keys, values) {
      return keys.reduce(function(result, key, i) {
        return result[key] = values[i], result;
      }, {});
    }
    exports2.createObject = createObject;
  }
});

// node_modules/rxjs/dist/cjs/internal/observable/combineLatest.js
var require_combineLatest = __commonJS({
  "node_modules/rxjs/dist/cjs/internal/observable/combineLatest.js"(exports2) {
    "use strict";
    Object.defineProperty(exports2, "__esModule", { value: true });
    exports2.combineLatestInit = exports2.combineLatest = void 0;
    var Observable_1 = require_Observable();
    var argsArgArrayOrObject_1 = require_argsArgArrayOrObject();
    var from_1 = require_from();
    var identity_1 = require_identity();
    var mapOneOrManyArgs_1 = require_mapOneOrManyArgs();
    var args_1 = require_args();
    var createObject_1 = require_createObject();
    var OperatorSubscriber_1 = require_OperatorSubscriber();
    var executeSchedule_1 = require_executeSchedule();
    function combineLatest() {
      var args = [];
      for (var _i = 0; _i < arguments.length; _i++) {
        args[_i] = arguments[_i];
      }
      var scheduler = args_1.popScheduler(args);
      var resultSelector = args_1.popResultSelector(args);
      var _a2 = argsArgArrayOrObject_1.argsArgArrayOrObject(args), observables = _a2.args, keys = _a2.keys;
      if (observables.length === 0) {
        return from_1.from([], scheduler);
      }
      var result = new Observable_1.Observable(combineLatestInit(observables, scheduler, keys ? function(values) {
        return createObject_1.createObject(keys, values);
      } : identity_1.identity));
      return resultSelector ? result.pipe(mapOneOrManyArgs_1.mapOneOrManyArgs(resultSelector)) : result;
    }
    exports2.combineLatest = combineLatest;
    function combineLatestInit(observables, scheduler, valueTransform) {
      if (valueTransform === void 0) {
        valueTransform = identity_1.identity;
      }
      return function(subscriber) {
        maybeSchedule(scheduler, function() {
          var length = observables.length;
          var values = new Array(length);
          var active = length;
          var remainingFirstValues = length;
          var _loop_1 = function(i2) {
            maybeSchedule(scheduler, function() {
              var source = from_1.from(observables[i2], scheduler);
              var hasFirstValue = false;
              source.subscribe(OperatorSubscriber_1.createOperatorSubscriber(subscriber, function(value) {
                values[i2] = value;
                if (!hasFirstValue) {
                  hasFirstValue = true;
                  remainingFirstValues--;
                }
                if (!remainingFirstValues) {
                  subscriber.next(valueTransform(values.slice()));
                }
              }, function() {
                if (!--active) {
                  subscriber.complete();
                }
              }));
            }, subscriber);
          };
          for (var i = 0; i < length; i++) {
            _loop_1(i);
          }
        }, subscriber);
      };
    }
    exports2.combineLatestInit = combineLatestInit;
    function maybeSchedule(scheduler, execute, subscription) {
      if (scheduler) {
        executeSchedule_1.executeSchedule(subscription, scheduler, execute);
      } else {
        execute();
      }
    }
  }
});

// node_modules/rxjs/dist/cjs/internal/operators/mergeInternals.js
var require_mergeInternals = __commonJS({
  "node_modules/rxjs/dist/cjs/internal/operators/mergeInternals.js"(exports2) {
    "use strict";
    Object.defineProperty(exports2, "__esModule", { value: true });
    exports2.mergeInternals = void 0;
    var innerFrom_1 = require_innerFrom();
    var executeSchedule_1 = require_executeSchedule();
    var OperatorSubscriber_1 = require_OperatorSubscriber();
    function mergeInternals(source, subscriber, project, concurrent, onBeforeNext, expand2, innerSubScheduler, additionalFinalizer) {
      var buffer = [];
      var active = 0;
      var index = 0;
      var isComplete = false;
      var checkComplete = function() {
        if (isComplete && !buffer.length && !active) {
          subscriber.complete();
        }
      };
      var outerNext = function(value) {
        return active < concurrent ? doInnerSub(value) : buffer.push(value);
      };
      var doInnerSub = function(value) {
        expand2 && subscriber.next(value);
        active++;
        var innerComplete = false;
        innerFrom_1.innerFrom(project(value, index++)).subscribe(OperatorSubscriber_1.createOperatorSubscriber(subscriber, function(innerValue) {
          onBeforeNext === null || onBeforeNext === void 0 ? void 0 : onBeforeNext(innerValue);
          if (expand2) {
            outerNext(innerValue);
          } else {
            subscriber.next(innerValue);
          }
        }, function() {
          innerComplete = true;
        }, void 0, function() {
          if (innerComplete) {
            try {
              active--;
              var _loop_1 = function() {
                var bufferedValue = buffer.shift();
                if (innerSubScheduler) {
                  executeSchedule_1.executeSchedule(subscriber, innerSubScheduler, function() {
                    return doInnerSub(bufferedValue);
                  });
                } else {
                  doInnerSub(bufferedValue);
                }
              };
              while (buffer.length && active < concurrent) {
                _loop_1();
              }
              checkComplete();
            } catch (err) {
              subscriber.error(err);
            }
          }
        }));
      };
      source.subscribe(OperatorSubscriber_1.createOperatorSubscriber(subscriber, outerNext, function() {
        isComplete = true;
        checkComplete();
      }));
      return function() {
        additionalFinalizer === null || additionalFinalizer === void 0 ? void 0 : additionalFinalizer();
      };
    }
    exports2.mergeInternals = mergeInternals;
  }
});

// node_modules/rxjs/dist/cjs/internal/operators/mergeMap.js
var require_mergeMap = __commonJS({
  "node_modules/rxjs/dist/cjs/internal/operators/mergeMap.js"(exports2) {
    "use strict";
    Object.defineProperty(exports2, "__esModule", { value: true });
    exports2.mergeMap = void 0;
    var map_1 = require_map();
    var innerFrom_1 = require_innerFrom();
    var lift_1 = require_lift();
    var mergeInternals_1 = require_mergeInternals();
    var isFunction_1 = require_isFunction();
    function mergeMap(project, resultSelector, concurrent) {
      if (concurrent === void 0) {
        concurrent = Infinity;
      }
      if (isFunction_1.isFunction(resultSelector)) {
        return mergeMap(function(a, i) {
          return map_1.map(function(b, ii) {
            return resultSelector(a, b, i, ii);
          })(innerFrom_1.innerFrom(project(a, i)));
        }, concurrent);
      } else if (typeof resultSelector === "number") {
        concurrent = resultSelector;
      }
      return lift_1.operate(function(source, subscriber) {
        return mergeInternals_1.mergeInternals(source, subscriber, project, concurrent);
      });
    }
    exports2.mergeMap = mergeMap;
  }
});

// node_modules/rxjs/dist/cjs/internal/operators/mergeAll.js
var require_mergeAll = __commonJS({
  "node_modules/rxjs/dist/cjs/internal/operators/mergeAll.js"(exports2) {
    "use strict";
    Object.defineProperty(exports2, "__esModule", { value: true });
    exports2.mergeAll = void 0;
    var mergeMap_1 = require_mergeMap();
    var identity_1 = require_identity();
    function mergeAll(concurrent) {
      if (concurrent === void 0) {
        concurrent = Infinity;
      }
      return mergeMap_1.mergeMap(identity_1.identity, concurrent);
    }
    exports2.mergeAll = mergeAll;
  }
});

// node_modules/rxjs/dist/cjs/internal/operators/concatAll.js
var require_concatAll = __commonJS({
  "node_modules/rxjs/dist/cjs/internal/operators/concatAll.js"(exports2) {
    "use strict";
    Object.defineProperty(exports2, "__esModule", { value: true });
    exports2.concatAll = void 0;
    var mergeAll_1 = require_mergeAll();
    function concatAll() {
      return mergeAll_1.mergeAll(1);
    }
    exports2.concatAll = concatAll;
  }
});

// node_modules/rxjs/dist/cjs/internal/observable/concat.js
var require_concat = __commonJS({
  "node_modules/rxjs/dist/cjs/internal/observable/concat.js"(exports2) {
    "use strict";
    Object.defineProperty(exports2, "__esModule", { value: true });
    exports2.concat = void 0;
    var concatAll_1 = require_concatAll();
    var args_1 = require_args();
    var from_1 = require_from();
    function concat() {
      var args = [];
      for (var _i = 0; _i < arguments.length; _i++) {
        args[_i] = arguments[_i];
      }
      return concatAll_1.concatAll()(from_1.from(args, args_1.popScheduler(args)));
    }
    exports2.concat = concat;
  }
});

// node_modules/rxjs/dist/cjs/internal/observable/defer.js
var require_defer = __commonJS({
  "node_modules/rxjs/dist/cjs/internal/observable/defer.js"(exports2) {
    "use strict";
    Object.defineProperty(exports2, "__esModule", { value: true });
    exports2.defer = void 0;
    var Observable_1 = require_Observable();
    var innerFrom_1 = require_innerFrom();
    function defer(observableFactory) {
      return new Observable_1.Observable(function(subscriber) {
        innerFrom_1.innerFrom(observableFactory()).subscribe(subscriber);
      });
    }
    exports2.defer = defer;
  }
});

// node_modules/rxjs/dist/cjs/internal/observable/connectable.js
var require_connectable = __commonJS({
  "node_modules/rxjs/dist/cjs/internal/observable/connectable.js"(exports2) {
    "use strict";
    Object.defineProperty(exports2, "__esModule", { value: true });
    exports2.connectable = void 0;
    var Subject_1 = require_Subject();
    var Observable_1 = require_Observable();
    var defer_1 = require_defer();
    var DEFAULT_CONFIG = {
      connector: function() {
        return new Subject_1.Subject();
      },
      resetOnDisconnect: true
    };
    function connectable(source, config) {
      if (config === void 0) {
        config = DEFAULT_CONFIG;
      }
      var connection = null;
      var connector = config.connector, _a2 = config.resetOnDisconnect, resetOnDisconnect = _a2 === void 0 ? true : _a2;
      var subject = connector();
      var result = new Observable_1.Observable(function(subscriber) {
        return subject.subscribe(subscriber);
      });
      result.connect = function() {
        if (!connection || connection.closed) {
          connection = defer_1.defer(function() {
            return source;
          }).subscribe(subject);
          if (resetOnDisconnect) {
            connection.add(function() {
              return subject = connector();
            });
          }
        }
        return connection;
      };
      return result;
    }
    exports2.connectable = connectable;
  }
});

// node_modules/rxjs/dist/cjs/internal/observable/forkJoin.js
var require_forkJoin = __commonJS({
  "node_modules/rxjs/dist/cjs/internal/observable/forkJoin.js"(exports2) {
    "use strict";
    Object.defineProperty(exports2, "__esModule", { value: true });
    exports2.forkJoin = void 0;
    var Observable_1 = require_Observable();
    var argsArgArrayOrObject_1 = require_argsArgArrayOrObject();
    var innerFrom_1 = require_innerFrom();
    var args_1 = require_args();
    var OperatorSubscriber_1 = require_OperatorSubscriber();
    var mapOneOrManyArgs_1 = require_mapOneOrManyArgs();
    var createObject_1 = require_createObject();
    function forkJoin() {
      var args = [];
      for (var _i = 0; _i < arguments.length; _i++) {
        args[_i] = arguments[_i];
      }
      var resultSelector = args_1.popResultSelector(args);
      var _a2 = argsArgArrayOrObject_1.argsArgArrayOrObject(args), sources3 = _a2.args, keys = _a2.keys;
      var result = new Observable_1.Observable(function(subscriber) {
        var length = sources3.length;
        if (!length) {
          subscriber.complete();
          return;
        }
        var values = new Array(length);
        var remainingCompletions = length;
        var remainingEmissions = length;
        var _loop_1 = function(sourceIndex2) {
          var hasValue = false;
          innerFrom_1.innerFrom(sources3[sourceIndex2]).subscribe(OperatorSubscriber_1.createOperatorSubscriber(subscriber, function(value) {
            if (!hasValue) {
              hasValue = true;
              remainingEmissions--;
            }
            values[sourceIndex2] = value;
          }, function() {
            return remainingCompletions--;
          }, void 0, function() {
            if (!remainingCompletions || !hasValue) {
              if (!remainingEmissions) {
                subscriber.next(keys ? createObject_1.createObject(keys, values) : values);
              }
              subscriber.complete();
            }
          }));
        };
        for (var sourceIndex = 0; sourceIndex < length; sourceIndex++) {
          _loop_1(sourceIndex);
        }
      });
      return resultSelector ? result.pipe(mapOneOrManyArgs_1.mapOneOrManyArgs(resultSelector)) : result;
    }
    exports2.forkJoin = forkJoin;
  }
});

// node_modules/rxjs/dist/cjs/internal/observable/fromEvent.js
var require_fromEvent = __commonJS({
  "node_modules/rxjs/dist/cjs/internal/observable/fromEvent.js"(exports2) {
    "use strict";
    var __read = exports2 && exports2.__read || function(o, n) {
      var m = typeof Symbol === "function" && o[Symbol.iterator];
      if (!m) return o;
      var i = m.call(o), r, ar = [], e;
      try {
        while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);
      } catch (error) {
        e = { error };
      } finally {
        try {
          if (r && !r.done && (m = i["return"])) m.call(i);
        } finally {
          if (e) throw e.error;
        }
      }
      return ar;
    };
    Object.defineProperty(exports2, "__esModule", { value: true });
    exports2.fromEvent = void 0;
    var innerFrom_1 = require_innerFrom();
    var Observable_1 = require_Observable();
    var mergeMap_1 = require_mergeMap();
    var isArrayLike_1 = require_isArrayLike();
    var isFunction_1 = require_isFunction();
    var mapOneOrManyArgs_1 = require_mapOneOrManyArgs();
    var nodeEventEmitterMethods = ["addListener", "removeListener"];
    var eventTargetMethods = ["addEventListener", "removeEventListener"];
    var jqueryMethods = ["on", "off"];
    function fromEvent(target, eventName, options, resultSelector) {
      if (isFunction_1.isFunction(options)) {
        resultSelector = options;
        options = void 0;
      }
      if (resultSelector) {
        return fromEvent(target, eventName, options).pipe(mapOneOrManyArgs_1.mapOneOrManyArgs(resultSelector));
      }
      var _a2 = __read(isEventTarget(target) ? eventTargetMethods.map(function(methodName) {
        return function(handler) {
          return target[methodName](eventName, handler, options);
        };
      }) : isNodeStyleEventEmitter(target) ? nodeEventEmitterMethods.map(toCommonHandlerRegistry(target, eventName)) : isJQueryStyleEventEmitter(target) ? jqueryMethods.map(toCommonHandlerRegistry(target, eventName)) : [], 2), add = _a2[0], remove = _a2[1];
      if (!add) {
        if (isArrayLike_1.isArrayLike(target)) {
          return mergeMap_1.mergeMap(function(subTarget) {
            return fromEvent(subTarget, eventName, options);
          })(innerFrom_1.innerFrom(target));
        }
      }
      if (!add) {
        throw new TypeError("Invalid event target");
      }
      return new Observable_1.Observable(function(subscriber) {
        var handler = function() {
          var args = [];
          for (var _i = 0; _i < arguments.length; _i++) {
            args[_i] = arguments[_i];
          }
          return subscriber.next(1 < args.length ? args : args[0]);
        };
        add(handler);
        return function() {
          return remove(handler);
        };
      });
    }
    exports2.fromEvent = fromEvent;
    function toCommonHandlerRegistry(target, eventName) {
      return function(methodName) {
        return function(handler) {
          return target[methodName](eventName, handler);
        };
      };
    }
    function isNodeStyleEventEmitter(target) {
      return isFunction_1.isFunction(target.addListener) && isFunction_1.isFunction(target.removeListener);
    }
    function isJQueryStyleEventEmitter(target) {
      return isFunction_1.isFunction(target.on) && isFunction_1.isFunction(target.off);
    }
    function isEventTarget(target) {
      return isFunction_1.isFunction(target.addEventListener) && isFunction_1.isFunction(target.removeEventListener);
    }
  }
});

// node_modules/rxjs/dist/cjs/internal/observable/fromEventPattern.js
var require_fromEventPattern = __commonJS({
  "node_modules/rxjs/dist/cjs/internal/observable/fromEventPattern.js"(exports2) {
    "use strict";
    Object.defineProperty(exports2, "__esModule", { value: true });
    exports2.fromEventPattern = void 0;
    var Observable_1 = require_Observable();
    var isFunction_1 = require_isFunction();
    var mapOneOrManyArgs_1 = require_mapOneOrManyArgs();
    function fromEventPattern(addHandler, removeHandler, resultSelector) {
      if (resultSelector) {
        return fromEventPattern(addHandler, removeHandler).pipe(mapOneOrManyArgs_1.mapOneOrManyArgs(resultSelector));
      }
      return new Observable_1.Observable(function(subscriber) {
        var handler = function() {
          var e = [];
          for (var _i = 0; _i < arguments.length; _i++) {
            e[_i] = arguments[_i];
          }
          return subscriber.next(e.length === 1 ? e[0] : e);
        };
        var retValue = addHandler(handler);
        return isFunction_1.isFunction(removeHandler) ? function() {
          return removeHandler(handler, retValue);
        } : void 0;
      });
    }
    exports2.fromEventPattern = fromEventPattern;
  }
});

// node_modules/rxjs/dist/cjs/internal/observable/generate.js
var require_generate = __commonJS({
  "node_modules/rxjs/dist/cjs/internal/observable/generate.js"(exports2) {
    "use strict";
    var __generator = exports2 && exports2.__generator || function(thisArg, body) {
      var _ = { label: 0, sent: function() {
        if (t[0] & 1) throw t[1];
        return t[1];
      }, trys: [], ops: [] }, f, y, t, g;
      return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() {
        return this;
      }), g;
      function verb(n) {
        return function(v) {
          return step([n, v]);
        };
      }
      function step(op) {
        if (f) throw new TypeError("Generator is already executing.");
        while (_) try {
          if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
          if (y = 0, t) op = [op[0] & 2, t.value];
          switch (op[0]) {
            case 0:
            case 1:
              t = op;
              break;
            case 4:
              _.label++;
              return { value: op[1], done: false };
            case 5:
              _.label++;
              y = op[1];
              op = [0];
              continue;
            case 7:
              op = _.ops.pop();
              _.trys.pop();
              continue;
            default:
              if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) {
                _ = 0;
                continue;
              }
              if (op[0] === 3 && (!t || op[1] > t[0] && op[1] < t[3])) {
                _.label = op[1];
                break;
              }
              if (op[0] === 6 && _.label < t[1]) {
                _.label = t[1];
                t = op;
                break;
              }
              if (t && _.label < t[2]) {
                _.label = t[2];
                _.ops.push(op);
                break;
              }
              if (t[2]) _.ops.pop();
              _.trys.pop();
              continue;
          }
          op = body.call(thisArg, _);
        } catch (e) {
          op = [6, e];
          y = 0;
        } finally {
          f = t = 0;
        }
        if (op[0] & 5) throw op[1];
        return { value: op[0] ? op[1] : void 0, done: true };
      }
    };
    Object.defineProperty(exports2, "__esModule", { value: true });
    exports2.generate = void 0;
    var identity_1 = require_identity();
    var isScheduler_1 = require_isScheduler();
    var defer_1 = require_defer();
    var scheduleIterable_1 = require_scheduleIterable();
    function generate(initialStateOrOptions, condition, iterate, resultSelectorOrScheduler, scheduler) {
      var _a2, _b;
      var resultSelector;
      var initialState;
      if (arguments.length === 1) {
        _a2 = initialStateOrOptions, initialState = _a2.initialState, condition = _a2.condition, iterate = _a2.iterate, _b = _a2.resultSelector, resultSelector = _b === void 0 ? identity_1.identity : _b, scheduler = _a2.scheduler;
      } else {
        initialState = initialStateOrOptions;
        if (!resultSelectorOrScheduler || isScheduler_1.isScheduler(resultSelectorOrScheduler)) {
          resultSelector = identity_1.identity;
          scheduler = resultSelectorOrScheduler;
        } else {
          resultSelector = resultSelectorOrScheduler;
        }
      }
      function gen() {
        var state;
        return __generator(this, function(_a3) {
          switch (_a3.label) {
            case 0:
              state = initialState;
              _a3.label = 1;
            case 1:
              if (!(!condition || condition(state))) return [3, 4];
              return [4, resultSelector(state)];
            case 2:
              _a3.sent();
              _a3.label = 3;
            case 3:
              state = iterate(state);
              return [3, 1];
            case 4:
              return [2];
          }
        });
      }
      return defer_1.defer(scheduler ? function() {
        return scheduleIterable_1.scheduleIterable(gen(), scheduler);
      } : gen);
    }
    exports2.generate = generate;
  }
});

// node_modules/rxjs/dist/cjs/internal/observable/iif.js
var require_iif = __commonJS({
  "node_modules/rxjs/dist/cjs/internal/observable/iif.js"(exports2) {
    "use strict";
    Object.defineProperty(exports2, "__esModule", { value: true });
    exports2.iif = void 0;
    var defer_1 = require_defer();
    function iif(condition, trueResult, falseResult) {
      return defer_1.defer(function() {
        return condition() ? trueResult : falseResult;
      });
    }
    exports2.iif = iif;
  }
});

// node_modules/rxjs/dist/cjs/internal/observable/timer.js
var require_timer = __commonJS({
  "node_modules/rxjs/dist/cjs/internal/observable/timer.js"(exports2) {
    "use strict";
    Object.defineProperty(exports2, "__esModule", { value: true });
    exports2.timer = void 0;
    var Observable_1 = require_Observable();
    var async_1 = require_async();
    var isScheduler_1 = require_isScheduler();
    var isDate_1 = require_isDate();
    function timer(dueTime, intervalOrScheduler, scheduler) {
      if (dueTime === void 0) {
        dueTime = 0;
      }
      if (scheduler === void 0) {
        scheduler = async_1.async;
      }
      var intervalDuration = -1;
      if (intervalOrScheduler != null) {
        if (isScheduler_1.isScheduler(intervalOrScheduler)) {
          scheduler = intervalOrScheduler;
        } else {
          intervalDuration = intervalOrScheduler;
        }
      }
      return new Observable_1.Observable(function(subscriber) {
        var due = isDate_1.isValidDate(dueTime) ? +dueTime - scheduler.now() : dueTime;
        if (due < 0) {
          due = 0;
        }
        var n = 0;
        return scheduler.schedule(function() {
          if (!subscriber.closed) {
            subscriber.next(n++);
            if (0 <= intervalDuration) {
              this.schedule(void 0, intervalDuration);
            } else {
              subscriber.complete();
            }
          }
        }, due);
      });
    }
    exports2.timer = timer;
  }
});

// node_modules/rxjs/dist/cjs/internal/observable/interval.js
var require_interval = __commonJS({
  "node_modules/rxjs/dist/cjs/internal/observable/interval.js"(exports2) {
    "use strict";
    Object.defineProperty(exports2, "__esModule", { value: true });
    exports2.interval = void 0;
    var async_1 = require_async();
    var timer_1 = require_timer();
    function interval(period, scheduler) {
      if (period === void 0) {
        period = 0;
      }
      if (scheduler === void 0) {
        scheduler = async_1.asyncScheduler;
      }
      if (period < 0) {
        period = 0;
      }
      return timer_1.timer(period, period, scheduler);
    }
    exports2.interval = interval;
  }
});

// node_modules/rxjs/dist/cjs/internal/observable/merge.js
var require_merge = __commonJS({
  "node_modules/rxjs/dist/cjs/internal/observable/merge.js"(exports2) {
    "use strict";
    Object.defineProperty(exports2, "__esModule", { value: true });
    exports2.merge = void 0;
    var mergeAll_1 = require_mergeAll();
    var innerFrom_1 = require_innerFrom();
    var empty_1 = require_empty();
    var args_1 = require_args();
    var from_1 = require_from();
    function merge() {
      var args = [];
      for (var _i = 0; _i < arguments.length; _i++) {
        args[_i] = arguments[_i];
      }
      var scheduler = args_1.popScheduler(args);
      var concurrent = args_1.popNumber(args, Infinity);
      var sources3 = args;
      return !sources3.length ? empty_1.EMPTY : sources3.length === 1 ? innerFrom_1.innerFrom(sources3[0]) : mergeAll_1.mergeAll(concurrent)(from_1.from(sources3, scheduler));
    }
    exports2.merge = merge;
  }
});

// node_modules/rxjs/dist/cjs/internal/observable/never.js
var require_never = __commonJS({
  "node_modules/rxjs/dist/cjs/internal/observable/never.js"(exports2) {
    "use strict";
    Object.defineProperty(exports2, "__esModule", { value: true });
    exports2.never = exports2.NEVER = void 0;
    var Observable_1 = require_Observable();
    var noop_1 = require_noop();
    exports2.NEVER = new Observable_1.Observable(noop_1.noop);
    function never() {
      return exports2.NEVER;
    }
    exports2.never = never;
  }
});

// node_modules/rxjs/dist/cjs/internal/util/argsOrArgArray.js
var require_argsOrArgArray = __commonJS({
  "node_modules/rxjs/dist/cjs/internal/util/argsOrArgArray.js"(exports2) {
    "use strict";
    Object.defineProperty(exports2, "__esModule", { value: true });
    exports2.argsOrArgArray = void 0;
    var isArray2 = Array.isArray;
    function argsOrArgArray(args) {
      return args.length === 1 && isArray2(args[0]) ? args[0] : args;
    }
    exports2.argsOrArgArray = argsOrArgArray;
  }
});

// node_modules/rxjs/dist/cjs/internal/observable/onErrorResumeNext.js
var require_onErrorResumeNext = __commonJS({
  "node_modules/rxjs/dist/cjs/internal/observable/onErrorResumeNext.js"(exports2) {
    "use strict";
    Object.defineProperty(exports2, "__esModule", { value: true });
    exports2.onErrorResumeNext = void 0;
    var Observable_1 = require_Observable();
    var argsOrArgArray_1 = require_argsOrArgArray();
    var OperatorSubscriber_1 = require_OperatorSubscriber();
    var noop_1 = require_noop();
    var innerFrom_1 = require_innerFrom();
    function onErrorResumeNext() {
      var sources3 = [];
      for (var _i = 0; _i < arguments.length; _i++) {
        sources3[_i] = arguments[_i];
      }
      var nextSources = argsOrArgArray_1.argsOrArgArray(sources3);
      return new Observable_1.Observable(function(subscriber) {
        var sourceIndex = 0;
        var subscribeNext = function() {
          if (sourceIndex < nextSources.length) {
            var nextSource = void 0;
            try {
              nextSource = innerFrom_1.innerFrom(nextSources[sourceIndex++]);
            } catch (err) {
              subscribeNext();
              return;
            }
            var innerSubscriber = new OperatorSubscriber_1.OperatorSubscriber(subscriber, void 0, noop_1.noop, noop_1.noop);
            nextSource.subscribe(innerSubscriber);
            innerSubscriber.add(subscribeNext);
          } else {
            subscriber.complete();
          }
        };
        subscribeNext();
      });
    }
    exports2.onErrorResumeNext = onErrorResumeNext;
  }
});

// node_modules/rxjs/dist/cjs/internal/observable/pairs.js
var require_pairs = __commonJS({
  "node_modules/rxjs/dist/cjs/internal/observable/pairs.js"(exports2) {
    "use strict";
    Object.defineProperty(exports2, "__esModule", { value: true });
    exports2.pairs = void 0;
    var from_1 = require_from();
    function pairs(obj, scheduler) {
      return from_1.from(Object.entries(obj), scheduler);
    }
    exports2.pairs = pairs;
  }
});

// node_modules/rxjs/dist/cjs/internal/util/not.js
var require_not = __commonJS({
  "node_modules/rxjs/dist/cjs/internal/util/not.js"(exports2) {
    "use strict";
    Object.defineProperty(exports2, "__esModule", { value: true });
    exports2.not = void 0;
    function not(pred, thisArg) {
      return function(value, index) {
        return !pred.call(thisArg, value, index);
      };
    }
    exports2.not = not;
  }
});

// node_modules/rxjs/dist/cjs/internal/operators/filter.js
var require_filter = __commonJS({
  "node_modules/rxjs/dist/cjs/internal/operators/filter.js"(exports2) {
    "use strict";
    Object.defineProperty(exports2, "__esModule", { value: true });
    exports2.filter = void 0;
    var lift_1 = require_lift();
    var OperatorSubscriber_1 = require_OperatorSubscriber();
    function filter2(predicate, thisArg) {
      return lift_1.operate(function(source, subscriber) {
        var index = 0;
        source.subscribe(OperatorSubscriber_1.createOperatorSubscriber(subscriber, function(value) {
          return predicate.call(thisArg, value, index++) && subscriber.next(value);
        }));
      });
    }
    exports2.filter = filter2;
  }
});

// node_modules/rxjs/dist/cjs/internal/observable/partition.js
var require_partition = __commonJS({
  "node_modules/rxjs/dist/cjs/internal/observable/partition.js"(exports2) {
    "use strict";
    Object.defineProperty(exports2, "__esModule", { value: true });
    exports2.partition = void 0;
    var not_1 = require_not();
    var filter_1 = require_filter();
    var innerFrom_1 = require_innerFrom();
    function partition(source, predicate, thisArg) {
      return [filter_1.filter(predicate, thisArg)(innerFrom_1.innerFrom(source)), filter_1.filter(not_1.not(predicate, thisArg))(innerFrom_1.innerFrom(source))];
    }
    exports2.partition = partition;
  }
});

// node_modules/rxjs/dist/cjs/internal/observable/race.js
var require_race = __commonJS({
  "node_modules/rxjs/dist/cjs/internal/observable/race.js"(exports2) {
    "use strict";
    Object.defineProperty(exports2, "__esModule", { value: true });
    exports2.raceInit = exports2.race = void 0;
    var Observable_1 = require_Observable();
    var innerFrom_1 = require_innerFrom();
    var argsOrArgArray_1 = require_argsOrArgArray();
    var OperatorSubscriber_1 = require_OperatorSubscriber();
    function race() {
      var sources3 = [];
      for (var _i = 0; _i < arguments.length; _i++) {
        sources3[_i] = arguments[_i];
      }
      sources3 = argsOrArgArray_1.argsOrArgArray(sources3);
      return sources3.length === 1 ? innerFrom_1.innerFrom(sources3[0]) : new Observable_1.Observable(raceInit(sources3));
    }
    exports2.race = race;
    function raceInit(sources3) {
      return function(subscriber) {
        var subscriptions = [];
        var _loop_1 = function(i2) {
          subscriptions.push(innerFrom_1.innerFrom(sources3[i2]).subscribe(OperatorSubscriber_1.createOperatorSubscriber(subscriber, function(value) {
            if (subscriptions) {
              for (var s = 0; s < subscriptions.length; s++) {
                s !== i2 && subscriptions[s].unsubscribe();
              }
              subscriptions = null;
            }
            subscriber.next(value);
          })));
        };
        for (var i = 0; subscriptions && !subscriber.closed && i < sources3.length; i++) {
          _loop_1(i);
        }
      };
    }
    exports2.raceInit = raceInit;
  }
});

// node_modules/rxjs/dist/cjs/internal/observable/range.js
var require_range = __commonJS({
  "node_modules/rxjs/dist/cjs/internal/observable/range.js"(exports2) {
    "use strict";
    Object.defineProperty(exports2, "__esModule", { value: true });
    exports2.range = void 0;
    var Observable_1 = require_Observable();
    var empty_1 = require_empty();
    function range2(start, count, scheduler) {
      if (count == null) {
        count = start;
        start = 0;
      }
      if (count <= 0) {
        return empty_1.EMPTY;
      }
      var end = count + start;
      return new Observable_1.Observable(scheduler ? function(subscriber) {
        var n = start;
        return scheduler.schedule(function() {
          if (n < end) {
            subscriber.next(n++);
            this.schedule();
          } else {
            subscriber.complete();
          }
        });
      } : function(subscriber) {
        var n = start;
        while (n < end && !subscriber.closed) {
          subscriber.next(n++);
        }
        subscriber.complete();
      });
    }
    exports2.range = range2;
  }
});

// node_modules/rxjs/dist/cjs/internal/observable/using.js
var require_using = __commonJS({
  "node_modules/rxjs/dist/cjs/internal/observable/using.js"(exports2) {
    "use strict";
    Object.defineProperty(exports2, "__esModule", { value: true });
    exports2.using = void 0;
    var Observable_1 = require_Observable();
    var innerFrom_1 = require_innerFrom();
    var empty_1 = require_empty();
    function using(resourceFactory, observableFactory) {
      return new Observable_1.Observable(function(subscriber) {
        var resource = resourceFactory();
        var result = observableFactory(resource);
        var source = result ? innerFrom_1.innerFrom(result) : empty_1.EMPTY;
        source.subscribe(subscriber);
        return function() {
          if (resource) {
            resource.unsubscribe();
          }
        };
      });
    }
    exports2.using = using;
  }
});

// node_modules/rxjs/dist/cjs/internal/observable/zip.js
var require_zip = __commonJS({
  "node_modules/rxjs/dist/cjs/internal/observable/zip.js"(exports2) {
    "use strict";
    var __read = exports2 && exports2.__read || function(o, n) {
      var m = typeof Symbol === "function" && o[Symbol.iterator];
      if (!m) return o;
      var i = m.call(o), r, ar = [], e;
      try {
        while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);
      } catch (error) {
        e = { error };
      } finally {
        try {
          if (r && !r.done && (m = i["return"])) m.call(i);
        } finally {
          if (e) throw e.error;
        }
      }
      return ar;
    };
    var __spreadArray = exports2 && exports2.__spreadArray || function(to, from) {
      for (var i = 0, il = from.length, j = to.length; i < il; i++, j++)
        to[j] = from[i];
      return to;
    };
    Object.defineProperty(exports2, "__esModule", { value: true });
    exports2.zip = void 0;
    var Observable_1 = require_Observable();
    var innerFrom_1 = require_innerFrom();
    var argsOrArgArray_1 = require_argsOrArgArray();
    var empty_1 = require_empty();
    var OperatorSubscriber_1 = require_OperatorSubscriber();
    var args_1 = require_args();
    function zip() {
      var args = [];
      for (var _i = 0; _i < arguments.length; _i++) {
        args[_i] = arguments[_i];
      }
      var resultSelector = args_1.popResultSelector(args);
      var sources3 = argsOrArgArray_1.argsOrArgArray(args);
      return sources3.length ? new Observable_1.Observable(function(subscriber) {
        var buffers = sources3.map(function() {
          return [];
        });
        var completed = sources3.map(function() {
          return false;
        });
        subscriber.add(function() {
          buffers = completed = null;
        });
        var _loop_1 = function(sourceIndex2) {
          innerFrom_1.innerFrom(sources3[sourceIndex2]).subscribe(OperatorSubscriber_1.createOperatorSubscriber(subscriber, function(value) {
            buffers[sourceIndex2].push(value);
            if (buffers.every(function(buffer) {
              return buffer.length;
            })) {
              var result = buffers.map(function(buffer) {
                return buffer.shift();
              });
              subscriber.next(resultSelector ? resultSelector.apply(void 0, __spreadArray([], __read(result))) : result);
              if (buffers.some(function(buffer, i) {
                return !buffer.length && completed[i];
              })) {
                subscriber.complete();
              }
            }
          }, function() {
            completed[sourceIndex2] = true;
            !buffers[sourceIndex2].length && subscriber.complete();
          }));
        };
        for (var sourceIndex = 0; !subscriber.closed && sourceIndex < sources3.length; sourceIndex++) {
          _loop_1(sourceIndex);
        }
        return function() {
          buffers = completed = null;
        };
      }) : empty_1.EMPTY;
    }
    exports2.zip = zip;
  }
});

// node_modules/rxjs/dist/cjs/internal/types.js
var require_types = __commonJS({
  "node_modules/rxjs/dist/cjs/internal/types.js"(exports2) {
    "use strict";
    Object.defineProperty(exports2, "__esModule", { value: true });
  }
});

// node_modules/rxjs/dist/cjs/internal/operators/audit.js
var require_audit = __commonJS({
  "node_modules/rxjs/dist/cjs/internal/operators/audit.js"(exports2) {
    "use strict";
    Object.defineProperty(exports2, "__esModule", { value: true });
    exports2.audit = void 0;
    var lift_1 = require_lift();
    var innerFrom_1 = require_innerFrom();
    var OperatorSubscriber_1 = require_OperatorSubscriber();
    function audit(durationSelector) {
      return lift_1.operate(function(source, subscriber) {
        var hasValue = false;
        var lastValue = null;
        var durationSubscriber = null;
        var isComplete = false;
        var endDuration = function() {
          durationSubscriber === null || durationSubscriber === void 0 ? void 0 : durationSubscriber.unsubscribe();
          durationSubscriber = null;
          if (hasValue) {
            hasValue = false;
            var value = lastValue;
            lastValue = null;
            subscriber.next(value);
          }
          isComplete && subscriber.complete();
        };
        var cleanupDuration = function() {
          durationSubscriber = null;
          isComplete && subscriber.complete();
        };
        source.subscribe(OperatorSubscriber_1.createOperatorSubscriber(subscriber, function(value) {
          hasValue = true;
          lastValue = value;
          if (!durationSubscriber) {
            innerFrom_1.innerFrom(durationSelector(value)).subscribe(durationSubscriber = OperatorSubscriber_1.createOperatorSubscriber(subscriber, endDuration, cleanupDuration));
          }
        }, function() {
          isComplete = true;
          (!hasValue || !durationSubscriber || durationSubscriber.closed) && subscriber.complete();
        }));
      });
    }
    exports2.audit = audit;
  }
});

// node_modules/rxjs/dist/cjs/internal/operators/auditTime.js
var require_auditTime = __commonJS({
  "node_modules/rxjs/dist/cjs/internal/operators/auditTime.js"(exports2) {
    "use strict";
    Object.defineProperty(exports2, "__esModule", { value: true });
    exports2.auditTime = void 0;
    var async_1 = require_async();
    var audit_1 = require_audit();
    var timer_1 = require_timer();
    function auditTime(duration, scheduler) {
      if (scheduler === void 0) {
        scheduler = async_1.asyncScheduler;
      }
      return audit_1.audit(function() {
        return timer_1.timer(duration, scheduler);
      });
    }
    exports2.auditTime = auditTime;
  }
});

// node_modules/rxjs/dist/cjs/internal/operators/buffer.js
var require_buffer = __commonJS({
  "node_modules/rxjs/dist/cjs/internal/operators/buffer.js"(exports2) {
    "use strict";
    Object.defineProperty(exports2, "__esModule", { value: true });
    exports2.buffer = void 0;
    var lift_1 = require_lift();
    var noop_1 = require_noop();
    var OperatorSubscriber_1 = require_OperatorSubscriber();
    var innerFrom_1 = require_innerFrom();
    function buffer(closingNotifier) {
      return lift_1.operate(function(source, subscriber) {
        var currentBuffer = [];
        source.subscribe(OperatorSubscriber_1.createOperatorSubscriber(subscriber, function(value) {
          return currentBuffer.push(value);
        }, function() {
          subscriber.next(currentBuffer);
          subscriber.complete();
        }));
        innerFrom_1.innerFrom(closingNotifier).subscribe(OperatorSubscriber_1.createOperatorSubscriber(subscriber, function() {
          var b = currentBuffer;
          currentBuffer = [];
          subscriber.next(b);
        }, noop_1.noop));
        return function() {
          currentBuffer = null;
        };
      });
    }
    exports2.buffer = buffer;
  }
});

// node_modules/rxjs/dist/cjs/internal/operators/bufferCount.js
var require_bufferCount = __commonJS({
  "node_modules/rxjs/dist/cjs/internal/operators/bufferCount.js"(exports2) {
    "use strict";
    var __values = exports2 && exports2.__values || function(o) {
      var s = typeof Symbol === "function" && Symbol.iterator, m = s && o[s], i = 0;
      if (m) return m.call(o);
      if (o && typeof o.length === "number") return {
        next: function() {
          if (o && i >= o.length) o = void 0;
          return { value: o && o[i++], done: !o };
        }
      };
      throw new TypeError(s ? "Object is not iterable." : "Symbol.iterator is not defined.");
    };
    Object.defineProperty(exports2, "__esModule", { value: true });
    exports2.bufferCount = void 0;
    var lift_1 = require_lift();
    var OperatorSubscriber_1 = require_OperatorSubscriber();
    var arrRemove_1 = require_arrRemove();
    function bufferCount(bufferSize, startBufferEvery) {
      if (startBufferEvery === void 0) {
        startBufferEvery = null;
      }
      startBufferEvery = startBufferEvery !== null && startBufferEvery !== void 0 ? startBufferEvery : bufferSize;
      return lift_1.operate(function(source, subscriber) {
        var buffers = [];
        var count = 0;
        source.subscribe(OperatorSubscriber_1.createOperatorSubscriber(subscriber, function(value) {
          var e_1, _a2, e_2, _b;
          var toEmit = null;
          if (count++ % startBufferEvery === 0) {
            buffers.push([]);
          }
          try {
            for (var buffers_1 = __values(buffers), buffers_1_1 = buffers_1.next(); !buffers_1_1.done; buffers_1_1 = buffers_1.next()) {
              var buffer = buffers_1_1.value;
              buffer.push(value);
              if (bufferSize <= buffer.length) {
                toEmit = toEmit !== null && toEmit !== void 0 ? toEmit : [];
                toEmit.push(buffer);
              }
            }
          } catch (e_1_1) {
            e_1 = { error: e_1_1 };
          } finally {
            try {
              if (buffers_1_1 && !buffers_1_1.done && (_a2 = buffers_1.return)) _a2.call(buffers_1);
            } finally {
              if (e_1) throw e_1.error;
            }
          }
          if (toEmit) {
            try {
              for (var toEmit_1 = __values(toEmit), toEmit_1_1 = toEmit_1.next(); !toEmit_1_1.done; toEmit_1_1 = toEmit_1.next()) {
                var buffer = toEmit_1_1.value;
                arrRemove_1.arrRemove(buffers, buffer);
                subscriber.next(buffer);
              }
            } catch (e_2_1) {
              e_2 = { error: e_2_1 };
            } finally {
              try {
                if (toEmit_1_1 && !toEmit_1_1.done && (_b = toEmit_1.return)) _b.call(toEmit_1);
              } finally {
                if (e_2) throw e_2.error;
              }
            }
          }
        }, function() {
          var e_3, _a2;
          try {
            for (var buffers_2 = __values(buffers), buffers_2_1 = buffers_2.next(); !buffers_2_1.done; buffers_2_1 = buffers_2.next()) {
              var buffer = buffers_2_1.value;
              subscriber.next(buffer);
            }
          } catch (e_3_1) {
            e_3 = { error: e_3_1 };
          } finally {
            try {
              if (buffers_2_1 && !buffers_2_1.done && (_a2 = buffers_2.return)) _a2.call(buffers_2);
            } finally {
              if (e_3) throw e_3.error;
            }
          }
          subscriber.complete();
        }, void 0, function() {
          buffers = null;
        }));
      });
    }
    exports2.bufferCount = bufferCount;
  }
});

// node_modules/rxjs/dist/cjs/internal/operators/bufferTime.js
var require_bufferTime = __commonJS({
  "node_modules/rxjs/dist/cjs/internal/operators/bufferTime.js"(exports2) {
    "use strict";
    var __values = exports2 && exports2.__values || function(o) {
      var s = typeof Symbol === "function" && Symbol.iterator, m = s && o[s], i = 0;
      if (m) return m.call(o);
      if (o && typeof o.length === "number") return {
        next: function() {
          if (o && i >= o.length) o = void 0;
          return { value: o && o[i++], done: !o };
        }
      };
      throw new TypeError(s ? "Object is not iterable." : "Symbol.iterator is not defined.");
    };
    Object.defineProperty(exports2, "__esModule", { value: true });
    exports2.bufferTime = void 0;
    var Subscription_1 = require_Subscription();
    var lift_1 = require_lift();
    var OperatorSubscriber_1 = require_OperatorSubscriber();
    var arrRemove_1 = require_arrRemove();
    var async_1 = require_async();
    var args_1 = require_args();
    var executeSchedule_1 = require_executeSchedule();
    function bufferTime(bufferTimeSpan) {
      var _a2, _b;
      var otherArgs = [];
      for (var _i = 1; _i < arguments.length; _i++) {
        otherArgs[_i - 1] = arguments[_i];
      }
      var scheduler = (_a2 = args_1.popScheduler(otherArgs)) !== null && _a2 !== void 0 ? _a2 : async_1.asyncScheduler;
      var bufferCreationInterval = (_b = otherArgs[0]) !== null && _b !== void 0 ? _b : null;
      var maxBufferSize = otherArgs[1] || Infinity;
      return lift_1.operate(function(source, subscriber) {
        var bufferRecords = [];
        var restartOnEmit = false;
        var emit = function(record) {
          var buffer = record.buffer, subs = record.subs;
          subs.unsubscribe();
          arrRemove_1.arrRemove(bufferRecords, record);
          subscriber.next(buffer);
          restartOnEmit && startBuffer();
        };
        var startBuffer = function() {
          if (bufferRecords) {
            var subs = new Subscription_1.Subscription();
            subscriber.add(subs);
            var buffer = [];
            var record_1 = {
              buffer,
              subs
            };
            bufferRecords.push(record_1);
            executeSchedule_1.executeSchedule(subs, scheduler, function() {
              return emit(record_1);
            }, bufferTimeSpan);
          }
        };
        if (bufferCreationInterval !== null && bufferCreationInterval >= 0) {
          executeSchedule_1.executeSchedule(subscriber, scheduler, startBuffer, bufferCreationInterval, true);
        } else {
          restartOnEmit = true;
        }
        startBuffer();
        var bufferTimeSubscriber = OperatorSubscriber_1.createOperatorSubscriber(subscriber, function(value) {
          var e_1, _a3;
          var recordsCopy = bufferRecords.slice();
          try {
            for (var recordsCopy_1 = __values(recordsCopy), recordsCopy_1_1 = recordsCopy_1.next(); !recordsCopy_1_1.done; recordsCopy_1_1 = recordsCopy_1.next()) {
              var record = recordsCopy_1_1.value;
              var buffer = record.buffer;
              buffer.push(value);
              maxBufferSize <= buffer.length && emit(record);
            }
          } catch (e_1_1) {
            e_1 = { error: e_1_1 };
          } finally {
            try {
              if (recordsCopy_1_1 && !recordsCopy_1_1.done && (_a3 = recordsCopy_1.return)) _a3.call(recordsCopy_1);
            } finally {
              if (e_1) throw e_1.error;
            }
          }
        }, function() {
          while (bufferRecords === null || bufferRecords === void 0 ? void 0 : bufferRecords.length) {
            subscriber.next(bufferRecords.shift().buffer);
          }
          bufferTimeSubscriber === null || bufferTimeSubscriber === void 0 ? void 0 : bufferTimeSubscriber.unsubscribe();
          subscriber.complete();
          subscriber.unsubscribe();
        }, void 0, function() {
          return bufferRecords = null;
        });
        source.subscribe(bufferTimeSubscriber);
      });
    }
    exports2.bufferTime = bufferTime;
  }
});

// node_modules/rxjs/dist/cjs/internal/operators/bufferToggle.js
var require_bufferToggle = __commonJS({
  "node_modules/rxjs/dist/cjs/internal/operators/bufferToggle.js"(exports2) {
    "use strict";
    var __values = exports2 && exports2.__values || function(o) {
      var s = typeof Symbol === "function" && Symbol.iterator, m = s && o[s], i = 0;
      if (m) return m.call(o);
      if (o && typeof o.length === "number") return {
        next: function() {
          if (o && i >= o.length) o = void 0;
          return { value: o && o[i++], done: !o };
        }
      };
      throw new TypeError(s ? "Object is not iterable." : "Symbol.iterator is not defined.");
    };
    Object.defineProperty(exports2, "__esModule", { value: true });
    exports2.bufferToggle = void 0;
    var Subscription_1 = require_Subscription();
    var lift_1 = require_lift();
    var innerFrom_1 = require_innerFrom();
    var OperatorSubscriber_1 = require_OperatorSubscriber();
    var noop_1 = require_noop();
    var arrRemove_1 = require_arrRemove();
    function bufferToggle(openings, closingSelector) {
      return lift_1.operate(function(source, subscriber) {
        var buffers = [];
        innerFrom_1.innerFrom(openings).subscribe(OperatorSubscriber_1.createOperatorSubscriber(subscriber, function(openValue) {
          var buffer = [];
          buffers.push(buffer);
          var closingSubscription = new Subscription_1.Subscription();
          var emitBuffer = function() {
            arrRemove_1.arrRemove(buffers, buffer);
            subscriber.next(buffer);
            closingSubscription.unsubscribe();
          };
          closingSubscription.add(innerFrom_1.innerFrom(closingSelector(openValue)).subscribe(OperatorSubscriber_1.createOperatorSubscriber(subscriber, emitBuffer, noop_1.noop)));
        }, noop_1.noop));
        source.subscribe(OperatorSubscriber_1.createOperatorSubscriber(subscriber, function(value) {
          var e_1, _a2;
          try {
            for (var buffers_1 = __values(buffers), buffers_1_1 = buffers_1.next(); !buffers_1_1.done; buffers_1_1 = buffers_1.next()) {
              var buffer = buffers_1_1.value;
              buffer.push(value);
            }
          } catch (e_1_1) {
            e_1 = { error: e_1_1 };
          } finally {
            try {
              if (buffers_1_1 && !buffers_1_1.done && (_a2 = buffers_1.return)) _a2.call(buffers_1);
            } finally {
              if (e_1) throw e_1.error;
            }
          }
        }, function() {
          while (buffers.length > 0) {
            subscriber.next(buffers.shift());
          }
          subscriber.complete();
        }));
      });
    }
    exports2.bufferToggle = bufferToggle;
  }
});

// node_modules/rxjs/dist/cjs/internal/operators/bufferWhen.js
var require_bufferWhen = __commonJS({
  "node_modules/rxjs/dist/cjs/internal/operators/bufferWhen.js"(exports2) {
    "use strict";
    Object.defineProperty(exports2, "__esModule", { value: true });
    exports2.bufferWhen = void 0;
    var lift_1 = require_lift();
    var noop_1 = require_noop();
    var OperatorSubscriber_1 = require_OperatorSubscriber();
    var innerFrom_1 = require_innerFrom();
    function bufferWhen(closingSelector) {
      return lift_1.operate(function(source, subscriber) {
        var buffer = null;
        var closingSubscriber = null;
        var openBuffer = function() {
          closingSubscriber === null || closingSubscriber === void 0 ? void 0 : closingSubscriber.unsubscribe();
          var b = buffer;
          buffer = [];
          b && subscriber.next(b);
          innerFrom_1.innerFrom(closingSelector()).subscribe(closingSubscriber = OperatorSubscriber_1.createOperatorSubscriber(subscriber, openBuffer, noop_1.noop));
        };
        openBuffer();
        source.subscribe(OperatorSubscriber_1.createOperatorSubscriber(subscriber, function(value) {
          return buffer === null || buffer === void 0 ? void 0 : buffer.push(value);
        }, function() {
          buffer && subscriber.next(buffer);
          subscriber.complete();
        }, void 0, function() {
          return buffer = closingSubscriber = null;
        }));
      });
    }
    exports2.bufferWhen = bufferWhen;
  }
});

// node_modules/rxjs/dist/cjs/internal/operators/catchError.js
var require_catchError = __commonJS({
  "node_modules/rxjs/dist/cjs/internal/operators/catchError.js"(exports2) {
    "use strict";
    Object.defineProperty(exports2, "__esModule", { value: true });
    exports2.catchError = void 0;
    var innerFrom_1 = require_innerFrom();
    var OperatorSubscriber_1 = require_OperatorSubscriber();
    var lift_1 = require_lift();
    function catchError(selector) {
      return lift_1.operate(function(source, subscriber) {
        var innerSub = null;
        var syncUnsub = false;
        var handledResult;
        innerSub = source.subscribe(OperatorSubscriber_1.createOperatorSubscriber(subscriber, void 0, void 0, function(err) {
          handledResult = innerFrom_1.innerFrom(selector(err, catchError(selector)(source)));
          if (innerSub) {
            innerSub.unsubscribe();
            innerSub = null;
            handledResult.subscribe(subscriber);
          } else {
            syncUnsub = true;
          }
        }));
        if (syncUnsub) {
          innerSub.unsubscribe();
          innerSub = null;
          handledResult.subscribe(subscriber);
        }
      });
    }
    exports2.catchError = catchError;
  }
});

// node_modules/rxjs/dist/cjs/internal/operators/scanInternals.js
var require_scanInternals = __commonJS({
  "node_modules/rxjs/dist/cjs/internal/operators/scanInternals.js"(exports2) {
    "use strict";
    Object.defineProperty(exports2, "__esModule", { value: true });
    exports2.scanInternals = void 0;
    var OperatorSubscriber_1 = require_OperatorSubscriber();
    function scanInternals(accumulator, seed, hasSeed, emitOnNext, emitBeforeComplete) {
      return function(source, subscriber) {
        var hasState = hasSeed;
        var state = seed;
        var index = 0;
        source.subscribe(OperatorSubscriber_1.createOperatorSubscriber(subscriber, function(value) {
          var i = index++;
          state = hasState ? accumulator(state, value, i) : (hasState = true, value);
          emitOnNext && subscriber.next(state);
        }, emitBeforeComplete && (function() {
          hasState && subscriber.next(state);
          subscriber.complete();
        })));
      };
    }
    exports2.scanInternals = scanInternals;
  }
});

// node_modules/rxjs/dist/cjs/internal/operators/reduce.js
var require_reduce = __commonJS({
  "node_modules/rxjs/dist/cjs/internal/operators/reduce.js"(exports2) {
    "use strict";
    Object.defineProperty(exports2, "__esModule", { value: true });
    exports2.reduce = void 0;
    var scanInternals_1 = require_scanInternals();
    var lift_1 = require_lift();
    function reduce(accumulator, seed) {
      return lift_1.operate(scanInternals_1.scanInternals(accumulator, seed, arguments.length >= 2, false, true));
    }
    exports2.reduce = reduce;
  }
});

// node_modules/rxjs/dist/cjs/internal/operators/toArray.js
var require_toArray = __commonJS({
  "node_modules/rxjs/dist/cjs/internal/operators/toArray.js"(exports2) {
    "use strict";
    Object.defineProperty(exports2, "__esModule", { value: true });
    exports2.toArray = void 0;
    var reduce_1 = require_reduce();
    var lift_1 = require_lift();
    var arrReducer = function(arr, value) {
      return arr.push(value), arr;
    };
    function toArray() {
      return lift_1.operate(function(source, subscriber) {
        reduce_1.reduce(arrReducer, [])(source).subscribe(subscriber);
      });
    }
    exports2.toArray = toArray;
  }
});

// node_modules/rxjs/dist/cjs/internal/operators/joinAllInternals.js
var require_joinAllInternals = __commonJS({
  "node_modules/rxjs/dist/cjs/internal/operators/joinAllInternals.js"(exports2) {
    "use strict";
    Object.defineProperty(exports2, "__esModule", { value: true });
    exports2.joinAllInternals = void 0;
    var identity_1 = require_identity();
    var mapOneOrManyArgs_1 = require_mapOneOrManyArgs();
    var pipe_1 = require_pipe();
    var mergeMap_1 = require_mergeMap();
    var toArray_1 = require_toArray();
    function joinAllInternals(joinFn, project) {
      return pipe_1.pipe(toArray_1.toArray(), mergeMap_1.mergeMap(function(sources3) {
        return joinFn(sources3);
      }), project ? mapOneOrManyArgs_1.mapOneOrManyArgs(project) : identity_1.identity);
    }
    exports2.joinAllInternals = joinAllInternals;
  }
});

// node_modules/rxjs/dist/cjs/internal/operators/combineLatestAll.js
var require_combineLatestAll = __commonJS({
  "node_modules/rxjs/dist/cjs/internal/operators/combineLatestAll.js"(exports2) {
    "use strict";
    Object.defineProperty(exports2, "__esModule", { value: true });
    exports2.combineLatestAll = void 0;
    var combineLatest_1 = require_combineLatest();
    var joinAllInternals_1 = require_joinAllInternals();
    function combineLatestAll(project) {
      return joinAllInternals_1.joinAllInternals(combineLatest_1.combineLatest, project);
    }
    exports2.combineLatestAll = combineLatestAll;
  }
});

// node_modules/rxjs/dist/cjs/internal/operators/combineAll.js
var require_combineAll = __commonJS({
  "node_modules/rxjs/dist/cjs/internal/operators/combineAll.js"(exports2) {
    "use strict";
    Object.defineProperty(exports2, "__esModule", { value: true });
    exports2.combineAll = void 0;
    var combineLatestAll_1 = require_combineLatestAll();
    exports2.combineAll = combineLatestAll_1.combineLatestAll;
  }
});

// node_modules/rxjs/dist/cjs/internal/operators/combineLatest.js
var require_combineLatest2 = __commonJS({
  "node_modules/rxjs/dist/cjs/internal/operators/combineLatest.js"(exports2) {
    "use strict";
    var __read = exports2 && exports2.__read || function(o, n) {
      var m = typeof Symbol === "function" && o[Symbol.iterator];
      if (!m) return o;
      var i = m.call(o), r, ar = [], e;
      try {
        while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);
      } catch (error) {
        e = { error };
      } finally {
        try {
          if (r && !r.done && (m = i["return"])) m.call(i);
        } finally {
          if (e) throw e.error;
        }
      }
      return ar;
    };
    var __spreadArray = exports2 && exports2.__spreadArray || function(to, from) {
      for (var i = 0, il = from.length, j = to.length; i < il; i++, j++)
        to[j] = from[i];
      return to;
    };
    Object.defineProperty(exports2, "__esModule", { value: true });
    exports2.combineLatest = void 0;
    var combineLatest_1 = require_combineLatest();
    var lift_1 = require_lift();
    var argsOrArgArray_1 = require_argsOrArgArray();
    var mapOneOrManyArgs_1 = require_mapOneOrManyArgs();
    var pipe_1 = require_pipe();
    var args_1 = require_args();
    function combineLatest() {
      var args = [];
      for (var _i = 0; _i < arguments.length; _i++) {
        args[_i] = arguments[_i];
      }
      var resultSelector = args_1.popResultSelector(args);
      return resultSelector ? pipe_1.pipe(combineLatest.apply(void 0, __spreadArray([], __read(args))), mapOneOrManyArgs_1.mapOneOrManyArgs(resultSelector)) : lift_1.operate(function(source, subscriber) {
        combineLatest_1.combineLatestInit(__spreadArray([source], __read(argsOrArgArray_1.argsOrArgArray(args))))(subscriber);
      });
    }
    exports2.combineLatest = combineLatest;
  }
});

// node_modules/rxjs/dist/cjs/internal/operators/combineLatestWith.js
var require_combineLatestWith = __commonJS({
  "node_modules/rxjs/dist/cjs/internal/operators/combineLatestWith.js"(exports2) {
    "use strict";
    var __read = exports2 && exports2.__read || function(o, n) {
      var m = typeof Symbol === "function" && o[Symbol.iterator];
      if (!m) return o;
      var i = m.call(o), r, ar = [], e;
      try {
        while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);
      } catch (error) {
        e = { error };
      } finally {
        try {
          if (r && !r.done && (m = i["return"])) m.call(i);
        } finally {
          if (e) throw e.error;
        }
      }
      return ar;
    };
    var __spreadArray = exports2 && exports2.__spreadArray || function(to, from) {
      for (var i = 0, il = from.length, j = to.length; i < il; i++, j++)
        to[j] = from[i];
      return to;
    };
    Object.defineProperty(exports2, "__esModule", { value: true });
    exports2.combineLatestWith = void 0;
    var combineLatest_1 = require_combineLatest2();
    function combineLatestWith() {
      var otherSources = [];
      for (var _i = 0; _i < arguments.length; _i++) {
        otherSources[_i] = arguments[_i];
      }
      return combineLatest_1.combineLatest.apply(void 0, __spreadArray([], __read(otherSources)));
    }
    exports2.combineLatestWith = combineLatestWith;
  }
});

// node_modules/rxjs/dist/cjs/internal/operators/concatMap.js
var require_concatMap = __commonJS({
  "node_modules/rxjs/dist/cjs/internal/operators/concatMap.js"(exports2) {
    "use strict";
    Object.defineProperty(exports2, "__esModule", { value: true });
    exports2.concatMap = void 0;
    var mergeMap_1 = require_mergeMap();
    var isFunction_1 = require_isFunction();
    function concatMap(project, resultSelector) {
      return isFunction_1.isFunction(resultSelector) ? mergeMap_1.mergeMap(project, resultSelector, 1) : mergeMap_1.mergeMap(project, 1);
    }
    exports2.concatMap = concatMap;
  }
});

// node_modules/rxjs/dist/cjs/internal/operators/concatMapTo.js
var require_concatMapTo = __commonJS({
  "node_modules/rxjs/dist/cjs/internal/operators/concatMapTo.js"(exports2) {
    "use strict";
    Object.defineProperty(exports2, "__esModule", { value: true });
    exports2.concatMapTo = void 0;
    var concatMap_1 = require_concatMap();
    var isFunction_1 = require_isFunction();
    function concatMapTo(innerObservable, resultSelector) {
      return isFunction_1.isFunction(resultSelector) ? concatMap_1.concatMap(function() {
        return innerObservable;
      }, resultSelector) : concatMap_1.concatMap(function() {
        return innerObservable;
      });
    }
    exports2.concatMapTo = concatMapTo;
  }
});

// node_modules/rxjs/dist/cjs/internal/operators/concat.js
var require_concat2 = __commonJS({
  "node_modules/rxjs/dist/cjs/internal/operators/concat.js"(exports2) {
    "use strict";
    var __read = exports2 && exports2.__read || function(o, n) {
      var m = typeof Symbol === "function" && o[Symbol.iterator];
      if (!m) return o;
      var i = m.call(o), r, ar = [], e;
      try {
        while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);
      } catch (error) {
        e = { error };
      } finally {
        try {
          if (r && !r.done && (m = i["return"])) m.call(i);
        } finally {
          if (e) throw e.error;
        }
      }
      return ar;
    };
    var __spreadArray = exports2 && exports2.__spreadArray || function(to, from) {
      for (var i = 0, il = from.length, j = to.length; i < il; i++, j++)
        to[j] = from[i];
      return to;
    };
    Object.defineProperty(exports2, "__esModule", { value: true });
    exports2.concat = void 0;
    var lift_1 = require_lift();
    var concatAll_1 = require_concatAll();
    var args_1 = require_args();
    var from_1 = require_from();
    function concat() {
      var args = [];
      for (var _i = 0; _i < arguments.length; _i++) {
        args[_i] = arguments[_i];
      }
      var scheduler = args_1.popScheduler(args);
      return lift_1.operate(function(source, subscriber) {
        concatAll_1.concatAll()(from_1.from(__spreadArray([source], __read(args)), scheduler)).subscribe(subscriber);
      });
    }
    exports2.concat = concat;
  }
});

// node_modules/rxjs/dist/cjs/internal/operators/concatWith.js
var require_concatWith = __commonJS({
  "node_modules/rxjs/dist/cjs/internal/operators/concatWith.js"(exports2) {
    "use strict";
    var __read = exports2 && exports2.__read || function(o, n) {
      var m = typeof Symbol === "function" && o[Symbol.iterator];
      if (!m) return o;
      var i = m.call(o), r, ar = [], e;
      try {
        while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);
      } catch (error) {
        e = { error };
      } finally {
        try {
          if (r && !r.done && (m = i["return"])) m.call(i);
        } finally {
          if (e) throw e.error;
        }
      }
      return ar;
    };
    var __spreadArray = exports2 && exports2.__spreadArray || function(to, from) {
      for (var i = 0, il = from.length, j = to.length; i < il; i++, j++)
        to[j] = from[i];
      return to;
    };
    Object.defineProperty(exports2, "__esModule", { value: true });
    exports2.concatWith = void 0;
    var concat_1 = require_concat2();
    function concatWith() {
      var otherSources = [];
      for (var _i = 0; _i < arguments.length; _i++) {
        otherSources[_i] = arguments[_i];
      }
      return concat_1.concat.apply(void 0, __spreadArray([], __read(otherSources)));
    }
    exports2.concatWith = concatWith;
  }
});

// node_modules/rxjs/dist/cjs/internal/observable/fromSubscribable.js
var require_fromSubscribable = __commonJS({
  "node_modules/rxjs/dist/cjs/internal/observable/fromSubscribable.js"(exports2) {
    "use strict";
    Object.defineProperty(exports2, "__esModule", { value: true });
    exports2.fromSubscribable = void 0;
    var Observable_1 = require_Observable();
    function fromSubscribable(subscribable) {
      return new Observable_1.Observable(function(subscriber) {
        return subscribable.subscribe(subscriber);
      });
    }
    exports2.fromSubscribable = fromSubscribable;
  }
});

// node_modules/rxjs/dist/cjs/internal/operators/connect.js
var require_connect = __commonJS({
  "node_modules/rxjs/dist/cjs/internal/operators/connect.js"(exports2) {
    "use strict";
    Object.defineProperty(exports2, "__esModule", { value: true });
    exports2.connect = void 0;
    var Subject_1 = require_Subject();
    var innerFrom_1 = require_innerFrom();
    var lift_1 = require_lift();
    var fromSubscribable_1 = require_fromSubscribable();
    var DEFAULT_CONFIG = {
      connector: function() {
        return new Subject_1.Subject();
      }
    };
    function connect(selector, config) {
      if (config === void 0) {
        config = DEFAULT_CONFIG;
      }
      var connector = config.connector;
      return lift_1.operate(function(source, subscriber) {
        var subject = connector();
        innerFrom_1.innerFrom(selector(fromSubscribable_1.fromSubscribable(subject))).subscribe(subscriber);
        subscriber.add(source.subscribe(subject));
      });
    }
    exports2.connect = connect;
  }
});

// node_modules/rxjs/dist/cjs/internal/operators/count.js
var require_count = __commonJS({
  "node_modules/rxjs/dist/cjs/internal/operators/count.js"(exports2) {
    "use strict";
    Object.defineProperty(exports2, "__esModule", { value: true });
    exports2.count = void 0;
    var reduce_1 = require_reduce();
    function count(predicate) {
      return reduce_1.reduce(function(total, value, i) {
        return !predicate || predicate(value, i) ? total + 1 : total;
      }, 0);
    }
    exports2.count = count;
  }
});

// node_modules/rxjs/dist/cjs/internal/operators/debounce.js
var require_debounce = __commonJS({
  "node_modules/rxjs/dist/cjs/internal/operators/debounce.js"(exports2) {
    "use strict";
    Object.defineProperty(exports2, "__esModule", { value: true });
    exports2.debounce = void 0;
    var lift_1 = require_lift();
    var noop_1 = require_noop();
    var OperatorSubscriber_1 = require_OperatorSubscriber();
    var innerFrom_1 = require_innerFrom();
    function debounce(durationSelector) {
      return lift_1.operate(function(source, subscriber) {
        var hasValue = false;
        var lastValue = null;
        var durationSubscriber = null;
        var emit = function() {
          durationSubscriber === null || durationSubscriber === void 0 ? void 0 : durationSubscriber.unsubscribe();
          durationSubscriber = null;
          if (hasValue) {
            hasValue = false;
            var value = lastValue;
            lastValue = null;
            subscriber.next(value);
          }
        };
        source.subscribe(OperatorSubscriber_1.createOperatorSubscriber(subscriber, function(value) {
          durationSubscriber === null || durationSubscriber === void 0 ? void 0 : durationSubscriber.unsubscribe();
          hasValue = true;
          lastValue = value;
          durationSubscriber = OperatorSubscriber_1.createOperatorSubscriber(subscriber, emit, noop_1.noop);
          innerFrom_1.innerFrom(durationSelector(value)).subscribe(durationSubscriber);
        }, function() {
          emit();
          subscriber.complete();
        }, void 0, function() {
          lastValue = durationSubscriber = null;
        }));
      });
    }
    exports2.debounce = debounce;
  }
});

// node_modules/rxjs/dist/cjs/internal/operators/debounceTime.js
var require_debounceTime = __commonJS({
  "node_modules/rxjs/dist/cjs/internal/operators/debounceTime.js"(exports2) {
    "use strict";
    Object.defineProperty(exports2, "__esModule", { value: true });
    exports2.debounceTime = void 0;
    var async_1 = require_async();
    var lift_1 = require_lift();
    var OperatorSubscriber_1 = require_OperatorSubscriber();
    function debounceTime(dueTime, scheduler) {
      if (scheduler === void 0) {
        scheduler = async_1.asyncScheduler;
      }
      return lift_1.operate(function(source, subscriber) {
        var activeTask = null;
        var lastValue = null;
        var lastTime = null;
        var emit = function() {
          if (activeTask) {
            activeTask.unsubscribe();
            activeTask = null;
            var value = lastValue;
            lastValue = null;
            subscriber.next(value);
          }
        };
        function emitWhenIdle() {
          var targetTime = lastTime + dueTime;
          var now = scheduler.now();
          if (now < targetTime) {
            activeTask = this.schedule(void 0, targetTime - now);
            subscriber.add(activeTask);
            return;
          }
          emit();
        }
        source.subscribe(OperatorSubscriber_1.createOperatorSubscriber(subscriber, function(value) {
          lastValue = value;
          lastTime = scheduler.now();
          if (!activeTask) {
            activeTask = scheduler.schedule(emitWhenIdle, dueTime);
            subscriber.add(activeTask);
          }
        }, function() {
          emit();
          subscriber.complete();
        }, void 0, function() {
          lastValue = activeTask = null;
        }));
      });
    }
    exports2.debounceTime = debounceTime;
  }
});

// node_modules/rxjs/dist/cjs/internal/operators/defaultIfEmpty.js
var require_defaultIfEmpty = __commonJS({
  "node_modules/rxjs/dist/cjs/internal/operators/defaultIfEmpty.js"(exports2) {
    "use strict";
    Object.defineProperty(exports2, "__esModule", { value: true });
    exports2.defaultIfEmpty = void 0;
    var lift_1 = require_lift();
    var OperatorSubscriber_1 = require_OperatorSubscriber();
    function defaultIfEmpty(defaultValue) {
      return lift_1.operate(function(source, subscriber) {
        var hasValue = false;
        source.subscribe(OperatorSubscriber_1.createOperatorSubscriber(subscriber, function(value) {
          hasValue = true;
          subscriber.next(value);
        }, function() {
          if (!hasValue) {
            subscriber.next(defaultValue);
          }
          subscriber.complete();
        }));
      });
    }
    exports2.defaultIfEmpty = defaultIfEmpty;
  }
});

// node_modules/rxjs/dist/cjs/internal/operators/take.js
var require_take = __commonJS({
  "node_modules/rxjs/dist/cjs/internal/operators/take.js"(exports2) {
    "use strict";
    Object.defineProperty(exports2, "__esModule", { value: true });
    exports2.take = void 0;
    var empty_1 = require_empty();
    var lift_1 = require_lift();
    var OperatorSubscriber_1 = require_OperatorSubscriber();
    function take(count) {
      return count <= 0 ? function() {
        return empty_1.EMPTY;
      } : lift_1.operate(function(source, subscriber) {
        var seen = 0;
        source.subscribe(OperatorSubscriber_1.createOperatorSubscriber(subscriber, function(value) {
          if (++seen <= count) {
            subscriber.next(value);
            if (count <= seen) {
              subscriber.complete();
            }
          }
        }));
      });
    }
    exports2.take = take;
  }
});

// node_modules/rxjs/dist/cjs/internal/operators/ignoreElements.js
var require_ignoreElements = __commonJS({
  "node_modules/rxjs/dist/cjs/internal/operators/ignoreElements.js"(exports2) {
    "use strict";
    Object.defineProperty(exports2, "__esModule", { value: true });
    exports2.ignoreElements = void 0;
    var lift_1 = require_lift();
    var OperatorSubscriber_1 = require_OperatorSubscriber();
    var noop_1 = require_noop();
    function ignoreElements() {
      return lift_1.operate(function(source, subscriber) {
        source.subscribe(OperatorSubscriber_1.createOperatorSubscriber(subscriber, noop_1.noop));
      });
    }
    exports2.ignoreElements = ignoreElements;
  }
});

// node_modules/rxjs/dist/cjs/internal/operators/mapTo.js
var require_mapTo = __commonJS({
  "node_modules/rxjs/dist/cjs/internal/operators/mapTo.js"(exports2) {
    "use strict";
    Object.defineProperty(exports2, "__esModule", { value: true });
    exports2.mapTo = void 0;
    var map_1 = require_map();
    function mapTo(value) {
      return map_1.map(function() {
        return value;
      });
    }
    exports2.mapTo = mapTo;
  }
});

// node_modules/rxjs/dist/cjs/internal/operators/delayWhen.js
var require_delayWhen = __commonJS({
  "node_modules/rxjs/dist/cjs/internal/operators/delayWhen.js"(exports2) {
    "use strict";
    Object.defineProperty(exports2, "__esModule", { value: true });
    exports2.delayWhen = void 0;
    var concat_1 = require_concat();
    var take_1 = require_take();
    var ignoreElements_1 = require_ignoreElements();
    var mapTo_1 = require_mapTo();
    var mergeMap_1 = require_mergeMap();
    var innerFrom_1 = require_innerFrom();
    function delayWhen(delayDurationSelector, subscriptionDelay) {
      if (subscriptionDelay) {
        return function(source) {
          return concat_1.concat(subscriptionDelay.pipe(take_1.take(1), ignoreElements_1.ignoreElements()), source.pipe(delayWhen(delayDurationSelector)));
        };
      }
      return mergeMap_1.mergeMap(function(value, index) {
        return innerFrom_1.innerFrom(delayDurationSelector(value, index)).pipe(take_1.take(1), mapTo_1.mapTo(value));
      });
    }
    exports2.delayWhen = delayWhen;
  }
});

// node_modules/rxjs/dist/cjs/internal/operators/delay.js
var require_delay = __commonJS({
  "node_modules/rxjs/dist/cjs/internal/operators/delay.js"(exports2) {
    "use strict";
    Object.defineProperty(exports2, "__esModule", { value: true });
    exports2.delay = void 0;
    var async_1 = require_async();
    var delayWhen_1 = require_delayWhen();
    var timer_1 = require_timer();
    function delay(due, scheduler) {
      if (scheduler === void 0) {
        scheduler = async_1.asyncScheduler;
      }
      var duration = timer_1.timer(due, scheduler);
      return delayWhen_1.delayWhen(function() {
        return duration;
      });
    }
    exports2.delay = delay;
  }
});

// node_modules/rxjs/dist/cjs/internal/operators/dematerialize.js
var require_dematerialize = __commonJS({
  "node_modules/rxjs/dist/cjs/internal/operators/dematerialize.js"(exports2) {
    "use strict";
    Object.defineProperty(exports2, "__esModule", { value: true });
    exports2.dematerialize = void 0;
    var Notification_1 = require_Notification();
    var lift_1 = require_lift();
    var OperatorSubscriber_1 = require_OperatorSubscriber();
    function dematerialize() {
      return lift_1.operate(function(source, subscriber) {
        source.subscribe(OperatorSubscriber_1.createOperatorSubscriber(subscriber, function(notification) {
          return Notification_1.observeNotification(notification, subscriber);
        }));
      });
    }
    exports2.dematerialize = dematerialize;
  }
});

// node_modules/rxjs/dist/cjs/internal/operators/distinct.js
var require_distinct = __commonJS({
  "node_modules/rxjs/dist/cjs/internal/operators/distinct.js"(exports2) {
    "use strict";
    Object.defineProperty(exports2, "__esModule", { value: true });
    exports2.distinct = void 0;
    var lift_1 = require_lift();
    var OperatorSubscriber_1 = require_OperatorSubscriber();
    var noop_1 = require_noop();
    var innerFrom_1 = require_innerFrom();
    function distinct(keySelector, flushes) {
      return lift_1.operate(function(source, subscriber) {
        var distinctKeys = /* @__PURE__ */ new Set();
        source.subscribe(OperatorSubscriber_1.createOperatorSubscriber(subscriber, function(value) {
          var key = keySelector ? keySelector(value) : value;
          if (!distinctKeys.has(key)) {
            distinctKeys.add(key);
            subscriber.next(value);
          }
        }));
        flushes && innerFrom_1.innerFrom(flushes).subscribe(OperatorSubscriber_1.createOperatorSubscriber(subscriber, function() {
          return distinctKeys.clear();
        }, noop_1.noop));
      });
    }
    exports2.distinct = distinct;
  }
});

// node_modules/rxjs/dist/cjs/internal/operators/distinctUntilChanged.js
var require_distinctUntilChanged = __commonJS({
  "node_modules/rxjs/dist/cjs/internal/operators/distinctUntilChanged.js"(exports2) {
    "use strict";
    Object.defineProperty(exports2, "__esModule", { value: true });
    exports2.distinctUntilChanged = void 0;
    var identity_1 = require_identity();
    var lift_1 = require_lift();
    var OperatorSubscriber_1 = require_OperatorSubscriber();
    function distinctUntilChanged(comparator, keySelector) {
      if (keySelector === void 0) {
        keySelector = identity_1.identity;
      }
      comparator = comparator !== null && comparator !== void 0 ? comparator : defaultCompare;
      return lift_1.operate(function(source, subscriber) {
        var previousKey;
        var first = true;
        source.subscribe(OperatorSubscriber_1.createOperatorSubscriber(subscriber, function(value) {
          var currentKey = keySelector(value);
          if (first || !comparator(previousKey, currentKey)) {
            first = false;
            previousKey = currentKey;
            subscriber.next(value);
          }
        }));
      });
    }
    exports2.distinctUntilChanged = distinctUntilChanged;
    function defaultCompare(a, b) {
      return a === b;
    }
  }
});

// node_modules/rxjs/dist/cjs/internal/operators/distinctUntilKeyChanged.js
var require_distinctUntilKeyChanged = __commonJS({
  "node_modules/rxjs/dist/cjs/internal/operators/distinctUntilKeyChanged.js"(exports2) {
    "use strict";
    Object.defineProperty(exports2, "__esModule", { value: true });
    exports2.distinctUntilKeyChanged = void 0;
    var distinctUntilChanged_1 = require_distinctUntilChanged();
    function distinctUntilKeyChanged(key, compare) {
      return distinctUntilChanged_1.distinctUntilChanged(function(x, y) {
        return compare ? compare(x[key], y[key]) : x[key] === y[key];
      });
    }
    exports2.distinctUntilKeyChanged = distinctUntilKeyChanged;
  }
});

// node_modules/rxjs/dist/cjs/internal/operators/throwIfEmpty.js
var require_throwIfEmpty = __commonJS({
  "node_modules/rxjs/dist/cjs/internal/operators/throwIfEmpty.js"(exports2) {
    "use strict";
    Object.defineProperty(exports2, "__esModule", { value: true });
    exports2.throwIfEmpty = void 0;
    var EmptyError_1 = require_EmptyError();
    var lift_1 = require_lift();
    var OperatorSubscriber_1 = require_OperatorSubscriber();
    function throwIfEmpty(errorFactory) {
      if (errorFactory === void 0) {
        errorFactory = defaultErrorFactory;
      }
      return lift_1.operate(function(source, subscriber) {
        var hasValue = false;
        source.subscribe(OperatorSubscriber_1.createOperatorSubscriber(subscriber, function(value) {
          hasValue = true;
          subscriber.next(value);
        }, function() {
          return hasValue ? subscriber.complete() : subscriber.error(errorFactory());
        }));
      });
    }
    exports2.throwIfEmpty = throwIfEmpty;
    function defaultErrorFactory() {
      return new EmptyError_1.EmptyError();
    }
  }
});

// node_modules/rxjs/dist/cjs/internal/operators/elementAt.js
var require_elementAt = __commonJS({
  "node_modules/rxjs/dist/cjs/internal/operators/elementAt.js"(exports2) {
    "use strict";
    Object.defineProperty(exports2, "__esModule", { value: true });
    exports2.elementAt = void 0;
    var ArgumentOutOfRangeError_1 = require_ArgumentOutOfRangeError();
    var filter_1 = require_filter();
    var throwIfEmpty_1 = require_throwIfEmpty();
    var defaultIfEmpty_1 = require_defaultIfEmpty();
    var take_1 = require_take();
    function elementAt(index, defaultValue) {
      if (index < 0) {
        throw new ArgumentOutOfRangeError_1.ArgumentOutOfRangeError();
      }
      var hasDefaultValue = arguments.length >= 2;
      return function(source) {
        return source.pipe(filter_1.filter(function(v, i) {
          return i === index;
        }), take_1.take(1), hasDefaultValue ? defaultIfEmpty_1.defaultIfEmpty(defaultValue) : throwIfEmpty_1.throwIfEmpty(function() {
          return new ArgumentOutOfRangeError_1.ArgumentOutOfRangeError();
        }));
      };
    }
    exports2.elementAt = elementAt;
  }
});

// node_modules/rxjs/dist/cjs/internal/operators/endWith.js
var require_endWith = __commonJS({
  "node_modules/rxjs/dist/cjs/internal/operators/endWith.js"(exports2) {
    "use strict";
    var __read = exports2 && exports2.__read || function(o, n) {
      var m = typeof Symbol === "function" && o[Symbol.iterator];
      if (!m) return o;
      var i = m.call(o), r, ar = [], e;
      try {
        while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);
      } catch (error) {
        e = { error };
      } finally {
        try {
          if (r && !r.done && (m = i["return"])) m.call(i);
        } finally {
          if (e) throw e.error;
        }
      }
      return ar;
    };
    var __spreadArray = exports2 && exports2.__spreadArray || function(to, from) {
      for (var i = 0, il = from.length, j = to.length; i < il; i++, j++)
        to[j] = from[i];
      return to;
    };
    Object.defineProperty(exports2, "__esModule", { value: true });
    exports2.endWith = void 0;
    var concat_1 = require_concat();
    var of_1 = require_of();
    function endWith() {
      var values = [];
      for (var _i = 0; _i < arguments.length; _i++) {
        values[_i] = arguments[_i];
      }
      return function(source) {
        return concat_1.concat(source, of_1.of.apply(void 0, __spreadArray([], __read(values))));
      };
    }
    exports2.endWith = endWith;
  }
});

// node_modules/rxjs/dist/cjs/internal/operators/every.js
var require_every = __commonJS({
  "node_modules/rxjs/dist/cjs/internal/operators/every.js"(exports2) {
    "use strict";
    Object.defineProperty(exports2, "__esModule", { value: true });
    exports2.every = void 0;
    var lift_1 = require_lift();
    var OperatorSubscriber_1 = require_OperatorSubscriber();
    function every(predicate, thisArg) {
      return lift_1.operate(function(source, subscriber) {
        var index = 0;
        source.subscribe(OperatorSubscriber_1.createOperatorSubscriber(subscriber, function(value) {
          if (!predicate.call(thisArg, value, index++, source)) {
            subscriber.next(false);
            subscriber.complete();
          }
        }, function() {
          subscriber.next(true);
          subscriber.complete();
        }));
      });
    }
    exports2.every = every;
  }
});

// node_modules/rxjs/dist/cjs/internal/operators/exhaustMap.js
var require_exhaustMap = __commonJS({
  "node_modules/rxjs/dist/cjs/internal/operators/exhaustMap.js"(exports2) {
    "use strict";
    Object.defineProperty(exports2, "__esModule", { value: true });
    exports2.exhaustMap = void 0;
    var map_1 = require_map();
    var innerFrom_1 = require_innerFrom();
    var lift_1 = require_lift();
    var OperatorSubscriber_1 = require_OperatorSubscriber();
    function exhaustMap(project, resultSelector) {
      if (resultSelector) {
        return function(source) {
          return source.pipe(exhaustMap(function(a, i) {
            return innerFrom_1.innerFrom(project(a, i)).pipe(map_1.map(function(b, ii) {
              return resultSelector(a, b, i, ii);
            }));
          }));
        };
      }
      return lift_1.operate(function(source, subscriber) {
        var index = 0;
        var innerSub = null;
        var isComplete = false;
        source.subscribe(OperatorSubscriber_1.createOperatorSubscriber(subscriber, function(outerValue) {
          if (!innerSub) {
            innerSub = OperatorSubscriber_1.createOperatorSubscriber(subscriber, void 0, function() {
              innerSub = null;
              isComplete && subscriber.complete();
            });
            innerFrom_1.innerFrom(project(outerValue, index++)).subscribe(innerSub);
          }
        }, function() {
          isComplete = true;
          !innerSub && subscriber.complete();
        }));
      });
    }
    exports2.exhaustMap = exhaustMap;
  }
});

// node_modules/rxjs/dist/cjs/internal/operators/exhaustAll.js
var require_exhaustAll = __commonJS({
  "node_modules/rxjs/dist/cjs/internal/operators/exhaustAll.js"(exports2) {
    "use strict";
    Object.defineProperty(exports2, "__esModule", { value: true });
    exports2.exhaustAll = void 0;
    var exhaustMap_1 = require_exhaustMap();
    var identity_1 = require_identity();
    function exhaustAll() {
      return exhaustMap_1.exhaustMap(identity_1.identity);
    }
    exports2.exhaustAll = exhaustAll;
  }
});

// node_modules/rxjs/dist/cjs/internal/operators/exhaust.js
var require_exhaust = __commonJS({
  "node_modules/rxjs/dist/cjs/internal/operators/exhaust.js"(exports2) {
    "use strict";
    Object.defineProperty(exports2, "__esModule", { value: true });
    exports2.exhaust = void 0;
    var exhaustAll_1 = require_exhaustAll();
    exports2.exhaust = exhaustAll_1.exhaustAll;
  }
});

// node_modules/rxjs/dist/cjs/internal/operators/expand.js
var require_expand = __commonJS({
  "node_modules/rxjs/dist/cjs/internal/operators/expand.js"(exports2) {
    "use strict";
    Object.defineProperty(exports2, "__esModule", { value: true });
    exports2.expand = void 0;
    var lift_1 = require_lift();
    var mergeInternals_1 = require_mergeInternals();
    function expand2(project, concurrent, scheduler) {
      if (concurrent === void 0) {
        concurrent = Infinity;
      }
      concurrent = (concurrent || 0) < 1 ? Infinity : concurrent;
      return lift_1.operate(function(source, subscriber) {
        return mergeInternals_1.mergeInternals(source, subscriber, project, concurrent, void 0, true, scheduler);
      });
    }
    exports2.expand = expand2;
  }
});

// node_modules/rxjs/dist/cjs/internal/operators/finalize.js
var require_finalize = __commonJS({
  "node_modules/rxjs/dist/cjs/internal/operators/finalize.js"(exports2) {
    "use strict";
    Object.defineProperty(exports2, "__esModule", { value: true });
    exports2.finalize = void 0;
    var lift_1 = require_lift();
    function finalize(callback) {
      return lift_1.operate(function(source, subscriber) {
        try {
          source.subscribe(subscriber);
        } finally {
          subscriber.add(callback);
        }
      });
    }
    exports2.finalize = finalize;
  }
});

// node_modules/rxjs/dist/cjs/internal/operators/find.js
var require_find = __commonJS({
  "node_modules/rxjs/dist/cjs/internal/operators/find.js"(exports2) {
    "use strict";
    Object.defineProperty(exports2, "__esModule", { value: true });
    exports2.createFind = exports2.find = void 0;
    var lift_1 = require_lift();
    var OperatorSubscriber_1 = require_OperatorSubscriber();
    function find(predicate, thisArg) {
      return lift_1.operate(createFind(predicate, thisArg, "value"));
    }
    exports2.find = find;
    function createFind(predicate, thisArg, emit) {
      var findIndex = emit === "index";
      return function(source, subscriber) {
        var index = 0;
        source.subscribe(OperatorSubscriber_1.createOperatorSubscriber(subscriber, function(value) {
          var i = index++;
          if (predicate.call(thisArg, value, i, source)) {
            subscriber.next(findIndex ? i : value);
            subscriber.complete();
          }
        }, function() {
          subscriber.next(findIndex ? -1 : void 0);
          subscriber.complete();
        }));
      };
    }
    exports2.createFind = createFind;
  }
});

// node_modules/rxjs/dist/cjs/internal/operators/findIndex.js
var require_findIndex = __commonJS({
  "node_modules/rxjs/dist/cjs/internal/operators/findIndex.js"(exports2) {
    "use strict";
    Object.defineProperty(exports2, "__esModule", { value: true });
    exports2.findIndex = void 0;
    var lift_1 = require_lift();
    var find_1 = require_find();
    function findIndex(predicate, thisArg) {
      return lift_1.operate(find_1.createFind(predicate, thisArg, "index"));
    }
    exports2.findIndex = findIndex;
  }
});

// node_modules/rxjs/dist/cjs/internal/operators/first.js
var require_first = __commonJS({
  "node_modules/rxjs/dist/cjs/internal/operators/first.js"(exports2) {
    "use strict";
    Object.defineProperty(exports2, "__esModule", { value: true });
    exports2.first = void 0;
    var EmptyError_1 = require_EmptyError();
    var filter_1 = require_filter();
    var take_1 = require_take();
    var defaultIfEmpty_1 = require_defaultIfEmpty();
    var throwIfEmpty_1 = require_throwIfEmpty();
    var identity_1 = require_identity();
    function first(predicate, defaultValue) {
      var hasDefaultValue = arguments.length >= 2;
      return function(source) {
        return source.pipe(predicate ? filter_1.filter(function(v, i) {
          return predicate(v, i, source);
        }) : identity_1.identity, take_1.take(1), hasDefaultValue ? defaultIfEmpty_1.defaultIfEmpty(defaultValue) : throwIfEmpty_1.throwIfEmpty(function() {
          return new EmptyError_1.EmptyError();
        }));
      };
    }
    exports2.first = first;
  }
});

// node_modules/rxjs/dist/cjs/internal/operators/groupBy.js
var require_groupBy = __commonJS({
  "node_modules/rxjs/dist/cjs/internal/operators/groupBy.js"(exports2) {
    "use strict";
    Object.defineProperty(exports2, "__esModule", { value: true });
    exports2.groupBy = void 0;
    var Observable_1 = require_Observable();
    var innerFrom_1 = require_innerFrom();
    var Subject_1 = require_Subject();
    var lift_1 = require_lift();
    var OperatorSubscriber_1 = require_OperatorSubscriber();
    function groupBy(keySelector, elementOrOptions, duration, connector) {
      return lift_1.operate(function(source, subscriber) {
        var element;
        if (!elementOrOptions || typeof elementOrOptions === "function") {
          element = elementOrOptions;
        } else {
          duration = elementOrOptions.duration, element = elementOrOptions.element, connector = elementOrOptions.connector;
        }
        var groups = /* @__PURE__ */ new Map();
        var notify = function(cb) {
          groups.forEach(cb);
          cb(subscriber);
        };
        var handleError = function(err) {
          return notify(function(consumer) {
            return consumer.error(err);
          });
        };
        var activeGroups = 0;
        var teardownAttempted = false;
        var groupBySourceSubscriber = new OperatorSubscriber_1.OperatorSubscriber(subscriber, function(value) {
          try {
            var key_1 = keySelector(value);
            var group_1 = groups.get(key_1);
            if (!group_1) {
              groups.set(key_1, group_1 = connector ? connector() : new Subject_1.Subject());
              var grouped = createGroupedObservable(key_1, group_1);
              subscriber.next(grouped);
              if (duration) {
                var durationSubscriber_1 = OperatorSubscriber_1.createOperatorSubscriber(group_1, function() {
                  group_1.complete();
                  durationSubscriber_1 === null || durationSubscriber_1 === void 0 ? void 0 : durationSubscriber_1.unsubscribe();
                }, void 0, void 0, function() {
                  return groups.delete(key_1);
                });
                groupBySourceSubscriber.add(innerFrom_1.innerFrom(duration(grouped)).subscribe(durationSubscriber_1));
              }
            }
            group_1.next(element ? element(value) : value);
          } catch (err) {
            handleError(err);
          }
        }, function() {
          return notify(function(consumer) {
            return consumer.complete();
          });
        }, handleError, function() {
          return groups.clear();
        }, function() {
          teardownAttempted = true;
          return activeGroups === 0;
        });
        source.subscribe(groupBySourceSubscriber);
        function createGroupedObservable(key, groupSubject) {
          var result = new Observable_1.Observable(function(groupSubscriber) {
            activeGroups++;
            var innerSub = groupSubject.subscribe(groupSubscriber);
            return function() {
              innerSub.unsubscribe();
              --activeGroups === 0 && teardownAttempted && groupBySourceSubscriber.unsubscribe();
            };
          });
          result.key = key;
          return result;
        }
      });
    }
    exports2.groupBy = groupBy;
  }
});

// node_modules/rxjs/dist/cjs/internal/operators/isEmpty.js
var require_isEmpty = __commonJS({
  "node_modules/rxjs/dist/cjs/internal/operators/isEmpty.js"(exports2) {
    "use strict";
    Object.defineProperty(exports2, "__esModule", { value: true });
    exports2.isEmpty = void 0;
    var lift_1 = require_lift();
    var OperatorSubscriber_1 = require_OperatorSubscriber();
    function isEmpty() {
      return lift_1.operate(function(source, subscriber) {
        source.subscribe(OperatorSubscriber_1.createOperatorSubscriber(subscriber, function() {
          subscriber.next(false);
          subscriber.complete();
        }, function() {
          subscriber.next(true);
          subscriber.complete();
        }));
      });
    }
    exports2.isEmpty = isEmpty;
  }
});

// node_modules/rxjs/dist/cjs/internal/operators/takeLast.js
var require_takeLast = __commonJS({
  "node_modules/rxjs/dist/cjs/internal/operators/takeLast.js"(exports2) {
    "use strict";
    var __values = exports2 && exports2.__values || function(o) {
      var s = typeof Symbol === "function" && Symbol.iterator, m = s && o[s], i = 0;
      if (m) return m.call(o);
      if (o && typeof o.length === "number") return {
        next: function() {
          if (o && i >= o.length) o = void 0;
          return { value: o && o[i++], done: !o };
        }
      };
      throw new TypeError(s ? "Object is not iterable." : "Symbol.iterator is not defined.");
    };
    Object.defineProperty(exports2, "__esModule", { value: true });
    exports2.takeLast = void 0;
    var empty_1 = require_empty();
    var lift_1 = require_lift();
    var OperatorSubscriber_1 = require_OperatorSubscriber();
    function takeLast(count) {
      return count <= 0 ? function() {
        return empty_1.EMPTY;
      } : lift_1.operate(function(source, subscriber) {
        var buffer = [];
        source.subscribe(OperatorSubscriber_1.createOperatorSubscriber(subscriber, function(value) {
          buffer.push(value);
          count < buffer.length && buffer.shift();
        }, function() {
          var e_1, _a2;
          try {
            for (var buffer_1 = __values(buffer), buffer_1_1 = buffer_1.next(); !buffer_1_1.done; buffer_1_1 = buffer_1.next()) {
              var value = buffer_1_1.value;
              subscriber.next(value);
            }
          } catch (e_1_1) {
            e_1 = { error: e_1_1 };
          } finally {
            try {
              if (buffer_1_1 && !buffer_1_1.done && (_a2 = buffer_1.return)) _a2.call(buffer_1);
            } finally {
              if (e_1) throw e_1.error;
            }
          }
          subscriber.complete();
        }, void 0, function() {
          buffer = null;
        }));
      });
    }
    exports2.takeLast = takeLast;
  }
});

// node_modules/rxjs/dist/cjs/internal/operators/last.js
var require_last = __commonJS({
  "node_modules/rxjs/dist/cjs/internal/operators/last.js"(exports2) {
    "use strict";
    Object.defineProperty(exports2, "__esModule", { value: true });
    exports2.last = void 0;
    var EmptyError_1 = require_EmptyError();
    var filter_1 = require_filter();
    var takeLast_1 = require_takeLast();
    var throwIfEmpty_1 = require_throwIfEmpty();
    var defaultIfEmpty_1 = require_defaultIfEmpty();
    var identity_1 = require_identity();
    function last(predicate, defaultValue) {
      var hasDefaultValue = arguments.length >= 2;
      return function(source) {
        return source.pipe(predicate ? filter_1.filter(function(v, i) {
          return predicate(v, i, source);
        }) : identity_1.identity, takeLast_1.takeLast(1), hasDefaultValue ? defaultIfEmpty_1.defaultIfEmpty(defaultValue) : throwIfEmpty_1.throwIfEmpty(function() {
          return new EmptyError_1.EmptyError();
        }));
      };
    }
    exports2.last = last;
  }
});

// node_modules/rxjs/dist/cjs/internal/operators/materialize.js
var require_materialize = __commonJS({
  "node_modules/rxjs/dist/cjs/internal/operators/materialize.js"(exports2) {
    "use strict";
    Object.defineProperty(exports2, "__esModule", { value: true });
    exports2.materialize = void 0;
    var Notification_1 = require_Notification();
    var lift_1 = require_lift();
    var OperatorSubscriber_1 = require_OperatorSubscriber();
    function materialize() {
      return lift_1.operate(function(source, subscriber) {
        source.subscribe(OperatorSubscriber_1.createOperatorSubscriber(subscriber, function(value) {
          subscriber.next(Notification_1.Notification.createNext(value));
        }, function() {
          subscriber.next(Notification_1.Notification.createComplete());
          subscriber.complete();
        }, function(err) {
          subscriber.next(Notification_1.Notification.createError(err));
          subscriber.complete();
        }));
      });
    }
    exports2.materialize = materialize;
  }
});

// node_modules/rxjs/dist/cjs/internal/operators/max.js
var require_max = __commonJS({
  "node_modules/rxjs/dist/cjs/internal/operators/max.js"(exports2) {
    "use strict";
    Object.defineProperty(exports2, "__esModule", { value: true });
    exports2.max = void 0;
    var reduce_1 = require_reduce();
    var isFunction_1 = require_isFunction();
    function max(comparer) {
      return reduce_1.reduce(isFunction_1.isFunction(comparer) ? function(x, y) {
        return comparer(x, y) > 0 ? x : y;
      } : function(x, y) {
        return x > y ? x : y;
      });
    }
    exports2.max = max;
  }
});

// node_modules/rxjs/dist/cjs/internal/operators/flatMap.js
var require_flatMap = __commonJS({
  "node_modules/rxjs/dist/cjs/internal/operators/flatMap.js"(exports2) {
    "use strict";
    Object.defineProperty(exports2, "__esModule", { value: true });
    exports2.flatMap = void 0;
    var mergeMap_1 = require_mergeMap();
    exports2.flatMap = mergeMap_1.mergeMap;
  }
});

// node_modules/rxjs/dist/cjs/internal/operators/mergeMapTo.js
var require_mergeMapTo = __commonJS({
  "node_modules/rxjs/dist/cjs/internal/operators/mergeMapTo.js"(exports2) {
    "use strict";
    Object.defineProperty(exports2, "__esModule", { value: true });
    exports2.mergeMapTo = void 0;
    var mergeMap_1 = require_mergeMap();
    var isFunction_1 = require_isFunction();
    function mergeMapTo(innerObservable, resultSelector, concurrent) {
      if (concurrent === void 0) {
        concurrent = Infinity;
      }
      if (isFunction_1.isFunction(resultSelector)) {
        return mergeMap_1.mergeMap(function() {
          return innerObservable;
        }, resultSelector, concurrent);
      }
      if (typeof resultSelector === "number") {
        concurrent = resultSelector;
      }
      return mergeMap_1.mergeMap(function() {
        return innerObservable;
      }, concurrent);
    }
    exports2.mergeMapTo = mergeMapTo;
  }
});

// node_modules/rxjs/dist/cjs/internal/operators/mergeScan.js
var require_mergeScan = __commonJS({
  "node_modules/rxjs/dist/cjs/internal/operators/mergeScan.js"(exports2) {
    "use strict";
    Object.defineProperty(exports2, "__esModule", { value: true });
    exports2.mergeScan = void 0;
    var lift_1 = require_lift();
    var mergeInternals_1 = require_mergeInternals();
    function mergeScan(accumulator, seed, concurrent) {
      if (concurrent === void 0) {
        concurrent = Infinity;
      }
      return lift_1.operate(function(source, subscriber) {
        var state = seed;
        return mergeInternals_1.mergeInternals(source, subscriber, function(value, index) {
          return accumulator(state, value, index);
        }, concurrent, function(value) {
          state = value;
        }, false, void 0, function() {
          return state = null;
        });
      });
    }
    exports2.mergeScan = mergeScan;
  }
});

// node_modules/rxjs/dist/cjs/internal/operators/merge.js
var require_merge2 = __commonJS({
  "node_modules/rxjs/dist/cjs/internal/operators/merge.js"(exports2) {
    "use strict";
    var __read = exports2 && exports2.__read || function(o, n) {
      var m = typeof Symbol === "function" && o[Symbol.iterator];
      if (!m) return o;
      var i = m.call(o), r, ar = [], e;
      try {
        while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);
      } catch (error) {
        e = { error };
      } finally {
        try {
          if (r && !r.done && (m = i["return"])) m.call(i);
        } finally {
          if (e) throw e.error;
        }
      }
      return ar;
    };
    var __spreadArray = exports2 && exports2.__spreadArray || function(to, from) {
      for (var i = 0, il = from.length, j = to.length; i < il; i++, j++)
        to[j] = from[i];
      return to;
    };
    Object.defineProperty(exports2, "__esModule", { value: true });
    exports2.merge = void 0;
    var lift_1 = require_lift();
    var mergeAll_1 = require_mergeAll();
    var args_1 = require_args();
    var from_1 = require_from();
    function merge() {
      var args = [];
      for (var _i = 0; _i < arguments.length; _i++) {
        args[_i] = arguments[_i];
      }
      var scheduler = args_1.popScheduler(args);
      var concurrent = args_1.popNumber(args, Infinity);
      return lift_1.operate(function(source, subscriber) {
        mergeAll_1.mergeAll(concurrent)(from_1.from(__spreadArray([source], __read(args)), scheduler)).subscribe(subscriber);
      });
    }
    exports2.merge = merge;
  }
});

// node_modules/rxjs/dist/cjs/internal/operators/mergeWith.js
var require_mergeWith = __commonJS({
  "node_modules/rxjs/dist/cjs/internal/operators/mergeWith.js"(exports2) {
    "use strict";
    var __read = exports2 && exports2.__read || function(o, n) {
      var m = typeof Symbol === "function" && o[Symbol.iterator];
      if (!m) return o;
      var i = m.call(o), r, ar = [], e;
      try {
        while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);
      } catch (error) {
        e = { error };
      } finally {
        try {
          if (r && !r.done && (m = i["return"])) m.call(i);
        } finally {
          if (e) throw e.error;
        }
      }
      return ar;
    };
    var __spreadArray = exports2 && exports2.__spreadArray || function(to, from) {
      for (var i = 0, il = from.length, j = to.length; i < il; i++, j++)
        to[j] = from[i];
      return to;
    };
    Object.defineProperty(exports2, "__esModule", { value: true });
    exports2.mergeWith = void 0;
    var merge_1 = require_merge2();
    function mergeWith() {
      var otherSources = [];
      for (var _i = 0; _i < arguments.length; _i++) {
        otherSources[_i] = arguments[_i];
      }
      return merge_1.merge.apply(void 0, __spreadArray([], __read(otherSources)));
    }
    exports2.mergeWith = mergeWith;
  }
});

// node_modules/rxjs/dist/cjs/internal/operators/min.js
var require_min = __commonJS({
  "node_modules/rxjs/dist/cjs/internal/operators/min.js"(exports2) {
    "use strict";
    Object.defineProperty(exports2, "__esModule", { value: true });
    exports2.min = void 0;
    var reduce_1 = require_reduce();
    var isFunction_1 = require_isFunction();
    function min(comparer) {
      return reduce_1.reduce(isFunction_1.isFunction(comparer) ? function(x, y) {
        return comparer(x, y) < 0 ? x : y;
      } : function(x, y) {
        return x < y ? x : y;
      });
    }
    exports2.min = min;
  }
});

// node_modules/rxjs/dist/cjs/internal/operators/multicast.js
var require_multicast = __commonJS({
  "node_modules/rxjs/dist/cjs/internal/operators/multicast.js"(exports2) {
    "use strict";
    Object.defineProperty(exports2, "__esModule", { value: true });
    exports2.multicast = void 0;
    var ConnectableObservable_1 = require_ConnectableObservable();
    var isFunction_1 = require_isFunction();
    var connect_1 = require_connect();
    function multicast(subjectOrSubjectFactory, selector) {
      var subjectFactory = isFunction_1.isFunction(subjectOrSubjectFactory) ? subjectOrSubjectFactory : function() {
        return subjectOrSubjectFactory;
      };
      if (isFunction_1.isFunction(selector)) {
        return connect_1.connect(selector, {
          connector: subjectFactory
        });
      }
      return function(source) {
        return new ConnectableObservable_1.ConnectableObservable(source, subjectFactory);
      };
    }
    exports2.multicast = multicast;
  }
});

// node_modules/rxjs/dist/cjs/internal/operators/onErrorResumeNextWith.js
var require_onErrorResumeNextWith = __commonJS({
  "node_modules/rxjs/dist/cjs/internal/operators/onErrorResumeNextWith.js"(exports2) {
    "use strict";
    var __read = exports2 && exports2.__read || function(o, n) {
      var m = typeof Symbol === "function" && o[Symbol.iterator];
      if (!m) return o;
      var i = m.call(o), r, ar = [], e;
      try {
        while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);
      } catch (error) {
        e = { error };
      } finally {
        try {
          if (r && !r.done && (m = i["return"])) m.call(i);
        } finally {
          if (e) throw e.error;
        }
      }
      return ar;
    };
    var __spreadArray = exports2 && exports2.__spreadArray || function(to, from) {
      for (var i = 0, il = from.length, j = to.length; i < il; i++, j++)
        to[j] = from[i];
      return to;
    };
    Object.defineProperty(exports2, "__esModule", { value: true });
    exports2.onErrorResumeNext = exports2.onErrorResumeNextWith = void 0;
    var argsOrArgArray_1 = require_argsOrArgArray();
    var onErrorResumeNext_1 = require_onErrorResumeNext();
    function onErrorResumeNextWith() {
      var sources3 = [];
      for (var _i = 0; _i < arguments.length; _i++) {
        sources3[_i] = arguments[_i];
      }
      var nextSources = argsOrArgArray_1.argsOrArgArray(sources3);
      return function(source) {
        return onErrorResumeNext_1.onErrorResumeNext.apply(void 0, __spreadArray([source], __read(nextSources)));
      };
    }
    exports2.onErrorResumeNextWith = onErrorResumeNextWith;
    exports2.onErrorResumeNext = onErrorResumeNextWith;
  }
});

// node_modules/rxjs/dist/cjs/internal/operators/pairwise.js
var require_pairwise = __commonJS({
  "node_modules/rxjs/dist/cjs/internal/operators/pairwise.js"(exports2) {
    "use strict";
    Object.defineProperty(exports2, "__esModule", { value: true });
    exports2.pairwise = void 0;
    var lift_1 = require_lift();
    var OperatorSubscriber_1 = require_OperatorSubscriber();
    function pairwise() {
      return lift_1.operate(function(source, subscriber) {
        var prev;
        var hasPrev = false;
        source.subscribe(OperatorSubscriber_1.createOperatorSubscriber(subscriber, function(value) {
          var p = prev;
          prev = value;
          hasPrev && subscriber.next([p, value]);
          hasPrev = true;
        }));
      });
    }
    exports2.pairwise = pairwise;
  }
});

// node_modules/rxjs/dist/cjs/internal/operators/pluck.js
var require_pluck = __commonJS({
  "node_modules/rxjs/dist/cjs/internal/operators/pluck.js"(exports2) {
    "use strict";
    Object.defineProperty(exports2, "__esModule", { value: true });
    exports2.pluck = void 0;
    var map_1 = require_map();
    function pluck() {
      var properties = [];
      for (var _i = 0; _i < arguments.length; _i++) {
        properties[_i] = arguments[_i];
      }
      var length = properties.length;
      if (length === 0) {
        throw new Error("list of properties cannot be empty.");
      }
      return map_1.map(function(x) {
        var currentProp = x;
        for (var i = 0; i < length; i++) {
          var p = currentProp === null || currentProp === void 0 ? void 0 : currentProp[properties[i]];
          if (typeof p !== "undefined") {
            currentProp = p;
          } else {
            return void 0;
          }
        }
        return currentProp;
      });
    }
    exports2.pluck = pluck;
  }
});

// node_modules/rxjs/dist/cjs/internal/operators/publish.js
var require_publish = __commonJS({
  "node_modules/rxjs/dist/cjs/internal/operators/publish.js"(exports2) {
    "use strict";
    Object.defineProperty(exports2, "__esModule", { value: true });
    exports2.publish = void 0;
    var Subject_1 = require_Subject();
    var multicast_1 = require_multicast();
    var connect_1 = require_connect();
    function publish(selector) {
      return selector ? function(source) {
        return connect_1.connect(selector)(source);
      } : function(source) {
        return multicast_1.multicast(new Subject_1.Subject())(source);
      };
    }
    exports2.publish = publish;
  }
});

// node_modules/rxjs/dist/cjs/internal/operators/publishBehavior.js
var require_publishBehavior = __commonJS({
  "node_modules/rxjs/dist/cjs/internal/operators/publishBehavior.js"(exports2) {
    "use strict";
    Object.defineProperty(exports2, "__esModule", { value: true });
    exports2.publishBehavior = void 0;
    var BehaviorSubject_1 = require_BehaviorSubject();
    var ConnectableObservable_1 = require_ConnectableObservable();
    function publishBehavior(initialValue) {
      return function(source) {
        var subject = new BehaviorSubject_1.BehaviorSubject(initialValue);
        return new ConnectableObservable_1.ConnectableObservable(source, function() {
          return subject;
        });
      };
    }
    exports2.publishBehavior = publishBehavior;
  }
});

// node_modules/rxjs/dist/cjs/internal/operators/publishLast.js
var require_publishLast = __commonJS({
  "node_modules/rxjs/dist/cjs/internal/operators/publishLast.js"(exports2) {
    "use strict";
    Object.defineProperty(exports2, "__esModule", { value: true });
    exports2.publishLast = void 0;
    var AsyncSubject_1 = require_AsyncSubject();
    var ConnectableObservable_1 = require_ConnectableObservable();
    function publishLast() {
      return function(source) {
        var subject = new AsyncSubject_1.AsyncSubject();
        return new ConnectableObservable_1.ConnectableObservable(source, function() {
          return subject;
        });
      };
    }
    exports2.publishLast = publishLast;
  }
});

// node_modules/rxjs/dist/cjs/internal/operators/publishReplay.js
var require_publishReplay = __commonJS({
  "node_modules/rxjs/dist/cjs/internal/operators/publishReplay.js"(exports2) {
    "use strict";
    Object.defineProperty(exports2, "__esModule", { value: true });
    exports2.publishReplay = void 0;
    var ReplaySubject_1 = require_ReplaySubject();
    var multicast_1 = require_multicast();
    var isFunction_1 = require_isFunction();
    function publishReplay(bufferSize, windowTime, selectorOrScheduler, timestampProvider) {
      if (selectorOrScheduler && !isFunction_1.isFunction(selectorOrScheduler)) {
        timestampProvider = selectorOrScheduler;
      }
      var selector = isFunction_1.isFunction(selectorOrScheduler) ? selectorOrScheduler : void 0;
      return function(source) {
        return multicast_1.multicast(new ReplaySubject_1.ReplaySubject(bufferSize, windowTime, timestampProvider), selector)(source);
      };
    }
    exports2.publishReplay = publishReplay;
  }
});

// node_modules/rxjs/dist/cjs/internal/operators/raceWith.js
var require_raceWith = __commonJS({
  "node_modules/rxjs/dist/cjs/internal/operators/raceWith.js"(exports2) {
    "use strict";
    var __read = exports2 && exports2.__read || function(o, n) {
      var m = typeof Symbol === "function" && o[Symbol.iterator];
      if (!m) return o;
      var i = m.call(o), r, ar = [], e;
      try {
        while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);
      } catch (error) {
        e = { error };
      } finally {
        try {
          if (r && !r.done && (m = i["return"])) m.call(i);
        } finally {
          if (e) throw e.error;
        }
      }
      return ar;
    };
    var __spreadArray = exports2 && exports2.__spreadArray || function(to, from) {
      for (var i = 0, il = from.length, j = to.length; i < il; i++, j++)
        to[j] = from[i];
      return to;
    };
    Object.defineProperty(exports2, "__esModule", { value: true });
    exports2.raceWith = void 0;
    var race_1 = require_race();
    var lift_1 = require_lift();
    var identity_1 = require_identity();
    function raceWith() {
      var otherSources = [];
      for (var _i = 0; _i < arguments.length; _i++) {
        otherSources[_i] = arguments[_i];
      }
      return !otherSources.length ? identity_1.identity : lift_1.operate(function(source, subscriber) {
        race_1.raceInit(__spreadArray([source], __read(otherSources)))(subscriber);
      });
    }
    exports2.raceWith = raceWith;
  }
});

// node_modules/rxjs/dist/cjs/internal/operators/repeat.js
var require_repeat = __commonJS({
  "node_modules/rxjs/dist/cjs/internal/operators/repeat.js"(exports2) {
    "use strict";
    Object.defineProperty(exports2, "__esModule", { value: true });
    exports2.repeat = void 0;
    var empty_1 = require_empty();
    var lift_1 = require_lift();
    var OperatorSubscriber_1 = require_OperatorSubscriber();
    var innerFrom_1 = require_innerFrom();
    var timer_1 = require_timer();
    function repeat(countOrConfig) {
      var _a2;
      var count = Infinity;
      var delay;
      if (countOrConfig != null) {
        if (typeof countOrConfig === "object") {
          _a2 = countOrConfig.count, count = _a2 === void 0 ? Infinity : _a2, delay = countOrConfig.delay;
        } else {
          count = countOrConfig;
        }
      }
      return count <= 0 ? function() {
        return empty_1.EMPTY;
      } : lift_1.operate(function(source, subscriber) {
        var soFar = 0;
        var sourceSub;
        var resubscribe = function() {
          sourceSub === null || sourceSub === void 0 ? void 0 : sourceSub.unsubscribe();
          sourceSub = null;
          if (delay != null) {
            var notifier = typeof delay === "number" ? timer_1.timer(delay) : innerFrom_1.innerFrom(delay(soFar));
            var notifierSubscriber_1 = OperatorSubscriber_1.createOperatorSubscriber(subscriber, function() {
              notifierSubscriber_1.unsubscribe();
              subscribeToSource();
            });
            notifier.subscribe(notifierSubscriber_1);
          } else {
            subscribeToSource();
          }
        };
        var subscribeToSource = function() {
          var syncUnsub = false;
          sourceSub = source.subscribe(OperatorSubscriber_1.createOperatorSubscriber(subscriber, void 0, function() {
            if (++soFar < count) {
              if (sourceSub) {
                resubscribe();
              } else {
                syncUnsub = true;
              }
            } else {
              subscriber.complete();
            }
          }));
          if (syncUnsub) {
            resubscribe();
          }
        };
        subscribeToSource();
      });
    }
    exports2.repeat = repeat;
  }
});

// node_modules/rxjs/dist/cjs/internal/operators/repeatWhen.js
var require_repeatWhen = __commonJS({
  "node_modules/rxjs/dist/cjs/internal/operators/repeatWhen.js"(exports2) {
    "use strict";
    Object.defineProperty(exports2, "__esModule", { value: true });
    exports2.repeatWhen = void 0;
    var innerFrom_1 = require_innerFrom();
    var Subject_1 = require_Subject();
    var lift_1 = require_lift();
    var OperatorSubscriber_1 = require_OperatorSubscriber();
    function repeatWhen(notifier) {
      return lift_1.operate(function(source, subscriber) {
        var innerSub;
        var syncResub = false;
        var completions$;
        var isNotifierComplete = false;
        var isMainComplete = false;
        var checkComplete = function() {
          return isMainComplete && isNotifierComplete && (subscriber.complete(), true);
        };
        var getCompletionSubject = function() {
          if (!completions$) {
            completions$ = new Subject_1.Subject();
            innerFrom_1.innerFrom(notifier(completions$)).subscribe(OperatorSubscriber_1.createOperatorSubscriber(subscriber, function() {
              if (innerSub) {
                subscribeForRepeatWhen();
              } else {
                syncResub = true;
              }
            }, function() {
              isNotifierComplete = true;
              checkComplete();
            }));
          }
          return completions$;
        };
        var subscribeForRepeatWhen = function() {
          isMainComplete = false;
          innerSub = source.subscribe(OperatorSubscriber_1.createOperatorSubscriber(subscriber, void 0, function() {
            isMainComplete = true;
            !checkComplete() && getCompletionSubject().next();
          }));
          if (syncResub) {
            innerSub.unsubscribe();
            innerSub = null;
            syncResub = false;
            subscribeForRepeatWhen();
          }
        };
        subscribeForRepeatWhen();
      });
    }
    exports2.repeatWhen = repeatWhen;
  }
});

// node_modules/rxjs/dist/cjs/internal/operators/retry.js
var require_retry = __commonJS({
  "node_modules/rxjs/dist/cjs/internal/operators/retry.js"(exports2) {
    "use strict";
    Object.defineProperty(exports2, "__esModule", { value: true });
    exports2.retry = void 0;
    var lift_1 = require_lift();
    var OperatorSubscriber_1 = require_OperatorSubscriber();
    var identity_1 = require_identity();
    var timer_1 = require_timer();
    var innerFrom_1 = require_innerFrom();
    function retry(configOrCount) {
      if (configOrCount === void 0) {
        configOrCount = Infinity;
      }
      var config;
      if (configOrCount && typeof configOrCount === "object") {
        config = configOrCount;
      } else {
        config = {
          count: configOrCount
        };
      }
      var _a2 = config.count, count = _a2 === void 0 ? Infinity : _a2, delay = config.delay, _b = config.resetOnSuccess, resetOnSuccess = _b === void 0 ? false : _b;
      return count <= 0 ? identity_1.identity : lift_1.operate(function(source, subscriber) {
        var soFar = 0;
        var innerSub;
        var subscribeForRetry = function() {
          var syncUnsub = false;
          innerSub = source.subscribe(OperatorSubscriber_1.createOperatorSubscriber(subscriber, function(value) {
            if (resetOnSuccess) {
              soFar = 0;
            }
            subscriber.next(value);
          }, void 0, function(err) {
            if (soFar++ < count) {
              var resub_1 = function() {
                if (innerSub) {
                  innerSub.unsubscribe();
                  innerSub = null;
                  subscribeForRetry();
                } else {
                  syncUnsub = true;
                }
              };
              if (delay != null) {
                var notifier = typeof delay === "number" ? timer_1.timer(delay) : innerFrom_1.innerFrom(delay(err, soFar));
                var notifierSubscriber_1 = OperatorSubscriber_1.createOperatorSubscriber(subscriber, function() {
                  notifierSubscriber_1.unsubscribe();
                  resub_1();
                }, function() {
                  subscriber.complete();
                });
                notifier.subscribe(notifierSubscriber_1);
              } else {
                resub_1();
              }
            } else {
              subscriber.error(err);
            }
          }));
          if (syncUnsub) {
            innerSub.unsubscribe();
            innerSub = null;
            subscribeForRetry();
          }
        };
        subscribeForRetry();
      });
    }
    exports2.retry = retry;
  }
});

// node_modules/rxjs/dist/cjs/internal/operators/retryWhen.js
var require_retryWhen = __commonJS({
  "node_modules/rxjs/dist/cjs/internal/operators/retryWhen.js"(exports2) {
    "use strict";
    Object.defineProperty(exports2, "__esModule", { value: true });
    exports2.retryWhen = void 0;
    var innerFrom_1 = require_innerFrom();
    var Subject_1 = require_Subject();
    var lift_1 = require_lift();
    var OperatorSubscriber_1 = require_OperatorSubscriber();
    function retryWhen(notifier) {
      return lift_1.operate(function(source, subscriber) {
        var innerSub;
        var syncResub = false;
        var errors$;
        var subscribeForRetryWhen = function() {
          innerSub = source.subscribe(OperatorSubscriber_1.createOperatorSubscriber(subscriber, void 0, void 0, function(err) {
            if (!errors$) {
              errors$ = new Subject_1.Subject();
              innerFrom_1.innerFrom(notifier(errors$)).subscribe(OperatorSubscriber_1.createOperatorSubscriber(subscriber, function() {
                return innerSub ? subscribeForRetryWhen() : syncResub = true;
              }));
            }
            if (errors$) {
              errors$.next(err);
            }
          }));
          if (syncResub) {
            innerSub.unsubscribe();
            innerSub = null;
            syncResub = false;
            subscribeForRetryWhen();
          }
        };
        subscribeForRetryWhen();
      });
    }
    exports2.retryWhen = retryWhen;
  }
});

// node_modules/rxjs/dist/cjs/internal/operators/sample.js
var require_sample = __commonJS({
  "node_modules/rxjs/dist/cjs/internal/operators/sample.js"(exports2) {
    "use strict";
    Object.defineProperty(exports2, "__esModule", { value: true });
    exports2.sample = void 0;
    var innerFrom_1 = require_innerFrom();
    var lift_1 = require_lift();
    var noop_1 = require_noop();
    var OperatorSubscriber_1 = require_OperatorSubscriber();
    function sample(notifier) {
      return lift_1.operate(function(source, subscriber) {
        var hasValue = false;
        var lastValue = null;
        source.subscribe(OperatorSubscriber_1.createOperatorSubscriber(subscriber, function(value) {
          hasValue = true;
          lastValue = value;
        }));
        innerFrom_1.innerFrom(notifier).subscribe(OperatorSubscriber_1.createOperatorSubscriber(subscriber, function() {
          if (hasValue) {
            hasValue = false;
            var value = lastValue;
            lastValue = null;
            subscriber.next(value);
          }
        }, noop_1.noop));
      });
    }
    exports2.sample = sample;
  }
});

// node_modules/rxjs/dist/cjs/internal/operators/sampleTime.js
var require_sampleTime = __commonJS({
  "node_modules/rxjs/dist/cjs/internal/operators/sampleTime.js"(exports2) {
    "use strict";
    Object.defineProperty(exports2, "__esModule", { value: true });
    exports2.sampleTime = void 0;
    var async_1 = require_async();
    var sample_1 = require_sample();
    var interval_1 = require_interval();
    function sampleTime(period, scheduler) {
      if (scheduler === void 0) {
        scheduler = async_1.asyncScheduler;
      }
      return sample_1.sample(interval_1.interval(period, scheduler));
    }
    exports2.sampleTime = sampleTime;
  }
});

// node_modules/rxjs/dist/cjs/internal/operators/scan.js
var require_scan = __commonJS({
  "node_modules/rxjs/dist/cjs/internal/operators/scan.js"(exports2) {
    "use strict";
    Object.defineProperty(exports2, "__esModule", { value: true });
    exports2.scan = void 0;
    var lift_1 = require_lift();
    var scanInternals_1 = require_scanInternals();
    function scan(accumulator, seed) {
      return lift_1.operate(scanInternals_1.scanInternals(accumulator, seed, arguments.length >= 2, true));
    }
    exports2.scan = scan;
  }
});

// node_modules/rxjs/dist/cjs/internal/operators/sequenceEqual.js
var require_sequenceEqual = __commonJS({
  "node_modules/rxjs/dist/cjs/internal/operators/sequenceEqual.js"(exports2) {
    "use strict";
    Object.defineProperty(exports2, "__esModule", { value: true });
    exports2.sequenceEqual = void 0;
    var lift_1 = require_lift();
    var OperatorSubscriber_1 = require_OperatorSubscriber();
    var innerFrom_1 = require_innerFrom();
    function sequenceEqual(compareTo, comparator) {
      if (comparator === void 0) {
        comparator = function(a, b) {
          return a === b;
        };
      }
      return lift_1.operate(function(source, subscriber) {
        var aState = createState();
        var bState = createState();
        var emit = function(isEqual) {
          subscriber.next(isEqual);
          subscriber.complete();
        };
        var createSubscriber = function(selfState, otherState) {
          var sequenceEqualSubscriber = OperatorSubscriber_1.createOperatorSubscriber(subscriber, function(a) {
            var buffer = otherState.buffer, complete = otherState.complete;
            if (buffer.length === 0) {
              complete ? emit(false) : selfState.buffer.push(a);
            } else {
              !comparator(a, buffer.shift()) && emit(false);
            }
          }, function() {
            selfState.complete = true;
            var complete = otherState.complete, buffer = otherState.buffer;
            complete && emit(buffer.length === 0);
            sequenceEqualSubscriber === null || sequenceEqualSubscriber === void 0 ? void 0 : sequenceEqualSubscriber.unsubscribe();
          });
          return sequenceEqualSubscriber;
        };
        source.subscribe(createSubscriber(aState, bState));
        innerFrom_1.innerFrom(compareTo).subscribe(createSubscriber(bState, aState));
      });
    }
    exports2.sequenceEqual = sequenceEqual;
    function createState() {
      return {
        buffer: [],
        complete: false
      };
    }
  }
});

// node_modules/rxjs/dist/cjs/internal/operators/share.js
var require_share = __commonJS({
  "node_modules/rxjs/dist/cjs/internal/operators/share.js"(exports2) {
    "use strict";
    var __read = exports2 && exports2.__read || function(o, n) {
      var m = typeof Symbol === "function" && o[Symbol.iterator];
      if (!m) return o;
      var i = m.call(o), r, ar = [], e;
      try {
        while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);
      } catch (error) {
        e = { error };
      } finally {
        try {
          if (r && !r.done && (m = i["return"])) m.call(i);
        } finally {
          if (e) throw e.error;
        }
      }
      return ar;
    };
    var __spreadArray = exports2 && exports2.__spreadArray || function(to, from) {
      for (var i = 0, il = from.length, j = to.length; i < il; i++, j++)
        to[j] = from[i];
      return to;
    };
    Object.defineProperty(exports2, "__esModule", { value: true });
    exports2.share = void 0;
    var innerFrom_1 = require_innerFrom();
    var Subject_1 = require_Subject();
    var Subscriber_1 = require_Subscriber();
    var lift_1 = require_lift();
    function share(options) {
      if (options === void 0) {
        options = {};
      }
      var _a2 = options.connector, connector = _a2 === void 0 ? function() {
        return new Subject_1.Subject();
      } : _a2, _b = options.resetOnError, resetOnError = _b === void 0 ? true : _b, _c = options.resetOnComplete, resetOnComplete = _c === void 0 ? true : _c, _d = options.resetOnRefCountZero, resetOnRefCountZero = _d === void 0 ? true : _d;
      return function(wrapperSource) {
        var connection;
        var resetConnection;
        var subject;
        var refCount = 0;
        var hasCompleted = false;
        var hasErrored = false;
        var cancelReset = function() {
          resetConnection === null || resetConnection === void 0 ? void 0 : resetConnection.unsubscribe();
          resetConnection = void 0;
        };
        var reset = function() {
          cancelReset();
          connection = subject = void 0;
          hasCompleted = hasErrored = false;
        };
        var resetAndUnsubscribe = function() {
          var conn = connection;
          reset();
          conn === null || conn === void 0 ? void 0 : conn.unsubscribe();
        };
        return lift_1.operate(function(source, subscriber) {
          refCount++;
          if (!hasErrored && !hasCompleted) {
            cancelReset();
          }
          var dest = subject = subject !== null && subject !== void 0 ? subject : connector();
          subscriber.add(function() {
            refCount--;
            if (refCount === 0 && !hasErrored && !hasCompleted) {
              resetConnection = handleReset(resetAndUnsubscribe, resetOnRefCountZero);
            }
          });
          dest.subscribe(subscriber);
          if (!connection && refCount > 0) {
            connection = new Subscriber_1.SafeSubscriber({
              next: function(value) {
                return dest.next(value);
              },
              error: function(err) {
                hasErrored = true;
                cancelReset();
                resetConnection = handleReset(reset, resetOnError, err);
                dest.error(err);
              },
              complete: function() {
                hasCompleted = true;
                cancelReset();
                resetConnection = handleReset(reset, resetOnComplete);
                dest.complete();
              }
            });
            innerFrom_1.innerFrom(source).subscribe(connection);
          }
        })(wrapperSource);
      };
    }
    exports2.share = share;
    function handleReset(reset, on) {
      var args = [];
      for (var _i = 2; _i < arguments.length; _i++) {
        args[_i - 2] = arguments[_i];
      }
      if (on === true) {
        reset();
        return;
      }
      if (on === false) {
        return;
      }
      var onSubscriber = new Subscriber_1.SafeSubscriber({
        next: function() {
          onSubscriber.unsubscribe();
          reset();
        }
      });
      return innerFrom_1.innerFrom(on.apply(void 0, __spreadArray([], __read(args)))).subscribe(onSubscriber);
    }
  }
});

// node_modules/rxjs/dist/cjs/internal/operators/shareReplay.js
var require_shareReplay = __commonJS({
  "node_modules/rxjs/dist/cjs/internal/operators/shareReplay.js"(exports2) {
    "use strict";
    Object.defineProperty(exports2, "__esModule", { value: true });
    exports2.shareReplay = void 0;
    var ReplaySubject_1 = require_ReplaySubject();
    var share_1 = require_share();
    function shareReplay(configOrBufferSize, windowTime, scheduler) {
      var _a2, _b, _c;
      var bufferSize;
      var refCount = false;
      if (configOrBufferSize && typeof configOrBufferSize === "object") {
        _a2 = configOrBufferSize.bufferSize, bufferSize = _a2 === void 0 ? Infinity : _a2, _b = configOrBufferSize.windowTime, windowTime = _b === void 0 ? Infinity : _b, _c = configOrBufferSize.refCount, refCount = _c === void 0 ? false : _c, scheduler = configOrBufferSize.scheduler;
      } else {
        bufferSize = configOrBufferSize !== null && configOrBufferSize !== void 0 ? configOrBufferSize : Infinity;
      }
      return share_1.share({
        connector: function() {
          return new ReplaySubject_1.ReplaySubject(bufferSize, windowTime, scheduler);
        },
        resetOnError: true,
        resetOnComplete: false,
        resetOnRefCountZero: refCount
      });
    }
    exports2.shareReplay = shareReplay;
  }
});

// node_modules/rxjs/dist/cjs/internal/operators/single.js
var require_single = __commonJS({
  "node_modules/rxjs/dist/cjs/internal/operators/single.js"(exports2) {
    "use strict";
    Object.defineProperty(exports2, "__esModule", { value: true });
    exports2.single = void 0;
    var EmptyError_1 = require_EmptyError();
    var SequenceError_1 = require_SequenceError();
    var NotFoundError_1 = require_NotFoundError();
    var lift_1 = require_lift();
    var OperatorSubscriber_1 = require_OperatorSubscriber();
    function single(predicate) {
      return lift_1.operate(function(source, subscriber) {
        var hasValue = false;
        var singleValue;
        var seenValue = false;
        var index = 0;
        source.subscribe(OperatorSubscriber_1.createOperatorSubscriber(subscriber, function(value) {
          seenValue = true;
          if (!predicate || predicate(value, index++, source)) {
            hasValue && subscriber.error(new SequenceError_1.SequenceError("Too many matching values"));
            hasValue = true;
            singleValue = value;
          }
        }, function() {
          if (hasValue) {
            subscriber.next(singleValue);
            subscriber.complete();
          } else {
            subscriber.error(seenValue ? new NotFoundError_1.NotFoundError("No matching values") : new EmptyError_1.EmptyError());
          }
        }));
      });
    }
    exports2.single = single;
  }
});

// node_modules/rxjs/dist/cjs/internal/operators/skip.js
var require_skip = __commonJS({
  "node_modules/rxjs/dist/cjs/internal/operators/skip.js"(exports2) {
    "use strict";
    Object.defineProperty(exports2, "__esModule", { value: true });
    exports2.skip = void 0;
    var filter_1 = require_filter();
    function skip(count) {
      return filter_1.filter(function(_, index) {
        return count <= index;
      });
    }
    exports2.skip = skip;
  }
});

// node_modules/rxjs/dist/cjs/internal/operators/skipLast.js
var require_skipLast = __commonJS({
  "node_modules/rxjs/dist/cjs/internal/operators/skipLast.js"(exports2) {
    "use strict";
    Object.defineProperty(exports2, "__esModule", { value: true });
    exports2.skipLast = void 0;
    var identity_1 = require_identity();
    var lift_1 = require_lift();
    var OperatorSubscriber_1 = require_OperatorSubscriber();
    function skipLast(skipCount) {
      return skipCount <= 0 ? identity_1.identity : lift_1.operate(function(source, subscriber) {
        var ring = new Array(skipCount);
        var seen = 0;
        source.subscribe(OperatorSubscriber_1.createOperatorSubscriber(subscriber, function(value) {
          var valueIndex = seen++;
          if (valueIndex < skipCount) {
            ring[valueIndex] = value;
          } else {
            var index = valueIndex % skipCount;
            var oldValue = ring[index];
            ring[index] = value;
            subscriber.next(oldValue);
          }
        }));
        return function() {
          ring = null;
        };
      });
    }
    exports2.skipLast = skipLast;
  }
});

// node_modules/rxjs/dist/cjs/internal/operators/skipUntil.js
var require_skipUntil = __commonJS({
  "node_modules/rxjs/dist/cjs/internal/operators/skipUntil.js"(exports2) {
    "use strict";
    Object.defineProperty(exports2, "__esModule", { value: true });
    exports2.skipUntil = void 0;
    var lift_1 = require_lift();
    var OperatorSubscriber_1 = require_OperatorSubscriber();
    var innerFrom_1 = require_innerFrom();
    var noop_1 = require_noop();
    function skipUntil(notifier) {
      return lift_1.operate(function(source, subscriber) {
        var taking = false;
        var skipSubscriber = OperatorSubscriber_1.createOperatorSubscriber(subscriber, function() {
          skipSubscriber === null || skipSubscriber === void 0 ? void 0 : skipSubscriber.unsubscribe();
          taking = true;
        }, noop_1.noop);
        innerFrom_1.innerFrom(notifier).subscribe(skipSubscriber);
        source.subscribe(OperatorSubscriber_1.createOperatorSubscriber(subscriber, function(value) {
          return taking && subscriber.next(value);
        }));
      });
    }
    exports2.skipUntil = skipUntil;
  }
});

// node_modules/rxjs/dist/cjs/internal/operators/skipWhile.js
var require_skipWhile = __commonJS({
  "node_modules/rxjs/dist/cjs/internal/operators/skipWhile.js"(exports2) {
    "use strict";
    Object.defineProperty(exports2, "__esModule", { value: true });
    exports2.skipWhile = void 0;
    var lift_1 = require_lift();
    var OperatorSubscriber_1 = require_OperatorSubscriber();
    function skipWhile(predicate) {
      return lift_1.operate(function(source, subscriber) {
        var taking = false;
        var index = 0;
        source.subscribe(OperatorSubscriber_1.createOperatorSubscriber(subscriber, function(value) {
          return (taking || (taking = !predicate(value, index++))) && subscriber.next(value);
        }));
      });
    }
    exports2.skipWhile = skipWhile;
  }
});

// node_modules/rxjs/dist/cjs/internal/operators/startWith.js
var require_startWith = __commonJS({
  "node_modules/rxjs/dist/cjs/internal/operators/startWith.js"(exports2) {
    "use strict";
    Object.defineProperty(exports2, "__esModule", { value: true });
    exports2.startWith = void 0;
    var concat_1 = require_concat();
    var args_1 = require_args();
    var lift_1 = require_lift();
    function startWith() {
      var values = [];
      for (var _i = 0; _i < arguments.length; _i++) {
        values[_i] = arguments[_i];
      }
      var scheduler = args_1.popScheduler(values);
      return lift_1.operate(function(source, subscriber) {
        (scheduler ? concat_1.concat(values, source, scheduler) : concat_1.concat(values, source)).subscribe(subscriber);
      });
    }
    exports2.startWith = startWith;
  }
});

// node_modules/rxjs/dist/cjs/internal/operators/switchMap.js
var require_switchMap = __commonJS({
  "node_modules/rxjs/dist/cjs/internal/operators/switchMap.js"(exports2) {
    "use strict";
    Object.defineProperty(exports2, "__esModule", { value: true });
    exports2.switchMap = void 0;
    var innerFrom_1 = require_innerFrom();
    var lift_1 = require_lift();
    var OperatorSubscriber_1 = require_OperatorSubscriber();
    function switchMap(project, resultSelector) {
      return lift_1.operate(function(source, subscriber) {
        var innerSubscriber = null;
        var index = 0;
        var isComplete = false;
        var checkComplete = function() {
          return isComplete && !innerSubscriber && subscriber.complete();
        };
        source.subscribe(OperatorSubscriber_1.createOperatorSubscriber(subscriber, function(value) {
          innerSubscriber === null || innerSubscriber === void 0 ? void 0 : innerSubscriber.unsubscribe();
          var innerIndex = 0;
          var outerIndex = index++;
          innerFrom_1.innerFrom(project(value, outerIndex)).subscribe(innerSubscriber = OperatorSubscriber_1.createOperatorSubscriber(subscriber, function(innerValue) {
            return subscriber.next(resultSelector ? resultSelector(value, innerValue, outerIndex, innerIndex++) : innerValue);
          }, function() {
            innerSubscriber = null;
            checkComplete();
          }));
        }, function() {
          isComplete = true;
          checkComplete();
        }));
      });
    }
    exports2.switchMap = switchMap;
  }
});

// node_modules/rxjs/dist/cjs/internal/operators/switchAll.js
var require_switchAll = __commonJS({
  "node_modules/rxjs/dist/cjs/internal/operators/switchAll.js"(exports2) {
    "use strict";
    Object.defineProperty(exports2, "__esModule", { value: true });
    exports2.switchAll = void 0;
    var switchMap_1 = require_switchMap();
    var identity_1 = require_identity();
    function switchAll() {
      return switchMap_1.switchMap(identity_1.identity);
    }
    exports2.switchAll = switchAll;
  }
});

// node_modules/rxjs/dist/cjs/internal/operators/switchMapTo.js
var require_switchMapTo = __commonJS({
  "node_modules/rxjs/dist/cjs/internal/operators/switchMapTo.js"(exports2) {
    "use strict";
    Object.defineProperty(exports2, "__esModule", { value: true });
    exports2.switchMapTo = void 0;
    var switchMap_1 = require_switchMap();
    var isFunction_1 = require_isFunction();
    function switchMapTo(innerObservable, resultSelector) {
      return isFunction_1.isFunction(resultSelector) ? switchMap_1.switchMap(function() {
        return innerObservable;
      }, resultSelector) : switchMap_1.switchMap(function() {
        return innerObservable;
      });
    }
    exports2.switchMapTo = switchMapTo;
  }
});

// node_modules/rxjs/dist/cjs/internal/operators/switchScan.js
var require_switchScan = __commonJS({
  "node_modules/rxjs/dist/cjs/internal/operators/switchScan.js"(exports2) {
    "use strict";
    Object.defineProperty(exports2, "__esModule", { value: true });
    exports2.switchScan = void 0;
    var switchMap_1 = require_switchMap();
    var lift_1 = require_lift();
    function switchScan(accumulator, seed) {
      return lift_1.operate(function(source, subscriber) {
        var state = seed;
        switchMap_1.switchMap(function(value, index) {
          return accumulator(state, value, index);
        }, function(_, innerValue) {
          return state = innerValue, innerValue;
        })(source).subscribe(subscriber);
        return function() {
          state = null;
        };
      });
    }
    exports2.switchScan = switchScan;
  }
});

// node_modules/rxjs/dist/cjs/internal/operators/takeUntil.js
var require_takeUntil = __commonJS({
  "node_modules/rxjs/dist/cjs/internal/operators/takeUntil.js"(exports2) {
    "use strict";
    Object.defineProperty(exports2, "__esModule", { value: true });
    exports2.takeUntil = void 0;
    var lift_1 = require_lift();
    var OperatorSubscriber_1 = require_OperatorSubscriber();
    var innerFrom_1 = require_innerFrom();
    var noop_1 = require_noop();
    function takeUntil(notifier) {
      return lift_1.operate(function(source, subscriber) {
        innerFrom_1.innerFrom(notifier).subscribe(OperatorSubscriber_1.createOperatorSubscriber(subscriber, function() {
          return subscriber.complete();
        }, noop_1.noop));
        !subscriber.closed && source.subscribe(subscriber);
      });
    }
    exports2.takeUntil = takeUntil;
  }
});

// node_modules/rxjs/dist/cjs/internal/operators/takeWhile.js
var require_takeWhile = __commonJS({
  "node_modules/rxjs/dist/cjs/internal/operators/takeWhile.js"(exports2) {
    "use strict";
    Object.defineProperty(exports2, "__esModule", { value: true });
    exports2.takeWhile = void 0;
    var lift_1 = require_lift();
    var OperatorSubscriber_1 = require_OperatorSubscriber();
    function takeWhile(predicate, inclusive) {
      if (inclusive === void 0) {
        inclusive = false;
      }
      return lift_1.operate(function(source, subscriber) {
        var index = 0;
        source.subscribe(OperatorSubscriber_1.createOperatorSubscriber(subscriber, function(value) {
          var result = predicate(value, index++);
          (result || inclusive) && subscriber.next(value);
          !result && subscriber.complete();
        }));
      });
    }
    exports2.takeWhile = takeWhile;
  }
});

// node_modules/rxjs/dist/cjs/internal/operators/tap.js
var require_tap = __commonJS({
  "node_modules/rxjs/dist/cjs/internal/operators/tap.js"(exports2) {
    "use strict";
    Object.defineProperty(exports2, "__esModule", { value: true });
    exports2.tap = void 0;
    var isFunction_1 = require_isFunction();
    var lift_1 = require_lift();
    var OperatorSubscriber_1 = require_OperatorSubscriber();
    var identity_1 = require_identity();
    function tap(observerOrNext, error, complete) {
      var tapObserver = isFunction_1.isFunction(observerOrNext) || error || complete ? { next: observerOrNext, error, complete } : observerOrNext;
      return tapObserver ? lift_1.operate(function(source, subscriber) {
        var _a2;
        (_a2 = tapObserver.subscribe) === null || _a2 === void 0 ? void 0 : _a2.call(tapObserver);
        var isUnsub = true;
        source.subscribe(OperatorSubscriber_1.createOperatorSubscriber(subscriber, function(value) {
          var _a3;
          (_a3 = tapObserver.next) === null || _a3 === void 0 ? void 0 : _a3.call(tapObserver, value);
          subscriber.next(value);
        }, function() {
          var _a3;
          isUnsub = false;
          (_a3 = tapObserver.complete) === null || _a3 === void 0 ? void 0 : _a3.call(tapObserver);
          subscriber.complete();
        }, function(err) {
          var _a3;
          isUnsub = false;
          (_a3 = tapObserver.error) === null || _a3 === void 0 ? void 0 : _a3.call(tapObserver, err);
          subscriber.error(err);
        }, function() {
          var _a3, _b;
          if (isUnsub) {
            (_a3 = tapObserver.unsubscribe) === null || _a3 === void 0 ? void 0 : _a3.call(tapObserver);
          }
          (_b = tapObserver.finalize) === null || _b === void 0 ? void 0 : _b.call(tapObserver);
        }));
      }) : identity_1.identity;
    }
    exports2.tap = tap;
  }
});

// node_modules/rxjs/dist/cjs/internal/operators/throttle.js
var require_throttle = __commonJS({
  "node_modules/rxjs/dist/cjs/internal/operators/throttle.js"(exports2) {
    "use strict";
    Object.defineProperty(exports2, "__esModule", { value: true });
    exports2.throttle = void 0;
    var lift_1 = require_lift();
    var OperatorSubscriber_1 = require_OperatorSubscriber();
    var innerFrom_1 = require_innerFrom();
    function throttle(durationSelector, config) {
      return lift_1.operate(function(source, subscriber) {
        var _a2 = config !== null && config !== void 0 ? config : {}, _b = _a2.leading, leading = _b === void 0 ? true : _b, _c = _a2.trailing, trailing = _c === void 0 ? false : _c;
        var hasValue = false;
        var sendValue = null;
        var throttled = null;
        var isComplete = false;
        var endThrottling = function() {
          throttled === null || throttled === void 0 ? void 0 : throttled.unsubscribe();
          throttled = null;
          if (trailing) {
            send();
            isComplete && subscriber.complete();
          }
        };
        var cleanupThrottling = function() {
          throttled = null;
          isComplete && subscriber.complete();
        };
        var startThrottle = function(value) {
          return throttled = innerFrom_1.innerFrom(durationSelector(value)).subscribe(OperatorSubscriber_1.createOperatorSubscriber(subscriber, endThrottling, cleanupThrottling));
        };
        var send = function() {
          if (hasValue) {
            hasValue = false;
            var value = sendValue;
            sendValue = null;
            subscriber.next(value);
            !isComplete && startThrottle(value);
          }
        };
        source.subscribe(OperatorSubscriber_1.createOperatorSubscriber(subscriber, function(value) {
          hasValue = true;
          sendValue = value;
          !(throttled && !throttled.closed) && (leading ? send() : startThrottle(value));
        }, function() {
          isComplete = true;
          !(trailing && hasValue && throttled && !throttled.closed) && subscriber.complete();
        }));
      });
    }
    exports2.throttle = throttle;
  }
});

// node_modules/rxjs/dist/cjs/internal/operators/throttleTime.js
var require_throttleTime = __commonJS({
  "node_modules/rxjs/dist/cjs/internal/operators/throttleTime.js"(exports2) {
    "use strict";
    Object.defineProperty(exports2, "__esModule", { value: true });
    exports2.throttleTime = void 0;
    var async_1 = require_async();
    var throttle_1 = require_throttle();
    var timer_1 = require_timer();
    function throttleTime(duration, scheduler, config) {
      if (scheduler === void 0) {
        scheduler = async_1.asyncScheduler;
      }
      var duration$ = timer_1.timer(duration, scheduler);
      return throttle_1.throttle(function() {
        return duration$;
      }, config);
    }
    exports2.throttleTime = throttleTime;
  }
});

// node_modules/rxjs/dist/cjs/internal/operators/timeInterval.js
var require_timeInterval = __commonJS({
  "node_modules/rxjs/dist/cjs/internal/operators/timeInterval.js"(exports2) {
    "use strict";
    Object.defineProperty(exports2, "__esModule", { value: true });
    exports2.TimeInterval = exports2.timeInterval = void 0;
    var async_1 = require_async();
    var lift_1 = require_lift();
    var OperatorSubscriber_1 = require_OperatorSubscriber();
    function timeInterval(scheduler) {
      if (scheduler === void 0) {
        scheduler = async_1.asyncScheduler;
      }
      return lift_1.operate(function(source, subscriber) {
        var last = scheduler.now();
        source.subscribe(OperatorSubscriber_1.createOperatorSubscriber(subscriber, function(value) {
          var now = scheduler.now();
          var interval = now - last;
          last = now;
          subscriber.next(new TimeInterval(value, interval));
        }));
      });
    }
    exports2.timeInterval = timeInterval;
    var TimeInterval = /* @__PURE__ */ (function() {
      function TimeInterval2(value, interval) {
        this.value = value;
        this.interval = interval;
      }
      return TimeInterval2;
    })();
    exports2.TimeInterval = TimeInterval;
  }
});

// node_modules/rxjs/dist/cjs/internal/operators/timeoutWith.js
var require_timeoutWith = __commonJS({
  "node_modules/rxjs/dist/cjs/internal/operators/timeoutWith.js"(exports2) {
    "use strict";
    Object.defineProperty(exports2, "__esModule", { value: true });
    exports2.timeoutWith = void 0;
    var async_1 = require_async();
    var isDate_1 = require_isDate();
    var timeout_1 = require_timeout();
    function timeoutWith(due, withObservable, scheduler) {
      var first;
      var each;
      var _with;
      scheduler = scheduler !== null && scheduler !== void 0 ? scheduler : async_1.async;
      if (isDate_1.isValidDate(due)) {
        first = due;
      } else if (typeof due === "number") {
        each = due;
      }
      if (withObservable) {
        _with = function() {
          return withObservable;
        };
      } else {
        throw new TypeError("No observable provided to switch to");
      }
      if (first == null && each == null) {
        throw new TypeError("No timeout provided.");
      }
      return timeout_1.timeout({
        first,
        each,
        scheduler,
        with: _with
      });
    }
    exports2.timeoutWith = timeoutWith;
  }
});

// node_modules/rxjs/dist/cjs/internal/operators/timestamp.js
var require_timestamp = __commonJS({
  "node_modules/rxjs/dist/cjs/internal/operators/timestamp.js"(exports2) {
    "use strict";
    Object.defineProperty(exports2, "__esModule", { value: true });
    exports2.timestamp = void 0;
    var dateTimestampProvider_1 = require_dateTimestampProvider();
    var map_1 = require_map();
    function timestamp(timestampProvider) {
      if (timestampProvider === void 0) {
        timestampProvider = dateTimestampProvider_1.dateTimestampProvider;
      }
      return map_1.map(function(value) {
        return { value, timestamp: timestampProvider.now() };
      });
    }
    exports2.timestamp = timestamp;
  }
});

// node_modules/rxjs/dist/cjs/internal/operators/window.js
var require_window = __commonJS({
  "node_modules/rxjs/dist/cjs/internal/operators/window.js"(exports2) {
    "use strict";
    Object.defineProperty(exports2, "__esModule", { value: true });
    exports2.window = void 0;
    var Subject_1 = require_Subject();
    var lift_1 = require_lift();
    var OperatorSubscriber_1 = require_OperatorSubscriber();
    var noop_1 = require_noop();
    var innerFrom_1 = require_innerFrom();
    function window10(windowBoundaries) {
      return lift_1.operate(function(source, subscriber) {
        var windowSubject = new Subject_1.Subject();
        subscriber.next(windowSubject.asObservable());
        var errorHandler = function(err) {
          windowSubject.error(err);
          subscriber.error(err);
        };
        source.subscribe(OperatorSubscriber_1.createOperatorSubscriber(subscriber, function(value) {
          return windowSubject === null || windowSubject === void 0 ? void 0 : windowSubject.next(value);
        }, function() {
          windowSubject.complete();
          subscriber.complete();
        }, errorHandler));
        innerFrom_1.innerFrom(windowBoundaries).subscribe(OperatorSubscriber_1.createOperatorSubscriber(subscriber, function() {
          windowSubject.complete();
          subscriber.next(windowSubject = new Subject_1.Subject());
        }, noop_1.noop, errorHandler));
        return function() {
          windowSubject === null || windowSubject === void 0 ? void 0 : windowSubject.unsubscribe();
          windowSubject = null;
        };
      });
    }
    exports2.window = window10;
  }
});

// node_modules/rxjs/dist/cjs/internal/operators/windowCount.js
var require_windowCount = __commonJS({
  "node_modules/rxjs/dist/cjs/internal/operators/windowCount.js"(exports2) {
    "use strict";
    var __values = exports2 && exports2.__values || function(o) {
      var s = typeof Symbol === "function" && Symbol.iterator, m = s && o[s], i = 0;
      if (m) return m.call(o);
      if (o && typeof o.length === "number") return {
        next: function() {
          if (o && i >= o.length) o = void 0;
          return { value: o && o[i++], done: !o };
        }
      };
      throw new TypeError(s ? "Object is not iterable." : "Symbol.iterator is not defined.");
    };
    Object.defineProperty(exports2, "__esModule", { value: true });
    exports2.windowCount = void 0;
    var Subject_1 = require_Subject();
    var lift_1 = require_lift();
    var OperatorSubscriber_1 = require_OperatorSubscriber();
    function windowCount(windowSize, startWindowEvery) {
      if (startWindowEvery === void 0) {
        startWindowEvery = 0;
      }
      var startEvery = startWindowEvery > 0 ? startWindowEvery : windowSize;
      return lift_1.operate(function(source, subscriber) {
        var windows = [new Subject_1.Subject()];
        var starts = [];
        var count = 0;
        subscriber.next(windows[0].asObservable());
        source.subscribe(OperatorSubscriber_1.createOperatorSubscriber(subscriber, function(value) {
          var e_1, _a2;
          try {
            for (var windows_1 = __values(windows), windows_1_1 = windows_1.next(); !windows_1_1.done; windows_1_1 = windows_1.next()) {
              var window_1 = windows_1_1.value;
              window_1.next(value);
            }
          } catch (e_1_1) {
            e_1 = { error: e_1_1 };
          } finally {
            try {
              if (windows_1_1 && !windows_1_1.done && (_a2 = windows_1.return)) _a2.call(windows_1);
            } finally {
              if (e_1) throw e_1.error;
            }
          }
          var c = count - windowSize + 1;
          if (c >= 0 && c % startEvery === 0) {
            windows.shift().complete();
          }
          if (++count % startEvery === 0) {
            var window_2 = new Subject_1.Subject();
            windows.push(window_2);
            subscriber.next(window_2.asObservable());
          }
        }, function() {
          while (windows.length > 0) {
            windows.shift().complete();
          }
          subscriber.complete();
        }, function(err) {
          while (windows.length > 0) {
            windows.shift().error(err);
          }
          subscriber.error(err);
        }, function() {
          starts = null;
          windows = null;
        }));
      });
    }
    exports2.windowCount = windowCount;
  }
});

// node_modules/rxjs/dist/cjs/internal/operators/windowTime.js
var require_windowTime = __commonJS({
  "node_modules/rxjs/dist/cjs/internal/operators/windowTime.js"(exports2) {
    "use strict";
    Object.defineProperty(exports2, "__esModule", { value: true });
    exports2.windowTime = void 0;
    var Subject_1 = require_Subject();
    var async_1 = require_async();
    var Subscription_1 = require_Subscription();
    var lift_1 = require_lift();
    var OperatorSubscriber_1 = require_OperatorSubscriber();
    var arrRemove_1 = require_arrRemove();
    var args_1 = require_args();
    var executeSchedule_1 = require_executeSchedule();
    function windowTime(windowTimeSpan) {
      var _a2, _b;
      var otherArgs = [];
      for (var _i = 1; _i < arguments.length; _i++) {
        otherArgs[_i - 1] = arguments[_i];
      }
      var scheduler = (_a2 = args_1.popScheduler(otherArgs)) !== null && _a2 !== void 0 ? _a2 : async_1.asyncScheduler;
      var windowCreationInterval = (_b = otherArgs[0]) !== null && _b !== void 0 ? _b : null;
      var maxWindowSize = otherArgs[1] || Infinity;
      return lift_1.operate(function(source, subscriber) {
        var windowRecords = [];
        var restartOnClose = false;
        var closeWindow = function(record) {
          var window10 = record.window, subs = record.subs;
          window10.complete();
          subs.unsubscribe();
          arrRemove_1.arrRemove(windowRecords, record);
          restartOnClose && startWindow();
        };
        var startWindow = function() {
          if (windowRecords) {
            var subs = new Subscription_1.Subscription();
            subscriber.add(subs);
            var window_1 = new Subject_1.Subject();
            var record_1 = {
              window: window_1,
              subs,
              seen: 0
            };
            windowRecords.push(record_1);
            subscriber.next(window_1.asObservable());
            executeSchedule_1.executeSchedule(subs, scheduler, function() {
              return closeWindow(record_1);
            }, windowTimeSpan);
          }
        };
        if (windowCreationInterval !== null && windowCreationInterval >= 0) {
          executeSchedule_1.executeSchedule(subscriber, scheduler, startWindow, windowCreationInterval, true);
        } else {
          restartOnClose = true;
        }
        startWindow();
        var loop = function(cb) {
          return windowRecords.slice().forEach(cb);
        };
        var terminate = function(cb) {
          loop(function(_a3) {
            var window10 = _a3.window;
            return cb(window10);
          });
          cb(subscriber);
          subscriber.unsubscribe();
        };
        source.subscribe(OperatorSubscriber_1.createOperatorSubscriber(subscriber, function(value) {
          loop(function(record) {
            record.window.next(value);
            maxWindowSize <= ++record.seen && closeWindow(record);
          });
        }, function() {
          return terminate(function(consumer) {
            return consumer.complete();
          });
        }, function(err) {
          return terminate(function(consumer) {
            return consumer.error(err);
          });
        }));
        return function() {
          windowRecords = null;
        };
      });
    }
    exports2.windowTime = windowTime;
  }
});

// node_modules/rxjs/dist/cjs/internal/operators/windowToggle.js
var require_windowToggle = __commonJS({
  "node_modules/rxjs/dist/cjs/internal/operators/windowToggle.js"(exports2) {
    "use strict";
    var __values = exports2 && exports2.__values || function(o) {
      var s = typeof Symbol === "function" && Symbol.iterator, m = s && o[s], i = 0;
      if (m) return m.call(o);
      if (o && typeof o.length === "number") return {
        next: function() {
          if (o && i >= o.length) o = void 0;
          return { value: o && o[i++], done: !o };
        }
      };
      throw new TypeError(s ? "Object is not iterable." : "Symbol.iterator is not defined.");
    };
    Object.defineProperty(exports2, "__esModule", { value: true });
    exports2.windowToggle = void 0;
    var Subject_1 = require_Subject();
    var Subscription_1 = require_Subscription();
    var lift_1 = require_lift();
    var innerFrom_1 = require_innerFrom();
    var OperatorSubscriber_1 = require_OperatorSubscriber();
    var noop_1 = require_noop();
    var arrRemove_1 = require_arrRemove();
    function windowToggle(openings, closingSelector) {
      return lift_1.operate(function(source, subscriber) {
        var windows = [];
        var handleError = function(err) {
          while (0 < windows.length) {
            windows.shift().error(err);
          }
          subscriber.error(err);
        };
        innerFrom_1.innerFrom(openings).subscribe(OperatorSubscriber_1.createOperatorSubscriber(subscriber, function(openValue) {
          var window10 = new Subject_1.Subject();
          windows.push(window10);
          var closingSubscription = new Subscription_1.Subscription();
          var closeWindow = function() {
            arrRemove_1.arrRemove(windows, window10);
            window10.complete();
            closingSubscription.unsubscribe();
          };
          var closingNotifier;
          try {
            closingNotifier = innerFrom_1.innerFrom(closingSelector(openValue));
          } catch (err) {
            handleError(err);
            return;
          }
          subscriber.next(window10.asObservable());
          closingSubscription.add(closingNotifier.subscribe(OperatorSubscriber_1.createOperatorSubscriber(subscriber, closeWindow, noop_1.noop, handleError)));
        }, noop_1.noop));
        source.subscribe(OperatorSubscriber_1.createOperatorSubscriber(subscriber, function(value) {
          var e_1, _a2;
          var windowsCopy = windows.slice();
          try {
            for (var windowsCopy_1 = __values(windowsCopy), windowsCopy_1_1 = windowsCopy_1.next(); !windowsCopy_1_1.done; windowsCopy_1_1 = windowsCopy_1.next()) {
              var window_1 = windowsCopy_1_1.value;
              window_1.next(value);
            }
          } catch (e_1_1) {
            e_1 = { error: e_1_1 };
          } finally {
            try {
              if (windowsCopy_1_1 && !windowsCopy_1_1.done && (_a2 = windowsCopy_1.return)) _a2.call(windowsCopy_1);
            } finally {
              if (e_1) throw e_1.error;
            }
          }
        }, function() {
          while (0 < windows.length) {
            windows.shift().complete();
          }
          subscriber.complete();
        }, handleError, function() {
          while (0 < windows.length) {
            windows.shift().unsubscribe();
          }
        }));
      });
    }
    exports2.windowToggle = windowToggle;
  }
});

// node_modules/rxjs/dist/cjs/internal/operators/windowWhen.js
var require_windowWhen = __commonJS({
  "node_modules/rxjs/dist/cjs/internal/operators/windowWhen.js"(exports2) {
    "use strict";
    Object.defineProperty(exports2, "__esModule", { value: true });
    exports2.windowWhen = void 0;
    var Subject_1 = require_Subject();
    var lift_1 = require_lift();
    var OperatorSubscriber_1 = require_OperatorSubscriber();
    var innerFrom_1 = require_innerFrom();
    function windowWhen(closingSelector) {
      return lift_1.operate(function(source, subscriber) {
        var window10;
        var closingSubscriber;
        var handleError = function(err) {
          window10.error(err);
          subscriber.error(err);
        };
        var openWindow = function() {
          closingSubscriber === null || closingSubscriber === void 0 ? void 0 : closingSubscriber.unsubscribe();
          window10 === null || window10 === void 0 ? void 0 : window10.complete();
          window10 = new Subject_1.Subject();
          subscriber.next(window10.asObservable());
          var closingNotifier;
          try {
            closingNotifier = innerFrom_1.innerFrom(closingSelector());
          } catch (err) {
            handleError(err);
            return;
          }
          closingNotifier.subscribe(closingSubscriber = OperatorSubscriber_1.createOperatorSubscriber(subscriber, openWindow, openWindow, handleError));
        };
        openWindow();
        source.subscribe(OperatorSubscriber_1.createOperatorSubscriber(subscriber, function(value) {
          return window10.next(value);
        }, function() {
          window10.complete();
          subscriber.complete();
        }, handleError, function() {
          closingSubscriber === null || closingSubscriber === void 0 ? void 0 : closingSubscriber.unsubscribe();
          window10 = null;
        }));
      });
    }
    exports2.windowWhen = windowWhen;
  }
});

// node_modules/rxjs/dist/cjs/internal/operators/withLatestFrom.js
var require_withLatestFrom = __commonJS({
  "node_modules/rxjs/dist/cjs/internal/operators/withLatestFrom.js"(exports2) {
    "use strict";
    var __read = exports2 && exports2.__read || function(o, n) {
      var m = typeof Symbol === "function" && o[Symbol.iterator];
      if (!m) return o;
      var i = m.call(o), r, ar = [], e;
      try {
        while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);
      } catch (error) {
        e = { error };
      } finally {
        try {
          if (r && !r.done && (m = i["return"])) m.call(i);
        } finally {
          if (e) throw e.error;
        }
      }
      return ar;
    };
    var __spreadArray = exports2 && exports2.__spreadArray || function(to, from) {
      for (var i = 0, il = from.length, j = to.length; i < il; i++, j++)
        to[j] = from[i];
      return to;
    };
    Object.defineProperty(exports2, "__esModule", { value: true });
    exports2.withLatestFrom = void 0;
    var lift_1 = require_lift();
    var OperatorSubscriber_1 = require_OperatorSubscriber();
    var innerFrom_1 = require_innerFrom();
    var identity_1 = require_identity();
    var noop_1 = require_noop();
    var args_1 = require_args();
    function withLatestFrom() {
      var inputs = [];
      for (var _i = 0; _i < arguments.length; _i++) {
        inputs[_i] = arguments[_i];
      }
      var project = args_1.popResultSelector(inputs);
      return lift_1.operate(function(source, subscriber) {
        var len = inputs.length;
        var otherValues = new Array(len);
        var hasValue = inputs.map(function() {
          return false;
        });
        var ready = false;
        var _loop_1 = function(i2) {
          innerFrom_1.innerFrom(inputs[i2]).subscribe(OperatorSubscriber_1.createOperatorSubscriber(subscriber, function(value) {
            otherValues[i2] = value;
            if (!ready && !hasValue[i2]) {
              hasValue[i2] = true;
              (ready = hasValue.every(identity_1.identity)) && (hasValue = null);
            }
          }, noop_1.noop));
        };
        for (var i = 0; i < len; i++) {
          _loop_1(i);
        }
        source.subscribe(OperatorSubscriber_1.createOperatorSubscriber(subscriber, function(value) {
          if (ready) {
            var values = __spreadArray([value], __read(otherValues));
            subscriber.next(project ? project.apply(void 0, __spreadArray([], __read(values))) : values);
          }
        }));
      });
    }
    exports2.withLatestFrom = withLatestFrom;
  }
});

// node_modules/rxjs/dist/cjs/internal/operators/zipAll.js
var require_zipAll = __commonJS({
  "node_modules/rxjs/dist/cjs/internal/operators/zipAll.js"(exports2) {
    "use strict";
    Object.defineProperty(exports2, "__esModule", { value: true });
    exports2.zipAll = void 0;
    var zip_1 = require_zip();
    var joinAllInternals_1 = require_joinAllInternals();
    function zipAll(project) {
      return joinAllInternals_1.joinAllInternals(zip_1.zip, project);
    }
    exports2.zipAll = zipAll;
  }
});

// node_modules/rxjs/dist/cjs/internal/operators/zip.js
var require_zip2 = __commonJS({
  "node_modules/rxjs/dist/cjs/internal/operators/zip.js"(exports2) {
    "use strict";
    var __read = exports2 && exports2.__read || function(o, n) {
      var m = typeof Symbol === "function" && o[Symbol.iterator];
      if (!m) return o;
      var i = m.call(o), r, ar = [], e;
      try {
        while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);
      } catch (error) {
        e = { error };
      } finally {
        try {
          if (r && !r.done && (m = i["return"])) m.call(i);
        } finally {
          if (e) throw e.error;
        }
      }
      return ar;
    };
    var __spreadArray = exports2 && exports2.__spreadArray || function(to, from) {
      for (var i = 0, il = from.length, j = to.length; i < il; i++, j++)
        to[j] = from[i];
      return to;
    };
    Object.defineProperty(exports2, "__esModule", { value: true });
    exports2.zip = void 0;
    var zip_1 = require_zip();
    var lift_1 = require_lift();
    function zip() {
      var sources3 = [];
      for (var _i = 0; _i < arguments.length; _i++) {
        sources3[_i] = arguments[_i];
      }
      return lift_1.operate(function(source, subscriber) {
        zip_1.zip.apply(void 0, __spreadArray([source], __read(sources3))).subscribe(subscriber);
      });
    }
    exports2.zip = zip;
  }
});

// node_modules/rxjs/dist/cjs/internal/operators/zipWith.js
var require_zipWith = __commonJS({
  "node_modules/rxjs/dist/cjs/internal/operators/zipWith.js"(exports2) {
    "use strict";
    var __read = exports2 && exports2.__read || function(o, n) {
      var m = typeof Symbol === "function" && o[Symbol.iterator];
      if (!m) return o;
      var i = m.call(o), r, ar = [], e;
      try {
        while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);
      } catch (error) {
        e = { error };
      } finally {
        try {
          if (r && !r.done && (m = i["return"])) m.call(i);
        } finally {
          if (e) throw e.error;
        }
      }
      return ar;
    };
    var __spreadArray = exports2 && exports2.__spreadArray || function(to, from) {
      for (var i = 0, il = from.length, j = to.length; i < il; i++, j++)
        to[j] = from[i];
      return to;
    };
    Object.defineProperty(exports2, "__esModule", { value: true });
    exports2.zipWith = void 0;
    var zip_1 = require_zip2();
    function zipWith() {
      var otherInputs = [];
      for (var _i = 0; _i < arguments.length; _i++) {
        otherInputs[_i] = arguments[_i];
      }
      return zip_1.zip.apply(void 0, __spreadArray([], __read(otherInputs)));
    }
    exports2.zipWith = zipWith;
  }
});

// node_modules/rxjs/dist/cjs/index.js
var require_cjs = __commonJS({
  "node_modules/rxjs/dist/cjs/index.js"(exports2) {
    "use strict";
    var __createBinding = exports2 && exports2.__createBinding || (Object.create ? (function(o, m, k, k2) {
      if (k2 === void 0) k2 = k;
      Object.defineProperty(o, k2, { enumerable: true, get: function() {
        return m[k];
      } });
    }) : (function(o, m, k, k2) {
      if (k2 === void 0) k2 = k;
      o[k2] = m[k];
    }));
    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.interval = exports2.iif = exports2.generate = exports2.fromEventPattern = exports2.fromEvent = exports2.from = exports2.forkJoin = exports2.empty = exports2.defer = exports2.connectable = exports2.concat = exports2.combineLatest = exports2.bindNodeCallback = exports2.bindCallback = exports2.UnsubscriptionError = exports2.TimeoutError = exports2.SequenceError = exports2.ObjectUnsubscribedError = exports2.NotFoundError = exports2.EmptyError = exports2.ArgumentOutOfRangeError = exports2.firstValueFrom = exports2.lastValueFrom = exports2.isObservable = exports2.identity = exports2.noop = exports2.pipe = exports2.NotificationKind = exports2.Notification = exports2.Subscriber = exports2.Subscription = exports2.Scheduler = exports2.VirtualAction = exports2.VirtualTimeScheduler = exports2.animationFrameScheduler = exports2.animationFrame = exports2.queueScheduler = exports2.queue = exports2.asyncScheduler = exports2.async = exports2.asapScheduler = exports2.asap = exports2.AsyncSubject = exports2.ReplaySubject = exports2.BehaviorSubject = exports2.Subject = exports2.animationFrames = exports2.observable = exports2.ConnectableObservable = exports2.Observable = void 0;
    exports2.filter = exports2.expand = exports2.exhaustMap = exports2.exhaustAll = exports2.exhaust = exports2.every = exports2.endWith = exports2.elementAt = exports2.distinctUntilKeyChanged = exports2.distinctUntilChanged = exports2.distinct = exports2.dematerialize = exports2.delayWhen = exports2.delay = exports2.defaultIfEmpty = exports2.debounceTime = exports2.debounce = exports2.count = exports2.connect = exports2.concatWith = exports2.concatMapTo = exports2.concatMap = exports2.concatAll = exports2.combineLatestWith = exports2.combineLatestAll = exports2.combineAll = exports2.catchError = exports2.bufferWhen = exports2.bufferToggle = exports2.bufferTime = exports2.bufferCount = exports2.buffer = exports2.auditTime = exports2.audit = exports2.config = exports2.NEVER = exports2.EMPTY = exports2.scheduled = exports2.zip = exports2.using = exports2.timer = exports2.throwError = exports2.range = exports2.race = exports2.partition = exports2.pairs = exports2.onErrorResumeNext = exports2.of = exports2.never = exports2.merge = void 0;
    exports2.switchMap = exports2.switchAll = exports2.subscribeOn = exports2.startWith = exports2.skipWhile = exports2.skipUntil = exports2.skipLast = exports2.skip = exports2.single = exports2.shareReplay = exports2.share = exports2.sequenceEqual = exports2.scan = exports2.sampleTime = exports2.sample = exports2.refCount = exports2.retryWhen = exports2.retry = exports2.repeatWhen = exports2.repeat = exports2.reduce = exports2.raceWith = exports2.publishReplay = exports2.publishLast = exports2.publishBehavior = exports2.publish = exports2.pluck = exports2.pairwise = exports2.onErrorResumeNextWith = exports2.observeOn = exports2.multicast = exports2.min = exports2.mergeWith = exports2.mergeScan = exports2.mergeMapTo = exports2.mergeMap = exports2.flatMap = exports2.mergeAll = exports2.max = exports2.materialize = exports2.mapTo = exports2.map = exports2.last = exports2.isEmpty = exports2.ignoreElements = exports2.groupBy = exports2.first = exports2.findIndex = exports2.find = exports2.finalize = void 0;
    exports2.zipWith = exports2.zipAll = exports2.withLatestFrom = exports2.windowWhen = exports2.windowToggle = exports2.windowTime = exports2.windowCount = exports2.window = exports2.toArray = exports2.timestamp = exports2.timeoutWith = exports2.timeout = exports2.timeInterval = exports2.throwIfEmpty = exports2.throttleTime = exports2.throttle = exports2.tap = exports2.takeWhile = exports2.takeUntil = exports2.takeLast = exports2.take = exports2.switchScan = exports2.switchMapTo = void 0;
    var Observable_1 = require_Observable();
    Object.defineProperty(exports2, "Observable", { enumerable: true, get: function() {
      return Observable_1.Observable;
    } });
    var ConnectableObservable_1 = require_ConnectableObservable();
    Object.defineProperty(exports2, "ConnectableObservable", { enumerable: true, get: function() {
      return ConnectableObservable_1.ConnectableObservable;
    } });
    var observable_1 = require_observable();
    Object.defineProperty(exports2, "observable", { enumerable: true, get: function() {
      return observable_1.observable;
    } });
    var animationFrames_1 = require_animationFrames();
    Object.defineProperty(exports2, "animationFrames", { enumerable: true, get: function() {
      return animationFrames_1.animationFrames;
    } });
    var Subject_1 = require_Subject();
    Object.defineProperty(exports2, "Subject", { enumerable: true, get: function() {
      return Subject_1.Subject;
    } });
    var BehaviorSubject_1 = require_BehaviorSubject();
    Object.defineProperty(exports2, "BehaviorSubject", { enumerable: true, get: function() {
      return BehaviorSubject_1.BehaviorSubject;
    } });
    var ReplaySubject_1 = require_ReplaySubject();
    Object.defineProperty(exports2, "ReplaySubject", { enumerable: true, get: function() {
      return ReplaySubject_1.ReplaySubject;
    } });
    var AsyncSubject_1 = require_AsyncSubject();
    Object.defineProperty(exports2, "AsyncSubject", { enumerable: true, get: function() {
      return AsyncSubject_1.AsyncSubject;
    } });
    var asap_1 = require_asap();
    Object.defineProperty(exports2, "asap", { enumerable: true, get: function() {
      return asap_1.asap;
    } });
    Object.defineProperty(exports2, "asapScheduler", { enumerable: true, get: function() {
      return asap_1.asapScheduler;
    } });
    var async_1 = require_async();
    Object.defineProperty(exports2, "async", { enumerable: true, get: function() {
      return async_1.async;
    } });
    Object.defineProperty(exports2, "asyncScheduler", { enumerable: true, get: function() {
      return async_1.asyncScheduler;
    } });
    var queue_1 = require_queue();
    Object.defineProperty(exports2, "queue", { enumerable: true, get: function() {
      return queue_1.queue;
    } });
    Object.defineProperty(exports2, "queueScheduler", { enumerable: true, get: function() {
      return queue_1.queueScheduler;
    } });
    var animationFrame_1 = require_animationFrame();
    Object.defineProperty(exports2, "animationFrame", { enumerable: true, get: function() {
      return animationFrame_1.animationFrame;
    } });
    Object.defineProperty(exports2, "animationFrameScheduler", { enumerable: true, get: function() {
      return animationFrame_1.animationFrameScheduler;
    } });
    var VirtualTimeScheduler_1 = require_VirtualTimeScheduler();
    Object.defineProperty(exports2, "VirtualTimeScheduler", { enumerable: true, get: function() {
      return VirtualTimeScheduler_1.VirtualTimeScheduler;
    } });
    Object.defineProperty(exports2, "VirtualAction", { enumerable: true, get: function() {
      return VirtualTimeScheduler_1.VirtualAction;
    } });
    var Scheduler_1 = require_Scheduler();
    Object.defineProperty(exports2, "Scheduler", { enumerable: true, get: function() {
      return Scheduler_1.Scheduler;
    } });
    var Subscription_1 = require_Subscription();
    Object.defineProperty(exports2, "Subscription", { enumerable: true, get: function() {
      return Subscription_1.Subscription;
    } });
    var Subscriber_1 = require_Subscriber();
    Object.defineProperty(exports2, "Subscriber", { enumerable: true, get: function() {
      return Subscriber_1.Subscriber;
    } });
    var Notification_1 = require_Notification();
    Object.defineProperty(exports2, "Notification", { enumerable: true, get: function() {
      return Notification_1.Notification;
    } });
    Object.defineProperty(exports2, "NotificationKind", { enumerable: true, get: function() {
      return Notification_1.NotificationKind;
    } });
    var pipe_1 = require_pipe();
    Object.defineProperty(exports2, "pipe", { enumerable: true, get: function() {
      return pipe_1.pipe;
    } });
    var noop_1 = require_noop();
    Object.defineProperty(exports2, "noop", { enumerable: true, get: function() {
      return noop_1.noop;
    } });
    var identity_1 = require_identity();
    Object.defineProperty(exports2, "identity", { enumerable: true, get: function() {
      return identity_1.identity;
    } });
    var isObservable_1 = require_isObservable();
    Object.defineProperty(exports2, "isObservable", { enumerable: true, get: function() {
      return isObservable_1.isObservable;
    } });
    var lastValueFrom_1 = require_lastValueFrom();
    Object.defineProperty(exports2, "lastValueFrom", { enumerable: true, get: function() {
      return lastValueFrom_1.lastValueFrom;
    } });
    var firstValueFrom_1 = require_firstValueFrom();
    Object.defineProperty(exports2, "firstValueFrom", { enumerable: true, get: function() {
      return firstValueFrom_1.firstValueFrom;
    } });
    var ArgumentOutOfRangeError_1 = require_ArgumentOutOfRangeError();
    Object.defineProperty(exports2, "ArgumentOutOfRangeError", { enumerable: true, get: function() {
      return ArgumentOutOfRangeError_1.ArgumentOutOfRangeError;
    } });
    var EmptyError_1 = require_EmptyError();
    Object.defineProperty(exports2, "EmptyError", { enumerable: true, get: function() {
      return EmptyError_1.EmptyError;
    } });
    var NotFoundError_1 = require_NotFoundError();
    Object.defineProperty(exports2, "NotFoundError", { enumerable: true, get: function() {
      return NotFoundError_1.NotFoundError;
    } });
    var ObjectUnsubscribedError_1 = require_ObjectUnsubscribedError();
    Object.defineProperty(exports2, "ObjectUnsubscribedError", { enumerable: true, get: function() {
      return ObjectUnsubscribedError_1.ObjectUnsubscribedError;
    } });
    var SequenceError_1 = require_SequenceError();
    Object.defineProperty(exports2, "SequenceError", { enumerable: true, get: function() {
      return SequenceError_1.SequenceError;
    } });
    var timeout_1 = require_timeout();
    Object.defineProperty(exports2, "TimeoutError", { enumerable: true, get: function() {
      return timeout_1.TimeoutError;
    } });
    var UnsubscriptionError_1 = require_UnsubscriptionError();
    Object.defineProperty(exports2, "UnsubscriptionError", { enumerable: true, get: function() {
      return UnsubscriptionError_1.UnsubscriptionError;
    } });
    var bindCallback_1 = require_bindCallback();
    Object.defineProperty(exports2, "bindCallback", { enumerable: true, get: function() {
      return bindCallback_1.bindCallback;
    } });
    var bindNodeCallback_1 = require_bindNodeCallback();
    Object.defineProperty(exports2, "bindNodeCallback", { enumerable: true, get: function() {
      return bindNodeCallback_1.bindNodeCallback;
    } });
    var combineLatest_1 = require_combineLatest();
    Object.defineProperty(exports2, "combineLatest", { enumerable: true, get: function() {
      return combineLatest_1.combineLatest;
    } });
    var concat_1 = require_concat();
    Object.defineProperty(exports2, "concat", { enumerable: true, get: function() {
      return concat_1.concat;
    } });
    var connectable_1 = require_connectable();
    Object.defineProperty(exports2, "connectable", { enumerable: true, get: function() {
      return connectable_1.connectable;
    } });
    var defer_1 = require_defer();
    Object.defineProperty(exports2, "defer", { enumerable: true, get: function() {
      return defer_1.defer;
    } });
    var empty_1 = require_empty();
    Object.defineProperty(exports2, "empty", { enumerable: true, get: function() {
      return empty_1.empty;
    } });
    var forkJoin_1 = require_forkJoin();
    Object.defineProperty(exports2, "forkJoin", { enumerable: true, get: function() {
      return forkJoin_1.forkJoin;
    } });
    var from_1 = require_from();
    Object.defineProperty(exports2, "from", { enumerable: true, get: function() {
      return from_1.from;
    } });
    var fromEvent_1 = require_fromEvent();
    Object.defineProperty(exports2, "fromEvent", { enumerable: true, get: function() {
      return fromEvent_1.fromEvent;
    } });
    var fromEventPattern_1 = require_fromEventPattern();
    Object.defineProperty(exports2, "fromEventPattern", { enumerable: true, get: function() {
      return fromEventPattern_1.fromEventPattern;
    } });
    var generate_1 = require_generate();
    Object.defineProperty(exports2, "generate", { enumerable: true, get: function() {
      return generate_1.generate;
    } });
    var iif_1 = require_iif();
    Object.defineProperty(exports2, "iif", { enumerable: true, get: function() {
      return iif_1.iif;
    } });
    var interval_1 = require_interval();
    Object.defineProperty(exports2, "interval", { enumerable: true, get: function() {
      return interval_1.interval;
    } });
    var merge_1 = require_merge();
    Object.defineProperty(exports2, "merge", { enumerable: true, get: function() {
      return merge_1.merge;
    } });
    var never_1 = require_never();
    Object.defineProperty(exports2, "never", { enumerable: true, get: function() {
      return never_1.never;
    } });
    var of_1 = require_of();
    Object.defineProperty(exports2, "of", { enumerable: true, get: function() {
      return of_1.of;
    } });
    var onErrorResumeNext_1 = require_onErrorResumeNext();
    Object.defineProperty(exports2, "onErrorResumeNext", { enumerable: true, get: function() {
      return onErrorResumeNext_1.onErrorResumeNext;
    } });
    var pairs_1 = require_pairs();
    Object.defineProperty(exports2, "pairs", { enumerable: true, get: function() {
      return pairs_1.pairs;
    } });
    var partition_1 = require_partition();
    Object.defineProperty(exports2, "partition", { enumerable: true, get: function() {
      return partition_1.partition;
    } });
    var race_1 = require_race();
    Object.defineProperty(exports2, "race", { enumerable: true, get: function() {
      return race_1.race;
    } });
    var range_1 = require_range();
    Object.defineProperty(exports2, "range", { enumerable: true, get: function() {
      return range_1.range;
    } });
    var throwError_1 = require_throwError();
    Object.defineProperty(exports2, "throwError", { enumerable: true, get: function() {
      return throwError_1.throwError;
    } });
    var timer_1 = require_timer();
    Object.defineProperty(exports2, "timer", { enumerable: true, get: function() {
      return timer_1.timer;
    } });
    var using_1 = require_using();
    Object.defineProperty(exports2, "using", { enumerable: true, get: function() {
      return using_1.using;
    } });
    var zip_1 = require_zip();
    Object.defineProperty(exports2, "zip", { enumerable: true, get: function() {
      return zip_1.zip;
    } });
    var scheduled_1 = require_scheduled();
    Object.defineProperty(exports2, "scheduled", { enumerable: true, get: function() {
      return scheduled_1.scheduled;
    } });
    var empty_2 = require_empty();
    Object.defineProperty(exports2, "EMPTY", { enumerable: true, get: function() {
      return empty_2.EMPTY;
    } });
    var never_2 = require_never();
    Object.defineProperty(exports2, "NEVER", { enumerable: true, get: function() {
      return never_2.NEVER;
    } });
    __exportStar(require_types(), exports2);
    var config_1 = require_config();
    Object.defineProperty(exports2, "config", { enumerable: true, get: function() {
      return config_1.config;
    } });
    var audit_1 = require_audit();
    Object.defineProperty(exports2, "audit", { enumerable: true, get: function() {
      return audit_1.audit;
    } });
    var auditTime_1 = require_auditTime();
    Object.defineProperty(exports2, "auditTime", { enumerable: true, get: function() {
      return auditTime_1.auditTime;
    } });
    var buffer_1 = require_buffer();
    Object.defineProperty(exports2, "buffer", { enumerable: true, get: function() {
      return buffer_1.buffer;
    } });
    var bufferCount_1 = require_bufferCount();
    Object.defineProperty(exports2, "bufferCount", { enumerable: true, get: function() {
      return bufferCount_1.bufferCount;
    } });
    var bufferTime_1 = require_bufferTime();
    Object.defineProperty(exports2, "bufferTime", { enumerable: true, get: function() {
      return bufferTime_1.bufferTime;
    } });
    var bufferToggle_1 = require_bufferToggle();
    Object.defineProperty(exports2, "bufferToggle", { enumerable: true, get: function() {
      return bufferToggle_1.bufferToggle;
    } });
    var bufferWhen_1 = require_bufferWhen();
    Object.defineProperty(exports2, "bufferWhen", { enumerable: true, get: function() {
      return bufferWhen_1.bufferWhen;
    } });
    var catchError_1 = require_catchError();
    Object.defineProperty(exports2, "catchError", { enumerable: true, get: function() {
      return catchError_1.catchError;
    } });
    var combineAll_1 = require_combineAll();
    Object.defineProperty(exports2, "combineAll", { enumerable: true, get: function() {
      return combineAll_1.combineAll;
    } });
    var combineLatestAll_1 = require_combineLatestAll();
    Object.defineProperty(exports2, "combineLatestAll", { enumerable: true, get: function() {
      return combineLatestAll_1.combineLatestAll;
    } });
    var combineLatestWith_1 = require_combineLatestWith();
    Object.defineProperty(exports2, "combineLatestWith", { enumerable: true, get: function() {
      return combineLatestWith_1.combineLatestWith;
    } });
    var concatAll_1 = require_concatAll();
    Object.defineProperty(exports2, "concatAll", { enumerable: true, get: function() {
      return concatAll_1.concatAll;
    } });
    var concatMap_1 = require_concatMap();
    Object.defineProperty(exports2, "concatMap", { enumerable: true, get: function() {
      return concatMap_1.concatMap;
    } });
    var concatMapTo_1 = require_concatMapTo();
    Object.defineProperty(exports2, "concatMapTo", { enumerable: true, get: function() {
      return concatMapTo_1.concatMapTo;
    } });
    var concatWith_1 = require_concatWith();
    Object.defineProperty(exports2, "concatWith", { enumerable: true, get: function() {
      return concatWith_1.concatWith;
    } });
    var connect_1 = require_connect();
    Object.defineProperty(exports2, "connect", { enumerable: true, get: function() {
      return connect_1.connect;
    } });
    var count_1 = require_count();
    Object.defineProperty(exports2, "count", { enumerable: true, get: function() {
      return count_1.count;
    } });
    var debounce_1 = require_debounce();
    Object.defineProperty(exports2, "debounce", { enumerable: true, get: function() {
      return debounce_1.debounce;
    } });
    var debounceTime_1 = require_debounceTime();
    Object.defineProperty(exports2, "debounceTime", { enumerable: true, get: function() {
      return debounceTime_1.debounceTime;
    } });
    var defaultIfEmpty_1 = require_defaultIfEmpty();
    Object.defineProperty(exports2, "defaultIfEmpty", { enumerable: true, get: function() {
      return defaultIfEmpty_1.defaultIfEmpty;
    } });
    var delay_1 = require_delay();
    Object.defineProperty(exports2, "delay", { enumerable: true, get: function() {
      return delay_1.delay;
    } });
    var delayWhen_1 = require_delayWhen();
    Object.defineProperty(exports2, "delayWhen", { enumerable: true, get: function() {
      return delayWhen_1.delayWhen;
    } });
    var dematerialize_1 = require_dematerialize();
    Object.defineProperty(exports2, "dematerialize", { enumerable: true, get: function() {
      return dematerialize_1.dematerialize;
    } });
    var distinct_1 = require_distinct();
    Object.defineProperty(exports2, "distinct", { enumerable: true, get: function() {
      return distinct_1.distinct;
    } });
    var distinctUntilChanged_1 = require_distinctUntilChanged();
    Object.defineProperty(exports2, "distinctUntilChanged", { enumerable: true, get: function() {
      return distinctUntilChanged_1.distinctUntilChanged;
    } });
    var distinctUntilKeyChanged_1 = require_distinctUntilKeyChanged();
    Object.defineProperty(exports2, "distinctUntilKeyChanged", { enumerable: true, get: function() {
      return distinctUntilKeyChanged_1.distinctUntilKeyChanged;
    } });
    var elementAt_1 = require_elementAt();
    Object.defineProperty(exports2, "elementAt", { enumerable: true, get: function() {
      return elementAt_1.elementAt;
    } });
    var endWith_1 = require_endWith();
    Object.defineProperty(exports2, "endWith", { enumerable: true, get: function() {
      return endWith_1.endWith;
    } });
    var every_1 = require_every();
    Object.defineProperty(exports2, "every", { enumerable: true, get: function() {
      return every_1.every;
    } });
    var exhaust_1 = require_exhaust();
    Object.defineProperty(exports2, "exhaust", { enumerable: true, get: function() {
      return exhaust_1.exhaust;
    } });
    var exhaustAll_1 = require_exhaustAll();
    Object.defineProperty(exports2, "exhaustAll", { enumerable: true, get: function() {
      return exhaustAll_1.exhaustAll;
    } });
    var exhaustMap_1 = require_exhaustMap();
    Object.defineProperty(exports2, "exhaustMap", { enumerable: true, get: function() {
      return exhaustMap_1.exhaustMap;
    } });
    var expand_1 = require_expand();
    Object.defineProperty(exports2, "expand", { enumerable: true, get: function() {
      return expand_1.expand;
    } });
    var filter_1 = require_filter();
    Object.defineProperty(exports2, "filter", { enumerable: true, get: function() {
      return filter_1.filter;
    } });
    var finalize_1 = require_finalize();
    Object.defineProperty(exports2, "finalize", { enumerable: true, get: function() {
      return finalize_1.finalize;
    } });
    var find_1 = require_find();
    Object.defineProperty(exports2, "find", { enumerable: true, get: function() {
      return find_1.find;
    } });
    var findIndex_1 = require_findIndex();
    Object.defineProperty(exports2, "findIndex", { enumerable: true, get: function() {
      return findIndex_1.findIndex;
    } });
    var first_1 = require_first();
    Object.defineProperty(exports2, "first", { enumerable: true, get: function() {
      return first_1.first;
    } });
    var groupBy_1 = require_groupBy();
    Object.defineProperty(exports2, "groupBy", { enumerable: true, get: function() {
      return groupBy_1.groupBy;
    } });
    var ignoreElements_1 = require_ignoreElements();
    Object.defineProperty(exports2, "ignoreElements", { enumerable: true, get: function() {
      return ignoreElements_1.ignoreElements;
    } });
    var isEmpty_1 = require_isEmpty();
    Object.defineProperty(exports2, "isEmpty", { enumerable: true, get: function() {
      return isEmpty_1.isEmpty;
    } });
    var last_1 = require_last();
    Object.defineProperty(exports2, "last", { enumerable: true, get: function() {
      return last_1.last;
    } });
    var map_1 = require_map();
    Object.defineProperty(exports2, "map", { enumerable: true, get: function() {
      return map_1.map;
    } });
    var mapTo_1 = require_mapTo();
    Object.defineProperty(exports2, "mapTo", { enumerable: true, get: function() {
      return mapTo_1.mapTo;
    } });
    var materialize_1 = require_materialize();
    Object.defineProperty(exports2, "materialize", { enumerable: true, get: function() {
      return materialize_1.materialize;
    } });
    var max_1 = require_max();
    Object.defineProperty(exports2, "max", { enumerable: true, get: function() {
      return max_1.max;
    } });
    var mergeAll_1 = require_mergeAll();
    Object.defineProperty(exports2, "mergeAll", { enumerable: true, get: function() {
      return mergeAll_1.mergeAll;
    } });
    var flatMap_1 = require_flatMap();
    Object.defineProperty(exports2, "flatMap", { enumerable: true, get: function() {
      return flatMap_1.flatMap;
    } });
    var mergeMap_1 = require_mergeMap();
    Object.defineProperty(exports2, "mergeMap", { enumerable: true, get: function() {
      return mergeMap_1.mergeMap;
    } });
    var mergeMapTo_1 = require_mergeMapTo();
    Object.defineProperty(exports2, "mergeMapTo", { enumerable: true, get: function() {
      return mergeMapTo_1.mergeMapTo;
    } });
    var mergeScan_1 = require_mergeScan();
    Object.defineProperty(exports2, "mergeScan", { enumerable: true, get: function() {
      return mergeScan_1.mergeScan;
    } });
    var mergeWith_1 = require_mergeWith();
    Object.defineProperty(exports2, "mergeWith", { enumerable: true, get: function() {
      return mergeWith_1.mergeWith;
    } });
    var min_1 = require_min();
    Object.defineProperty(exports2, "min", { enumerable: true, get: function() {
      return min_1.min;
    } });
    var multicast_1 = require_multicast();
    Object.defineProperty(exports2, "multicast", { enumerable: true, get: function() {
      return multicast_1.multicast;
    } });
    var observeOn_1 = require_observeOn();
    Object.defineProperty(exports2, "observeOn", { enumerable: true, get: function() {
      return observeOn_1.observeOn;
    } });
    var onErrorResumeNextWith_1 = require_onErrorResumeNextWith();
    Object.defineProperty(exports2, "onErrorResumeNextWith", { enumerable: true, get: function() {
      return onErrorResumeNextWith_1.onErrorResumeNextWith;
    } });
    var pairwise_1 = require_pairwise();
    Object.defineProperty(exports2, "pairwise", { enumerable: true, get: function() {
      return pairwise_1.pairwise;
    } });
    var pluck_1 = require_pluck();
    Object.defineProperty(exports2, "pluck", { enumerable: true, get: function() {
      return pluck_1.pluck;
    } });
    var publish_1 = require_publish();
    Object.defineProperty(exports2, "publish", { enumerable: true, get: function() {
      return publish_1.publish;
    } });
    var publishBehavior_1 = require_publishBehavior();
    Object.defineProperty(exports2, "publishBehavior", { enumerable: true, get: function() {
      return publishBehavior_1.publishBehavior;
    } });
    var publishLast_1 = require_publishLast();
    Object.defineProperty(exports2, "publishLast", { enumerable: true, get: function() {
      return publishLast_1.publishLast;
    } });
    var publishReplay_1 = require_publishReplay();
    Object.defineProperty(exports2, "publishReplay", { enumerable: true, get: function() {
      return publishReplay_1.publishReplay;
    } });
    var raceWith_1 = require_raceWith();
    Object.defineProperty(exports2, "raceWith", { enumerable: true, get: function() {
      return raceWith_1.raceWith;
    } });
    var reduce_1 = require_reduce();
    Object.defineProperty(exports2, "reduce", { enumerable: true, get: function() {
      return reduce_1.reduce;
    } });
    var repeat_1 = require_repeat();
    Object.defineProperty(exports2, "repeat", { enumerable: true, get: function() {
      return repeat_1.repeat;
    } });
    var repeatWhen_1 = require_repeatWhen();
    Object.defineProperty(exports2, "repeatWhen", { enumerable: true, get: function() {
      return repeatWhen_1.repeatWhen;
    } });
    var retry_1 = require_retry();
    Object.defineProperty(exports2, "retry", { enumerable: true, get: function() {
      return retry_1.retry;
    } });
    var retryWhen_1 = require_retryWhen();
    Object.defineProperty(exports2, "retryWhen", { enumerable: true, get: function() {
      return retryWhen_1.retryWhen;
    } });
    var refCount_1 = require_refCount();
    Object.defineProperty(exports2, "refCount", { enumerable: true, get: function() {
      return refCount_1.refCount;
    } });
    var sample_1 = require_sample();
    Object.defineProperty(exports2, "sample", { enumerable: true, get: function() {
      return sample_1.sample;
    } });
    var sampleTime_1 = require_sampleTime();
    Object.defineProperty(exports2, "sampleTime", { enumerable: true, get: function() {
      return sampleTime_1.sampleTime;
    } });
    var scan_1 = require_scan();
    Object.defineProperty(exports2, "scan", { enumerable: true, get: function() {
      return scan_1.scan;
    } });
    var sequenceEqual_1 = require_sequenceEqual();
    Object.defineProperty(exports2, "sequenceEqual", { enumerable: true, get: function() {
      return sequenceEqual_1.sequenceEqual;
    } });
    var share_1 = require_share();
    Object.defineProperty(exports2, "share", { enumerable: true, get: function() {
      return share_1.share;
    } });
    var shareReplay_1 = require_shareReplay();
    Object.defineProperty(exports2, "shareReplay", { enumerable: true, get: function() {
      return shareReplay_1.shareReplay;
    } });
    var single_1 = require_single();
    Object.defineProperty(exports2, "single", { enumerable: true, get: function() {
      return single_1.single;
    } });
    var skip_1 = require_skip();
    Object.defineProperty(exports2, "skip", { enumerable: true, get: function() {
      return skip_1.skip;
    } });
    var skipLast_1 = require_skipLast();
    Object.defineProperty(exports2, "skipLast", { enumerable: true, get: function() {
      return skipLast_1.skipLast;
    } });
    var skipUntil_1 = require_skipUntil();
    Object.defineProperty(exports2, "skipUntil", { enumerable: true, get: function() {
      return skipUntil_1.skipUntil;
    } });
    var skipWhile_1 = require_skipWhile();
    Object.defineProperty(exports2, "skipWhile", { enumerable: true, get: function() {
      return skipWhile_1.skipWhile;
    } });
    var startWith_1 = require_startWith();
    Object.defineProperty(exports2, "startWith", { enumerable: true, get: function() {
      return startWith_1.startWith;
    } });
    var subscribeOn_1 = require_subscribeOn();
    Object.defineProperty(exports2, "subscribeOn", { enumerable: true, get: function() {
      return subscribeOn_1.subscribeOn;
    } });
    var switchAll_1 = require_switchAll();
    Object.defineProperty(exports2, "switchAll", { enumerable: true, get: function() {
      return switchAll_1.switchAll;
    } });
    var switchMap_1 = require_switchMap();
    Object.defineProperty(exports2, "switchMap", { enumerable: true, get: function() {
      return switchMap_1.switchMap;
    } });
    var switchMapTo_1 = require_switchMapTo();
    Object.defineProperty(exports2, "switchMapTo", { enumerable: true, get: function() {
      return switchMapTo_1.switchMapTo;
    } });
    var switchScan_1 = require_switchScan();
    Object.defineProperty(exports2, "switchScan", { enumerable: true, get: function() {
      return switchScan_1.switchScan;
    } });
    var take_1 = require_take();
    Object.defineProperty(exports2, "take", { enumerable: true, get: function() {
      return take_1.take;
    } });
    var takeLast_1 = require_takeLast();
    Object.defineProperty(exports2, "takeLast", { enumerable: true, get: function() {
      return takeLast_1.takeLast;
    } });
    var takeUntil_1 = require_takeUntil();
    Object.defineProperty(exports2, "takeUntil", { enumerable: true, get: function() {
      return takeUntil_1.takeUntil;
    } });
    var takeWhile_1 = require_takeWhile();
    Object.defineProperty(exports2, "takeWhile", { enumerable: true, get: function() {
      return takeWhile_1.takeWhile;
    } });
    var tap_1 = require_tap();
    Object.defineProperty(exports2, "tap", { enumerable: true, get: function() {
      return tap_1.tap;
    } });
    var throttle_1 = require_throttle();
    Object.defineProperty(exports2, "throttle", { enumerable: true, get: function() {
      return throttle_1.throttle;
    } });
    var throttleTime_1 = require_throttleTime();
    Object.defineProperty(exports2, "throttleTime", { enumerable: true, get: function() {
      return throttleTime_1.throttleTime;
    } });
    var throwIfEmpty_1 = require_throwIfEmpty();
    Object.defineProperty(exports2, "throwIfEmpty", { enumerable: true, get: function() {
      return throwIfEmpty_1.throwIfEmpty;
    } });
    var timeInterval_1 = require_timeInterval();
    Object.defineProperty(exports2, "timeInterval", { enumerable: true, get: function() {
      return timeInterval_1.timeInterval;
    } });
    var timeout_2 = require_timeout();
    Object.defineProperty(exports2, "timeout", { enumerable: true, get: function() {
      return timeout_2.timeout;
    } });
    var timeoutWith_1 = require_timeoutWith();
    Object.defineProperty(exports2, "timeoutWith", { enumerable: true, get: function() {
      return timeoutWith_1.timeoutWith;
    } });
    var timestamp_1 = require_timestamp();
    Object.defineProperty(exports2, "timestamp", { enumerable: true, get: function() {
      return timestamp_1.timestamp;
    } });
    var toArray_1 = require_toArray();
    Object.defineProperty(exports2, "toArray", { enumerable: true, get: function() {
      return toArray_1.toArray;
    } });
    var window_1 = require_window();
    Object.defineProperty(exports2, "window", { enumerable: true, get: function() {
      return window_1.window;
    } });
    var windowCount_1 = require_windowCount();
    Object.defineProperty(exports2, "windowCount", { enumerable: true, get: function() {
      return windowCount_1.windowCount;
    } });
    var windowTime_1 = require_windowTime();
    Object.defineProperty(exports2, "windowTime", { enumerable: true, get: function() {
      return windowTime_1.windowTime;
    } });
    var windowToggle_1 = require_windowToggle();
    Object.defineProperty(exports2, "windowToggle", { enumerable: true, get: function() {
      return windowToggle_1.windowToggle;
    } });
    var windowWhen_1 = require_windowWhen();
    Object.defineProperty(exports2, "windowWhen", { enumerable: true, get: function() {
      return windowWhen_1.windowWhen;
    } });
    var withLatestFrom_1 = require_withLatestFrom();
    Object.defineProperty(exports2, "withLatestFrom", { enumerable: true, get: function() {
      return withLatestFrom_1.withLatestFrom;
    } });
    var zipAll_1 = require_zipAll();
    Object.defineProperty(exports2, "zipAll", { enumerable: true, get: function() {
      return zipAll_1.zipAll;
    } });
    var zipWith_1 = require_zipWith();
    Object.defineProperty(exports2, "zipWith", { enumerable: true, get: function() {
      return zipWith_1.zipWith;
    } });
  }
});

// node_modules/tree-kill/index.js
var require_tree_kill = __commonJS({
  "node_modules/tree-kill/index.js"(exports2, module2) {
    "use strict";
    var childProcess = require("child_process");
    var spawn4 = childProcess.spawn;
    var exec = childProcess.exec;
    module2.exports = function(pid, signal, callback) {
      if (typeof signal === "function" && callback === void 0) {
        callback = signal;
        signal = void 0;
      }
      pid = parseInt(pid);
      if (Number.isNaN(pid)) {
        if (callback) {
          return callback(new Error("pid must be a number"));
        } else {
          throw new Error("pid must be a number");
        }
      }
      var tree = {};
      var pidsToProcess = {};
      tree[pid] = [];
      pidsToProcess[pid] = 1;
      switch (process.platform) {
        case "win32":
          exec("taskkill /pid " + pid + " /T /F", callback);
          break;
        case "darwin":
          buildProcessTree(pid, tree, pidsToProcess, function(parentPid) {
            return spawn4("pgrep", ["-P", parentPid]);
          }, function() {
            killAll(tree, signal, callback);
          });
          break;
        // case 'sunos':
        //     buildProcessTreeSunOS(pid, tree, pidsToProcess, function () {
        //         killAll(tree, signal, callback);
        //     });
        //     break;
        default:
          buildProcessTree(pid, tree, pidsToProcess, function(parentPid) {
            return spawn4("ps", ["-o", "pid", "--no-headers", "--ppid", parentPid]);
          }, function() {
            killAll(tree, signal, callback);
          });
          break;
      }
    };
    function killAll(tree, signal, callback) {
      var killed = {};
      try {
        Object.keys(tree).forEach(function(pid) {
          tree[pid].forEach(function(pidpid) {
            if (!killed[pidpid]) {
              killPid(pidpid, signal);
              killed[pidpid] = 1;
            }
          });
          if (!killed[pid]) {
            killPid(pid, signal);
            killed[pid] = 1;
          }
        });
      } catch (err) {
        if (callback) {
          return callback(err);
        } else {
          throw err;
        }
      }
      if (callback) {
        return callback();
      }
    }
    function killPid(pid, signal) {
      try {
        process.kill(parseInt(pid, 10), signal);
      } catch (err) {
        if (err.code !== "ESRCH") throw err;
      }
    }
    function buildProcessTree(parentPid, tree, pidsToProcess, spawnChildProcessesList, cb) {
      var ps = spawnChildProcessesList(parentPid);
      var allData = "";
      ps.stdout.on("data", function(data) {
        var data = data.toString("ascii");
        allData += data;
      });
      var onClose = function(code) {
        delete pidsToProcess[parentPid];
        if (code != 0) {
          if (Object.keys(pidsToProcess).length == 0) {
            cb();
          }
          return;
        }
        allData.match(/\d+/g).forEach(function(pid) {
          pid = parseInt(pid, 10);
          tree[parentPid].push(pid);
          tree[pid] = [];
          pidsToProcess[pid] = 1;
          buildProcessTree(pid, tree, pidsToProcess, spawnChildProcessesList, cb);
        });
      };
      ps.on("close", onClose);
    }
  }
});

// node_modules/diff-match-patch/index.js
var require_diff_match_patch = __commonJS({
  "node_modules/diff-match-patch/index.js"(exports2, module2) {
    var diff_match_patch2 = function() {
      this.Diff_Timeout = 1;
      this.Diff_EditCost = 4;
      this.Match_Threshold = 0.5;
      this.Match_Distance = 1e3;
      this.Patch_DeleteThreshold = 0.5;
      this.Patch_Margin = 4;
      this.Match_MaxBits = 32;
    };
    var DIFF_DELETE = -1;
    var DIFF_INSERT = 1;
    var DIFF_EQUAL = 0;
    diff_match_patch2.Diff = function(op, text) {
      return [op, text];
    };
    diff_match_patch2.prototype.diff_main = function(text1, text2, opt_checklines, opt_deadline) {
      if (typeof opt_deadline == "undefined") {
        if (this.Diff_Timeout <= 0) {
          opt_deadline = Number.MAX_VALUE;
        } else {
          opt_deadline = (/* @__PURE__ */ new Date()).getTime() + this.Diff_Timeout * 1e3;
        }
      }
      var deadline = opt_deadline;
      if (text1 == null || text2 == null) {
        throw new Error("Null input. (diff_main)");
      }
      if (text1 == text2) {
        if (text1) {
          return [new diff_match_patch2.Diff(DIFF_EQUAL, text1)];
        }
        return [];
      }
      if (typeof opt_checklines == "undefined") {
        opt_checklines = true;
      }
      var checklines = opt_checklines;
      var commonlength = this.diff_commonPrefix(text1, text2);
      var commonprefix = text1.substring(0, commonlength);
      text1 = text1.substring(commonlength);
      text2 = text2.substring(commonlength);
      commonlength = this.diff_commonSuffix(text1, text2);
      var commonsuffix = text1.substring(text1.length - commonlength);
      text1 = text1.substring(0, text1.length - commonlength);
      text2 = text2.substring(0, text2.length - commonlength);
      var diffs = this.diff_compute_(text1, text2, checklines, deadline);
      if (commonprefix) {
        diffs.unshift(new diff_match_patch2.Diff(DIFF_EQUAL, commonprefix));
      }
      if (commonsuffix) {
        diffs.push(new diff_match_patch2.Diff(DIFF_EQUAL, commonsuffix));
      }
      this.diff_cleanupMerge(diffs);
      return diffs;
    };
    diff_match_patch2.prototype.diff_compute_ = function(text1, text2, checklines, deadline) {
      var diffs;
      if (!text1) {
        return [new diff_match_patch2.Diff(DIFF_INSERT, text2)];
      }
      if (!text2) {
        return [new diff_match_patch2.Diff(DIFF_DELETE, text1)];
      }
      var longtext = text1.length > text2.length ? text1 : text2;
      var shorttext = text1.length > text2.length ? text2 : text1;
      var i = longtext.indexOf(shorttext);
      if (i != -1) {
        diffs = [
          new diff_match_patch2.Diff(DIFF_INSERT, longtext.substring(0, i)),
          new diff_match_patch2.Diff(DIFF_EQUAL, shorttext),
          new diff_match_patch2.Diff(
            DIFF_INSERT,
            longtext.substring(i + shorttext.length)
          )
        ];
        if (text1.length > text2.length) {
          diffs[0][0] = diffs[2][0] = DIFF_DELETE;
        }
        return diffs;
      }
      if (shorttext.length == 1) {
        return [
          new diff_match_patch2.Diff(DIFF_DELETE, text1),
          new diff_match_patch2.Diff(DIFF_INSERT, text2)
        ];
      }
      var hm = this.diff_halfMatch_(text1, text2);
      if (hm) {
        var text1_a = hm[0];
        var text1_b = hm[1];
        var text2_a = hm[2];
        var text2_b = hm[3];
        var mid_common = hm[4];
        var diffs_a = this.diff_main(text1_a, text2_a, checklines, deadline);
        var diffs_b = this.diff_main(text1_b, text2_b, checklines, deadline);
        return diffs_a.concat(
          [new diff_match_patch2.Diff(DIFF_EQUAL, mid_common)],
          diffs_b
        );
      }
      if (checklines && text1.length > 100 && text2.length > 100) {
        return this.diff_lineMode_(text1, text2, deadline);
      }
      return this.diff_bisect_(text1, text2, deadline);
    };
    diff_match_patch2.prototype.diff_lineMode_ = function(text1, text2, deadline) {
      var a = this.diff_linesToChars_(text1, text2);
      text1 = a.chars1;
      text2 = a.chars2;
      var linearray = a.lineArray;
      var diffs = this.diff_main(text1, text2, false, deadline);
      this.diff_charsToLines_(diffs, linearray);
      this.diff_cleanupSemantic(diffs);
      diffs.push(new diff_match_patch2.Diff(DIFF_EQUAL, ""));
      var pointer = 0;
      var count_delete = 0;
      var count_insert = 0;
      var text_delete = "";
      var text_insert = "";
      while (pointer < diffs.length) {
        switch (diffs[pointer][0]) {
          case DIFF_INSERT:
            count_insert++;
            text_insert += diffs[pointer][1];
            break;
          case DIFF_DELETE:
            count_delete++;
            text_delete += diffs[pointer][1];
            break;
          case DIFF_EQUAL:
            if (count_delete >= 1 && count_insert >= 1) {
              diffs.splice(
                pointer - count_delete - count_insert,
                count_delete + count_insert
              );
              pointer = pointer - count_delete - count_insert;
              var subDiff = this.diff_main(text_delete, text_insert, false, deadline);
              for (var j = subDiff.length - 1; j >= 0; j--) {
                diffs.splice(pointer, 0, subDiff[j]);
              }
              pointer = pointer + subDiff.length;
            }
            count_insert = 0;
            count_delete = 0;
            text_delete = "";
            text_insert = "";
            break;
        }
        pointer++;
      }
      diffs.pop();
      return diffs;
    };
    diff_match_patch2.prototype.diff_bisect_ = function(text1, text2, deadline) {
      var text1_length = text1.length;
      var text2_length = text2.length;
      var max_d = Math.ceil((text1_length + text2_length) / 2);
      var v_offset = max_d;
      var v_length = 2 * max_d;
      var v1 = new Array(v_length);
      var v2 = new Array(v_length);
      for (var x = 0; x < v_length; x++) {
        v1[x] = -1;
        v2[x] = -1;
      }
      v1[v_offset + 1] = 0;
      v2[v_offset + 1] = 0;
      var delta = text1_length - text2_length;
      var front = delta % 2 != 0;
      var k1start = 0;
      var k1end = 0;
      var k2start = 0;
      var k2end = 0;
      for (var d = 0; d < max_d; d++) {
        if ((/* @__PURE__ */ new Date()).getTime() > deadline) {
          break;
        }
        for (var k1 = -d + k1start; k1 <= d - k1end; k1 += 2) {
          var k1_offset = v_offset + k1;
          var x1;
          if (k1 == -d || k1 != d && v1[k1_offset - 1] < v1[k1_offset + 1]) {
            x1 = v1[k1_offset + 1];
          } else {
            x1 = v1[k1_offset - 1] + 1;
          }
          var y1 = x1 - k1;
          while (x1 < text1_length && y1 < text2_length && text1.charAt(x1) == text2.charAt(y1)) {
            x1++;
            y1++;
          }
          v1[k1_offset] = x1;
          if (x1 > text1_length) {
            k1end += 2;
          } else if (y1 > text2_length) {
            k1start += 2;
          } else if (front) {
            var k2_offset = v_offset + delta - k1;
            if (k2_offset >= 0 && k2_offset < v_length && v2[k2_offset] != -1) {
              var x2 = text1_length - v2[k2_offset];
              if (x1 >= x2) {
                return this.diff_bisectSplit_(text1, text2, x1, y1, deadline);
              }
            }
          }
        }
        for (var k2 = -d + k2start; k2 <= d - k2end; k2 += 2) {
          var k2_offset = v_offset + k2;
          var x2;
          if (k2 == -d || k2 != d && v2[k2_offset - 1] < v2[k2_offset + 1]) {
            x2 = v2[k2_offset + 1];
          } else {
            x2 = v2[k2_offset - 1] + 1;
          }
          var y2 = x2 - k2;
          while (x2 < text1_length && y2 < text2_length && text1.charAt(text1_length - x2 - 1) == text2.charAt(text2_length - y2 - 1)) {
            x2++;
            y2++;
          }
          v2[k2_offset] = x2;
          if (x2 > text1_length) {
            k2end += 2;
          } else if (y2 > text2_length) {
            k2start += 2;
          } else if (!front) {
            var k1_offset = v_offset + delta - k2;
            if (k1_offset >= 0 && k1_offset < v_length && v1[k1_offset] != -1) {
              var x1 = v1[k1_offset];
              var y1 = v_offset + x1 - k1_offset;
              x2 = text1_length - x2;
              if (x1 >= x2) {
                return this.diff_bisectSplit_(text1, text2, x1, y1, deadline);
              }
            }
          }
        }
      }
      return [
        new diff_match_patch2.Diff(DIFF_DELETE, text1),
        new diff_match_patch2.Diff(DIFF_INSERT, text2)
      ];
    };
    diff_match_patch2.prototype.diff_bisectSplit_ = function(text1, text2, x, y, deadline) {
      var text1a = text1.substring(0, x);
      var text2a = text2.substring(0, y);
      var text1b = text1.substring(x);
      var text2b = text2.substring(y);
      var diffs = this.diff_main(text1a, text2a, false, deadline);
      var diffsb = this.diff_main(text1b, text2b, false, deadline);
      return diffs.concat(diffsb);
    };
    diff_match_patch2.prototype.diff_linesToChars_ = function(text1, text2) {
      var lineArray = [];
      var lineHash = {};
      lineArray[0] = "";
      function diff_linesToCharsMunge_(text) {
        var chars = "";
        var lineStart = 0;
        var lineEnd = -1;
        var lineArrayLength = lineArray.length;
        while (lineEnd < text.length - 1) {
          lineEnd = text.indexOf("\n", lineStart);
          if (lineEnd == -1) {
            lineEnd = text.length - 1;
          }
          var line = text.substring(lineStart, lineEnd + 1);
          if (lineHash.hasOwnProperty ? lineHash.hasOwnProperty(line) : lineHash[line] !== void 0) {
            chars += String.fromCharCode(lineHash[line]);
          } else {
            if (lineArrayLength == maxLines) {
              line = text.substring(lineStart);
              lineEnd = text.length;
            }
            chars += String.fromCharCode(lineArrayLength);
            lineHash[line] = lineArrayLength;
            lineArray[lineArrayLength++] = line;
          }
          lineStart = lineEnd + 1;
        }
        return chars;
      }
      var maxLines = 4e4;
      var chars1 = diff_linesToCharsMunge_(text1);
      maxLines = 65535;
      var chars2 = diff_linesToCharsMunge_(text2);
      return { chars1, chars2, lineArray };
    };
    diff_match_patch2.prototype.diff_charsToLines_ = function(diffs, lineArray) {
      for (var i = 0; i < diffs.length; i++) {
        var chars = diffs[i][1];
        var text = [];
        for (var j = 0; j < chars.length; j++) {
          text[j] = lineArray[chars.charCodeAt(j)];
        }
        diffs[i][1] = text.join("");
      }
    };
    diff_match_patch2.prototype.diff_commonPrefix = function(text1, text2) {
      if (!text1 || !text2 || text1.charAt(0) != text2.charAt(0)) {
        return 0;
      }
      var pointermin = 0;
      var pointermax = Math.min(text1.length, text2.length);
      var pointermid = pointermax;
      var pointerstart = 0;
      while (pointermin < pointermid) {
        if (text1.substring(pointerstart, pointermid) == text2.substring(pointerstart, pointermid)) {
          pointermin = pointermid;
          pointerstart = pointermin;
        } else {
          pointermax = pointermid;
        }
        pointermid = Math.floor((pointermax - pointermin) / 2 + pointermin);
      }
      return pointermid;
    };
    diff_match_patch2.prototype.diff_commonSuffix = function(text1, text2) {
      if (!text1 || !text2 || text1.charAt(text1.length - 1) != text2.charAt(text2.length - 1)) {
        return 0;
      }
      var pointermin = 0;
      var pointermax = Math.min(text1.length, text2.length);
      var pointermid = pointermax;
      var pointerend = 0;
      while (pointermin < pointermid) {
        if (text1.substring(text1.length - pointermid, text1.length - pointerend) == text2.substring(text2.length - pointermid, text2.length - pointerend)) {
          pointermin = pointermid;
          pointerend = pointermin;
        } else {
          pointermax = pointermid;
        }
        pointermid = Math.floor((pointermax - pointermin) / 2 + pointermin);
      }
      return pointermid;
    };
    diff_match_patch2.prototype.diff_commonOverlap_ = function(text1, text2) {
      var text1_length = text1.length;
      var text2_length = text2.length;
      if (text1_length == 0 || text2_length == 0) {
        return 0;
      }
      if (text1_length > text2_length) {
        text1 = text1.substring(text1_length - text2_length);
      } else if (text1_length < text2_length) {
        text2 = text2.substring(0, text1_length);
      }
      var text_length = Math.min(text1_length, text2_length);
      if (text1 == text2) {
        return text_length;
      }
      var best = 0;
      var length = 1;
      while (true) {
        var pattern = text1.substring(text_length - length);
        var found = text2.indexOf(pattern);
        if (found == -1) {
          return best;
        }
        length += found;
        if (found == 0 || text1.substring(text_length - length) == text2.substring(0, length)) {
          best = length;
          length++;
        }
      }
    };
    diff_match_patch2.prototype.diff_halfMatch_ = function(text1, text2) {
      if (this.Diff_Timeout <= 0) {
        return null;
      }
      var longtext = text1.length > text2.length ? text1 : text2;
      var shorttext = text1.length > text2.length ? text2 : text1;
      if (longtext.length < 4 || shorttext.length * 2 < longtext.length) {
        return null;
      }
      var dmp = this;
      function diff_halfMatchI_(longtext2, shorttext2, i) {
        var seed = longtext2.substring(i, i + Math.floor(longtext2.length / 4));
        var j = -1;
        var best_common = "";
        var best_longtext_a, best_longtext_b, best_shorttext_a, best_shorttext_b;
        while ((j = shorttext2.indexOf(seed, j + 1)) != -1) {
          var prefixLength = dmp.diff_commonPrefix(
            longtext2.substring(i),
            shorttext2.substring(j)
          );
          var suffixLength = dmp.diff_commonSuffix(
            longtext2.substring(0, i),
            shorttext2.substring(0, j)
          );
          if (best_common.length < suffixLength + prefixLength) {
            best_common = shorttext2.substring(j - suffixLength, j) + shorttext2.substring(j, j + prefixLength);
            best_longtext_a = longtext2.substring(0, i - suffixLength);
            best_longtext_b = longtext2.substring(i + prefixLength);
            best_shorttext_a = shorttext2.substring(0, j - suffixLength);
            best_shorttext_b = shorttext2.substring(j + prefixLength);
          }
        }
        if (best_common.length * 2 >= longtext2.length) {
          return [
            best_longtext_a,
            best_longtext_b,
            best_shorttext_a,
            best_shorttext_b,
            best_common
          ];
        } else {
          return null;
        }
      }
      var hm1 = diff_halfMatchI_(
        longtext,
        shorttext,
        Math.ceil(longtext.length / 4)
      );
      var hm2 = diff_halfMatchI_(
        longtext,
        shorttext,
        Math.ceil(longtext.length / 2)
      );
      var hm;
      if (!hm1 && !hm2) {
        return null;
      } else if (!hm2) {
        hm = hm1;
      } else if (!hm1) {
        hm = hm2;
      } else {
        hm = hm1[4].length > hm2[4].length ? hm1 : hm2;
      }
      var text1_a, text1_b, text2_a, text2_b;
      if (text1.length > text2.length) {
        text1_a = hm[0];
        text1_b = hm[1];
        text2_a = hm[2];
        text2_b = hm[3];
      } else {
        text2_a = hm[0];
        text2_b = hm[1];
        text1_a = hm[2];
        text1_b = hm[3];
      }
      var mid_common = hm[4];
      return [text1_a, text1_b, text2_a, text2_b, mid_common];
    };
    diff_match_patch2.prototype.diff_cleanupSemantic = function(diffs) {
      var changes = false;
      var equalities = [];
      var equalitiesLength = 0;
      var lastEquality = null;
      var pointer = 0;
      var length_insertions1 = 0;
      var length_deletions1 = 0;
      var length_insertions2 = 0;
      var length_deletions2 = 0;
      while (pointer < diffs.length) {
        if (diffs[pointer][0] == DIFF_EQUAL) {
          equalities[equalitiesLength++] = pointer;
          length_insertions1 = length_insertions2;
          length_deletions1 = length_deletions2;
          length_insertions2 = 0;
          length_deletions2 = 0;
          lastEquality = diffs[pointer][1];
        } else {
          if (diffs[pointer][0] == DIFF_INSERT) {
            length_insertions2 += diffs[pointer][1].length;
          } else {
            length_deletions2 += diffs[pointer][1].length;
          }
          if (lastEquality && lastEquality.length <= Math.max(length_insertions1, length_deletions1) && lastEquality.length <= Math.max(
            length_insertions2,
            length_deletions2
          )) {
            diffs.splice(
              equalities[equalitiesLength - 1],
              0,
              new diff_match_patch2.Diff(DIFF_DELETE, lastEquality)
            );
            diffs[equalities[equalitiesLength - 1] + 1][0] = DIFF_INSERT;
            equalitiesLength--;
            equalitiesLength--;
            pointer = equalitiesLength > 0 ? equalities[equalitiesLength - 1] : -1;
            length_insertions1 = 0;
            length_deletions1 = 0;
            length_insertions2 = 0;
            length_deletions2 = 0;
            lastEquality = null;
            changes = true;
          }
        }
        pointer++;
      }
      if (changes) {
        this.diff_cleanupMerge(diffs);
      }
      this.diff_cleanupSemanticLossless(diffs);
      pointer = 1;
      while (pointer < diffs.length) {
        if (diffs[pointer - 1][0] == DIFF_DELETE && diffs[pointer][0] == DIFF_INSERT) {
          var deletion = diffs[pointer - 1][1];
          var insertion = diffs[pointer][1];
          var overlap_length1 = this.diff_commonOverlap_(deletion, insertion);
          var overlap_length2 = this.diff_commonOverlap_(insertion, deletion);
          if (overlap_length1 >= overlap_length2) {
            if (overlap_length1 >= deletion.length / 2 || overlap_length1 >= insertion.length / 2) {
              diffs.splice(pointer, 0, new diff_match_patch2.Diff(
                DIFF_EQUAL,
                insertion.substring(0, overlap_length1)
              ));
              diffs[pointer - 1][1] = deletion.substring(0, deletion.length - overlap_length1);
              diffs[pointer + 1][1] = insertion.substring(overlap_length1);
              pointer++;
            }
          } else {
            if (overlap_length2 >= deletion.length / 2 || overlap_length2 >= insertion.length / 2) {
              diffs.splice(pointer, 0, new diff_match_patch2.Diff(
                DIFF_EQUAL,
                deletion.substring(0, overlap_length2)
              ));
              diffs[pointer - 1][0] = DIFF_INSERT;
              diffs[pointer - 1][1] = insertion.substring(0, insertion.length - overlap_length2);
              diffs[pointer + 1][0] = DIFF_DELETE;
              diffs[pointer + 1][1] = deletion.substring(overlap_length2);
              pointer++;
            }
          }
          pointer++;
        }
        pointer++;
      }
    };
    diff_match_patch2.prototype.diff_cleanupSemanticLossless = function(diffs) {
      function diff_cleanupSemanticScore_(one, two) {
        if (!one || !two) {
          return 6;
        }
        var char1 = one.charAt(one.length - 1);
        var char2 = two.charAt(0);
        var nonAlphaNumeric1 = char1.match(diff_match_patch2.nonAlphaNumericRegex_);
        var nonAlphaNumeric2 = char2.match(diff_match_patch2.nonAlphaNumericRegex_);
        var whitespace1 = nonAlphaNumeric1 && char1.match(diff_match_patch2.whitespaceRegex_);
        var whitespace2 = nonAlphaNumeric2 && char2.match(diff_match_patch2.whitespaceRegex_);
        var lineBreak1 = whitespace1 && char1.match(diff_match_patch2.linebreakRegex_);
        var lineBreak2 = whitespace2 && char2.match(diff_match_patch2.linebreakRegex_);
        var blankLine1 = lineBreak1 && one.match(diff_match_patch2.blanklineEndRegex_);
        var blankLine2 = lineBreak2 && two.match(diff_match_patch2.blanklineStartRegex_);
        if (blankLine1 || blankLine2) {
          return 5;
        } else if (lineBreak1 || lineBreak2) {
          return 4;
        } else if (nonAlphaNumeric1 && !whitespace1 && whitespace2) {
          return 3;
        } else if (whitespace1 || whitespace2) {
          return 2;
        } else if (nonAlphaNumeric1 || nonAlphaNumeric2) {
          return 1;
        }
        return 0;
      }
      var pointer = 1;
      while (pointer < diffs.length - 1) {
        if (diffs[pointer - 1][0] == DIFF_EQUAL && diffs[pointer + 1][0] == DIFF_EQUAL) {
          var equality1 = diffs[pointer - 1][1];
          var edit = diffs[pointer][1];
          var equality2 = diffs[pointer + 1][1];
          var commonOffset = this.diff_commonSuffix(equality1, edit);
          if (commonOffset) {
            var commonString = edit.substring(edit.length - commonOffset);
            equality1 = equality1.substring(0, equality1.length - commonOffset);
            edit = commonString + edit.substring(0, edit.length - commonOffset);
            equality2 = commonString + equality2;
          }
          var bestEquality1 = equality1;
          var bestEdit = edit;
          var bestEquality2 = equality2;
          var bestScore = diff_cleanupSemanticScore_(equality1, edit) + diff_cleanupSemanticScore_(edit, equality2);
          while (edit.charAt(0) === equality2.charAt(0)) {
            equality1 += edit.charAt(0);
            edit = edit.substring(1) + equality2.charAt(0);
            equality2 = equality2.substring(1);
            var score = diff_cleanupSemanticScore_(equality1, edit) + diff_cleanupSemanticScore_(edit, equality2);
            if (score >= bestScore) {
              bestScore = score;
              bestEquality1 = equality1;
              bestEdit = edit;
              bestEquality2 = equality2;
            }
          }
          if (diffs[pointer - 1][1] != bestEquality1) {
            if (bestEquality1) {
              diffs[pointer - 1][1] = bestEquality1;
            } else {
              diffs.splice(pointer - 1, 1);
              pointer--;
            }
            diffs[pointer][1] = bestEdit;
            if (bestEquality2) {
              diffs[pointer + 1][1] = bestEquality2;
            } else {
              diffs.splice(pointer + 1, 1);
              pointer--;
            }
          }
        }
        pointer++;
      }
    };
    diff_match_patch2.nonAlphaNumericRegex_ = /[^a-zA-Z0-9]/;
    diff_match_patch2.whitespaceRegex_ = /\s/;
    diff_match_patch2.linebreakRegex_ = /[\r\n]/;
    diff_match_patch2.blanklineEndRegex_ = /\n\r?\n$/;
    diff_match_patch2.blanklineStartRegex_ = /^\r?\n\r?\n/;
    diff_match_patch2.prototype.diff_cleanupEfficiency = function(diffs) {
      var changes = false;
      var equalities = [];
      var equalitiesLength = 0;
      var lastEquality = null;
      var pointer = 0;
      var pre_ins = false;
      var pre_del = false;
      var post_ins = false;
      var post_del = false;
      while (pointer < diffs.length) {
        if (diffs[pointer][0] == DIFF_EQUAL) {
          if (diffs[pointer][1].length < this.Diff_EditCost && (post_ins || post_del)) {
            equalities[equalitiesLength++] = pointer;
            pre_ins = post_ins;
            pre_del = post_del;
            lastEquality = diffs[pointer][1];
          } else {
            equalitiesLength = 0;
            lastEquality = null;
          }
          post_ins = post_del = false;
        } else {
          if (diffs[pointer][0] == DIFF_DELETE) {
            post_del = true;
          } else {
            post_ins = true;
          }
          if (lastEquality && (pre_ins && pre_del && post_ins && post_del || lastEquality.length < this.Diff_EditCost / 2 && pre_ins + pre_del + post_ins + post_del == 3)) {
            diffs.splice(
              equalities[equalitiesLength - 1],
              0,
              new diff_match_patch2.Diff(DIFF_DELETE, lastEquality)
            );
            diffs[equalities[equalitiesLength - 1] + 1][0] = DIFF_INSERT;
            equalitiesLength--;
            lastEquality = null;
            if (pre_ins && pre_del) {
              post_ins = post_del = true;
              equalitiesLength = 0;
            } else {
              equalitiesLength--;
              pointer = equalitiesLength > 0 ? equalities[equalitiesLength - 1] : -1;
              post_ins = post_del = false;
            }
            changes = true;
          }
        }
        pointer++;
      }
      if (changes) {
        this.diff_cleanupMerge(diffs);
      }
    };
    diff_match_patch2.prototype.diff_cleanupMerge = function(diffs) {
      diffs.push(new diff_match_patch2.Diff(DIFF_EQUAL, ""));
      var pointer = 0;
      var count_delete = 0;
      var count_insert = 0;
      var text_delete = "";
      var text_insert = "";
      var commonlength;
      while (pointer < diffs.length) {
        switch (diffs[pointer][0]) {
          case DIFF_INSERT:
            count_insert++;
            text_insert += diffs[pointer][1];
            pointer++;
            break;
          case DIFF_DELETE:
            count_delete++;
            text_delete += diffs[pointer][1];
            pointer++;
            break;
          case DIFF_EQUAL:
            if (count_delete + count_insert > 1) {
              if (count_delete !== 0 && count_insert !== 0) {
                commonlength = this.diff_commonPrefix(text_insert, text_delete);
                if (commonlength !== 0) {
                  if (pointer - count_delete - count_insert > 0 && diffs[pointer - count_delete - count_insert - 1][0] == DIFF_EQUAL) {
                    diffs[pointer - count_delete - count_insert - 1][1] += text_insert.substring(0, commonlength);
                  } else {
                    diffs.splice(0, 0, new diff_match_patch2.Diff(
                      DIFF_EQUAL,
                      text_insert.substring(0, commonlength)
                    ));
                    pointer++;
                  }
                  text_insert = text_insert.substring(commonlength);
                  text_delete = text_delete.substring(commonlength);
                }
                commonlength = this.diff_commonSuffix(text_insert, text_delete);
                if (commonlength !== 0) {
                  diffs[pointer][1] = text_insert.substring(text_insert.length - commonlength) + diffs[pointer][1];
                  text_insert = text_insert.substring(0, text_insert.length - commonlength);
                  text_delete = text_delete.substring(0, text_delete.length - commonlength);
                }
              }
              pointer -= count_delete + count_insert;
              diffs.splice(pointer, count_delete + count_insert);
              if (text_delete.length) {
                diffs.splice(
                  pointer,
                  0,
                  new diff_match_patch2.Diff(DIFF_DELETE, text_delete)
                );
                pointer++;
              }
              if (text_insert.length) {
                diffs.splice(
                  pointer,
                  0,
                  new diff_match_patch2.Diff(DIFF_INSERT, text_insert)
                );
                pointer++;
              }
              pointer++;
            } else if (pointer !== 0 && diffs[pointer - 1][0] == DIFF_EQUAL) {
              diffs[pointer - 1][1] += diffs[pointer][1];
              diffs.splice(pointer, 1);
            } else {
              pointer++;
            }
            count_insert = 0;
            count_delete = 0;
            text_delete = "";
            text_insert = "";
            break;
        }
      }
      if (diffs[diffs.length - 1][1] === "") {
        diffs.pop();
      }
      var changes = false;
      pointer = 1;
      while (pointer < diffs.length - 1) {
        if (diffs[pointer - 1][0] == DIFF_EQUAL && diffs[pointer + 1][0] == DIFF_EQUAL) {
          if (diffs[pointer][1].substring(diffs[pointer][1].length - diffs[pointer - 1][1].length) == diffs[pointer - 1][1]) {
            diffs[pointer][1] = diffs[pointer - 1][1] + diffs[pointer][1].substring(0, diffs[pointer][1].length - diffs[pointer - 1][1].length);
            diffs[pointer + 1][1] = diffs[pointer - 1][1] + diffs[pointer + 1][1];
            diffs.splice(pointer - 1, 1);
            changes = true;
          } else if (diffs[pointer][1].substring(0, diffs[pointer + 1][1].length) == diffs[pointer + 1][1]) {
            diffs[pointer - 1][1] += diffs[pointer + 1][1];
            diffs[pointer][1] = diffs[pointer][1].substring(diffs[pointer + 1][1].length) + diffs[pointer + 1][1];
            diffs.splice(pointer + 1, 1);
            changes = true;
          }
        }
        pointer++;
      }
      if (changes) {
        this.diff_cleanupMerge(diffs);
      }
    };
    diff_match_patch2.prototype.diff_xIndex = function(diffs, loc) {
      var chars1 = 0;
      var chars2 = 0;
      var last_chars1 = 0;
      var last_chars2 = 0;
      var x;
      for (x = 0; x < diffs.length; x++) {
        if (diffs[x][0] !== DIFF_INSERT) {
          chars1 += diffs[x][1].length;
        }
        if (diffs[x][0] !== DIFF_DELETE) {
          chars2 += diffs[x][1].length;
        }
        if (chars1 > loc) {
          break;
        }
        last_chars1 = chars1;
        last_chars2 = chars2;
      }
      if (diffs.length != x && diffs[x][0] === DIFF_DELETE) {
        return last_chars2;
      }
      return last_chars2 + (loc - last_chars1);
    };
    diff_match_patch2.prototype.diff_prettyHtml = function(diffs) {
      var html = [];
      var pattern_amp = /&/g;
      var pattern_lt = /</g;
      var pattern_gt = />/g;
      var pattern_para = /\n/g;
      for (var x = 0; x < diffs.length; x++) {
        var op = diffs[x][0];
        var data = diffs[x][1];
        var text = data.replace(pattern_amp, "&amp;").replace(pattern_lt, "&lt;").replace(pattern_gt, "&gt;").replace(pattern_para, "&para;<br>");
        switch (op) {
          case DIFF_INSERT:
            html[x] = '<ins style="background:#e6ffe6;">' + text + "</ins>";
            break;
          case DIFF_DELETE:
            html[x] = '<del style="background:#ffe6e6;">' + text + "</del>";
            break;
          case DIFF_EQUAL:
            html[x] = "<span>" + text + "</span>";
            break;
        }
      }
      return html.join("");
    };
    diff_match_patch2.prototype.diff_text1 = function(diffs) {
      var text = [];
      for (var x = 0; x < diffs.length; x++) {
        if (diffs[x][0] !== DIFF_INSERT) {
          text[x] = diffs[x][1];
        }
      }
      return text.join("");
    };
    diff_match_patch2.prototype.diff_text2 = function(diffs) {
      var text = [];
      for (var x = 0; x < diffs.length; x++) {
        if (diffs[x][0] !== DIFF_DELETE) {
          text[x] = diffs[x][1];
        }
      }
      return text.join("");
    };
    diff_match_patch2.prototype.diff_levenshtein = function(diffs) {
      var levenshtein = 0;
      var insertions = 0;
      var deletions = 0;
      for (var x = 0; x < diffs.length; x++) {
        var op = diffs[x][0];
        var data = diffs[x][1];
        switch (op) {
          case DIFF_INSERT:
            insertions += data.length;
            break;
          case DIFF_DELETE:
            deletions += data.length;
            break;
          case DIFF_EQUAL:
            levenshtein += Math.max(insertions, deletions);
            insertions = 0;
            deletions = 0;
            break;
        }
      }
      levenshtein += Math.max(insertions, deletions);
      return levenshtein;
    };
    diff_match_patch2.prototype.diff_toDelta = function(diffs) {
      var text = [];
      for (var x = 0; x < diffs.length; x++) {
        switch (diffs[x][0]) {
          case DIFF_INSERT:
            text[x] = "+" + encodeURI(diffs[x][1]);
            break;
          case DIFF_DELETE:
            text[x] = "-" + diffs[x][1].length;
            break;
          case DIFF_EQUAL:
            text[x] = "=" + diffs[x][1].length;
            break;
        }
      }
      return text.join("	").replace(/%20/g, " ");
    };
    diff_match_patch2.prototype.diff_fromDelta = function(text1, delta) {
      var diffs = [];
      var diffsLength = 0;
      var pointer = 0;
      var tokens = delta.split(/\t/g);
      for (var x = 0; x < tokens.length; x++) {
        var param = tokens[x].substring(1);
        switch (tokens[x].charAt(0)) {
          case "+":
            try {
              diffs[diffsLength++] = new diff_match_patch2.Diff(DIFF_INSERT, decodeURI(param));
            } catch (ex) {
              throw new Error("Illegal escape in diff_fromDelta: " + param);
            }
            break;
          case "-":
          // Fall through.
          case "=":
            var n = parseInt(param, 10);
            if (isNaN(n) || n < 0) {
              throw new Error("Invalid number in diff_fromDelta: " + param);
            }
            var text = text1.substring(pointer, pointer += n);
            if (tokens[x].charAt(0) == "=") {
              diffs[diffsLength++] = new diff_match_patch2.Diff(DIFF_EQUAL, text);
            } else {
              diffs[diffsLength++] = new diff_match_patch2.Diff(DIFF_DELETE, text);
            }
            break;
          default:
            if (tokens[x]) {
              throw new Error("Invalid diff operation in diff_fromDelta: " + tokens[x]);
            }
        }
      }
      if (pointer != text1.length) {
        throw new Error("Delta length (" + pointer + ") does not equal source text length (" + text1.length + ").");
      }
      return diffs;
    };
    diff_match_patch2.prototype.match_main = function(text, pattern, loc) {
      if (text == null || pattern == null || loc == null) {
        throw new Error("Null input. (match_main)");
      }
      loc = Math.max(0, Math.min(loc, text.length));
      if (text == pattern) {
        return 0;
      } else if (!text.length) {
        return -1;
      } else if (text.substring(loc, loc + pattern.length) == pattern) {
        return loc;
      } else {
        return this.match_bitap_(text, pattern, loc);
      }
    };
    diff_match_patch2.prototype.match_bitap_ = function(text, pattern, loc) {
      if (pattern.length > this.Match_MaxBits) {
        throw new Error("Pattern too long for this browser.");
      }
      var s = this.match_alphabet_(pattern);
      var dmp = this;
      function match_bitapScore_(e, x) {
        var accuracy = e / pattern.length;
        var proximity = Math.abs(loc - x);
        if (!dmp.Match_Distance) {
          return proximity ? 1 : accuracy;
        }
        return accuracy + proximity / dmp.Match_Distance;
      }
      var score_threshold = this.Match_Threshold;
      var best_loc = text.indexOf(pattern, loc);
      if (best_loc != -1) {
        score_threshold = Math.min(match_bitapScore_(0, best_loc), score_threshold);
        best_loc = text.lastIndexOf(pattern, loc + pattern.length);
        if (best_loc != -1) {
          score_threshold = Math.min(match_bitapScore_(0, best_loc), score_threshold);
        }
      }
      var matchmask = 1 << pattern.length - 1;
      best_loc = -1;
      var bin_min, bin_mid;
      var bin_max = pattern.length + text.length;
      var last_rd;
      for (var d = 0; d < pattern.length; d++) {
        bin_min = 0;
        bin_mid = bin_max;
        while (bin_min < bin_mid) {
          if (match_bitapScore_(d, loc + bin_mid) <= score_threshold) {
            bin_min = bin_mid;
          } else {
            bin_max = bin_mid;
          }
          bin_mid = Math.floor((bin_max - bin_min) / 2 + bin_min);
        }
        bin_max = bin_mid;
        var start = Math.max(1, loc - bin_mid + 1);
        var finish = Math.min(loc + bin_mid, text.length) + pattern.length;
        var rd = Array(finish + 2);
        rd[finish + 1] = (1 << d) - 1;
        for (var j = finish; j >= start; j--) {
          var charMatch = s[text.charAt(j - 1)];
          if (d === 0) {
            rd[j] = (rd[j + 1] << 1 | 1) & charMatch;
          } else {
            rd[j] = (rd[j + 1] << 1 | 1) & charMatch | ((last_rd[j + 1] | last_rd[j]) << 1 | 1) | last_rd[j + 1];
          }
          if (rd[j] & matchmask) {
            var score = match_bitapScore_(d, j - 1);
            if (score <= score_threshold) {
              score_threshold = score;
              best_loc = j - 1;
              if (best_loc > loc) {
                start = Math.max(1, 2 * loc - best_loc);
              } else {
                break;
              }
            }
          }
        }
        if (match_bitapScore_(d + 1, loc) > score_threshold) {
          break;
        }
        last_rd = rd;
      }
      return best_loc;
    };
    diff_match_patch2.prototype.match_alphabet_ = function(pattern) {
      var s = {};
      for (var i = 0; i < pattern.length; i++) {
        s[pattern.charAt(i)] = 0;
      }
      for (var i = 0; i < pattern.length; i++) {
        s[pattern.charAt(i)] |= 1 << pattern.length - i - 1;
      }
      return s;
    };
    diff_match_patch2.prototype.patch_addContext_ = function(patch, text) {
      if (text.length == 0) {
        return;
      }
      if (patch.start2 === null) {
        throw Error("patch not initialized");
      }
      var pattern = text.substring(patch.start2, patch.start2 + patch.length1);
      var padding = 0;
      while (text.indexOf(pattern) != text.lastIndexOf(pattern) && pattern.length < this.Match_MaxBits - this.Patch_Margin - this.Patch_Margin) {
        padding += this.Patch_Margin;
        pattern = text.substring(
          patch.start2 - padding,
          patch.start2 + patch.length1 + padding
        );
      }
      padding += this.Patch_Margin;
      var prefix = text.substring(patch.start2 - padding, patch.start2);
      if (prefix) {
        patch.diffs.unshift(new diff_match_patch2.Diff(DIFF_EQUAL, prefix));
      }
      var suffix = text.substring(
        patch.start2 + patch.length1,
        patch.start2 + patch.length1 + padding
      );
      if (suffix) {
        patch.diffs.push(new diff_match_patch2.Diff(DIFF_EQUAL, suffix));
      }
      patch.start1 -= prefix.length;
      patch.start2 -= prefix.length;
      patch.length1 += prefix.length + suffix.length;
      patch.length2 += prefix.length + suffix.length;
    };
    diff_match_patch2.prototype.patch_make = function(a, opt_b, opt_c) {
      var text1, diffs;
      if (typeof a == "string" && typeof opt_b == "string" && typeof opt_c == "undefined") {
        text1 = /** @type {string} */
        a;
        diffs = this.diff_main(
          text1,
          /** @type {string} */
          opt_b,
          true
        );
        if (diffs.length > 2) {
          this.diff_cleanupSemantic(diffs);
          this.diff_cleanupEfficiency(diffs);
        }
      } else if (a && typeof a == "object" && typeof opt_b == "undefined" && typeof opt_c == "undefined") {
        diffs = /** @type {!Array.<!diff_match_patch.Diff>} */
        a;
        text1 = this.diff_text1(diffs);
      } else if (typeof a == "string" && opt_b && typeof opt_b == "object" && typeof opt_c == "undefined") {
        text1 = /** @type {string} */
        a;
        diffs = /** @type {!Array.<!diff_match_patch.Diff>} */
        opt_b;
      } else if (typeof a == "string" && typeof opt_b == "string" && opt_c && typeof opt_c == "object") {
        text1 = /** @type {string} */
        a;
        diffs = /** @type {!Array.<!diff_match_patch.Diff>} */
        opt_c;
      } else {
        throw new Error("Unknown call format to patch_make.");
      }
      if (diffs.length === 0) {
        return [];
      }
      var patches = [];
      var patch = new diff_match_patch2.patch_obj();
      var patchDiffLength = 0;
      var char_count1 = 0;
      var char_count2 = 0;
      var prepatch_text = text1;
      var postpatch_text = text1;
      for (var x = 0; x < diffs.length; x++) {
        var diff_type = diffs[x][0];
        var diff_text = diffs[x][1];
        if (!patchDiffLength && diff_type !== DIFF_EQUAL) {
          patch.start1 = char_count1;
          patch.start2 = char_count2;
        }
        switch (diff_type) {
          case DIFF_INSERT:
            patch.diffs[patchDiffLength++] = diffs[x];
            patch.length2 += diff_text.length;
            postpatch_text = postpatch_text.substring(0, char_count2) + diff_text + postpatch_text.substring(char_count2);
            break;
          case DIFF_DELETE:
            patch.length1 += diff_text.length;
            patch.diffs[patchDiffLength++] = diffs[x];
            postpatch_text = postpatch_text.substring(0, char_count2) + postpatch_text.substring(char_count2 + diff_text.length);
            break;
          case DIFF_EQUAL:
            if (diff_text.length <= 2 * this.Patch_Margin && patchDiffLength && diffs.length != x + 1) {
              patch.diffs[patchDiffLength++] = diffs[x];
              patch.length1 += diff_text.length;
              patch.length2 += diff_text.length;
            } else if (diff_text.length >= 2 * this.Patch_Margin) {
              if (patchDiffLength) {
                this.patch_addContext_(patch, prepatch_text);
                patches.push(patch);
                patch = new diff_match_patch2.patch_obj();
                patchDiffLength = 0;
                prepatch_text = postpatch_text;
                char_count1 = char_count2;
              }
            }
            break;
        }
        if (diff_type !== DIFF_INSERT) {
          char_count1 += diff_text.length;
        }
        if (diff_type !== DIFF_DELETE) {
          char_count2 += diff_text.length;
        }
      }
      if (patchDiffLength) {
        this.patch_addContext_(patch, prepatch_text);
        patches.push(patch);
      }
      return patches;
    };
    diff_match_patch2.prototype.patch_deepCopy = function(patches) {
      var patchesCopy = [];
      for (var x = 0; x < patches.length; x++) {
        var patch = patches[x];
        var patchCopy = new diff_match_patch2.patch_obj();
        patchCopy.diffs = [];
        for (var y = 0; y < patch.diffs.length; y++) {
          patchCopy.diffs[y] = new diff_match_patch2.Diff(patch.diffs[y][0], patch.diffs[y][1]);
        }
        patchCopy.start1 = patch.start1;
        patchCopy.start2 = patch.start2;
        patchCopy.length1 = patch.length1;
        patchCopy.length2 = patch.length2;
        patchesCopy[x] = patchCopy;
      }
      return patchesCopy;
    };
    diff_match_patch2.prototype.patch_apply = function(patches, text) {
      if (patches.length == 0) {
        return [text, []];
      }
      patches = this.patch_deepCopy(patches);
      var nullPadding = this.patch_addPadding(patches);
      text = nullPadding + text + nullPadding;
      this.patch_splitMax(patches);
      var delta = 0;
      var results = [];
      for (var x = 0; x < patches.length; x++) {
        var expected_loc = patches[x].start2 + delta;
        var text1 = this.diff_text1(patches[x].diffs);
        var start_loc;
        var end_loc = -1;
        if (text1.length > this.Match_MaxBits) {
          start_loc = this.match_main(
            text,
            text1.substring(0, this.Match_MaxBits),
            expected_loc
          );
          if (start_loc != -1) {
            end_loc = this.match_main(
              text,
              text1.substring(text1.length - this.Match_MaxBits),
              expected_loc + text1.length - this.Match_MaxBits
            );
            if (end_loc == -1 || start_loc >= end_loc) {
              start_loc = -1;
            }
          }
        } else {
          start_loc = this.match_main(text, text1, expected_loc);
        }
        if (start_loc == -1) {
          results[x] = false;
          delta -= patches[x].length2 - patches[x].length1;
        } else {
          results[x] = true;
          delta = start_loc - expected_loc;
          var text2;
          if (end_loc == -1) {
            text2 = text.substring(start_loc, start_loc + text1.length);
          } else {
            text2 = text.substring(start_loc, end_loc + this.Match_MaxBits);
          }
          if (text1 == text2) {
            text = text.substring(0, start_loc) + this.diff_text2(patches[x].diffs) + text.substring(start_loc + text1.length);
          } else {
            var diffs = this.diff_main(text1, text2, false);
            if (text1.length > this.Match_MaxBits && this.diff_levenshtein(diffs) / text1.length > this.Patch_DeleteThreshold) {
              results[x] = false;
            } else {
              this.diff_cleanupSemanticLossless(diffs);
              var index1 = 0;
              var index2;
              for (var y = 0; y < patches[x].diffs.length; y++) {
                var mod = patches[x].diffs[y];
                if (mod[0] !== DIFF_EQUAL) {
                  index2 = this.diff_xIndex(diffs, index1);
                }
                if (mod[0] === DIFF_INSERT) {
                  text = text.substring(0, start_loc + index2) + mod[1] + text.substring(start_loc + index2);
                } else if (mod[0] === DIFF_DELETE) {
                  text = text.substring(0, start_loc + index2) + text.substring(start_loc + this.diff_xIndex(
                    diffs,
                    index1 + mod[1].length
                  ));
                }
                if (mod[0] !== DIFF_DELETE) {
                  index1 += mod[1].length;
                }
              }
            }
          }
        }
      }
      text = text.substring(nullPadding.length, text.length - nullPadding.length);
      return [text, results];
    };
    diff_match_patch2.prototype.patch_addPadding = function(patches) {
      var paddingLength = this.Patch_Margin;
      var nullPadding = "";
      for (var x = 1; x <= paddingLength; x++) {
        nullPadding += String.fromCharCode(x);
      }
      for (var x = 0; x < patches.length; x++) {
        patches[x].start1 += paddingLength;
        patches[x].start2 += paddingLength;
      }
      var patch = patches[0];
      var diffs = patch.diffs;
      if (diffs.length == 0 || diffs[0][0] != DIFF_EQUAL) {
        diffs.unshift(new diff_match_patch2.Diff(DIFF_EQUAL, nullPadding));
        patch.start1 -= paddingLength;
        patch.start2 -= paddingLength;
        patch.length1 += paddingLength;
        patch.length2 += paddingLength;
      } else if (paddingLength > diffs[0][1].length) {
        var extraLength = paddingLength - diffs[0][1].length;
        diffs[0][1] = nullPadding.substring(diffs[0][1].length) + diffs[0][1];
        patch.start1 -= extraLength;
        patch.start2 -= extraLength;
        patch.length1 += extraLength;
        patch.length2 += extraLength;
      }
      patch = patches[patches.length - 1];
      diffs = patch.diffs;
      if (diffs.length == 0 || diffs[diffs.length - 1][0] != DIFF_EQUAL) {
        diffs.push(new diff_match_patch2.Diff(DIFF_EQUAL, nullPadding));
        patch.length1 += paddingLength;
        patch.length2 += paddingLength;
      } else if (paddingLength > diffs[diffs.length - 1][1].length) {
        var extraLength = paddingLength - diffs[diffs.length - 1][1].length;
        diffs[diffs.length - 1][1] += nullPadding.substring(0, extraLength);
        patch.length1 += extraLength;
        patch.length2 += extraLength;
      }
      return nullPadding;
    };
    diff_match_patch2.prototype.patch_splitMax = function(patches) {
      var patch_size = this.Match_MaxBits;
      for (var x = 0; x < patches.length; x++) {
        if (patches[x].length1 <= patch_size) {
          continue;
        }
        var bigpatch = patches[x];
        patches.splice(x--, 1);
        var start1 = bigpatch.start1;
        var start2 = bigpatch.start2;
        var precontext = "";
        while (bigpatch.diffs.length !== 0) {
          var patch = new diff_match_patch2.patch_obj();
          var empty = true;
          patch.start1 = start1 - precontext.length;
          patch.start2 = start2 - precontext.length;
          if (precontext !== "") {
            patch.length1 = patch.length2 = precontext.length;
            patch.diffs.push(new diff_match_patch2.Diff(DIFF_EQUAL, precontext));
          }
          while (bigpatch.diffs.length !== 0 && patch.length1 < patch_size - this.Patch_Margin) {
            var diff_type = bigpatch.diffs[0][0];
            var diff_text = bigpatch.diffs[0][1];
            if (diff_type === DIFF_INSERT) {
              patch.length2 += diff_text.length;
              start2 += diff_text.length;
              patch.diffs.push(bigpatch.diffs.shift());
              empty = false;
            } else if (diff_type === DIFF_DELETE && patch.diffs.length == 1 && patch.diffs[0][0] == DIFF_EQUAL && diff_text.length > 2 * patch_size) {
              patch.length1 += diff_text.length;
              start1 += diff_text.length;
              empty = false;
              patch.diffs.push(new diff_match_patch2.Diff(diff_type, diff_text));
              bigpatch.diffs.shift();
            } else {
              diff_text = diff_text.substring(
                0,
                patch_size - patch.length1 - this.Patch_Margin
              );
              patch.length1 += diff_text.length;
              start1 += diff_text.length;
              if (diff_type === DIFF_EQUAL) {
                patch.length2 += diff_text.length;
                start2 += diff_text.length;
              } else {
                empty = false;
              }
              patch.diffs.push(new diff_match_patch2.Diff(diff_type, diff_text));
              if (diff_text == bigpatch.diffs[0][1]) {
                bigpatch.diffs.shift();
              } else {
                bigpatch.diffs[0][1] = bigpatch.diffs[0][1].substring(diff_text.length);
              }
            }
          }
          precontext = this.diff_text2(patch.diffs);
          precontext = precontext.substring(precontext.length - this.Patch_Margin);
          var postcontext = this.diff_text1(bigpatch.diffs).substring(0, this.Patch_Margin);
          if (postcontext !== "") {
            patch.length1 += postcontext.length;
            patch.length2 += postcontext.length;
            if (patch.diffs.length !== 0 && patch.diffs[patch.diffs.length - 1][0] === DIFF_EQUAL) {
              patch.diffs[patch.diffs.length - 1][1] += postcontext;
            } else {
              patch.diffs.push(new diff_match_patch2.Diff(DIFF_EQUAL, postcontext));
            }
          }
          if (!empty) {
            patches.splice(++x, 0, patch);
          }
        }
      }
    };
    diff_match_patch2.prototype.patch_toText = function(patches) {
      var text = [];
      for (var x = 0; x < patches.length; x++) {
        text[x] = patches[x];
      }
      return text.join("");
    };
    diff_match_patch2.prototype.patch_fromText = function(textline) {
      var patches = [];
      if (!textline) {
        return patches;
      }
      var text = textline.split("\n");
      var textPointer = 0;
      var patchHeader = /^@@ -(\d+),?(\d*) \+(\d+),?(\d*) @@$/;
      while (textPointer < text.length) {
        var m = text[textPointer].match(patchHeader);
        if (!m) {
          throw new Error("Invalid patch string: " + text[textPointer]);
        }
        var patch = new diff_match_patch2.patch_obj();
        patches.push(patch);
        patch.start1 = parseInt(m[1], 10);
        if (m[2] === "") {
          patch.start1--;
          patch.length1 = 1;
        } else if (m[2] == "0") {
          patch.length1 = 0;
        } else {
          patch.start1--;
          patch.length1 = parseInt(m[2], 10);
        }
        patch.start2 = parseInt(m[3], 10);
        if (m[4] === "") {
          patch.start2--;
          patch.length2 = 1;
        } else if (m[4] == "0") {
          patch.length2 = 0;
        } else {
          patch.start2--;
          patch.length2 = parseInt(m[4], 10);
        }
        textPointer++;
        while (textPointer < text.length) {
          var sign = text[textPointer].charAt(0);
          try {
            var line = decodeURI(text[textPointer].substring(1));
          } catch (ex) {
            throw new Error("Illegal escape in patch_fromText: " + line);
          }
          if (sign == "-") {
            patch.diffs.push(new diff_match_patch2.Diff(DIFF_DELETE, line));
          } else if (sign == "+") {
            patch.diffs.push(new diff_match_patch2.Diff(DIFF_INSERT, line));
          } else if (sign == " ") {
            patch.diffs.push(new diff_match_patch2.Diff(DIFF_EQUAL, line));
          } else if (sign == "@") {
            break;
          } else if (sign === "") {
          } else {
            throw new Error('Invalid patch mode "' + sign + '" in: ' + line);
          }
          textPointer++;
        }
      }
      return patches;
    };
    diff_match_patch2.patch_obj = function() {
      this.diffs = [];
      this.start1 = null;
      this.start2 = null;
      this.length1 = 0;
      this.length2 = 0;
    };
    diff_match_patch2.patch_obj.prototype.toString = function() {
      var coords1, coords2;
      if (this.length1 === 0) {
        coords1 = this.start1 + ",0";
      } else if (this.length1 == 1) {
        coords1 = this.start1 + 1;
      } else {
        coords1 = this.start1 + 1 + "," + this.length1;
      }
      if (this.length2 === 0) {
        coords2 = this.start2 + ",0";
      } else if (this.length2 == 1) {
        coords2 = this.start2 + 1;
      } else {
        coords2 = this.start2 + 1 + "," + this.length2;
      }
      var text = ["@@ -" + coords1 + " +" + coords2 + " @@\n"];
      var op;
      for (var x = 0; x < this.diffs.length; x++) {
        switch (this.diffs[x][0]) {
          case DIFF_INSERT:
            op = "+";
            break;
          case DIFF_DELETE:
            op = "-";
            break;
          case DIFF_EQUAL:
            op = " ";
            break;
        }
        text[x + 1] = op + encodeURI(this.diffs[x][1]) + "\n";
      }
      return text.join("").replace(/%20/g, " ");
    };
    module2.exports = diff_match_patch2;
    module2.exports["diff_match_patch"] = diff_match_patch2;
    module2.exports["DIFF_DELETE"] = DIFF_DELETE;
    module2.exports["DIFF_INSERT"] = DIFF_INSERT;
    module2.exports["DIFF_EQUAL"] = DIFF_EQUAL;
  }
});

// node_modules/named-js-regexp/lib/named-js-regexp.js
var require_named_js_regexp = __commonJS({
  "node_modules/named-js-regexp/lib/named-js-regexp.js"(exports2, module2) {
    "use strict";
    (function(window10) {
      var validGroupName = /^[$_a-z][$_a-z0-9]*$/i;
      var cache;
      function parseRegex(text) {
        var i, c, c1, c12, nameEnd, name, item, mapper = {}, current = 0, regexText = "", inCharSet = false;
        for (i = 0; i < text.length; ++i) {
          c = text[i];
          c1 = text[i + 1];
          c12 = c1 + text[i + 2];
          regexText += c;
          if (c === "\\") {
            if (!inCharSet && c12 === "k<") {
              nameEnd = text.indexOf(">", i + 3);
              if (nameEnd < 0) {
                throw new Error("'>' missing in named backreference.");
              }
              name = text.substring(i + 3, nameEnd);
              item = mapper[name];
              if (!item) {
                throw new Error("Named group '" + name + "' is not defined in backreference.");
              }
              if (typeof item !== "number") {
                throw new Error("Named backreference referencing duplicate named group '" + name + "'.");
              }
              i = nameEnd;
              regexText += item;
            } else {
              regexText += c1;
              ++i;
            }
          } else if (inCharSet) {
            if (c === "]") {
              inCharSet = false;
            }
          } else if (c === "[") {
            inCharSet = true;
          } else {
            if (c === "(" && c12 !== "?:" && c12 !== "?=" && c12 !== "?!") {
              current++;
              if (c12 === "?<" || c12 === ":<") {
                nameEnd = text.indexOf(">", i + 3);
                if (nameEnd < 0) {
                  throw new Error("'>' missing in named group.");
                }
                name = text.substring(i + 3, nameEnd);
                if (!validGroupName.test(name)) {
                  throw new Error("Invalide group name '" + name + "'. Regexp group name should start with '_$a-zA-Z' and can contain only '_$a-zA-Z0-9'.");
                }
                item = mapper[name];
                if (item === void 0) {
                  mapper[name] = current;
                } else if (typeof item === "number") {
                  mapper[name] = [item, current];
                } else {
                  item.push(current);
                }
                i = nameEnd;
              }
            }
          }
        }
        return { mapper, regexText };
      }
      function parseReplacement(text, groupsIndices) {
        var i, c, c1, name, nameEnd, groupIndex, result = "";
        for (i = 0; i < text.length; ++i) {
          c = text[i];
          c1 = text[i + 1];
          result += c;
          if (c === "$") {
            if (c1 === "$") {
              result += c1;
              ++i;
            } else if (c1 === "{") {
              nameEnd = text.indexOf("}", i + 2);
              if (nameEnd < 0) {
                throw new Error("'>' missing in replacement named group.");
              }
              name = text.substring(i + 2, nameEnd);
              groupIndex = groupsIndices[name];
              if (groupIndex === void 0) {
                throw new Error("Named group '" + name + "' is not defined in replacement text.");
              }
              if (typeof groupIndex !== "number") {
                throw new Error("Named replacement referencing duplicate named group '" + name + "'.");
              }
              result += groupIndex;
              i = nameEnd;
            }
          }
        }
        return result;
      }
      function createNamedRegex(regexp, flags) {
        if (typeof regexp === "boolean") {
          if (regexp === false) {
            cache = void 0;
          } else if (!cache) {
            cache = {};
          }
          return;
        }
        if (typeof regexp !== "string") {
          flags = (regexp.global ? "g" : "") + (regexp.multiline ? "m" : "") + (regexp.ignoreCase ? "i" : "");
          regexp = regexp.source;
        }
        var info = cache ? cache[regexp] || (cache[regexp] = parseRegex(regexp)) : parseRegex(regexp);
        var regex = new RegExp(info.regexText, flags);
        regex.groupsIndices = info.mapper;
        function extendMatched(matched) {
          var mapper = info.mapper;
          matched.group = function(name, all) {
            var indices = mapper[name];
            if (typeof indices === "number") {
              return matched[indices];
            } else if (all) {
              return indices.map(function(v) {
                return matched[v];
              });
            } else if (indices) {
              for (var i = 0; i < indices.length; ++i) {
                var value = matched[indices[i]];
                if (value !== void 0) {
                  return value;
                }
              }
            }
            return void 0;
          };
          var cachedGroups, cachedGroupsAll;
          matched.groups = function(all) {
            var cg = all ? cachedGroupsAll : cachedGroups;
            if (cg) {
              return cg;
            }
            cg = {};
            for (var name in mapper) {
              cg[name] = matched.group(name, all);
            }
            return all ? cachedGroupsAll = cg : cachedGroups = cg;
          };
          return matched;
        }
        regex.exec = function(text) {
          var matched = RegExp.prototype.exec.call(this, text);
          if (matched) {
            extendMatched(matched);
          }
          return matched;
        };
        regex.execGroups = function(text, all) {
          var matched = this.exec(text);
          if (!matched) {
            return null;
          }
          return matched.groups(all);
        };
        regex.replace = function(text, replacement) {
          if (typeof replacement === "function") {
            return text.replace(regex, function() {
              var matched = Array.prototype.slice.call(arguments, 0, arguments.length - 2);
              extendMatched(matched);
              return replacement.apply(matched, arguments);
            });
          } else {
            var replacementText = parseReplacement(replacement, this.groupsIndices);
            return text.replace(this, replacementText);
          }
        };
        return regex;
      }
      if (typeof exports2 !== "undefined") {
        module2.exports = createNamedRegex;
      } else if (typeof define === "function" && define.amd) {
        define(function() {
          return createNamedRegex;
        });
      } else {
        window10.createNamedRegex = createNamedRegex;
      }
    })(typeof window === "undefined" ? exports2 : window);
  }
});

// src/index.ts
var index_exports = {};
__export(index_exports, {
  activate: () => activate
});
module.exports = __toCommonJS(index_exports);
var import_coc32 = require("coc.nvim");
var import_node_fs8 = require("node:fs");
var import_node_path7 = require("node:path");
var import_which5 = __toESM(require_lib());

// src/commands.ts
var child_process2 = __toESM(require("node:child_process"));
var import_coc3 = require("coc.nvim");
var import_node_path2 = __toESM(require("node:path"));

// src/configSettings.ts
var child_process = __toESM(require("node:child_process"));
var import_coc = require("coc.nvim");
var import_node_fs = __toESM(require("node:fs"));
var import_node_path = __toESM(require("node:path"));
var import_which = __toESM(require_lib());

// src/systemVariables.ts
var Path = __toESM(require("node:path"));
function isArray(array) {
  if (Array.isArray) {
    return Array.isArray(array);
  }
  if (array && typeof array.length === "number" && array.constructor === Array) {
    return true;
  }
  return false;
}
function isString(str) {
  if (typeof str === "string" || str instanceof String) {
    return true;
  }
  return false;
}
function isObject(obj) {
  return typeof obj === "object" && obj !== null && !Array.isArray(obj) && !(obj instanceof RegExp) && !(obj instanceof Date);
}
var AbstractSystemVariables = class {
  resolve(value) {
    if (isString(value)) {
      return this.__resolveString(value);
    }
    if (isArray(value)) {
      return this.__resolveArray(value);
    }
    if (isObject(value)) {
      return this.__resolveLiteral(value);
    }
    return value;
  }
  resolveAny(value) {
    if (isString(value)) {
      return this.__resolveString(value);
    }
    if (isArray(value)) {
      return this.__resolveAnyArray(value);
    }
    if (isObject(value)) {
      return this.__resolveAnyLiteral(value);
    }
    return value;
  }
  __resolveString(value) {
    const regexp = /\$\{(.*?)\}/g;
    return value.replace(regexp, (match2, name) => {
      const newValue = this[name];
      if (isString(newValue)) {
        return newValue;
      }
      return match2 && (match2.indexOf("env.") > 0 || match2.indexOf("env:") > 0) ? "" : match2;
    });
  }
  __resolveLiteral(values) {
    const result = /* @__PURE__ */ Object.create(null);
    for (const key of Object.keys(values)) {
      const value = values[key];
      result[key] = this.resolve(value);
    }
    return result;
  }
  __resolveAnyLiteral(values) {
    const result = /* @__PURE__ */ Object.create(null);
    for (const key of Object.keys(values)) {
      const value = values[key];
      result[key] = this.resolveAny(value);
    }
    return result;
  }
  __resolveArray(value) {
    return value.map((s) => this.__resolveString(s));
  }
  __resolveAnyArray(value) {
    return value.map((s) => this.resolveAny(s));
  }
};
var SystemVariables = class extends AbstractSystemVariables {
  constructor(workspaceFolder) {
    super();
    this._workspaceFolder = typeof workspaceFolder === "string" ? workspaceFolder : __dirname;
    this._workspaceFolderName = Path.basename(this._workspaceFolder);
    for (const key of Object.keys(process.env)) {
      this[`env:${key}`] = this[`env.${key}`] = process.env[key];
    }
  }
  get cwd() {
    return this.workspaceFolder;
  }
  get workspaceRoot() {
    return this._workspaceFolder;
  }
  get workspaceFolder() {
    return this._workspaceFolder;
  }
  get workspaceRootFolderName() {
    return this._workspaceFolderName;
  }
  get workspaceFolderBasename() {
    return this._workspaceFolderName;
  }
};

// src/configSettings.ts
var _PythonSettings = class _PythonSettings {
  constructor() {
    this.disposables = [];
    this._pythonPath = "";
    this._stdLibs = [];
    this.workspaceRoot = import_coc.workspace.root ? import_coc.workspace.root : __dirname;
    this.initialize();
  }
  static getInstance() {
    const workspaceFolder = import_coc.workspace.workspaceFolders.length > 0 ? import_coc.workspace.workspaceFolders[0] : void 0;
    const workspaceFolderKey = workspaceFolder ? workspaceFolder.name : "unknown";
    if (!_PythonSettings.pythonSettings.has(workspaceFolderKey)) {
      const settings = new _PythonSettings();
      _PythonSettings.pythonSettings.set(workspaceFolderKey, settings);
    }
    return _PythonSettings.pythonSettings.get(workspaceFolderKey);
  }
  static dispose() {
    for (const item of _PythonSettings.pythonSettings) {
      item[1].dispose();
    }
    _PythonSettings.pythonSettings.clear();
  }
  dispose() {
    for (const disposable of this.disposables) {
      disposable.dispose();
    }
    this.disposables = [];
  }
  resolvePythonFromVENV() {
    function pythonBinFromPath(p) {
      const fullPath = process.platform === "win32" ? import_node_path.default.join(p, "Scripts", "python.exe") : import_node_path.default.join(p, "bin", "python");
      return import_node_fs.default.existsSync(fullPath) ? fullPath : void 0;
    }
    try {
      if (process.env.VIRTUAL_ENV && import_node_fs.default.existsSync(import_node_path.default.join(process.env.VIRTUAL_ENV, "pyvenv.cfg"))) {
        return pythonBinFromPath(process.env.VIRTUAL_ENV);
      }
      if (process.env.CONDA_PREFIX) {
        return pythonBinFromPath(process.env.CONDA_PREFIX);
      }
      let p = import_node_path.default.join(this.workspaceRoot, "uv.lock");
      const p2 = import_node_path.default.join(this.workspaceRoot, ".venv");
      if (import_node_fs.default.existsSync(p) && import_node_fs.default.existsSync(p2)) {
        return pythonBinFromPath(p2);
      }
      p = import_node_path.default.join(this.workspaceRoot, ".python-version");
      if (import_node_fs.default.existsSync(p)) {
        if (!process.env.PYENV_VERSION) {
          process.env.PYENV_VERSION = import_node_fs.default.readFileSync(p).toString().trim().split("\n")[0];
        }
        return;
      }
      p = import_node_path.default.join(this.workspaceRoot, "Pipfile");
      if (import_node_fs.default.existsSync(p)) {
        return child_process.spawnSync("pipenv", ["--py"], { encoding: "utf8" }).stdout.trim();
      }
      p = import_node_path.default.join(this.workspaceRoot, "poetry.lock");
      if (import_node_fs.default.existsSync(p)) {
        const list = child_process.spawnSync("poetry", ["env", "list", "--full-path", "--no-ansi"], {
          encoding: "utf8",
          cwd: this.workspaceRoot
        }).stdout.trim();
        let info = "";
        for (const item of list.split("\n")) {
          if (item.includes("(Activated)")) {
            info = item.replace(/\(Activated\)/, "").trim();
            break;
          }
          info = item;
        }
        if (info) {
          return pythonBinFromPath(info);
        }
      }
      p = import_node_path.default.join(this.workspaceRoot, ".pdm-python");
      if (import_node_fs.default.existsSync(p)) {
        return child_process.spawnSync("pdm", ["info", "--python"], { encoding: "utf8" }).stdout.trim();
      }
      const files = import_node_fs.default.readdirSync(this.workspaceRoot);
      for (const file of files) {
        const x = import_node_path.default.join(this.workspaceRoot, file);
        if (import_node_fs.default.existsSync(import_node_path.default.join(x, "pyvenv.cfg"))) {
          return pythonBinFromPath(x);
        }
      }
    } catch (e) {
      console.error(e);
    }
  }
  update(pythonSettings) {
    const systemVariables = new SystemVariables(this.workspaceRoot ? this.workspaceRoot : void 0);
    const vp = this.resolvePythonFromVENV();
    this.pythonPath = vp ? vp : systemVariables.resolve(pythonSettings.get("pythonPath"));
    const lintingSettings = systemVariables.resolveAny(pythonSettings.get("linting"));
    if (this.linting) {
      Object.assign(this.linting, lintingSettings);
    } else {
      this.linting = lintingSettings;
    }
    this.linting.pylintPath = this.getAbsolutePath(systemVariables.resolveAny(this.linting.pylintPath));
    this.linting.flake8Path = this.getAbsolutePath(systemVariables.resolveAny(this.linting.flake8Path));
    this.linting.pycodestylePath = this.getAbsolutePath(systemVariables.resolveAny(this.linting.pycodestylePath));
    this.linting.pyflakesPath = this.getAbsolutePath(systemVariables.resolveAny(this.linting.pyflakesPath));
    this.linting.pylamaPath = this.getAbsolutePath(systemVariables.resolveAny(this.linting.pylamaPath));
    this.linting.prospectorPath = this.getAbsolutePath(systemVariables.resolveAny(this.linting.prospectorPath));
    this.linting.pydocstylePath = this.getAbsolutePath(systemVariables.resolveAny(this.linting.pydocstylePath));
    this.linting.mypyPath = this.getAbsolutePath(systemVariables.resolveAny(this.linting.mypyPath));
    this.linting.banditPath = this.getAbsolutePath(systemVariables.resolveAny(this.linting.banditPath));
    this.linting.ruffPath = this.getAbsolutePath(systemVariables.resolveAny(this.linting.ruffPath));
    const formattingSettings = systemVariables.resolveAny(pythonSettings.get("formatting"));
    if (this.formatting) {
      Object.assign(this.formatting, formattingSettings);
    } else {
      this.formatting = formattingSettings;
    }
    this.formatting.autopep8Path = this.getAbsolutePath(systemVariables.resolveAny(this.formatting.autopep8Path));
    this.formatting.yapfPath = this.getAbsolutePath(systemVariables.resolveAny(this.formatting.yapfPath));
    this.formatting.ruffPath = this.getAbsolutePath(systemVariables.resolveAny(this.formatting.ruffPath));
    this.formatting.blackPath = this.getAbsolutePath(systemVariables.resolveAny(this.formatting.blackPath));
    this.formatting.pyinkPath = this.getAbsolutePath(systemVariables.resolveAny(this.formatting.pyinkPath));
    this.formatting.blackdPath = this.getAbsolutePath(systemVariables.resolveAny(this.formatting.blackdPath));
    this.formatting.darkerPath = this.getAbsolutePath(systemVariables.resolveAny(this.formatting.darkerPath));
    const isort = systemVariables.resolveAny(pythonSettings.get("sortImports"));
    if (this.sortImports) {
      Object.assign(this.sortImports, isort);
    } else {
      this.sortImports = isort;
    }
    this.sortImports.path = this.getAbsolutePath(systemVariables.resolveAny(this.sortImports.path));
  }
  get stdLibs() {
    return this._stdLibs;
  }
  get pythonPath() {
    return this._pythonPath;
  }
  set pythonPath(value) {
    if (this._pythonPath === value) {
      return;
    }
    try {
      this._pythonPath = getPythonExecutable(value);
      this._stdLibs = getStdLibs(this._pythonPath);
    } catch (_ex) {
      this._pythonPath = value;
    }
  }
  getAbsolutePath(pathToCheck, rootDir) {
    const realPath = import_coc.workspace.expand(pathToCheck);
    if (realPath.indexOf(import_node_path.default.sep) === -1) {
      return realPath;
    }
    const root = rootDir ? rootDir : this.workspaceRoot;
    return import_node_path.default.isAbsolute(realPath) ? realPath : import_node_path.default.resolve(root, realPath);
  }
  initialize() {
    this.disposables.push(
      import_coc.workspace.onDidChangeConfiguration((event) => {
        if (event.affectsConfiguration("python")) {
          const currentConfig = import_coc.workspace.getConfiguration("python", import_coc.workspace.root);
          this.update(currentConfig);
        }
      })
    );
    const initialConfig = import_coc.workspace.getConfiguration("python", import_coc.workspace.root);
    if (initialConfig) {
      this.update(initialConfig);
    }
  }
};
_PythonSettings.pythonSettings = /* @__PURE__ */ new Map();
var PythonSettings = _PythonSettings;
function getPythonExecutable(value) {
  if (value === "python" || value.indexOf(import_node_path.default.sep) === -1 || import_node_path.default.basename(value) === import_node_path.default.dirname(value)) {
    const bin = import_which.default.sync(value, { nothrow: true });
    if (bin) {
      return bin;
    }
  }
  return import_coc.workspace.expand(value);
}
function getStdLibs(pythonPath) {
  try {
    let args = ["-c", "import site;print(site.getsitepackages()[0])"];
    const sitePkgs = child_process.spawnSync(pythonPath, args, { encoding: "utf8" }).stdout.trim();
    args = ["-c", "import site;print(site.getusersitepackages())"];
    const userPkgs = child_process.spawnSync(pythonPath, args, { encoding: "utf8" }).stdout.trim();
    return [sitePkgs, userPkgs];
  } catch (_e) {
    return [];
  }
}

// src/parsers/index.ts
var import_diagnosticSink = __toESM(require_diagnosticSink());
var import_parser = __toESM(require_parser());

// src/parsers/inlayHints.ts
var import_parseTreeUtils = __toESM(require_parseTreeUtils());
var import_parseTreeWalker = __toESM(require_parseTreeWalker());
var import_parseNodes = __toESM(require_parseNodes());
function isLeftSideOfAssignment(node) {
  var _a2;
  if (((_a2 = node.parent) == null ? void 0 : _a2.nodeType) !== import_parseNodes.ParseNodeType.Assignment) {
    return false;
  }
  return node.start < node.parent.d.rightExpr.start;
}
var TypeInlayHintsWalker = class extends import_parseTreeWalker.ParseTreeWalker {
  constructor(_parseResults) {
    super();
    this._parseResults = _parseResults;
    this.featureItems = [];
  }
  visitName(node) {
    if (isLeftSideOfAssignment(node)) {
      this.featureItems.push({
        hintType: "variable",
        startOffset: node.start,
        endOffset: node.start + node.length - 1,
        value: node.d.value
      });
    }
    return super.visitName(node);
  }
  visitMemberAccess(node) {
    if (isLeftSideOfAssignment(node)) {
      this.featureItems.push({
        hintType: "variable",
        startOffset: node.d.member.start,
        endOffset: node.d.member.start + node.d.member.length - 1,
        value: node.d.member.d.value
      });
    }
    return super.visitMemberAccess(node);
  }
  visitArgument(node) {
    if (node.parent) {
      if (node.parent.nodeType === import_parseNodes.ParseNodeType.Assignment) {
        return false;
      }
      const result = (0, import_parseTreeUtils.getCallNodeAndActiveParamIndex)(node, node.start, this._parseResults.tokenizerOutput.tokens);
      if (!(result == null ? void 0 : result.callNode) || result.callNode.d.args[result.activeIndex].d.name) {
        return false;
      }
      this.featureItems.push({
        hintType: "parameter",
        startOffset: node.start,
        endOffset: node.start + node.length - 1
      });
    }
    return super.visitArgument(node);
  }
  visitFunction(node) {
    if (!node.d.returnAnnotation) {
      this.featureItems.push({
        hintType: "functionReturn",
        startOffset: node.d.name.start,
        endOffset: node.d.suite.start,
        value: node.d.name.d.value
      });
    }
    return super.visitFunction(node);
  }
};

// src/parsers/semanticTokens.ts
var import_parseTreeWalker2 = __toESM(require_parseTreeWalker());
var import_parseNodes2 = __toESM(require_parseNodes());
var import_coc2 = require("coc.nvim");
var SemanticTokensWalker = class extends import_parseTreeWalker2.ParseTreeWalker {
  constructor() {
    super(...arguments);
    this.semanticItems = [];
  }
  addItem(node, type, modifiers = []) {
    const item = { type, start: node.start, length: node.length, modifiers };
    if (this.semanticItems.some((x) => x.type === item.type && x.start === item.start && x.length === item.length)) {
      return;
    }
    this.semanticItems.push(item);
  }
  visit(node) {
    return super.visit(node);
  }
  visitFor(node) {
    if (node.nodeType === import_parseNodes2.ParseNodeType.For) {
      this.addItem(node.d.targetExpr, import_coc2.SemanticTokenTypes.variable);
    }
    return super.visitFor(node);
  }
  visitFormatString(node) {
    node.d.fieldExprs.map((f) => this.addItem(f, import_coc2.SemanticTokenTypes.variable));
    return super.visitFormatString(node);
  }
  visitCall(node) {
    if (node.d.leftExpr.nodeType === 38) {
      const value = node.d.leftExpr.d.value;
      if (value[0] === value[0].toUpperCase()) {
        this.addItem(node.d.leftExpr, import_coc2.SemanticTokenTypes.class);
      } else {
        this.addItem(node.d.leftExpr, import_coc2.SemanticTokenTypes.function);
      }
    }
    return super.visitCall(node);
  }
  visitClass(node) {
    if (node.d.arguments.length === 1 && node.d.arguments[0].d.valueExpr.d.value === "Enum") {
      this.addItem(node.d.name, import_coc2.SemanticTokenTypes.enum);
      for (const m of node.d.suite.d.statements) {
        this.addItem(m.d.statements[0].d.leftExpr, import_coc2.SemanticTokenTypes.enumMember);
      }
      return super.visitClass(node);
    }
    this.addItem(node.d.name, import_coc2.SemanticTokenTypes.class, [import_coc2.SemanticTokenModifiers.definition]);
    return super.visitClass(node);
  }
  visitMemberAccess(node) {
    var _a2;
    if (((_a2 = node.parent) == null ? void 0 : _a2.nodeType) === import_parseNodes2.ParseNodeType.Call) {
      this.addItem(node.d.member, import_coc2.SemanticTokenTypes.function);
      return super.visitMemberAccess(node);
    }
    this.addItem(node.d.member, import_coc2.SemanticTokenTypes.property);
    return super.visitMemberAccess(node);
  }
  visitDecorator(node) {
    this.addItem(node.d.expr, import_coc2.SemanticTokenTypes.decorator);
    let nameNode;
    switch (node.d.expr.nodeType) {
      case import_parseNodes2.ParseNodeType.Call:
        if (node.d.expr.d.leftExpr.nodeType === import_parseNodes2.ParseNodeType.MemberAccess) {
          nameNode = node.d.expr.d.leftExpr.d.member;
        } else if (node.d.expr.d.leftExpr.nodeType === import_parseNodes2.ParseNodeType.Name) {
          nameNode = node.d.expr.d.leftExpr;
        }
        break;
      case import_parseNodes2.ParseNodeType.MemberAccess:
        nameNode = node.d.expr.d.member;
        break;
      case import_parseNodes2.ParseNodeType.Name:
        nameNode = node.d.expr;
        break;
    }
    if (nameNode) {
      this.addItem(nameNode, import_coc2.SemanticTokenTypes.decorator);
    }
    return super.visitDecorator(node);
  }
  visitImport(node) {
    for (const x of node.d.list) {
      if (x.d.alias) {
        this.addItem(x.d.alias, import_coc2.SemanticTokenTypes.namespace);
      }
    }
    return super.visitImport(node);
  }
  visitImportAs(node) {
    var _a2;
    if ((_a2 = node.d.alias) == null ? void 0 : _a2.d.value.length) {
      this.addItem(node.d.alias, import_coc2.SemanticTokenTypes.namespace);
    }
    node.d.module.d.nameParts.map((x) => this.addItem(x, import_coc2.SemanticTokenTypes.namespace));
    return super.visitImportAs(node);
  }
  visitImportFrom(node) {
    node.d.module.d.nameParts.map((x) => this.addItem(x, import_coc2.SemanticTokenTypes.namespace));
    for (const x of node.d.imports) {
      if (x.d.alias) {
        this.addItem(x.d.alias, import_coc2.SemanticTokenTypes.namespace);
      }
    }
    return super.visitImportFrom(node);
  }
  visitImportFromAs(node) {
    var _a2;
    if ((_a2 = node.d.alias) == null ? void 0 : _a2.d.value.length) {
      this.addItem(node.d.alias, import_coc2.SemanticTokenTypes.namespace);
    }
    return super.visitImportFromAs(node);
  }
  visitParameter(node) {
    if (!node.d.name) return super.visitParameter(node);
    this.addItem(node.d.name, import_coc2.SemanticTokenTypes.parameter);
    if (node.d.annotation) {
      this.addItem(node.d.annotation, import_coc2.SemanticTokenTypes.typeParameter);
    }
    return super.visitParameter(node);
  }
  visitTypeParameter(node) {
    this.addItem(node.d.name, import_coc2.SemanticTokenTypes.typeParameter);
    return super.visitTypeParameter(node);
  }
  visitTypeAnnotation(node) {
    if (node.d.annotation) {
      this.addItem(node.d.annotation, import_coc2.SemanticTokenTypes.typeParameter);
    }
    return super.visitTypeAnnotation(node);
  }
  visitFunction(node) {
    var _a2, _b;
    const modifiers = [import_coc2.SemanticTokenModifiers.definition];
    if (node.d.isAsync) {
      modifiers.push(import_coc2.SemanticTokenModifiers.async);
    }
    const type = ((_b = (_a2 = node.parent) == null ? void 0 : _a2.parent) == null ? void 0 : _b.nodeType) === 10 ? import_coc2.SemanticTokenTypes.method : import_coc2.SemanticTokenTypes.function;
    this.addItem(node.d.name, type, modifiers);
    for (const p of node.d.params) {
      if (!p.d.name) continue;
      this.addItem(p.d.name, import_coc2.SemanticTokenTypes.parameter);
      if (p.d.annotation) {
        this.addItem(p.d.annotation, import_coc2.SemanticTokenTypes.typeParameter);
      }
    }
    return super.visitFunction(node);
  }
};

// src/parsers/testFramework.ts
var import_parseTreeUtils2 = __toESM(require_parseTreeUtils());
var import_parseTreeWalker3 = __toESM(require_parseTreeWalker());
var TestFrameworkWalker = class extends import_parseTreeWalker3.ParseTreeWalker {
  constructor(testFramework) {
    super();
    this.featureItems = [];
    this.testFramework = testFramework;
  }
  visitFunction(node) {
    var _a2;
    if (node.d.name.d.value.startsWith("test_")) {
      if (node.parent && (0, import_parseTreeUtils2.printParseNodeType)(node.parent.nodeType) === "Suite") {
        let fullyQualifiedTestName = "";
        let currentNode = node;
        let parentSuiteNode = currentNode == null ? void 0 : currentNode.parent;
        while (parentSuiteNode.parent && (0, import_parseTreeUtils2.printParseNodeType)(parentSuiteNode.parent.nodeType) === "Class") {
          const classNode = parentSuiteNode.parent;
          let combineString;
          if (this.testFramework === "unittest") {
            combineString = ".";
          } else if (this.testFramework === "pytest") {
            combineString = "::";
          }
          fullyQualifiedTestName = classNode.d.name.d.value + combineString + fullyQualifiedTestName;
          currentNode = (_a2 = currentNode == null ? void 0 : currentNode.parent) == null ? void 0 : _a2.parent;
          parentSuiteNode = currentNode == null ? void 0 : currentNode.parent;
        }
        this.featureItems.push({
          value: fullyQualifiedTestName + node.d.name.d.value,
          startOffset: node.start,
          endOffset: node.start + node.length - 1
        });
      } else {
        if (this.testFramework === "pytest") {
          this.featureItems.push({
            value: node.d.name.d.value,
            startOffset: node.start,
            endOffset: node.start + node.length - 1
          });
        }
      }
    }
    return super.visitFunction(node);
  }
};

// src/parsers/index.ts
function parse(source) {
  let result;
  const parserOptions = new import_parser.ParseOptions();
  const diagSink = new import_diagnosticSink.DiagnosticSink();
  const parser = new import_parser.Parser();
  try {
    result = parser.parseSourceFile(source, parserOptions, diagSink);
  } catch (_e) {
  }
  return result;
}

// src/commands.ts
var terminal;
var framework = import_coc3.workspace.getConfiguration("pyright").get("testing.provider", "unittest");
function pythonSupportsPathFinder(pythonPath) {
  try {
    const pythonProcess = child_process2.spawnSync(
      pythonPath,
      ["-c", "from sys import version_info; exit(0) if (version_info[0] >= 3 and version_info[1] >= 4) else exit(1)"],
      { encoding: "utf8" }
    );
    if (pythonProcess.error) return false;
    return pythonProcess.status === 0;
  } catch (_ex) {
    return false;
  }
}
function validPythonModule(pythonPath, moduleName) {
  const pythonArgs = pythonSupportsPathFinder(pythonPath) ? ["-c", `from importlib.machinery import PathFinder; assert PathFinder.find_spec("${moduleName}") is not None`] : ["-m", moduleName, "--help"];
  try {
    const pythonProcess = child_process2.spawnSync(pythonPath, pythonArgs, { encoding: "utf8" });
    if (pythonProcess.error) return false;
    return pythonProcess.status === 0;
  } catch (_ex) {
    return false;
  }
}
async function runTest(uri, testFunction) {
  const workspaceUri = import_coc3.Uri.parse(import_coc3.workspace.root).toString();
  const relativeFileUri = uri.replace(`${workspaceUri}/`, "");
  let testFile = "";
  if (framework === "pytest") {
    testFile = relativeFileUri.split("/").join(import_node_path2.default.sep);
  } else {
    testFile = relativeFileUri.replace(/.py$/, "").split("/").join(".");
  }
  const pythonPath = PythonSettings.getInstance().pythonPath;
  const exists = validPythonModule(pythonPath, framework);
  if (!exists) return import_coc3.window.showErrorMessage(`${framework} does not exist!`);
  if (terminal) {
    if (terminal.bufnr) {
      await import_coc3.workspace.nvim.command(`bd! ${terminal.bufnr}`);
    }
    terminal.dispose();
    terminal = void 0;
  }
  terminal = await import_coc3.window.createTerminal({ name: framework, cwd: import_coc3.workspace.root });
  const args = [];
  const testArgs = import_coc3.workspace.getConfiguration("pyright").get(`testing.${framework}Args`, []);
  if (testArgs) {
    if (Array.isArray(testArgs)) {
      args.push(...testArgs);
    }
  }
  const sep2 = framework === "pytest" ? "::" : ".";
  args.push(testFunction ? testFile + sep2 + testFunction : testFile);
  terminal.sendText(`${pythonPath} -m ${framework} ${args.join(" ")}`);
}
async function runFileTest() {
  const { document } = await import_coc3.workspace.getCurrentState();
  const fileName = import_node_path2.default.basename(import_coc3.Uri.parse(document.uri).fsPath);
  if (document.languageId !== "python" || !fileName.startsWith("test_") && !fileName.endsWith("_test.py")) {
    return import_coc3.window.showErrorMessage("This file is not a python test file!");
  }
  runTest(document.uri);
}
async function runSingleTest() {
  const { document, position } = await import_coc3.workspace.getCurrentState();
  const fileName = import_node_path2.default.basename(import_coc3.Uri.parse(document.uri).fsPath);
  if (document.languageId !== "python" || !fileName.startsWith("test_") && !fileName.endsWith("_test.py")) {
    return import_coc3.window.showErrorMessage("This file is not a python test file!");
  }
  const parsed = parse(document.getText());
  if (!parsed) return import_coc3.window.showErrorMessage("Test not found");
  const walker = new TestFrameworkWalker(framework);
  walker.walk(parsed.parserOutput.parseTree);
  let testFunction;
  for (const item of walker.featureItems) {
    const itemStartPosition = document.positionAt(item.startOffset);
    const itemEndPosition = document.positionAt(item.endOffset);
    if (position.line >= itemStartPosition.line && position.line <= itemEndPosition.line) {
      testFunction = item.value;
    }
  }
  if (!testFunction) return import_coc3.window.showErrorMessage("Test not found");
  runTest(document.uri, testFunction);
}

// src/features/codeAction.ts
var import_coc4 = require("coc.nvim");
var PythonCodeActionProvider = class {
  wholeRange(doc, range2) {
    const whole = import_coc4.Range.create(0, 0, doc.lineCount - 1, 0);
    return whole.start.line === range2.start.line && whole.start.character === range2.start.character && whole.end.line === range2.end.line && whole.end.character === range2.end.character;
  }
  cursorRange(r) {
    return r.start.line === r.end.line && r.start.character === r.end.character;
  }
  lineRange(r) {
    return r.start.line + 1 === r.end.line && r.start.character === 0 && r.end.character === 0 || r.start.line === r.end.line && r.start.character === 0;
  }
  sortImportsAction() {
    const config = import_coc4.workspace.getConfiguration("pyright");
    const provider = config.get("organizeimports.provider", "pyright");
    const command = provider === "pyright" ? "pyright.organizeimports" : "python.sortImports";
    const title = provider === "pyright" ? "Organize Imports by Pyright" : `Sort Imports by ${provider}`;
    return {
      title,
      kind: import_coc4.CodeActionKind.SourceOrganizeImports,
      command: {
        title: "",
        command
      }
    };
  }
  ignoreAction(document, range2) {
    const ignoreTxt = "# type: ignore";
    const doc = import_coc4.workspace.getDocument(document.uri);
    if (!doc) {
      return null;
    }
    if (this.wholeRange(document, range2)) {
      let pos = import_coc4.Position.create(0, 0);
      if (doc.getline(0).startsWith("#!")) pos = import_coc4.Position.create(1, 0);
      if (!doc.getline(pos.line).includes(ignoreTxt)) {
        return {
          title: "Ignore Pyright typing check for whole file",
          kind: import_coc4.CodeActionKind.Empty,
          edit: {
            changes: {
              [doc.uri]: [import_coc4.TextEdit.insert(pos, `${ignoreTxt}
`)]
            }
          }
        };
      }
    }
    if (this.lineRange(range2)) {
      const line = doc.getline(range2.start.line);
      if (line.length && !line.startsWith("#") && !line.includes(ignoreTxt)) {
        const edit = import_coc4.TextEdit.replace(
          range2,
          `${line}  ${ignoreTxt}${range2.start.line + 1 === range2.end.line ? "\n" : ""}`
        );
        return {
          title: "Ignore Pyright typing check for current line",
          kind: import_coc4.CodeActionKind.Empty,
          edit: {
            changes: {
              [doc.uri]: [edit]
            }
          }
        };
      }
    }
    return null;
  }
  extractActions(document, range2) {
    return [
      // extract actions should only work on range text
      {
        title: "Extract Method",
        kind: import_coc4.CodeActionKind.RefactorExtract,
        command: {
          command: "python.refactorExtractMethod",
          title: "",
          arguments: [document, range2]
        }
      },
      {
        title: "Extract Variable",
        kind: import_coc4.CodeActionKind.RefactorExtract,
        command: {
          title: "",
          command: "python.refactorExtractVariable",
          arguments: [document, range2]
        }
      }
    ];
  }
  async fetchImportsByDiagnostic(document, diag) {
    const match2 = diag.message.match(/"(.*)" is not defined/);
    if (!match2) return [];
    const source = import_coc4.sources.sources.find((s) => s.name.includes("pyright"));
    if (!source) return [];
    const option = { position: diag.range.end, bufnr: document.uri };
    const tokenSource = new import_coc4.CancellationTokenSource();
    const result = await source.doComplete(option, tokenSource.token);
    tokenSource.cancel();
    return result ? result.items.filter((x) => x.label === match2[1]) : [];
  }
  async fixAction(document, diag) {
    var _a2;
    const actions = [];
    if (diag.code === "reportUndefinedVariable") {
      const items = await this.fetchImportsByDiagnostic(document, diag);
      for (const item of items) {
        const changes = [item.textEdit].concat(item.additionalTextEdits ?? []);
        const title = (_a2 = item.documentation) == null ? void 0 : _a2.value.replace("```\n", "").replace("\n```", "").trim();
        actions.push({
          title,
          kind: import_coc4.CodeActionKind.QuickFix,
          edit: {
            changes: {
              [document.uri]: changes
            }
          }
        });
      }
    }
    if (diag.fix) {
      actions.push({
        // @ts-expect-error
        title: diag.fix.title,
        kind: import_coc4.CodeActionKind.QuickFix,
        // @ts-expect-error
        edit: diag.fix.edit
      });
    }
    return actions;
  }
  async provideCodeActions(document, range2, context) {
    const actions = [];
    if (context.diagnostics.length) {
      for (const diag of context.diagnostics) {
        actions.push(...await this.fixAction(document, diag));
      }
    }
    actions.push(this.sortImportsAction());
    const ignore = this.ignoreAction(document, range2);
    if (ignore) actions.push(ignore);
    if (!this.wholeRange(document, range2) && !this.cursorRange(range2)) {
      actions.push(...this.extractActions(document, range2));
    }
    return actions;
  }
};

// src/features/formatting.ts
var import_coc9 = require("coc.nvim");

// src/features/formatters/baseFormatter.ts
var import_coc6 = require("coc.nvim");
var import_node_fs3 = __toESM(require("node:fs"));
var import_md52 = __toESM(require_md5());
var import_node_path3 = __toESM(require("node:path"));
var import_which2 = __toESM(require_lib());

// src/processService.ts
var import_node_child_process = require("node:child_process");
var iconv = __toESM(require_lib2());
var import_node_os = require("node:os");
var import_rxjs = __toESM(require_cjs());

// src/async.ts
var DeferredImpl = class {
  constructor(scope = null) {
    this.scope = scope;
    this._resolved = false;
    this._rejected = false;
    this._promise = new Promise((res, rej) => {
      this._resolve = res;
      this._reject = rej;
    });
  }
  resolve(_value) {
    this._resolve.apply(this.scope ? this.scope : this, [_value]);
    this._resolved = true;
  }
  reject(_reason) {
    this._reject.apply(this.scope ? this.scope : this, [_reason]);
    this._rejected = true;
  }
  get promise() {
    return this._promise;
  }
  get resolved() {
    return this._resolved;
  }
  get rejected() {
    return this._rejected;
  }
  get completed() {
    return this._rejected || this._resolved;
  }
};
function createDeferred(scope = null) {
  return new DeferredImpl(scope);
}

// src/processService.ts
var DEFAULT_ENCODING = "utf8";
var BufferDecoder = class {
  decode(buffers, value = DEFAULT_ENCODING) {
    const encoding = iconv.encodingExists(value) ? value : DEFAULT_ENCODING;
    return iconv.decode(Buffer.concat(buffers), encoding);
  }
};
var ModuleNotInstalledError = class extends Error {
  constructor(moduleName) {
    super(`Module '${moduleName}' not installed.`);
  }
};
function isNotInstalledError(error) {
  const isError = typeof error === "object" && error !== null;
  const errorObj = error;
  if (!isError) {
    return false;
  }
  if (error instanceof ModuleNotInstalledError) {
    return true;
  }
  const isModuleNoInstalledError = error.message.indexOf("No module named") >= 0;
  return errorObj.code === "ENOENT" || errorObj.code === 127 || isModuleNoInstalledError;
}
var ProcessService = class _ProcessService {
  constructor() {
    this.decoder = new BufferDecoder();
  }
  static isAlive(pid) {
    try {
      process.kill(pid, 0);
      return true;
    } catch {
      return false;
    }
  }
  static kill(pid) {
    const killProcessTree = require_tree_kill();
    try {
      killProcessTree(pid);
    } catch {
    }
  }
  execObservable(file, args, options = {}) {
    const spawnOptions = this.getDefaultOptions(options);
    const encoding = spawnOptions.encoding ? spawnOptions.encoding : DEFAULT_ENCODING;
    const proc = (0, import_node_child_process.spawn)(file, args, spawnOptions);
    let procExited = false;
    const output = new import_rxjs.Observable((subscriber) => {
      if (options.token) {
        options.token.onCancellationRequested(() => {
          if (!procExited && !proc.killed) {
            proc.kill();
            procExited = true;
          }
        });
      }
      const sendOutput = (source, data) => {
        const out = this.decoder.decode([data], encoding);
        if (source === "stderr" && options.throwOnStdErr) {
          subscriber.error(new Error(out));
        } else {
          subscriber.next({ source, out });
        }
      };
      proc.stdout.on("data", (data) => sendOutput("stdout", data));
      proc.stderr.on("data", (data) => sendOutput("stderr", data));
      const onExit = (ex) => {
        if (procExited) return;
        procExited = true;
        if (ex) subscriber.error(ex);
        subscriber.complete();
      };
      proc.once("close", () => {
        onExit();
      });
      proc.once("error", onExit);
    });
    return {
      proc,
      out: output,
      dispose: () => {
        if (proc && !proc.killed) {
          _ProcessService.kill(proc.pid);
        }
      }
    };
  }
  exec(file, args, options = {}) {
    const cmd = file.startsWith("~/") ? file.replace("~", (0, import_node_os.homedir)()) : file;
    const spawnOptions = this.getDefaultOptions(options);
    const encoding = spawnOptions.encoding ? spawnOptions.encoding : DEFAULT_ENCODING;
    const proc = (0, import_node_child_process.spawn)(cmd, args, spawnOptions);
    const deferred = createDeferred();
    if (options.token) {
      options.token.onCancellationRequested(() => {
        if (!proc.killed && !deferred.completed) {
          proc.kill();
        }
      });
    }
    const stdoutBuffers = [];
    proc.stdout.on("data", (data) => stdoutBuffers.push(data));
    const stderrBuffers = [];
    proc.stderr.on("data", (data) => {
      if (options.mergeStdOutErr) {
        stdoutBuffers.push(data);
        stderrBuffers.push(data);
      } else {
        stderrBuffers.push(data);
      }
    });
    proc.once("close", () => {
      if (deferred.completed) {
        return;
      }
      const stderr = stderrBuffers.length === 0 ? void 0 : this.decoder.decode(stderrBuffers, encoding);
      if (stderr && stderr.length > 0 && options.throwOnStdErr) {
        deferred.reject(new Error(stderr));
      } else {
        const stdout = this.decoder.decode(stdoutBuffers, encoding);
        deferred.resolve({ stdout, stderr });
      }
    });
    proc.once("error", (ex) => {
      console.error("once error:", ex);
      deferred.reject(ex);
    });
    return deferred.promise;
  }
  getDefaultOptions(options) {
    const defaultOptions = { ...options };
    if (!defaultOptions.env || Object.keys(defaultOptions.env).length === 0) {
      defaultOptions.env = { ...process.env };
    } else {
      defaultOptions.env = { ...defaultOptions.env };
    }
    defaultOptions.env.PYTHONUNBUFFERED = "1";
    if (!defaultOptions.env.PYTHONIOENCODING) {
      defaultOptions.env.PYTHONIOENCODING = "utf-8";
    }
    return defaultOptions;
  }
};
var PythonExecutionService = class {
  constructor() {
    this.procService = new ProcessService();
    this.pythonSettings = PythonSettings.getInstance();
  }
  async isModuleInstalled(moduleName) {
    return this.procService.exec(this.pythonSettings.pythonPath, ["-c", `import ${moduleName}`], { throwOnStdErr: true }).then(() => true).catch(() => false);
  }
  execObservable(cmd, args, options) {
    const opts = { ...options };
    return this.procService.execObservable(cmd, args, opts);
  }
  async exec(executionInfo, options) {
    const opts = { ...options };
    const { execPath, moduleName, args } = executionInfo;
    if (moduleName && moduleName.length > 0) {
      const result = await this.procService.exec(this.pythonSettings.pythonPath, ["-m", moduleName, ...args], opts);
      if (result.stderr && (result.stderr.indexOf(`No module named ${moduleName}`) > 0 || result.stderr.indexOf(`No module named '${moduleName}'`) > 0)) {
        throw new ModuleNotInstalledError(moduleName);
      }
      return result;
    }
    return this.procService.exec(execPath, args, opts);
  }
};

// src/utils.ts
var import_coc5 = require("coc.nvim");
var import_diff_match_patch = __toESM(require_diff_match_patch());
var import_node_fs2 = __toESM(require("node:fs"));
var import_md5 = __toESM(require_md5());
var import_node_os2 = require("node:os");
var path3 = __toESM(require("node:path"));
var NEW_LINE_LENGTH = import_node_os2.EOL.length;
var Edit = class {
  constructor(action, start) {
    this.action = action;
    this.start = start;
    this.text = "";
  }
  apply() {
    switch (this.action) {
      case 1 /* Insert */:
        return import_coc5.TextEdit.insert(this.start, this.text);
      case 0 /* Delete */:
        return import_coc5.TextEdit.del(import_coc5.Range.create(this.start, this.end));
      case 2 /* Replace */:
        return import_coc5.TextEdit.replace(import_coc5.Range.create(this.start, this.end), this.text);
      default:
        return {
          range: import_coc5.Range.create(0, 0, 0, 0),
          newText: ""
        };
    }
  }
};
function getTextEditsInternal(before, diffs, startLine = 0) {
  let line = startLine;
  let character = 0;
  if (line > 0) {
    const beforeLines = before.split(/\r?\n/g).filter((_l, i) => i < line);
    for (const l of beforeLines) {
      character += l.length + NEW_LINE_LENGTH;
    }
  }
  const edits = [];
  let edit = null;
  for (let i = 0; i < diffs.length; i += 1) {
    const start = { line, character };
    for (let curr = 0; curr < diffs[i][1].length; curr += 1) {
      if (diffs[i][1][curr] !== "\n") {
        character += 1;
      } else {
        character = 0;
        line += 1;
      }
    }
    const dmp = require_diff_match_patch();
    switch (diffs[i][0]) {
      case dmp.DIFF_DELETE:
        if (edit === null) {
          edit = new Edit(0 /* Delete */, start);
        } else if (edit.action !== 0 /* Delete */) {
          throw new Error("cannot format due to an internal error.");
        }
        edit.end = { line, character };
        break;
      case dmp.DIFF_INSERT:
        if (edit === null) {
          edit = new Edit(1 /* Insert */, start);
        } else if (edit.action === 0 /* Delete */) {
          edit.action = 2 /* Replace */;
        }
        line = start.line;
        character = start.character;
        edit.text += diffs[i][1];
        break;
      case dmp.DIFF_EQUAL:
        if (edit !== null) {
          edits.push(edit);
          edit = null;
        }
        break;
    }
  }
  if (edit !== null) {
    edits.push(edit);
  }
  return edits;
}
function patch_fromText(textline) {
  const patches = [];
  if (!textline) {
    return patches;
  }
  const text = textline.split(/[\r\n]/);
  let textPointer = 0;
  const patchHeader = /^@@ -(\d+),?(\d*) \+(\d+),?(\d*) @@$/;
  while (textPointer < text.length) {
    const m = text[textPointer].match(patchHeader);
    if (!m) {
      throw new Error(`Invalid patch string: ${text[textPointer]}`);
    }
    const patch = new import_diff_match_patch.diff_match_patch.patch_obj();
    patches.push(patch);
    patch.start1 = parseInt(m[1], 10);
    if (m[2] === "") {
      patch.start1 -= 1;
      patch.length1 = 1;
    } else if (m[2] === "0") {
      patch.length1 = 0;
    } else {
      patch.start1 -= 1;
      patch.length1 = parseInt(m[2], 10);
    }
    patch.start2 = parseInt(m[3], 10);
    if (m[4] === "") {
      patch.start2 -= 1;
      patch.length2 = 1;
    } else if (m[4] === "0") {
      patch.length2 = 0;
    } else {
      patch.start2 -= 1;
      patch.length2 = parseInt(m[4], 10);
    }
    textPointer += 1;
    const dmp = require_diff_match_patch();
    while (textPointer < text.length) {
      const sign = text[textPointer].charAt(0);
      let line;
      try {
        line = text[textPointer].substring(1);
      } catch (_ex) {
        throw new Error("Illegal escape in patch_fromText");
      }
      if (sign === "-") {
        patch.diffs.push([dmp.DIFF_DELETE, line]);
      } else if (sign === "+") {
        patch.diffs.push([dmp.DIFF_INSERT, line]);
      } else if (sign === " ") {
        patch.diffs.push([dmp.DIFF_EQUAL, line]);
      } else if (sign === "@") {
        break;
      } else if (sign === "") {
      } else {
        throw new Error(`Invalid patch mode '${sign}' in: ${line}`);
      }
      textPointer += 1;
    }
  }
  return patches;
}
function getTextEditsFromPatch(before, input) {
  let patch = input;
  if (patch.startsWith("---")) {
    patch = patch.substring(patch.indexOf("@@"));
  }
  if (patch.length === 0) {
    return [];
  }
  patch = patch.replace(/\\ No newline at end of file[\r\n]/, "");
  const dmp = require_diff_match_patch();
  const d = new dmp.diff_match_patch();
  const patches = patch_fromText.call(d, patch);
  if (!Array.isArray(patches) || patches.length === 0) {
    throw new Error("Unable to parse Patch string");
  }
  const textEdits = [];
  for (const p of patches) {
    for (const diff of p.diffs) {
      diff[1] += import_node_os2.EOL;
    }
    for (const edit of getTextEditsInternal(before, p.diffs, p.start1)) {
      textEdits.push(edit.apply());
    }
  }
  return textEdits;
}
function splitLines(str, splitOptions) {
  let lines = str.split(/\r?\n/g);
  if (splitOptions.trim) {
    lines = lines.map((line) => line.trim());
  }
  if (splitOptions.removeEmptyEntries) {
    lines = lines.filter((line) => line.length > 0);
  }
  return lines;
}
function getWindowsLineEndingCount(document, offset) {
  const eolPattern = /\r\n/g;
  const readBlock = 1024;
  let count = 0;
  let offsetDiff = offset.valueOf();
  for (let pos = 0; pos < offset; pos += readBlock) {
    const startAt = document.positionAt(pos);
    let endAt;
    if (offsetDiff >= readBlock) {
      endAt = document.positionAt(pos + readBlock);
      offsetDiff = offsetDiff - readBlock;
    } else {
      endAt = document.positionAt(pos + offsetDiff);
    }
    const text = document.getText(import_coc5.Range.create(startAt, endAt));
    const cr = text.match(eolPattern);
    count += cr ? cr.length : 0;
  }
  return count;
}
function getTempFileWithDocumentContents(document) {
  return new Promise((resolve, reject) => {
    const fsPath = import_coc5.Uri.parse(document.uri).fsPath;
    const fileName = `${fsPath.slice(0, -3)}${(0, import_md5.default)(document.uri)}${path3.extname(fsPath)}`;
    import_node_fs2.default.writeFile(fileName, document.getText(), (ex) => {
      if (ex) {
        reject(new Error(`Failed to create a temporary file, ${ex.message}`));
      }
      resolve(fileName);
    });
  });
}
function comparePosition(position, other) {
  if (position.line > other.line) return 1;
  if (other.line === position.line && position.character > other.character) return 1;
  if (other.line === position.line && position.character === other.character) return 0;
  return -1;
}
function positionInRange(position, range2) {
  const { start, end } = range2;
  if (comparePosition(position, start) < 0) return -1;
  if (comparePosition(position, end) > 0) return 1;
  return 0;
}
function rangeInRange(r, range2) {
  return positionInRange(r.start, range2) === 0 && positionInRange(r.end, range2) === 0;
}

// src/features/formatters/baseFormatter.ts
function getTempFileWithDocumentContents2(document) {
  return new Promise((resolve, reject) => {
    const fsPath = import_coc6.Uri.parse(document.uri).fsPath;
    const ext2 = import_node_path3.default.extname(fsPath);
    const fileName = `${fsPath}.${(0, import_md52.default)(document.uri)}${ext2}`;
    import_node_fs3.default.writeFile(fileName, document.getText(), (ex) => {
      if (ex) {
        reject(new Error(`Failed to create a temporary file, ${ex.message}`));
      }
      resolve(fileName);
    });
  });
}
var BaseFormatter = class {
  constructor(Id, pythonSettings, outputChannel) {
    this.Id = Id;
    this.pythonSettings = pythonSettings;
    this.outputChannel = outputChannel;
  }
  getDocumentPath(document, fallbackPath) {
    const filepath = import_coc6.Uri.parse(document.uri).fsPath;
    if (fallbackPath && import_node_path3.default.basename(filepath) === filepath) {
      return fallbackPath;
    }
    return import_node_path3.default.dirname(filepath);
  }
  getWorkspaceUri(document) {
    const filepath = import_coc6.Uri.parse(document.uri).fsPath;
    if (!filepath.startsWith(import_coc6.workspace.root)) return;
    return import_coc6.Uri.file(import_coc6.workspace.root);
  }
  getExecutionInfo(args) {
    let moduleName;
    let execPath = this.pythonSettings.formatting[`${this.Id}Path`];
    execPath = import_which2.default.sync(execPath, { nothrow: true }) || execPath;
    if (import_node_path3.default.basename(execPath) === execPath) {
      moduleName = execPath;
    }
    return { execPath, moduleName, args };
  }
  async provideDocumentFormattingEdits(document, _options, token, args, root) {
    if (this.pythonSettings.stdLibs.some((p) => import_coc6.Uri.parse(document.uri).fsPath.startsWith(p))) {
      return [];
    }
    const filepath = import_coc6.Uri.parse(document.uri).fsPath;
    const tempFile = await this.createTempFile(document);
    if (this.checkCancellation(filepath, tempFile, "start", token)) {
      return [];
    }
    args.push(tempFile);
    const executionInfo = this.getExecutionInfo(args);
    this.outputChannel.appendLine(`execPath:   ${executionInfo.execPath}`);
    this.outputChannel.appendLine(`moduleName: ${executionInfo.moduleName}`);
    this.outputChannel.appendLine(`args:       ${executionInfo.args}`);
    const cwd = (root == null ? void 0 : root.length) ? root : import_coc6.Uri.file(import_coc6.workspace.root).fsPath;
    const pythonToolsExecutionService = new PythonExecutionService();
    const promise = pythonToolsExecutionService.exec(executionInfo, { cwd, throwOnStdErr: false, token }).then((output) => {
      if (output.stderr) {
        throw new Error(output.stderr);
      }
      return output.stdout;
    }).then((data) => {
      this.outputChannel.appendLine("");
      this.outputChannel.appendLine(`${"#".repeat(10)} ${this.Id} output:`);
      this.outputChannel.appendLine(data);
      if (this.checkCancellation(filepath, tempFile, "success", token)) {
        return [];
      }
      const edits = getTextEditsFromPatch(document.getText(), data);
      if (edits.length) import_coc6.window.showInformationMessage(`Formatted with ${this.Id}`);
      return edits;
    }).catch((error) => {
      this.handleError(this.Id, error).catch(() => {
      });
      if (this.checkCancellation(filepath, tempFile, "error", token)) {
        return [];
      }
      return [];
    }).finally(() => {
      this.deleteTempFile(filepath, tempFile).catch(() => {
      });
    });
    return promise;
  }
  async handleError(_expectedFileName, error) {
    this.outputChannel.appendLine(`${"#".repeat(10)} Formatting with ${this.Id} failed`);
    this.outputChannel.appendLine(error.message);
    let customError = `Formatting with ${this.Id} failed`;
    if (isNotInstalledError(error)) {
      customError = `${customError}: ${this.Id} module is not installed.`;
    }
    import_coc6.window.showWarningMessage(customError);
  }
  createTempFile(document) {
    return getTempFileWithDocumentContents2(document);
  }
  deleteTempFile(originalFile, tempFile) {
    if (originalFile !== tempFile) {
      return import_node_fs3.default.promises.unlink(tempFile);
    }
    return Promise.resolve();
  }
  checkCancellation(originalFile, tempFile, state, token) {
    if (token == null ? void 0 : token.isCancellationRequested) {
      this.outputChannel.appendLine(`${"#".repeat(10)} ${this.Id} formatting action is canceled on ${state}`);
      this.deleteTempFile(originalFile, tempFile).catch(() => {
      });
      return true;
    }
    return false;
  }
};

// src/features/formatters/autopep8.ts
var AutoPep8Formatter = class extends BaseFormatter {
  constructor(pythonSettings, outputChannel) {
    super("autopep8", pythonSettings, outputChannel);
    this.pythonSettings = pythonSettings;
    this.outputChannel = outputChannel;
  }
  formatDocument(document, options, token, range2) {
    const autoPep8Args = ["--diff"];
    if (this.pythonSettings.formatting.autopep8Args.length > 0) {
      autoPep8Args.push(...this.pythonSettings.formatting.autopep8Args);
    }
    if (range2) {
      autoPep8Args.push("--line-range", (range2.start.line + 1).toString(), (range2.end.line + 1).toString());
    }
    const promise = super.provideDocumentFormattingEdits(document, options, token, autoPep8Args);
    return promise;
  }
};

// src/features/formatters/black.ts
var BlackFormatter = class extends BaseFormatter {
  constructor(pythonSettings, outputChannel) {
    super("black", pythonSettings, outputChannel);
    this.pythonSettings = pythonSettings;
    this.outputChannel = outputChannel;
  }
  formatDocument(document, options, token, range2) {
    const blackArgs = ["--diff", "--quiet"];
    if (range2) {
      blackArgs.push(`--line-ranges=${range2.start.line + 1}-${range2.end.line}`);
    }
    if (this.pythonSettings.formatting.blackArgs.length > 0) {
      blackArgs.push(...this.pythonSettings.formatting.blackArgs);
    }
    const promise = super.provideDocumentFormattingEdits(document, options, token, blackArgs);
    return promise;
  }
};

// src/features/formatters/blackd.ts
var import_node_child_process2 = require("node:child_process");
var import_coc7 = require("coc.nvim");

// node_modules/get-port/index.js
var import_node_net = __toESM(require("node:net"), 1);
var import_node_os3 = __toESM(require("node:os"), 1);
var Locked = class extends Error {
  constructor(port) {
    super(`${port} is locked`);
  }
};
var lockedPorts = {
  old: /* @__PURE__ */ new Set(),
  young: /* @__PURE__ */ new Set()
};
var releaseOldLockedPortsIntervalMs = 1e3 * 15;
var reservedPorts = /* @__PURE__ */ new Set();
var timeout;
var getLocalHosts = () => {
  const interfaces = import_node_os3.default.networkInterfaces();
  const results = /* @__PURE__ */ new Set([void 0, "0.0.0.0"]);
  for (const _interface of Object.values(interfaces)) {
    for (const config of _interface) {
      results.add(config.address);
    }
  }
  return results;
};
var checkAvailablePort = (options) => new Promise((resolve, reject) => {
  const server = import_node_net.default.createServer();
  server.unref();
  server.on("error", reject);
  server.listen(options, () => {
    const { port } = server.address();
    server.close(() => {
      resolve(port);
    });
  });
});
var getAvailablePort = async (options, hosts) => {
  if (options.host || options.port === 0) {
    return checkAvailablePort(options);
  }
  for (const host of hosts) {
    try {
      await checkAvailablePort({ port: options.port, host });
    } catch (error) {
      if (!["EADDRNOTAVAIL", "EINVAL"].includes(error.code)) {
        throw error;
      }
    }
  }
  return options.port;
};
var isLockedPort = (port) => lockedPorts.old.has(port) || lockedPorts.young.has(port) || reservedPorts.has(port);
var portCheckSequence = function* (ports) {
  if (ports) {
    yield* ports;
  }
  yield 0;
};
async function getPorts(options) {
  let ports;
  let exclude = /* @__PURE__ */ new Set();
  if (options) {
    if (options.port) {
      ports = typeof options.port === "number" ? [options.port] : options.port;
    }
    if (options.exclude) {
      const excludeIterable = options.exclude;
      if (typeof excludeIterable[Symbol.iterator] !== "function") {
        throw new TypeError("The `exclude` option must be an iterable.");
      }
      for (const element of excludeIterable) {
        if (typeof element !== "number") {
          throw new TypeError("Each item in the `exclude` option must be a number corresponding to the port you want excluded.");
        }
        if (!Number.isSafeInteger(element)) {
          throw new TypeError(`Number ${element} in the exclude option is not a safe integer and can't be used`);
        }
      }
      exclude = new Set(excludeIterable);
    }
  }
  const { reserve, ...netOptions } = options ?? {};
  if (timeout === void 0) {
    timeout = setTimeout(() => {
      timeout = void 0;
      lockedPorts.old = lockedPorts.young;
      lockedPorts.young = /* @__PURE__ */ new Set();
    }, releaseOldLockedPortsIntervalMs);
    if (timeout.unref) {
      timeout.unref();
    }
  }
  const hosts = getLocalHosts();
  for (const port of portCheckSequence(ports)) {
    try {
      if (exclude.has(port)) {
        continue;
      }
      let availablePort = await getAvailablePort({ ...netOptions, port }, hosts);
      while (isLockedPort(availablePort)) {
        if (port !== 0) {
          throw new Locked(port);
        }
        availablePort = await getAvailablePort({ ...netOptions, port }, hosts);
      }
      if (reserve) {
        reservedPorts.add(availablePort);
      } else {
        lockedPorts.young.add(availablePort);
      }
      return availablePort;
    } catch (error) {
      if (!["EADDRINUSE", "EACCES"].includes(error.code) && !(error instanceof Locked)) {
        throw error;
      }
    }
  }
  throw new Error("No available ports found");
}

// src/features/formatters/blackd.ts
var BlackdFormatter = class extends BaseFormatter {
  constructor(pythonSettings, outputChannel) {
    super("blackd", pythonSettings, outputChannel);
    this.pythonSettings = pythonSettings;
    this.outputChannel = outputChannel;
    this.blackdHTTPURL = "";
    this.blackdHTTPURL = this.pythonSettings.formatting.blackdHTTPURL;
    if (!this.blackdHTTPURL.length) {
      this.launchServer();
    }
  }
  async launchServer() {
    const port = await getPorts({ port: 45484 });
    this.blackdHTTPURL = `http://127.0.0.1:${port}`;
    const blackdPath = this.pythonSettings.formatting.blackdPath;
    (0, import_node_child_process2.spawn)(blackdPath, ["--bind-port", String(port)]).on("error", (e) => {
      this.outputChannel.appendLine("");
      this.outputChannel.appendLine("spawn blackd HTTP server error");
      this.outputChannel.appendLine(e.message);
      this.outputChannel.appendLine('make sure you have installed blackd by `pip install "black[d]"`');
      this.blackdHTTPURL = "";
    });
  }
  async handle(document) {
    if (!this.blackdHTTPURL.length) {
      return Promise.resolve([]);
    }
    try {
      const headers = Object.assign({ "X-Diff": 1 }, this.pythonSettings.formatting.blackdHTTPHeaders);
      const patch = await (0, import_coc7.fetch)(this.blackdHTTPURL, { method: "POST", data: document.getText(), headers });
      this.outputChannel.appendLine("");
      this.outputChannel.appendLine(`${"#".repeat(10)} ${this.Id} output:`);
      this.outputChannel.appendLine(patch.toString());
      return getTextEditsFromPatch(document.getText(), patch.toString());
    } catch (e) {
      import_coc7.window.showErrorMessage("blackd request error");
      this.outputChannel.appendLine("");
      this.outputChannel.appendLine(`${"#".repeat(10)} blackd request error:`);
      if (typeof e === "string") {
        this.outputChannel.appendLine(e);
      } else if (e instanceof Error) {
        this.outputChannel.appendLine(e.message);
      }
      return [];
    }
  }
  formatDocument(document, _options, _token, range2) {
    if (range2) {
      const msg = "blackd does not support range formatting";
      this.outputChannel.appendLine(msg);
      import_coc7.window.showErrorMessage(msg);
      return Promise.resolve([]);
    }
    if (this.pythonSettings.stdLibs.some((p) => import_coc7.Uri.parse(document.uri).fsPath.startsWith(p))) {
      return Promise.resolve([]);
    }
    return this.handle(document);
  }
};

// src/features/formatters/darker.ts
var import_coc8 = require("coc.nvim");
var DarkerFormatter = class extends BaseFormatter {
  constructor(pythonSettings, outputChannel) {
    super("darker", pythonSettings, outputChannel);
    this.pythonSettings = pythonSettings;
    this.outputChannel = outputChannel;
  }
  createTempFile(document) {
    return new Promise((resolve) => {
      resolve(import_coc8.Uri.parse(document.uri).fsPath);
    });
  }
  formatDocument(document, options, token) {
    const darkerArgs = ["--diff"];
    if (this.pythonSettings.formatting.darkerArgs.length > 0) {
      darkerArgs.push(...this.pythonSettings.formatting.darkerArgs);
    }
    return super.provideDocumentFormattingEdits(document, options, token, darkerArgs);
  }
};

// src/features/formatters/pyink.ts
var PyinkFormatter = class extends BaseFormatter {
  constructor(pythonSettings, outputChannel) {
    super("pyink", pythonSettings, outputChannel);
    this.pythonSettings = pythonSettings;
    this.outputChannel = outputChannel;
  }
  formatDocument(document, options, token, range2) {
    const args = ["--diff", "--quiet"];
    if (this.pythonSettings.formatting.pyinkArgs.length > 0) {
      args.push(...this.pythonSettings.formatting.pyinkArgs);
    }
    if (range2) {
      args.push(`--pyink-lines=${range2.start.line + 1}-${range2.end.line}`);
    }
    const promise = super.provideDocumentFormattingEdits(document, options, token, args);
    return promise;
  }
};

// src/features/formatters/ruff.ts
var RuffFormatter = class extends BaseFormatter {
  constructor(pythonSettings, outputChannel) {
    super("ruff", pythonSettings, outputChannel);
    this.pythonSettings = pythonSettings;
    this.outputChannel = outputChannel;
  }
  formatDocument(document, options, token, range2) {
    const ruffArgs = ["format", "--diff", "--quiet"];
    if (range2) {
      ruffArgs.push(`--range=${range2.start.line + 1}-${range2.end.line + 1}`);
    }
    if (this.pythonSettings.formatting.ruffArgs.length > 0) {
      ruffArgs.push(...this.pythonSettings.formatting.ruffArgs);
    }
    return super.provideDocumentFormattingEdits(document, options, token, ruffArgs);
  }
};

// src/features/formatters/yapf.ts
var YapfFormatter = class extends BaseFormatter {
  constructor(pythonSettings, outputChannel) {
    super("yapf", pythonSettings, outputChannel);
    this.pythonSettings = pythonSettings;
    this.outputChannel = outputChannel;
  }
  formatDocument(document, options, token, range2) {
    var _a2;
    const yapfArgs = ["--diff"];
    if (this.pythonSettings.formatting.yapfArgs.length > 0) {
      yapfArgs.push(...this.pythonSettings.formatting.yapfArgs);
    }
    if (range2) {
      yapfArgs.push("--lines", `${range2.start.line + 1}-${range2.end.line + 1}`);
    }
    const fallbarFolder = (_a2 = this.getWorkspaceUri(document)) == null ? void 0 : _a2.fsPath;
    const cwd = this.getDocumentPath(document, fallbarFolder);
    const promise = super.provideDocumentFormattingEdits(document, options, token, yapfArgs, cwd);
    return promise;
  }
};

// src/features/formatting.ts
var PythonFormattingEditProvider = class {
  constructor() {
    this.formatters = /* @__PURE__ */ new Map();
    this.disposables = [];
    this.pythonSettings = PythonSettings.getInstance();
    this.outputChannel = import_coc9.window.createOutputChannel("coc-pyright-formatting");
    const provider = this.pythonSettings.formatting.provider;
    switch (provider) {
      case "black":
        this.formatters.set("black", new BlackFormatter(this.pythonSettings, this.outputChannel));
        break;
      case "pyink":
        this.formatters.set("pyink", new PyinkFormatter(this.pythonSettings, this.outputChannel));
        break;
      case "blackd":
        this.formatters.set("blackd", new BlackdFormatter(this.pythonSettings, this.outputChannel));
        break;
      case "yapf":
        this.formatters.set("yapf", new YapfFormatter(this.pythonSettings, this.outputChannel));
        break;
      case "ruff":
        this.formatters.set("ruff", new RuffFormatter(this.pythonSettings, this.outputChannel));
        break;
      case "autopep8":
        this.formatters.set("autopep8", new AutoPep8Formatter(this.pythonSettings, this.outputChannel));
        break;
      case "darker":
        this.formatters.set("darker", new DarkerFormatter(this.pythonSettings, this.outputChannel));
        break;
      default:
        break;
    }
  }
  async _provideEdits(document, options, token, range2) {
    const provider = this.pythonSettings.formatting.provider;
    const formatter = this.formatters.get(provider);
    if (!formatter) {
      this.outputChannel.appendLine(
        `${"#".repeat(10)} Error: python.formatting.provider is ${provider}, which is not supported`
      );
      return [];
    }
    this.outputChannel.appendLine(`Using python from ${this.pythonSettings.pythonPath}
`);
    this.outputChannel.appendLine(`${"#".repeat(10)} active formattor: ${formatter.Id}`);
    return formatter.formatDocument(document, options, token, range2);
  }
  provideDocumentFormattingEdits(document, options, token) {
    return this._provideEdits(document, options, token);
  }
  provideDocumentRangeFormattingEdits(document, range2, options, token) {
    return this._provideEdits(document, options, token, range2);
  }
  dispose() {
    for (const d of this.disposables) {
      d.dispose();
    }
  }
};

// src/features/importCompletion.ts
var import_coc10 = require("coc.nvim");
var ImportCompletionProvider = class {
  async provideCompletionItems(document, position, token, context) {
    if (context.triggerCharacter !== " ") return [];
    const line = document.getText(import_coc10.Range.create(position.line, 0, position.line, position.character)).trim();
    if (!line.includes("from") && !line.includes("import")) return [];
    const parts = line.split(" ");
    const first = parts[0];
    const last = parts[parts.length - 1];
    if (first !== last && first === "from" && last !== "import" && !last.endsWith(",")) {
      return [{ label: "import" }];
    }
    const source = import_coc10.sources.sources.find((s) => s.name.includes("pyright"));
    if (!source) return [];
    const result = await source.doComplete(context.option, token);
    if (!result) return [];
    const items = [];
    for (const o of result.items) {
      items.push({
        // @ts-expect-error
        label: o.label || o.word,
        sortText: o.sortText,
        kind: import_coc10.CompletionItemKind.Module,
        filterText: o.filterText
      });
    }
    return items;
  }
};

// src/features/inlayHints.ts
var import_coc11 = require("coc.nvim");
var TypeInlayHintsProvider = class {
  constructor(client) {
    this.client = client;
    this._onDidChangeInlayHints = new import_coc11.Emitter();
    this.onDidChangeInlayHints = this._onDidChangeInlayHints.event;
    import_coc11.workspace.onDidChangeConfiguration((e) => {
      if (e.affectsConfiguration("pyright.inlayHints")) {
        this._onDidChangeInlayHints.fire();
      }
    });
    import_coc11.workspace.onDidChangeTextDocument((e) => {
      const doc = import_coc11.workspace.getDocument(e.bufnr);
      if ((doc == null ? void 0 : doc.languageId) === "python") {
        this._onDidChangeInlayHints.fire();
      }
    });
  }
  async provideInlayHints(document, range2, token) {
    const inlayHints = [];
    const code = document.getText();
    const parsed = parse(code);
    if (!parsed) return [];
    const walker = new TypeInlayHintsWalker(parsed);
    walker.walk(parsed.parserOutput.parseTree);
    const featureItems = walker.featureItems.filter((item) => this.enableForType(item.hintType)).filter((item) => {
      const startPosition = document.positionAt(item.startOffset);
      const endPosition = document.positionAt(item.endOffset);
      return positionInRange(startPosition, range2) === 0 || positionInRange(endPosition, range2) === 0;
    });
    if (featureItems.length === 0) return [];
    for (const item of featureItems) {
      const startPosition = document.positionAt(item.startOffset);
      const endPosition = document.positionAt(item.endOffset);
      const hover = item.hintType === "parameter" ? null : await this.getHoverAtPosition(document, startPosition, token);
      const signatureHelp = item.hintType === "parameter" ? await this.getSignatureHelpAtPosition(document, startPosition, token) : null;
      let inlayHintLabelValue;
      switch (item.hintType) {
        case "variable":
          inlayHintLabelValue = this.getVariableHintFromHover(hover);
          break;
        case "functionReturn":
          inlayHintLabelValue = this.getFunctionReturnHintFromHover(hover);
          break;
        case "parameter":
          inlayHintLabelValue = this.getParameterHintFromSignature(signatureHelp);
          break;
        default:
          break;
      }
      if (!inlayHintLabelValue) {
        continue;
      }
      const inlayHintLabelPart = [
        {
          value: inlayHintLabelValue
        }
      ];
      let inlayHintPosition;
      switch (item.hintType) {
        case "variable":
          inlayHintPosition = import_coc11.Position.create(startPosition.line, endPosition.character + 1);
          break;
        case "functionReturn":
          inlayHintPosition = endPosition;
          break;
        case "parameter":
          inlayHintPosition = startPosition;
          break;
        default:
          break;
      }
      if (inlayHintPosition) {
        inlayHints.push({
          label: inlayHintLabelPart,
          position: inlayHintPosition,
          kind: item.hintType === "parameter" ? 2 : 1,
          paddingLeft: item.hintType === "functionReturn"
        });
      }
    }
    return inlayHints;
  }
  async getHoverAtPosition(document, position, token) {
    const params = {
      textDocument: { uri: document.uri },
      position
    };
    const result = await Promise.race([
      this.client.sendRequest("textDocument/hover", params, token),
      new Promise((resolve) => {
        setTimeout(() => {
          resolve(null);
        }, 200);
      })
    ]);
    return result;
  }
  getVariableHintFromHover(hover) {
    if (!hover) return;
    const contents = hover.contents;
    if (contents.value.includes("(variable)")) {
      if (contents.value.includes("(variable) def")) {
        return;
      }
      const firstIdx = contents.value.indexOf(": ");
      if (firstIdx > -1) {
        const text = contents.value.substring(firstIdx + 2).split("\n")[0].trim();
        if (text === "Any" || text.startsWith("Literal[")) {
          return;
        }
        return `: ${text}`;
      }
    }
  }
  getFunctionReturnHintFromHover(hover) {
    if (!hover) return;
    const contents = hover.contents;
    if (contents && (contents.value.includes("(function)") || contents.value.includes("(method)"))) {
      const retvalIdx = contents.value.indexOf("->") + 2;
      const text = contents.value.substring(retvalIdx).split("\n")[0].trim();
      return `-> ${text}`;
    }
  }
  async getSignatureHelpAtPosition(document, position, token) {
    const params = {
      textDocument: { uri: document.uri },
      position
    };
    const result = await Promise.race([
      this.client.sendRequest("textDocument/signatureHelp", params, token),
      new Promise((resolve) => {
        setTimeout(() => {
          resolve(null);
        }, 200);
      })
    ]);
    return result;
  }
  getParameterHintFromSignature(signatureInfo) {
    if (!signatureInfo) return;
    const sig = signatureInfo.signatures[0];
    if (typeof sig.activeParameter !== "number") {
      return;
    }
    if (!sig.parameters || sig.parameters.length < sig.activeParameter) {
      return;
    }
    const param = sig.parameters[sig.activeParameter];
    if (typeof param.label === "string") {
      return param.label;
    }
    const label = sig.label.substring(param.label[0], param.label[1]).split(":")[0];
    if (label.startsWith("__")) {
      return;
    }
    return `${label}: `;
  }
  enableForType(inlayHintType) {
    return import_coc11.workspace.getConfiguration("pyright").get(`inlayHints.${inlayHintType}Types`, true);
  }
};

// src/features/semanticTokens.ts
var import_positionUtils = __toESM(require_positionUtils());
var import_coc12 = require("coc.nvim");
var tokenTypes = [
  import_coc12.SemanticTokenTypes.class,
  import_coc12.SemanticTokenTypes.decorator,
  import_coc12.SemanticTokenTypes.enum,
  import_coc12.SemanticTokenTypes.enumMember,
  import_coc12.SemanticTokenTypes.function,
  import_coc12.SemanticTokenTypes.keyword,
  import_coc12.SemanticTokenTypes.method,
  import_coc12.SemanticTokenTypes.namespace,
  import_coc12.SemanticTokenTypes.parameter,
  import_coc12.SemanticTokenTypes.property,
  import_coc12.SemanticTokenTypes.typeParameter,
  import_coc12.SemanticTokenTypes.variable
];
var tokenModifiers = [
  import_coc12.SemanticTokenModifiers.definition,
  import_coc12.SemanticTokenModifiers.declaration,
  import_coc12.SemanticTokenModifiers.async
];
function encodeTokenType(type) {
  const idx = tokenTypes.indexOf(type);
  if (idx === -1) {
    throw new Error(`Unknown token type: ${type}`);
  }
  return idx;
}
function encodeTokenModifiers(modifiers) {
  let data = 0;
  for (const t of modifiers) {
    const idx = tokenModifiers.indexOf(t);
    if (idx === void 0) {
      continue;
    }
    data |= 1 << idx;
  }
  return data;
}
var PythonSemanticTokensProvider = class {
  constructor() {
    this.legend = { tokenTypes, tokenModifiers };
  }
  provideDocumentSemanticTokens(document, token) {
    const parsed = parse(document.getText());
    if (!parsed) return null;
    if (token == null ? void 0 : token.isCancellationRequested) return null;
    const builder = new import_coc12.SemanticTokensBuilder(this.legend);
    for (const item of parsed.tokenizerOutput.tokens._items) {
      if (item.type === 8 && item.keywordType) {
        const range2 = (0, import_positionUtils.convertTextRangeToRange)(item, parsed.tokenizerOutput.lines);
        builder.push(range2.start.line, range2.start.character, item.length, encodeTokenType(import_coc12.SemanticTokenTypes.keyword));
      }
    }
    const walker = new SemanticTokensWalker();
    walker.walk(parsed.parserOutput.parseTree);
    for (const item of walker.semanticItems) {
      const range2 = (0, import_positionUtils.convertOffsetsToRange)(item.start, item.start + item.length, parsed.tokenizerOutput.lines);
      builder.push(
        range2.start.line,
        range2.start.character,
        item.length,
        encodeTokenType(item.type),
        encodeTokenModifiers(item.modifiers)
      );
    }
    return builder.build();
  }
};

// src/features/sortImports.ts
var import_coc13 = require("coc.nvim");
var import_node_fs4 = __toESM(require("node:fs"));
var import_which3 = __toESM(require_lib());
function getSortProviderInfo(provider) {
  const pythonSettings = PythonSettings.getInstance();
  const modulePath = provider === "isort" ? pythonSettings.sortImports.path : pythonSettings.linting.ruffPath;
  const execPath = import_which3.default.sync(import_coc13.workspace.expand(modulePath), { nothrow: true }) || "";
  let args = [];
  if (provider === "isort") {
    args = ["--diff"];
    for (const item of pythonSettings.sortImports.args) {
      args.push(import_coc13.workspace.expand(item));
    }
  } else if (provider === "ruff") {
    args = ["check", "--diff"].concat(["--quiet", "--select", "I001"]);
  }
  return { execPath, args };
}
async function generateImportsDiff(provider, document, outputChannel) {
  const tempFile = await getTempFileWithDocumentContents(document);
  const executionInfo = getSortProviderInfo(provider);
  executionInfo.args.push(tempFile);
  outputChannel.appendLine(`${"#".repeat(10)} sortImports`);
  outputChannel.appendLine(`execPath:   ${executionInfo.execPath}`);
  outputChannel.appendLine(`args:       ${executionInfo.args.join(" ")} `);
  try {
    const pythonToolsExecutionService = new PythonExecutionService();
    const result = await pythonToolsExecutionService.exec(executionInfo, { throwOnStdErr: true });
    return result.stdout;
  } finally {
    await import_node_fs4.default.promises.unlink(tempFile);
  }
}
async function sortImports(outputChannel) {
  const doc = await import_coc13.workspace.document;
  if ((doc == null ? void 0 : doc.filetype) !== "python" || doc.lineCount <= 1) {
    return;
  }
  const provider = import_coc13.workspace.getConfiguration("pyright").get("organizeimports.provider", "pyright");
  if (provider === "pyright") {
    await import_coc13.commands.executeCommand("pyright.organizeimports");
    return;
  }
  try {
    const patch = await generateImportsDiff(provider, doc.textDocument, outputChannel);
    const edits = getTextEditsFromPatch(doc.getDocumentContent(), patch);
    await doc.applyEdits(edits);
    outputChannel.appendLine(`${"#".repeat(10)} sortImports Output ${"#".repeat(10)}`);
    outputChannel.appendLine(patch);
  } catch (err) {
    let message = "";
    if (typeof err === "string") {
      message = err;
    } else if (err instanceof Error) {
      message = err.message;
    }
    outputChannel.appendLine(`${"#".repeat(10)} sortImports Error ${"#".repeat(10)}`);
    outputChannel.appendLine(message);
    import_coc13.window.showErrorMessage("Failed to sort imports");
  }
}

// src/features/lintting.ts
var import_coc28 = require("coc.nvim");

// src/features/linters/lintingEngine.ts
var import_coc27 = require("coc.nvim");
var import_node_fs6 = __toESM(require("node:fs"));

// node_modules/balanced-match/dist/esm/index.js
var balanced = (a, b, str) => {
  const ma = a instanceof RegExp ? maybeMatch(a, str) : a;
  const mb = b instanceof RegExp ? maybeMatch(b, str) : b;
  const r = ma !== null && mb != null && range(ma, mb, str);
  return r && {
    start: r[0],
    end: r[1],
    pre: str.slice(0, r[0]),
    body: str.slice(r[0] + ma.length, r[1]),
    post: str.slice(r[1] + mb.length)
  };
};
var maybeMatch = (reg, str) => {
  const m = str.match(reg);
  return m ? m[0] : null;
};
var range = (a, b, str) => {
  let begs, beg, left, right = void 0, result;
  let ai = str.indexOf(a);
  let bi = str.indexOf(b, ai + 1);
  let i = ai;
  if (ai >= 0 && bi > 0) {
    if (a === b) {
      return [ai, bi];
    }
    begs = [];
    left = str.length;
    while (i >= 0 && !result) {
      if (i === ai) {
        begs.push(i);
        ai = str.indexOf(a, i + 1);
      } else if (begs.length === 1) {
        const r = begs.pop();
        if (r !== void 0)
          result = [r, bi];
      } else {
        beg = begs.pop();
        if (beg !== void 0 && beg < left) {
          left = beg;
          right = bi;
        }
        bi = str.indexOf(b, i + 1);
      }
      i = ai < bi && ai >= 0 ? ai : bi;
    }
    if (begs.length && right !== void 0) {
      result = [left, right];
    }
  }
  return result;
};

// node_modules/brace-expansion/dist/esm/index.js
var escSlash = "\0SLASH" + Math.random() + "\0";
var escOpen = "\0OPEN" + Math.random() + "\0";
var escClose = "\0CLOSE" + Math.random() + "\0";
var escComma = "\0COMMA" + Math.random() + "\0";
var escPeriod = "\0PERIOD" + Math.random() + "\0";
var escSlashPattern = new RegExp(escSlash, "g");
var escOpenPattern = new RegExp(escOpen, "g");
var escClosePattern = new RegExp(escClose, "g");
var escCommaPattern = new RegExp(escComma, "g");
var escPeriodPattern = new RegExp(escPeriod, "g");
var slashPattern = /\\\\/g;
var openPattern = /\\{/g;
var closePattern = /\\}/g;
var commaPattern = /\\,/g;
var periodPattern = /\\\./g;
var EXPANSION_MAX = 1e5;
function numeric(str) {
  return !isNaN(str) ? parseInt(str, 10) : str.charCodeAt(0);
}
function escapeBraces(str) {
  return str.replace(slashPattern, escSlash).replace(openPattern, escOpen).replace(closePattern, escClose).replace(commaPattern, escComma).replace(periodPattern, escPeriod);
}
function unescapeBraces(str) {
  return str.replace(escSlashPattern, "\\").replace(escOpenPattern, "{").replace(escClosePattern, "}").replace(escCommaPattern, ",").replace(escPeriodPattern, ".");
}
function parseCommaParts(str) {
  if (!str) {
    return [""];
  }
  const parts = [];
  const m = balanced("{", "}", str);
  if (!m) {
    return str.split(",");
  }
  const { pre, body, post } = m;
  const p = pre.split(",");
  p[p.length - 1] += "{" + body + "}";
  const postParts = parseCommaParts(post);
  if (post.length) {
    ;
    p[p.length - 1] += postParts.shift();
    p.push.apply(p, postParts);
  }
  parts.push.apply(parts, p);
  return parts;
}
function expand(str, options = {}) {
  if (!str) {
    return [];
  }
  const { max = EXPANSION_MAX } = options;
  if (str.slice(0, 2) === "{}") {
    str = "\\{\\}" + str.slice(2);
  }
  return expand_(escapeBraces(str), max, true).map(unescapeBraces);
}
function embrace(str) {
  return "{" + str + "}";
}
function isPadded(el) {
  return /^-?0\d/.test(el);
}
function lte(i, y) {
  return i <= y;
}
function gte(i, y) {
  return i >= y;
}
function expand_(str, max, isTop) {
  const expansions = [];
  const m = balanced("{", "}", str);
  if (!m)
    return [str];
  const pre = m.pre;
  const post = m.post.length ? expand_(m.post, max, false) : [""];
  if (/\$$/.test(m.pre)) {
    for (let k = 0; k < post.length && k < max; k++) {
      const expansion = pre + "{" + m.body + "}" + post[k];
      expansions.push(expansion);
    }
  } else {
    const isNumericSequence = /^-?\d+\.\.-?\d+(?:\.\.-?\d+)?$/.test(m.body);
    const isAlphaSequence = /^[a-zA-Z]\.\.[a-zA-Z](?:\.\.-?\d+)?$/.test(m.body);
    const isSequence = isNumericSequence || isAlphaSequence;
    const isOptions = m.body.indexOf(",") >= 0;
    if (!isSequence && !isOptions) {
      if (m.post.match(/,(?!,).*\}/)) {
        str = m.pre + "{" + m.body + escClose + m.post;
        return expand_(str, max, true);
      }
      return [str];
    }
    let n;
    if (isSequence) {
      n = m.body.split(/\.\./);
    } else {
      n = parseCommaParts(m.body);
      if (n.length === 1 && n[0] !== void 0) {
        n = expand_(n[0], max, false).map(embrace);
        if (n.length === 1) {
          return post.map((p) => m.pre + n[0] + p);
        }
      }
    }
    let N;
    if (isSequence && n[0] !== void 0 && n[1] !== void 0) {
      const x = numeric(n[0]);
      const y = numeric(n[1]);
      const width = Math.max(n[0].length, n[1].length);
      let incr = n.length === 3 && n[2] !== void 0 ? Math.max(Math.abs(numeric(n[2])), 1) : 1;
      let test = lte;
      const reverse = y < x;
      if (reverse) {
        incr *= -1;
        test = gte;
      }
      const pad = n.some(isPadded);
      N = [];
      for (let i = x; test(i, y) && N.length < max; i += incr) {
        let c;
        if (isAlphaSequence) {
          c = String.fromCharCode(i);
          if (c === "\\") {
            c = "";
          }
        } else {
          c = String(i);
          if (pad) {
            const need = width - c.length;
            if (need > 0) {
              const z = new Array(need + 1).join("0");
              if (i < 0) {
                c = "-" + z + c.slice(1);
              } else {
                c = z + c;
              }
            }
          }
        }
        N.push(c);
      }
    } else {
      N = [];
      for (let j = 0; j < n.length; j++) {
        N.push.apply(N, expand_(n[j], max, false));
      }
    }
    for (let j = 0; j < N.length; j++) {
      for (let k = 0; k < post.length && expansions.length < max; k++) {
        const expansion = pre + N[j] + post[k];
        if (!isTop || isSequence || expansion) {
          expansions.push(expansion);
        }
      }
    }
  }
  return expansions;
}

// node_modules/minimatch/dist/esm/assert-valid-pattern.js
var MAX_PATTERN_LENGTH = 1024 * 64;
var assertValidPattern = (pattern) => {
  if (typeof pattern !== "string") {
    throw new TypeError("invalid pattern");
  }
  if (pattern.length > MAX_PATTERN_LENGTH) {
    throw new TypeError("pattern is too long");
  }
};

// node_modules/minimatch/dist/esm/brace-expressions.js
var posixClasses = {
  "[:alnum:]": ["\\p{L}\\p{Nl}\\p{Nd}", true],
  "[:alpha:]": ["\\p{L}\\p{Nl}", true],
  "[:ascii:]": ["\\x00-\\x7f", false],
  "[:blank:]": ["\\p{Zs}\\t", true],
  "[:cntrl:]": ["\\p{Cc}", true],
  "[:digit:]": ["\\p{Nd}", true],
  "[:graph:]": ["\\p{Z}\\p{C}", true, true],
  "[:lower:]": ["\\p{Ll}", true],
  "[:print:]": ["\\p{C}", true],
  "[:punct:]": ["\\p{P}", true],
  "[:space:]": ["\\p{Z}\\t\\r\\n\\v\\f", true],
  "[:upper:]": ["\\p{Lu}", true],
  "[:word:]": ["\\p{L}\\p{Nl}\\p{Nd}\\p{Pc}", true],
  "[:xdigit:]": ["A-Fa-f0-9", false]
};
var braceEscape = (s) => s.replace(/[[\]\\-]/g, "\\$&");
var regexpEscape = (s) => s.replace(/[-[\]{}()*+?.,\\^$|#\s]/g, "\\$&");
var rangesToString = (ranges) => ranges.join("");
var parseClass = (glob, position) => {
  const pos = position;
  if (glob.charAt(pos) !== "[") {
    throw new Error("not in a brace expression");
  }
  const ranges = [];
  const negs = [];
  let i = pos + 1;
  let sawStart = false;
  let uflag = false;
  let escaping = false;
  let negate = false;
  let endPos = pos;
  let rangeStart = "";
  WHILE: while (i < glob.length) {
    const c = glob.charAt(i);
    if ((c === "!" || c === "^") && i === pos + 1) {
      negate = true;
      i++;
      continue;
    }
    if (c === "]" && sawStart && !escaping) {
      endPos = i + 1;
      break;
    }
    sawStart = true;
    if (c === "\\") {
      if (!escaping) {
        escaping = true;
        i++;
        continue;
      }
    }
    if (c === "[" && !escaping) {
      for (const [cls, [unip, u, neg]] of Object.entries(posixClasses)) {
        if (glob.startsWith(cls, i)) {
          if (rangeStart) {
            return ["$.", false, glob.length - pos, true];
          }
          i += cls.length;
          if (neg)
            negs.push(unip);
          else
            ranges.push(unip);
          uflag = uflag || u;
          continue WHILE;
        }
      }
    }
    escaping = false;
    if (rangeStart) {
      if (c > rangeStart) {
        ranges.push(braceEscape(rangeStart) + "-" + braceEscape(c));
      } else if (c === rangeStart) {
        ranges.push(braceEscape(c));
      }
      rangeStart = "";
      i++;
      continue;
    }
    if (glob.startsWith("-]", i + 1)) {
      ranges.push(braceEscape(c + "-"));
      i += 2;
      continue;
    }
    if (glob.startsWith("-", i + 1)) {
      rangeStart = c;
      i += 2;
      continue;
    }
    ranges.push(braceEscape(c));
    i++;
  }
  if (endPos < i) {
    return ["", false, 0, false];
  }
  if (!ranges.length && !negs.length) {
    return ["$.", false, glob.length - pos, true];
  }
  if (negs.length === 0 && ranges.length === 1 && /^\\?.$/.test(ranges[0]) && !negate) {
    const r = ranges[0].length === 2 ? ranges[0].slice(-1) : ranges[0];
    return [regexpEscape(r), false, endPos - pos, false];
  }
  const sranges = "[" + (negate ? "^" : "") + rangesToString(ranges) + "]";
  const snegs = "[" + (negate ? "" : "^") + rangesToString(negs) + "]";
  const comb = ranges.length && negs.length ? "(" + sranges + "|" + snegs + ")" : ranges.length ? sranges : snegs;
  return [comb, uflag, endPos - pos, true];
};

// node_modules/minimatch/dist/esm/unescape.js
var unescape2 = (s, { windowsPathsNoEscape = false, magicalBraces = true } = {}) => {
  if (magicalBraces) {
    return windowsPathsNoEscape ? s.replace(/\[([^/\\])\]/g, "$1") : s.replace(/((?!\\).|^)\[([^/\\])\]/g, "$1$2").replace(/\\([^/])/g, "$1");
  }
  return windowsPathsNoEscape ? s.replace(/\[([^/\\{}])\]/g, "$1") : s.replace(/((?!\\).|^)\[([^/\\{}])\]/g, "$1$2").replace(/\\([^/{}])/g, "$1");
};

// node_modules/minimatch/dist/esm/ast.js
var _a;
var types = /* @__PURE__ */ new Set(["!", "?", "+", "*", "@"]);
var isExtglobType = (c) => types.has(c);
var isExtglobAST = (c) => isExtglobType(c.type);
var adoptionMap = /* @__PURE__ */ new Map([
  ["!", ["@"]],
  ["?", ["?", "@"]],
  ["@", ["@"]],
  ["*", ["*", "+", "?", "@"]],
  ["+", ["+", "@"]]
]);
var adoptionWithSpaceMap = /* @__PURE__ */ new Map([
  ["!", ["?"]],
  ["@", ["?"]],
  ["+", ["?", "*"]]
]);
var adoptionAnyMap = /* @__PURE__ */ new Map([
  ["!", ["?", "@"]],
  ["?", ["?", "@"]],
  ["@", ["?", "@"]],
  ["*", ["*", "+", "?", "@"]],
  ["+", ["+", "@", "?", "*"]]
]);
var usurpMap = /* @__PURE__ */ new Map([
  ["!", /* @__PURE__ */ new Map([["!", "@"]])],
  [
    "?",
    /* @__PURE__ */ new Map([
      ["*", "*"],
      ["+", "*"]
    ])
  ],
  [
    "@",
    /* @__PURE__ */ new Map([
      ["!", "!"],
      ["?", "?"],
      ["@", "@"],
      ["*", "*"],
      ["+", "+"]
    ])
  ],
  [
    "+",
    /* @__PURE__ */ new Map([
      ["?", "*"],
      ["*", "*"]
    ])
  ]
]);
var startNoTraversal = "(?!(?:^|/)\\.\\.?(?:$|/))";
var startNoDot = "(?!\\.)";
var addPatternStart = /* @__PURE__ */ new Set(["[", "."]);
var justDots = /* @__PURE__ */ new Set(["..", "."]);
var reSpecials = new Set("().*{}+?[]^$\\!");
var regExpEscape = (s) => s.replace(/[-[\]{}()*+?.,\\^$|#\s]/g, "\\$&");
var qmark = "[^/]";
var star = qmark + "*?";
var starNoEmpty = qmark + "+?";
var ID = 0;
var AST = class {
  type;
  #root;
  #hasMagic;
  #uflag = false;
  #parts = [];
  #parent;
  #parentIndex;
  #negs;
  #filledNegs = false;
  #options;
  #toString;
  // set to true if it's an extglob with no children
  // (which really means one child of '')
  #emptyExt = false;
  id = ++ID;
  get depth() {
    var _a2;
    return (((_a2 = this.#parent) == null ? void 0 : _a2.depth) ?? -1) + 1;
  }
  [/* @__PURE__ */ Symbol.for("nodejs.util.inspect.custom")]() {
    var _a2;
    return {
      "@@type": "AST",
      id: this.id,
      type: this.type,
      root: this.#root.id,
      parent: (_a2 = this.#parent) == null ? void 0 : _a2.id,
      depth: this.depth,
      partsLength: this.#parts.length,
      parts: this.#parts
    };
  }
  constructor(type, parent, options = {}) {
    this.type = type;
    if (type)
      this.#hasMagic = true;
    this.#parent = parent;
    this.#root = this.#parent ? this.#parent.#root : this;
    this.#options = this.#root === this ? options : this.#root.#options;
    this.#negs = this.#root === this ? [] : this.#root.#negs;
    if (type === "!" && !this.#root.#filledNegs)
      this.#negs.push(this);
    this.#parentIndex = this.#parent ? this.#parent.#parts.length : 0;
  }
  get hasMagic() {
    if (this.#hasMagic !== void 0)
      return this.#hasMagic;
    for (const p of this.#parts) {
      if (typeof p === "string")
        continue;
      if (p.type || p.hasMagic)
        return this.#hasMagic = true;
    }
    return this.#hasMagic;
  }
  // reconstructs the pattern
  toString() {
    return this.#toString !== void 0 ? this.#toString : !this.type ? this.#toString = this.#parts.map((p) => String(p)).join("") : this.#toString = this.type + "(" + this.#parts.map((p) => String(p)).join("|") + ")";
  }
  #fillNegs() {
    if (this !== this.#root)
      throw new Error("should only call on root");
    if (this.#filledNegs)
      return this;
    this.toString();
    this.#filledNegs = true;
    let n;
    while (n = this.#negs.pop()) {
      if (n.type !== "!")
        continue;
      let p = n;
      let pp = p.#parent;
      while (pp) {
        for (let i = p.#parentIndex + 1; !pp.type && i < pp.#parts.length; i++) {
          for (const part of n.#parts) {
            if (typeof part === "string") {
              throw new Error("string part in extglob AST??");
            }
            part.copyIn(pp.#parts[i]);
          }
        }
        p = pp;
        pp = p.#parent;
      }
    }
    return this;
  }
  push(...parts) {
    for (const p of parts) {
      if (p === "")
        continue;
      if (typeof p !== "string" && !(p instanceof _a && p.#parent === this)) {
        throw new Error("invalid part: " + p);
      }
      this.#parts.push(p);
    }
  }
  toJSON() {
    var _a2;
    const ret = this.type === null ? this.#parts.slice().map((p) => typeof p === "string" ? p : p.toJSON()) : [this.type, ...this.#parts.map((p) => p.toJSON())];
    if (this.isStart() && !this.type)
      ret.unshift([]);
    if (this.isEnd() && (this === this.#root || this.#root.#filledNegs && ((_a2 = this.#parent) == null ? void 0 : _a2.type) === "!")) {
      ret.push({});
    }
    return ret;
  }
  isStart() {
    var _a2;
    if (this.#root === this)
      return true;
    if (!((_a2 = this.#parent) == null ? void 0 : _a2.isStart()))
      return false;
    if (this.#parentIndex === 0)
      return true;
    const p = this.#parent;
    for (let i = 0; i < this.#parentIndex; i++) {
      const pp = p.#parts[i];
      if (!(pp instanceof _a && pp.type === "!")) {
        return false;
      }
    }
    return true;
  }
  isEnd() {
    var _a2, _b, _c;
    if (this.#root === this)
      return true;
    if (((_a2 = this.#parent) == null ? void 0 : _a2.type) === "!")
      return true;
    if (!((_b = this.#parent) == null ? void 0 : _b.isEnd()))
      return false;
    if (!this.type)
      return (_c = this.#parent) == null ? void 0 : _c.isEnd();
    const pl = this.#parent ? this.#parent.#parts.length : 0;
    return this.#parentIndex === pl - 1;
  }
  copyIn(part) {
    if (typeof part === "string")
      this.push(part);
    else
      this.push(part.clone(this));
  }
  clone(parent) {
    const c = new _a(this.type, parent);
    for (const p of this.#parts) {
      c.copyIn(p);
    }
    return c;
  }
  static #parseAST(str, ast, pos, opt, extDepth) {
    const maxDepth = opt.maxExtglobRecursion ?? 2;
    let escaping = false;
    let inBrace = false;
    let braceStart = -1;
    let braceNeg = false;
    if (ast.type === null) {
      let i2 = pos;
      let acc2 = "";
      while (i2 < str.length) {
        const c = str.charAt(i2++);
        if (escaping || c === "\\") {
          escaping = !escaping;
          acc2 += c;
          continue;
        }
        if (inBrace) {
          if (i2 === braceStart + 1) {
            if (c === "^" || c === "!") {
              braceNeg = true;
            }
          } else if (c === "]" && !(i2 === braceStart + 2 && braceNeg)) {
            inBrace = false;
          }
          acc2 += c;
          continue;
        } else if (c === "[") {
          inBrace = true;
          braceStart = i2;
          braceNeg = false;
          acc2 += c;
          continue;
        }
        const doRecurse = !opt.noext && isExtglobType(c) && str.charAt(i2) === "(" && extDepth <= maxDepth;
        if (doRecurse) {
          ast.push(acc2);
          acc2 = "";
          const ext2 = new _a(c, ast);
          i2 = _a.#parseAST(str, ext2, i2, opt, extDepth + 1);
          ast.push(ext2);
          continue;
        }
        acc2 += c;
      }
      ast.push(acc2);
      return i2;
    }
    let i = pos + 1;
    let part = new _a(null, ast);
    const parts = [];
    let acc = "";
    while (i < str.length) {
      const c = str.charAt(i++);
      if (escaping || c === "\\") {
        escaping = !escaping;
        acc += c;
        continue;
      }
      if (inBrace) {
        if (i === braceStart + 1) {
          if (c === "^" || c === "!") {
            braceNeg = true;
          }
        } else if (c === "]" && !(i === braceStart + 2 && braceNeg)) {
          inBrace = false;
        }
        acc += c;
        continue;
      } else if (c === "[") {
        inBrace = true;
        braceStart = i;
        braceNeg = false;
        acc += c;
        continue;
      }
      const doRecurse = !opt.noext && isExtglobType(c) && str.charAt(i) === "(" && /* c8 ignore start - the maxDepth is sufficient here */
      (extDepth <= maxDepth || ast && ast.#canAdoptType(c));
      if (doRecurse) {
        const depthAdd = ast && ast.#canAdoptType(c) ? 0 : 1;
        part.push(acc);
        acc = "";
        const ext2 = new _a(c, part);
        part.push(ext2);
        i = _a.#parseAST(str, ext2, i, opt, extDepth + depthAdd);
        continue;
      }
      if (c === "|") {
        part.push(acc);
        acc = "";
        parts.push(part);
        part = new _a(null, ast);
        continue;
      }
      if (c === ")") {
        if (acc === "" && ast.#parts.length === 0) {
          ast.#emptyExt = true;
        }
        part.push(acc);
        acc = "";
        ast.push(...parts, part);
        return i;
      }
      acc += c;
    }
    ast.type = null;
    ast.#hasMagic = void 0;
    ast.#parts = [str.substring(pos - 1)];
    return i;
  }
  #canAdoptWithSpace(child) {
    return this.#canAdopt(child, adoptionWithSpaceMap);
  }
  #canAdopt(child, map = adoptionMap) {
    if (!child || typeof child !== "object" || child.type !== null || child.#parts.length !== 1 || this.type === null) {
      return false;
    }
    const gc = child.#parts[0];
    if (!gc || typeof gc !== "object" || gc.type === null) {
      return false;
    }
    return this.#canAdoptType(gc.type, map);
  }
  #canAdoptType(c, map = adoptionAnyMap) {
    var _a2;
    return !!((_a2 = map.get(this.type)) == null ? void 0 : _a2.includes(c));
  }
  #adoptWithSpace(child, index) {
    const gc = child.#parts[0];
    const blank = new _a(null, gc, this.options);
    blank.#parts.push("");
    gc.push(blank);
    this.#adopt(child, index);
  }
  #adopt(child, index) {
    const gc = child.#parts[0];
    this.#parts.splice(index, 1, ...gc.#parts);
    for (const p of gc.#parts) {
      if (typeof p === "object")
        p.#parent = this;
    }
    this.#toString = void 0;
  }
  #canUsurpType(c) {
    const m = usurpMap.get(this.type);
    return !!(m == null ? void 0 : m.has(c));
  }
  #canUsurp(child) {
    if (!child || typeof child !== "object" || child.type !== null || child.#parts.length !== 1 || this.type === null || this.#parts.length !== 1) {
      return false;
    }
    const gc = child.#parts[0];
    if (!gc || typeof gc !== "object" || gc.type === null) {
      return false;
    }
    return this.#canUsurpType(gc.type);
  }
  #usurp(child) {
    const m = usurpMap.get(this.type);
    const gc = child.#parts[0];
    const nt = m == null ? void 0 : m.get(gc.type);
    if (!nt)
      return false;
    this.#parts = gc.#parts;
    for (const p of this.#parts) {
      if (typeof p === "object") {
        p.#parent = this;
      }
    }
    this.type = nt;
    this.#toString = void 0;
    this.#emptyExt = false;
  }
  static fromGlob(pattern, options = {}) {
    const ast = new _a(null, void 0, options);
    _a.#parseAST(pattern, ast, 0, options, 0);
    return ast;
  }
  // returns the regular expression if there's magic, or the unescaped
  // string if not.
  toMMPattern() {
    if (this !== this.#root)
      return this.#root.toMMPattern();
    const glob = this.toString();
    const [re, body, hasMagic, uflag] = this.toRegExpSource();
    const anyMagic = hasMagic || this.#hasMagic || this.#options.nocase && !this.#options.nocaseMagicOnly && glob.toUpperCase() !== glob.toLowerCase();
    if (!anyMagic) {
      return body;
    }
    const flags = (this.#options.nocase ? "i" : "") + (uflag ? "u" : "");
    return Object.assign(new RegExp(`^${re}$`, flags), {
      _src: re,
      _glob: glob
    });
  }
  get options() {
    return this.#options;
  }
  // returns the string match, the regexp source, whether there's magic
  // in the regexp (so a regular expression is required) and whether or
  // not the uflag is needed for the regular expression (for posix classes)
  // TODO: instead of injecting the start/end at this point, just return
  // the BODY of the regexp, along with the start/end portions suitable
  // for binding the start/end in either a joined full-path makeRe context
  // (where we bind to (^|/), or a standalone matchPart context (where
  // we bind to ^, and not /).  Otherwise slashes get duped!
  //
  // In part-matching mode, the start is:
  // - if not isStart: nothing
  // - if traversal possible, but not allowed: ^(?!\.\.?$)
  // - if dots allowed or not possible: ^
  // - if dots possible and not allowed: ^(?!\.)
  // end is:
  // - if not isEnd(): nothing
  // - else: $
  //
  // In full-path matching mode, we put the slash at the START of the
  // pattern, so start is:
  // - if first pattern: same as part-matching mode
  // - if not isStart(): nothing
  // - if traversal possible, but not allowed: /(?!\.\.?(?:$|/))
  // - if dots allowed or not possible: /
  // - if dots possible and not allowed: /(?!\.)
  // end is:
  // - if last pattern, same as part-matching mode
  // - else nothing
  //
  // Always put the (?:$|/) on negated tails, though, because that has to be
  // there to bind the end of the negated pattern portion, and it's easier to
  // just stick it in now rather than try to inject it later in the middle of
  // the pattern.
  //
  // We can just always return the same end, and leave it up to the caller
  // to know whether it's going to be used joined or in parts.
  // And, if the start is adjusted slightly, can do the same there:
  // - if not isStart: nothing
  // - if traversal possible, but not allowed: (?:/|^)(?!\.\.?$)
  // - if dots allowed or not possible: (?:/|^)
  // - if dots possible and not allowed: (?:/|^)(?!\.)
  //
  // But it's better to have a simpler binding without a conditional, for
  // performance, so probably better to return both start options.
  //
  // Then the caller just ignores the end if it's not the first pattern,
  // and the start always gets applied.
  //
  // But that's always going to be $ if it's the ending pattern, or nothing,
  // so the caller can just attach $ at the end of the pattern when building.
  //
  // So the todo is:
  // - better detect what kind of start is needed
  // - return both flavors of starting pattern
  // - attach $ at the end of the pattern when creating the actual RegExp
  //
  // Ah, but wait, no, that all only applies to the root when the first pattern
  // is not an extglob. If the first pattern IS an extglob, then we need all
  // that dot prevention biz to live in the extglob portions, because eg
  // +(*|.x*) can match .xy but not .yx.
  //
  // So, return the two flavors if it's #root and the first child is not an
  // AST, otherwise leave it to the child AST to handle it, and there,
  // use the (?:^|/) style of start binding.
  //
  // Even simplified further:
  // - Since the start for a join is eg /(?!\.) and the start for a part
  // is ^(?!\.), we can just prepend (?!\.) to the pattern (either root
  // or start or whatever) and prepend ^ or / at the Regexp construction.
  toRegExpSource(allowDot) {
    var _a2;
    const dot = allowDot ?? !!this.#options.dot;
    if (this.#root === this) {
      this.#flatten();
      this.#fillNegs();
    }
    if (!isExtglobAST(this)) {
      const noEmpty = this.isStart() && this.isEnd() && !this.#parts.some((s) => typeof s !== "string");
      const src = this.#parts.map((p) => {
        const [re, _, hasMagic, uflag] = typeof p === "string" ? _a.#parseGlob(p, this.#hasMagic, noEmpty) : p.toRegExpSource(allowDot);
        this.#hasMagic = this.#hasMagic || hasMagic;
        this.#uflag = this.#uflag || uflag;
        return re;
      }).join("");
      let start2 = "";
      if (this.isStart()) {
        if (typeof this.#parts[0] === "string") {
          const dotTravAllowed = this.#parts.length === 1 && justDots.has(this.#parts[0]);
          if (!dotTravAllowed) {
            const aps = addPatternStart;
            const needNoTrav = (
              // dots are allowed, and the pattern starts with [ or .
              dot && aps.has(src.charAt(0)) || // the pattern starts with \., and then [ or .
              src.startsWith("\\.") && aps.has(src.charAt(2)) || // the pattern starts with \.\., and then [ or .
              src.startsWith("\\.\\.") && aps.has(src.charAt(4))
            );
            const needNoDot = !dot && !allowDot && aps.has(src.charAt(0));
            start2 = needNoTrav ? startNoTraversal : needNoDot ? startNoDot : "";
          }
        }
      }
      let end = "";
      if (this.isEnd() && this.#root.#filledNegs && ((_a2 = this.#parent) == null ? void 0 : _a2.type) === "!") {
        end = "(?:$|\\/)";
      }
      const final2 = start2 + src + end;
      return [
        final2,
        unescape2(src),
        this.#hasMagic = !!this.#hasMagic,
        this.#uflag
      ];
    }
    const repeated = this.type === "*" || this.type === "+";
    const start = this.type === "!" ? "(?:(?!(?:" : "(?:";
    let body = this.#partsToRegExp(dot);
    if (this.isStart() && this.isEnd() && !body && this.type !== "!") {
      const s = this.toString();
      const me = this;
      me.#parts = [s];
      me.type = null;
      me.#hasMagic = void 0;
      return [s, unescape2(this.toString()), false, false];
    }
    let bodyDotAllowed = !repeated || allowDot || dot || !startNoDot ? "" : this.#partsToRegExp(true);
    if (bodyDotAllowed === body) {
      bodyDotAllowed = "";
    }
    if (bodyDotAllowed) {
      body = `(?:${body})(?:${bodyDotAllowed})*?`;
    }
    let final = "";
    if (this.type === "!" && this.#emptyExt) {
      final = (this.isStart() && !dot ? startNoDot : "") + starNoEmpty;
    } else {
      const close = this.type === "!" ? (
        // !() must match something,but !(x) can match ''
        "))" + (this.isStart() && !dot && !allowDot ? startNoDot : "") + star + ")"
      ) : this.type === "@" ? ")" : this.type === "?" ? ")?" : this.type === "+" && bodyDotAllowed ? ")" : this.type === "*" && bodyDotAllowed ? `)?` : `)${this.type}`;
      final = start + body + close;
    }
    return [
      final,
      unescape2(body),
      this.#hasMagic = !!this.#hasMagic,
      this.#uflag
    ];
  }
  #flatten() {
    if (!isExtglobAST(this)) {
      for (const p of this.#parts) {
        if (typeof p === "object") {
          p.#flatten();
        }
      }
    } else {
      let iterations = 0;
      let done = false;
      do {
        done = true;
        for (let i = 0; i < this.#parts.length; i++) {
          const c = this.#parts[i];
          if (typeof c === "object") {
            c.#flatten();
            if (this.#canAdopt(c)) {
              done = false;
              this.#adopt(c, i);
            } else if (this.#canAdoptWithSpace(c)) {
              done = false;
              this.#adoptWithSpace(c, i);
            } else if (this.#canUsurp(c)) {
              done = false;
              this.#usurp(c);
            }
          }
        }
      } while (!done && ++iterations < 10);
    }
    this.#toString = void 0;
  }
  #partsToRegExp(dot) {
    return this.#parts.map((p) => {
      if (typeof p === "string") {
        throw new Error("string type in extglob ast??");
      }
      const [re, _, _hasMagic, uflag] = p.toRegExpSource(dot);
      this.#uflag = this.#uflag || uflag;
      return re;
    }).filter((p) => !(this.isStart() && this.isEnd()) || !!p).join("|");
  }
  static #parseGlob(glob, hasMagic, noEmpty = false) {
    let escaping = false;
    let re = "";
    let uflag = false;
    let inStar = false;
    for (let i = 0; i < glob.length; i++) {
      const c = glob.charAt(i);
      if (escaping) {
        escaping = false;
        re += (reSpecials.has(c) ? "\\" : "") + c;
        continue;
      }
      if (c === "*") {
        if (inStar)
          continue;
        inStar = true;
        re += noEmpty && /^[*]+$/.test(glob) ? starNoEmpty : star;
        hasMagic = true;
        continue;
      } else {
        inStar = false;
      }
      if (c === "\\") {
        if (i === glob.length - 1) {
          re += "\\\\";
        } else {
          escaping = true;
        }
        continue;
      }
      if (c === "[") {
        const [src, needUflag, consumed, magic] = parseClass(glob, i);
        if (consumed) {
          re += src;
          uflag = uflag || needUflag;
          i += consumed - 1;
          hasMagic = hasMagic || magic;
          continue;
        }
      }
      if (c === "?") {
        re += qmark;
        hasMagic = true;
        continue;
      }
      re += regExpEscape(c);
    }
    return [re, unescape2(glob), !!hasMagic, uflag];
  }
};
_a = AST;

// node_modules/minimatch/dist/esm/escape.js
var escape2 = (s, { windowsPathsNoEscape = false, magicalBraces = false } = {}) => {
  if (magicalBraces) {
    return windowsPathsNoEscape ? s.replace(/[?*()[\]{}]/g, "[$&]") : s.replace(/[?*()[\]\\{}]/g, "\\$&");
  }
  return windowsPathsNoEscape ? s.replace(/[?*()[\]]/g, "[$&]") : s.replace(/[?*()[\]\\]/g, "\\$&");
};

// node_modules/minimatch/dist/esm/index.js
var minimatch = (p, pattern, options = {}) => {
  assertValidPattern(pattern);
  if (!options.nocomment && pattern.charAt(0) === "#") {
    return false;
  }
  return new Minimatch(pattern, options).match(p);
};
var starDotExtRE = /^\*+([^+@!?*[(]*)$/;
var starDotExtTest = (ext2) => (f) => !f.startsWith(".") && f.endsWith(ext2);
var starDotExtTestDot = (ext2) => (f) => f.endsWith(ext2);
var starDotExtTestNocase = (ext2) => {
  ext2 = ext2.toLowerCase();
  return (f) => !f.startsWith(".") && f.toLowerCase().endsWith(ext2);
};
var starDotExtTestNocaseDot = (ext2) => {
  ext2 = ext2.toLowerCase();
  return (f) => f.toLowerCase().endsWith(ext2);
};
var starDotStarRE = /^\*+\.\*+$/;
var starDotStarTest = (f) => !f.startsWith(".") && f.includes(".");
var starDotStarTestDot = (f) => f !== "." && f !== ".." && f.includes(".");
var dotStarRE = /^\.\*+$/;
var dotStarTest = (f) => f !== "." && f !== ".." && f.startsWith(".");
var starRE = /^\*+$/;
var starTest = (f) => f.length !== 0 && !f.startsWith(".");
var starTestDot = (f) => f.length !== 0 && f !== "." && f !== "..";
var qmarksRE = /^\?+([^+@!?*[(]*)?$/;
var qmarksTestNocase = ([$0, ext2 = ""]) => {
  const noext = qmarksTestNoExt([$0]);
  if (!ext2)
    return noext;
  ext2 = ext2.toLowerCase();
  return (f) => noext(f) && f.toLowerCase().endsWith(ext2);
};
var qmarksTestNocaseDot = ([$0, ext2 = ""]) => {
  const noext = qmarksTestNoExtDot([$0]);
  if (!ext2)
    return noext;
  ext2 = ext2.toLowerCase();
  return (f) => noext(f) && f.toLowerCase().endsWith(ext2);
};
var qmarksTestDot = ([$0, ext2 = ""]) => {
  const noext = qmarksTestNoExtDot([$0]);
  return !ext2 ? noext : (f) => noext(f) && f.endsWith(ext2);
};
var qmarksTest = ([$0, ext2 = ""]) => {
  const noext = qmarksTestNoExt([$0]);
  return !ext2 ? noext : (f) => noext(f) && f.endsWith(ext2);
};
var qmarksTestNoExt = ([$0]) => {
  const len = $0.length;
  return (f) => f.length === len && !f.startsWith(".");
};
var qmarksTestNoExtDot = ([$0]) => {
  const len = $0.length;
  return (f) => f.length === len && f !== "." && f !== "..";
};
var defaultPlatform = typeof process === "object" && process ? typeof process.env === "object" && process.env && process.env.__MINIMATCH_TESTING_PLATFORM__ || process.platform : "posix";
var path5 = {
  win32: { sep: "\\" },
  posix: { sep: "/" }
};
var sep = defaultPlatform === "win32" ? path5.win32.sep : path5.posix.sep;
minimatch.sep = sep;
var GLOBSTAR = /* @__PURE__ */ Symbol("globstar **");
minimatch.GLOBSTAR = GLOBSTAR;
var qmark2 = "[^/]";
var star2 = qmark2 + "*?";
var twoStarDot = "(?:(?!(?:\\/|^)(?:\\.{1,2})($|\\/)).)*?";
var twoStarNoDot = "(?:(?!(?:\\/|^)\\.).)*?";
var filter = (pattern, options = {}) => (p) => minimatch(p, pattern, options);
minimatch.filter = filter;
var ext = (a, b = {}) => Object.assign({}, a, b);
var defaults = (def) => {
  if (!def || typeof def !== "object" || !Object.keys(def).length) {
    return minimatch;
  }
  const orig = minimatch;
  const m = (p, pattern, options = {}) => orig(p, pattern, ext(def, options));
  return Object.assign(m, {
    Minimatch: class Minimatch extends orig.Minimatch {
      constructor(pattern, options = {}) {
        super(pattern, ext(def, options));
      }
      static defaults(options) {
        return orig.defaults(ext(def, options)).Minimatch;
      }
    },
    AST: class AST extends orig.AST {
      /* c8 ignore start */
      constructor(type, parent, options = {}) {
        super(type, parent, ext(def, options));
      }
      /* c8 ignore stop */
      static fromGlob(pattern, options = {}) {
        return orig.AST.fromGlob(pattern, ext(def, options));
      }
    },
    unescape: (s, options = {}) => orig.unescape(s, ext(def, options)),
    escape: (s, options = {}) => orig.escape(s, ext(def, options)),
    filter: (pattern, options = {}) => orig.filter(pattern, ext(def, options)),
    defaults: (options) => orig.defaults(ext(def, options)),
    makeRe: (pattern, options = {}) => orig.makeRe(pattern, ext(def, options)),
    braceExpand: (pattern, options = {}) => orig.braceExpand(pattern, ext(def, options)),
    match: (list, pattern, options = {}) => orig.match(list, pattern, ext(def, options)),
    sep: orig.sep,
    GLOBSTAR
  });
};
minimatch.defaults = defaults;
var braceExpand = (pattern, options = {}) => {
  assertValidPattern(pattern);
  if (options.nobrace || !/\{(?:(?!\{).)*\}/.test(pattern)) {
    return [pattern];
  }
  return expand(pattern, { max: options.braceExpandMax });
};
minimatch.braceExpand = braceExpand;
var makeRe = (pattern, options = {}) => new Minimatch(pattern, options).makeRe();
minimatch.makeRe = makeRe;
var match = (list, pattern, options = {}) => {
  const mm = new Minimatch(pattern, options);
  list = list.filter((f) => mm.match(f));
  if (mm.options.nonull && !list.length) {
    list.push(pattern);
  }
  return list;
};
minimatch.match = match;
var globMagic = /[?*]|[+@!]\(.*?\)|\[|\]/;
var regExpEscape2 = (s) => s.replace(/[-[\]{}()*+?.,\\^$|#\s]/g, "\\$&");
var Minimatch = class {
  options;
  set;
  pattern;
  windowsPathsNoEscape;
  nonegate;
  negate;
  comment;
  empty;
  preserveMultipleSlashes;
  partial;
  globSet;
  globParts;
  nocase;
  isWindows;
  platform;
  windowsNoMagicRoot;
  maxGlobstarRecursion;
  regexp;
  constructor(pattern, options = {}) {
    assertValidPattern(pattern);
    options = options || {};
    this.options = options;
    this.maxGlobstarRecursion = options.maxGlobstarRecursion ?? 200;
    this.pattern = pattern;
    this.platform = options.platform || defaultPlatform;
    this.isWindows = this.platform === "win32";
    const awe = "allowWindowsEscape";
    this.windowsPathsNoEscape = !!options.windowsPathsNoEscape || options[awe] === false;
    if (this.windowsPathsNoEscape) {
      this.pattern = this.pattern.replace(/\\/g, "/");
    }
    this.preserveMultipleSlashes = !!options.preserveMultipleSlashes;
    this.regexp = null;
    this.negate = false;
    this.nonegate = !!options.nonegate;
    this.comment = false;
    this.empty = false;
    this.partial = !!options.partial;
    this.nocase = !!this.options.nocase;
    this.windowsNoMagicRoot = options.windowsNoMagicRoot !== void 0 ? options.windowsNoMagicRoot : !!(this.isWindows && this.nocase);
    this.globSet = [];
    this.globParts = [];
    this.set = [];
    this.make();
  }
  hasMagic() {
    if (this.options.magicalBraces && this.set.length > 1) {
      return true;
    }
    for (const pattern of this.set) {
      for (const part of pattern) {
        if (typeof part !== "string")
          return true;
      }
    }
    return false;
  }
  debug(..._) {
  }
  make() {
    const pattern = this.pattern;
    const options = this.options;
    if (!options.nocomment && pattern.charAt(0) === "#") {
      this.comment = true;
      return;
    }
    if (!pattern) {
      this.empty = true;
      return;
    }
    this.parseNegate();
    this.globSet = [...new Set(this.braceExpand())];
    if (options.debug) {
      this.debug = (...args) => console.error(...args);
    }
    this.debug(this.pattern, this.globSet);
    const rawGlobParts = this.globSet.map((s) => this.slashSplit(s));
    this.globParts = this.preprocess(rawGlobParts);
    this.debug(this.pattern, this.globParts);
    let set = this.globParts.map((s, _, __) => {
      if (this.isWindows && this.windowsNoMagicRoot) {
        const isUNC = s[0] === "" && s[1] === "" && (s[2] === "?" || !globMagic.test(s[2])) && !globMagic.test(s[3]);
        const isDrive = /^[a-z]:/i.test(s[0]);
        if (isUNC) {
          return [
            ...s.slice(0, 4),
            ...s.slice(4).map((ss) => this.parse(ss))
          ];
        } else if (isDrive) {
          return [s[0], ...s.slice(1).map((ss) => this.parse(ss))];
        }
      }
      return s.map((ss) => this.parse(ss));
    });
    this.debug(this.pattern, set);
    this.set = set.filter((s) => s.indexOf(false) === -1);
    if (this.isWindows) {
      for (let i = 0; i < this.set.length; i++) {
        const p = this.set[i];
        if (p[0] === "" && p[1] === "" && this.globParts[i][2] === "?" && typeof p[3] === "string" && /^[a-z]:$/i.test(p[3])) {
          p[2] = "?";
        }
      }
    }
    this.debug(this.pattern, this.set);
  }
  // various transforms to equivalent pattern sets that are
  // faster to process in a filesystem walk.  The goal is to
  // eliminate what we can, and push all ** patterns as far
  // to the right as possible, even if it increases the number
  // of patterns that we have to process.
  preprocess(globParts) {
    if (this.options.noglobstar) {
      for (const partset of globParts) {
        for (let j = 0; j < partset.length; j++) {
          if (partset[j] === "**") {
            partset[j] = "*";
          }
        }
      }
    }
    const { optimizationLevel = 1 } = this.options;
    if (optimizationLevel >= 2) {
      globParts = this.firstPhasePreProcess(globParts);
      globParts = this.secondPhasePreProcess(globParts);
    } else if (optimizationLevel >= 1) {
      globParts = this.levelOneOptimize(globParts);
    } else {
      globParts = this.adjascentGlobstarOptimize(globParts);
    }
    return globParts;
  }
  // just get rid of adjascent ** portions
  adjascentGlobstarOptimize(globParts) {
    return globParts.map((parts) => {
      let gs = -1;
      while (-1 !== (gs = parts.indexOf("**", gs + 1))) {
        let i = gs;
        while (parts[i + 1] === "**") {
          i++;
        }
        if (i !== gs) {
          parts.splice(gs, i - gs);
        }
      }
      return parts;
    });
  }
  // get rid of adjascent ** and resolve .. portions
  levelOneOptimize(globParts) {
    return globParts.map((parts) => {
      parts = parts.reduce((set, part) => {
        const prev = set[set.length - 1];
        if (part === "**" && prev === "**") {
          return set;
        }
        if (part === "..") {
          if (prev && prev !== ".." && prev !== "." && prev !== "**") {
            set.pop();
            return set;
          }
        }
        set.push(part);
        return set;
      }, []);
      return parts.length === 0 ? [""] : parts;
    });
  }
  levelTwoFileOptimize(parts) {
    if (!Array.isArray(parts)) {
      parts = this.slashSplit(parts);
    }
    let didSomething = false;
    do {
      didSomething = false;
      if (!this.preserveMultipleSlashes) {
        for (let i = 1; i < parts.length - 1; i++) {
          const p = parts[i];
          if (i === 1 && p === "" && parts[0] === "")
            continue;
          if (p === "." || p === "") {
            didSomething = true;
            parts.splice(i, 1);
            i--;
          }
        }
        if (parts[0] === "." && parts.length === 2 && (parts[1] === "." || parts[1] === "")) {
          didSomething = true;
          parts.pop();
        }
      }
      let dd = 0;
      while (-1 !== (dd = parts.indexOf("..", dd + 1))) {
        const p = parts[dd - 1];
        if (p && p !== "." && p !== ".." && p !== "**" && !(this.isWindows && /^[a-z]:$/i.test(p))) {
          didSomething = true;
          parts.splice(dd - 1, 2);
          dd -= 2;
        }
      }
    } while (didSomething);
    return parts.length === 0 ? [""] : parts;
  }
  // First phase: single-pattern processing
  // <pre> is 1 or more portions
  // <rest> is 1 or more portions
  // <p> is any portion other than ., .., '', or **
  // <e> is . or ''
  //
  // **/.. is *brutal* for filesystem walking performance, because
  // it effectively resets the recursive walk each time it occurs,
  // and ** cannot be reduced out by a .. pattern part like a regexp
  // or most strings (other than .., ., and '') can be.
  //
  // <pre>/**/../<p>/<p>/<rest> -> {<pre>/../<p>/<p>/<rest>,<pre>/**/<p>/<p>/<rest>}
  // <pre>/<e>/<rest> -> <pre>/<rest>
  // <pre>/<p>/../<rest> -> <pre>/<rest>
  // **/**/<rest> -> **/<rest>
  //
  // **/*/<rest> -> */**/<rest> <== not valid because ** doesn't follow
  // this WOULD be allowed if ** did follow symlinks, or * didn't
  firstPhasePreProcess(globParts) {
    let didSomething = false;
    do {
      didSomething = false;
      for (let parts of globParts) {
        let gs = -1;
        while (-1 !== (gs = parts.indexOf("**", gs + 1))) {
          let gss = gs;
          while (parts[gss + 1] === "**") {
            gss++;
          }
          if (gss > gs) {
            parts.splice(gs + 1, gss - gs);
          }
          let next = parts[gs + 1];
          const p = parts[gs + 2];
          const p2 = parts[gs + 3];
          if (next !== "..")
            continue;
          if (!p || p === "." || p === ".." || !p2 || p2 === "." || p2 === "..") {
            continue;
          }
          didSomething = true;
          parts.splice(gs, 1);
          const other = parts.slice(0);
          other[gs] = "**";
          globParts.push(other);
          gs--;
        }
        if (!this.preserveMultipleSlashes) {
          for (let i = 1; i < parts.length - 1; i++) {
            const p = parts[i];
            if (i === 1 && p === "" && parts[0] === "")
              continue;
            if (p === "." || p === "") {
              didSomething = true;
              parts.splice(i, 1);
              i--;
            }
          }
          if (parts[0] === "." && parts.length === 2 && (parts[1] === "." || parts[1] === "")) {
            didSomething = true;
            parts.pop();
          }
        }
        let dd = 0;
        while (-1 !== (dd = parts.indexOf("..", dd + 1))) {
          const p = parts[dd - 1];
          if (p && p !== "." && p !== ".." && p !== "**") {
            didSomething = true;
            const needDot = dd === 1 && parts[dd + 1] === "**";
            const splin = needDot ? ["."] : [];
            parts.splice(dd - 1, 2, ...splin);
            if (parts.length === 0)
              parts.push("");
            dd -= 2;
          }
        }
      }
    } while (didSomething);
    return globParts;
  }
  // second phase: multi-pattern dedupes
  // {<pre>/*/<rest>,<pre>/<p>/<rest>} -> <pre>/*/<rest>
  // {<pre>/<rest>,<pre>/<rest>} -> <pre>/<rest>
  // {<pre>/**/<rest>,<pre>/<rest>} -> <pre>/**/<rest>
  //
  // {<pre>/**/<rest>,<pre>/**/<p>/<rest>} -> <pre>/**/<rest>
  // ^-- not valid because ** doens't follow symlinks
  secondPhasePreProcess(globParts) {
    for (let i = 0; i < globParts.length - 1; i++) {
      for (let j = i + 1; j < globParts.length; j++) {
        const matched = this.partsMatch(globParts[i], globParts[j], !this.preserveMultipleSlashes);
        if (matched) {
          globParts[i] = [];
          globParts[j] = matched;
          break;
        }
      }
    }
    return globParts.filter((gs) => gs.length);
  }
  partsMatch(a, b, emptyGSMatch = false) {
    let ai = 0;
    let bi = 0;
    let result = [];
    let which6 = "";
    while (ai < a.length && bi < b.length) {
      if (a[ai] === b[bi]) {
        result.push(which6 === "b" ? b[bi] : a[ai]);
        ai++;
        bi++;
      } else if (emptyGSMatch && a[ai] === "**" && b[bi] === a[ai + 1]) {
        result.push(a[ai]);
        ai++;
      } else if (emptyGSMatch && b[bi] === "**" && a[ai] === b[bi + 1]) {
        result.push(b[bi]);
        bi++;
      } else if (a[ai] === "*" && b[bi] && (this.options.dot || !b[bi].startsWith(".")) && b[bi] !== "**") {
        if (which6 === "b")
          return false;
        which6 = "a";
        result.push(a[ai]);
        ai++;
        bi++;
      } else if (b[bi] === "*" && a[ai] && (this.options.dot || !a[ai].startsWith(".")) && a[ai] !== "**") {
        if (which6 === "a")
          return false;
        which6 = "b";
        result.push(b[bi]);
        ai++;
        bi++;
      } else {
        return false;
      }
    }
    return a.length === b.length && result;
  }
  parseNegate() {
    if (this.nonegate)
      return;
    const pattern = this.pattern;
    let negate = false;
    let negateOffset = 0;
    for (let i = 0; i < pattern.length && pattern.charAt(i) === "!"; i++) {
      negate = !negate;
      negateOffset++;
    }
    if (negateOffset)
      this.pattern = pattern.slice(negateOffset);
    this.negate = negate;
  }
  // set partial to true to test if, for example,
  // "/a/b" matches the start of "/*/b/*/d"
  // Partial means, if you run out of file before you run
  // out of pattern, then that's fine, as long as all
  // the parts match.
  matchOne(file, pattern, partial = false) {
    let fileStartIndex = 0;
    let patternStartIndex = 0;
    if (this.isWindows) {
      const fileDrive = typeof file[0] === "string" && /^[a-z]:$/i.test(file[0]);
      const fileUNC = !fileDrive && file[0] === "" && file[1] === "" && file[2] === "?" && /^[a-z]:$/i.test(file[3]);
      const patternDrive = typeof pattern[0] === "string" && /^[a-z]:$/i.test(pattern[0]);
      const patternUNC = !patternDrive && pattern[0] === "" && pattern[1] === "" && pattern[2] === "?" && typeof pattern[3] === "string" && /^[a-z]:$/i.test(pattern[3]);
      const fdi = fileUNC ? 3 : fileDrive ? 0 : void 0;
      const pdi = patternUNC ? 3 : patternDrive ? 0 : void 0;
      if (typeof fdi === "number" && typeof pdi === "number") {
        const [fd, pd] = [
          file[fdi],
          pattern[pdi]
        ];
        if (fd.toLowerCase() === pd.toLowerCase()) {
          pattern[pdi] = fd;
          patternStartIndex = pdi;
          fileStartIndex = fdi;
        }
      }
    }
    const { optimizationLevel = 1 } = this.options;
    if (optimizationLevel >= 2) {
      file = this.levelTwoFileOptimize(file);
    }
    if (pattern.includes(GLOBSTAR)) {
      return this.#matchGlobstar(file, pattern, partial, fileStartIndex, patternStartIndex);
    }
    return this.#matchOne(file, pattern, partial, fileStartIndex, patternStartIndex);
  }
  #matchGlobstar(file, pattern, partial, fileIndex, patternIndex) {
    const firstgs = pattern.indexOf(GLOBSTAR, patternIndex);
    const lastgs = pattern.lastIndexOf(GLOBSTAR);
    const [head, body, tail] = partial ? [
      pattern.slice(patternIndex, firstgs),
      pattern.slice(firstgs + 1),
      []
    ] : [
      pattern.slice(patternIndex, firstgs),
      pattern.slice(firstgs + 1, lastgs),
      pattern.slice(lastgs + 1)
    ];
    if (head.length) {
      const fileHead = file.slice(fileIndex, fileIndex + head.length);
      if (!this.#matchOne(fileHead, head, partial, 0, 0)) {
        return false;
      }
      fileIndex += head.length;
      patternIndex += head.length;
    }
    let fileTailMatch = 0;
    if (tail.length) {
      if (tail.length + fileIndex > file.length)
        return false;
      let tailStart = file.length - tail.length;
      if (this.#matchOne(file, tail, partial, tailStart, 0)) {
        fileTailMatch = tail.length;
      } else {
        if (file[file.length - 1] !== "" || fileIndex + tail.length === file.length) {
          return false;
        }
        tailStart--;
        if (!this.#matchOne(file, tail, partial, tailStart, 0)) {
          return false;
        }
        fileTailMatch = tail.length + 1;
      }
    }
    if (!body.length) {
      let sawSome = !!fileTailMatch;
      for (let i2 = fileIndex; i2 < file.length - fileTailMatch; i2++) {
        const f = String(file[i2]);
        sawSome = true;
        if (f === "." || f === ".." || !this.options.dot && f.startsWith(".")) {
          return false;
        }
      }
      return partial || sawSome;
    }
    const bodySegments = [[[], 0]];
    let currentBody = bodySegments[0];
    let nonGsParts = 0;
    const nonGsPartsSums = [0];
    for (const b of body) {
      if (b === GLOBSTAR) {
        nonGsPartsSums.push(nonGsParts);
        currentBody = [[], 0];
        bodySegments.push(currentBody);
      } else {
        currentBody[0].push(b);
        nonGsParts++;
      }
    }
    let i = bodySegments.length - 1;
    const fileLength = file.length - fileTailMatch;
    for (const b of bodySegments) {
      b[1] = fileLength - (nonGsPartsSums[i--] + b[0].length);
    }
    return !!this.#matchGlobStarBodySections(file, bodySegments, fileIndex, 0, partial, 0, !!fileTailMatch);
  }
  // return false for "nope, not matching"
  // return null for "not matching, cannot keep trying"
  #matchGlobStarBodySections(file, bodySegments, fileIndex, bodyIndex, partial, globStarDepth, sawTail) {
    const bs = bodySegments[bodyIndex];
    if (!bs) {
      for (let i = fileIndex; i < file.length; i++) {
        sawTail = true;
        const f = file[i];
        if (f === "." || f === ".." || !this.options.dot && f.startsWith(".")) {
          return false;
        }
      }
      return sawTail;
    }
    const [body, after] = bs;
    while (fileIndex <= after) {
      const m = this.#matchOne(file.slice(0, fileIndex + body.length), body, partial, fileIndex, 0);
      if (m && globStarDepth < this.maxGlobstarRecursion) {
        const sub = this.#matchGlobStarBodySections(file, bodySegments, fileIndex + body.length, bodyIndex + 1, partial, globStarDepth + 1, sawTail);
        if (sub !== false) {
          return sub;
        }
      }
      const f = file[fileIndex];
      if (f === "." || f === ".." || !this.options.dot && f.startsWith(".")) {
        return false;
      }
      fileIndex++;
    }
    return partial || null;
  }
  #matchOne(file, pattern, partial, fileIndex, patternIndex) {
    let fi;
    let pi;
    let pl;
    let fl;
    for (fi = fileIndex, pi = patternIndex, fl = file.length, pl = pattern.length; fi < fl && pi < pl; fi++, pi++) {
      this.debug("matchOne loop");
      let p = pattern[pi];
      let f = file[fi];
      this.debug(pattern, p, f);
      if (p === false || p === GLOBSTAR) {
        return false;
      }
      let hit;
      if (typeof p === "string") {
        hit = f === p;
        this.debug("string match", p, f, hit);
      } else {
        hit = p.test(f);
        this.debug("pattern match", p, f, hit);
      }
      if (!hit)
        return false;
    }
    if (fi === fl && pi === pl) {
      return true;
    } else if (fi === fl) {
      return partial;
    } else if (pi === pl) {
      return fi === fl - 1 && file[fi] === "";
    } else {
      throw new Error("wtf?");
    }
  }
  braceExpand() {
    return braceExpand(this.pattern, this.options);
  }
  parse(pattern) {
    assertValidPattern(pattern);
    const options = this.options;
    if (pattern === "**")
      return GLOBSTAR;
    if (pattern === "")
      return "";
    let m;
    let fastTest = null;
    if (m = pattern.match(starRE)) {
      fastTest = options.dot ? starTestDot : starTest;
    } else if (m = pattern.match(starDotExtRE)) {
      fastTest = (options.nocase ? options.dot ? starDotExtTestNocaseDot : starDotExtTestNocase : options.dot ? starDotExtTestDot : starDotExtTest)(m[1]);
    } else if (m = pattern.match(qmarksRE)) {
      fastTest = (options.nocase ? options.dot ? qmarksTestNocaseDot : qmarksTestNocase : options.dot ? qmarksTestDot : qmarksTest)(m);
    } else if (m = pattern.match(starDotStarRE)) {
      fastTest = options.dot ? starDotStarTestDot : starDotStarTest;
    } else if (m = pattern.match(dotStarRE)) {
      fastTest = dotStarTest;
    }
    const re = AST.fromGlob(pattern, this.options).toMMPattern();
    if (fastTest && typeof re === "object") {
      Reflect.defineProperty(re, "test", { value: fastTest });
    }
    return re;
  }
  makeRe() {
    if (this.regexp || this.regexp === false)
      return this.regexp;
    const set = this.set;
    if (!set.length) {
      this.regexp = false;
      return this.regexp;
    }
    const options = this.options;
    const twoStar = options.noglobstar ? star2 : options.dot ? twoStarDot : twoStarNoDot;
    const flags = new Set(options.nocase ? ["i"] : []);
    let re = set.map((pattern) => {
      const pp = pattern.map((p) => {
        if (p instanceof RegExp) {
          for (const f of p.flags.split(""))
            flags.add(f);
        }
        return typeof p === "string" ? regExpEscape2(p) : p === GLOBSTAR ? GLOBSTAR : p._src;
      });
      pp.forEach((p, i) => {
        const next = pp[i + 1];
        const prev = pp[i - 1];
        if (p !== GLOBSTAR || prev === GLOBSTAR) {
          return;
        }
        if (prev === void 0) {
          if (next !== void 0 && next !== GLOBSTAR) {
            pp[i + 1] = "(?:\\/|" + twoStar + "\\/)?" + next;
          } else {
            pp[i] = twoStar;
          }
        } else if (next === void 0) {
          pp[i - 1] = prev + "(?:\\/|\\/" + twoStar + ")?";
        } else if (next !== GLOBSTAR) {
          pp[i - 1] = prev + "(?:\\/|\\/" + twoStar + "\\/)" + next;
          pp[i + 1] = GLOBSTAR;
        }
      });
      const filtered = pp.filter((p) => p !== GLOBSTAR);
      if (this.partial && filtered.length >= 1) {
        const prefixes = [];
        for (let i = 1; i <= filtered.length; i++) {
          prefixes.push(filtered.slice(0, i).join("/"));
        }
        return "(?:" + prefixes.join("|") + ")";
      }
      return filtered.join("/");
    }).join("|");
    const [open, close] = set.length > 1 ? ["(?:", ")"] : ["", ""];
    re = "^" + open + re + close + "$";
    if (this.partial) {
      re = "^(?:\\/|" + open + re.slice(1, -1) + close + ")$";
    }
    if (this.negate)
      re = "^(?!" + re + ").+$";
    try {
      this.regexp = new RegExp(re, [...flags].join(""));
    } catch {
      this.regexp = false;
    }
    return this.regexp;
  }
  slashSplit(p) {
    if (this.preserveMultipleSlashes) {
      return p.split("/");
    } else if (this.isWindows && /^\/\/[^/]+/.test(p)) {
      return ["", ...p.split(/\/+/)];
    } else {
      return p.split(/\/+/);
    }
  }
  match(f, partial = this.partial) {
    this.debug("match", f, this.pattern);
    if (this.comment) {
      return false;
    }
    if (this.empty) {
      return f === "";
    }
    if (f === "/" && partial) {
      return true;
    }
    const options = this.options;
    if (this.isWindows) {
      f = f.split("\\").join("/");
    }
    const ff = this.slashSplit(f);
    this.debug(this.pattern, "split", ff);
    const set = this.set;
    this.debug(this.pattern, "set", set);
    let filename = ff[ff.length - 1];
    if (!filename) {
      for (let i = ff.length - 2; !filename && i >= 0; i--) {
        filename = ff[i];
      }
    }
    for (const pattern of set) {
      let file = ff;
      if (options.matchBase && pattern.length === 1) {
        file = [filename];
      }
      const hit = this.matchOne(file, pattern, partial);
      if (hit) {
        if (options.flipNegate) {
          return true;
        }
        return !this.negate;
      }
    }
    if (options.flipNegate) {
      return false;
    }
    return this.negate;
  }
  static defaults(def) {
    return minimatch.defaults(def).Minimatch;
  }
};
minimatch.AST = AST;
minimatch.Minimatch = Minimatch;
minimatch.escape = escape2;
minimatch.unescape = unescape2;

// src/features/linters/lintingEngine.ts
var import_node_path5 = __toESM(require("node:path"));

// src/types.ts
var Product = /* @__PURE__ */ ((Product2) => {
  Product2[Product2["pylint"] = 1] = "pylint";
  Product2[Product2["flake8"] = 2] = "flake8";
  Product2[Product2["pycodestyle"] = 3] = "pycodestyle";
  Product2[Product2["pylama"] = 4] = "pylama";
  Product2[Product2["prospector"] = 5] = "prospector";
  Product2[Product2["pydocstyle"] = 6] = "pydocstyle";
  Product2[Product2["mypy"] = 7] = "mypy";
  Product2[Product2["bandit"] = 8] = "bandit";
  Product2[Product2["pytype"] = 9] = "pytype";
  Product2[Product2["yapf"] = 10] = "yapf";
  Product2[Product2["autopep8"] = 11] = "autopep8";
  Product2[Product2["black"] = 12] = "black";
  Product2[Product2["darker"] = 13] = "darker";
  Product2[Product2["rope"] = 14] = "rope";
  Product2[Product2["blackd"] = 15] = "blackd";
  Product2[Product2["pyflakes"] = 16] = "pyflakes";
  Product2[Product2["ruff"] = 17] = "ruff";
  Product2[Product2["pyink"] = 18] = "pyink";
  return Product2;
})(Product || {});
var LintMessageSeverity = /* @__PURE__ */ ((LintMessageSeverity2) => {
  LintMessageSeverity2[LintMessageSeverity2["Hint"] = 0] = "Hint";
  LintMessageSeverity2[LintMessageSeverity2["Error"] = 1] = "Error";
  LintMessageSeverity2[LintMessageSeverity2["Warning"] = 2] = "Warning";
  LintMessageSeverity2[LintMessageSeverity2["Information"] = 3] = "Information";
  return LintMessageSeverity2;
})(LintMessageSeverity || {});
var LinterErrors;
((LinterErrors2) => {
  let pylint;
  ((pylint2) => {
    pylint2.InvalidSyntax = "E0001";
  })(pylint = LinterErrors2.pylint || (LinterErrors2.pylint = {}));
  let prospector;
  ((prospector2) => {
    prospector2.InvalidSyntax = "F999";
  })(prospector = LinterErrors2.prospector || (LinterErrors2.prospector = {}));
  let flake8;
  ((flake82) => {
    flake82.InvalidSyntax = "E999";
  })(flake8 = LinterErrors2.flake8 || (LinterErrors2.flake8 = {}));
})(LinterErrors || (LinterErrors = {}));

// src/features/linters/bandit.ts
var import_coc15 = require("coc.nvim");

// src/features/linters/baseLinter.ts
var import_node_child_process3 = require("node:child_process");
var import_coc14 = require("coc.nvim");
var import_named_js_regexp = __toESM(require_named_js_regexp());
var REGEX = "(?<line>\\d+),(?<column>-?\\d+),(?<type>\\w+),(?<code>\\w+\\d+):(?<message>.*)\\r?(\\n|$)";
function matchNamedRegEx(data, regex) {
  const compiledRegexp = (0, import_named_js_regexp.default)(regex, "g");
  const rawMatch = compiledRegexp.exec(data);
  if (rawMatch) {
    return rawMatch.groups();
  }
  return void 0;
}
function parseLine(line, regex, linterID, colOffset = 0) {
  const match2 = matchNamedRegEx(line, regex);
  if (!match2) {
    return;
  }
  match2.line = Number(match2.line);
  match2.column = Number(match2.column);
  return {
    code: match2.code,
    message: match2.message,
    column: Number.isNaN(match2.column) || match2.column <= 0 ? 0 : match2.column - colOffset,
    line: match2.line,
    type: match2.type,
    provider: linterID,
    file: match2.file
  };
}
var BaseLinter = class {
  constructor(info, outputChannel, columnOffset = 0) {
    this.outputChannel = outputChannel;
    this.columnOffset = columnOffset;
    this.isWindows = process.platform === "win32";
    this._info = info;
    this._pythonSettings = PythonSettings.getInstance();
  }
  get pythonSettings() {
    return this._pythonSettings;
  }
  get info() {
    return this._info;
  }
  async lint(document, cancellation) {
    return this.runLinter(document, cancellation);
  }
  parseMessagesSeverity(error, categorySeverity) {
    if (categorySeverity[error]) {
      const severityName = categorySeverity[error];
      switch (severityName) {
        case "Error":
          return 1 /* Error */;
        case "Hint":
          return 0 /* Hint */;
        case "Information":
          return 3 /* Information */;
        case "Warning":
          return 2 /* Warning */;
        default: {
          if (LintMessageSeverity[severityName]) {
            return LintMessageSeverity[severityName];
          }
        }
      }
    }
    return 3 /* Information */;
  }
  async stdinRun(executionInfo, document) {
    let command = executionInfo.execPath;
    let args = executionInfo.args;
    if (executionInfo.moduleName) {
      command = this.pythonSettings.pythonPath;
      args = ["-m", executionInfo.moduleName, ...args];
    }
    const child = (0, import_node_child_process3.spawn)(command, args, { cwd: import_coc14.workspace.root });
    return new Promise((resolve) => {
      child.stdin.setDefaultEncoding("utf8");
      child.stdin.write(document.getText());
      child.stdin.end();
      let result = "";
      child.stdout.on("data", (data) => {
        result += data.toString("utf-8").trim();
      });
      child.on("close", () => {
        resolve(result);
      });
    });
  }
  async run(args, document, token, regEx = REGEX) {
    if (!this.info.isEnabled(import_coc14.Uri.parse(document.uri))) {
      return [];
    }
    try {
      const executionInfo = this.info.getExecutionInfo(args, import_coc14.Uri.parse(document.uri));
      this.outputChannel.appendLine(`${"#".repeat(10)} Run linter ${this.info.id}:`);
      this.outputChannel.appendLine(JSON.stringify(executionInfo));
      this.outputChannel.appendLine("");
      let result = "";
      if (this.info.stdinSupport) {
        result = await this.stdinRun(executionInfo, document);
      } else {
        const service = new PythonExecutionService();
        result = (await service.exec(executionInfo, { cwd: import_coc14.workspace.root, token, mergeStdOutErr: false })).stdout;
      }
      this.outputChannel.append(`${"#".repeat(10)} Linting Output - ${this.info.id} ${"#".repeat(10)}
`);
      this.outputChannel.append(result);
      this.outputChannel.appendLine("");
      return await this.parseMessages(result, document, regEx);
    } catch (error) {
      this.outputChannel.appendLine(`Linting with ${this.info.id} failed:`);
      if (error instanceof Error) {
        this.outputChannel.appendLine(error.message.toString());
      }
      return [];
    }
  }
  async parseMessages(output, _document, regEx) {
    const messages = [];
    const outputLines = splitLines(output, { removeEmptyEntries: false, trim: false });
    for (const line of outputLines) {
      try {
        const msg = parseLine(line, regEx, this.info.id, this.columnOffset);
        if (msg) {
          messages.push(msg);
          if (messages.length >= this.pythonSettings.linting.maxNumberOfProblems) {
            break;
          }
        }
      } catch (err) {
        this.outputChannel.appendLine(`${"#".repeat(10)} Linter ${this.info.id} failed to parse the line:`);
        this.outputChannel.appendLine(line);
        if (typeof err === "string") {
          this.outputChannel.appendLine(err);
        } else if (err instanceof Error) {
          this.outputChannel.appendLine(err.message);
        }
      }
    }
    return messages;
  }
};

// src/features/linters/bandit.ts
var severityMapping = {
  LOW: 3 /* Information */,
  MEDIUM: 2 /* Warning */,
  HIGH: 1 /* Error */
};
var Bandit = class extends BaseLinter {
  async runLinter(document, cancellation) {
    const messages = await this.run(
      [
        "-f",
        "custom",
        "--msg-template",
        "{line},0,{severity},{test_id}:{msg}",
        "-n",
        "-1",
        import_coc15.Uri.parse(document.uri).fsPath
      ],
      document,
      cancellation
    );
    for (const msg of messages) {
      msg.severity = severityMapping[msg.type];
    }
    return messages;
  }
};

// src/features/linters/flake8.ts
var import_coc16 = require("coc.nvim");
var COLUMN_OFF_SET = 1;
var Flake8 = class extends BaseLinter {
  constructor(info, outputChannel) {
    super(info, outputChannel, COLUMN_OFF_SET);
  }
  async runLinter(document, cancellation) {
    const fsPath = import_coc16.Uri.parse(document.uri).fsPath;
    const args = ["--format=%(row)d,%(col)d,%(code).1s,%(code)s:%(text)s", "--exit-zero"];
    if (this.info.stdinSupport) {
      args.push("--stdin-display-name", fsPath, "-");
    } else {
      args.push(fsPath);
    }
    const messages = await this.run(args, document, cancellation);
    for (const msg of messages) {
      msg.severity = this.parseMessagesSeverity(msg.type, this.pythonSettings.linting.flake8CategorySeverity);
    }
    return messages;
  }
};

// src/features/linters/linterInfo.ts
var import_coc17 = require("coc.nvim");
var path6 = __toESM(require("node:path"));
var import_which4 = __toESM(require_lib());
var LinterInfo = class {
  constructor(product, id, configService, configFileNames = []) {
    this.configService = configService;
    this._product = product;
    this._id = id;
    this._configFileNames = configFileNames;
  }
  get id() {
    return this._id;
  }
  get product() {
    return this._product;
  }
  get stdinSupport() {
    const settings = this.configService;
    return settings.linting[`${this.id}Stdin`];
  }
  isEnabled(_resource) {
    const settings = this.configService;
    return settings.linting[`${this.id}Enabled`];
  }
  pathName(_resource) {
    const settings = this.configService;
    return settings.linting[`${this.id}Path`];
  }
  linterArgs(_resource) {
    const settings = this.configService;
    const args = settings.linting[`${this.id}Args`];
    return Array.isArray(args) ? args : [];
  }
  getExecutionInfo(customArgs, resource) {
    const cmd = import_coc17.workspace.expand(this.pathName(resource));
    const execPath = import_which4.default.sync(cmd, { nothrow: true }) || this.pathName(resource);
    const args = this.linterArgs(resource).concat(customArgs);
    let moduleName;
    if (path6.basename(execPath) === execPath) {
      moduleName = execPath;
    }
    return { execPath, moduleName, args, product: this.product };
  }
};

// src/features/linters/mypy.ts
var import_coc18 = require("coc.nvim");
var COLUMN_OFF_SET2 = 1;
var REGEX2 = "(?<file>[^:]+):(?<line>\\d+)(:(?<column>\\d+))?: (?<type>\\w+): (?<message>.*)\\r?(\\n|$)";
var MyPy = class extends BaseLinter {
  constructor(info, outputChannel) {
    super(info, outputChannel, COLUMN_OFF_SET2);
  }
  async runLinter(document, cancellation) {
    const args = ["--python-executable", this.pythonSettings.pythonPath, import_coc18.Uri.parse(document.uri).fsPath];
    const messages = await this.run(args, document, cancellation, REGEX2);
    for (const msg of messages) {
      msg.severity = this.parseMessagesSeverity(msg.type, this.pythonSettings.linting.mypyCategorySeverity);
      msg.code = msg.type;
    }
    return messages;
  }
};

// src/features/linters/prospector.ts
var import_coc19 = require("coc.nvim");
var import_node_path4 = __toESM(require("node:path"));
var Prospector = class extends BaseLinter {
  async runLinter(document, cancellation) {
    const relativePath = import_node_path4.default.relative(import_coc19.workspace.root, import_coc19.Uri.parse(document.uri).fsPath);
    return this.run(["--absolute-paths", "--output-format=json", relativePath], document, cancellation);
  }
  async parseMessages(output, _document, _regEx) {
    let parsedData;
    try {
      parsedData = JSON.parse(output);
    } catch (_ex) {
      this.outputChannel.appendLine(`${"#".repeat(10)}Linting Output - ${this.info.id}${"#".repeat(10)}`);
      this.outputChannel.append(output);
      return [];
    }
    return parsedData.messages.filter((_value, index) => index <= this.pythonSettings.linting.maxNumberOfProblems).map((msg) => {
      const lineNumber = msg.location.line === null || Number.isNaN(msg.location.line) ? 1 : msg.location.line;
      return {
        code: msg.code,
        message: msg.message,
        column: msg.location.character,
        line: lineNumber,
        type: msg.code,
        provider: `${this.info.id} - ${msg.source}`
      };
    });
  }
};

// src/features/linters/pycodestyle.ts
var import_coc20 = require("coc.nvim");
var COLUMN_OFF_SET3 = 1;
var PyCodeStyle = class extends BaseLinter {
  constructor(info, outputChannel) {
    super(info, outputChannel, COLUMN_OFF_SET3);
  }
  async runLinter(document, cancellation) {
    const messages = await this.run(
      ["--format=%(row)d,%(col)d,%(code).1s,%(code)s:%(text)s", import_coc20.Uri.parse(document.uri).fsPath],
      document,
      cancellation
    );
    for (const msg of messages) {
      msg.severity = this.parseMessagesSeverity(msg.type, this.pythonSettings.linting.pycodestyleCategorySeverity);
    }
    return messages;
  }
};

// src/features/linters/pydocstyle.ts
var import_coc21 = require("coc.nvim");
var path8 = __toESM(require("node:path"));
var PyDocStyle = class extends BaseLinter {
  async runLinter(document, cancellation) {
    const baseFileName = path8.basename(import_coc21.Uri.parse(document.uri).fsPath);
    if (/^test_.*\.py$/.test(baseFileName)) return [];
    const messages = await this.run([import_coc21.Uri.parse(document.uri).fsPath], document, cancellation);
    for (const msg of messages) {
      msg.severity = 2 /* Warning */;
    }
    return messages;
  }
  async parseMessages(output, document) {
    let outputLines = output.split(/\r?\n/g);
    const baseFileName = path8.basename(import_coc21.Uri.parse(document.uri).fsPath);
    const maxLines = this.pythonSettings.linting.maxNumberOfProblems * 2;
    const oldOutputLines = outputLines.filter((line) => line.length > 0);
    outputLines = [];
    for (let counter = 0; counter < oldOutputLines.length / 2; counter += 1) {
      outputLines.push(oldOutputLines[2 * counter] + oldOutputLines[2 * counter + 1]);
    }
    const doc = import_coc21.workspace.getDocument(document.uri);
    if (!doc) {
      return [];
    }
    return outputLines.filter((value, index) => index < maxLines && value.indexOf(":") >= 0).map((line) => {
      if (this.isWindows) {
        return line.substring(line.indexOf(`${baseFileName}:`) + baseFileName.length + 1).trim();
      }
      return line.substring(line.indexOf(":") + 1).trim();
    }).map((line) => {
      try {
        if (line.trim().length === 0) {
          return null;
        }
        const lineNumber = parseInt(line.substring(0, line.indexOf(" ")), 10);
        const part = line.substring(line.indexOf(":") + 1).trim();
        const code = part.substring(0, part.indexOf(":")).trim();
        const message = part.substring(part.indexOf(":") + 1).trim();
        const sourceLine = doc.getline(lineNumber - 1);
        const trmmedSourceLine = sourceLine.trim();
        const sourceStart = sourceLine.indexOf(trmmedSourceLine);
        return {
          code,
          message,
          column: sourceStart,
          line: lineNumber,
          type: "",
          provider: this.info.id
        };
      } catch (err) {
        this.outputChannel.appendLine(`Failed to parse pydocstyle line '${line}'`);
        if (typeof err === "string") {
          this.outputChannel.appendLine(err);
        } else if (err instanceof Error) {
          this.outputChannel.appendLine(err.message);
        }
        return null;
      }
    }).filter((item) => item !== void 0).map((item) => item);
  }
};

// src/features/linters/pyflakes.ts
var import_coc22 = require("coc.nvim");
var REGEX3 = "(?<file>.*.py):(?<line>\\d+):(?<column>\\d+): (?<message>.*)\\r?(\\n|$)";
var Pyflakes = class extends BaseLinter {
  async runLinter(document, cancellation) {
    const messages = await this.run([import_coc22.Uri.parse(document.uri).fsPath], document, cancellation, REGEX3);
    for (const msg of messages) {
      msg.severity = 2 /* Warning */;
    }
    return messages;
  }
};

// src/features/linters/pylama.ts
var import_coc23 = require("coc.nvim");
var REGEX4 = "(?<file>.py):(?<line>\\d+):(?<column>\\d+): \\[(?<type>\\w+)\\] (?<code>\\w\\d+):? (?<message>.*)\\r?(\\n|$)";
var COLUMN_OFF_SET4 = 1;
var Pylama = class extends BaseLinter {
  constructor(info, outputChannel) {
    super(info, outputChannel, COLUMN_OFF_SET4);
  }
  async runLinter(document, cancellation) {
    const messages = await this.run(
      ["--format=parsable", import_coc23.Uri.parse(document.uri).fsPath],
      document,
      cancellation,
      REGEX4
    );
    for (const msg of messages) {
      msg.severity = 2 /* Warning */;
    }
    return messages;
  }
};

// src/features/linters/pylint.ts
var import_coc24 = require("coc.nvim");
var REGEX5 = "(?<line>\\d+),(?<column>-?\\d+),(?<type>\\w+),(?<code>[\\w-]+):(?<message>.*)\\r?(\\n|$)";
var Pylint = class extends BaseLinter {
  async runLinter(document, cancellation) {
    const args = [
      "--msg-template='{line},{column},{category},{symbol}:{msg}'",
      "--exit-zero",
      "--reports=n",
      "--output-format=text"
    ];
    if (this.info.stdinSupport) {
      args.push("--from-stdin");
    }
    args.push(import_coc24.Uri.parse(document.uri).fsPath);
    const messages = await this.run(args, document, cancellation, REGEX5);
    for (const msg of messages) {
      msg.severity = this.parseMessagesSeverity(msg.type, this.pythonSettings.linting.pylintCategorySeverity);
    }
    return messages;
  }
};

// src/features/linters/pytype.ts
var import_coc25 = require("coc.nvim");
var import_node_fs5 = __toESM(require("node:fs"));
var path9 = __toESM(require("node:path"));
var pytypecfg = "pytype.cfg";
var REGEX6 = '^File \\"(?<file>.*)\\", line (?<line>\\d+), in (<module>|\\w+): (?<message>.*)\\r?(\\n|$)';
var pytypeErrors = [
  // https://google.github.io/pytype/errors.html#error-classes
  "annotation-type-mismatch",
  "attribute-error",
  "bad-concrete-type",
  "bad-function-defaults",
  "bad-return-type",
  "bad-slots",
  "bad-unpacking",
  "base-class-error",
  "container-type-mismatch",
  "duplicate-keyword-argument",
  "ignored-abstractmethod",
  "ignored-metaclass",
  "ignored-type-comment",
  "import-error",
  "invalid-annotation",
  "invalid-directive",
  "invalid-function-definition",
  "invalid-function-type-comment",
  "invalid-namedtuple-arg",
  "invalid-super-call",
  "invalid-typevar",
  "key-error",
  "late-directive",
  "missing-parameter",
  "module-attr",
  "mro-error",
  "name-error",
  "not-callable",
  "not-indexable",
  "not-instantiable",
  "not-supported-yet",
  "not-writable",
  "pyi-error",
  "python-compiler-error",
  "recursion-error",
  "redundant-function-type-comment",
  "reveal-type",
  "unbound-type-param",
  "unsupported-operands",
  "wrong-arg-count",
  "wrong-arg-types",
  "wrong-keyword-args"
];
async function pathExists(p) {
  try {
    await import_node_fs5.default.promises.access(p);
    return true;
  } catch {
    return false;
  }
}
var Pytype = class extends BaseLinter {
  async runLinter(document, cancellation) {
    const args = [];
    if (await this.hasConfigurationFile(import_coc25.workspace.root)) {
      args.push("--config", pytypecfg);
    }
    args.push(import_coc25.Uri.parse(document.uri).fsPath);
    return await this.run(args, document, cancellation, REGEX6);
  }
  async parseMessages(output, document, regEx) {
    const outputLines = output.split(/\r?\n/g).filter((line) => line.startsWith("File"));
    const newOutput = outputLines.join("\n");
    const messages = (await super.parseMessages(newOutput, document, regEx)).filter((msg) => {
      return msg.file && msg.file === import_coc25.Uri.parse(document.uri).fsPath;
    });
    for (const msg of messages) {
      msg.type = "Hint";
      msg.severity = 0 /* Hint */;
      const match2 = /\[(.*)\]/g.exec(msg.message);
      if (match2 && match2.length >= 2) {
        if (pytypeErrors.includes(match2[1])) {
          msg.severity = 1 /* Error */;
        }
      }
    }
    return messages;
  }
  async hasConfigurationFile(folder) {
    if (await pathExists(path9.join(folder, pytypecfg))) {
      return true;
    }
    let current = folder;
    let above = path9.dirname(folder);
    do {
      if (!await pathExists(path9.join(current, "__init__.py"))) {
        break;
      }
      if (await pathExists(path9.join(current, pytypecfg))) {
        return true;
      }
      current = above;
      above = path9.dirname(above);
    } while (!this.arePathsSame(current, above));
    return false;
  }
  arePathsSame(p1, p2) {
    const path1 = path9.normalize(p1);
    const path22 = path9.normalize(p2);
    if (this.isWindows) {
      return path1.toUpperCase() === path22.toUpperCase();
    }
    return path1 === path22;
  }
};

// src/features/linters/ruff.ts
var import_coc26 = require("coc.nvim");
var COLUMN_OFF_SET5 = 1;
var Ruff = class extends BaseLinter {
  constructor(info, outputChannel) {
    super(info, outputChannel, COLUMN_OFF_SET5);
  }
  fixToWorkspaceEdit(filename, fix) {
    var _a2;
    if (!fix) return null;
    const u = import_coc26.Uri.file(filename).toString();
    if ((_a2 = fix.edits) == null ? void 0 : _a2.length) {
      const changes = fix.edits.map((edit) => {
        const range2 = import_coc26.Range.create(
          edit.location.row - 1,
          edit.location.column - 1,
          edit.end_location.row - 1,
          edit.end_location.column - 1
        );
        return import_coc26.TextEdit.replace(range2, edit.content);
      });
      return {
        title: `Ruff: ${fix.message}`,
        edit: {
          changes: {
            [u]: changes
          }
        }
      };
    }
    if (fix.location && fix.end_location) {
      const range2 = import_coc26.Range.create(
        fix.location.row - 1,
        fix.location.column,
        fix.end_location.row - 1,
        fix.end_location.column
      );
      return {
        title: `Ruff: ${fix.message}`,
        edit: {
          changes: {
            [u]: [import_coc26.TextEdit.replace(range2, fix.content || "")]
          }
        }
      };
    }
    return null;
  }
  async parseMessages(output) {
    try {
      const messages = JSON.parse(output).map((msg) => {
        return {
          line: msg.location.row,
          column: msg.location.column - COLUMN_OFF_SET5,
          endLine: msg.end_location.row,
          endColumn: msg.end_location.column,
          code: msg.code,
          message: msg.message,
          type: "",
          severity: 2 /* Warning */,
          // https://github.com/charliermarsh/ruff/issues/645
          tags: ["F401", "F841"].includes(msg.code) ? [import_coc26.DiagnosticTag.Unnecessary] : [],
          provider: this.info.id,
          file: msg.filename,
          url: msg.url,
          fix: this.fixToWorkspaceEdit(msg.filename, msg.fix)
        };
      });
      return messages;
    } catch (error) {
      this.outputChannel.appendLine(`Linting with ${this.info.id} failed:`);
      if (error instanceof Error) {
        this.outputChannel.appendLine(error.message.toString());
      }
      return [];
    }
  }
  async runLinter(document, token) {
    const fsPath = import_coc26.Uri.parse(document.uri).fsPath;
    const args = ["check", "--output-format", "json", "--exit-zero", "--stdin-filename", fsPath, "-"];
    return this.run(args, document, token);
  }
};

// src/features/linters/lintingEngine.ts
var PYTHON = { language: "python" };
var lintSeverityToVSSeverity = /* @__PURE__ */ new Map();
lintSeverityToVSSeverity.set(1 /* Error */, import_coc27.DiagnosticSeverity.Error);
lintSeverityToVSSeverity.set(0 /* Hint */, import_coc27.DiagnosticSeverity.Hint);
lintSeverityToVSSeverity.set(3 /* Information */, import_coc27.DiagnosticSeverity.Information);
lintSeverityToVSSeverity.set(2 /* Warning */, import_coc27.DiagnosticSeverity.Warning);
var DisabledLinter = class {
  constructor(configService) {
    this.configService = configService;
  }
  get info() {
    return new LinterInfo(1 /* pylint */, "pylint", this.configService);
  }
  async lint() {
    return [];
  }
};
var LintingEngine = class {
  constructor() {
    this.pendingLintings = /* @__PURE__ */ new Map();
    this.outputChannel = import_coc27.window.createOutputChannel("coc-pyright-linting");
    this.diagnosticCollection = import_coc27.languages.createDiagnosticCollection("python");
    this.configService = PythonSettings.getInstance();
    this.linters = [
      new LinterInfo(8 /* bandit */, "bandit", this.configService),
      new LinterInfo(2 /* flake8 */, "flake8", this.configService),
      new LinterInfo(1 /* pylint */, "pylint", this.configService, [".pylintrc", "pylintrc"]),
      new LinterInfo(7 /* mypy */, "mypy", this.configService),
      new LinterInfo(3 /* pycodestyle */, "pycodestyle", this.configService),
      new LinterInfo(5 /* prospector */, "prospector", this.configService),
      new LinterInfo(6 /* pydocstyle */, "pydocstyle", this.configService),
      new LinterInfo(16 /* pyflakes */, "pyflakes", this.configService),
      new LinterInfo(4 /* pylama */, "pylama", this.configService),
      new LinterInfo(9 /* pytype */, "pytype", this.configService),
      new LinterInfo(17 /* ruff */, "ruff", this.configService)
    ];
  }
  get diagnostics() {
    return this.diagnosticCollection;
  }
  clearDiagnostics(document) {
    if (this.diagnosticCollection.has(document.uri)) {
      this.diagnosticCollection.delete(document.uri);
    }
  }
  async lintOpenPythonFiles() {
    this.diagnosticCollection.clear();
    const promises = import_coc27.workspace.textDocuments.map(async (document) => this.lintDocument(document));
    await Promise.all(promises);
    return this.diagnosticCollection;
  }
  async lintDocument(document, onChange = false) {
    this.diagnosticCollection.set(document.uri, []);
    if (!this.shouldLintDocument(document)) {
      return;
    }
    const fsPath = import_coc27.Uri.parse(document.uri).fsPath;
    if (this.pendingLintings.has(fsPath)) {
      this.pendingLintings.get(fsPath).cancel();
      this.pendingLintings.delete(fsPath);
    }
    const cancelToken = new import_coc27.CancellationTokenSource();
    cancelToken.token.onCancellationRequested(() => {
      if (this.pendingLintings.has(fsPath)) {
        this.pendingLintings.delete(fsPath);
      }
    });
    this.pendingLintings.set(fsPath, cancelToken);
    const activeLinters = this.getActiveLinters().filter((l) => onChange ? l.stdinSupport : true);
    const promises = activeLinters.map(async (info) => {
      this.outputChannel.appendLine(`Using python from ${this.configService.pythonPath}
`);
      this.outputChannel.appendLine(`${"#".repeat(10)} active linter: ${info.id}`);
      const linter = await this.createLinter(info, this.outputChannel);
      const promise = linter.lint(document, cancelToken.token);
      return promise;
    });
    let diagnostics = [];
    const settings = this.configService;
    for (const p of promises) {
      const msgs = await p;
      if (cancelToken.token.isCancellationRequested) {
        break;
      }
      const doc = import_coc27.workspace.getDocument(document.uri);
      if (doc) {
        for (const m of msgs) {
          if (doc.getline(m.line - 1).trim().startsWith("%") && (m.code === LinterErrors.pylint.InvalidSyntax || m.code === LinterErrors.prospector.InvalidSyntax || m.code === LinterErrors.flake8.InvalidSyntax)) {
            continue;
          }
          diagnostics.push(this.createDiagnostics(m, document));
        }
        diagnostics = diagnostics.filter((_value, index) => index <= settings.linting.maxNumberOfProblems);
      }
    }
    this.diagnosticCollection.set(document.uri, diagnostics);
  }
  createDiagnostics(message, document) {
    var _a2;
    let start = import_coc27.Position.create(message.line > 0 ? message.line - 1 : 0, message.column);
    const endLine = message.endLine ?? message.line;
    const endColumn = message.endColumn ?? message.column + 1;
    let end = import_coc27.Position.create(endLine > 0 ? endLine - 1 : 0, endColumn);
    const ms = /['"](.*?)['"]/g.exec(message.message);
    if (ms && ms.length > 0) {
      const line = (_a2 = import_coc27.workspace.getDocument(document.uri)) == null ? void 0 : _a2.getline(message.line - 1);
      if (line == null ? void 0 : line.includes(ms[1])) {
        const s = message.column > line.indexOf(ms[1]) ? message.column : line.indexOf(ms[1]);
        start = import_coc27.Position.create(message.line - 1, s);
        end = import_coc27.Position.create(message.line - 1, s + ms[1].length);
      }
    }
    const range2 = import_coc27.Range.create(start, end);
    const severity = lintSeverityToVSSeverity.get(message.severity);
    const diagnostic = import_coc27.Diagnostic.create(range2, message.message, severity);
    diagnostic.code = message.code;
    if (message.url) {
      diagnostic.codeDescription = { href: message.url };
    }
    diagnostic.source = message.provider;
    diagnostic.fix = message.fix;
    diagnostic.tags = message.tags;
    return diagnostic;
  }
  shouldLintDocument(document) {
    const settings = this.configService;
    if (!settings.linting.enabled) {
      this.outputChannel.appendLine(`${"#".repeat(5)} linting is disabled by python.linting.enabled`);
      return false;
    }
    if (document.languageId !== PYTHON.language) {
      return false;
    }
    const fsPath = import_coc27.Uri.parse(document.uri).fsPath;
    if (settings.stdLibs.some((p) => fsPath.startsWith(p))) {
      return false;
    }
    const relativeFileName = import_node_path5.default.relative(import_coc27.workspace.root, fsPath);
    const ignoreMinmatches = settings.linting.ignorePatterns.map((pattern) => new Minimatch(pattern, { dot: true }));
    if (ignoreMinmatches.some((matcher) => matcher.match(fsPath) || matcher.match(relativeFileName))) {
      this.outputChannel.appendLine(`${"#".repeat(5)} linting is ignored by python.linting.ignorePatterns`);
      return false;
    }
    const exists = import_node_fs6.default.existsSync(fsPath);
    if (!exists) {
      this.outputChannel.appendLine(`${"#".repeat(5)} linting is disabled because file is not exists: ${fsPath}`);
      return false;
    }
    return true;
  }
  getAllLinterInfos() {
    return this.linters;
  }
  getLinterInfo(product) {
    const x = this.linters.findIndex((value) => value.product === product);
    if (x >= 0) {
      return this.linters[x];
    }
    throw new Error(`Invalid linter '${Product[product]}'`);
  }
  getActiveLinters(resource) {
    return this.linters.filter((x) => x.isEnabled(resource));
  }
  async createLinter(info, outputChannel) {
    if (!this.configService.linting.enabled) {
      return new DisabledLinter(this.configService);
    }
    const error = "Linter manager: Unknown linter";
    switch (info.product) {
      case 8 /* bandit */:
        return new Bandit(info, outputChannel);
      case 2 /* flake8 */:
        return new Flake8(info, outputChannel);
      case 1 /* pylint */:
        return new Pylint(info, outputChannel);
      case 7 /* mypy */:
        return new MyPy(info, outputChannel);
      case 5 /* prospector */:
        return new Prospector(info, outputChannel);
      case 4 /* pylama */:
        return new Pylama(info, outputChannel);
      case 6 /* pydocstyle */:
        return new PyDocStyle(info, outputChannel);
      case 3 /* pycodestyle */:
        return new PyCodeStyle(info, outputChannel);
      case 9 /* pytype */:
        return new Pytype(info, outputChannel);
      case 16 /* pyflakes */:
        return new Pyflakes(info, outputChannel);
      case 17 /* ruff */:
        return new Ruff(info, outputChannel);
      default:
        break;
    }
    throw new Error(error);
  }
};

// src/features/lintting.ts
var LinterProvider = class {
  constructor(context) {
    this.context = context;
    this.disposables = [];
    this.engine = new LintingEngine();
    this.pythonSettings = PythonSettings.getInstance();
    import_coc28.workspace.onDidOpenTextDocument((e) => this.onDocumentOpened(e), this.context.subscriptions);
    import_coc28.workspace.onDidCloseTextDocument((e) => this.onDocumentClosed(e), this.context.subscriptions);
    import_coc28.workspace.onDidSaveTextDocument((e) => this.onDocumentSaved(e), this.context.subscriptions);
    import_coc28.workspace.onDidChangeTextDocument((e) => this.onDocumentChanged(e), this.context.subscriptions);
    const disposable = import_coc28.workspace.onDidChangeConfiguration(this.lintSettingsChangedHandler.bind(this));
    this.disposables.push(disposable);
    this.disposables.push(import_coc28.commands.registerCommand("python.runLinting", this.runLinting.bind(this)));
    setTimeout(() => this.engine.lintOpenPythonFiles().catch(this.emptyFn), 1200);
  }
  dispose() {
    for (const d of this.disposables) {
      d.dispose();
    }
  }
  runLinting() {
    return this.engine.lintOpenPythonFiles();
  }
  lintSettingsChangedHandler(e) {
    for (const document of import_coc28.workspace.textDocuments) {
      if (e.affectsConfiguration("python.linting", document.uri)) {
        this.engine.lintDocument(document).catch(() => {
        });
      }
    }
  }
  onDocumentOpened(document) {
    this.engine.lintDocument(document).catch(() => {
    });
  }
  onDocumentSaved(document) {
    if (this.pythonSettings.linting.lintOnSave) {
      this.engine.lintDocument(document).catch(() => {
      });
    }
  }
  onDocumentChanged(e) {
    const document = import_coc28.workspace.getDocument(e.textDocument.uri);
    if (!document) {
      return;
    }
    this.engine.lintDocument(document.textDocument, true).catch(() => {
    });
  }
  onDocumentClosed(document) {
    if (!document || !import_coc28.Uri.parse(document.uri).fsPath || !document.uri) {
      return;
    }
    this.engine.clearDiagnostics(document);
  }
  emptyFn() {
  }
};

// src/features/refactor.ts
var import_coc29 = require("coc.nvim");
var path11 = __toESM(require("node:path"));
var import_node_fs7 = __toESM(require("node:fs"));
var RefactorProxy = class {
  constructor(extensionDir, pythonSettings, workspaceRoot) {
    this.extensionDir = extensionDir;
    this.pythonSettings = pythonSettings;
    this.workspaceRoot = workspaceRoot;
    this.isWindows = process.platform === "win32";
    this._startedSuccessfully = false;
  }
  dispose() {
    try {
      this._process.kill();
    } catch (_ex) {
    }
    this._process = void 0;
  }
  getOffsetAt(document, position) {
    if (this.isWindows) {
      return document.offsetAt(position);
    }
    const offset = document.offsetAt(position);
    const winEols = getWindowsLineEndingCount(document, offset);
    return offset - winEols;
  }
  async addImport(document, filePath, name, parent) {
    const options = await import_coc29.workspace.getFormatOptions();
    const command = {
      lookup: "add_import",
      id: "1",
      file: filePath,
      text: document.getText(),
      name,
      parent,
      indent_size: options.tabSize
    };
    return await this.sendCommand(JSON.stringify(command));
  }
  async extractVariable(document, name, filePath, range2) {
    const options = await import_coc29.workspace.getFormatOptions();
    const command = {
      lookup: "extract_variable",
      file: filePath,
      start: this.getOffsetAt(document, range2.start).toString(),
      end: this.getOffsetAt(document, range2.end).toString(),
      id: "2",
      name,
      indent_size: options.tabSize
    };
    return await this.sendCommand(JSON.stringify(command));
  }
  async extractMethod(document, name, filePath, range2) {
    const options = await import_coc29.workspace.getFormatOptions();
    const command = {
      lookup: "extract_method",
      file: filePath,
      start: this.getOffsetAt(document, range2.start).toString(),
      end: this.getOffsetAt(document, range2.end).toString(),
      id: "3",
      name,
      indent_size: options.tabSize
    };
    return await this.sendCommand(JSON.stringify(command));
  }
  async sendCommand(command) {
    await this.initialize();
    return await new Promise((resolve, reject) => {
      this._commandResolve = resolve;
      this._commandReject = reject;
      this._process.stdin.write(`${command}
`);
    });
  }
  async initialize() {
    this.initialized = createDeferred();
    const cwd = path11.join(this.extensionDir, "pythonFiles");
    const args = ["refactor.py", this.workspaceRoot];
    const pythonToolsExecutionService = new PythonExecutionService();
    const result = pythonToolsExecutionService.execObservable(this.pythonSettings.pythonPath, args, { cwd });
    this._process = result.proc;
    result.out.subscribe({
      next: (output) => {
        if (output.source === "stdout") {
          if (!this._startedSuccessfully && output.out.startsWith("STARTED")) {
            this._startedSuccessfully = true;
            return this.initialized.resolve();
          }
          this.onData(output.out);
        } else {
          this.handleStdError(output.out);
        }
      },
      error: (error) => this.handleError(error)
    });
    return this.initialized.promise;
  }
  handleStdError(data) {
    let errorResponse;
    try {
      errorResponse = data.split(/\r?\n/g).filter((line) => line.length > 0).map((resp) => JSON.parse(resp));
    } catch (ex) {
      console.error(ex);
      return;
    }
    if (errorResponse[0].message.length === 0) {
      errorResponse[0].message = splitLines(errorResponse[0].traceback, {
        trim: false,
        removeEmptyEntries: false
      }).pop();
    }
    const errorMessage = `${errorResponse[0].message}
${errorResponse[0].traceback}`;
    if (this._startedSuccessfully) {
      this._commandReject(`Refactor failed. ${errorMessage}`);
    } else {
      if (errorResponse[0].type === "ModuleNotFoundError") {
        this.initialized.reject("Not installed");
        return;
      }
      this.initialized.reject(`Refactor failed. ${errorMessage}`);
    }
  }
  handleError(error) {
    if (this._startedSuccessfully) {
      return this._commandReject(error);
    }
    this.initialized.reject(error);
  }
  onData(data) {
    if (!this._commandResolve) {
      return;
    }
    let response;
    try {
      response = data.split(/\r?\n/g).filter((line) => line.length > 0).map((resp) => JSON.parse(resp));
    } catch (_ex) {
      return;
    }
    this.dispose();
    this._commandResolve(response[0]);
    this._commandResolve = void 0;
  }
};
function validateDocumentForRefactor(doc) {
  if (!doc.dirty) {
    return Promise.resolve();
  }
  return new Promise((resolve, reject) => {
    import_coc29.workspace.nvim.command("write").then(() => {
      return resolve();
    }, reject);
  });
}
async function extractVariable(root, document, range2, outputChannel) {
  const pythonToolsExecutionService = new PythonExecutionService();
  const rope = await pythonToolsExecutionService.isModuleInstalled("rope");
  if (!rope) {
    import_coc29.window.showWarningMessage("Module rope not installed");
    return;
  }
  const doc = import_coc29.workspace.getDocument(document.uri);
  if (!doc) {
    return;
  }
  const tempFile = await getTempFileWithDocumentContents(document);
  const workspaceFolder = import_coc29.workspace.getWorkspaceFolder(doc.uri);
  const workspaceRoot = workspaceFolder ? import_coc29.Uri.parse(workspaceFolder.uri).fsPath : import_coc29.workspace.cwd;
  const pythonSettings = PythonSettings.getInstance();
  return validateDocumentForRefactor(doc).then(() => {
    const newName = `newvariable${(/* @__PURE__ */ new Date()).getMilliseconds().toString()}`;
    const proxy = new RefactorProxy(root, pythonSettings, workspaceRoot);
    const rename = proxy.extractVariable(doc.textDocument, newName, tempFile, range2).then((response) => {
      return response.results[0].diff;
    });
    return extractName(doc, newName, rename, outputChannel, tempFile);
  });
}
async function extractMethod(root, document, range2, outputChannel) {
  const pythonToolsExecutionService = new PythonExecutionService();
  const rope = await pythonToolsExecutionService.isModuleInstalled("rope");
  if (!rope) {
    import_coc29.window.showWarningMessage("Module rope not installed");
    return;
  }
  const doc = import_coc29.workspace.getDocument(document.uri);
  if (!doc) {
    return;
  }
  const tempFile = await getTempFileWithDocumentContents(document);
  const workspaceFolder = import_coc29.workspace.getWorkspaceFolder(doc.uri);
  const workspaceRoot = workspaceFolder ? import_coc29.Uri.parse(workspaceFolder.uri).fsPath : import_coc29.workspace.cwd;
  const pythonSettings = PythonSettings.getInstance();
  return validateDocumentForRefactor(doc).then(() => {
    const newName = `newmethod${(/* @__PURE__ */ new Date()).getMilliseconds().toString()}`;
    const proxy = new RefactorProxy(root, pythonSettings, workspaceRoot);
    const rename = proxy.extractMethod(doc.textDocument, newName, tempFile, range2).then((response) => {
      return response.results[0].diff;
    });
    return extractName(doc, newName, rename, outputChannel, tempFile);
  });
}
async function extractName(textEditor, newName, renameResponse, outputChannel, tempFile) {
  let changeStartsAtLine = -1;
  try {
    const diff = await renameResponse;
    if (diff.length === 0) {
      return [];
    }
    const edits = getTextEditsFromPatch(textEditor.getDocumentContent(), diff);
    for (const edit of edits) {
      if (changeStartsAtLine === -1 || changeStartsAtLine > edit.range.start.line) {
        changeStartsAtLine = edit.range.start.line;
      }
    }
    await textEditor.applyEdits(edits);
    await import_node_fs7.default.promises.unlink(tempFile);
    if (changeStartsAtLine >= 0) {
      let newWordPosition;
      for (let lineNumber = changeStartsAtLine; lineNumber < textEditor.lineCount; lineNumber += 1) {
        const line = textEditor.getline(lineNumber);
        const indexOfWord = line.indexOf(newName);
        if (indexOfWord >= 0) {
          newWordPosition = import_coc29.Position.create(lineNumber, indexOfWord);
          break;
        }
      }
      return import_coc29.workspace.jumpTo(textEditor.uri, newWordPosition).then(() => {
        return newWordPosition;
      });
    }
  } catch (error) {
    let errorMessage = `${error}`;
    if (typeof error === "string") {
      errorMessage = error;
    }
    if (error instanceof Error) {
      errorMessage = error.message;
    }
    outputChannel.appendLine(`${"#".repeat(10)}Refactor Output${"#".repeat(10)}`);
    outputChannel.appendLine(`Error in refactoring:
${errorMessage}`);
    outputChannel.appendLine("");
    import_coc29.window.showErrorMessage("Cannot perform refactoring using selected element(s).");
    return await Promise.reject(error);
  }
}

// src/features/testing.ts
var import_coc30 = require("coc.nvim");
var import_node_path6 = __toESM(require("node:path"));
var TestFrameworkProvider = class {
  constructor() {
    this.framework = import_coc30.workspace.getConfiguration("pyright").get("testing.provider", "unittest");
  }
  async parseDocument(document) {
    if (import_coc30.events.insertMode) return [];
    const fileName = import_node_path6.default.basename(import_coc30.Uri.parse(document.uri).fsPath);
    if (document.languageId !== "python" || !fileName.startsWith("test_") && !fileName.endsWith("_test.py")) {
      return [];
    }
    try {
      const parsed = parse(document.getText());
      if (!parsed) return [];
      const walker = new TestFrameworkWalker(this.framework);
      walker.walk(parsed.parserOutput.parseTree);
      return walker.featureItems;
    } catch (_e) {
      return [];
    }
  }
  async provideCodeActions(document, range2) {
    if (range2.start.line !== range2.end.line || range2.start.character !== range2.end.character) return [];
    const featureItems = await this.parseDocument(document);
    if (!featureItems.length) return [];
    const actions = [];
    for (const item of featureItems) {
      if (item.startOffset && item.endOffset) {
        const itemStartPosition = document.positionAt(item.startOffset);
        const itemEndPosition = document.positionAt(item.endOffset);
        if (rangeInRange(range2, import_coc30.Range.create(itemStartPosition, itemEndPosition))) {
          actions.push({
            title: `RUN ${item.value} with ${this.framework}`,
            kind: import_coc30.CodeActionKind.Empty,
            command: {
              title: `RUN ${item.value} with ${this.framework}`,
              command: "pyright.singleTest"
            }
          });
        }
      }
    }
    return actions;
  }
  async provideCodeLenses(document) {
    const featureItems = await this.parseDocument(document);
    if (!featureItems.length) return [];
    const codeLenses = [];
    for (const item of featureItems) {
      if (item.startOffset && item.endOffset) {
        const itemStartPosition = document.positionAt(item.startOffset);
        const itemEndPosition = document.positionAt(item.endOffset);
        const lens = {
          range: import_coc30.Range.create(itemStartPosition, itemEndPosition),
          command: {
            title: `>> [RUN ${this.framework}]`,
            command: "pyright.singleTest"
          }
        };
        codeLenses.push(lens);
      }
    }
    if (codeLenses.length === 0) {
      codeLenses.push({
        range: import_coc30.Range.create(import_coc30.Position.create(0, 0), import_coc30.Position.create(0, 0))
      });
    }
    return codeLenses;
  }
};

// src/middleware.ts
var import_coc31 = require("coc.nvim");
function toJSONObject(obj) {
  if (obj) {
    if (Array.isArray(obj)) {
      return obj.map(toJSONObject);
    }
    if (typeof obj === "object") {
      const res = /* @__PURE__ */ Object.create(null);
      for (const key in obj) {
        if (Object.prototype.hasOwnProperty.call(obj, key)) {
          res[key] = toJSONObject(obj[key]);
        }
      }
      return res;
    }
  }
  return obj;
}
function configuration(params, token, next) {
  const pythonItem = params.items.find((x) => x.section === "python");
  if (pythonItem) {
    const custom = () => {
      const config = toJSONObject(import_coc31.workspace.getConfiguration(pythonItem.section, pythonItem.scopeUri));
      config["pythonPath"] = PythonSettings.getInstance().pythonPath;
      const analysis = config["analysis"];
      analysis["stubPath"] = import_coc31.workspace.expand(analysis["stubPath"]);
      const inspect = import_coc31.workspace.getConfiguration("python.analysis").inspect("stubPath");
      if (inspect && (inspect.globalValue === void 0 || inspect.workspaceValue === void 0 || inspect.workspaceFolderValue === void 0)) {
        analysis["stubPath"] = void 0;
      }
      const extraPaths = analysis["extraPaths"];
      if (extraPaths == null ? void 0 : extraPaths.length) {
        analysis["extraPaths"] = extraPaths.map((p) => import_coc31.workspace.expand(p));
      }
      const typeshedPaths = analysis["typeshedPaths"];
      if (typeshedPaths == null ? void 0 : typeshedPaths.length) {
        analysis["typeshedPaths"] = typeshedPaths.map((p) => import_coc31.workspace.expand(p));
      }
      config["analysis"] = analysis;
      return [config];
    };
    return custom();
  }
  const analysisItem = params.items.find((x) => x.section === "python.analysis");
  if (analysisItem) {
    const custom = () => {
      const analysis = toJSONObject(import_coc31.workspace.getConfiguration(analysisItem.section, analysisItem.scopeUri));
      analysis["stubPath"] = import_coc31.workspace.expand(analysis["stubPath"]);
      const inspect = import_coc31.workspace.getConfiguration("python.analysis").inspect("stubPath");
      if (inspect && (inspect.globalValue === void 0 || inspect.workspaceValue === void 0 || inspect.workspaceFolderValue === void 0)) {
        analysis["stubPath"] = void 0;
      }
      const extraPaths = analysis["extraPaths"];
      if (extraPaths == null ? void 0 : extraPaths.length) {
        analysis["extraPaths"] = extraPaths.map((p) => import_coc31.workspace.expand(p));
      }
      const typeshedPaths = analysis["typeshedPaths"];
      if (typeshedPaths == null ? void 0 : typeshedPaths.length) {
        analysis["typeshedPaths"] = typeshedPaths.map((p) => import_coc31.workspace.expand(p));
      }
      return [analysis];
    };
    return custom();
  }
  return next(params, token);
}
async function provideCompletionItem(document, position, context, token, next) {
  var _a2;
  const result = await next(document, position, context, token);
  if (!result) return;
  const items = Array.isArray(result) ? result : result.items;
  items.map((x) => x.sortText ? x.sortText = x.sortText.toLowerCase() : x.sortText = x.label.toLowerCase());
  const snippetSupport = import_coc31.workspace.getConfiguration("pyright").get("completion.snippetSupport");
  if (snippetSupport) {
    for (const item of items) {
      if ((_a2 = item.data) == null ? void 0 : _a2.funcParensDisabled) continue;
      if (item.kind === import_coc31.CompletionItemKind.Method || item.kind === import_coc31.CompletionItemKind.Function) {
        item.insertText = `${item.label}($1)$0`;
        item.insertTextFormat = import_coc31.InsertTextFormat.Snippet;
      }
    }
  }
  return Array.isArray(result) ? items : { items, isIncomplete: result.isIncomplete };
}
async function resolveCompletionItem(item, token, next) {
  const result = await next(item, token);
  if (result && typeof result.documentation === "object" && "kind" in result.documentation && result.documentation.kind === "markdown") {
    result.documentation.value = result.documentation.value.replace(/&nbsp;/g, " ");
  }
  return result;
}
async function provideHover(document, position, token, next) {
  const hover = await next(document, position, token);
  if (hover && typeof hover.contents === "object" && "kind" in hover.contents && hover.contents.kind === "markdown") {
    hover.contents.value = hover.contents.value.replace(/&nbsp;/g, " ");
  }
  return hover;
}
async function provideSignatureHelp(document, position, context, token, next) {
  const sign = await next(document, position, context, token);
  if (sign == null ? void 0 : sign.signatures.length) {
    for (const info of sign.signatures) {
      if (info.documentation && typeof info.documentation === "object" && info.documentation.kind === "markdown") {
        info.documentation.value = info.documentation.value.replace(/&nbsp;/g, " ");
      }
    }
  }
  return sign;
}
async function handleDiagnostics(uri, diagnostics, next) {
  next(
    uri,
    diagnostics.filter((d) => d.message !== '"__" is not accessed')
  );
}

// src/index.ts
var defaultHeapSize = 3072;
var method = "workspace/executeCommand";
var documentSelector = [
  {
    scheme: "file",
    language: "python"
  }
];
var PyrightExtensionFeature = class {
  dispose() {
  }
  initialize() {
  }
  fillClientCapabilities(capabilities) {
    capabilities.textDocument.signatureHelp.signatureInformation.activeParameterSupport = false;
  }
};
async function activate(context) {
  const pyrightCfg = import_coc32.workspace.getConfiguration("pyright");
  const isEnable = pyrightCfg.get("enable", true);
  if (!isEnable) return;
  const state = import_coc32.extensions.getExtensionState("coc-python");
  if (state.toString() === "activated") {
    import_coc32.window.showWarningMessage("coc-python is installed and activated, coc-pyright will be disabled");
    return;
  }
  const runOptions = { execArgv: [`--max-old-space-size=${defaultHeapSize}`] };
  const debugOptions = { execArgv: ["--nolazy", "--inspect=6600", `--max-old-space-size=${defaultHeapSize}`] };
  let serverOptions;
  let module2 = pyrightCfg.get("server");
  if (module2) {
    const serverBin = import_which5.default.sync(import_coc32.workspace.expand(module2), { nothrow: true }) || module2;
    if (!(0, import_node_fs8.existsSync)(serverBin)) {
      import_coc32.window.showErrorMessage(`Pyright langserver ${serverBin} doesn't exist`);
      return;
    }
    serverOptions = {
      run: { command: serverBin, args: [...runOptions.execArgv, "--stdio"] },
      debug: { command: serverBin, args: [...debugOptions.execArgv, "--stdio"] }
    };
  } else {
    module2 = (0, import_node_path7.join)(context.extensionPath, "node_modules", "pyright", "langserver.index.js");
    serverOptions = {
      run: { module: module2, transport: import_coc32.TransportKind.ipc, options: runOptions },
      debug: { module: module2, transport: import_coc32.TransportKind.ipc, options: debugOptions }
    };
    if (!(0, import_node_fs8.existsSync)(module2)) {
      import_coc32.window.showErrorMessage(`Pyright langserver doesn't exist, please reinstall coc-pyright`);
      return;
    }
  }
  const disabledFeatures = [];
  if (pyrightCfg.get("disableCompletion")) {
    disabledFeatures.push("completion");
  }
  if (pyrightCfg.get("disableDiagnostics")) {
    disabledFeatures.push("diagnostics");
    disabledFeatures.push("pullDiagnostic");
  }
  if (pyrightCfg.get("disableDocumentation")) {
    disabledFeatures.push("hover");
  }
  const disableProgress = pyrightCfg.get("disableProgressNotifications");
  if (disableProgress) {
    disabledFeatures.push("progress");
  }
  const outputChannel = import_coc32.window.createOutputChannel("Pyright");
  const pythonSettings = PythonSettings.getInstance();
  outputChannel.appendLine(`Workspace: ${import_coc32.workspace.root}`);
  outputChannel.appendLine(`Using python from ${pythonSettings.pythonPath}
`);
  const clientOptions = {
    documentSelector,
    synchronize: {
      configurationSection: ["python", "pyright"]
    },
    outputChannel,
    disabledFeatures,
    progressOnInitialization: !disableProgress,
    middleware: {
      workspace: {
        configuration
      },
      provideHover,
      provideSignatureHelp,
      provideCompletionItem,
      handleDiagnostics,
      resolveCompletionItem
    }
  };
  const client = new import_coc32.LanguageClient("pyright", "Pyright Server", serverOptions, clientOptions);
  client.registerFeature(new PyrightExtensionFeature());
  context.subscriptions.push(import_coc32.services.registLanguageClient(client));
  const formatProvider = new PythonFormattingEditProvider();
  context.subscriptions.push(import_coc32.languages.registerDocumentFormatProvider(documentSelector, formatProvider));
  context.subscriptions.push(import_coc32.languages.registerDocumentRangeFormatProvider(documentSelector, formatProvider));
  context.subscriptions.push(new LinterProvider(context));
  const codeActionProvider = new PythonCodeActionProvider();
  context.subscriptions.push(import_coc32.languages.registerCodeActionProvider(documentSelector, codeActionProvider, "Pyright"));
  const importSupport = pyrightCfg.get("completion.importSupport");
  if (importSupport) {
    const provider = new ImportCompletionProvider();
    context.subscriptions.push(
      import_coc32.languages.registerCompletionItemProvider("python-import", "PY", ["python"], provider, [" "])
    );
  }
  const inlayHintEnable = import_coc32.workspace.getConfiguration("inlayHint").get("enable", true);
  if (inlayHintEnable && typeof import_coc32.languages.registerInlayHintsProvider === "function") {
    const provider = new TypeInlayHintsProvider(client);
    context.subscriptions.push(import_coc32.languages.registerInlayHintsProvider(documentSelector, provider));
  }
  const semanticTokensEnable = import_coc32.workspace.getConfiguration("semanticTokens").get("enable", true);
  if (semanticTokensEnable && typeof import_coc32.languages.registerDocumentSemanticTokensProvider === "function") {
    const provider = new PythonSemanticTokensProvider();
    context.subscriptions.push(
      import_coc32.languages.registerDocumentSemanticTokensProvider(documentSelector, provider, provider.legend)
    );
  }
  const testProvider = new TestFrameworkProvider();
  context.subscriptions.push(import_coc32.languages.registerCodeActionProvider(documentSelector, testProvider, "Pyright"));
  const codeLens = import_coc32.workspace.getConfiguration("codeLens").get("enable", false);
  if (codeLens) context.subscriptions.push(import_coc32.languages.registerCodeLensProvider(documentSelector, testProvider));
  const textEditorCommands = ["pyright.organizeimports", "pyright.addoptionalforparam"];
  for (const commandName of textEditorCommands) {
    context.subscriptions.push(
      import_coc32.commands.registerCommand(commandName, async (offset) => {
        const doc = await import_coc32.workspace.document;
        const cmd = {
          command: commandName,
          arguments: [doc.uri.toString(), offset]
        };
        await client.sendRequest(method, cmd);
      })
    );
  }
  let command = "pyright.restartserver";
  let disposable = import_coc32.commands.registerCommand(command, async () => {
    await client.sendRequest(method, { command });
  });
  context.subscriptions.push(disposable);
  command = "pyright.createtypestub";
  disposable = import_coc32.commands.registerCommand(command, async (...args) => {
    if (!args.length) {
      import_coc32.window.showWarningMessage("Module name is missing");
      return;
    }
    const doc = await import_coc32.workspace.document;
    const filePath = import_coc32.Uri.parse(doc.uri).fsPath;
    if (args[args.length - 1] !== filePath) {
      args.unshift(import_coc32.workspace.root);
      args.push(filePath);
    }
    const cmd = {
      command,
      arguments: args
    };
    await client.sendRequest(method, cmd);
  });
  context.subscriptions.push(disposable);
  disposable = import_coc32.commands.registerCommand(
    "python.refactorExtractVariable",
    async (document, range2) => {
      await extractVariable(context.extensionPath, document, range2, outputChannel).catch(() => {
      });
    },
    null,
    true
  );
  context.subscriptions.push(disposable);
  disposable = import_coc32.commands.registerCommand(
    "python.refactorExtractMethod",
    async (document, range2) => {
      await extractMethod(context.extensionPath, document, range2, outputChannel).catch(() => {
      });
    },
    null,
    true
  );
  context.subscriptions.push(disposable);
  disposable = import_coc32.commands.registerCommand("python.sortImports", async () => {
    await sortImports(outputChannel).catch(() => {
    });
  });
  context.subscriptions.push(disposable);
  disposable = import_coc32.commands.registerCommand("pyright.fileTest", async () => {
    await runFileTest();
  });
  context.subscriptions.push(disposable);
  disposable = import_coc32.commands.registerCommand("pyright.singleTest", async () => {
    await runSingleTest();
  });
  context.subscriptions.push(disposable);
  disposable = import_coc32.commands.registerCommand("pyright.version", () => {
    const pyrightJSON = (0, import_node_path7.join)(context.extensionPath, "node_modules", "pyright", "package.json");
    const pyrightPackage = JSON.parse((0, import_node_fs8.readFileSync)(pyrightJSON, "utf8"));
    const cocPyrightJSON = (0, import_node_path7.join)(context.extensionPath, "package.json");
    const cocPyrightPackage = JSON.parse((0, import_node_fs8.readFileSync)(cocPyrightJSON, "utf8"));
    import_coc32.window.showInformationMessage(`coc-pyright ${cocPyrightPackage.version} with Pyright ${pyrightPackage.version}`);
  });
  context.subscriptions.push(disposable);
}
// Annotate the CommonJS export names for ESM import in node:
0 && (module.exports = {
  activate
});
/*! Bundled license information:

is-buffer/index.js:
  (*!
   * Determine if an object is a Buffer
   *
   * @author   Feross Aboukhadijeh <https://feross.org>
   * @license  MIT
   *)
*/
